diff options
author | camthesaxman <cameronghall@cox.net> | 2017-01-14 17:21:22 -0600 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2017-01-14 17:21:22 -0600 |
commit | 7fe19fc60d9cf03fac46db2e629b7610df219fbe (patch) | |
tree | 1472097ab968c39be6a2b2b153c7d51d707984fa | |
parent | d312ee301b03580bbe47add77441b671af70f8ac (diff) |
decompile up to sub_8076034
-rw-r--r-- | asm/battle_anim.s | 1183 | ||||
-rw-r--r-- | src/battle_anim.c | 654 |
2 files changed, 646 insertions, 1191 deletions
diff --git a/asm/battle_anim.s b/asm/battle_anim.s index 4aaa10ba9..d7efbc466 100644 --- a/asm/battle_anim.s +++ b/asm/battle_anim.s @@ -6,1189 +6,6 @@ .text - thumb_func_start ma00_load_graphics -ma00_load_graphics: @ 8075A10 - push {r4-r6,lr} - ldr r6, _08075A5C @ =gUnknown_0202F7A4 - ldr r0, [r6] - adds r1, r0, 0x1 - str r1, [r6] - ldrb r4, [r0, 0x1] - ldrb r0, [r1, 0x1] - lsls r0, 8 - orrs r4, r0 - lsls r5, r4, 3 - ldr r0, _08075A60 @ =gBattleAnimPicTable - (10000 * 8) - adds r0, r5, r0 - bl LoadCompressedObjectPic - ldr r0, _08075A64 @ =gBattleAnimPaletteTable - (10000 * 8) - adds r5, r0 - adds r0, r5, 0 - bl LoadCompressedObjectPalette - ldr r0, [r6] - adds r0, 0x2 - str r0, [r6] - ldr r0, _08075A68 @ =0xffffd8f0 - adds r4, r0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - bl sub_8075940 - ldr r1, _08075A6C @ =gUnknown_0202F7B0 - movs r0, 0x1 - strb r0, [r1] - ldr r1, _08075A70 @ =gUnknown_0202F7AC - ldr r0, _08075A74 @ =move_anim_waiter - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08075A5C: .4byte gUnknown_0202F7A4 -_08075A60: .4byte gBattleAnimPicTable - (10000 * 8) -_08075A64: .4byte gBattleAnimPaletteTable - (10000 * 8) -_08075A68: .4byte 0xffffd8f0 -_08075A6C: .4byte gUnknown_0202F7B0 -_08075A70: .4byte gUnknown_0202F7AC -_08075A74: .4byte move_anim_waiter - thumb_func_end ma00_load_graphics - - thumb_func_start ma01_080728D0 -ma01_080728D0: @ 8075A78 - push {r4-r6,lr} - ldr r6, _08075AB8 @ =gUnknown_0202F7A4 - ldr r0, [r6] - adds r1, r0, 0x1 - str r1, [r6] - ldrb r4, [r0, 0x1] - ldrb r0, [r1, 0x1] - lsls r0, 8 - orrs r4, r0 - ldr r1, _08075ABC @ =gBattleAnimPicTable - ldr r0, _08075AC0 @ =0xffffd8f0 - adds r4, r0 - lsls r0, r4, 3 - adds r0, r1 - ldrh r5, [r0, 0x6] - adds r0, r5, 0 - bl FreeSpriteTilesByTag - adds r0, r5, 0 - bl FreeSpritePaletteByTag - ldr r0, [r6] - adds r0, 0x2 - str r0, [r6] - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - bl sub_8075970 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08075AB8: .4byte gUnknown_0202F7A4 -_08075ABC: .4byte gBattleAnimPicTable -_08075AC0: .4byte 0xffffd8f0 - thumb_func_end ma01_080728D0 - - thumb_func_start ma02_instanciate_template -ma02_instanciate_template: @ 8075AC4 - push {r4-r7,lr} - ldr r5, _08075B2C @ =gUnknown_0202F7A4 - ldr r1, [r5] - adds r3, r1, 0x1 - str r3, [r5] - ldrb r2, [r1, 0x1] - ldrb r0, [r3, 0x1] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r3, 0x2] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r3, 0x3] - lsls r0, 24 - adds r7, r2, r0 - adds r0, r1, 0x5 - str r0, [r5] - ldrb r4, [r1, 0x5] - adds r0, r1, 0x6 - str r0, [r5] - ldrb r0, [r1, 0x6] - adds r1, 0x7 - str r1, [r5] - cmp r0, 0 - beq _08075B14 - adds r6, r5, 0 - ldr r5, _08075B30 @ =gBattleAnimArgs - adds r3, r0, 0 -_08075AFC: - ldr r2, [r6] - ldrb r1, [r2] - ldrb r0, [r2, 0x1] - lsls r0, 8 - orrs r1, r0 - strh r1, [r5] - adds r2, 0x2 - str r2, [r6] - adds r5, 0x2 - subs r3, 0x1 - cmp r3, 0 - bne _08075AFC -_08075B14: - movs r0, 0x80 - ands r0, r4 - cmp r0, 0 - beq _08075B44 - movs r0, 0x80 - eors r4, r0 - cmp r4, 0x3F - bls _08075B34 - adds r0, r4, 0 - subs r0, 0x40 - b _08075B36 - .align 2, 0 -_08075B2C: .4byte gUnknown_0202F7A4 -_08075B30: .4byte gBattleAnimArgs -_08075B34: - negs r0, r4 -_08075B36: - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08075B40 @ =gUnknown_0202F7C9 - b _08075B56 - .align 2, 0 -_08075B40: .4byte gUnknown_0202F7C9 -_08075B44: - cmp r4, 0x3F - bls _08075B4E - adds r0, r4, 0 - subs r0, 0x40 - b _08075B50 -_08075B4E: - negs r0, r4 -_08075B50: - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08075BAC @ =gUnknown_0202F7C8 -_08075B56: - ldrb r0, [r0] - bl sub_8079E90 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r4, 24 - asrs r1, 24 - adds r0, r1 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r0, r6, 16 - asrs r0, 16 - cmp r0, 0x2 - bgt _08075B74 - movs r6, 0x3 -_08075B74: - ldr r5, _08075BB0 @ =gUnknown_0202F7C9 - ldrb r0, [r5] - movs r1, 0x2 - bl sub_8077ABC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r0, [r5] - movs r1, 0x3 - bl sub_8077ABC - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - lsls r3, r6, 24 - lsrs r3, 24 - adds r0, r7, 0 - adds r1, r4, 0 - bl CreateSpriteAndAnimate - ldr r1, _08075BB4 @ =gUnknown_0202F7B2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08075BAC: .4byte gUnknown_0202F7C8 -_08075BB0: .4byte gUnknown_0202F7C9 -_08075BB4: .4byte gUnknown_0202F7B2 - thumb_func_end ma02_instanciate_template - - thumb_func_start sub_8075BB8 -sub_8075BB8: @ 8075BB8 - push {r4-r7,lr} - ldr r4, _08075C28 @ =gUnknown_0202F7A4 - ldr r1, [r4] - adds r3, r1, 0x1 - str r3, [r4] - ldrb r2, [r1, 0x1] - ldrb r0, [r3, 0x1] - lsls r0, 8 - adds r2, r0 - ldrb r0, [r3, 0x2] - lsls r0, 16 - adds r2, r0 - ldrb r0, [r3, 0x3] - lsls r0, 24 - adds r6, r2, r0 - adds r0, r1, 0x5 - str r0, [r4] - ldrb r7, [r1, 0x5] - adds r0, r1, 0x6 - str r0, [r4] - ldrb r0, [r1, 0x6] - adds r1, 0x7 - str r1, [r4] - cmp r0, 0 - beq _08075C08 - adds r5, r4, 0 - ldr r4, _08075C2C @ =gBattleAnimArgs - adds r3, r0, 0 -_08075BF0: - ldr r2, [r5] - ldrb r1, [r2] - ldrb r0, [r2, 0x1] - lsls r0, 8 - orrs r1, r0 - strh r1, [r4] - adds r2, 0x2 - str r2, [r5] - adds r4, 0x2 - subs r3, 0x1 - cmp r3, 0 - bne _08075BF0 -_08075C08: - adds r0, r6, 0 - adds r1, r7, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r6 - ldr r1, _08075C30 @ =gUnknown_0202F7B2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08075C28: .4byte gUnknown_0202F7A4 -_08075C2C: .4byte gBattleAnimArgs -_08075C30: .4byte gUnknown_0202F7B2 - thumb_func_end sub_8075BB8 - - thumb_func_start ma04_wait_countdown -ma04_wait_countdown: @ 8075C34 - push {r4,lr} - ldr r1, _08075C64 @ =gUnknown_0202F7A4 - ldr r0, [r1] - adds r2, r0, 0x1 - str r2, [r1] - ldr r3, _08075C68 @ =gUnknown_0202F7B0 - ldrb r0, [r0, 0x1] - strb r0, [r3] - lsls r0, 24 - cmp r0, 0 - bne _08075C52 - movs r4, 0x1 - negs r4, r4 - adds r0, r4, 0 - strb r0, [r3] -_08075C52: - adds r0, r2, 0x1 - str r0, [r1] - ldr r1, _08075C6C @ =gUnknown_0202F7AC - ldr r0, _08075C70 @ =move_anim_waiter - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08075C64: .4byte gUnknown_0202F7A4 -_08075C68: .4byte gUnknown_0202F7B0 -_08075C6C: .4byte gUnknown_0202F7AC -_08075C70: .4byte move_anim_waiter - thumb_func_end ma04_wait_countdown - - thumb_func_start sub_8075C74 -sub_8075C74: @ 8075C74 - push {lr} - ldr r0, _08075C8C @ =gUnknown_0202F7B2 - ldrb r2, [r0] - cmp r2, 0 - bne _08075C98 - ldr r0, _08075C90 @ =gUnknown_0202F7A4 - ldr r1, [r0] - adds r1, 0x1 - str r1, [r0] - ldr r0, _08075C94 @ =gUnknown_0202F7B0 - strb r2, [r0] - b _08075C9E - .align 2, 0 -_08075C8C: .4byte gUnknown_0202F7B2 -_08075C90: .4byte gUnknown_0202F7A4 -_08075C94: .4byte gUnknown_0202F7B0 -_08075C98: - ldr r1, _08075CA4 @ =gUnknown_0202F7B0 - movs r0, 0x1 - strb r0, [r1] -_08075C9E: - pop {r0} - bx r0 - .align 2, 0 -_08075CA4: .4byte gUnknown_0202F7B0 - thumb_func_end sub_8075C74 - - thumb_func_start nullsub_53 -nullsub_53: @ 8075CA8 - bx lr - thumb_func_end nullsub_53 - - thumb_func_start nullsub_88 -nullsub_88: @ 8075CAC - bx lr - thumb_func_end nullsub_88 - - thumb_func_start sub_8075CB0 -sub_8075CB0: @ 8075CB0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r0, 0 - mov r8, r0 - ldr r0, _08075CE0 @ =gUnknown_0202F7B2 - ldrb r0, [r0] - cmp r0, 0 - bne _08075CD8 - ldr r0, _08075CE4 @ =gUnknown_0202F7B3 - ldrb r0, [r0] - cmp r0, 0 - bne _08075CD8 - ldr r1, _08075CE8 @ =gUnknown_0202F7C2 - ldrb r0, [r1] - cmp r0, 0xFF - bne _08075CD8 - ldrb r0, [r1, 0x1] - cmp r0, 0xFF - beq _08075CF0 -_08075CD8: - ldr r1, _08075CEC @ =gUnknown_03004AF0 - movs r0, 0 - strh r0, [r1] - b _08075D0A - .align 2, 0 -_08075CE0: .4byte gUnknown_0202F7B2 -_08075CE4: .4byte gUnknown_0202F7B3 -_08075CE8: .4byte gUnknown_0202F7C2 -_08075CEC: .4byte gUnknown_03004AF0 -_08075CF0: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _08075D28 - ldr r1, _08075D14 @ =gUnknown_03004AF0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x5A - bhi _08075D1C -_08075D0A: - ldr r1, _08075D18 @ =gUnknown_0202F7B0 - movs r0, 0x1 - strb r0, [r1] - b _08075D8E - .align 2, 0 -_08075D14: .4byte gUnknown_03004AF0 -_08075D18: .4byte gUnknown_0202F7B0 -_08075D1C: - ldr r0, _08075D98 @ =gMPlay_SE1 - bl m4aMPlayStop - ldr r0, _08075D9C @ =gMPlay_SE2 - bl m4aMPlayStop -_08075D28: - ldr r1, _08075DA0 @ =gUnknown_03004AF0 - movs r0, 0 - strh r0, [r1] - movs r5, 0 - ldr r7, _08075DA4 @ =0x0000ffff - ldr r6, _08075DA8 @ =gBattleAnimPicTable - ldr r4, _08075DAC @ =gUnknown_03004B10 -_08075D36: - ldrh r0, [r4] - cmp r0, r7 - beq _08075D5A - lsls r0, 3 - adds r0, r6 - ldrh r0, [r0, 0x6] - bl FreeSpriteTilesByTag - ldrh r0, [r4] - lsls r0, 3 - adds r0, r6 - ldrh r0, [r0, 0x6] - bl FreeSpritePaletteByTag - ldrh r1, [r4] - adds r0, r7, 0 - orrs r0, r1 - strh r0, [r4] -_08075D5A: - adds r4, 0x2 - adds r5, 0x1 - cmp r5, 0x7 - ble _08075D36 - mov r1, r8 - cmp r1, 0 - bne _08075D8E - ldr r0, _08075DB0 @ =gMPlay_BGM - ldr r1, _08075DA4 @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl - bl sub_8076BE0 - lsls r0, 24 - cmp r0, 0 - bne _08075D88 - bl sub_8079E24 - movs r0, 0x1 - bl sub_8043EB4 -_08075D88: - ldr r0, _08075DB4 @ =gUnknown_0202F7B1 - mov r1, r8 - strb r1, [r0] -_08075D8E: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08075D98: .4byte gMPlay_SE1 -_08075D9C: .4byte gMPlay_SE2 -_08075DA0: .4byte gUnknown_03004AF0 -_08075DA4: .4byte 0x0000ffff -_08075DA8: .4byte gBattleAnimPicTable -_08075DAC: .4byte gUnknown_03004B10 -_08075DB0: .4byte gMPlay_BGM -_08075DB4: .4byte gUnknown_0202F7B1 - thumb_func_end sub_8075CB0 - - thumb_func_start ma09_play_sound -ma09_play_sound: @ 8075DB8 - push {r4,lr} - ldr r4, _08075DDC @ =gUnknown_0202F7A4 - ldr r0, [r4] - adds r1, r0, 0x1 - str r1, [r4] - ldrb r0, [r0, 0x1] - ldrb r1, [r1, 0x1] - lsls r1, 8 - orrs r0, r1 - bl PlaySE - ldr r0, [r4] - adds r0, 0x2 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08075DDC: .4byte gUnknown_0202F7A4 - thumb_func_end ma09_play_sound - - thumb_func_start sub_8075DE0 -sub_8075DE0: @ 8075DE0 - push {r4-r7,lr} - ldr r0, _08075DF4 @ =gUnknown_0202F7A4 - ldr r2, [r0] - adds r1, r2, 0x1 - str r1, [r0] - ldrb r6, [r2, 0x1] - cmp r6, 0 - bne _08075DF8 - movs r6, 0x2 - b _08075E02 - .align 2, 0 -_08075DF4: .4byte gUnknown_0202F7A4 -_08075DF8: - cmp r6, 0x1 - bne _08075DFE - movs r6, 0x3 -_08075DFE: - cmp r6, 0 - beq _08075E06 -_08075E02: - cmp r6, 0x2 - bne _08075E10 -_08075E06: - ldr r0, _08075E0C @ =gUnknown_0202F7C8 - b _08075E12 - .align 2, 0 -_08075E0C: .4byte gUnknown_0202F7C8 -_08075E10: - ldr r0, _08075E44 @ =gUnknown_0202F7C9 -_08075E12: - ldrb r5, [r0] - adds r0, r5, 0 - bl b_side_obj__get_some_boolean - lsls r0, 24 - cmp r0, 0 - beq _08075ECE - adds r0, r5, 0 - bl battle_get_per_side_status - lsls r0, 24 - movs r1, 0xFF - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x1 - bls _08075E3E - bl sub_8076BE0 - lsls r0, 24 - cmp r0, 0 - beq _08075E48 -_08075E3E: - movs r7, 0 - b _08075E4A - .align 2, 0 -_08075E44: .4byte gUnknown_0202F7C9 -_08075E48: - movs r7, 0x1 -_08075E4A: - adds r0, r5, 0 - adds r1, r7, 0 - bl sub_8076034 - ldr r0, _08075E98 @ =gUnknown_02024BE0 - adds r0, r5, r0 - ldrb r4, [r0] - ldr r0, _08075E9C @ =task_pA_ma0A_obj_to_bg_pal - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _08075EA0 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r2, r0, r1 - strh r4, [r2, 0x8] - ldr r1, _08075EA4 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x24] - ldrh r4, [r0, 0x20] - adds r1, r4 - strh r1, [r2, 0xA] - ldrh r1, [r0, 0x26] - ldrh r0, [r0, 0x22] - adds r1, r0 - strh r1, [r2, 0xC] - cmp r7, 0 - bne _08075EB0 - ldr r0, _08075EA8 @ =gUnknown_030042C0 - ldrh r0, [r0] - strh r0, [r2, 0xE] - ldr r0, _08075EAC @ =gUnknown_030041B4 - b _08075EB8 - .align 2, 0 -_08075E98: .4byte gUnknown_02024BE0 -_08075E9C: .4byte task_pA_ma0A_obj_to_bg_pal -_08075EA0: .4byte gTasks -_08075EA4: .4byte gSprites -_08075EA8: .4byte gUnknown_030042C0 -_08075EAC: .4byte gUnknown_030041B4 -_08075EB0: - ldr r0, _08075F04 @ =gUnknown_03004288 - ldrh r0, [r0] - strh r0, [r2, 0xE] - ldr r0, _08075F08 @ =gUnknown_03004280 -_08075EB8: - ldrh r0, [r0] - strh r0, [r2, 0x10] - ldr r0, _08075F0C @ =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - strh r7, [r1, 0x12] - strh r5, [r1, 0x14] - ldr r0, _08075F10 @ =gUnknown_0202F7C2 - strb r3, [r0] -_08075ECE: - movs r0, 0x2 - eors r5, r0 - cmp r6, 0x1 - bls _08075F9A - adds r0, r5, 0 - bl b_side_obj__get_some_boolean - lsls r0, 24 - cmp r0, 0 - beq _08075F9A - adds r0, r5, 0 - bl battle_get_per_side_status - lsls r0, 24 - movs r1, 0xFF - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x1 - bls _08075F00 - bl sub_8076BE0 - lsls r0, 24 - cmp r0, 0 - beq _08075F14 -_08075F00: - movs r7, 0 - b _08075F16 - .align 2, 0 -_08075F04: .4byte gUnknown_03004288 -_08075F08: .4byte gUnknown_03004280 -_08075F0C: .4byte gTasks -_08075F10: .4byte gUnknown_0202F7C2 -_08075F14: - movs r7, 0x1 -_08075F16: - adds r0, r5, 0 - adds r1, r7, 0 - bl sub_8076034 - ldr r0, _08075F64 @ =gUnknown_02024BE0 - adds r0, r5, r0 - ldrb r4, [r0] - ldr r0, _08075F68 @ =task_pA_ma0A_obj_to_bg_pal - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _08075F6C @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r2, r0, r1 - strh r4, [r2, 0x8] - ldr r1, _08075F70 @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0x24] - ldrh r4, [r0, 0x20] - adds r1, r4 - strh r1, [r2, 0xA] - ldrh r1, [r0, 0x26] - ldrh r0, [r0, 0x22] - adds r1, r0 - strh r1, [r2, 0xC] - cmp r7, 0 - bne _08075F7C - ldr r0, _08075F74 @ =gUnknown_030042C0 - ldrh r0, [r0] - strh r0, [r2, 0xE] - ldr r0, _08075F78 @ =gUnknown_030041B4 - b _08075F84 - .align 2, 0 -_08075F64: .4byte gUnknown_02024BE0 -_08075F68: .4byte task_pA_ma0A_obj_to_bg_pal -_08075F6C: .4byte gTasks -_08075F70: .4byte gSprites -_08075F74: .4byte gUnknown_030042C0 -_08075F78: .4byte gUnknown_030041B4 -_08075F7C: - ldr r0, _08075FA8 @ =gUnknown_03004288 - ldrh r0, [r0] - strh r0, [r2, 0xE] - ldr r0, _08075FAC @ =gUnknown_03004280 -_08075F84: - ldrh r0, [r0] - strh r0, [r2, 0x10] - ldr r0, _08075FB0 @ =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - strh r7, [r1, 0x12] - strh r5, [r1, 0x14] - ldr r0, _08075FB4 @ =gUnknown_0202F7C2 - strb r3, [r0, 0x1] -_08075F9A: - ldr r1, _08075FB8 @ =gUnknown_0202F7A4 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08075FA8: .4byte gUnknown_03004288 -_08075FAC: .4byte gUnknown_03004280 -_08075FB0: .4byte gTasks -_08075FB4: .4byte gUnknown_0202F7C2 -_08075FB8: .4byte gUnknown_0202F7A4 - thumb_func_end sub_8075DE0 - - thumb_func_start b_side_obj__get_some_boolean -b_side_obj__get_some_boolean: @ 8075FBC - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - bl sub_8076BE0 - lsls r0, 24 - cmp r0, 0 - beq _08075FDC - ldr r0, _08075FD8 @ =gUnknown_0202F7C8 - ldrb r0, [r0] - cmp r4, r0 - beq _0807601C - b _0807602C - .align 2, 0 -_08075FD8: .4byte gUnknown_0202F7C8 -_08075FDC: - adds r0, r4, 0 - bl sub_8078874 - lsls r0, 24 - cmp r0, 0 - beq _0807602C - bl sub_8076BE0 - lsls r0, 24 - cmp r0, 0 - bne _0807601C - lsls r0, r5, 2 - ldr r1, _08076020 @ =0x02017800 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0807601C - ldr r2, _08076024 @ =gSprites - ldr r0, _08076028 @ =gUnknown_02024BE0 - adds r0, r5, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - blt _0807602C -_0807601C: - movs r0, 0x1 - b _0807602E - .align 2, 0 -_08076020: .4byte 0x02017800 -_08076024: .4byte gSprites -_08076028: .4byte gUnknown_02024BE0 -_0807602C: - movs r0, 0 -_0807602E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end b_side_obj__get_some_boolean - - thumb_func_start sub_8076034 -sub_8076034: @ 8076034 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r1, 24 - cmp r1, 0 - beq _0807604E - b _08076220 -_0807604E: - add r4, sp, 0x10 - adds r0, r4, 0 - bl sub_8078914 - ldr r2, [sp, 0x10] - movs r3, 0x80 - lsls r3, 6 - add r6, sp, 0x1C - add r0, sp, 0x20 - mov r10, r0 - mov r1, r9 - lsls r1, 5 - str r1, [sp, 0x24] - movs r5, 0 - ldr r1, _08076194 @ =0x040000d4 - movs r4, 0x80 - lsls r4, 5 - mov r12, r6 - ldr r7, _08076198 @ =0x85000400 - movs r0, 0x85 - lsls r0, 24 - mov r8, r0 -_0807607A: - str r5, [sp, 0x1C] - mov r0, r12 - str r0, [r1] - str r2, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r4 - subs r3, r4 - cmp r3, r4 - bhi _0807607A - str r5, [sp, 0x1C] - str r6, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 2 - mov r2, r8 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - add r0, sp, 0xC - movs r1, 0 - strb r1, [r0] - strb r1, [r0] - ldr r1, [sp, 0x14] - movs r0, 0xFF - mov r3, r10 - strh r0, [r3] - ldr r0, _08076194 @ =0x040000d4 - str r3, [r0] - str r1, [r0, 0x4] - ldr r1, _0807619C @ =0x81000800 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r2, _080761A0 @ =REG_BG1CNT - ldrb r1, [r2] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] - ldrb r1, [r2, 0x1] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2, 0x1] - ldrb r1, [r2, 0x1] - movs r0, 0x21 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x1] - ldr r0, _080761A4 @ =gUnknown_02024BE0 - add r0, r9 - ldrb r4, [r0] - ldr r5, _080761A8 @ =gUnknown_030042C0 - ldr r0, _080761AC @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0x24] - ldrh r1, [r1, 0x20] - adds r0, r1 - negs r0, r0 - adds r0, 0x20 - strh r0, [r5] - bl sub_8076BE0 - lsls r0, 24 - cmp r0, 0 - beq _0807611C - ldr r0, _080761B0 @ =0x02019348 - ldrh r0, [r0] - bl sub_80AEB1C - lsls r0, 24 - cmp r0, 0 - beq _0807611C - ldrh r0, [r5] - subs r0, 0x1 - strh r0, [r5] -_0807611C: - ldr r3, _080761B4 @ =gUnknown_030041B4 - ldr r2, _080761AC @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r2 - ldrh r0, [r1, 0x26] - ldrh r1, [r1, 0x22] - adds r0, r1 - negs r0, r0 - adds r0, 0x20 - strh r0, [r3] - ldr r0, _080761A4 @ =gUnknown_02024BE0 - add r0, r9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldr r1, _080761B8 @ =REG_BG1HOFS - ldr r0, _080761A8 @ =gUnknown_030042C0 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r3] - strh r0, [r1] - ldr r4, _080761BC @ =gPlttBufferUnfaded + 0x200 - ldr r0, [sp, 0x24] - adds r4, r0, r4 - mov r2, sp - ldrb r1, [r2, 0x18] - lsls r1, 4 - adds r0, r4, 0 - movs r2, 0x20 - bl LoadPalette - mov r3, sp - ldrb r0, [r3, 0x18] - lsls r0, 5 - movs r1, 0xA0 - lsls r1, 19 - adds r0, r1 - ldr r1, _08076194 @ =0x040000d4 - str r4, [r1] - str r0, [r1, 0x4] - ldr r0, _080761C0 @ =0x84000008 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - bl sub_8076BE0 - lsls r0, 24 - cmp r0, 0 - beq _080761C4 - movs r2, 0 - b _080761CE - .align 2, 0 -_08076194: .4byte 0x040000d4 -_08076198: .4byte 0x85000400 -_0807619C: .4byte 0x81000800 -_080761A0: .4byte REG_BG1CNT -_080761A4: .4byte gUnknown_02024BE0 -_080761A8: .4byte gUnknown_030042C0 -_080761AC: .4byte gSprites -_080761B0: .4byte 0x02019348 -_080761B4: .4byte gUnknown_030041B4 -_080761B8: .4byte REG_BG1HOFS -_080761BC: .4byte gPlttBufferUnfaded + 0x200 -_080761C0: .4byte 0x84000008 -_080761C4: - mov r0, r9 - bl battle_get_per_side_status - lsls r0, 24 - lsrs r2, r0, 24 -_080761CE: - mov r0, sp - ldrb r3, [r0, 0x18] - ldr r0, [sp, 0x10] - lsls r0, 16 - lsrs r0, 16 - str r0, [sp] - ldr r4, [sp, 0x14] - movs r1, 0xFA - lsls r1, 24 - adds r0, r4, r1 - cmp r0, 0 - bge _080761EA - ldr r1, _08076218 @ =0xfa0007ff - adds r0, r4, r1 -_080761EA: - asrs r0, 11 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - ldr r0, _0807621C @ =REG_BG1CNT - ldr r0, [r0] - lsls r0, 28 - lsrs r0, 30 - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0 - bl sub_80E4EF8 - bl sub_8076BE0 - lsls r0, 24 - cmp r0, 0 - bne _08076210 - b _08076338 -_08076210: - bl sub_8076380 - b _08076338 - .align 2, 0 -_08076218: .4byte 0xfa0007ff -_0807621C: .4byte REG_BG1CNT -_08076220: - ldr r3, _08076348 @ =0x06006000 - movs r5, 0x80 - lsls r5, 6 - add r6, sp, 0x1C - ldr r2, _0807634C @ =gSprites - mov r10, r2 - mov r0, r9 - lsls r0, 5 - str r0, [sp, 0x24] - movs r4, 0 - ldr r1, _08076350 @ =0x040000d4 - movs r2, 0x80 - lsls r2, 5 - mov r12, r6 - ldr r7, _08076354 @ =0x85000400 - movs r0, 0x85 - lsls r0, 24 - mov r8, r0 -_08076244: - str r4, [sp, 0x1C] - mov r0, r12 - str r0, [r1] - str r3, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - subs r5, r2 - cmp r5, r2 - bhi _08076244 - str r4, [sp, 0x1C] - str r6, [r1] - str r3, [r1, 0x4] - lsrs r0, r5, 2 - mov r2, r8 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - add r0, sp, 0xC - movs r1, 0 - strb r1, [r0] - strb r1, [r0] - ldr r1, _08076358 @ =0x0600f000 - movs r0, 0 - str r0, [sp, 0x1C] - ldr r5, _08076350 @ =0x040000d4 - str r6, [r5] - str r1, [r5, 0x4] - ldr r0, _0807635C @ =0x85000200 - str r0, [r5, 0x8] - ldr r0, [r5, 0x8] - ldr r6, _08076360 @ =REG_BG2CNT - ldrb r1, [r6] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - strb r0, [r6] - ldrb r1, [r6, 0x1] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x40 - orrs r0, r1 - strb r0, [r6, 0x1] - ldrb r1, [r6, 0x1] - movs r0, 0x21 - negs r0, r0 - ands r0, r1 - strb r0, [r6, 0x1] - ldr r2, _08076364 @ =gUnknown_02024BE0 - add r2, r9 - ldrb r4, [r2] - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - add r1, r10 - ldrh r0, [r1, 0x24] - ldrh r3, [r1, 0x20] - adds r0, r3 - negs r0, r0 - adds r0, 0x20 - ldr r3, _08076368 @ =gUnknown_03004288 - strh r0, [r3] - ldrh r0, [r1, 0x26] - ldrh r1, [r1, 0x22] - adds r0, r1 - negs r0, r0 - adds r0, 0x20 - ldr r1, _0807636C @ =gUnknown_03004280 - strh r0, [r1] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r10 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldr r1, _08076370 @ =REG_BG2HOFS - ldrh r0, [r3] - strh r0, [r1] - adds r1, 0x2 - ldr r2, _0807636C @ =gUnknown_03004280 - ldrh r0, [r2] - strh r0, [r1] - ldr r3, [sp, 0x24] - ldr r0, _08076374 @ =gPlttBufferUnfaded + 0x200 - adds r4, r3, r0 - adds r0, r4, 0 - movs r1, 0x90 - movs r2, 0x20 - bl LoadPalette - ldr r0, _08076378 @ =0x05000120 - str r4, [r5] - str r0, [r5, 0x4] - ldr r0, _0807637C @ =0x84000008 - str r0, [r5, 0x8] - ldr r0, [r5, 0x8] - mov r0, r9 - bl battle_get_per_side_status - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0xC0 - lsls r0, 7 - str r0, [sp] - movs r0, 0x1E - str r0, [sp, 0x4] - ldr r0, [r6] - lsls r0, 28 - lsrs r0, 30 - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0 - movs r3, 0x9 - bl sub_80E4EF8 -_08076338: - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08076348: .4byte 0x06006000 -_0807634C: .4byte gSprites -_08076350: .4byte 0x040000d4 -_08076354: .4byte 0x85000400 -_08076358: .4byte 0x0600f000 -_0807635C: .4byte 0x85000200 -_08076360: .4byte REG_BG2CNT -_08076364: .4byte gUnknown_02024BE0 -_08076368: .4byte gUnknown_03004288 -_0807636C: .4byte gUnknown_03004280 -_08076370: .4byte REG_BG2HOFS -_08076374: .4byte gPlttBufferUnfaded + 0x200 -_08076378: .4byte 0x05000120 -_0807637C: .4byte 0x84000008 - thumb_func_end sub_8076034 - thumb_func_start sub_8076380 sub_8076380: @ 8076380 push {r4-r7,lr} diff --git a/src/battle_anim.c b/src/battle_anim.c index 1313b69ca..914c94b6c 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -1,10 +1,19 @@ #include "global.h" #include "asm.h" -#include "gba/m4a_internal.h" +#include "decompress.h" +#include "m4a.h" +#include "palette.h" +#include "sound.h" #include "sprite.h" #include "task.h" +struct UnknownStruct1 +{ + u8 unk0; +}; + extern u16 gUnknown_02024A6A[4]; +extern u8 gUnknown_02024BE0[]; extern u8 gUnknown_02024C07; extern u8 gUnknown_02024C08; extern const u8 *gUnknown_0202F7A4; @@ -25,20 +34,30 @@ extern u8 gUnknown_0202F7C8; extern u8 gUnknown_0202F7C9; extern u16 gUnknown_0202F7CA[4]; extern u8 gUnknown_0202F7D2; +extern u16 gUnknown_030041B4; extern u16 gUnknown_03004200; extern u16 gUnknown_03004240; extern u16 gUnknown_03004244; +extern u16 gUnknown_03004280; +extern u16 gUnknown_03004288; +extern u16 gUnknown_030042C0; extern u16 gUnknown_030042C4; +extern u16 gUnknown_03004AF0; extern u16 gUnknown_03004B10[8]; extern u16 gBattleAnimArgs[8]; extern struct MusicPlayerInfo gMPlay_BGM; +extern struct MusicPlayerInfo gMPlay_SE1; +extern struct MusicPlayerInfo gMPlay_SE2; extern const u16 gUnknown_081C7160[]; extern void (*gUnknown_0837F4B8[])(void); extern const u8 *const gBattleAnims_Moves[]; +extern const struct SpriteSheet gBattleAnimPicTable[]; +extern const struct SpritePalette gBattleAnimPaletteTable[]; extern u8 unk_2000000[]; +#define EWRAM_17800 ((struct UnknownStruct1 *)(unk_2000000 + 0x17800)) #define EWRAM_19348 (*(u16 *)(unk_2000000 + 0x19348)) void sub_8075624(void) @@ -76,7 +95,7 @@ void move_anim_start_t1(u16 a) move_something(gBattleAnims_Moves, a, 1); } -extern u8 sub_8076BE0(); +extern u8 sub_8076BE0(void); extern void sub_8079E24(); extern void sub_8043EB4(); extern void sub_80759D0(void); @@ -205,13 +224,632 @@ void sub_80759D0(void) } while (gUnknown_0202F7B0 == 0 && gUnknown_0202F7B1 != 0); } -/* void ma00_load_graphics(void) { - u8 r4 = *(gUnknown_0202F7A4++); - u8 temp = *gUnknown_0202F7A4; + const u8 *ptr = gUnknown_0202F7A4; + u32 r4; + + gUnknown_0202F7A4++; + r4 = ptr[1] | (gUnknown_0202F7A4[1] << 8); + LoadCompressedObjectPic(&gBattleAnimPicTable[r4 - 10000]); + LoadCompressedObjectPalette(&gBattleAnimPaletteTable[r4 - 10000]); + gUnknown_0202F7A4 += 2; + sub_8075940(r4 - 10000); + gUnknown_0202F7B0 = 1; + gUnknown_0202F7AC = move_anim_waiter; +} + +void ma01_080728D0(void) +{ + const u8 *ptr = gUnknown_0202F7A4; + u32 r4; + + gUnknown_0202F7A4++; + r4 = ptr[1] | (gUnknown_0202F7A4[1] << 8); + FreeSpriteTilesByTag(gBattleAnimPicTable[r4 - 10000].tag); + FreeSpritePaletteByTag(gBattleAnimPicTable[r4 - 10000].tag); + gUnknown_0202F7A4 += 2; + sub_8075970(r4 - 10000); +} + +extern u8 sub_8079E90(); +extern u8 sub_8077ABC(); + +#ifdef NONMATCHING +void ma02_instanciate_template(void) +{ + s32 i; + struct SpriteTemplate *r7; + const u8 *ptr = gUnknown_0202F7A4; + s8 r4; + u8 r0; + s8 _r0; + s16 r6; + u8 r2; + + gUnknown_0202F7A4++; + r7 = (struct SpriteTemplate *)(*(ptr + 1) + (*(gUnknown_0202F7A4 + 1) << 8) + (*(gUnknown_0202F7A4 + 2) << 16) + (*(gUnknown_0202F7A4 + 3) << 24)); + gUnknown_0202F7A4 = ptr + 5; + r4 = *(ptr + 5); + gUnknown_0202F7A4 = ptr + 6; + r0 = *(ptr + 6); + gUnknown_0202F7A4 = ptr + 7; + for (i = 0; i < r0; i++) + { + gBattleAnimArgs[i] = *(gUnknown_0202F7A4) | (*(gUnknown_0202F7A4 + 1) << 8); + gUnknown_0202F7A4 += 2; + } + if (r4 & 0x80) + { + if ((r4 ^ 0x80) > 0x3F) + r4 -= 0x40; + else + r4 = -r4; + _r0 = sub_8079E90(gUnknown_0202F7C9); + } + else + { + //_08075B44 + if (r4 > 0x3F) + r4 -= 0x40; + else + r4 = -r4; + _r0 = sub_8079E90(gUnknown_0202F7C8); + } + r6 = _r0 + r4; + if (r6 < 3) + r6 = 3; + r4 = sub_8077ABC(gUnknown_0202F7C9, 2); + r2 = sub_8077ABC(gUnknown_0202F7C9, 3); + CreateSpriteAndAnimate(r7, r4, r2, r6); + gUnknown_0202F7B2++; +} +#else +__attribute__((naked)) +void ma02_instanciate_template(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + ldr r5, _08075B2C @ =gUnknown_0202F7A4\n\ + ldr r1, [r5]\n\ + adds r3, r1, 0x1\n\ + str r3, [r5]\n\ + ldrb r2, [r1, 0x1]\n\ + ldrb r0, [r3, 0x1]\n\ + lsls r0, 8\n\ + adds r2, r0\n\ + ldrb r0, [r3, 0x2]\n\ + lsls r0, 16\n\ + adds r2, r0\n\ + ldrb r0, [r3, 0x3]\n\ + lsls r0, 24\n\ + adds r7, r2, r0\n\ + adds r0, r1, 0x5\n\ + str r0, [r5]\n\ + ldrb r4, [r1, 0x5]\n\ + adds r0, r1, 0x6\n\ + str r0, [r5]\n\ + ldrb r0, [r1, 0x6]\n\ + adds r1, 0x7\n\ + str r1, [r5]\n\ + cmp r0, 0\n\ + beq _08075B14\n\ + adds r6, r5, 0\n\ + ldr r5, _08075B30 @ =gBattleAnimArgs\n\ + adds r3, r0, 0\n\ +_08075AFC:\n\ + ldr r2, [r6]\n\ + ldrb r1, [r2]\n\ + ldrb r0, [r2, 0x1]\n\ + lsls r0, 8\n\ + orrs r1, r0\n\ + strh r1, [r5]\n\ + adds r2, 0x2\n\ + str r2, [r6]\n\ + adds r5, 0x2\n\ + subs r3, 0x1\n\ + cmp r3, 0\n\ + bne _08075AFC\n\ +_08075B14:\n\ + movs r0, 0x80\n\ + ands r0, r4\n\ + cmp r0, 0\n\ + beq _08075B44\n\ + movs r0, 0x80\n\ + eors r4, r0\n\ + cmp r4, 0x3F\n\ + bls _08075B34\n\ + adds r0, r4, 0\n\ + subs r0, 0x40\n\ + b _08075B36\n\ + .align 2, 0\n\ +_08075B2C: .4byte gUnknown_0202F7A4\n\ +_08075B30: .4byte gBattleAnimArgs\n\ +_08075B34:\n\ + negs r0, r4\n\ +_08075B36:\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + ldr r0, _08075B40 @ =gUnknown_0202F7C9\n\ + b _08075B56\n\ + .align 2, 0\n\ +_08075B40: .4byte gUnknown_0202F7C9\n\ +_08075B44:\n\ + cmp r4, 0x3F\n\ + bls _08075B4E\n\ + adds r0, r4, 0\n\ + subs r0, 0x40\n\ + b _08075B50\n\ +_08075B4E:\n\ + negs r0, r4\n\ +_08075B50:\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + ldr r0, _08075BAC @ =gUnknown_0202F7C8\n\ +_08075B56:\n\ + ldrb r0, [r0]\n\ + bl sub_8079E90\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r1, r4, 24\n\ + asrs r1, 24\n\ + adds r0, r1\n\ + lsls r0, 16\n\ + lsrs r6, r0, 16\n\ + lsls r0, r6, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x2\n\ + bgt _08075B74\n\ + movs r6, 0x3\n\ +_08075B74:\n\ + ldr r5, _08075BB0 @ =gUnknown_0202F7C9\n\ + ldrb r0, [r5]\n\ + movs r1, 0x2\n\ + bl sub_8077ABC\n\ + adds r4, r0, 0\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + ldrb r0, [r5]\n\ + movs r1, 0x3\n\ + bl sub_8077ABC\n\ + adds r2, r0, 0\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + lsls r3, r6, 24\n\ + lsrs r3, 24\n\ + adds r0, r7, 0\n\ + adds r1, r4, 0\n\ + bl CreateSpriteAndAnimate\n\ + ldr r1, _08075BB4 @ =gUnknown_0202F7B2\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08075BAC: .4byte gUnknown_0202F7C8\n\ +_08075BB0: .4byte gUnknown_0202F7C9\n\ +_08075BB4: .4byte gUnknown_0202F7B2\n\ + .syntax divided\n"); +} +#endif + +void sub_8075BB8(void) +{ + const u8 *ptr = gUnknown_0202F7A4; + TaskFunc taskFunc; + u8 taskPriority; + u8 taskId; + u8 r0; + s32 i; + + gUnknown_0202F7A4++; + taskFunc = (TaskFunc)(ptr[1] + (gUnknown_0202F7A4[1] << 8) + (gUnknown_0202F7A4[2] << 16) + (gUnknown_0202F7A4[3] << 24)); + gUnknown_0202F7A4 = ptr + 5; + taskPriority = ptr[5]; + gUnknown_0202F7A4 = ptr + 6; + r0 = ptr[6]; + gUnknown_0202F7A4 = ptr + 7; + for (i = 0; i < r0; i++) + { + gBattleAnimArgs[i] = gUnknown_0202F7A4[0] | (gUnknown_0202F7A4[1] << 8); + gUnknown_0202F7A4 += 2; + } + taskId = CreateTask(taskFunc, taskPriority); + taskFunc(taskId); + gUnknown_0202F7B2++; +} + +void ma04_wait_countdown(void) +{ + const u8 *ptr = gUnknown_0202F7A4; + + gUnknown_0202F7A4++; + gUnknown_0202F7B0 = ptr[1]; + if (gUnknown_0202F7B0 == 0) + gUnknown_0202F7B0 = -1; + gUnknown_0202F7A4++; + gUnknown_0202F7AC = move_anim_waiter; +} + +void sub_8075C74(void) +{ + if (gUnknown_0202F7B2 == 0) + { + gUnknown_0202F7A4++; + gUnknown_0202F7B0 = 0; + } + else + { + gUnknown_0202F7B0 = 1; + } +} + +void nullsub_53(void) +{ +} + +void nullsub_88(void) +{ +} + +void sub_8075CB0(void) +{ + s32 i; + int zero = 0; + + if (gUnknown_0202F7B2 != 0 || gUnknown_0202F7B3 != 0 + || gUnknown_0202F7C2[0] != 0xFF || gUnknown_0202F7C2[1] != 0xFF) + { + gUnknown_03004AF0 = 0; + gUnknown_0202F7B0 = 1; + return; + } + + if (IsSEPlaying()) + { + gUnknown_03004AF0++; + if (gUnknown_03004AF0 <= 0x5A) + { + gUnknown_0202F7B0 = 1; + return; + } + else + { + m4aMPlayStop(&gMPlay_SE1); + m4aMPlayStop(&gMPlay_SE2); + } + } + gUnknown_03004AF0 = 0; + for (i = 0; i < 8; i++) + { + if (gUnknown_03004B10[i] != 0xFFFF) + { + FreeSpriteTilesByTag(gBattleAnimPicTable[gUnknown_03004B10[i]].tag); + FreeSpritePaletteByTag(gBattleAnimPicTable[gUnknown_03004B10[i]].tag); + gUnknown_03004B10[i] |= 0xFFFF; + } + } + if (zero == 0) + { + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256); + if (sub_8076BE0() == 0) + { + sub_8079E24(); + sub_8043EB4(1); + } + gUnknown_0202F7B1 = 0; + } +} + +void ma09_play_sound(void) +{ + const u8 *ptr = gUnknown_0202F7A4; + + gUnknown_0202F7A4++; + PlaySE(ptr[1] | (gUnknown_0202F7A4[1] << 8)); + gUnknown_0202F7A4 += 2; +} + +extern void task_pA_ma0A_obj_to_bg_pal(u8); +extern bool8 b_side_obj__get_some_boolean(u8); +extern void sub_8076034(u8, u8); + +void sub_8075DE0(void) +{ + const u8 *ptr = gUnknown_0202F7A4; + u8 r6; + u8 r5; + u8 r0; + u8 r7; + u16 r4; + u8 taskId; - r4 |= temp << 8; - LoadCompressedObjectPic() + gUnknown_0202F7A4++; + r6 = ptr[1]; + if (r6 == 0) + r6 = 2; + else if (r6 == 1) + r6 = 3; + if (r6 == 0 || r6 == 2) + r5 = gUnknown_0202F7C8; + else + r5 = gUnknown_0202F7C9; + if (b_side_obj__get_some_boolean(r5)) + { + r0 = battle_get_per_side_status(r5); + r0 += 0xFF; + if (r0 <= 1 || sub_8076BE0() != 0) + r7 = 0; + else + r7 = 1; + sub_8076034(r5, r7); + r4 = gUnknown_02024BE0[r5]; + taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10); + gTasks[taskId].data[0] = r4; + gTasks[taskId].data[1] = gSprites[r4].pos1.x + gSprites[r4].pos2.x; + gTasks[taskId].data[2] = gSprites[r4].pos1.y + gSprites[r4].pos2.y; + if (r7 == 0) + { + gTasks[taskId].data[3] = gUnknown_030042C0; + gTasks[taskId].data[4] = gUnknown_030041B4; + } + else + { + gTasks[taskId].data[3] = gUnknown_03004288; + gTasks[taskId].data[4] = gUnknown_03004280; + } + gTasks[taskId].data[5] = r7; + gTasks[taskId].data[6] = r5; + gUnknown_0202F7C2[0] = taskId; + + } + r5 ^= 2; + if (r6 > 1 && b_side_obj__get_some_boolean(r5)) + { + r0 = battle_get_per_side_status(r5); + r0 += 0xFF; + if (r0 <= 1 || sub_8076BE0() != 0) + r7 = 0; + else + r7 = 1; + sub_8076034(r5, r7); + r4 = gUnknown_02024BE0[r5]; + taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10); + gTasks[taskId].data[0] = r4; + gTasks[taskId].data[1] = gSprites[r4].pos1.x + gSprites[r4].pos2.x; + gTasks[taskId].data[2] = gSprites[r4].pos1.y + gSprites[r4].pos2.y; + if (r7 == 0) + { + gTasks[taskId].data[3] = gUnknown_030042C0; + gTasks[taskId].data[4] = gUnknown_030041B4; + } + else + { + gTasks[taskId].data[3] = gUnknown_03004288; + gTasks[taskId].data[4] = gUnknown_03004280; + } + gTasks[taskId].data[5] = r7; + gTasks[taskId].data[6] = r5; + gUnknown_0202F7C2[1] = taskId; + } + gUnknown_0202F7A4++; +} + +extern u8 sub_8078874(u8); + +#ifdef NONMATCHING +bool8 b_side_obj__get_some_boolean(u8 a) +{ + if (sub_8076BE0() != 0) + { + if (a == gUnknown_0202F7C8) + return TRUE; + else + return FALSE; + } + if (sub_8078874(a) == 0) + return FALSE; + if (sub_8076BE0() != 0) + return TRUE; + if ((EWRAM_17800[a].unk0 & 1) == 0) + return TRUE; + if (gSprites[gUnknown_02024BE0[a]].invisible) + return FALSE; + return TRUE; +} +#else +__attribute__((naked)) +bool8 b_side_obj__get_some_boolean(u8 a) +{ + asm(".syntax unified\n\ + push {r4,r5,lr}\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + adds r5, r4, 0\n\ + bl sub_8076BE0\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08075FDC\n\ + ldr r0, _08075FD8 @ =gUnknown_0202F7C8\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + beq _0807601C\n\ + b _0807602C\n\ + .align 2, 0\n\ +_08075FD8: .4byte gUnknown_0202F7C8\n\ +_08075FDC:\n\ + adds r0, r4, 0\n\ + bl sub_8078874\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _0807602C\n\ + bl sub_8076BE0\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _0807601C\n\ + lsls r0, r5, 2\n\ + ldr r1, _08076020 @ =0x02017800\n\ + adds r0, r1\n\ + ldrb r1, [r0]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0807601C\n\ + ldr r2, _08076024 @ =gSprites\n\ + ldr r0, _08076028 @ =gUnknown_02024BE0\n\ + adds r0, r5, r0\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + adds r0, 0x3E\n\ + ldrb r0, [r0]\n\ + lsls r0, 29\n\ + cmp r0, 0\n\ + blt _0807602C\n\ +_0807601C:\n\ + movs r0, 0x1\n\ + b _0807602E\n\ + .align 2, 0\n\ +_08076020: .4byte 0x02017800\n\ +_08076024: .4byte gSprites\n\ +_08076028: .4byte gUnknown_02024BE0\n\ +_0807602C:\n\ + movs r0, 0\n\ +_0807602E:\n\ + pop {r4,r5}\n\ + pop {r1}\n\ + bx r1\n\ + .syntax divided\n"); +} +#endif + +struct UnknownStruct2 +{ + void *unk10; + void *unk14; + u8 unk18; +}; + +struct BGCntrlBitfield +{ + volatile u16 priority:2; + volatile u16 charBaseBlock:2; + volatile u16 field_0_2:4; + volatile u16 field_1_0:5; + volatile u16 areaOverflowMode:1; + volatile u16 screenSize:2; +}; + +#define REG_BGCNT_BITFIELD(n) (*(struct BGCntrlBitfield *)REG_ADDR_BG##n##CNT) + +extern void sub_8078914(); +extern u8 sub_80AEB1C(); +extern void sub_8076380(); +extern void sub_80E4EF8(int, int, int, int, u16, u8, int); + +void sub_8076034(u8 a, u8 b) +{ + volatile u8 pointlessZero; + u16 *addr2; + u8 spriteId; + + if (b == 0) + { + struct UnknownStruct2 s; + u8 *addr; + u32 size; + u8 r2; + u16 *addr3; + + sub_8078914(&s); + addr = s.unk10; + size = 0x2000; + while (1) + { + DmaFill32(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaFill32(3, 0, addr, size); + break; + } + } + pointlessZero = 0; + pointlessZero = 0; + addr2 = (void *)s.unk14; + DmaFill16(3, 0xFF, addr2, 0x1000); + + REG_BGCNT_BITFIELD(1).priority = 2; + REG_BGCNT_BITFIELD(1).screenSize = 1; + REG_BGCNT_BITFIELD(1).areaOverflowMode = 0; + + spriteId = gUnknown_02024BE0[a]; + gUnknown_030042C0 = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32; + if (sub_8076BE0() != 0 && sub_80AEB1C(EWRAM_19348) != 0) + gUnknown_030042C0--; + gUnknown_030041B4 = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32; + gSprites[gUnknown_02024BE0[a]].invisible = TRUE; + + REG_BG1HOFS = gUnknown_030042C0; + REG_BG1VOFS = gUnknown_030041B4; + + LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, s.unk18 * 16, 32); + addr3 = (u16 *)PLTT + s.unk18 * 16; + DmaCopy32(3, gPlttBufferUnfaded + 0x100 + a * 16, addr3, 32); + + if (sub_8076BE0() != 0) + r2 = 0; + else + r2 = battle_get_per_side_status(a); + sub_80E4EF8(0, 0, r2, s.unk18, (u32)s.unk10, (((s32)s.unk14 - VRAM) / 2048), REG_BGCNT_BITFIELD(1).charBaseBlock); + if (sub_8076BE0() != 0) + sub_8076380(); + } + else + { + u8 *addr; + u32 size; + u16 *addr3; + + addr = (void *)(VRAM + 0x6000); + size = 0x2000; + while (1) + { + DmaFill32(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaFill32(3, 0, addr, size); + break; + } + } + pointlessZero = 0; + pointlessZero = 0; + addr2 = (void *)(VRAM + 0xF000); + DmaFill32(3, 0, addr2, 0x800); + + REG_BGCNT_BITFIELD(2).priority = 2; + REG_BGCNT_BITFIELD(2).screenSize = 1; + REG_BGCNT_BITFIELD(2).areaOverflowMode = 0; + + spriteId = gUnknown_02024BE0[a]; + gUnknown_03004288 = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32; + gUnknown_03004280 = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32; + gSprites[gUnknown_02024BE0[a]].invisible = TRUE; + + REG_BG2HOFS = gUnknown_03004288; + REG_BG2VOFS = gUnknown_03004280; + + LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, 0x90, 32); + addr3 = (void *)(PLTT + 0x120); + DmaCopy32(3, gPlttBufferUnfaded + 0x100 + a * 16, addr3, 32); + + sub_80E4EF8(0, 0, battle_get_per_side_status(a), 9, 0x6000, 0x1E, REG_BGCNT_BITFIELD(2).charBaseBlock); + } } -*/ |