diff options
-rw-r--r-- | asm/battle_1.s | 8 | ||||
-rw-r--r-- | asm/battle_anim.s | 1647 | ||||
-rw-r--r-- | asm/battle_anim_80FE840.s | 34 | ||||
-rwxr-xr-x | asm/battle_anim_815A0D4.s | 18 | ||||
-rw-r--r-- | asm/battle_anim_sound_tasks.s | 24 | ||||
-rw-r--r-- | asm/battle_controller_linkopponent.s | 2 | ||||
-rw-r--r-- | asm/battle_controller_linkpartner.s | 2 | ||||
-rw-r--r-- | asm/battle_controller_opponent.s | 2 | ||||
-rw-r--r-- | asm/battle_controller_player.s | 2 | ||||
-rw-r--r-- | asm/battle_controller_player_partner.s | 2 | ||||
-rw-r--r-- | asm/battle_controller_recorded_opponent.s | 2 | ||||
-rw-r--r-- | asm/battle_controller_recorded_player.s | 2 | ||||
-rw-r--r-- | asm/battle_controller_wally.s | 2 | ||||
-rw-r--r-- | asm/contest.s | 12 | ||||
-rw-r--r-- | data/battle_anims.s | 42 | ||||
-rw-r--r-- | include/battle.h | 3 | ||||
-rw-r--r-- | include/battle_anim.h | 12 | ||||
-rw-r--r-- | include/contest.h | 1 | ||||
-rw-r--r-- | src/battle_anim.c | 640 |
19 files changed, 736 insertions, 1721 deletions
diff --git a/asm/battle_1.s b/asm/battle_1.s index 416fd87ec..d450df884 100644 --- a/asm/battle_1.s +++ b/asm/battle_1.s @@ -1424,8 +1424,8 @@ _0803575A: .pool thumb_func_end ApplyPlayerChosenFrameToBattleMenu - thumb_func_start load_battle_oval_graphics -load_battle_oval_graphics: @ 8035770 + thumb_func_start LoadFittingBackgroundForBattle +LoadFittingBackgroundForBattle: @ 8035770 push {r4,r5,lr} ldr r0, =gBattleTypeFlags ldr r1, [r0] @@ -1665,7 +1665,7 @@ _08035A8A: pop {r0} bx r0 .pool - thumb_func_end load_battle_oval_graphics + thumb_func_end LoadFittingBackgroundForBattle thumb_func_start LoadBattleTextboxAndBackground LoadBattleTextboxAndBackground: @ 8035AA4 @@ -1686,7 +1686,7 @@ LoadBattleTextboxAndBackground: @ 8035AA4 movs r2, 0x40 bl LoadCompressedPalette bl ApplyPlayerChosenFrameToBattleMenu - bl load_battle_oval_graphics + bl LoadFittingBackgroundForBattle pop {r0} bx r0 .pool diff --git a/asm/battle_anim.s b/asm/battle_anim.s index a35f322d4..a25ef98c6 100644 --- a/asm/battle_anim.s +++ b/asm/battle_anim.s @@ -5,1640 +5,7 @@ .text - - thumb_func_start sub_80A46A0 -sub_80A46A0: @ 80A46A0 - push {r4-r7,lr} - sub sp, 0x10 - ldr r0, =gContestResources - ldr r0, [r0] - ldr r0, [r0, 0x18] - ldrh r0, [r0] - bl IsSpeciesNotUnown - lsls r0, 24 - cmp r0, 0 - beq _080A4712 - mov r0, sp - bl sub_80A6B30 - ldr r6, [sp, 0x4] - movs r5, 0 - movs r0, 0x7 - mov r12, r0 - movs r7, 0 -_080A46C6: - movs r4, 0 - adds r3, r7, r6 - mov r1, r12 - lsls r0, r1, 1 - adds r2, r0, r6 -_080A46D0: - ldrh r1, [r3] - ldrh r0, [r2] - strh r0, [r3] - strh r1, [r2] - adds r3, 0x2 - subs r2, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _080A46D0 - movs r0, 0x20 - add r12, r0 - adds r7, 0x40 - adds r5, 0x1 - cmp r5, 0x7 - ble _080A46C6 - movs r5, 0 - movs r1, 0x80 - lsls r1, 3 - adds r3, r1, 0 -_080A46F6: - adds r2, r5, 0x1 - lsls r0, r5, 6 - adds r1, r0, r6 - movs r4, 0x7 -_080A46FE: - ldrh r0, [r1] - eors r0, r3 - strh r0, [r1] - adds r1, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080A46FE - adds r5, r2, 0 - cmp r5, 0x7 - ble _080A46F6 -_080A4712: - add sp, 0x10 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A46A0 - - thumb_func_start sub_80A4720 -sub_80A4720: @ 80A4720 - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r1 - adds r6, r2, 0 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r3, 24 - movs r0, 0x40 - mov r12, r0 - cmp r3, 0 - bne _080A473C - movs r1, 0x20 - mov r12, r1 -_080A473C: - lsls r0, r5, 28 - lsrs r5, r0, 16 - movs r0, 0 - cmp r0, r12 - bge _080A476C - ldr r7, =0x00000fff -_080A4748: - adds r4, r0, 0x1 - lsls r0, 6 - mov r1, r8 - adds r3, r0, r1 - movs r2, 0x1F -_080A4752: - ldrh r1, [r3] - adds r0, r7, 0 - ands r0, r1 - orrs r0, r5 - adds r0, r6 - strh r0, [r3] - adds r3, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _080A4752 - adds r0, r4, 0 - cmp r0, r12 - blt _080A4748 -_080A476C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A4720 - - thumb_func_start sub_80A477C -sub_80A477C: @ 80A477C - push {r4,lr} - sub sp, 0x10 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r0, sp - bl sub_80A6B30 - cmp r4, 0 - beq _080A479C - bl IsContest - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _080A47B8 -_080A479C: - movs r0, 0x1 - bl sub_80A6C68 - ldr r0, =gBattle_BG1_X - movs r1, 0 - strh r1, [r0] - ldr r0, =gBattle_BG1_Y - strh r1, [r0] - b _080A47C6 - .pool -_080A47B8: - movs r0, 0x2 - bl sub_80A6C68 - ldr r0, =gBattle_BG2_X - strh r4, [r0] - ldr r0, =gBattle_BG2_Y - strh r4, [r0] -_080A47C6: - add sp, 0x10 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A477C - - thumb_func_start task_pA_ma0A_obj_to_bg_pal -@ void task_pA_ma0A_obj_to_bg_pal(int task_id) -task_pA_ma0A_obj_to_bg_pal: @ 80A47D8 - push {r4-r6,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r5, r1, r2 - ldrb r4, [r5, 0x8] - ldrb r6, [r5, 0x14] - mov r0, sp - bl sub_80A6B30 - ldr r0, =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrh r2, [r1, 0x24] - ldrh r0, [r1, 0x20] - adds r2, r0 - ldrh r0, [r5, 0xA] - subs r0, r2 - lsls r0, 16 - lsrs r3, r0, 16 - ldrh r2, [r1, 0x26] - ldrh r1, [r1, 0x22] - adds r2, r1 - ldrh r0, [r5, 0xC] - subs r0, r2 - lsls r0, 16 - lsrs r2, r0, 16 - movs r1, 0x12 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080A4870 - ldr r1, =gBattle_BG1_X - lsls r0, r3, 16 - asrs r0, 16 - ldrh r3, [r5, 0xE] - adds r0, r3 - strh r0, [r1] - ldr r1, =gBattle_BG1_Y - lsls r0, r2, 16 - asrs r0, 16 - ldrh r5, [r5, 0x10] - adds r0, r5 - strh r0, [r1] - lsls r0, r6, 5 - ldr r2, =gPlttBufferFaded + 0x200 - adds r0, r2 - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 5 - ldr r3, =0xfffffe00 - adds r2, r3 - adds r1, r2 - ldr r2, =0x04000008 - bl CpuSet - b _080A4896 - .pool -_080A4870: - ldr r1, =gBattle_BG2_X - lsls r0, r3, 16 - asrs r0, 16 - ldrh r3, [r5, 0xE] - adds r0, r3 - strh r0, [r1] - ldr r1, =gBattle_BG2_Y - lsls r0, r2, 16 - asrs r0, 16 - ldrh r5, [r5, 0x10] - adds r0, r5 - strh r0, [r1] - lsls r0, r6, 5 - ldr r1, =gPlttBufferFaded + 0x200 - adds r0, r1 - subs r1, 0xE0 - ldr r2, =0x04000008 - bl CpuSet -_080A4896: - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end task_pA_ma0A_obj_to_bg_pal - - thumb_func_start ma0B_0807324C -ma0B_0807324C: @ 80A48B0 - push {r4,r5,lr} - ldr r0, =gBattleAnimScriptPtr - ldr r2, [r0] - adds r1, r2, 0x1 - str r1, [r0] - ldrb r4, [r2, 0x1] - cmp r4, 0 - bne _080A48C8 - movs r4, 0x2 - b _080A48D2 - .pool -_080A48C8: - cmp r4, 0x1 - bne _080A48CE - movs r4, 0x3 -_080A48CE: - cmp r4, 0 - beq _080A48D6 -_080A48D2: - cmp r4, 0x2 - bne _080A48E0 -_080A48D6: - ldr r0, =gAnimBankAttacker - b _080A48E2 - .pool -_080A48E0: - ldr r0, =gAnimBankTarget -_080A48E2: - ldrb r5, [r0] - ldr r3, =gMonAnimTaskIdArray - ldrb r0, [r3] - cmp r0, 0xFF - beq _080A4908 - ldr r2, =gSprites - ldr r0, =gBankSpriteIds - adds r0, r5, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] -_080A4908: - cmp r4, 0x1 - bls _080A4948 - ldrb r0, [r3, 0x1] - cmp r0, 0xFF - beq _080A4948 - ldr r3, =gSprites - ldr r2, =gBankSpriteIds - movs r1, 0x2 - adds r0, r5, 0 - eors r0, r1 - adds r0, r2 - ldrb r1, [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] - b _080A494A - .pool -_080A4948: - movs r4, 0 -_080A494A: - ldr r0, =sub_80A4980 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - strh r5, [r1, 0xC] - ldr r1, =gBattleAnimScriptPtr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ma0B_0807324C - - thumb_func_start sub_80A4980 -sub_80A4980: @ 80A4980 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r1, r0, r1 - ldrh r0, [r1, 0xA] - adds r0, 0x1 - strh r0, [r1, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - beq _080A4A0A - ldrb r0, [r1, 0xC] - bl GetBankIdentity - lsls r0, 24 - movs r1, 0xFF - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x1 - bls _080A49BC - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A49C4 -_080A49BC: - movs r4, 0 - b _080A49C6 - .pool -_080A49C4: - movs r4, 0x1 -_080A49C6: - ldr r6, =gMonAnimTaskIdArray - ldrb r0, [r6] - cmp r0, 0xFF - beq _080A49DE - adds r0, r4, 0 - bl sub_80A477C - ldrb r0, [r6] - bl DestroyTask - movs r0, 0xFF - strb r0, [r6] -_080A49DE: - ldr r0, =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0x1 - ble _080A4A04 - movs r0, 0x1 - eors r4, r0 - adds r0, r4, 0 - bl sub_80A477C - ldrb r0, [r6, 0x1] - bl DestroyTask - movs r0, 0xFF - strb r0, [r6, 0x1] -_080A4A04: - adds r0, r5, 0 - bl DestroyTask -_080A4A0A: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A4980 - - thumb_func_start sub_80A4A18 -sub_80A4A18: @ 80A4A18 - push {r4,r5,lr} - ldr r0, =gBattleAnimScriptPtr - ldr r2, [r0] - adds r1, r2, 0x1 - str r1, [r0] - ldrb r5, [r2, 0x1] - cmp r5, 0 - bne _080A4A30 - movs r5, 0x2 - b _080A4A3A - .pool -_080A4A30: - cmp r5, 0x1 - bne _080A4A36 - movs r5, 0x3 -_080A4A36: - cmp r5, 0 - beq _080A4A3E -_080A4A3A: - cmp r5, 0x2 - bne _080A4A48 -_080A4A3E: - ldr r0, =gAnimBankAttacker - b _080A4A4A - .pool -_080A4A48: - ldr r0, =gAnimBankTarget -_080A4A4A: - ldrb r4, [r0] - adds r0, r4, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A4A8A - adds r0, r4, 0 - bl GetBankIdentity - lsls r0, 24 - movs r1, 0xFF - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x1 - bls _080A4A76 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A4A80 -_080A4A76: - movs r1, 0 - b _080A4A82 - .pool -_080A4A80: - movs r1, 0x1 -_080A4A82: - adds r0, r4, 0 - movs r2, 0 - bl sub_80A438C -_080A4A8A: - movs r0, 0x2 - eors r4, r0 - cmp r5, 0x1 - bls _080A4ACA - adds r0, r4, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A4ACA - adds r0, r4, 0 - bl GetBankIdentity - lsls r0, 24 - movs r1, 0xFF - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x1 - bls _080A4ABC - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A4AC0 -_080A4ABC: - movs r1, 0 - b _080A4AC2 -_080A4AC0: - movs r1, 0x1 -_080A4AC2: - adds r0, r4, 0 - movs r2, 0 - bl sub_80A438C -_080A4ACA: - ldr r1, =gBattleAnimScriptPtr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A4A18 - - thumb_func_start ma23_8073484 -ma23_8073484: @ 80A4ADC - push {r4-r6,lr} - ldr r0, =gBattleAnimScriptPtr - ldr r2, [r0] - adds r1, r2, 0x1 - str r1, [r0] - ldrb r5, [r2, 0x1] - cmp r5, 0 - bne _080A4AF4 - movs r5, 0x2 - b _080A4AFE - .pool -_080A4AF4: - cmp r5, 0x1 - bne _080A4AFA - movs r5, 0x3 -_080A4AFA: - cmp r5, 0 - beq _080A4B02 -_080A4AFE: - cmp r5, 0x2 - bne _080A4B0C -_080A4B02: - ldr r0, =gAnimBankAttacker - b _080A4B0E - .pool -_080A4B0C: - ldr r0, =gAnimBankTarget -_080A4B0E: - ldrb r6, [r0] - adds r0, r6, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A4B38 - ldr r2, =gSprites - ldr r0, =gBankSpriteIds - adds r0, r6, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] -_080A4B38: - cmp r5, 0x1 - bls _080A4B78 - movs r0, 0x2 - adds r4, r6, 0 - eors r4, r0 - adds r0, r4, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A4B78 - ldr r2, =gSprites - ldr r0, =gBankSpriteIds - adds r0, r4, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - b _080A4B7A - .pool -_080A4B78: - movs r5, 0 -_080A4B7A: - ldr r0, =sub_80A4BB0 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r5, [r1, 0x8] - strh r6, [r1, 0xC] - ldr r1, =gBattleAnimScriptPtr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end ma23_8073484 - - thumb_func_start sub_80A4BB0 -sub_80A4BB0: @ 80A4BB0 - 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 r1, r0, r1 - ldrh r0, [r1, 0xA] - adds r0, 0x1 - strh r0, [r1, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - beq _080A4C3E - ldrb r4, [r1, 0xC] - adds r0, r4, 0 - bl GetBankIdentity - lsls r0, 24 - movs r1, 0xFF - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x1 - bls _080A4BEE - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A4BF8 -_080A4BEE: - movs r5, 0 - b _080A4BFA - .pool -_080A4BF8: - movs r5, 0x1 -_080A4BFA: - adds r0, r4, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A4C0C - adds r0, r5, 0 - bl sub_80A477C -_080A4C0C: - ldr r0, =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0x1 - ble _080A4C38 - movs r0, 0x2 - eors r4, r0 - adds r0, r4, 0 - bl IsAnimBankSpriteVisible - lsls r0, 24 - cmp r0, 0 - beq _080A4C38 - movs r0, 0x1 - eors r5, r0 - adds r0, r5, 0 - bl sub_80A477C -_080A4C38: - adds r0, r6, 0 - bl DestroyTask -_080A4C3E: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A4BB0 - - thumb_func_start ma0C_set_BLDCNT_to_x3F40_and_BLDALPHA_to_argument -ma0C_set_BLDCNT_to_x3F40_and_BLDALPHA_to_argument: @ 80A4C48 - push {r4,r5,lr} - ldr r2, =gBattleAnimScriptPtr - ldr r0, [r2] - adds r1, r0, 0x1 - str r1, [r2] - ldrb r5, [r0, 0x1] - adds r0, r1, 0x1 - str r0, [r2] - ldrb r4, [r1, 0x1] - lsls r4, 8 - adds r0, 0x1 - str r0, [r2] - movs r1, 0xFD - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - orrs r5, r4 - movs r0, 0x52 - adds r1, r5, 0 - bl SetGpuReg - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ma0C_set_BLDCNT_to_x3F40_and_BLDALPHA_to_argument - - thumb_func_start ma1E_set_BLDCNT -ma1E_set_BLDCNT: @ 80A4C80 - push {lr} - ldr r3, =gBattleAnimScriptPtr - ldr r0, [r3] - adds r2, r0, 0x1 - str r2, [r3] - ldrb r1, [r0, 0x1] - adds r0, r2, 0x1 - str r0, [r3] - ldrb r2, [r2, 0x1] - lsls r2, 8 - adds r0, 0x1 - str r0, [r3] - orrs r1, r2 - movs r0, 0x50 - bl SetGpuReg - pop {r0} - bx r0 - .pool - thumb_func_end ma1E_set_BLDCNT - - thumb_func_start ma0D_reset_BLDCNT_and_BLDALPHA -ma0D_reset_BLDCNT_and_BLDALPHA: @ 80A4CA8 - push {lr} - ldr r1, =gBattleAnimScriptPtr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - pop {r0} - bx r0 - .pool - thumb_func_end ma0D_reset_BLDCNT_and_BLDALPHA - - thumb_func_start ma0E_call -ma0E_call: @ 80A4CCC - push {r4,lr} - ldr r4, =gBattleAnimScriptPtr - ldr r1, [r4] - adds r3, r1, 0x1 - str r3, [r4] - ldr r2, =gBattleAnimScriptRetAddr - adds r0, r1, 0x5 - str r0, [r2] - ldrb r1, [r1, 0x1] - ldrb r0, [r3, 0x1] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0x2] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0x3] - lsls r0, 24 - adds r1, r0 - str r1, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ma0E_call - - thumb_func_start sub_80A4D00 -sub_80A4D00: @ 80A4D00 - ldr r0, =gBattleAnimScriptPtr - ldr r1, =gBattleAnimScriptRetAddr - ldr r1, [r1] - str r1, [r0] - bx lr - .pool - thumb_func_end sub_80A4D00 - - thumb_func_start ma10_080736AC -ma10_080736AC: @ 80A4D14 - push {r4,r5,lr} - ldr r5, =gBattleAnimScriptPtr - ldr r1, [r5] - adds r0, r1, 0x1 - str r0, [r5] - ldrb r2, [r1, 0x1] - adds r3, r0, 0x1 - str r3, [r5] - ldrb r4, [r0, 0x1] - ldrb r0, [r3, 0x1] - lsls r0, 8 - orrs r4, r0 - adds r1, 0x4 - str r1, [r5] - ldr r0, =gBattleAnimArgs - lsls r2, 1 - adds r2, r0 - strh r4, [r2] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ma10_080736AC - - thumb_func_start ma11_if_else -ma11_if_else: @ 80A4D48 - push {lr} - ldr r3, =gBattleAnimScriptPtr - ldr r2, [r3] - adds r0, r2, 0x1 - str r0, [r3] - ldr r0, =gUnknown_02038432 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080A4D62 - adds r0, r2, 0x5 - str r0, [r3] -_080A4D62: - ldr r2, [r3] - ldrb r1, [r2] - ldrb r0, [r2, 0x1] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x2] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 24 - adds r1, r0 - str r1, [r3] - pop {r0} - bx r0 - .pool - thumb_func_end ma11_if_else - - thumb_func_start ma12_cond_if -ma12_cond_if: @ 80A4D88 - push {r4,r5,lr} - ldr r5, =gBattleAnimScriptPtr - ldr r4, [r5] - adds r2, r4, 0x1 - str r2, [r5] - ldrb r1, [r4, 0x1] - adds r3, r2, 0x1 - str r3, [r5] - ldr r0, =gUnknown_02038432 - ldrb r0, [r0] - cmp r1, r0 - bne _080A4DC0 - ldrb r1, [r2, 0x1] - ldrb r0, [r3, 0x1] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r3, 0x2] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r3, 0x3] - lsls r0, 24 - adds r1, r0 - str r1, [r5] - b _080A4DC4 - .pool -_080A4DC0: - adds r0, r4, 0x6 - str r0, [r5] -_080A4DC4: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end ma12_cond_if - - thumb_func_start ma13_goto -ma13_goto: @ 80A4DCC - ldr r3, =gBattleAnimScriptPtr - ldr r0, [r3] - adds r2, r0, 0x1 - str r2, [r3] - ldrb r1, [r0, 0x1] - ldrb r0, [r2, 0x1] - lsls r0, 8 - adds r1, r0 - ldrb r0, [r2, 0x2] - lsls r0, 16 - adds r1, r0 - ldrb r0, [r2, 0x3] - lsls r0, 24 - adds r1, r0 - str r1, [r3] - bx lr - .pool - thumb_func_end ma13_goto - - thumb_func_start IsContest -IsContest: @ 80A4DF0 - push {lr} - ldr r0, =gMain - ldr r1, =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080A4E10 - movs r0, 0 - b _080A4E12 - .pool -_080A4E10: - movs r0, 0x1 -_080A4E12: - pop {r1} - bx r1 - thumb_func_end IsContest - - thumb_func_start ma14_load_background -ma14_load_background: @ 80A4E18 - push {r4,lr} - ldr r1, =gBattleAnimScriptPtr - ldr r2, [r1] - adds r0, r2, 0x1 - str r0, [r1] - ldrb r4, [r2, 0x1] - adds r0, 0x1 - str r0, [r1] - ldr r0, =task_p5_load_battle_screen_elements - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - ldr r1, =gUnknown_02038433 - movs r0, 0x1 - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ma14_load_background - - thumb_func_start sub_80A4E5C -sub_80A4E5C: @ 80A4E5C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r2, =gBattleAnimScriptPtr - ldr r1, [r2] - adds r0, r1, 0x1 - str r0, [r2] - ldrb r3, [r1, 0x1] - mov r8, r3 - ldrb r7, [r0, 0x1] - ldrb r6, [r0, 0x2] - adds r1, 0x4 - str r1, [r2] - ldr r0, =task_p5_load_battle_screen_elements - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A4EA8 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - strh r6, [r0, 0x8] - b _080A4EDA - .pool -_080A4EA8: - ldr r0, =gAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080A4ECC - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - strh r7, [r0, 0x8] - b _080A4EDA - .pool -_080A4ECC: - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - mov r1, r8 - strh r1, [r0, 0x8] -_080A4EDA: - ldr r1, =gUnknown_02038433 - movs r0, 0x1 - strb r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A4E5C - - thumb_func_start task_p5_load_battle_screen_elements -task_p5_load_battle_screen_elements: @ 80A4EF4 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r6, [r4, 0x1C] - movs r0, 0x1C - ldrsh r3, [r4, r0] - adds r7, r1, 0 - cmp r3, 0 - bne _080A4F2C - str r3, [sp] - movs r0, 0xE8 - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginHardwarePaletteFade - ldrh r0, [r4, 0x1C] - adds r0, 0x1 - strh r0, [r4, 0x1C] - b _080A4FBC - .pool -_080A4F2C: - ldr r2, =gPaletteFade - ldrb r1, [r2, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080A4FBC - cmp r3, 0x1 - bne _080A4F50 - adds r0, r6, 0x1 - strh r0, [r4, 0x1C] - ldr r1, =gUnknown_02038433 - movs r0, 0x2 - strb r0, [r1] - b _080A4F94 - .pool -_080A4F50: - cmp r3, 0x2 - bne _080A4F94 - ldrh r0, [r4, 0x8] - lsls r2, r0, 16 - asrs r1, r2, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080A4F68 - bl dp01t_11_3_message_for_player_only - b _080A4F6E -_080A4F68: - lsrs r0, r2, 16 - bl sub_80A4FC8 -_080A4F6E: - movs r0, 0x1 - str r0, [sp] - movs r0, 0xE8 - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginHardwarePaletteFade - ldr r1, =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x1C] - adds r1, 0x1 - strh r1, [r0, 0x1C] - b _080A4FBC - .pool -_080A4F94: - ldrb r1, [r2, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080A4FBC - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r7 - movs r1, 0x1C - ldrsh r0, [r0, r1] - cmp r0, 0x3 - bne _080A4FBC - adds r0, r5, 0 - bl DestroyTask - ldr r0, =gUnknown_02038433 - strb r4, [r0] -_080A4FBC: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end task_p5_load_battle_screen_elements - - thumb_func_start sub_80A4FC8 -sub_80A4FC8: @ 80A4FC8 - push {r4-r7,lr} - lsls r0, 16 - lsrs r7, r0, 16 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A5050 - ldr r6, =gUnknown_08525D54 - lsls r4, r7, 1 - adds r4, r7 - lsls r4, 2 - adds r0, r6, 0 - adds r0, 0x8 - adds r0, r4, r0 - ldr r0, [r0] - ldr r5, =0x0201c000 - adds r1, r5, 0 - bl LZDecompressWram - bl sub_80A6D94 - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 1 - adds r1, r5, 0 - movs r3, 0 - bl sub_80A4720 - ldr r1, =0x0600d000 - ldr r0, =0x040000d4 - str r5, [r0] - str r1, [r0, 0x4] - ldr r1, =0x84000200 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - adds r0, r4, r6 - ldr r0, [r0] - ldr r1, =0x06002000 - bl LZDecompressVram - adds r6, 0x4 - adds r4, r6 - ldr r4, [r4] - bl sub_80A6D94 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 20 - adds r0, r4, 0 - movs r2, 0x20 - bl LoadCompressedPalette - b _080A507E - .pool -_080A5050: - ldr r5, =gUnknown_08525D54 - lsls r4, r7, 1 - adds r4, r7 - lsls r4, 2 - adds r0, r5, 0 - adds r0, 0x8 - adds r0, r4, r0 - ldr r0, [r0] - ldr r1, =0x0600d000 - bl LZDecompressVram - adds r0, r4, r5 - ldr r0, [r0] - ldr r1, =0x06008000 - bl LZDecompressVram - adds r5, 0x4 - adds r4, r5 - ldr r0, [r4] - movs r1, 0x20 - movs r2, 0x20 - bl LoadCompressedPalette -_080A507E: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A4FC8 - - thumb_func_start dp01t_11_3_message_for_player_only -dp01t_11_3_message_for_player_only: @ 80A5090 - push {lr} - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A50A2 - bl sub_80D7724 - b _080A50A6 -_080A50A2: - bl load_battle_oval_graphics -_080A50A6: - pop {r0} - bx r0 - thumb_func_end dp01t_11_3_message_for_player_only - - thumb_func_start ma15_load_battle_screen_elements -ma15_load_battle_screen_elements: @ 80A50AC - push {lr} - ldr r1, =gBattleAnimScriptPtr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r0, =task_p5_load_battle_screen_elements - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, =0x0000ffff - strh r0, [r1, 0x8] - ldr r1, =gUnknown_02038433 - movs r0, 0x1 - strb r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end ma15_load_battle_screen_elements - thumb_func_start ma16_wait_for_battle_screen_elements_s2 -ma16_wait_for_battle_screen_elements_s2: @ 80A50F0 - push {lr} - ldr r0, =gUnknown_02038433 - ldrb r0, [r0] - cmp r0, 0x2 - bne _080A5114 - ldr r1, =gBattleAnimScriptPtr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r1, =gAnimFramesToWait - movs r0, 0 - b _080A5118 - .pool -_080A5114: - ldr r1, =gAnimFramesToWait - movs r0, 0x1 -_080A5118: - strb r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end ma16_wait_for_battle_screen_elements_s2 - - thumb_func_start sub_80A5124 -sub_80A5124: @ 80A5124 - push {lr} - ldr r0, =gUnknown_02038433 - ldrb r2, [r0] - cmp r2, 0 - bne _080A5148 - ldr r0, =gBattleAnimScriptPtr - ldr r1, [r0] - adds r1, 0x1 - str r1, [r0] - ldr r0, =gAnimFramesToWait - strb r2, [r0] - b _080A514E - .pool -_080A5148: - ldr r1, =gAnimFramesToWait - movs r0, 0x1 - strb r0, [r1] -_080A514E: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80A5124 - - thumb_func_start ma18_load_background_probably -ma18_load_background_probably: @ 80A5158 - push {r4,lr} - ldr r4, =gBattleAnimScriptPtr - ldr r1, [r4] - adds r0, r1, 0x1 - str r0, [r4] - ldrb r0, [r1, 0x1] - bl sub_80A4FC8 - ldr r0, [r4] - adds r0, 0x1 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ma18_load_background_probably - - thumb_func_start BattleAnimGetPanControl -BattleAnimGetPanControl: @ 80A5178 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A51C0 - ldr r0, =gBattleSpritesDataPtr - ldr r1, [r0] - ldr r0, =gAnimBankAttacker - ldrb r2, [r0] - ldr r1, [r1, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A51C0 - adds r0, r2, 0 - bl GetBankSide - lsls r0, 24 - movs r4, 0xC0 - cmp r0, 0 - beq _080A5252 - movs r4, 0x3F - b _080A5252 - .pool -_080A51C0: - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A51E8 - ldr r0, =gAnimBankAttacker - ldr r1, =gAnimBankTarget - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bne _080A524C - cmp r0, 0x2 - bne _080A524C - cmp r4, 0x3F - beq _080A525E - b _080A524C - .pool -_080A51E8: - ldr r0, =gAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080A5226 - ldr r0, =gAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080A5252 - lsls r0, r4, 24 - asrs r1, r0, 24 - cmp r1, 0x3F - bne _080A5218 - movs r4, 0xC0 - b _080A5252 - .pool -_080A5218: - movs r0, 0x40 - negs r0, r0 - cmp r1, r0 - beq _080A5252 - negs r0, r1 - lsls r0, 24 - b _080A5250 -_080A5226: - ldr r0, =gAnimBankTarget - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A524C - lsls r0, r4, 24 - asrs r0, 24 - movs r1, 0x40 - negs r1, r1 - cmp r0, r1 - bne _080A5252 - movs r4, 0x3F - b _080A5252 - .pool -_080A524C: - lsls r0, r4, 24 - negs r0, r0 -_080A5250: - lsrs r4, r0, 24 -_080A5252: - lsls r0, r4, 24 - asrs r0, 24 - cmp r0, 0x3F - ble _080A525E - movs r4, 0x3F - b _080A526C -_080A525E: - lsls r0, r4, 24 - asrs r0, 24 - movs r1, 0x40 - negs r1, r1 - cmp r0, r1 - bge _080A526C - movs r4, 0xC0 -_080A526C: - lsls r0, r4, 24 - asrs r0, 24 - pop {r4} - pop {r1} - bx r1 - thumb_func_end BattleAnimGetPanControl - - thumb_func_start sub_80A5278 -sub_80A5278: @ 80A5278 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080A52C0 - ldr r0, =gBattleSpritesDataPtr - ldr r1, [r0] - ldr r0, =gAnimBankAttacker - ldrb r2, [r0] - ldr r1, [r1, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080A52C0 - adds r0, r2, 0 - bl GetBankSide - lsls r0, 24 - movs r4, 0xC0 - cmp r0, 0 - beq _080A52DE - movs r4, 0x3F - b _080A52DE - .pool -_080A52C0: - ldr r0, =gAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _080A52D8 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080A52DE -_080A52D8: - lsls r0, r4, 24 - negs r0, r0 - lsrs r4, r0, 24 -_080A52DE: - lsls r0, r4, 24 - asrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80A5278 - - thumb_func_start sub_80A52EC -sub_80A52EC: @ 80A52EC - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - asrs r2, r0, 16 - cmp r2, 0x3F - ble _080A52FC - movs r1, 0x3F - b _080A5306 -_080A52FC: - movs r0, 0x40 - negs r0, r0 - cmp r2, r0 - bge _080A5306 - ldr r1, =0x0000ffc0 -_080A5306: - lsls r0, r1, 16 - asrs r0, 16 - pop {r1} - bx r1 - .pool - thumb_func_end sub_80A52EC - - thumb_func_start sub_80A5314 -sub_80A5314: @ 80A5314 - push {lr} - lsls r2, 16 - lsrs r2, 16 - adds r3, r2, 0 - lsls r0, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - cmp r0, r1 - bge _080A5332 - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0 - bge _080A5342 - b _080A5340 -_080A5332: - cmp r0, r1 - ble _080A5348 - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, 0 - bge _080A5340 - negs r0, r0 -_080A5340: - negs r0, r0 -_080A5342: - lsls r0, 16 - lsrs r0, 16 - b _080A534A -_080A5348: - movs r0, 0 -_080A534A: - lsls r0, 16 - asrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_80A5314 - - thumb_func_start ma19_08073BC8 -ma19_08073BC8: @ 80A5354 - push {r4,r5,lr} - ldr r5, =gBattleAnimScriptPtr - ldr r0, [r5] - adds r1, r0, 0x1 - str r1, [r5] - ldrb r4, [r0, 0x1] - ldrb r0, [r1, 0x1] - lsls r0, 8 - orrs r4, r0 - movs r0, 0x2 - ldrsb r0, [r1, r0] - bl BattleAnimGetPanControl - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - adds r0, r4, 0 - bl PlaySE12WithPanning - ldr r0, [r5] - adds r0, 0x3 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ma19_08073BC8 - - thumb_func_start ma1A_8073C00 -ma1A_8073C00: @ 80A538C - push {r4,lr} - ldr r4, =gBattleAnimScriptPtr - ldr r1, [r4] - adds r0, r1, 0x1 - str r0, [r4] - movs r0, 0x1 - ldrsb r0, [r1, r0] - bl BattleAnimGetPanControl - lsls r0, 24 - asrs r0, 24 - bl SE12PanpotControl - ldr r0, [r4] - adds r0, 0x1 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ma1A_8073C00 thumb_func_start ma1B_8073C2C ma1B_8073C2C: @ 80A53B8 @@ -1665,14 +32,14 @@ ma1B_8073C2C: @ 80A53B8 ldrb r7, [r1, 0x5] movs r0, 0x2 ldrsb r0, [r1, r0] - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 lsls r4, 24 asrs r4, 24 adds r0, r4, 0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning mov r8, r0 lsls r5, 24 asrs r5, 24 @@ -1898,14 +265,14 @@ sub_80A559C: @ 80A559C ldrb r7, [r1, 0x5] movs r0, 0x2 ldrsb r0, [r1, r0] - bl sub_80A5278 + bl BattleAnimAdjustPanning2 adds r6, r0, 0 lsls r6, 24 lsrs r6, 24 lsls r4, 24 asrs r4, 24 adds r0, r4, 0 - bl sub_80A5278 + bl BattleAnimAdjustPanning2 adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 @@ -1914,7 +281,7 @@ sub_80A559C: @ 80A559C asrs r1, 24 mov r8, r1 mov r0, r8 - bl sub_80A5278 + bl BattleAnimAdjustPanning2 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -1980,7 +347,7 @@ ma1C_8073ED0: @ 80A565C mov r9, r2 movs r0, 0x2 ldrsb r0, [r1, r0] - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 @@ -2085,7 +452,7 @@ ma1D_08073FB4: @ 80A5740 mov r8, r0 movs r0, 0x2 ldrsb r0, [r1, r0] - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s index 318f8061c..1556523e2 100644 --- a/asm/battle_anim_80FE840.s +++ b/asm/battle_anim_80FE840.s @@ -2640,7 +2640,7 @@ _080FFD56: cmp r0, 0 bne _080FFD8A movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -2658,7 +2658,7 @@ _080FFD8A: str r0, [r4, 0x1C] movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -5778,7 +5778,7 @@ _08101604: adds r0, r1 strh r0, [r5, 0x38] movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -5975,7 +5975,7 @@ _081017A4: movs r2, 0x4 bl LoadPalette movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -7213,7 +7213,7 @@ sub_810217C: @ 810217C strh r5, [r4, 0x34] strh r5, [r4, 0x36] subs r0, 0x42 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning lsls r0, 24 asrs r0, 24 strh r0, [r4, 0x38] @@ -10604,7 +10604,7 @@ _08103C90: strh r0, [r4, 0xA] movs r0, 0x3F negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -11235,7 +11235,7 @@ sub_810421C: @ 810421C push {r4,lr} adds r4, r0, 0 movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -12986,7 +12986,7 @@ sub_810501C: @ 810501C adds r0, 0x2 strh r0, [r4, 0x38] movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning lsls r0, 24 asrs r0, 24 strh r0, [r4, 0x3A] @@ -25228,12 +25228,12 @@ _0810B2DC: movs r0, 0xC strh r0, [r5, 0x1E] subs r0, 0x4C - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning lsls r0, 24 asrs r0, 24 strh r0, [r5, 0x20] movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning lsls r0, 24 asrs r0, 24 strh r0, [r5, 0x22] @@ -29951,7 +29951,7 @@ sub_810D984: @ 810D984 strh r0, [r5, 0x34] ldrh r0, [r1, 0x4] strh r0, [r5, 0x36] - ldr r0, =gUnknown_02038432 + ldr r0, =gAnimMoveTurn ldrb r6, [r0] ldrb r0, [r4] bl GetBankSide @@ -35110,7 +35110,7 @@ _081102B8: beq _08110360 movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -36713,13 +36713,13 @@ _0811101E: strh r4, [r6, 0x16] movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r4, r0, 0 lsls r4, 24 asrs r4, 8 lsrs r4, 16 movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning lsls r0, 24 strh r4, [r6, 0x22] asrs r0, 24 @@ -43629,7 +43629,7 @@ sub_8114960: @ 8114960 push {lr} lsls r0, 24 lsrs r3, r0, 24 - ldr r2, =gUnknown_02038432 + ldr r2, =gAnimMoveTurn ldrb r0, [r2] cmp r0, 0x1 bhi _08114974 @@ -48614,7 +48614,7 @@ _08117280: bne _081172CC movs r0, 0x40 negs r0, r0 - bl sub_80A5278 + bl BattleAnimAdjustPanning2 adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -48625,7 +48625,7 @@ _08117280: _081172CC: movs r0, 0x40 negs r0, r0 - bl sub_80A5278 + bl BattleAnimAdjustPanning2 adds r1, r0, 0 lsls r1, 24 asrs r1, 24 diff --git a/asm/battle_anim_815A0D4.s b/asm/battle_anim_815A0D4.s index 55c7037cd..45f207eb9 100755 --- a/asm/battle_anim_815A0D4.s +++ b/asm/battle_anim_815A0D4.s @@ -1349,7 +1349,7 @@ sub_815AB5C: @ 815AB5C bne _0815ABBA movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -2004,7 +2004,7 @@ _0815B0BC: lsrs r4, r0, 24 movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -3551,7 +3551,7 @@ _0815BD8E: strh r0, [r1, 0x8] movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -10271,7 +10271,7 @@ _0815F3CE: bne _0815F482 movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -10341,7 +10341,7 @@ _0815F460: bne _0815F482 movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -10431,7 +10431,7 @@ _0815F520: cmp r0, 0 blt _0815F61A movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -10460,7 +10460,7 @@ _0815F544: cmp r1, 0x7F ble _0815F61A movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -10502,7 +10502,7 @@ _0815F5B4: cmp r0, 0x8 ble _0815F61A movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -11557,7 +11557,7 @@ _0815FE92: cmp r1, r0 bne _0815FF2C movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 diff --git a/asm/battle_anim_sound_tasks.s b/asm/battle_anim_sound_tasks.s index 27b7a8013..817e64b07 100644 --- a/asm/battle_anim_sound_tasks.s +++ b/asm/battle_anim_sound_tasks.s @@ -22,12 +22,12 @@ sub_8158B30: @ 8158B30 strh r0, [r6, 0xA] movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r5, r0, 0 lsls r4, 24 asrs r4, 24 @@ -128,7 +128,7 @@ sub_8158C04: @ 8158C04 movs r0, 0 strh r0, [r4, 0x1C] movs r0, 0x3F - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 ldrh r0, [r4, 0xA] lsls r1, 24 @@ -175,14 +175,14 @@ mas_80DCF38: @ 8158C58 ldrb r0, [r0, 0x2] lsls r0, 24 asrs r0, 24 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 lsls r5, 24 asrs r5, 24 adds r0, r5, 0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r5, r0, 0 lsls r4, 24 asrs r4, 24 @@ -307,7 +307,7 @@ sub_8158D8C: @ 8158D8C movs r4, 0 movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning lsls r0, 24 lsrs r6, r0, 24 bl IsContest @@ -432,7 +432,7 @@ sub_8158E9C: @ 8158E9C movs r4, 0 movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning lsls r0, 24 lsrs r5, r0, 24 bl IsContest @@ -691,7 +691,7 @@ sub_81590B8: @ 81590B8 strh r1, [r0, 0x1C] movs r0, 0x40 negs r0, r0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning lsls r0, 24 lsrs r5, r0, 24 bl IsContest @@ -849,7 +849,7 @@ sub_8159210: @ 8159210 ldrb r0, [r0, 0x2] lsls r0, 24 asrs r0, 24 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -874,7 +874,7 @@ sub_8159244: @ 8159244 ldrb r0, [r0, 0x2] lsls r0, 24 asrs r0, 24 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r1, r0, 0 lsls r1, 24 asrs r1, 24 @@ -906,14 +906,14 @@ sub_8159278: @ 8159278 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 lsls r5, 24 asrs r5, 24 adds r0, r5, 0 - bl BattleAnimGetPanControl + bl BattleAnimAdjustPanning adds r5, r0, 0 lsls r4, 24 asrs r4, 24 diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s index 85794d9e8..ddc506b8c 100644 --- a/asm/battle_controller_linkopponent.s +++ b/asm/battle_controller_linkopponent.s @@ -4721,7 +4721,7 @@ _08066D32: ldrb r0, [r0] lsls r0, 8 orrs r6, r0 - ldr r0, =gUnknown_02038432 + ldr r0, =gAnimMoveTurn mov r8, r0 mov r0, r12 adds r0, 0x3 diff --git a/asm/battle_controller_linkpartner.s b/asm/battle_controller_linkpartner.s index 954abc779..acbc40a76 100644 --- a/asm/battle_controller_linkpartner.s +++ b/asm/battle_controller_linkpartner.s @@ -4030,7 +4030,7 @@ _0814D2CE: ldrb r0, [r0] lsls r0, 8 orrs r6, r0 - ldr r0, =gUnknown_02038432 + ldr r0, =gAnimMoveTurn mov r8, r0 mov r0, r12 adds r0, 0x3 diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s index c32ba8938..aef7dd7ec 100644 --- a/asm/battle_controller_opponent.s +++ b/asm/battle_controller_opponent.s @@ -4871,7 +4871,7 @@ _08061C8A: ldrb r1, [r1] lsls r1, 8 orrs r0, r1 - ldr r5, =gUnknown_02038432 + ldr r5, =gAnimMoveTurn mov r1, r12 adds r1, 0x3 adds r2, r1 diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s index a4dcf0a52..aaf4ec9ba 100644 --- a/asm/battle_controller_player.s +++ b/asm/battle_controller_player.s @@ -8134,7 +8134,7 @@ _0805BCBE: ldrb r0, [r0] lsls r0, 8 orrs r6, r0 - ldr r0, =gUnknown_02038432 + ldr r0, =gAnimMoveTurn mov r8, r0 mov r0, r12 adds r0, 0x3 diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s index 8da3eac54..90ceaf291 100644 --- a/asm/battle_controller_player_partner.s +++ b/asm/battle_controller_player_partner.s @@ -4652,7 +4652,7 @@ _081BD7A2: ldrb r1, [r1] lsls r1, 8 orrs r0, r1 - ldr r5, =gUnknown_02038432 + ldr r5, =gAnimMoveTurn mov r1, r12 adds r1, 0x3 adds r2, r1 diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s index b52aafcea..bdfe7e721 100644 --- a/asm/battle_controller_recorded_opponent.s +++ b/asm/battle_controller_recorded_opponent.s @@ -4408,7 +4408,7 @@ _08188BE6: ldrb r1, [r1] lsls r1, 8 orrs r0, r1 - ldr r5, =gUnknown_02038432 + ldr r5, =gAnimMoveTurn mov r1, r12 adds r1, 0x3 adds r2, r1 diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s index 6b2710b8e..9a1c7b9f9 100644 --- a/asm/battle_controller_recorded_player.s +++ b/asm/battle_controller_recorded_player.s @@ -4508,7 +4508,7 @@ _0818C192: ldrb r1, [r1] lsls r1, 8 orrs r0, r1 - ldr r5, =gUnknown_02038432 + ldr r5, =gAnimMoveTurn mov r1, r12 adds r1, 0x3 adds r2, r1 diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s index 2a45ccb3e..cf059a5ba 100644 --- a/asm/battle_controller_wally.s +++ b/asm/battle_controller_wally.s @@ -3316,7 +3316,7 @@ sub_816A144: @ 816A144 ldrb r1, [r1] lsls r1, 8 orrs r0, r1 - ldr r5, =gUnknown_02038432 + ldr r5, =gAnimMoveTurn mov r1, r12 adds r1, 0x3 adds r2, r1 diff --git a/asm/contest.s b/asm/contest.s index 51dc80176..480a5a664 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -76,8 +76,8 @@ sub_80D7678: @ 80D7678 .pool thumb_func_end sub_80D7678 - thumb_func_start sub_80D7724 -sub_80D7724: @ 80D7724 + thumb_func_start LoadContestBgAfterMoveAnim +LoadContestBgAfterMoveAnim: @ 80D7724 push {r4,r5,lr} ldr r0, =gUnknown_08C17AB0 movs r1, 0xC0 @@ -119,7 +119,7 @@ _080D775E: pop {r0} bx r0 .pool - thumb_func_end sub_80D7724 + thumb_func_end LoadContestBgAfterMoveAnim thumb_func_start sub_80D779C sub_80D779C: @ 80D779C @@ -13662,7 +13662,7 @@ _080DE8FA: cmp r0, 0x7 bne _080DE99C _080DE910: - ldr r1, =gUnknown_02038432 + ldr r1, =gAnimMoveTurn movs r0, 0 b _080DE9A0 .pool @@ -13715,12 +13715,12 @@ _080DE978: bne _080DE99C movs r0, 0x2 strb r0, [r2] - ldr r0, =gUnknown_02038432 + ldr r0, =gAnimMoveTurn strb r1, [r0] b _080DE9A2 .pool _080DE99C: - ldr r1, =gUnknown_02038432 + ldr r1, =gAnimMoveTurn movs r0, 0x1 _080DE9A0: strb r0, [r1] diff --git a/data/battle_anims.s b/data/battle_anims.s index 5cbdee7cf..39d5df006 100644 --- a/data/battle_anims.s +++ b/data/battle_anims.s @@ -902,7 +902,7 @@ gUnknown_08525CB4:: @ 8525CB4 obj_pal 0x08c1bf5c, 0x2830 .align 2 -gUnknown_08525D54:: @ 8525D54 +gBattleAnimBackgroundTable:: @ 8525D54 .4byte 0x08c1c844, 0x08c1ce3c, 0x08c1ce5c .4byte 0x08c1c844, 0x08c1ce3c, 0x08c1ce5c .4byte 0x08d90074, 0x08d90d3c, 0x08d90d58 @@ -944,33 +944,33 @@ sScriptCmdTable:: @ 8525E98 .4byte ScriptCmd_end .4byte ScriptCmd_playse .4byte ScriptCmd_monbg - .4byte ma0B_0807324C - .4byte ma0C_set_BLDCNT_to_x3F40_and_BLDALPHA_to_argument - .4byte ma0D_reset_BLDCNT_and_BLDALPHA - .4byte ma0E_call - .4byte sub_80A4D00 - .4byte ma10_080736AC - .4byte ma11_if_else - .4byte ma12_cond_if - .4byte ma13_goto - .4byte ma14_load_background - .4byte ma15_load_battle_screen_elements - .4byte ma16_wait_for_battle_screen_elements_s2 - .4byte sub_80A5124 - .4byte ma18_load_background_probably - .4byte ma19_08073BC8 - .4byte ma1A_8073C00 + .4byte ScriptCmd_clearmonbg + .4byte ScriptCmd_setalpha + .4byte ScriptCmd_blendoff + .4byte ScriptCmd_call + .4byte ScriptCmd_return + .4byte ScriptCmd_setarg + .4byte ScriptCmd_choosetwoturnanim + .4byte ScriptCmd_jumpifmoveturn + .4byte ScriptCmd_jump + .4byte ScriptCmd_fadetobg + .4byte ScriptCmd_restorebg + .4byte ScriptCmd_waitbgfadeout + .4byte ScriptCmd_waitbgfadein + .4byte ScriptCmd_changebg + .4byte ScriptCmd_playsewithpan + .4byte ScriptCmd_setpan .4byte ma1B_8073C2C .4byte ma1C_8073ED0 .4byte ma1D_08073FB4 - .4byte ma1E_set_BLDCNT + .4byte ScriptCmd_setbldcnt .4byte sub_80A57F8 .4byte ma20_wait_for_something .4byte ma21_08074164 - .4byte sub_80A4A18 - .4byte ma23_8073484 + .4byte ScriptCmd_monbg_22 + .4byte ScriptCmd_clearmonbg_23 .4byte sub_80A5944 - .4byte sub_80A4E5C + .4byte ScriptCmd_fadetobgfromset .4byte sub_80A5508 .4byte sub_80A559C .4byte sub_80A5984 diff --git a/include/battle.h b/include/battle.h index f00b7f9ab..a9243182e 100644 --- a/include/battle.h +++ b/include/battle.h @@ -826,6 +826,7 @@ void LoadBattleTextboxAndBackground(void); void LoadBattleEntryBackground(void); void ApplyPlayerChosenFrameToBattleMenu(void); bool8 LoadChosenBattleElement(u8 caseId); +void LoadFittingBackgroundForBattle(void); void task00_0800F6FC(u8 taskId); // battle_5 @@ -890,6 +891,8 @@ struct BattleHealthboxInfo u8 flag_x1 : 1; u8 flag_x2 : 1; u8 flag_x4 : 1; + u8 flag_x8 : 1; + u8 flag_x10 : 1; u8 field_1; u8 field_2; u8 field_3; diff --git a/include/battle_anim.h b/include/battle_anim.h index 8ba25f9c5..86eb20aec 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -30,6 +30,13 @@ struct UnknownAnimStruct2 u16 unkC; }; +struct BattleAnimBackground +{ + void *image; + void *palette; + void *tilemap; +}; + void ClearBattleAnimationVars(void); void DoMoveAnim(u16 move); void DoBattleAnim(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim); @@ -38,8 +45,11 @@ void DestroyAnimVisualTask(u8 taskId); void DestroyAnimSoundTask(u8 taskId); bool8 IsAnimBankSpriteVisible(u8 bank); void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible); - bool8 IsContest(void); +s8 BattleAnimAdjustPanning(s8 pan); +s8 BattleAnimAdjustPanning2(s8 pan); +s16 sub_80A52EC(s16 a); +s16 sub_80A5314(s16 a, s16 b, s16 c); // battle_anim_80FE840.s void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value); diff --git a/include/contest.h b/include/contest.h index 7635e7358..7dcde7da2 100644 --- a/include/contest.h +++ b/include/contest.h @@ -36,5 +36,6 @@ struct ContestResources extern struct ContestResources *gContestResources; bool8 IsSpeciesNotUnown(u16 species); +void LoadContestBgAfterMoveAnim(void); #endif //GUARD_CONTEST_H diff --git a/src/battle_anim.c b/src/battle_anim.c index 6c316157f..7a2b7902c 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -13,13 +13,18 @@ #include "bg.h" #include "gpu_regs.h" #include "palette.h" +#include "main.h" // sprites start at 10000 and thus must be subtracted of 10000 to account for the true index. #define GET_TRUE_SPRITE_INDEX(i) ((i - 10000)) + #define SCRIPT_READ_32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24) -#define SCRIPT_READ_32_(ptr) (((ptr)[0]) + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) #define SCRIPT_READ_16(ptr) ((ptr)[0] | ((ptr)[1] << 8)) +#define SCRIPT_READ_PTR(ptr) ((const u8*)(SCRIPT_READ_32(ptr))) + #define SCRIPT_READ_16_(ptr) ((ptr)[0] + ((ptr)[1] << 8)) +#define SCRIPT_READ_32_(ptr) (((ptr)[0]) + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) +#define SCRIPT_READ_PTR_(ptr) ((const u8*)(SCRIPT_READ_32_(ptr))) #define ANIM_SPRITE_INDEX_COUNT 8 #define ANIM_ARGS_COUNT 8 @@ -56,7 +61,7 @@ EWRAM_DATA u16 gWeatherMoveAnim = 0; EWRAM_DATA s16 gBattleAnimArgs[ANIM_ARGS_COUNT] = {0}; EWRAM_DATA u16 gSoundAnimFramesToWait = 0; EWRAM_DATA u8 gMonAnimTaskIdArray[2] = {0}; -EWRAM_DATA u8 gUnknown_02038432 = 0; +EWRAM_DATA u8 gAnimMoveTurn = 0; EWRAM_DATA u8 gUnknown_02038433 = 0; EWRAM_DATA u16 gAnimMoveIndex = 0; // set but unused. EWRAM_DATA u8 gAnimBankAttacker = 0; @@ -69,6 +74,7 @@ extern const u16 gUnknown_082C8D64[]; extern const u8 * const gBattleAnims_Moves[]; extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; +extern const struct BattleAnimBackground gBattleAnimBackgroundTable[]; extern void sub_80A8278(void); // rom_80A5C6C.s extern void sub_80A6B30(struct UnknownAnimStruct2*); // rom_80A5C6C.s @@ -76,11 +82,18 @@ extern void sub_80A6B90(struct UnknownAnimStruct2*, u32 arg1); // rom_80A5C6C.s extern u8 sub_80A82E4(u8 bank); // rom_80A5C6C.s extern u8 sub_80A5C6C(u8 bank, u8 attributeId); // rom_80A5C6C.s extern bool8 AnimBankSpriteExists(u8 bank); // rom_80A5C6C.s +extern void sub_80A6C68(u8 arg0); // rom_80A5C6C.s +extern u8 sub_80A6D94(void); // this file's functions void RunAnimScriptCommand(void); void task_pA_ma0A_obj_to_bg_pal(u8 taskId); void sub_80A46A0(void); +void sub_80A4980(u8 taskId); +void sub_80A4BB0(u8 taskId); +void Task_FadeToBg(u8 taskId); +void LoadDefaultBg(void); +void LoadMoveBg(u16 bgId); void ClearBattleAnimationVars(void) { @@ -105,7 +118,7 @@ void ClearBattleAnimationVars(void) gMonAnimTaskIdArray[0] = 0xFF; gMonAnimTaskIdArray[1] = 0xFF; - gUnknown_02038432 = 0; + gAnimMoveTurn = 0; gUnknown_02038433 = 0; gAnimMoveIndex = 0; gAnimBankAttacker = 0; @@ -648,3 +661,624 @@ void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible) } } +/*static*/ void sub_80A46A0(void) +{ + s32 i, j; + struct UnknownAnimStruct2 unknownStruct; + u16 *ptr; + + if (IsSpeciesNotUnown(gContestResources->field_18->field_0)) + { + sub_80A6B30(&unknownStruct); + ptr = unknownStruct.unk4; + for (i = 0; i < 8; i++) + { + for (j = 0; j < 4; j++) + { + u16 temp = ptr[j + i * 32]; + + ptr[j + i * 32] = ptr[7 - j + i * 32]; + ptr[7 - j + i * 32] = temp; + } + } + for (i = 0; i < 8; i++) + { + for (j = 0; j < 8; j++) + ptr[j + i * 32] ^= 0x400; + } + } +} + +void sub_80A4720(u16 a, u16 *b, u32 c, u8 d) +{ + s32 i, j; + s32 var; + + if (d == 0) + var = 32; + else + var = 64; + a <<= 12; + for (i = 0; i < var; i++) + { + for (j = 0; j < 32; j++) + b[j + i * 32] = ((b[j + i * 32] & 0xFFF) | a) + c; + } +} + +void sub_80A477C(bool8 to_BG2) +{ + struct UnknownAnimStruct2 unknownStruct; + sub_80A6B30(&unknownStruct); + + if (!to_BG2 || IsContest()) + { + sub_80A6C68(1); + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + } + else + { + sub_80A6C68(2); + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + } +} + +/*static*/ void task_pA_ma0A_obj_to_bg_pal(u8 taskId) +{ + u8 r4; + u8 r6; + s16 r3; + s16 r2; + struct UnknownAnimStruct2 unknownStruct; + + r4 = gTasks[taskId].data[0]; + r6 = gTasks[taskId].data[6]; + sub_80A6B30(&unknownStruct); + r3 = gTasks[taskId].data[1] - (gSprites[r4].pos1.x + gSprites[r4].pos2.x); + r2 = gTasks[taskId].data[2] - (gSprites[r4].pos1.y + gSprites[r4].pos2.y); + + if (gTasks[taskId].data[5] == 0) + { + u16 *src; + u16 *dst; + + gBattle_BG1_X = r3 + gTasks[taskId].data[3]; + gBattle_BG1_Y = r2 + gTasks[taskId].data[4]; + src = gPlttBufferFaded + 0x100 + r6 * 16; + dst = gPlttBufferFaded + 0x100 + unknownStruct.unk8 * 16 - 256; + CpuCopy32(src, dst, 0x20); + } + else + { + u16 *src; + u16 *dst; + + gBattle_BG2_X = r3 + gTasks[taskId].data[3]; + gBattle_BG2_Y = r2 + gTasks[taskId].data[4]; + src = gPlttBufferFaded + 0x100 + r6 * 16; + dst = gPlttBufferFaded + 0x100 - 112; + CpuCopy32(src, dst, 0x20); + } +} + +/*static*/ void ScriptCmd_clearmonbg(void) +{ + u8 animBankId; + u8 bank; + u8 taskId; + + gBattleAnimScriptPtr++; + animBankId = gBattleAnimScriptPtr[0]; + + if (animBankId == ANIM_BANK_ATTACKER) + animBankId = ANIM_BANK_ATK_PARTNER; + else if (animBankId == ANIM_BANK_TARGET) + animBankId = ANIM_BANK_DEF_PARTNER; + + if (animBankId == ANIM_BANK_ATTACKER || animBankId == ANIM_BANK_ATK_PARTNER) + bank = gAnimBankAttacker; + else + bank = gAnimBankTarget; + + if (gMonAnimTaskIdArray[0] != 0xFF) + gSprites[gBankSpriteIds[bank]].invisible = 0; + if (animBankId > 1 && gMonAnimTaskIdArray[1] != 0xFF) + gSprites[gBankSpriteIds[bank ^ BIT_MON]].invisible = 0; + else + animBankId = 0; + + taskId = CreateTask(sub_80A4980, 5); + gTasks[taskId].data[0] = animBankId; + gTasks[taskId].data[2] = bank; + + gBattleAnimScriptPtr++; +} + +/*static*/ void sub_80A4980(u8 taskId) +{ + gTasks[taskId].data[1]++; + if (gTasks[taskId].data[1] != 1) + { + u8 to_BG2; + u8 identity = GetBankIdentity(gTasks[taskId].data[2]); + if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest()) + to_BG2 = FALSE; + else + to_BG2 = TRUE; + + if (gMonAnimTaskIdArray[0] != 0xFF) + { + sub_80A477C(to_BG2); + DestroyTask(gMonAnimTaskIdArray[0]); + gMonAnimTaskIdArray[0] = 0xFF; + } + if (gTasks[taskId].data[0] > 1) + { + sub_80A477C(to_BG2 ^ 1); + DestroyTask(gMonAnimTaskIdArray[1]); + gMonAnimTaskIdArray[1] = 0xFF; + } + DestroyTask(taskId); + } +} + +/*static*/ void ScriptCmd_monbg_22(void) +{ + bool8 toBG_2; + u8 bank; + u8 animBankId; + + gBattleAnimScriptPtr++; + + animBankId = gBattleAnimScriptPtr[0]; + + if (animBankId == ANIM_BANK_ATTACKER) + animBankId = ANIM_BANK_ATK_PARTNER; + else if (animBankId == ANIM_BANK_TARGET) + animBankId = ANIM_BANK_DEF_PARTNER; + + if (animBankId == ANIM_BANK_ATTACKER || animBankId == ANIM_BANK_ATK_PARTNER) + bank = gAnimBankAttacker; + else + bank = gAnimBankTarget; + + if (IsAnimBankSpriteVisible(bank)) + { + u8 identity = GetBankIdentity(bank); + if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest()) + toBG_2 = FALSE; + else + toBG_2 = TRUE; + + sub_80A438C(bank, toBG_2, FALSE); + } + + bank ^= BIT_MON; + if (animBankId > 1 && IsAnimBankSpriteVisible(bank)) + { + u8 identity = GetBankIdentity(bank); + if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest()) + toBG_2 = FALSE; + else + toBG_2 = TRUE; + + sub_80A438C(bank, toBG_2, FALSE); + } + + gBattleAnimScriptPtr++; +} + +/*static*/ void ScriptCmd_clearmonbg_23(void) +{ + u8 animBankId; + u8 bank; + u8 taskId; + + gBattleAnimScriptPtr++; + animBankId = gBattleAnimScriptPtr[0]; + + if (animBankId == ANIM_BANK_ATTACKER) + animBankId = ANIM_BANK_ATK_PARTNER; + else if (animBankId == ANIM_BANK_TARGET) + animBankId = ANIM_BANK_DEF_PARTNER; + + if (animBankId == ANIM_BANK_ATTACKER || animBankId == ANIM_BANK_ATK_PARTNER) + bank = gAnimBankAttacker; + else + bank = gAnimBankTarget; + + if (IsAnimBankSpriteVisible(bank)) + gSprites[gBankSpriteIds[bank]].invisible = 0; + if (animBankId > 1 && IsAnimBankSpriteVisible(bank ^ BIT_MON)) + gSprites[gBankSpriteIds[bank ^ BIT_MON]].invisible = 0; + else + animBankId = 0; + + taskId = CreateTask(sub_80A4BB0, 5); + gTasks[taskId].data[0] = animBankId; + gTasks[taskId].data[2] = bank; + + gBattleAnimScriptPtr++; +} + +/*static*/ void sub_80A4BB0(u8 taskId) +{ + gTasks[taskId].data[1]++; + if (gTasks[taskId].data[1] != 1) + { + bool8 toBG_2; + u8 bank = gTasks[taskId].data[2]; + u8 identity = GetBankIdentity(bank); + if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest()) + toBG_2 = FALSE; + else + toBG_2 = TRUE; + + if (IsAnimBankSpriteVisible(bank)) + sub_80A477C(toBG_2); + if (gTasks[taskId].data[0] > 1 && IsAnimBankSpriteVisible(bank ^ BIT_MON)) + sub_80A477C(toBG_2 ^ 1); + + DestroyTask(taskId); + } +} + +#undef t1_MONBG_BANK +#undef t1_MON_IN_BG2 +#undef t1_CREATE_ANOTHER_TASK +#undef t1_IS_SECONDMON_BG + +#undef t2_BANK_SPRITE_ID +#undef t2_MON_IN_BG2 +#undef t2_MONBG_BANK + +/*static*/ void ScriptCmd_setalpha(void) +{ + u16 half1, half2; + + gBattleAnimScriptPtr++; + half1 = *(gBattleAnimScriptPtr++); + half2 = *(gBattleAnimScriptPtr++) << 8; + SetGpuReg(REG_OFFSET_BLDCNT, 0x3F40); + SetGpuReg(REG_OFFSET_BLDALPHA, half1 | half2); +} + +/*static*/ void ScriptCmd_setbldcnt(void) +{ + u16 half1, half2; + + gBattleAnimScriptPtr++; + half1 = *(gBattleAnimScriptPtr++); + half2 = *(gBattleAnimScriptPtr++) << 8; + SetGpuReg(REG_OFFSET_BLDCNT, half1 | half2); +} + +/*static*/ void ScriptCmd_blendoff(void) +{ + gBattleAnimScriptPtr++; + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); +} + +/*static*/ void ScriptCmd_call(void) +{ + gBattleAnimScriptPtr++; + gBattleAnimScriptRetAddr = gBattleAnimScriptPtr + 4; + gBattleAnimScriptPtr = SCRIPT_READ_PTR_(gBattleAnimScriptPtr); +} + +/*static*/ void ScriptCmd_return(void) +{ + gBattleAnimScriptPtr = gBattleAnimScriptRetAddr; +} + +/*static*/ void ScriptCmd_setarg(void) +{ + const u8 *addr = gBattleAnimScriptPtr; + u16 value; + u8 argId; + + gBattleAnimScriptPtr++; + argId = gBattleAnimScriptPtr[0]; + gBattleAnimScriptPtr++; + value = SCRIPT_READ_16(gBattleAnimScriptPtr); + gBattleAnimScriptPtr = addr + 4; + gBattleAnimArgs[argId] = value; +} + +/*static*/ void ScriptCmd_choosetwoturnanim(void) +{ + gBattleAnimScriptPtr++; + if (gAnimMoveTurn & 1) + gBattleAnimScriptPtr += 4; + gBattleAnimScriptPtr = SCRIPT_READ_PTR_(gBattleAnimScriptPtr); +} + +/*static*/ void ScriptCmd_jumpifmoveturn(void) +{ + u8 toCheck; + gBattleAnimScriptPtr++; + toCheck = gBattleAnimScriptPtr[0]; + gBattleAnimScriptPtr++; + + if (toCheck == gAnimMoveTurn) + gBattleAnimScriptPtr = SCRIPT_READ_PTR_(gBattleAnimScriptPtr); + else + gBattleAnimScriptPtr += 4; +} + +/*static*/ void ScriptCmd_jump(void) +{ + gBattleAnimScriptPtr++; + gBattleAnimScriptPtr = SCRIPT_READ_PTR_(gBattleAnimScriptPtr); +} + +// Uses of this function that rely on a TRUE return are expecting inBattle to not be ticked as defined in contest behavior. As a result, if misused, this function cannot reliably discern between field and contest status and could result in undefined behavior. +bool8 IsContest(void) +{ + if (!gMain.inBattle) + return TRUE; + else + return FALSE; +} + +#define tBackgroundId data[0] +#define tState data[10] + +/*static*/ void ScriptCmd_fadetobg(void) +{ + u8 backgroundId; + u8 taskId; + + gBattleAnimScriptPtr++; + backgroundId = gBattleAnimScriptPtr[0]; + gBattleAnimScriptPtr++; + taskId = CreateTask(Task_FadeToBg, 5); + gTasks[taskId].tBackgroundId = backgroundId; + gUnknown_02038433 = 1; +} + +/*static*/ void ScriptCmd_fadetobgfromset(void) +{ + u8 bg1, bg2, bg3; + u8 taskId; + + gBattleAnimScriptPtr++; + bg1 = gBattleAnimScriptPtr[0]; + bg2 = gBattleAnimScriptPtr[1]; + bg3 = gBattleAnimScriptPtr[2]; + gBattleAnimScriptPtr += 3; + taskId = CreateTask(Task_FadeToBg, 5); + + if (IsContest()) + gTasks[taskId].tBackgroundId = bg3; + else if (GetBankSide(gAnimBankTarget) == SIDE_PLAYER) + gTasks[taskId].tBackgroundId = bg2; + else + gTasks[taskId].tBackgroundId = bg1; + + gUnknown_02038433 = 1; +} + +/*static*/ void Task_FadeToBg(u8 taskId) +{ + if (gTasks[taskId].tState == 0) + { + BeginHardwarePaletteFade(0xE8, 0, 0, 16, 0); + gTasks[taskId].tState++; + return; + } + if (gPaletteFade.active) + return; + if (gTasks[taskId].tState == 1) + { + gTasks[taskId].tState++; + gUnknown_02038433 = 2; + } + else if (gTasks[taskId].tState == 2) + { + s16 bgId = (u16)gTasks[taskId].tBackgroundId; + + if (bgId == -1) + LoadDefaultBg(); + else + LoadMoveBg(bgId); + + BeginHardwarePaletteFade(0xE8, 0, 16, 0, 1); + gTasks[taskId].tState++; + return; + } + if (gPaletteFade.active) + return; + if (gTasks[taskId].tState == 3) + { + DestroyTask(taskId); + gUnknown_02038433 = 0; + } +} + +extern u8 gDecompressionBuffer[]; + +/*static*/ void LoadMoveBg(u16 bgId) +{ + if (IsContest()) + { + void *tilemap = gBattleAnimBackgroundTable[bgId].tilemap; + void *dmaSrc; + void *dmaDest; + + LZDecompressWram(tilemap, gDecompressionBuffer); + sub_80A4720(sub_80A6D94(), (void*)(gDecompressionBuffer), 0x100, 0); + dmaSrc = gDecompressionBuffer; + dmaDest = (void *)(VRAM + 0xD000); + DmaCopy32(3, dmaSrc, dmaDest, 0x800); + LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(VRAM + 0x2000)); + LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, sub_80A6D94() * 16, 32); + } + else + { + LZDecompressVram(gBattleAnimBackgroundTable[bgId].tilemap, (void *)(VRAM + 0xD000)); + LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(VRAM + 0x8000)); + LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, 32, 32); + } +} + +/*static*/ void LoadDefaultBg(void) +{ + if (IsContest()) + LoadContestBgAfterMoveAnim(); + else + LoadFittingBackgroundForBattle(); +} + +/*static*/ void ScriptCmd_restorebg(void) +{ + u8 taskId; + + gBattleAnimScriptPtr++; + taskId = CreateTask(Task_FadeToBg, 5); + gTasks[taskId].data[0] = 0xFFFF; + gUnknown_02038433 = 1; +} + +/*static*/ void ScriptCmd_waitbgfadeout(void) +{ + if (gUnknown_02038433 == 2) + { + gBattleAnimScriptPtr++; + gAnimFramesToWait = 0; + } + else + { + gAnimFramesToWait = 1; + } +} + +/*static*/ void ScriptCmd_waitbgfadein(void) +{ + if (gUnknown_02038433 == 0) + { + gBattleAnimScriptPtr++; + gAnimFramesToWait = 0; + } + else + { + gAnimFramesToWait = 1; + } +} + +/*static*/ void ScriptCmd_changebg(void) +{ + gBattleAnimScriptPtr++; + LoadMoveBg(gBattleAnimScriptPtr[0]); + gBattleAnimScriptPtr++; +} + +s8 BattleAnimAdjustPanning(s8 pan) +{ + if (!IsContest() && gBattleSpritesDataPtr->healthBoxesData[gAnimBankAttacker].flag_x10) + { + if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) + pan = 63; + else + pan = -64; + } + else if (IsContest()) + { + if (gAnimBankAttacker != gAnimBankTarget || gAnimBankAttacker != 2 || pan != 63) + pan *= -1; + } + else if (GetBankSide(gAnimBankAttacker) == SIDE_PLAYER) + { + if (GetBankSide(gAnimBankTarget) == SIDE_PLAYER) + { + if (pan == 63) + pan = -64; + else if (pan != -64) + pan *= -1; + } + } + else if (GetBankSide(gAnimBankTarget) == SIDE_OPPONENT) + { + if (pan == -64) + pan = 63; + } + else + { + pan *= -1; + } + + if (pan > 63) + pan = 63; + else if (pan < -64) + pan = -64; + + return pan; +} + +s8 BattleAnimAdjustPanning2(s8 pan) +{ + if (!IsContest() && gBattleSpritesDataPtr->healthBoxesData[gAnimBankAttacker].flag_x10) + { + if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) + pan = 63; + else + pan = -64; + } + else + { + if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER || IsContest()) + pan = -pan; + } + return pan; +} + +s16 sub_80A52EC(s16 a) +{ + s16 var = a; + + if (var > 63) + var = 63; + else if (var < -64) + var = -64; + + return var; +} + +s16 sub_80A5314(s16 a, s16 b, s16 c) +{ + u16 var; + + if (a < b) + var = ((c < 0) ? -c : c); + else if (a > b) + var = -((c < 0) ? -c : c); + else + var = 0; + + return var; +} + +/*static*/ void ScriptCmd_playsewithpan(void) +{ + u16 songId; + s8 pan; + + gBattleAnimScriptPtr++; + songId = SCRIPT_READ_16(gBattleAnimScriptPtr); + pan = gBattleAnimScriptPtr[2]; + PlaySE12WithPanning(songId, BattleAnimAdjustPanning(pan)); + gBattleAnimScriptPtr += 3; +} + +/*static*/ void ScriptCmd_setpan(void) +{ + s8 pan; + + gBattleAnimScriptPtr++; + pan = gBattleAnimScriptPtr[0]; + SE12PanpotControl(BattleAnimAdjustPanning(pan)); + gBattleAnimScriptPtr++; +} |