diff options
author | DizzyEggg <jajkodizzy@wp.pl> | 2018-10-06 23:04:53 +0200 |
---|---|---|
committer | DizzyEggg <jajkodizzy@wp.pl> | 2018-10-06 23:04:53 +0200 |
commit | 54fc92bc92e78d172be51f7d11b4d746e46f8a7e (patch) | |
tree | 2538509027684da7c49f249b978bcb69f19423ed | |
parent | b9e38a569eac79572fa0676b82e2d755e30b1357 (diff) |
Start porting ruby battle anim file
-rw-r--r-- | asm/battle_anim_80A5C6C.s | 1732 | ||||
-rw-r--r-- | asm/battle_anim_80FE840.s | 172 | ||||
-rw-r--r-- | asm/battle_anim_815A0D4.s | 14 | ||||
-rw-r--r-- | asm/battle_anim_8170478.s | 6 | ||||
-rw-r--r-- | data/rom_8525F58.s | 34 | ||||
-rw-r--r-- | include/battle_anim.h | 13 | ||||
-rw-r--r-- | include/contest.h | 16 | ||||
-rw-r--r-- | ld_script.txt | 3 | ||||
-rw-r--r-- | src/battle_anim.c | 6 | ||||
-rw-r--r-- | src/battle_anim_80A5C6C.c | 741 | ||||
-rw-r--r-- | src/battle_anim_sound_tasks.c | 6 | ||||
-rw-r--r-- | src/battle_gfx_sfx_util.c | 8 | ||||
-rw-r--r-- | src/contest.c | 2 | ||||
-rw-r--r-- | src/data/pokemon_graphics/back_pic_coordinates.h | 2 | ||||
-rw-r--r-- | src/pokeball.c | 14 |
15 files changed, 905 insertions, 1864 deletions
diff --git a/asm/battle_anim_80A5C6C.s b/asm/battle_anim_80A5C6C.s index 320bbef20..1bb3c7d9b 100644 --- a/asm/battle_anim_80A5C6C.s +++ b/asm/battle_anim_80A5C6C.s @@ -5,1682 +5,12 @@ .text - thumb_func_start GetBattlerSpriteCoord -GetBattlerSpriteCoord: @ 80A5C6C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A5C8A - cmp r4, 0x3 - bne _080A5C8A - cmp r5, 0x3 - bne _080A5C8A - movs r4, 0x1 -_080A5C8A: - cmp r4, 0x4 - bhi _080A5D00 - lsls r0, r4, 2 - ldr r1, =_080A5C9C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_080A5C9C: - .4byte _080A5CB0 - .4byte _080A5CD8 - .4byte _080A5CB0 - .4byte _080A5D00 - .4byte _080A5D00 -_080A5CB0: - ldr r4, =gUnknown_08525F58 - adds r0, r5, 0 - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 22 - ldr r1, =gBattleTypeFlags - ldr r1, [r1] - movs r2, 0x1 - ands r1, r2 - lsls r1, 4 - adds r0, r1 - adds r0, r4 - ldrb r0, [r0] - b _080A5DB0 - .pool -_080A5CD8: - ldr r4, =gUnknown_08525F58 - adds r0, r5, 0 - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 22 - ldr r1, =gBattleTypeFlags - ldr r1, [r1] - movs r2, 0x1 - ands r1, r2 - lsls r1, 4 - adds r0, r1 - adds r0, r4 - ldrb r0, [r0, 0x1] - b _080A5DB0 - .pool -_080A5D00: - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A5D28 - ldr r0, =gContestResources - ldr r0, [r0] - ldr r2, [r0, 0x18] - ldrb r1, [r2, 0x4] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A5D24 - ldrh r1, [r2, 0x2] - b _080A5D9A - .pool -_080A5D24: - ldrh r1, [r2] - b _080A5D9A -_080A5D28: - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A5D60 - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r5, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _080A5D98 - ldr r1, =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty - b _080A5D7E - .pool -_080A5D60: - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r5, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _080A5D98 - ldr r1, =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty -_080A5D7E: - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r1, r0, 16 - b _080A5D9A - .pool -_080A5D98: - ldrh r1, [r1, 0x2] -_080A5D9A: - cmp r4, 0x3 - bne _080A5DA4 - adds r0, r5, 0 - movs r2, 0x1 - b _080A5DA8 -_080A5DA4: - adds r0, r5, 0 - movs r2, 0 -_080A5DA8: - bl sub_80A600C - lsls r0, 24 - lsrs r0, 24 -_080A5DB0: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end GetBattlerSpriteCoord - - thumb_func_start sub_80A5DB8 -sub_80A5DB8: @ 80A5DB8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 16 - lsrs r5, r1, 16 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A5DDA - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A5DDA - b _080A5EC8 -_080A5DDA: - cmp r5, 0xC9 - bne _080A5E90 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A5E04 - ldr r0, =gContestResources - ldr r0, [r0] - ldr r2, [r0, 0x18] - ldrb r1, [r2, 0x4] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A5E00 - ldr r2, [r2, 0x10] - b _080A5E42 - .pool -_080A5E00: - ldr r2, [r2, 0x8] - b _080A5E42 -_080A5E04: - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0] - lsls r1, r4, 2 - adds r0, r1, r0 - ldrh r0, [r0, 0x2] - cmp r0, 0 - bne _080A5E3C - ldr r1, =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0 - bl GetMonData - adds r2, r0, 0 - b _080A5E42 - .pool -_080A5E3C: - ldr r0, =gTransformedPersonalities - adds r0, r1, r0 - ldr r2, [r0] -_080A5E42: - movs r0, 0xC0 - lsls r0, 18 - ands r0, r2 - lsrs r0, 18 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r2 - lsrs r1, 12 - orrs r0, r1 - movs r1, 0xC0 - lsls r1, 2 - ands r1, r2 - lsrs r1, 6 - orrs r0, r1 - movs r1, 0x3 - ands r1, r2 - orrs r0, r1 - movs r1, 0x1C - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _080A5E7C - adds r0, r5, 0 - b _080A5E86 - .pool -_080A5E7C: - movs r1, 0xCE - lsls r1, 1 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 -_080A5E86: - ldr r1, =gUnknown_083021D8 - lsls r0, 2 - b _080A5F90 - .pool -_080A5E90: - ldr r0, =0x00000181 - cmp r5, r0 - bne _080A5EB0 - ldr r0, =gUnknown_08525F8C - ldr r1, =gBattleMonForms - adds r1, r4, r1 - ldrb r1, [r1] - adds r1, r0 - ldrb r0, [r1] - b _080A5F94 - .pool -_080A5EB0: - movs r0, 0xCE - lsls r0, 1 - cmp r5, r0 - bls _080A5EC0 - ldr r0, =gUnknown_083021D8 - b _080A5F92 - .pool -_080A5EC0: - ldr r1, =gUnknown_083021D8 - b _080A5F8E - .pool -_080A5EC8: - cmp r5, 0xC9 - bne _080A5F58 - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0] - lsls r1, r4, 2 - adds r0, r1, r0 - ldrh r0, [r0, 0x2] - cmp r0, 0 - bne _080A5F04 - ldr r1, =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty - adds r0, r1 - movs r1, 0 - bl GetMonData - adds r2, r0, 0 - b _080A5F0A - .pool -_080A5F04: - ldr r0, =gTransformedPersonalities - adds r0, r1, r0 - ldr r2, [r0] -_080A5F0A: - movs r0, 0xC0 - lsls r0, 18 - ands r0, r2 - lsrs r0, 18 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r2 - lsrs r1, 12 - orrs r0, r1 - movs r1, 0xC0 - lsls r1, 2 - ands r1, r2 - lsrs r1, 6 - orrs r0, r1 - movs r1, 0x3 - ands r1, r2 - orrs r0, r1 - movs r1, 0x1C - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _080A5F44 - adds r0, r5, 0 - b _080A5F4E - .pool -_080A5F44: - movs r1, 0xCE - lsls r1, 1 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 -_080A5F4E: - ldr r1, =gMonFrontPicCoords - lsls r0, 2 - b _080A5F90 - .pool -_080A5F58: - ldr r0, =0x00000181 - cmp r5, r0 - bne _080A5F7C - ldr r0, =gCastformFrontSpriteCoords - ldr r1, =gBattleMonForms - adds r1, r4, r1 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - b _080A5F94 - .pool -_080A5F7C: - movs r0, 0xCE - lsls r0, 1 - cmp r5, r0 - bls _080A5F8C - ldr r0, =gMonFrontPicCoords - b _080A5F92 - .pool -_080A5F8C: - ldr r1, =gMonFrontPicCoords -_080A5F8E: - lsls r0, r5, 2 -_080A5F90: - adds r0, r1 -_080A5F92: - ldrb r0, [r0, 0x1] -_080A5F94: - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80A5DB8 - - thumb_func_start sub_80A5FA0 -sub_80A5FA0: @ 80A5FA0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 16 - lsrs r4, r1, 16 - adds r7, r4, 0 - movs r5, 0 - adds r0, r6, 0 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A5FFE - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A5FFE - ldr r0, =0x00000181 - cmp r4, r0 - bne _080A5FE8 - ldr r0, =gUnknown_08525F88 - ldr r1, =gBattleMonForms - adds r1, r6, r1 - ldrb r1, [r1] - adds r1, r0 - ldrb r5, [r1] - b _080A5FFE - .pool -_080A5FE8: - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - bls _080A5FF8 - ldr r0, =gEnemyMonElevation - b _080A5FFC - .pool -_080A5FF8: - ldr r0, =gEnemyMonElevation - adds r0, r7, r0 -_080A5FFC: - ldrb r5, [r0] -_080A5FFE: - adds r0, r5, 0 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80A5FA0 - - thumb_func_start sub_80A600C -sub_80A600C: @ 80A600C - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 16 - lsrs r5, r1, 16 - lsls r2, 24 - lsrs r7, r2, 24 - adds r0, r6, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A6030 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A603E -_080A6030: - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80A5DB8 - lsls r0, 24 - lsrs r4, r0, 24 - b _080A605C -_080A603E: - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80A5DB8 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80A5FA0 - lsls r0, 24 - lsrs r0, 24 - subs r0, r4, r0 - lsls r0, 16 - lsrs r4, r0, 16 -_080A605C: - adds r0, r6, 0 - bl GetBattlerPosition - ldr r3, =gUnknown_08525F58 - lsls r0, 24 - lsrs r0, 22 - ldr r1, =gBattleTypeFlags - ldr r1, [r1] - movs r2, 0x1 - ands r1, r2 - lsls r1, 4 - adds r0, r1 - adds r0, r3 - ldrb r0, [r0, 0x1] - adds r0, r4 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r7, 0 - beq _080A609C - adds r0, r6, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080A6096 - adds r0, r4, 0 - adds r0, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 -_080A6096: - cmp r4, 0x68 - bls _080A609C - movs r4, 0x68 -_080A609C: - adds r0, r4, 0 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80A600C - - thumb_func_start sub_80A60AC -sub_80A60AC: @ 80A60AC - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - movs r0, 0xFD - lsls r0, 24 - adds r1, r0 - lsrs r1, 24 - cmp r1, 0x1 - bhi _080A6126 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A60E8 - ldr r0, =gContestResources - ldr r0, [r0] - ldr r2, [r0, 0x18] - ldrb r1, [r2, 0x4] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A60E4 - ldrh r1, [r2, 0x2] - b _080A610E - .pool -_080A60E4: - ldrh r1, [r2] - b _080A610E -_080A60E8: - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r4, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _080A610C - ldr r1, =gAnimBattlerSpecies - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - b _080A610E - .pool -_080A610C: - ldrh r1, [r1, 0x2] -_080A610E: - cmp r5, 0x3 - bne _080A611C - adds r0, r4, 0 - movs r2, 0x1 - bl sub_80A600C - b _080A612E -_080A611C: - adds r0, r4, 0 - movs r2, 0 - bl sub_80A600C - b _080A612E -_080A6126: - adds r0, r4, 0 - adds r1, r5, 0 - bl GetBattlerSpriteCoord -_080A612E: - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80A60AC - - thumb_func_start GetBattlerSpriteDefault_Y -GetBattlerSpriteDefault_Y: @ 80A6138 - push {lr} - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x4 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end GetBattlerSpriteDefault_Y - - thumb_func_start GetSubstituteSpriteDefault_Y -GetSubstituteSpriteDefault_Y: @ 80A614C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A6170 - adds r0, r4, 0 - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 8 - movs r1, 0x80 - lsls r1, 13 - b _080A6180 -_080A6170: - adds r0, r4, 0 - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 8 - movs r1, 0x88 - lsls r1, 13 -_080A6180: - adds r0, r1 - lsrs r0, 16 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetSubstituteSpriteDefault_Y - - thumb_func_start sub_80A6190 -sub_80A6190: @ 80A6190 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r6, r0, 24 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A6238 - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A61E4 - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r5, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _080A621C - ldr r1, =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gEnemyParty - b _080A6202 - .pool -_080A61E4: - ldr r0, =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r5, 2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2] - cmp r0, 0 - bne _080A621C - ldr r1, =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty -_080A6202: - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - b _080A621E - .pool -_080A621C: - ldrh r4, [r1, 0x2] -_080A621E: - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A6238 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80A5FA0 - subs r0, r6, r0 - lsls r0, 24 - lsrs r6, r0, 24 -_080A6238: - adds r0, r6, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80A6190 - - thumb_func_start GetAnimBattlerSpriteId -GetAnimBattlerSpriteId: @ 80A6240 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0 - bne _080A6268 - ldr r4, =gBattleAnimAttacker - ldrb r0, [r4] - bl IsBattlerSpritePresent - lsls r0, 24 - cmp r0, 0 - beq _080A62B6 - ldr r1, =gBattlerSpriteIds - ldrb r0, [r4] - b _080A62C6 - .pool -_080A6268: - cmp r0, 0x1 - bne _080A6288 - ldr r4, =gBattleAnimTarget - ldrb r0, [r4] - bl IsBattlerSpritePresent - lsls r0, 24 - cmp r0, 0 - beq _080A62B6 - ldr r1, =gBattlerSpriteIds - ldrb r0, [r4] - b _080A62C6 - .pool -_080A6288: - cmp r1, 0x2 - bne _080A62A4 - ldr r5, =gBattleAnimAttacker - ldrb r0, [r5] - movs r4, 0x2 - eors r0, r4 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A62B6 - b _080A62C0 - .pool -_080A62A4: - ldr r5, =gBattleAnimTarget - ldrb r0, [r5] - movs r4, 0x2 - eors r0, r4 - bl IsBattlerSpriteVisible - lsls r0, 24 - cmp r0, 0 - bne _080A62C0 -_080A62B6: - movs r0, 0xFF - b _080A62CA - .pool -_080A62C0: - ldr r1, =gBattlerSpriteIds - ldrb r0, [r5] - eors r0, r4 -_080A62C6: - adds r0, r1 - ldrb r0, [r0] -_080A62CA: - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end GetAnimBattlerSpriteId - - thumb_func_start StoreSpriteCallbackInData6 -StoreSpriteCallbackInData6: @ 80A62D4 - strh r1, [r0, 0x3A] - lsrs r1, 16 - strh r1, [r0, 0x3C] - bx lr - thumb_func_end StoreSpriteCallbackInData6 - - thumb_func_start sub_80A62DC -sub_80A62DC: @ 80A62DC - ldrh r2, [r0, 0x3A] - movs r3, 0x3C - ldrsh r1, [r0, r3] - lsls r1, 16 - orrs r2, r1 - str r2, [r0, 0x1C] - bx lr - thumb_func_end sub_80A62DC - - thumb_func_start sub_80A62EC -sub_80A62EC: @ 80A62EC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080A6340 - movs r2, 0x2E - ldrsh r0, [r4, r2] - movs r2, 0x30 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r2, 0x30 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x2E] - adds r1, r0, r2 - strh r1, [r4, 0x2E] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080A632C - ldr r2, =0xffffff00 - b _080A6334 - .pool -_080A632C: - cmp r0, 0 - bge _080A6338 - movs r2, 0x80 - lsls r2, 1 -_080A6334: - adds r0, r1, r2 - strh r0, [r4, 0x2E] -_080A6338: - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x34] - b _080A6346 -_080A6340: - adds r0, r4, 0 - bl sub_80A62DC -_080A6346: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A62EC - - thumb_func_start sub_80A634C -sub_80A634C: @ 80A634C - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080A63BC - movs r2, 0x2E - ldrsh r0, [r4, r2] - ldrh r1, [r4, 0x38] - lsls r1, 16 - asrs r1, 24 - ldrh r2, [r4, 0x30] - adds r1, r2 - lsls r1, 16 - asrs r1, 16 - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - ldrh r1, [r4, 0x38] - lsls r1, 16 - asrs r1, 24 - ldrh r2, [r4, 0x30] - adds r1, r2 - lsls r1, 16 - asrs r1, 16 - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x2E] - adds r1, r0, r2 - strh r1, [r4, 0x2E] - ldrh r0, [r4, 0x36] - ldrh r2, [r4, 0x38] - adds r0, r2 - strh r0, [r4, 0x38] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080A63A8 - ldr r2, =0xffffff00 - b _080A63B0 - .pool -_080A63A8: - cmp r0, 0 - bge _080A63B4 - movs r2, 0x80 - lsls r2, 1 -_080A63B0: - adds r0, r1, r2 - strh r0, [r4, 0x2E] -_080A63B4: - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x34] - b _080A63C2 -_080A63BC: - adds r0, r4, 0 - bl sub_80A62DC -_080A63C2: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A634C - - thumb_func_start sub_80A63C8 -sub_80A63C8: @ 80A63C8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080A6444 - movs r2, 0x2E - ldrsh r0, [r4, r2] - movs r2, 0x30 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r2, 0x30 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x2E] - adds r1, r0, r2 - strh r1, [r4, 0x2E] - ldrh r0, [r4, 0x38] - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080A6410 - ldr r2, =0xffffff00 - b _080A6418 - .pool -_080A6410: - cmp r0, 0 - bge _080A641C - movs r2, 0x80 - lsls r2, 1 -_080A6418: - adds r0, r1, r2 - strh r0, [r4, 0x2E] -_080A641C: - ldrh r1, [r4, 0x36] - movs r2, 0x36 - ldrsh r0, [r4, r2] - cmp r0, 0xFF - ble _080A6430 - ldr r2, =0xffffff00 - b _080A6438 - .pool -_080A6430: - cmp r0, 0 - bge _080A643C - movs r2, 0x80 - lsls r2, 1 -_080A6438: - adds r0, r1, r2 - strh r0, [r4, 0x36] -_080A643C: - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x34] - b _080A644A -_080A6444: - adds r0, r4, 0 - bl sub_80A62DC -_080A644A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A63C8 - - thumb_func_start sub_80A6450 -sub_80A6450: @ 80A6450 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080A64A4 - movs r2, 0x2E - ldrsh r0, [r4, r2] - movs r2, 0x30 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x2E] - adds r1, r0, r2 - strh r1, [r4, 0x2E] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _080A6490 - ldr r2, =0xffffff00 - b _080A6498 - .pool -_080A6490: - cmp r0, 0 - bge _080A649C - movs r2, 0x80 - lsls r2, 1 -_080A6498: - adds r0, r1, r2 - strh r0, [r4, 0x2E] -_080A649C: - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x34] - b _080A64AA -_080A64A4: - adds r0, r4, 0 - bl sub_80A62DC -_080A64AA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A6450 - - thumb_func_start sub_80A64B0 -sub_80A64B0: @ 80A64B0 - push {lr} - adds r1, r0, 0 - ldrh r2, [r1, 0x2E] - movs r3, 0x2E - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _080A64C4 - subs r0, r2, 0x1 - strh r0, [r1, 0x2E] - b _080A64CA -_080A64C4: - adds r0, r1, 0 - bl sub_80A62DC -_080A64CA: - pop {r0} - bx r0 - thumb_func_end sub_80A64B0 - - thumb_func_start sub_80A64D0 -sub_80A64D0: @ 80A64D0 - push {r4,lr} - adds r4, r0, 0 - bl sub_80A64EC - ldr r1, =sub_80A653C - str r1, [r4, 0x1C] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A64D0 - - thumb_func_start sub_80A64EC -sub_80A64EC: @ 80A64EC - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x30 - ldrsh r1, [r4, r0] - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r1, r0 - ble _080A6502 - ldrh r0, [r4, 0x2E] - negs r0, r0 - strh r0, [r4, 0x2E] -_080A6502: - movs r1, 0x32 - ldrsh r0, [r4, r1] - movs r2, 0x30 - ldrsh r1, [r4, r2] - subs r0, r1 - ldrh r5, [r4, 0x2E] - movs r2, 0x2E - ldrsh r1, [r4, r2] - bl __divsi3 - cmp r0, 0 - bge _080A651C - negs r0, r0 -_080A651C: - strh r0, [r4, 0x2E] - movs r1, 0x36 - ldrsh r0, [r4, r1] - movs r2, 0x34 - ldrsh r1, [r4, r2] - subs r0, r1 - movs r2, 0x2E - ldrsh r1, [r4, r2] - bl __divsi3 - strh r0, [r4, 0x32] - strh r5, [r4, 0x30] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A64EC - - thumb_func_start sub_80A653C -sub_80A653C: @ 80A653C - push {lr} - adds r1, r0, 0 - ldrh r2, [r1, 0x2E] - movs r3, 0x2E - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _080A6560 - subs r0, r2, 0x1 - strh r0, [r1, 0x2E] - ldrh r0, [r1, 0x30] - ldrh r2, [r1, 0x24] - adds r0, r2 - strh r0, [r1, 0x24] - ldrh r0, [r1, 0x32] - ldrh r3, [r1, 0x26] - adds r0, r3 - strh r0, [r1, 0x26] - b _080A6566 -_080A6560: - adds r0, r1, 0 - bl sub_80A62DC -_080A6566: - pop {r0} - bx r0 - thumb_func_end sub_80A653C - - thumb_func_start sub_80A656C -sub_80A656C: @ 80A656C - push {lr} - adds r2, r0, 0 - ldrh r1, [r2, 0x2E] - movs r3, 0x2E - ldrsh r0, [r2, r3] - cmp r0, 0 - ble _080A659C - subs r0, r1, 0x1 - strh r0, [r2, 0x2E] - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x34] - adds r0, r1 - strh r0, [r2, 0x34] - ldrh r1, [r2, 0x32] - ldrh r3, [r2, 0x36] - adds r1, r3 - strh r1, [r2, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r2, 0x24] - lsls r1, 16 - asrs r1, 24 - strh r1, [r2, 0x26] - b _080A65A2 -_080A659C: - adds r0, r2, 0 - bl sub_80A62DC -_080A65A2: - pop {r0} - bx r0 - thumb_func_end sub_80A656C - - thumb_func_start sub_80A65A8 -sub_80A65A8: @ 80A65A8 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080A65D8 - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x34] - adds r0, r1 - strh r0, [r4, 0x34] - ldrh r1, [r4, 0x32] - ldrh r2, [r4, 0x36] - adds r1, r2 - strh r1, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - lsls r1, 16 - asrs r1, 24 - strh r1, [r4, 0x26] - b _080A65DE -_080A65D8: - adds r0, r4, 0 - bl sub_80A62DC -_080A65DE: - adds r0, r4, 0 - bl UpdateMonIconFrame - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A65A8 - - thumb_func_start sub_80A65EC -sub_80A65EC: @ 80A65EC - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x26] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x34] - ldr r5, =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, =sub_80A64D0 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A65EC - - thumb_func_start sub_80A6630 -sub_80A6630: @ 80A6630 - push {r4,lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x2E] - movs r2, 0x2E - ldrsh r0, [r3, r2] - cmp r0, 0 - ble _080A6674 - subs r0, r1, 0x1 - strh r0, [r3, 0x2E] - ldr r2, =gSprites - movs r4, 0x34 - ldrsh r1, [r3, r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x30] - ldrh r4, [r0, 0x24] - adds r1, r4 - strh r1, [r0, 0x24] - movs r0, 0x34 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x32] - ldrh r2, [r0, 0x26] - adds r1, r2 - strh r1, [r0, 0x26] - b _080A667A - .pool -_080A6674: - adds r0, r3, 0 - bl sub_80A62DC -_080A667A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A6630 - - thumb_func_start sub_80A6680 -sub_80A6680: @ 80A6680 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080A66D0 - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - ldrh r1, [r4, 0x30] - ldrh r0, [r4, 0x34] - adds r1, r0 - strh r1, [r4, 0x34] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - ldr r3, =gSprites - movs r0, 0x38 - ldrsh r2, [r4, r0] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r3 - lsls r1, 16 - asrs r1, 24 - strh r1, [r0, 0x24] - movs r1, 0x38 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r1, 0x26] - b _080A66D6 - .pool -_080A66D0: - adds r0, r4, 0 - bl sub_80A62DC -_080A66D6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A6680 - - thumb_func_start sub_80A66DC -sub_80A66DC: @ 80A66DC - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080A673E - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] - ldrh r1, [r4, 0x32] - lsls r0, r1, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x30] - adds r1, r0 - strh r1, [r4, 0x32] - ldrh r1, [r4, 0x36] - lsls r0, r1, 16 - asrs r0, 24 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r1, r0 - strh r1, [r4, 0x36] - movs r1, 0x2E - ldrsh r0, [r4, r1] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl __modsi3 - cmp r0, 0 - bne _080A6744 - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080A6744 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - b _080A6744 -_080A673E: - adds r0, r4, 0 - bl sub_80A62DC -_080A6744: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A66DC - - thumb_func_start move_anim_8074EE0 -move_anim_8074EE0: @ 80A674C - push {r4,lr} - adds r4, r0, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroyAnimSprite - pop {r4} - pop {r0} - bx r0 - thumb_func_end move_anim_8074EE0 - - thumb_func_start sub_80A6760 -sub_80A6760: @ 80A6760 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x26] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x34] - ldr r5, =gBattleAnimAttacker - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - ldr r0, =sub_80A64D0 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A6760 - - thumb_func_start sub_80A67A4 -sub_80A67A4: @ 80A67A4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x38] - bl ResetPaletteStructByUid - adds r0, r4, 0 - bl move_anim_8074EE0 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A67A4 - - thumb_func_start sub_80A67BC -sub_80A67BC: @ 80A67BC - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080A67D2 - adds r0, r2, 0 - bl sub_80A62DC -_080A67D2: - pop {r0} - bx r0 - thumb_func_end sub_80A67BC - - thumb_func_start sub_80A67D8 -sub_80A67D8: @ 80A67D8 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A67EE - adds r0, r2, 0 - bl sub_80A62DC -_080A67EE: - pop {r0} - bx r0 - thumb_func_end sub_80A67D8 - - thumb_func_start sub_80A67F4 -sub_80A67F4: @ 80A67F4 - 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_80A67F4 - - thumb_func_start sub_80A6814 -sub_80A6814: @ 80A6814 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - adds r0, r4, 0 - bl DestroyAnimVisualTask - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A6814 - - thumb_func_start sub_80A6838 -sub_80A6838: @ 80A6838 - 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] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A6838 - - thumb_func_start sub_80A6864 -sub_80A6864: @ 80A6864 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - lsls r1, 16 - lsrs r5, r1, 16 - mov r8, r5 - ldr r7, =gBattleAnimAttacker - ldrb r0, [r7] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, =gBattleAnimTarget - ldrb r0, [r0] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - cmp r6, r0 - bhi _080A68B0 - cmp r6, r0 - bcs _080A68A4 - lsls r0, r5, 16 - b _080A68C0 - .pool -_080A68A4: - ldrb r0, [r7] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _080A68BC -_080A68B0: - ldrh r1, [r4, 0x20] - lsls r0, r5, 16 - asrs r0, 16 - subs r1, r0 - strh r1, [r4, 0x20] - b _080A68C8 -_080A68BC: - mov r1, r8 - lsls r0, r1, 16 -_080A68C0: - asrs r0, 16 - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] -_080A68C8: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80A6864 - - thumb_func_start sub_80A68D4 -sub_80A68D4: @ 80A68D4 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x20] - movs r5, 0 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - movs r0, 0x2E - ldrsh r1, [r4, r0] - movs r0, 0x80 - lsls r0, 8 - bl __divsi3 - strh r0, [r4, 0x3A] - strh r5, [r4, 0x3C] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A68D4 - - thumb_func_start AnimateBallThrow -AnimateBallThrow: @ 80A6900 - push {r4,lr} - adds r4, r0, 0 - bl sub_80A6F3C - lsls r0, 24 - cmp r0, 0 - bne _080A692C - ldrh r0, [r4, 0x3A] - ldrh r1, [r4, 0x3C] - adds r0, r1 - strh r0, [r4, 0x3C] - lsls r0, 16 - lsrs r0, 24 - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Sin - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - movs r0, 0 - b _080A692E -_080A692C: - movs r0, 0x1 -_080A692E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end AnimateBallThrow thumb_func_start sub_80A6934 sub_80A6934: @ 80A6934 push {r4,lr} adds r4, r0, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 bne _080A6960 @@ -1732,13 +62,13 @@ sub_80A6980: @ 80A6980 ldr r4, =gBattleAnimTarget ldrb r0, [r4] movs r1, 0 - bl sub_80A60AC + bl GetBattlerSpriteCoord2 lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x1 - bl sub_80A60AC + bl GetBattlerSpriteCoord2 lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -1768,7 +98,7 @@ sub_80A69CC: @ 80A69CC ldr r4, =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0 - bl sub_80A60AC + bl GetBattlerSpriteCoord2 lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] @@ -1780,14 +110,14 @@ _080A69F0: ldr r4, =gBattleAnimAttacker ldrb r0, [r4] movs r1, 0x2 - bl sub_80A60AC + bl GetBattlerSpriteCoord2 lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x20] ldrb r0, [r4] movs r1, 0x3 _080A6A04: - bl sub_80A60AC + bl GetBattlerSpriteCoord2 lsls r0, 24 lsrs r0, 24 strh r0, [r5, 0x22] @@ -2344,8 +674,8 @@ sub_80A6E14: @ 80A6E14 bx r0 thumb_func_end sub_80A6E14 - thumb_func_start obj_translate_based_on_private_1_2_3_4 -obj_translate_based_on_private_1_2_3_4: @ 80A6E54 + thumb_func_start InitAnimLinearTranslation +InitAnimLinearTranslation: @ 80A6E54 push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -2423,7 +753,7 @@ _080A6ED0: pop {r0} bx r0 .pool - thumb_func_end obj_translate_based_on_private_1_2_3_4 + thumb_func_end InitAnimLinearTranslation thumb_func_start sub_80A6EEC sub_80A6EEC: @ 80A6EEC @@ -2434,7 +764,7 @@ sub_80A6EEC: @ 80A6EEC ldrh r0, [r4, 0x22] strh r0, [r4, 0x34] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r1, =sub_80A6F98 str r1, [r4, 0x1C] adds r0, r4, 0 @@ -2454,7 +784,7 @@ sub_80A6F14: @ 80A6F14 ldrh r0, [r4, 0x22] strh r0, [r4, 0x34] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r1, =sub_80A6FB4 str r1, [r4, 0x1C] adds r0, r4, 0 @@ -2465,8 +795,8 @@ sub_80A6F14: @ 80A6F14 .pool thumb_func_end sub_80A6F14 - thumb_func_start sub_80A6F3C -sub_80A6F3C: @ 80A6F3C + thumb_func_start TranslateAnimLinear +TranslateAnimLinear: @ 80A6F3C push {r4-r6,lr} adds r2, r0, 0 movs r1, 0x2E @@ -2518,18 +848,18 @@ _080A6F90: pop {r4-r6} pop {r1} bx r1 - thumb_func_end sub_80A6F3C + thumb_func_end TranslateAnimLinear thumb_func_start sub_80A6F98 sub_80A6F98: @ 80A6F98 push {r4,lr} adds r4, r0, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 beq _080A6FAC adds r0, r4, 0 - bl sub_80A62DC + bl SetCallbackToStoredInData6 _080A6FAC: pop {r4} pop {r0} @@ -2542,12 +872,12 @@ sub_80A6FB4: @ 80A6FB4 adds r4, r0, 0 bl sub_8039E9C adds r0, r4, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 beq _080A6FCE adds r0, r4, 0 - bl sub_80A62DC + bl SetCallbackToStoredInData6 _080A6FCE: pop {r4} pop {r0} @@ -2573,7 +903,7 @@ _080A6FE8: bl __divsi3 strh r0, [r4, 0x2E] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation pop {r4} pop {r0} bx r0 @@ -2764,7 +1094,7 @@ sub_80A7144: @ 80A7144 cmp r0, 0 beq _080A7158 adds r0, r4, 0 - bl sub_80A62DC + bl SetCallbackToStoredInData6 _080A7158: pop {r4} pop {r0} @@ -3763,7 +2093,7 @@ _080A78CC: sub_80A791C: @ 80A791C push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _080A7930 @@ -4558,7 +2888,7 @@ _080A7F42: ldr r0, [r0] ldr r0, [r0, 0x18] ldrh r2, [r0] - ldr r1, =gUnknown_083021D8 + ldr r1, =gMonBackPicCoords lsls r0, r2, 2 adds r0, r1 ldrb r0, [r0, 0x1] @@ -4598,11 +2928,11 @@ _080A7FC0: _080A7FC2: cmp r2, r7 bne _080A7FD0 - ldr r0, =gUnknown_08525F8C + ldr r0, =gCastformBackSpriteYCoords b _080A8018 .pool _080A7FD0: - ldr r0, =gUnknown_083021D8 + ldr r0, =gMonBackPicCoords b _080A8026 .pool _080A7FD8: @@ -4633,7 +2963,7 @@ _080A8010: _080A8012: cmp r2, r7 bne _080A8024 - ldr r0, =gUnknown_08525F88 + ldr r0, =gCastformElevations _080A8018: ldrb r1, [r6] adds r1, r0 @@ -5350,7 +3680,7 @@ _080A85A0: mov r2, r10 lsls r1, r2, 16 asrs r1, 16 - ldr r3, =gUnknown_083021D8 + ldr r3, =gMonBackPicCoords _080A85B2: lsls r2, r6, 2 adds r2, r3 @@ -5467,7 +3797,7 @@ _080A8690: lsrs r0, 16 _080A869A: lsls r1, r0, 2 - ldr r0, =gUnknown_083021D8 + ldr r0, =gMonBackPicCoords b _080A8864 .pool _080A86A4: @@ -5481,7 +3811,7 @@ _080A86AC: cmp r7, r0 bhi _080A877C lsls r1, r7, 2 - ldr r0, =gUnknown_083021D8 + ldr r0, =gMonBackPicCoords b _080A8864 .pool _080A86C4: @@ -5562,7 +3892,7 @@ _080A8760: lsrs r0, 16 _080A876A: lsls r1, r0, 2 - ldr r0, =gUnknown_083021D8 + ldr r0, =gMonBackPicCoords b _080A8864 .pool _080A8774: @@ -5571,12 +3901,12 @@ _080A8774: cmp r7, r0 bls _080A8784 _080A877C: - ldr r4, =gUnknown_083021D8 + ldr r4, =gMonBackPicCoords b _080A8866 .pool _080A8784: lsls r1, r7, 2 - ldr r0, =gUnknown_083021D8 + ldr r0, =gMonBackPicCoords b _080A8864 .pool _080A8790: diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s index 5b047a54d..df4f21408 100644 --- a/asm/battle_anim_80FE840.s +++ b/asm/battle_anim_80FE840.s @@ -183,7 +183,7 @@ sub_80FE988: @ 80FE988 lsrs r0, 24 strh r0, [r4, 0x36] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldrh r0, [r6, 0x6] strh r0, [r4, 0x38] ldr r1, =sub_80FE9E4 @@ -200,7 +200,7 @@ sub_80FE988: @ 80FE988 sub_80FE9E4: @ 80FE9E4 push {r4,lr} adds r4, r0, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 beq _080FE9FA @@ -350,7 +350,7 @@ sub_80FEAD8: @ 80FEAD8 sub_80FEB28: @ 80FEB28 push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _080FEB3C @@ -541,7 +541,7 @@ _080FEC68: sub_80FECB8: @ 80FECB8 push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _080FECE2 @@ -781,7 +781,7 @@ sub_80FEE78: @ 80FEE78 adds r0, r5 strh r0, [r4, 0x36] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation movs r0, 0x40 strh r0, [r4, 0x38] ldr r1, =sub_80FEECC @@ -798,7 +798,7 @@ sub_80FEE78: @ 80FEE78 sub_80FEECC: @ 80FEECC push {r4,lr} adds r4, r0, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 bne _080FEF38 @@ -878,7 +878,7 @@ sub_80FEF44: @ 80FEF44 adds r0, r5 strh r0, [r4, 0x36] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation movs r0, 0x40 strh r0, [r4, 0x38] ldr r1, =sub_80FEF98 @@ -895,7 +895,7 @@ sub_80FEF44: @ 80FEF44 sub_80FEF98: @ 80FEF98 push {r4,lr} adds r4, r0, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 bne _080FEFF0 @@ -1175,7 +1175,7 @@ sub_80FF1C0: @ 80FF1C0 movs r0, 0x1 strh r0, [r6, 0x2E] adds r0, r6, 0 - bl AnimateBallThrow + bl TranslateAnimArc ldrh r0, [r6, 0x3C] strh r5, [r6, 0x2E] lsls r4, 16 @@ -3161,7 +3161,7 @@ _08100180: adds r1, r2, 0 bl sub_8100524 adds r0, r4, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 bne _08100196 @@ -3190,7 +3190,7 @@ _081001B4: adds r1, r2, 0 bl sub_8100524 adds r0, r4, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 bne _081001CA @@ -3219,7 +3219,7 @@ _081001E6: adds r1, r2, 0 bl sub_8100524 adds r0, r4, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 bne _081001FC @@ -3272,7 +3272,7 @@ _08100254: adds r1, r2, 0 bl sub_8100524 adds r0, r4, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 bne _0810026A @@ -3403,7 +3403,7 @@ _08100362: adds r1, r2, 0 bl sub_8100524 adds r0, r4, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 bne _08100378 @@ -3514,7 +3514,7 @@ _08100448: adds r1, r2, 0 bl sub_8100524 adds r0, r4, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _081004FC @@ -3566,7 +3566,7 @@ _081004B6: adds r1, r2, 0 bl sub_8100524 adds r0, r4, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _081004FC @@ -4869,7 +4869,7 @@ _08100F06: ldr r6, =gBattleAnimAttacker ldrb r0, [r6] movs r1, 0 - bl sub_80A60AC + bl GetBattlerSpriteCoord2 lsls r0, 24 ldr r4, =gBattleAnimArgs lsrs r0, 24 @@ -4878,7 +4878,7 @@ _08100F06: strh r0, [r5, 0x20] ldrb r0, [r6] movs r1, 0x1 - bl sub_80A60AC + bl GetBattlerSpriteCoord2 lsls r0, 24 lsrs r0, 24 ldrh r4, [r4, 0x2] @@ -9082,7 +9082,7 @@ _08103074: subs r0, 0x28 strh r0, [r4, 0x36] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldrh r0, [r5, 0x6] strh r0, [r4, 0x38] ldr r0, =sub_81030B0 @@ -9097,7 +9097,7 @@ _08103074: sub_81030B0: @ 81030B0 push {r4,lr} adds r4, r0, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 bne _08103100 @@ -11528,7 +11528,7 @@ _08104448: adds r0, r6 strh r0, [r5, 0x36] adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldrh r0, [r7] strh r0, [r5, 0x38] ldrh r0, [r5, 0x2E] @@ -11548,7 +11548,7 @@ _08104448: sub_81044BC: @ 81044BC push {r4,lr} adds r4, r0, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 beq _08104520 @@ -11659,7 +11659,7 @@ _0810458A: sub_8104594: @ 8104594 push {r4,lr} adds r4, r0, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 beq _081045A8 @@ -12761,7 +12761,7 @@ sub_8104E74: @ 8104E74 adds r5, r1, r0 ldr r4, =gBattleAnimTarget ldrb r0, [r4] - bl sub_80A6190 + bl GetBattlerYCoordWithElevation lsls r0, 24 lsrs r0, 24 adds r0, 0x20 @@ -12969,7 +12969,7 @@ sub_810501C: @ 810501C movs r5, 0 strh r0, [r4, 0x20] ldrb r0, [r6] - bl sub_80A6190 + bl GetBattlerYCoordWithElevation lsls r0, 24 lsrs r0, 24 adds r0, 0x10 @@ -13271,7 +13271,7 @@ _0810526A: sub_8105284: @ 8105284 push {r4,lr} adds r4, r0, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 beq _0810529E @@ -13526,7 +13526,7 @@ _0810549E: ldrh r0, [r2] strh r0, [r5, 0x2E] adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r1, =sub_8105284 str r1, [r5, 0x1C] adds r0, r5, 0 @@ -15088,7 +15088,7 @@ sub_8106140: @ 8106140 lsrs r0, 24 strh r0, [r4, 0x36] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r0, =sub_810618C str r0, [r4, 0x1C] pop {r4,r5} @@ -15101,7 +15101,7 @@ sub_8106140: @ 8106140 sub_810618C: @ 810618C push {r4,lr} adds r4, r0, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 bne _081061B6 @@ -17269,7 +17269,7 @@ _081072D8: lsrs r0, 24 strh r0, [r6, 0x36] adds r0, r6, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r0, =SpriteCallbackDummy bl CreateInvisibleSpriteWithCallback adds r4, r0, 0 @@ -17339,7 +17339,7 @@ sub_8107380: @ 8107380 movs r0, 0x1 strh r0, [r5, 0x2E] adds r0, r5, 0 - bl sub_80A6F3C + bl TranslateAnimLinear mov r1, r8 lsrs r6, r1, 8 movs r0, 0x2E @@ -17464,7 +17464,7 @@ _08107482: adds r0, r7 strh r0, [r5, 0x36] adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r0, =sub_81074E4 str r0, [r5, 0x1C] adds r2, r5, 0 @@ -17502,7 +17502,7 @@ sub_81074E4: @ 81074E4 strb r0, [r2] _08107506: adds r0, r4, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 beq _08107518 @@ -17637,7 +17637,7 @@ sub_81075EC: @ 81075EC lsrs r0, 24 strh r0, [r5, 0x36] adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation movs r0, 0x2E ldrsh r1, [r5, r0] movs r0, 0xD2 @@ -17678,7 +17678,7 @@ _08107660: sub_8107674: @ 8107674 push {r4,lr} adds r4, r0, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 beq _08107688 @@ -20234,7 +20234,7 @@ _08108B1A: sub_8108B2C: @ 8108B2C push {r4-r6,lr} adds r6, r0, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _08108B86 @@ -20283,7 +20283,7 @@ _08108B86: sub_8108B94: @ 8108B94 push {r4-r6,lr} adds r5, r0, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _08108BD0 @@ -21144,7 +21144,7 @@ sub_8109244: @ 8109244 lsrs r0, 24 strh r0, [r5, 0x36] adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r0, =sub_810929C str r0, [r5, 0x1C] _0810928E: @@ -21158,7 +21158,7 @@ _0810928E: sub_810929C: @ 810929C push {r4-r6,lr} adds r6, r0, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 beq _081092E4 @@ -22386,7 +22386,7 @@ _08109C3E: sub_8109C4C: @ 8109C4C push {r4,lr} adds r4, r0, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 bne _08109CA4 @@ -23433,7 +23433,7 @@ sub_810A46C: @ 810A46C lsrs r0, 24 strh r0, [r4, 0x36] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldrh r0, [r5, 0x4] strh r0, [r4, 0x38] ldrh r0, [r5, 0xA] @@ -23468,7 +23468,7 @@ sub_810A46C: @ 810A46C sub_810A4F4: @ 810A4F4 push {r4,lr} adds r4, r0, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 bne _0810A55E @@ -24336,7 +24336,7 @@ sub_810AB78: @ 810AB78 strh r0, [r4, 0x36] strh r6, [r4, 0x38] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r1, =sub_810ACC0 adds r0, r4, 0 bl StoreSpriteCallbackInData6 @@ -24394,7 +24394,7 @@ _0810AC86: sub_810AC8C: @ 810AC8C push {r4,lr} adds r4, r0, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 beq _0810ACB4 @@ -26828,7 +26828,7 @@ _0810BFCC: adds r0, r1 strh r0, [r5, 0x36] adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation movs r0, 0x40 strh r0, [r5, 0x38] ldr r1, =sub_810C008 @@ -26845,7 +26845,7 @@ _0810BFCC: sub_810C008: @ 810C008 push {r4,lr} adds r4, r0, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 bne _0810C092 @@ -27608,7 +27608,7 @@ _0810C684: strb r0, [r1] _0810C6B8: adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r0, =sub_810C6D4 str r0, [r5, 0x1C] pop {r3} @@ -27642,7 +27642,7 @@ _0810C6F4: b _0810C90C _0810C6F6: adds r0, r4, 0 - bl sub_80A6F3C + bl TranslateAnimLinear ldr r1, =gSineTable movs r2, 0x38 ldrsh r0, [r4, r2] @@ -27731,12 +27731,12 @@ _0810C78E: ands r0, r1 strh r0, [r4, 0x38] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation b _0810C90C .pool _0810C7BC: adds r0, r4, 0 - bl sub_80A6F3C + bl TranslateAnimLinear ldr r1, =gSineTable movs r2, 0x38 ldrsh r0, [r4, r2] @@ -27872,7 +27872,7 @@ _0810C8B6: .pool _0810C8D0: adds r0, r4, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 beq _0810C90C @@ -28414,7 +28414,7 @@ _0810CCCE: sub_810CD1C: @ 810CD1C push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _0810CD3E @@ -29021,7 +29021,7 @@ _0810D1FE: strh r0, [r6, 0x34] strh r0, [r6, 0x36] adds r0, r6, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldrh r0, [r4, 0xA] strh r0, [r6, 0x38] ldrh r0, [r4, 0x8] @@ -29039,7 +29039,7 @@ _0810D1FE: sub_810D240: @ 810D240 push {r4,lr} adds r4, r0, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 bne _0810D26C @@ -29616,7 +29616,7 @@ sub_810D6A8: @ 810D6A8 lsrs r0, 24 strh r0, [r4, 0x36] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r1, =move_anim_8074EE0 adds r0, r4, 0 bl StoreSpriteCallbackInData6 @@ -29892,7 +29892,7 @@ _0810D918: lsrs r0, 24 strh r0, [r5, 0x36] adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r1, =DestroyAnimSprite adds r0, r5, 0 bl StoreSpriteCallbackInData6 @@ -30234,7 +30234,7 @@ _0810DBC2: sub_810DC10: @ 810DC10 push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _0810DC24 @@ -30309,7 +30309,7 @@ _0810DC72: sub_810DCB4: @ 810DCB4 push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _0810DCC8 @@ -30716,7 +30716,7 @@ _0810DFC8: adds r0, r4 strh r0, [r6, 0x36] adds r0, r6, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r0, =sub_80A67BC str r0, [r6, 0x1C] ldr r1, =sub_810E028 @@ -30732,7 +30732,7 @@ _0810DFC8: sub_810E028: @ 810E028 push {r4,lr} adds r4, r0, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 beq _0810E03C @@ -30971,7 +30971,7 @@ _0810E1FE: lsrs r0, 24 strh r0, [r5, 0x36] adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation ldr r0, =sub_810E24C str r0, [r5, 0x1C] pop {r4,r5} @@ -30987,7 +30987,7 @@ sub_810E24C: @ 810E24C movs r0, 0x1 strh r0, [r4, 0x2E] adds r0, r4, 0 - bl sub_80A6F3C + bl TranslateAnimLinear ldrh r1, [r4, 0x34] lsrs r0, r1, 8 cmp r0, 0xC8 @@ -34508,7 +34508,7 @@ _0810FDE8: sub_810FDF0: @ 810FDF0 push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _0810FE0E @@ -34537,7 +34537,7 @@ sub_810FE14: @ 810FE14 adds r4, r1, r0 ldr r0, =gBattleAnimTarget ldrb r0, [r0] - bl sub_80A6190 + bl GetBattlerYCoordWithElevation lsls r0, 24 lsrs r1, r0, 24 adds r0, r1, 0 @@ -35235,7 +35235,7 @@ _081103C4: ldr r5, =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_80A60AC + bl GetBattlerSpriteCoord2 lsls r0, 24 ldr r4, =gBattleAnimArgs lsrs r0, 24 @@ -35244,7 +35244,7 @@ _081103C4: strh r0, [r6, 0x20] ldrb r0, [r5] movs r1, 0x3 - bl sub_80A60AC + bl GetBattlerSpriteCoord2 lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x2] @@ -35314,7 +35314,7 @@ _08110478: ldr r5, =gBattleAnimTarget ldrb r0, [r5] movs r1, 0x2 - bl sub_80A60AC + bl GetBattlerSpriteCoord2 lsls r0, 24 ldr r4, =gBattleAnimArgs lsrs r0, 24 @@ -35323,7 +35323,7 @@ _08110478: strh r0, [r6, 0x20] ldrb r0, [r5] movs r1, 0x3 - bl sub_80A60AC + bl GetBattlerSpriteCoord2 lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x2] @@ -35426,7 +35426,7 @@ _0811055A: sub_811057C: @ 811057C push {r4,lr} adds r4, r0, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 beq _08110592 @@ -35844,7 +35844,7 @@ sub_81108CC: @ 81108CC ands r1, r0 strb r1, [r2] adds r0, r4, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _081108F8 @@ -35879,7 +35879,7 @@ _0811090E: lsls r0, 16 lsrs r6, r0, 16 adds r0, r4, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 bne _08110988 @@ -37059,7 +37059,7 @@ _08111304: sub_811131C: @ 811131C push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _0811134E @@ -37483,7 +37483,7 @@ sub_8111674: @ 8111674 adds r4, r0, 0 bl sub_8111764 adds r0, r4, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 beq _08111694 @@ -37541,7 +37541,7 @@ sub_81116E8: @ 81116E8 movs r0, 0x1 strh r0, [r4, 0x2E] adds r0, r4, 0 - bl sub_80A6F3C + bl TranslateAnimLinear movs r1, 0x38 ldrsh r0, [r4, r1] movs r1, 0xA @@ -40203,7 +40203,7 @@ sub_8112C6C: @ 8112C6C lsrs r0, 24 strh r0, [r4, 0x1A] ldrb r0, [r5] - bl sub_80A6190 + bl GetBattlerYCoordWithElevation lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x1C] @@ -41135,7 +41135,7 @@ _0811342A: strb r5, [r0, 0x9] ldr r0, =gBattleAnimAttacker ldrb r0, [r0] - bl sub_80A6190 + bl GetBattlerYCoordWithElevation lsls r0, 24 lsrs r0, 24 adds r1, r0, 0 @@ -42031,7 +42031,7 @@ _08113B60: sub_8113B90: @ 8113B90 push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _08113BA4 @@ -43699,7 +43699,7 @@ sub_8114994: @ 8114994 sub_81149FC: @ 81149FC push {r4,r5,lr} adds r5, r0, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _08114A50 @@ -43746,7 +43746,7 @@ _08114A50: sub_8114A60: @ 8114A60 push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _08114A74 @@ -43817,13 +43817,13 @@ sub_8114AF0: @ 8114AF0 ldr r4, =gBattleAnimTarget ldrb r0, [r4] movs r1, 0x2 - bl sub_80A60AC + bl GetBattlerSpriteCoord2 lsls r0, 24 lsrs r0, 24 mov r8, r0 ldrb r0, [r4] movs r1, 0x3 - bl sub_80A60AC + bl GetBattlerSpriteCoord2 lsls r0, 24 lsrs r7, r0, 24 bl Random2 @@ -44120,7 +44120,7 @@ _08114D78: strh r0, [r4, 0x22] ldr r0, =gBattleAnimAttacker ldrb r0, [r0] - bl sub_80A6190 + bl GetBattlerYCoordWithElevation lsls r0, 24 lsrs r0, 24 adds r1, r0, 0 @@ -44460,7 +44460,7 @@ _08115046: strh r0, [r4, 0x20] ldr r0, =gBattleAnimAttacker ldrb r0, [r0] - bl sub_80A6190 + bl GetBattlerYCoordWithElevation lsls r0, 24 lsrs r0, 24 adds r1, r0, 0 @@ -44663,7 +44663,7 @@ _081151DA: adds r0, r6 strh r0, [r5, 0x20] adds r0, r4, 0 - bl sub_80A6190 + bl GetBattlerYCoordWithElevation lsls r0, 24 lsrs r0, 24 adds r0, 0x1E @@ -44693,7 +44693,7 @@ _081151DA: sub_8115228: @ 8115228 push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _0811523C @@ -44735,7 +44735,7 @@ _08115262: adds r0, r1 strh r0, [r6, 0x20] adds r0, r5, 0 - bl sub_80A6190 + bl GetBattlerYCoordWithElevation lsls r0, 24 lsrs r0, 24 adds r0, 0x20 diff --git a/asm/battle_anim_815A0D4.s b/asm/battle_anim_815A0D4.s index 01ab7ed93..55d25cf31 100644 --- a/asm/battle_anim_815A0D4.s +++ b/asm/battle_anim_815A0D4.s @@ -816,7 +816,7 @@ _0815A6F8: sub_815A73C: @ 815A73C push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _0815A75E @@ -1625,7 +1625,7 @@ _0815ADDC: ldr r4, =gBattleAnimTarget _0815ADDE: ldrb r0, [r4] - bl sub_80A6190 + bl GetBattlerYCoordWithElevation lsls r0, 24 lsrs r6, r0, 24 ldrb r0, [r4] @@ -6104,7 +6104,7 @@ _0815D26E: strh r0, [r4, 0x18] _0815D2A0: adds r0, r5, 0 - bl sub_80A6190 + bl GetBattlerYCoordWithElevation lsls r0, 24 lsrs r0, 24 subs r0, 0x22 @@ -8524,7 +8524,7 @@ _0815E5FE: lsls r0, 2 ldr r1, =gSprites adds r0, r1 - bl AnimateBallThrow + bl TranslateAnimArc ldrh r0, [r4, 0xC] adds r0, 0x1 strh r0, [r4, 0xC] @@ -8542,7 +8542,7 @@ _0815E634: lsls r0, 2 ldr r1, =gSprites adds r0, r1 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _0815E6D2 @@ -9804,11 +9804,11 @@ _0815F022: strh r0, [r4, 0x34] strh r1, [r4, 0x36] adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 + bl InitAnimLinearTranslation b _0815F0F8 _0815F038: adds r0, r4, 0 - bl sub_80A6F3C + bl TranslateAnimLinear lsls r0, 24 cmp r0, 0 beq _0815F106 diff --git a/asm/battle_anim_8170478.s b/asm/battle_anim_8170478.s index e08568eba..ab3f27799 100644 --- a/asm/battle_anim_8170478.s +++ b/asm/battle_anim_8170478.s @@ -1487,7 +1487,7 @@ sub_8171134: @ 8171134 push {r4,r5,lr} sub sp, 0x4 adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _081711D2 @@ -2671,7 +2671,7 @@ sub_8171AAC: @ 8171AAC orrs r0, r1 strb r0, [r3] adds r0, r4, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _08171ADC @@ -5652,7 +5652,7 @@ _081733C0: sub_81733D4: @ 81733D4 push {r4,lr} adds r4, r0, 0 - bl AnimateBallThrow + bl TranslateAnimArc lsls r0, 24 cmp r0, 0 beq _081733F6 diff --git a/data/rom_8525F58.s b/data/rom_8525F58.s deleted file mode 100644 index d95af7e20..000000000 --- a/data/rom_8525F58.s +++ /dev/null @@ -1,34 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_08525F58:: @ 8525F58 - .byte 0x48, 0x50, 0x00, 0x00, 0xb0, 0x28, 0x00, 0x00 - .byte 0x30, 0x28, 0x00, 0x00, 0x70, 0x50, 0x00, 0x00 - .byte 0x20, 0x50, 0x00, 0x00, 0xc8, 0x28, 0x00, 0x00 - .byte 0x5a, 0x58, 0x00, 0x00, 0x98, 0x20, 0x00, 0x00 - - .align 2 -gCastformFrontSpriteCoords:: @ 8525F78 - .byte 0x44, 0x11, 0x00, 0x00, 0x66, 0x09, 0x00, 0x00 - .byte 0x46, 0x09, 0x00, 0x00, 0x86, 0x08, 0x00, 0x00 - - .align 2 -gUnknown_08525F88:: @ 8525F88 - .byte 0x0d, 0x0e, 0x0d, 0x0d - - .align 2 -gUnknown_08525F8C:: @ 8525F8C - .byte 0x00, 0x00, 0x00, 0x00 - - .align 2 -gUnknown_08525F90:: @ 8525F90 - spr_template 0xd755, 0xd755, gUnknown_0852497C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - spr_template 0xd756, 0xd756, gUnknown_0852497C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gUnknown_08525FC0:: @ 8525FC0 - obj_tiles gMiscBlank_Gfx, 0x0800, 0xd755 - obj_tiles gMiscBlank_Gfx, 0x0800, 0xd756 diff --git a/include/battle_anim.h b/include/battle_anim.h index f690cf10c..29de71077 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -72,17 +72,20 @@ void HandleIntroSlide(u8 terrainId); // battle_anim_80A5C6C.s void sub_80A6EEC(struct Sprite *sprite); void sub_80A68D4(struct Sprite *sprite); -void sub_80A6F3C(struct Sprite *sprite); +void TranslateAnimLinear(struct Sprite *sprite); void sub_80A8278(void); void sub_80A6B30(struct UnknownAnimStruct2*); void sub_80A6B90(struct UnknownAnimStruct2*, u32 arg1); u8 sub_80A82E4(u8 battlerId); -bool8 AnimateBallThrow(struct Sprite *sprite); +bool8 TranslateAnimArc(struct Sprite *sprite); enum { - BANK_X_POS, - BANK_Y_POS, + BATTLER_COORD_X, + BATTLER_COORD_Y, + BATTLER_COORD_X_2, + BATTLER_COORD_3, + BATTLER_COORD_4, }; u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId); @@ -107,6 +110,6 @@ u8 ItemIdToBallId(u16 itemId); u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId); u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId); -u8 sub_80A600C(u8, u16, u8); +u8 GetBattlerSpriteFinal_Y(u8, u16, u8); #endif // GUARD_BATTLE_ANIM_H diff --git a/include/contest.h b/include/contest.h index 0a8fa4436..d62d33ab7 100644 --- a/include/contest.h +++ b/include/contest.h @@ -239,14 +239,13 @@ struct Shared18000 struct ContestStruct_field_18 { - // unknown size - u16 field_0; - u16 field_2; - u16 field_4; - u16 field_6; - u32 field_8; - u32 field_C; - u32 field_10; + u16 unk0; + u16 unk2; + u8 unk4_0:1; + u8 unk5; + u32 unk8; + u32 unkC; + u32 unk10; }; struct Contest @@ -411,6 +410,7 @@ extern struct ContestResources *gContestResources; #define eContestAI (gContestResources->field_C) #define shared19328 (*gContestResources->field_10) #define shared19338 (*gContestResources->field_14) +#define shared19348 (*gContestResources->field_18) #define shared15800 (gHeap + 0x18000) #define shared18000 (*(struct Shared18000 *)(gHeap + 0x1a000)) diff --git a/ld_script.txt b/ld_script.txt index fc12789ce..8de971717 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -111,6 +111,7 @@ SECTIONS { src/palette.o(.text); src/sound.o(.text); src/battle_anim.o(.text); + src/battle_anim_80A5C6C.o(.text); asm/battle_anim_80A5C6C.o(.text); src/task.o(.text); src/reshow_battle_screen.o(.text); @@ -420,7 +421,7 @@ SECTIONS { data/fanfares.o(.rodata); data/battle_anims.o(.rodata); src/battle_anim.o(.rodata); - data/rom_8525F58.o(.rodata); + src/battle_anim_80A5C6C.o(.rodata); data/map_events.o(.rodata); data/battle_anim_80A9C70.o(.rodata); src/title_screen.o(.rodata); diff --git a/src/battle_anim.c b/src/battle_anim.c index ebaa8c6de..fa782d661 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -234,7 +234,7 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo else { for (i = 0; i < 4; i++) - gAnimBattlerSpecies[i] = gContestResources->field_18->field_0; + gAnimBattlerSpecies[i] = gContestResources->field_18->unk0; } if (!isMoveAnim) @@ -691,7 +691,7 @@ void sub_80A438C(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible) battlerSpriteId = gBattlerSpriteIds[battlerId]; gBattle_BG1_X = -(gSprites[battlerSpriteId].pos1.x + gSprites[battlerSpriteId].pos2.x) + 0x20; - if (IsContest() && IsSpeciesNotUnown(gContestResources->field_18->field_0)) + if (IsContest() && IsSpeciesNotUnown(gContestResources->field_18->unk0)) gBattle_BG1_X--; gBattle_BG1_Y = -(gSprites[battlerSpriteId].pos1.y + gSprites[battlerSpriteId].pos2.y) + 0x20; @@ -749,7 +749,7 @@ static void sub_80A46A0(void) struct UnknownAnimStruct2 unknownStruct; u16 *ptr; - if (IsSpeciesNotUnown(gContestResources->field_18->field_0)) + if (IsSpeciesNotUnown(gContestResources->field_18->unk0)) { sub_80A6B30(&unknownStruct); ptr = unknownStruct.unk4; diff --git a/src/battle_anim_80A5C6C.c b/src/battle_anim_80A5C6C.c new file mode 100644 index 000000000..46e1e5b71 --- /dev/null +++ b/src/battle_anim_80A5C6C.c @@ -0,0 +1,741 @@ +#include "global.h" +#include "constants/battle_anim.h" +#include "constants/species.h" +#include "battle.h" +#include "battle_anim.h" +#include "blend_palette.h" +#include "contest.h" +#include "data2.h" +#include "decompress.h" +#include "palette.h" +#include "pokemon_icon.h" +#include "sprite.h" +#include "task.h" +#include "trig.h" +#include "util.h" +#include "gpu_regs.h" + +#define GET_UNOWN_LETTER(personality) ((\ + (((personality & 0x03000000) >> 24) << 6) \ + | (((personality & 0x00030000) >> 16) << 4) \ + | (((personality & 0x00000300) >> 8) << 2) \ + | (((personality & 0x00000003) >> 0) << 0) \ +) % 28) + +#define IS_DOUBLE_BATTLE() ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + +extern const struct OamData gUnknown_0852497C; +extern const struct MonCoords gMonFrontPicCoords[]; +extern const struct MonCoords gMonBackPicCoords[]; +extern const u8 gEnemyMonElevation[]; + +// This file's functions. +void sub_80A64EC(struct Sprite *sprite); +void sub_80A653C(struct Sprite *sprite); +void InitAnimLinearTranslation(struct Sprite *sprite); +bool8 TranslateAnimLinear(struct Sprite *sprite); + +// Const rom data +const struct UCoords8 sBattlerCoords[][4] = +{ + { + { 72, 80 }, + { 176, 40 }, + { 48, 40 }, + { 112, 80 }, + }, + { + { 32, 80 }, + { 200, 40 }, + { 90, 88 }, + { 152, 32 }, + }, +}; + +// One entry for each of the four Castform forms. +const struct MonCoords gCastformFrontSpriteCoords[] = +{ + { 0x44, 17 }, // NORMAL + { 0x66, 9 }, // SUN + { 0x46, 9 }, // RAIN + { 0x86, 8 }, // HAIL +}; + +const u8 gCastformElevations[] = +{ + 13, // NORMAL + 14, // SUN + 13, // RAIN + 13, // HAIL +}; + +// Y position of the backsprite for each of the four Castform forms. +const u8 gCastformBackSpriteYCoords[] = +{ + 0, // NORMAL + 0, // SUN + 0, // RAIN + 0, // HAIL +}; + +const struct SpriteTemplate gUnknown_08525F90[] = +{ + { + .tileTag = 55125, + .paletteTag = 55125, + .oam = &gUnknown_0852497C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = 55126, + .paletteTag = 55126, + .oam = &gUnknown_0852497C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + } +}; + +const struct SpriteSheet gUnknown_08525FC0[] = +{ + { gMiscBlank_Gfx, 0x800, 55125, }, + { gMiscBlank_Gfx, 0x800, 55126, }, +}; + +// code +u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId) +{ + u8 retVal; + u16 species; + struct BattleSpriteInfo *spriteInfo; + + if (IsContest()) + { + if (attributeId == BATTLER_COORD_3 && battlerId == 3) + attributeId = BATTLER_COORD_Y; + } + + switch (attributeId) + { + case BATTLER_COORD_X: + case BATTLER_COORD_X_2: + retVal = sBattlerCoords[IS_DOUBLE_BATTLE()][GetBattlerPosition(battlerId)].x; + break; + case BATTLER_COORD_Y: + retVal = sBattlerCoords[IS_DOUBLE_BATTLE()][GetBattlerPosition(battlerId)].y; + break; + case BATTLER_COORD_3: + case BATTLER_COORD_4: + default: + if (IsContest()) + { + if (shared19348.unk4_0) + species = shared19348.unk2; + else + species = shared19348.unk0; + } + else + { + if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) + { + spriteInfo = gBattleSpritesDataPtr->battlerData; + if (!spriteInfo[battlerId].transformSpecies) + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + else + species = spriteInfo[battlerId].transformSpecies; + } + else + { + spriteInfo = gBattleSpritesDataPtr->battlerData; + if (!spriteInfo[battlerId].transformSpecies) + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + else + species = spriteInfo[battlerId].transformSpecies; + } + } + if (attributeId == BATTLER_COORD_3) + retVal = GetBattlerSpriteFinal_Y(battlerId, species, TRUE); + else + retVal = GetBattlerSpriteFinal_Y(battlerId, species, FALSE); + break; + } + + return retVal; +} + +u8 GetBattlerYDelta(u8 battlerId, u16 species) +{ + u16 letter; + u32 personality; + struct BattleSpriteInfo *spriteInfo; + u8 ret; + u16 coordSpecies; + + if (GetBattlerSide(battlerId) == B_SIDE_PLAYER || IsContest()) + { + if (species == SPECIES_UNOWN) + { + if (IsContest()) + { + if (shared19348.unk4_0) + personality = shared19348.unk10; + else + personality = shared19348.unk8; + } + else + { + spriteInfo = gBattleSpritesDataPtr->battlerData; + if (!spriteInfo[battlerId].transformSpecies) + personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PERSONALITY); + else + personality = gTransformedPersonalities[battlerId]; + } + letter = GET_UNOWN_LETTER(personality); + if (!letter) + coordSpecies = species; + else + coordSpecies = letter + SPECIES_UNOWN_B - 1; + ret = gMonBackPicCoords[coordSpecies].y_offset; + } + else if (species == SPECIES_CASTFORM) + { + ret = gCastformBackSpriteYCoords[gBattleMonForms[battlerId]]; + } + else if (species > NUM_SPECIES) + { + ret = gMonBackPicCoords[0].y_offset; + } + else + { + ret = gMonBackPicCoords[species].y_offset; + } + } + else + { + if (species == SPECIES_UNOWN) + { + spriteInfo = gBattleSpritesDataPtr->battlerData; + if (!spriteInfo[battlerId].transformSpecies) + personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PERSONALITY); + else + personality = gTransformedPersonalities[battlerId]; + letter = GET_UNOWN_LETTER(personality); + if (!letter) + coordSpecies = species; + else + coordSpecies = letter + SPECIES_UNOWN_B - 1; + ret = gMonFrontPicCoords[coordSpecies].y_offset; + } + else if (species == SPECIES_CASTFORM) + { + ret = gCastformFrontSpriteCoords[gBattleMonForms[battlerId]].y_offset; + } + else if (species > NUM_SPECIES) + { + ret = gMonFrontPicCoords[0].y_offset; + } + else + { + ret = gMonFrontPicCoords[species].y_offset; + } + } + return ret; +} + +u8 GetBattlerElevation(u8 battlerId, u16 species) +{ + u8 ret = 0; + if (GetBattlerSide(battlerId) == B_SIDE_OPPONENT) + { + if (!IsContest()) + { + if (species == SPECIES_CASTFORM) + ret = gCastformElevations[gBattleMonForms[battlerId]]; + else if (species > NUM_SPECIES) + ret = gEnemyMonElevation[0]; + else + ret = gEnemyMonElevation[species]; + } + } + return ret; +} + +u8 GetBattlerSpriteFinal_Y(u8 battlerId, u16 species, bool8 a3) +{ + u16 offset; + u8 y; + + if (GetBattlerSide(battlerId) == B_SIDE_PLAYER || IsContest()) + { + offset = GetBattlerYDelta(battlerId, species); + } + else + { + offset = GetBattlerYDelta(battlerId, species); + offset -= GetBattlerElevation(battlerId, species); + } + y = offset + sBattlerCoords[IS_DOUBLE_BATTLE()][GetBattlerPosition(battlerId)].y; + if (a3) + { + if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) + y += 8; + if (y > 104) + y = 104; + } + return y; +} + +u8 GetBattlerSpriteCoord2(u8 battlerId, u8 attributeId) +{ + u16 species; + struct BattleSpriteInfo *spriteInfo; + + if (attributeId == BATTLER_COORD_3 || attributeId == BATTLER_COORD_4) + { + if (IsContest()) + { + if (shared19348.unk4_0) + species = shared19348.unk2; + else + species = shared19348.unk0; + } + else + { + spriteInfo = gBattleSpritesDataPtr->battlerData; + if (!spriteInfo[battlerId].transformSpecies) + species = gAnimBattlerSpecies[battlerId]; + else + species = spriteInfo[battlerId].transformSpecies; + } + if (attributeId == BATTLER_COORD_3) + return GetBattlerSpriteFinal_Y(battlerId, species, TRUE); + else + return GetBattlerSpriteFinal_Y(battlerId, species, FALSE); + } + else + { + return GetBattlerSpriteCoord(battlerId, attributeId); + } +} + +u8 GetBattlerSpriteDefault_Y(u8 battlerId) +{ + return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_4); +} + +u8 GetSubstituteSpriteDefault_Y(u8 battlerId) +{ + u16 y; + if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) + y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 16; + else + y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 17; + return y; +} + +u8 GetBattlerYCoordWithElevation(u8 battlerId) +{ + u16 species; + u8 y; + struct BattleSpriteInfo *spriteInfo; + + y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y); + if (!IsContest()) + { + if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) + { + spriteInfo = gBattleSpritesDataPtr->battlerData; + if (!spriteInfo[battlerId].transformSpecies) + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + else + species = spriteInfo[battlerId].transformSpecies; + } + else + { + spriteInfo = gBattleSpritesDataPtr->battlerData; + if (!spriteInfo[battlerId].transformSpecies) + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + else + species = spriteInfo[battlerId].transformSpecies; + } + if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) + y -= GetBattlerElevation(battlerId, species); + } + return y; +} + +u8 GetAnimBattlerSpriteId(u8 which) +{ + u8 *sprites; + + if (which == ANIM_ATTACKER) + { + if (IsBattlerSpritePresent(gBattleAnimAttacker)) + { + sprites = gBattlerSpriteIds; + return sprites[gBattleAnimAttacker]; + } + else + { + return 0xff; + } + } + else if (which == ANIM_TARGET) + { + if (IsBattlerSpritePresent(gBattleAnimTarget)) + { + sprites = gBattlerSpriteIds; + return sprites[gBattleAnimTarget]; + } + else + { + return 0xff; + } + } + else if (which == ANIM_ATK_PARTNER) + { + if (!IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) + return 0xff; + else + return gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]; + } + else + { + if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget))) + return gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimTarget)]; + else + return 0xff; + } +} + +void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*callback)(struct Sprite*)) +{ + sprite->data[6] = (u32)(callback) & 0xffff; + sprite->data[7] = (u32)(callback) >> 16; +} + +void SetCallbackToStoredInData6(struct Sprite *sprite) +{ + u32 callback = (u16)sprite->data[6] | (sprite->data[7] << 16); + sprite->callback = (void (*)(struct Sprite *))callback; +} + +void sub_80A62EC(struct Sprite *sprite) +{ + if (sprite->data[3]) + { + sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); + sprite->pos2.y = Cos(sprite->data[0], sprite->data[1]); + sprite->data[0] += sprite->data[2]; + if (sprite->data[0] >= 0x100) + sprite->data[0] -= 0x100; + else if (sprite->data[0] < 0) + sprite->data[0] += 0x100; + sprite->data[3]--; + } + else + { + SetCallbackToStoredInData6(sprite); + } +} + +void sub_80A634C(struct Sprite *sprite) +{ + if (sprite->data[3]) + { + sprite->pos2.x = Sin(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]); + sprite->pos2.y = Cos(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]); + sprite->data[0] += sprite->data[2]; + sprite->data[5] += sprite->data[4]; + if (sprite->data[0] >= 0x100) + sprite->data[0] -= 0x100; + else if (sprite->data[0] < 0) + sprite->data[0] += 0x100; + sprite->data[3]--; + } + else + { + SetCallbackToStoredInData6(sprite); + } +} + +void sub_80A63C8(struct Sprite *sprite) +{ + if (sprite->data[3]) + { + sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); + sprite->pos2.y = Cos(sprite->data[4], sprite->data[1]); + sprite->data[0] += sprite->data[2]; + sprite->data[4] += sprite->data[5]; + if (sprite->data[0] >= 0x100) + sprite->data[0] -= 0x100; + else if (sprite->data[0] < 0) + sprite->data[0] += 0x100; + if (sprite->data[4] >= 0x100) + sprite->data[4] -= 0x100; + else if (sprite->data[4] < 0) + sprite->data[4] += 0x100; + sprite->data[3]--; + } + else + { + SetCallbackToStoredInData6(sprite); + } +} + +void sub_80A6450(struct Sprite *sprite) +{ + if (sprite->data[3]) + { + sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); + sprite->pos2.y = Cos(sprite->data[0], sprite->data[4]); + sprite->data[0] += sprite->data[2]; + if (sprite->data[0] >= 0x100) + sprite->data[0] -= 0x100; + else if (sprite->data[0] < 0) + sprite->data[0] += 0x100; + sprite->data[3]--; + } + else + { + SetCallbackToStoredInData6(sprite); + } +} + +// Simply waits until the sprite's data[0] hits zero. +// This is used to let sprite anims or affine anims to run for a designated +// duration. +void sub_80A64B0(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + sprite->data[0]--; + else + SetCallbackToStoredInData6(sprite); +} + +void sub_80A64D0(struct Sprite *sprite) +{ + sub_80A64EC(sprite); + sprite->callback = sub_80A653C; + sprite->callback(sprite); +} + +void sub_80A64EC(struct Sprite *sprite) +{ + s16 old; + int v1; + + if (sprite->data[1] > sprite->data[2]) + sprite->data[0] = -sprite->data[0]; + v1 = sprite->data[2] - sprite->data[1]; + old = sprite->data[0]; + sprite->data[0] = abs(v1 / sprite->data[0]); + sprite->data[2] = (sprite->data[4] - sprite->data[3]) / sprite->data[0]; + sprite->data[1] = old; +} + +void sub_80A653C(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { + sprite->data[0]--; + sprite->pos2.x += sprite->data[1]; + sprite->pos2.y += sprite->data[2]; + } + else + { + SetCallbackToStoredInData6(sprite); + } +} + +void sub_80A656C(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { + sprite->data[0]--; + sprite->data[3] += sprite->data[1]; + sprite->data[4] += sprite->data[2]; + sprite->pos2.x = sprite->data[3] >> 8; + sprite->pos2.y = sprite->data[4] >> 8; + } + else + { + SetCallbackToStoredInData6(sprite); + } +} + +void sub_80A65A8(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { + sprite->data[0]--; + sprite->data[3] += sprite->data[1]; + sprite->data[4] += sprite->data[2]; + sprite->pos2.x = sprite->data[3] >> 8; + sprite->pos2.y = sprite->data[4] >> 8; + } + else + { + SetCallbackToStoredInData6(sprite); + } + UpdateMonIconFrame(sprite); +} + +void sub_80A65EC(struct Sprite *sprite) +{ + sprite->data[1] = sprite->pos1.x + sprite->pos2.x; + sprite->data[3] = sprite->pos1.y + sprite->pos2.y; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->callback = sub_80A64D0; +} + +void sub_80A6630(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { + sprite->data[0]--; + gSprites[sprite->data[3]].pos2.x += sprite->data[1]; + gSprites[sprite->data[3]].pos2.y += sprite->data[2]; + } + else + { + SetCallbackToStoredInData6(sprite); + } +} + +// Same as sub_80A6630, but it operates on sub-pixel values +// to handle slower translations. +void sub_80A6680(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { + sprite->data[0]--; + sprite->data[3] += sprite->data[1]; + sprite->data[4] += sprite->data[2]; + gSprites[sprite->data[5]].pos2.x = sprite->data[3] >> 8; + gSprites[sprite->data[5]].pos2.y = sprite->data[4] >> 8; + } + else + { + SetCallbackToStoredInData6(sprite); + } +} + +void sub_80A66DC(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { + sprite->data[0]--; + sprite->pos2.x = sprite->data[2] >> 8; + sprite->data[2] += sprite->data[1]; + sprite->pos2.y = sprite->data[4] >> 8; + sprite->data[4] += sprite->data[3]; + if (sprite->data[0] % sprite->data[5] == 0) + { + if (sprite->data[5]) + sprite->invisible ^= 1; + } + } + else + { + SetCallbackToStoredInData6(sprite); + } +} + +void move_anim_8074EE0(struct Sprite *sprite) +{ + FreeSpriteOamMatrix(sprite); + DestroyAnimSprite(sprite); +} + +void sub_80A6760(struct Sprite *sprite) +{ + sprite->data[1] = sprite->pos1.x + sprite->pos2.x; + sprite->data[3] = sprite->pos1.y + sprite->pos2.y; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->callback = sub_80A64D0; +} + +void sub_80A67A4(struct Sprite *sprite) +{ + ResetPaletteStructByUid(sprite->data[5]); + move_anim_8074EE0(sprite); +} + +void sub_80A67BC(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) + SetCallbackToStoredInData6(sprite); +} + +void sub_80A67D8(struct Sprite *sprite) +{ + if (sprite->animEnded) + SetCallbackToStoredInData6(sprite); +} + +void sub_80A67F4(struct Sprite *sprite) +{ + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + DestroyAnimSprite(sprite); +} + +void sub_80A6814(u8 taskId) +{ + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + DestroyAnimVisualTask(taskId); +} + +void sub_80A6838(struct Sprite *sprite) +{ + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); +} + +void sub_80A6864(struct Sprite *sprite, s16 a2) +{ + u16 v1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); + u16 v2 = GetBattlerSpriteCoord(gBattleAnimTarget, 0); + + if (v1 > v2) + { + sprite->pos1.x -= a2; + } + else if (v1 < v2) + { + sprite->pos1.x += a2; + } + else + { + if (GetBattlerSide(gBattleAnimAttacker) != 0) + sprite->pos1.x -= a2; + else + sprite->pos1.x += a2; + } +} + +void sub_80A68D4(struct Sprite *sprite) +{ + sprite->data[1] = sprite->pos1.x; + sprite->data[3] = sprite->pos1.y; + InitAnimLinearTranslation(sprite); + sprite->data[6] = 0x8000 / sprite->data[0]; + sprite->data[7] = 0; +} + +bool8 TranslateAnimArc(struct Sprite *sprite) +{ + if (TranslateAnimLinear(sprite)) + return TRUE; + sprite->data[7] += sprite->data[6]; + sprite->pos2.y += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]); + return FALSE; +} diff --git a/src/battle_anim_sound_tasks.c b/src/battle_anim_sound_tasks.c index 5a829171e..6993bd2ee 100644 --- a/src/battle_anim_sound_tasks.c +++ b/src/battle_anim_sound_tasks.c @@ -131,7 +131,7 @@ void sub_8158D8C(u8 taskId) if (IsContest()) { if (gBattleAnimArgs[0] == ANIM_ATTACKER) - species = gContestResources->field_18->field_0; + species = gContestResources->field_18->unk0; else DestroyAnimVisualTask(taskId); // UB: function should return upon destroying task. } @@ -177,7 +177,7 @@ void sub_8158E9C(u8 taskId) if (IsContest()) { if (gBattleAnimArgs[0] == ANIM_ATTACKER) - species = gContestResources->field_18->field_0; + species = gContestResources->field_18->unk0; else DestroyAnimVisualTask(taskId); // UB: function should return upon destroying task. } @@ -281,7 +281,7 @@ void sub_81590B8(u8 taskId) pan = BattleAnimAdjustPanning(PAN_SIDE_PLAYER); if (IsContest()) - species = gContestResources->field_18->field_0; + species = gContestResources->field_18->unk0; else species = gAnimBattlerSpecies[gBattleAnimAttacker]; diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index e5c8582a9..80e1574a4 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -899,14 +899,14 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform if (IsContest()) { position = 0; - targetSpecies = gContestResources->field_18->field_2; - personalityValue = gContestResources->field_18->field_8; - otId = gContestResources->field_18->field_C; + targetSpecies = gContestResources->field_18->unk2; + personalityValue = gContestResources->field_18->unk8; + otId = gContestResources->field_18->unkC; HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[targetSpecies], gMonSpritesGfxPtr->sprites[0], targetSpecies, - gContestResources->field_18->field_10); + gContestResources->field_18->unk10); } else { diff --git a/src/contest.c b/src/contest.c index 910637387..8eacc89c3 100644 --- a/src/contest.c +++ b/src/contest.c @@ -2535,7 +2535,7 @@ u8 sub_80DB174(u16 species, u32 otId, u32 personality, u32 index) LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x120, 0x20); SetMultiuseSpriteTemplateToPokemon(species, 0); - spriteId = CreateSprite(&gMultiuseSpriteTemplate, 0x70, sub_80A600C(2, species, 0), 30); + spriteId = CreateSprite(&gMultiuseSpriteTemplate, 0x70, GetBattlerSpriteFinal_Y(2, species, FALSE), 30); gSprites[spriteId].oam.paletteNum = 2; gSprites[spriteId].oam.priority = 2; gSprites[spriteId].subpriority = sub_80A82E4(2); diff --git a/src/data/pokemon_graphics/back_pic_coordinates.h b/src/data/pokemon_graphics/back_pic_coordinates.h index f54b409e4..877bf3475 100644 --- a/src/data/pokemon_graphics/back_pic_coordinates.h +++ b/src/data/pokemon_graphics/back_pic_coordinates.h @@ -1,4 +1,4 @@ -const struct MonCoords gUnknown_083021D8[] = +const struct MonCoords gMonBackPicCoords[] = { {0x88, 0x00}, // SPECIES_NONE {0x64, 0x10}, // SPECIES_BULBASAUR diff --git a/src/pokeball.c b/src/pokeball.c index 3dbbb2967..bb02a02ba 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -378,8 +378,8 @@ static void Task_DoPokeballSendOutAnim(u8 taskId) gSprites[ballSpriteId].callback = SpriteCB_PlayerMonSendOut_1; break; case POKEBALL_OPPONENT_SENDOUT: - gSprites[ballSpriteId].pos1.x = GetBattlerSpriteCoord(battlerId, BANK_X_POS); - gSprites[ballSpriteId].pos1.y = GetBattlerSpriteCoord(battlerId, BANK_Y_POS) + 24; + gSprites[ballSpriteId].pos1.x = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X); + gSprites[ballSpriteId].pos1.y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 24; gBattlerTarget = battlerId; gSprites[ballSpriteId].data[0] = 0; gSprites[ballSpriteId].callback = SpriteCB_OpponentMonSendOut; @@ -399,8 +399,8 @@ static void Task_DoPokeballSendOutAnim(u8 taskId) // this will perform an unused ball throw animation gSprites[ballSpriteId].data[0] = 0x22; - gSprites[ballSpriteId].data[2] = GetBattlerSpriteCoord(gBattlerTarget, BANK_X_POS); - gSprites[ballSpriteId].data[4] = GetBattlerSpriteCoord(gBattlerTarget, BANK_Y_POS) - 16; + 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]); gSprites[ballSpriteId].oam.affineParam = taskId; @@ -411,7 +411,7 @@ static void Task_DoPokeballSendOutAnim(u8 taskId) static void SpriteCB_TestBallThrow(struct Sprite *sprite) { - if (AnimateBallThrow(sprite)) + if (TranslateAnimArc(sprite)) { u16 ballId; u8 taskId = sprite->oam.affineParam; @@ -922,7 +922,7 @@ static void SpriteCB_PlayerMonSendOut_2(struct Sprite *sprite) StartSpriteAffineAnim(sprite, 4); } r4 = sprite->data[0]; - sub_80A6F3C(sprite); + TranslateAnimLinear(sprite); sprite->data[7] += sprite->sBattler / 3; sprite->pos2.y += Sin(HIBYTE(sprite->data[7]), sprite->data[5]); sprite->oam.affineParam += 0x100; @@ -940,7 +940,7 @@ static void SpriteCB_PlayerMonSendOut_2(struct Sprite *sprite) } else { - if (AnimateBallThrow(sprite)) + if (TranslateAnimArc(sprite)) { sprite->pos1.x += sprite->pos2.x; sprite->pos1.y += sprite->pos2.y; |