diff options
author | U-User-PC\User <golemgalvanize@github.com> | 2017-09-01 21:27:14 -0400 |
---|---|---|
committer | U-User-PC\User <golemgalvanize@github.com> | 2017-09-01 21:27:14 -0400 |
commit | f4045ad07a96bebaf5108873857752f3560a4af5 (patch) | |
tree | 939437d036a595baece795d64e0aa9a4ca7bdadb | |
parent | d7fb151b926ad85b61e268c473e80a49bc3ea516 (diff) |
decompiled up to sub_80D2100
-rw-r--r-- | asm/battle_anim_80CA710.s | 1266 | ||||
-rwxr-xr-x | src/battle_anim_80CA710.c | 516 |
2 files changed, 515 insertions, 1267 deletions
diff --git a/asm/battle_anim_80CA710.s b/asm/battle_anim_80CA710.s index 49e391911..7696d8075 100644 --- a/asm/battle_anim_80CA710.s +++ b/asm/battle_anim_80CA710.s @@ -6,1272 +6,6 @@ .text - thumb_func_start sub_80D1808 -sub_80D1808: @ 80D1808 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080D185C @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r2, [r4, r0] - cmp r2, 0 - bne _080D18CE - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x10 - ldrsh r1, [r4, r3] - cmp r0, r1 - ble _080D18CE - strh r2, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080D1864 - ldr r3, _080D1860 @ =gSprites - movs r6, 0x26 - ldrsh r1, [r4, r6] - 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 - b _080D187A - .align 2, 0 -_080D185C: .4byte gTasks -_080D1860: .4byte gSprites -_080D1864: - ldr r3, _080D18AC @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 -_080D187A: - strb r1, [r0] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - movs r2, 0 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r6, 0x22 - ldrsh r1, [r4, r6] - cmp r0, r1 - blt _080D18CE - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - movs r6, 0x24 - ldrsh r1, [r4, r6] - cmp r0, r1 - bge _080D18B0 - strh r2, [r4, 0xA] - strh r2, [r4, 0xC] - strh r2, [r4, 0xE] - b _080D18CE - .align 2, 0 -_080D18AC: .4byte gSprites -_080D18B0: - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - adds r0, r5, 0 - bl DestroyAnimVisualTask -_080D18CE: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80D1808 - - thumb_func_start sub_80D18D4 -sub_80D18D4: @ 80D18D4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080D1924 @ =gTasks - adds r4, r0 - movs r0, 0 - strh r0, [r4, 0x8] - movs r1, 0x4 - strh r1, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - strh r0, [r4, 0x10] - strh r0, [r4, 0x12] - strh r0, [r4, 0x14] - strh r0, [r4, 0x16] - strh r0, [r4, 0x18] - strh r0, [r4, 0x22] - ldr r5, _080D1928 @ =gBattleAnimPlayerMonIndex - ldrb r0, [r5] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x24] - ldrb r0, [r5] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x26] - ldr r0, _080D192C @ =sub_80D1930 - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D1924: .4byte gTasks -_080D1928: .4byte gBattleAnimPlayerMonIndex -_080D192C: .4byte sub_80D1930 - thumb_func_end sub_80D18D4 - - thumb_func_start sub_80D1930 -sub_80D1930: @ 80D1930 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080D1954 @ =gTasks - adds r4, r0, r1 - movs r0, 0x18 - ldrsh r2, [r4, r0] - cmp r2, 0x1 - beq _080D199C - cmp r2, 0x1 - bgt _080D1958 - cmp r2, 0 - beq _080D195E - b _080D19B8 - .align 2, 0 -_080D1954: .4byte gTasks -_080D1958: - cmp r2, 0x2 - beq _080D19B4 - b _080D19B8 -_080D195E: - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080D19B8 - strh r2, [r4, 0x10] - ldrh r0, [r4, 0x12] - adds r0, 0x1 - movs r1, 0x1 - ands r0, r1 - strh r0, [r4, 0x12] - ldrh r0, [r4, 0x14] - adds r0, 0x1 - strh r0, [r4, 0x14] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080D19B8 - movs r1, 0x16 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D1996 - strh r2, [r4, 0x14] - movs r0, 0x1 - strh r0, [r4, 0x18] - b _080D19B8 -_080D1996: - movs r0, 0x2 - strh r0, [r4, 0x18] - b _080D19B8 -_080D199C: - movs r1, 0 - strh r1, [r4, 0x12] - ldrh r0, [r4, 0x10] - adds r0, 0x1 - strh r0, [r4, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080D19B8 - strh r2, [r4, 0x16] - strh r1, [r4, 0x18] - b _080D19B8 -_080D19B4: - movs r0, 0x1 - strh r0, [r4, 0x12] -_080D19B8: - movs r2, 0x8 - ldrsh r5, [r4, r2] - cmp r5, 0 - beq _080D19C6 - cmp r5, 0x1 - beq _080D1A5C - b _080D1A6A -_080D19C6: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _080D1A6A - strh r5, [r4, 0xA] - ldr r0, _080D1A50 @ =gSpriteTemplate_83D79E8 - movs r3, 0x24 - ldrsh r1, [r4, r3] - movs r3, 0x26 - ldrsh r2, [r4, r3] - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _080D1A6A - ldr r0, _080D1A54 @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - strh r6, [r1, 0x2E] - movs r0, 0xD - strh r0, [r1, 0x30] - ldr r2, _080D1A58 @ =gUnknown_083D7A00 - movs r3, 0xC - ldrsh r0, [r4, r3] - lsls r0, 1 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - strh r0, [r1, 0x24] - movs r3, 0xC - ldrsh r0, [r4, r3] - lsls r0, 1 - adds r2, 0x1 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - strh r0, [r1, 0x26] - ldrh r0, [r4, 0x22] - adds r0, 0x1 - strh r0, [r4, 0x22] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080D1A6A - strh r5, [r4, 0xC] - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080D1A6A - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080D1A6A - .align 2, 0 -_080D1A50: .4byte gSpriteTemplate_83D79E8 -_080D1A54: .4byte gSprites -_080D1A58: .4byte gUnknown_083D7A00 -_080D1A5C: - movs r1, 0x22 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D1A6A - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080D1A6A: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80D1930 - - thumb_func_start sub_80D1A70 -sub_80D1A70: @ 80D1A70 - push {r4,lr} - adds r3, r0, 0 - ldr r4, _080D1AD8 @ =gTasks - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r4 - movs r1, 0x3E - adds r1, r3 - mov r12, r1 - movs r2, 0x1 - ldrb r1, [r0, 0x12] - ands r1, r2 - lsls r1, 2 - mov r0, r12 - ldrb r2, [r0] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - adds r0, r3, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080D1AD2 - movs r0, 0x30 - ldrsh r1, [r3, r0] - lsls r1, 1 - movs r0, 0x2E - ldrsh r2, [r3, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r0, r4, 0 - adds r0, 0x8 - adds r1, r0 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r3, 0 - bl DestroySprite -_080D1AD2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D1AD8: .4byte gTasks - thumb_func_end sub_80D1A70 - - thumb_func_start sub_80D1ADC -sub_80D1ADC: @ 80D1ADC - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080D1B34 @ =0x000027de - bl IndexOfSpritePaletteTag - mov r1, sp - strb r0, [r1] - movs r5, 0x1 - ldr r0, _080D1B38 @ =0x00002710 - adds r4, r0, 0 -_080D1AF4: - subs r0, r4, r5 - lsls r0, 16 - lsrs r0, 16 - bl AllocSpritePalette - mov r2, sp - adds r1, r2, r5 - strb r0, [r1] - adds r5, 0x1 - cmp r5, 0x4 - ble _080D1AF4 - ldr r4, _080D1B3C @ =gBattleAnimSpritePalette_206 - bl IsContest - lsls r0, 24 - ldr r1, _080D1B40 @ =0x02018000 - cmp r0, 0 - beq _080D1B1C - ldr r0, _080D1B44 @ =0xffffc800 - adds r1, r0 -_080D1B1C: - adds r0, r4, 0 - bl sub_800D238 - movs r5, 0 -_080D1B24: - lsls r4, r5, 5 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080D1B4C - ldr r0, _080D1B48 @ =0x02014800 - b _080D1B4E - .align 2, 0 -_080D1B34: .4byte 0x000027de -_080D1B38: .4byte 0x00002710 -_080D1B3C: .4byte gBattleAnimSpritePalette_206 -_080D1B40: .4byte 0x02018000 -_080D1B44: .4byte 0xffffc800 -_080D1B48: .4byte 0x02014800 -_080D1B4C: - ldr r0, _080D1B7C @ =0x02018000 -_080D1B4E: - adds r2, r4, r0 - mov r1, sp - adds r0, r1, r5 - ldrb r1, [r0] - lsls r1, 20 - movs r0, 0x80 - lsls r0, 17 - adds r1, r0 - lsrs r1, 16 - adds r0, r2, 0 - movs r2, 0x20 - bl LoadPalette - adds r5, 0x1 - cmp r5, 0x4 - ble _080D1B24 - adds r0, r6, 0 - bl DestroyAnimVisualTask - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D1B7C: .4byte 0x02018000 - thumb_func_end sub_80D1ADC - - thumb_func_start sub_80D1B80 -sub_80D1B80: @ 80D1B80 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, _080D1BA4 @ =gUnknown_083D7A5C - movs r4, 0x4 -_080D1B8A: - ldrh r0, [r5] - bl FreeSpritePaletteByTag - adds r5, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080D1B8A - adds r0, r6, 0 - bl DestroyAnimVisualTask - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D1BA4: .4byte gUnknown_083D7A5C - thumb_func_end sub_80D1B80 - - thumb_func_start sub_80D1BA8 -sub_80D1BA8: @ 80D1BA8 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - lsls r2, 24 - lsrs r3, r2, 24 - movs r0, 0x1 - ands r3, r0 - negs r0, r3 - orrs r0, r3 - asrs r0, 31 - movs r3, 0x20 - ands r0, r3 - ldrh r4, [r5, 0x4] - lsls r3, r4, 22 - lsrs r3, 22 - lsrs r1, 22 - adds r0, r1 - adds r3, r0 - ldr r1, _080D1BFC @ =0x000003ff - adds r0, r1, 0 - ands r3, r0 - ldr r0, _080D1C00 @ =0xfffffc00 - ands r0, r4 - orrs r0, r3 - strh r0, [r5, 0x4] - ldr r0, _080D1C04 @ =gUnknown_083D7A5C - lsrs r2, 25 - lsls r2, 1 - adds r2, r0 - ldrh r0, [r2] - bl IndexOfSpritePaletteTag - lsls r0, 4 - ldrb r2, [r5, 0x5] - movs r1, 0xF - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D1BFC: .4byte 0x000003ff -_080D1C00: .4byte 0xfffffc00 -_080D1C04: .4byte gUnknown_083D7A5C - thumb_func_end sub_80D1BA8 - - thumb_func_start sub_80D1C08 -sub_80D1C08: @ 80D1C08 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0 - bl sub_80787B0 - ldr r6, _080D1C70 @ =gBattleAnimPlayerMonIndex - ldrb r0, [r6] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D1C28 - ldr r1, _080D1C74 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - strh r0, [r1, 0x4] -_080D1C28: - ldr r4, _080D1C74 @ =gBattleAnimArgs - ldrh r0, [r4, 0x8] - strh r0, [r5, 0x2E] - ldrb r0, [r6] - movs r1, 0 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x4] - adds r0, r1 - strh r0, [r5, 0x32] - ldrb r0, [r6] - movs r1, 0x1 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x6] - adds r0, r1 - strh r0, [r5, 0x36] - ldr r0, _080D1C78 @ =sub_8078B34 - str r0, [r5, 0x1C] - ldr r1, _080D1C7C @ =move_anim_8072740 - adds r0, r5, 0 - bl oamt_set_x3A_32 - ldrb r1, [r4, 0xA] - ldrb r2, [r4, 0xC] - adds r0, r5, 0 - bl sub_80D1BA8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D1C70: .4byte gBattleAnimPlayerMonIndex -_080D1C74: .4byte gBattleAnimArgs -_080D1C78: .4byte sub_8078B34 -_080D1C7C: .4byte move_anim_8072740 - thumb_func_end sub_80D1C08 - - thumb_func_start sub_80D1C80 -sub_80D1C80: @ 80D1C80 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080D1C9A - adds r0, r4, 0 - movs r1, 0 - bl sub_80787B0 -_080D1C9A: - movs r1, 0x30 - ldrsh r0, [r4, r1] - movs r1, 0x8 - bl Sin - strh r0, [r4, 0x24] - ldrh r2, [r4, 0x32] - lsls r0, r2, 16 - asrs r0, 24 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x7 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x30] - subs r2, 0x80 - strh r2, [r4, 0x32] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x3C - bne _080D1CCA - adds r0, r4, 0 - bl move_anim_8072740 -_080D1CCA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D1C80 - - thumb_func_start sub_80D1CD0 -sub_80D1CD0: @ 80D1CD0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsContest - lsls r0, 24 - movs r2, 0xF0 - cmp r0, 0 - beq _080D1CE4 - movs r2, 0x98 -_080D1CE4: - movs r3, 0 - ldr r0, _080D1D2C @ =gUnknown_030042C4 - strh r2, [r0] - ldr r0, _080D1D30 @ =gUnknown_03004240 - movs r1, 0xA0 - strh r1, [r0] - ldr r0, _080D1D34 @ =REG_WIN0H - strh r2, [r0] - adds r0, 0x4 - strh r1, [r0] - ldr r1, _080D1D38 @ =REG_WININ - ldr r5, _080D1D3C @ =0x00003f1f - adds r0, r5, 0 - strh r0, [r1] - adds r1, 0x2 - adds r5, 0x20 - adds r0, r5, 0 - strh r0, [r1] - adds r1, 0x6 - movs r0, 0xC8 - strh r0, [r1] - adds r1, 0x4 - movs r0, 0x10 - strh r0, [r1] - ldr r1, _080D1D40 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - strh r3, [r0, 0x8] - strh r2, [r0, 0xA] - ldr r1, _080D1D44 @ =sub_80D1D48 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D1D2C: .4byte gUnknown_030042C4 -_080D1D30: .4byte gUnknown_03004240 -_080D1D34: .4byte REG_WIN0H -_080D1D38: .4byte REG_WININ -_080D1D3C: .4byte 0x00003f1f -_080D1D40: .4byte gTasks -_080D1D44: .4byte sub_80D1D48 - thumb_func_end sub_80D1CD0 - - thumb_func_start sub_80D1D48 -sub_80D1D48: @ 80D1D48 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080D1D7C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r3, r1, r2 - ldrh r0, [r3, 0x8] - adds r4, r0, 0 - adds r4, 0xD - strh r4, [r3, 0x8] - ldrh r0, [r3, 0xA] - adds r2, r0, 0 - subs r2, 0xD - strh r2, [r3, 0xA] - lsls r1, r4, 16 - lsls r0, r2, 16 - cmp r1, r0 - blt _080D1D88 - ldr r0, _080D1D80 @ =gUnknown_030042C4 - movs r1, 0 - strh r1, [r0] - ldr r0, _080D1D84 @ =sub_80D1D9C - str r0, [r3] - b _080D1D90 - .align 2, 0 -_080D1D7C: .4byte gTasks -_080D1D80: .4byte gUnknown_030042C4 -_080D1D84: .4byte sub_80D1D9C -_080D1D88: - ldr r1, _080D1D98 @ =gUnknown_030042C4 - lsls r0, r4, 8 - orrs r2, r0 - strh r2, [r1] -_080D1D90: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D1D98: .4byte gUnknown_030042C4 - thumb_func_end sub_80D1D48 - - thumb_func_start sub_80D1D9C -sub_80D1D9C: @ 80D1D9C - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - adds r2, r0, 0 - ldr r5, _080D1DEC @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r3, r0, 3 - adds r1, r3, r5 - ldrh r0, [r1, 0x1C] - adds r0, 0x1 - movs r4, 0 - strh r0, [r1, 0x1C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _080D1DF8 - movs r0, 0x88 - strh r0, [r1, 0x1E] - adds r0, r5, r3 - adds r0, 0x1E - ldr r1, _080D1DF0 @ =REG_BLDCNT - movs r2, 0x2 - bl RequestSpriteCopy - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_80791A8 - ldr r2, _080D1DF4 @ =0x00007fff - movs r1, 0x10 - bl BlendPalettes - b _080D1E1E - .align 2, 0 -_080D1DEC: .4byte gTasks -_080D1DF0: .4byte REG_BLDCNT -_080D1DF4: .4byte 0x00007fff -_080D1DF8: - cmp r0, 0x4 - ble _080D1E1E - ldr r0, _080D1E28 @ =gUnknown_030042C4 - strh r4, [r0] - ldr r0, _080D1E2C @ =gUnknown_03004240 - strh r4, [r0] - ldr r0, _080D1E30 @ =REG_WININ - ldr r3, _080D1E34 @ =0x00003f3f - adds r1, r3, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x6 - strh r4, [r0] - adds r0, 0x4 - strh r4, [r0] - adds r0, r2, 0 - bl DestroyAnimVisualTask -_080D1E1E: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D1E28: .4byte gUnknown_030042C4 -_080D1E2C: .4byte gUnknown_03004240 -_080D1E30: .4byte REG_WININ -_080D1E34: .4byte 0x00003f3f - thumb_func_end sub_80D1D9C - - thumb_func_start sub_80D1E38 -sub_80D1E38: @ 80D1E38 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - movs r0, 0x1 - bl obj_id_for_side_relative_to_move - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080D1E88 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080D1E94 - movs r0, 0x1 - bl obj_id_for_side_relative_to_move - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080D1E8C @ =gUnknown_083D7A98 - adds r0, r5, 0 - bl sub_80798F4 - ldr r1, _080D1E90 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - movs r1, 0x4 - strh r1, [r0, 0x24] - b _080D1EBC - .align 2, 0 -_080D1E88: .4byte gTasks -_080D1E8C: .4byte gUnknown_083D7A98 -_080D1E90: .4byte gSprites -_080D1E94: - ldr r1, _080D1EC4 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r4, r0, r1 - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] - adds r0, r5, 0 - bl sub_807992C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080D1EBC - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080D1EBC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D1EC4: .4byte gSprites - thumb_func_end sub_80D1E38 - - thumb_func_start sub_80D1EC8 -sub_80D1EC8: @ 80D1EC8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - movs r0, 0 - bl obj_id_for_side_relative_to_move - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080D1F18 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _080D1F24 - movs r0, 0 - bl obj_id_for_side_relative_to_move - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _080D1F1C @ =gUnknown_083D7A98 - adds r0, r5, 0 - bl sub_80798F4 - ldr r1, _080D1F20 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - movs r1, 0x4 - strh r1, [r0, 0x24] - b _080D1F4C - .align 2, 0 -_080D1F18: .4byte gTasks -_080D1F1C: .4byte gUnknown_083D7A98 -_080D1F20: .4byte gSprites -_080D1F24: - ldr r1, _080D1F54 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r4, r0, r1 - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] - adds r0, r5, 0 - bl sub_807992C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080D1F4C - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - adds r0, r6, 0 - bl DestroyAnimVisualTask -_080D1F4C: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080D1F54: .4byte gSprites - thumb_func_end sub_80D1EC8 - - thumb_func_start sub_80D1F58 -sub_80D1F58: @ 80D1F58 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - movs r0, 0x5F - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - ldr r5, _080D1F9C @ =gBattleAnimEnemyMonIndex - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r0, _080D1FA0 @ =sub_80D1FA4 - str r0, [r4, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D1F9C: .4byte gBattleAnimEnemyMonIndex -_080D1FA0: .4byte sub_80D1FA4 - thumb_func_end sub_80D1F58 - - thumb_func_start sub_80D1FA4 -sub_80D1FA4: @ 80D1FA4 - push {r4,lr} - adds r4, r0, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - bne _080D1FCE - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r1, 0xE - bl Sin - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - adds r0, 0x4 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x38] - b _080D1FD4 -_080D1FCE: - adds r0, r4, 0 - bl move_anim_8072740 -_080D1FD4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D1FA4 - - thumb_func_start sub_80D1FDC -sub_80D1FDC: @ 80D1FDC - push {r4,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D2000 - ldr r1, _080D1FFC @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x30] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x32] - adds r0, r2, 0x1 - strh r0, [r4, 0x2E] - b _080D205C - .align 2, 0 -_080D1FFC: .4byte gBattleAnimArgs -_080D2000: - ldrh r0, [r4, 0x30] - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 24 - strh r0, [r4, 0x24] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - cmp r0, 0x64 - ble _080D204E - movs r0, 0x34 - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080D204E: - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x78 - ble _080D205C - adds r0, r4, 0 - bl move_anim_8072740 -_080D205C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D1FDC - - thumb_func_start sub_80D2064 -sub_80D2064: @ 80D2064 - push {lr} - ldr r2, _080D2088 @ =gBattleAnimArgs - ldrh r1, [r2] - strh r1, [r0, 0x20] - movs r1, 0xA0 - strh r1, [r0, 0x22] - ldrh r1, [r2, 0x4] - strh r1, [r0, 0x2E] - ldrh r1, [r2, 0x2] - strh r1, [r0, 0x30] - ldr r1, _080D208C @ =sub_80782D8 - str r1, [r0, 0x1C] - ldr r1, _080D2090 @ =sub_80D2094 - bl oamt_set_x3A_32 - pop {r0} - bx r0 - .align 2, 0 -_080D2088: .4byte gBattleAnimArgs -_080D208C: .4byte sub_80782D8 -_080D2090: .4byte sub_80D2094 - thumb_func_end sub_80D2064 - - thumb_func_start sub_80D2094 -sub_80D2094: @ 80D2094 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] - lsls r0, 16 - lsrs r0, 24 - negs r0, r0 - strh r0, [r4, 0x26] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r1, 0x4 - bl Sin - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x34] - adds r0, 0x3 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - ldrh r0, [r4, 0x26] - ldrh r1, [r4, 0x22] - adds r0, r1 - lsls r0, 16 - asrs r5, r0, 16 - cmp r5, 0x48 - bgt _080D20FA - movs r0, 0x34 - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - cmp r5, 0x40 - bgt _080D20FA - adds r0, r4, 0 - bl move_anim_8072740 -_080D20FA: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80D2094 - - thumb_func_start sub_80D2100 -sub_80D2100: @ 80D2100 - push {r4,r5,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080D21BC @ =REG_BLDCNT - ldr r2, _080D21C0 @ =0x00003f42 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r2, 0x80 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r4, _080D21C4 @ =REG_BG1CNT - ldrb r0, [r4] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r4] - ldrb r1, [r4, 0x1] - movs r0, 0x3F - ands r0, r1 - strb r0, [r4, 0x1] - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080D2144 - ldrb r0, [r4] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4] -_080D2144: - ldr r0, _080D21C8 @ =gUnknown_030042C0 - movs r1, 0 - strh r1, [r0] - ldr r0, _080D21CC @ =gUnknown_030041B4 - strh r1, [r0] - ldr r0, _080D21D0 @ =REG_BG1HOFS - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - mov r0, sp - bl sub_8078914 - ldr r1, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0xC] - ldr r2, _080D21D4 @ =0x040000d4 - add r0, sp, 0xC - str r0, [r2] - str r1, [r2, 0x4] - ldr r0, _080D21D8 @ =0x85000400 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - ldr r0, _080D21DC @ =gAttractTilemap - bl LZDecompressVram - ldr r0, _080D21E0 @ =gAttractGfx - ldr r1, [sp] - bl LZDecompressVram - ldr r0, _080D21E4 @ =gAttractPal - mov r1, sp - ldrb r1, [r1, 0x8] - lsls r1, 4 - movs r2, 0x20 - bl LoadCompressedPalette - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080D21A4 - mov r0, sp - ldrb r0, [r0, 0x8] - ldr r1, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_80763FC -_080D21A4: - ldr r0, _080D21E8 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080D21EC @ =sub_80D21F0 - str r0, [r1] - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D21BC: .4byte REG_BLDCNT -_080D21C0: .4byte 0x00003f42 -_080D21C4: .4byte REG_BG1CNT -_080D21C8: .4byte gUnknown_030042C0 -_080D21CC: .4byte gUnknown_030041B4 -_080D21D0: .4byte REG_BG1HOFS -_080D21D4: .4byte 0x040000d4 -_080D21D8: .4byte 0x85000400 -_080D21DC: .4byte gAttractTilemap -_080D21E0: .4byte gAttractGfx -_080D21E4: .4byte gAttractPal -_080D21E8: .4byte gTasks -_080D21EC: .4byte sub_80D21F0 - thumb_func_end sub_80D2100 - thumb_func_start sub_80D21F0 sub_80D21F0: @ 80D21F0 push {r4-r7,lr} diff --git a/src/battle_anim_80CA710.c b/src/battle_anim_80CA710.c index b3d3ba410..f8982613b 100755 --- a/src/battle_anim_80CA710.c +++ b/src/battle_anim_80CA710.c @@ -46,6 +46,13 @@ struct UnknownStruct6 u16 unk780[0xA0]; }; +struct Struct_sub_8078914 +{ + u8 *field_0; + u8 *field_4; + u8 field_8; +}; + extern u8 gBanksBySide[]; extern s16 gBattleAnimArgs[8]; extern u8 gBattleAnimPlayerMonIndex; @@ -54,12 +61,18 @@ extern struct SpriteTemplate gSpriteTemplate_83D631C; extern struct SpriteTemplate gSpriteTemplate_83D6884; extern struct SpriteTemplate gSpriteTemplate_83D74BC; extern struct SpriteTemplate gSpriteTemplate_83D75AC; +extern struct SpriteTemplate gSpriteTemplate_83D79E8; extern struct SpriteTemplate gBattleAnimSpriteTemplate_83D6FC8; extern struct SpriteTemplate gBattleAnimSpriteTemplate_83D6FF8; extern struct AffineAnimFrameCmd gUnknown_083D76F4; extern struct AffineAnimFrameCmd gUnknown_083D7714; extern struct AffineAnimFrameCmd gUnknown_083D77B0; extern struct AffineAnimFrameCmd gUnknown_083D79BC; +extern struct AffineAnimFrameCmd gUnknown_083D7A98; +extern struct INCBIN_U8 gBattleAnimSpritePalette_206; +extern struct INCBIN_U8 gAttractTilemap; +extern struct INCBIN_U8 gAttractGfx; +extern struct INCBIN_U8 gAttractPal; extern s16 gUnknown_03000728[]; extern s8 gUnknown_083D680C[11][3]; extern u16 gUnknown_083D6984[]; @@ -71,6 +84,11 @@ extern u16 gUnknown_083D712C[4][6]; extern u16 gBattleTypeFlags; extern u16 gUnknown_030042C0; extern u16 gUnknown_03004288; +extern u16 gUnknown_030042C4; +extern u16 gUnknown_03004240; +extern u16 gUnknown_030041B4; +extern s8 gUnknown_083D7A00[4][2]; +extern u16 gUnknown_083D7A5C[5]; extern struct UnknownStruct6 gUnknown_03004DE0; extern struct UnknownStruct_1 gUnknown_03004DC0; @@ -158,6 +176,9 @@ void sub_80D14C4(struct Sprite* sprite); void sub_80D1504(struct Sprite* sprite); void sub_80D154C(struct Sprite* sprite); void sub_80D158C(struct Sprite* sprite); +void sub_80D1FA4(struct Sprite* sprite); +void sub_80D2094(struct Sprite* sprite); + s16 sub_80CC338(struct Sprite* sprite); @@ -201,6 +222,7 @@ void sub_80798F4(struct Task *task, u8 a2, void *a3); bool8 sub_807992C(struct Task *task); u8 sub_8077FC0(u8 slot); void sub_80895F8(struct UnknownStruct_2 unk); +void sub_80763FC(u16 a, u16 *b, u32 c, u8 d); void move_anim_8074EE0(struct Sprite *sprite); bool8 sub_8078718(struct Sprite *sprite); @@ -224,6 +246,11 @@ void sub_80D0D68(u8 taskId); void sub_80D15E0(u8 taskId); void sub_80D16A0(u8 taskId); void sub_80D1808(u8 taskId); +void sub_80D1930(u8 taskId); +void sub_80D1D48(u8 taskId); +void sub_80D1D9C(u8 taskId); +void sub_80D21F0(u8 taskId); + void sub_80CC358(struct Task* task, u8 taskId); void sub_80D0614(struct Task* task, u8 taskId); @@ -5913,4 +5940,491 @@ void sub_80D17C4(u8 taskId) task->data[14] = 2; task->data[15] = obj_id_for_side_relative_to_move(0); task->func = sub_80D1808; -}
\ No newline at end of file +} + +void sub_80D1808(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + if (task->data[0] == 0 && ++task->data[1] > task->data[4]) + { + task->data[1] = 0; + if (++task->data[2] & 1) + gSprites[task->data[15]].invisible = 0; + else + gSprites[task->data[15]].invisible = 1; + if (++task->data[3] >= task->data[13]) + { + if (++task->data[4] < task->data[14]) + { + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + } + else + { + gSprites[task->data[15]].invisible = 0; + DestroyAnimVisualTask(taskId); + } + } + } +} + +void sub_80D18D4(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + task->data[0] = 0; + task->data[1] = 4; + task->data[2] = 0; + task->data[3] = 0; + task->data[4] = 0; + task->data[5] = 0; + task->data[6] = 0; + task->data[7] = 0; + task->data[8] = 0; + task->data[13] = 0; + task->data[14] = sub_8077ABC(gBattleAnimPlayerMonIndex, 0); + task->data[15] = sub_8077ABC(gBattleAnimPlayerMonIndex, 1); + task->func = sub_80D1930; +} + +void sub_80D1930(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + switch (task->data[8]) + { + case 0: + if (++task->data[4] > 1) + { + task->data[4] = 0; + task->data[5] = (task->data[5] + 1) & 1; + if (++task->data[6] > 20) + { + if (task->data[7] == 0) + { + task->data[6] = 0; + task->data[8] = 1; + } + else + task->data[8] = 2; + } + } + break; + case 1: + task->data[5] = 0; + if (++task->data[4] > 20) + { + task->data[7] = 1; + task->data[8] = 0; + } + break; + case 2: + task->data[5] = 1; + break; + } + switch (task->data[0]) + { + case 0: + if (++task->data[1] > 4) + { + u8 spriteId; + task->data[1] = 0; + spriteId = CreateSprite(&gSpriteTemplate_83D79E8, task->data[14], task->data[15], 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data0 = taskId; + gSprites[spriteId].data1 = 13; + gSprites[spriteId].pos2.x = gUnknown_083D7A00[task->data[2]][0]; + gSprites[spriteId].pos2.y = gUnknown_083D7A00[task->data[2]][1]; + task->data[13]++; + if (++task->data[2] > 3) + { + task->data[2] = 0; + if (++task->data[3] > 5) + task->data[0]++; + } + } + } + break; + case 1: + if (task->data[13] == 0) + DestroyAnimVisualTask(taskId); + break; + } +} + +#ifdef NONMATCHING +void sub_80D1A70(struct Sprite* sprite) +{ + sprite->invisible = (bool8)(gTasks[sprite->data0].data[5] & 1); + if (sprite->animEnded) + { + gTasks[sprite->data0].data[sprite->data1]--; + DestroySprite(sprite); + } +} +#else +__attribute__((naked)) +void sub_80D1A70(struct Sprite* sprite) +{ + asm(".syntax unified\n\ + push {r4,lr}\n\ + adds r3, r0, 0\n\ + ldr r4, _080D1AD8 @ =gTasks\n\ + movs r0, 0x2E\n\ + ldrsh r1, [r3, r0]\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 3\n\ + adds r0, r4\n\ + movs r1, 0x3E\n\ + adds r1, r3\n\ + mov r12, r1\n\ + movs r2, 0x1\n\ + ldrb r1, [r0, 0x12]\n\ + ands r1, r2\n\ + lsls r1, 2\n\ + mov r0, r12\n\ + ldrb r2, [r0]\n\ + movs r0, 0x5\n\ + negs r0, r0\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + mov r1, r12\n\ + strb r0, [r1]\n\ + adds r0, r3, 0\n\ + adds r0, 0x3F\n\ + ldrb r1, [r0]\n\ + movs r0, 0x10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080D1AD2\n\ + movs r0, 0x30\n\ + ldrsh r1, [r3, r0]\n\ + lsls r1, 1\n\ + movs r0, 0x2E\n\ + ldrsh r2, [r3, r0]\n\ + lsls r0, r2, 2\n\ + adds r0, r2\n\ + lsls r0, 3\n\ + adds r1, r0\n\ + adds r0, r4, 0\n\ + adds r0, 0x8\n\ + adds r1, r0\n\ + ldrh r0, [r1]\n\ + subs r0, 0x1\n\ + strh r0, [r1]\n\ + adds r0, r3, 0\n\ + bl DestroySprite\n\ +_080D1AD2:\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080D1AD8: .4byte gTasks\n\ + .syntax divided\n"); +} +#endif + +void sub_80D1ADC(u8 taskId) +{ + int i; + u8 sp[8]; + void* src; + void* dest; + void* what; + sp[0] = IndexOfSpritePaletteTag(0x27DE); + for (i = 1; i <= 4; i++) + sp[i] = AllocSpritePalette(0x2710 - i); + src = &gBattleAnimSpritePalette_206; + dest = (IsContest()) ? ewram + 0x18000 - 0x3800: ewram + 0x18000; + sub_800D238(src, dest); + for (i = 0; i <= 4; i++) + { + what = ((IsContest()) ? ewram + 0x14800 : ewram + 0x18000) + (i << 5); + LoadPalette(what, (u16)((sp[i] << 4) + 0x100), 32); + } + DestroyAnimVisualTask(taskId); +} + +void sub_80D1B80(u8 taskId) +{ + int i; + for (i = 0; i < 5; i++) + FreeSpritePaletteByTag(gUnknown_083D7A5C[i]); + DestroyAnimVisualTask(taskId); +} + +void sub_80D1BA8(struct Sprite* sprite, u8 a, u8 b) +{ + u8 tile; + tile = (b & 1); + tile = ((-tile | tile) >> 31) & 32; + sprite->oam.tileNum += tile + (a << 2); + sprite->oam.paletteNum = IndexOfSpritePaletteTag(gUnknown_083D7A5C[b >> 1]); +} + +void sub_80D1C08(struct Sprite* sprite) +{ + sub_80787B0(sprite, 0); + if (GetBankSide(gBattleAnimPlayerMonIndex) != 0) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + sprite->data0 = gBattleAnimArgs[4]; + sprite->data2 = sub_8077ABC(gBattleAnimPlayerMonIndex, 0) + gBattleAnimArgs[2]; + sprite->data4 = sub_8077ABC(gBattleAnimPlayerMonIndex, 1) + gBattleAnimArgs[3]; + sprite->callback = sub_8078B34; + oamt_set_x3A_32(sprite, move_anim_8072740); + sub_80D1BA8(sprite, gBattleAnimArgs[5], gBattleAnimArgs[6]); +} + +void sub_80D1C80(struct Sprite* sprite) +{ + if (++sprite->data0 == 1) + sub_80787B0(sprite, 0); + sprite->pos2.x = Sin(sprite->data1, 8); + sprite->pos2.y = sprite->data2 >> 8; + sprite->data1 = (sprite->data1 + 7) & 0xFF; + sprite->data2 -= 0x80; + if (sprite->data0 == 0x3C) + move_anim_8072740(sprite); +} + +void sub_80D1CD0(u8 taskId) +{ + int zero; + bool8 result = IsContest(); + u16 var = 0xF0; + if (result) + { + var = 0x98; + zero = 0; + } + else + zero = 0; + gUnknown_030042C4 = var; + gUnknown_03004240 = 0xA0; + REG_WIN0H = var; + REG_WIN0V = 0xA0; + REG_WININ = 0x3F1F; + REG_WINOUT = 0x3F3F; + REG_BLDCNT = 0xC8; + REG_BLDY = 0x10; + gTasks[taskId].data[0] = zero; + gTasks[taskId].data[1] = var; + gTasks[taskId].func = sub_80D1D48; +} + +void sub_80D1D48(u8 taskId) +{ + gTasks[taskId].data[0] += 13; + gTasks[taskId].data[1] -= 13; + if (gTasks[taskId].data[0] >= gTasks[taskId].data[1]) + { + gUnknown_030042C4 = 0; + gTasks[taskId].func = sub_80D1D9C; + } + else + gUnknown_030042C4 = gTasks[taskId].data[1] | (gTasks[taskId].data[0] << 8); +} + +void sub_80D1D9C(u8 taskId) +{ + if (++gTasks[taskId].data[10] == 5) + { + gTasks[taskId].data[11] = 0x88; + RequestSpriteCopy((u8 *)(&gTasks[taskId].data[11]), (u8 *)(®_BLDCNT), 2); + BlendPalettes(sub_80791A8(1, 0, 0, 0, 0, 0, 0), 16, RGB(31, 31, 31)); + } + else if (gTasks[taskId].data[10] > 4) + { + gUnknown_030042C4 = 0; + gUnknown_03004240 = 0; + REG_WININ = 0x3F3F; + REG_WINOUT = 0x3F3F; + REG_BLDCNT = 0; + REG_BLDY = 0; + DestroyAnimVisualTask(taskId); + } +} + +void sub_80D1E38(u8 taskId) +{ + u8 spriteId = obj_id_for_side_relative_to_move(1); + if (++gTasks[taskId].data[0] == 1) + { + sub_80798F4(&gTasks[taskId], obj_id_for_side_relative_to_move(1), &gUnknown_083D7A98); + gSprites[spriteId].pos2.x = 4; + } + else + { + gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; + if (sub_807992C(&gTasks[taskId]) == 0) + { + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; + DestroyAnimVisualTask(taskId); + } + } +} + +void sub_80D1EC8(u8 taskId) +{ + u8 spriteId = obj_id_for_side_relative_to_move(0); + if (++gTasks[taskId].data[0] == 1) + { + sub_80798F4(&gTasks[taskId], obj_id_for_side_relative_to_move(0), &gUnknown_083D7A98); + gSprites[spriteId].pos2.x = 4; + } + else + { + gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x; + if (sub_807992C(&gTasks[taskId]) == 0) + { + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; + DestroyAnimVisualTask(taskId); + } + } +} + +void sub_80D1F58(struct Sprite* sprite) +{ + sub_80787B0(sprite, 1); + sprite->data0 = 0x5F; + sprite->data1 = sprite->pos1.x; + sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2); + sprite->data3 = sprite->pos1.y; + sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3); + obj_translate_based_on_private_1_2_3_4(sprite); + sprite->callback = sub_80D1FA4; +} + +void sub_80D1FA4(struct Sprite* sprite) +{ + if (sub_8078B5C(sprite) == 0) + { + sprite->pos2.y += Sin(sprite->data5, 14); + sprite->data5 = (sprite->data5 + 4) & 0xFF; + } + else + move_anim_8072740(sprite); +} + +void sub_80D1FDC(struct Sprite* sprite) +{ + if (sprite->data0 == 0) + { + sprite->data1 = gBattleAnimArgs[0]; + sprite->data2 = gBattleAnimArgs[1]; + sprite->data0++; + } + else + { + sprite->data4 += sprite->data1; + sprite->pos2.x = sprite->data4 >> 8; + sprite->pos2.y = Sin(sprite->data3, sprite->data2); + sprite->data3 = (sprite->data3 + 3) & 0xFF; + if (sprite->data3 > 0x64) + { + sprite->invisible = sprite->data3 % 2; + } + if (sprite->data3 > 0x78) + move_anim_8072740(sprite); + } +} + +void sub_80D2064(struct Sprite* sprite) +{ + sprite->pos1.x = gBattleAnimArgs[0]; + sprite->pos1.y = 0xA0; + sprite->data0 = gBattleAnimArgs[2]; + sprite->data1 = gBattleAnimArgs[1]; + sprite->callback = sub_80782D8; + oamt_set_x3A_32(sprite, sub_80D2094); +} + +void sub_80D2094(struct Sprite* sprite) +{ + s16 y; + sprite->data2 += sprite->data1; + sprite->pos2.y = -((u16)sprite->data2 >> 8); + sprite->pos2.x = Sin(sprite->data3, 4); + sprite->data3 = (sprite->data3 + 3) & 0xFF; + y = sprite->pos1.y + sprite->pos2.y; + if (y <= 0x48) + { + sprite->invisible = sprite->data3 % 2; + if (y <= 0x40) + move_anim_8072740(sprite); + } +} + +void sub_80D2100(u8 taskId) +{ + struct Struct_sub_8078914 subStruct; + u8* tempvar; + REG_BLDCNT = 0x3F42; + REG_BLDALPHA = 0x1000; + REG_BG1CNT_BITFIELD.priority = 3; + REG_BG1CNT_BITFIELD.screenSize = 0; + if (!IsContest()) + REG_BG1CNT_BITFIELD.charBaseBlock = 1; + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + sub_8078914(&subStruct); + tempvar = subStruct.field_4; + DmaFill32(3, 0x0, tempvar, 0x1000); + LZDecompressVram(&gAttractTilemap, tempvar); + LZDecompressVram(&gAttractGfx, subStruct.field_0); + LoadCompressedPalette(&gAttractPal, subStruct.field_8 << 4, 32); + if (IsContest()) + sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0); + gTasks[taskId].func = sub_80D21F0; +} + +/* void sub_80D21F0(u8 taskId) +{ + struct Struct_sub_8078914 subStruct; + int i; + switch (gTasks[taskId].data[12]) + { + case 0: + if (++gTasks[taskId].data[10] == 4) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]++; + REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); + if (gTasks[taskId].data[11] == 16) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 1: + if (++gTasks[taskId].data[11] == 0x8D) + { + gTasks[taskId].data[11] = 16; + gTasks[taskId].data[12]++; + } + break; + case 2: + if (++gTasks[taskId].data[10] == 4) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]--; + REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); + if (gTasks[taskId].data[11] == 0) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 3: + sub_8078914(&subStruct); + for (i = 0x2000; i <= 0x3000; i += 0x1000) + DmaFill32(3, 0x0, subStruct.field_0, 0x1000); + } +} */
\ No newline at end of file |