diff options
author | DizzyEggg <jajkodizzy@wp.pl> | 2017-08-21 21:11:42 +0200 |
---|---|---|
committer | DizzyEggg <jajkodizzy@wp.pl> | 2017-08-21 21:11:42 +0200 |
commit | a10592da1afeec6945e31f8321b94990c503e937 (patch) | |
tree | 2bead53b06ec867dd602e43aa7d01dee78683db9 | |
parent | a5b770a5112914468158842885b0b37f5425c887 (diff) |
transition main functions are done
-rw-r--r-- | asm/battle_transition.s | 1316 | ||||
-rw-r--r-- | data/battle_transition.s | 32 | ||||
-rw-r--r-- | src/battle_transition.c | 556 |
3 files changed, 501 insertions, 1403 deletions
diff --git a/asm/battle_transition.s b/asm/battle_transition.s index fbed395e5..2517b2aad 100644 --- a/asm/battle_transition.s +++ b/asm/battle_transition.s @@ -7,1322 +7,6 @@ .text - thumb_func_start Phase2_Transition8_Func1 -Phase2_Transition8_Func1: @ 811CA94 - push {r4-r6,lr} - adds r4, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - movs r2, 0 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0xC] - movs r0, 0x1 - strh r0, [r4, 0xE] - ldr r1, _0811CB08 @ =0x0200c000 - movs r0, 0x3F - strh r0, [r1, 0x2] - strh r2, [r1, 0x4] - movs r0, 0xA0 - strh r0, [r1, 0x8] - ldr r3, _0811CB0C @ =gUnknown_03005560 - adds r6, r1, 0 - movs r5, 0xF0 -_0811CABE: - lsls r0, r2, 1 - adds r0, r3 - ldrh r1, [r6, 0x14] - strh r1, [r0] - adds r0, r2, 0 - adds r0, 0xA0 - lsls r0, 1 - adds r0, r3 - strh r5, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x9F - bls _0811CABE - ldr r2, _0811CB10 @ =0x04000200 - ldrh r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strh r0, [r2] - ldr r2, _0811CB14 @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x10 - orrs r0, r1 - strh r0, [r2] - ldr r0, _0811CB18 @ =sub_811CC28 - bl SetVBlankCallback - ldr r0, _0811CB1C @ =sub_811CCB0 - bl SetHBlankCallback - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x1 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811CB08: .4byte 0x0200c000 -_0811CB0C: .4byte gUnknown_03005560 -_0811CB10: .4byte 0x04000200 -_0811CB14: .4byte REG_DISPSTAT -_0811CB18: .4byte sub_811CC28 -_0811CB1C: .4byte sub_811CCB0 - thumb_func_end Phase2_Transition8_Func1 - - thumb_func_start Phase2_Transition8_Func2 -Phase2_Transition8_Func2: @ 811CB20 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r2, r0, 0 - ldr r1, _0811CB98 @ =0x0200c000 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldrh r0, [r2, 0xC] - lsls r0, 16 - asrs r0, 24 - ldrh r3, [r2, 0xA] - adds r0, r3 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - mov r12, r1 - cmp r0, 0xF0 - ble _0811CB4A - movs r0, 0xF0 - strh r0, [r2, 0xA] -_0811CB4A: - ldrh r4, [r2, 0xC] - movs r0, 0xC - ldrsh r1, [r2, r0] - ldr r0, _0811CB9C @ =0x00000fff - ldrh r3, [r2, 0xE] - cmp r1, r0 - bgt _0811CB5C - adds r0, r4, r3 - strh r0, [r2, 0xC] -_0811CB5C: - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, 0x7F - bgt _0811CB68 - lsls r0, r3, 1 - strh r0, [r2, 0xE] -_0811CB68: - movs r5, 0 - ldr r7, _0811CBA0 @ =gUnknown_03004DE0 - movs r1, 0xA0 - lsls r1, 1 - adds r1, r7 - mov r8, r1 - mov r6, r12 -_0811CB76: - lsls r0, r5, 1 - adds r3, r0, r7 - mov r1, r8 - adds r4, r0, r1 - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _0811CBA4 - ldrh r0, [r2, 0xA] - ldrh r1, [r6, 0x14] - adds r0, r1 - strh r0, [r3] - ldrh r1, [r2, 0xA] - movs r0, 0xF0 - subs r0, r1 - b _0811CBB4 - .align 2, 0 -_0811CB98: .4byte 0x0200c000 -_0811CB9C: .4byte 0x00000fff -_0811CBA0: .4byte gUnknown_03004DE0 -_0811CBA4: - ldrh r0, [r6, 0x14] - ldrh r1, [r2, 0xA] - subs r0, r1 - strh r0, [r3] - ldrh r0, [r2, 0xA] - lsls r0, 8 - movs r1, 0xF1 - orrs r0, r1 -_0811CBB4: - strh r0, [r4] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x9F - bls _0811CB76 - movs r3, 0xA - ldrsh r0, [r2, r3] - cmp r0, 0xEF - ble _0811CBCE - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] -_0811CBCE: - mov r1, r12 - ldrb r0, [r1] - adds r0, 0x1 - ldrb r1, [r1] - mov r2, r12 - strb r0, [r2] - movs r0, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end Phase2_Transition8_Func2 - - thumb_func_start Phase2_Transition8_Func3 -Phase2_Transition8_Func3: @ 811CBE8 - push {lr} - ldr r1, _0811CC18 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811CC1C @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811CC20 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D6D4 - ldr r0, _0811CC24 @ =Phase2Task_Transition8 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811CC18: .4byte 0x040000b0 -_0811CC1C: .4byte 0x0000c5ff -_0811CC20: .4byte 0x00007fff -_0811CC24: .4byte Phase2Task_Transition8 - thumb_func_end Phase2_Transition8_Func3 - - thumb_func_start sub_811CC28 -sub_811CC28: @ 811CC28 - push {r4,lr} - ldr r4, _0811CC84 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811CC88 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811CC8C @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl VBlankCB_BattleTransition - ldr r2, _0811CC90 @ =REG_WININ - ldr r1, _0811CC94 @ =0x0200c000 - ldrh r0, [r1, 0x2] - strh r0, [r2] - adds r2, 0x2 - ldrh r0, [r1, 0x4] - strh r0, [r2] - subs r2, 0x6 - ldrh r0, [r1, 0x8] - strh r0, [r2] - ldrb r0, [r1] - cmp r0, 0 - beq _0811CC70 - ldr r1, _0811CC98 @ =0x040000d4 - ldr r0, _0811CC9C @ =gUnknown_03004DE0 - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _0811CCA0 @ =0x80000140 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811CC70: - ldr r0, _0811CCA4 @ =gUnknown_030056A0 - str r0, [r4] - ldr r0, _0811CCA8 @ =REG_WIN0H - str r0, [r4, 0x4] - ldr r0, _0811CCAC @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811CC84: .4byte 0x040000b0 -_0811CC88: .4byte 0x0000c5ff -_0811CC8C: .4byte 0x00007fff -_0811CC90: .4byte REG_WININ -_0811CC94: .4byte 0x0200c000 -_0811CC98: .4byte 0x040000d4 -_0811CC9C: .4byte gUnknown_03004DE0 -_0811CCA0: .4byte 0x80000140 -_0811CCA4: .4byte gUnknown_030056A0 -_0811CCA8: .4byte REG_WIN0H -_0811CCAC: .4byte 0xa2400001 - thumb_func_end sub_811CC28 - - thumb_func_start sub_811CCB0 -sub_811CCB0: @ 811CCB0 - ldr r1, _0811CCD0 @ =gUnknown_03004DE0 - ldr r0, _0811CCD4 @ =REG_VCOUNT - ldrh r0, [r0] - lsls r0, 1 - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _0811CCD8 @ =REG_BG1HOFS - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - bx lr - .align 2, 0 -_0811CCD0: .4byte gUnknown_03004DE0 -_0811CCD4: .4byte REG_VCOUNT -_0811CCD8: .4byte REG_BG1HOFS - thumb_func_end sub_811CCB0 - - thumb_func_start Phase2Task_Transition9 -Phase2Task_Transition9: @ 811CCDC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811CD0C @ =gUnknown_083FD8B0 - ldr r2, _0811CD10 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811CCEE: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811CCEE - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811CD0C: .4byte gUnknown_083FD8B0 -_0811CD10: .4byte gTasks - thumb_func_end Phase2Task_Transition9 - - thumb_func_start sub_811CD14 -sub_811CD14: @ 811CD14 - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - ldr r1, _0811CD88 @ =0x0200c000 - movs r2, 0 - movs r0, 0xBF - strh r0, [r1, 0xE] - strh r2, [r1, 0x12] - movs r0, 0x1E - strh r0, [r1, 0x2] - movs r0, 0x3F - strh r0, [r1, 0x4] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r2, _0811CD8C @ =gUnknown_03005560 - movs r4, 0 - movs r3, 0xF0 -_0811CD3E: - lsls r0, r1, 1 - adds r0, r2 - strh r4, [r0] - adds r0, r1, 0 - adds r0, 0xA0 - lsls r0, 1 - adds r0, r2 - strh r3, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9F - bls _0811CD3E - ldr r2, _0811CD90 @ =0x04000200 - ldrh r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strh r0, [r2] - ldr r2, _0811CD94 @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x10 - orrs r0, r1 - strh r0, [r2] - ldr r0, _0811CD98 @ =sub_811CFAC - bl SetHBlankCallback - ldr r0, _0811CD9C @ =sub_811CEE4 - bl SetVBlankCallback - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811CD88: .4byte 0x0200c000 -_0811CD8C: .4byte gUnknown_03005560 -_0811CD90: .4byte 0x04000200 -_0811CD94: .4byte REG_DISPSTAT -_0811CD98: .4byte sub_811CFAC -_0811CD9C: .4byte sub_811CEE4 - thumb_func_end sub_811CD14 - - thumb_func_start sub_811CDA0 -sub_811CDA0: @ 811CDA0 - push {r4-r6,lr} - sub sp, 0x10 - adds r6, r0, 0 - ldr r1, _0811CE08 @ =gUnknown_083FD8C4 - mov r0, sp - movs r2, 0x10 - bl memcpy - movs r5, 0 - movs r4, 0 -_0811CDB4: - ldr r0, _0811CE0C @ =sub_811CFD0 - bl CreateInvisibleSprite - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _0811CE10 @ =gSprites - adds r2, r1, r0 - movs r0, 0xF0 - strh r0, [r2, 0x20] - strh r4, [r2, 0x22] - lsls r1, r5, 16 - asrs r1, 16 - lsls r0, r1, 1 - add r0, sp - ldrh r0, [r0] - strh r0, [r2, 0x38] - adds r1, 0x1 - lsls r1, 16 - lsls r0, r4, 16 - movs r3, 0xA0 - lsls r3, 13 - adds r0, r3 - lsrs r4, r0, 16 - lsrs r5, r1, 16 - asrs r1, 16 - cmp r1, 0x7 - ble _0811CDB4 - ldrh r0, [r2, 0x3A] - adds r0, 0x1 - strh r0, [r2, 0x3A] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - movs r0, 0 - add sp, 0x10 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811CE08: .4byte gUnknown_083FD8C4 -_0811CE0C: .4byte sub_811CFD0 -_0811CE10: .4byte gSprites - thumb_func_end sub_811CDA0 - - thumb_func_start sub_811CE14 -sub_811CE14: @ 811CE14 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _0811CE44 @ =0x0200c000 - ldrb r1, [r0] - movs r1, 0 - strb r1, [r0] - movs r1, 0x20 - ldrsh r0, [r0, r1] - cmp r0, 0x7 - ble _0811CE3A - movs r0, 0x1 - negs r0, r0 - ldr r2, _0811CE48 @ =0x00007fff - movs r1, 0x10 - bl BlendPalettes - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0811CE3A: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811CE44: .4byte 0x0200c000 -_0811CE48: .4byte 0x00007fff - thumb_func_end sub_811CE14 - - thumb_func_start sub_811CE4C -sub_811CE4C: @ 811CE4C - push {r4-r6,lr} - adds r6, r0, 0 - ldr r4, _0811CE9C @ =0x0200c000 - ldrb r0, [r4] - movs r5, 0 - strb r5, [r4] - ldr r1, _0811CEA0 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811CEA4 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811CEA8 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - bl SetHBlankCallback - movs r0, 0xF0 - strh r0, [r4, 0x6] - strh r5, [r4, 0x12] - movs r0, 0xFF - strh r0, [r4, 0xE] - movs r0, 0x3F - strh r0, [r4, 0x2] - ldr r0, _0811CEAC @ =sub_811CF74 - bl SetVBlankCallback - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811CE9C: .4byte 0x0200c000 -_0811CEA0: .4byte 0x040000b0 -_0811CEA4: .4byte 0x0000c5ff -_0811CEA8: .4byte 0x00007fff -_0811CEAC: .4byte sub_811CF74 - thumb_func_end sub_811CE4C - - thumb_func_start sub_811CEB0 -sub_811CEB0: @ 811CEB0 - push {lr} - ldr r1, _0811CEDC @ =0x0200c000 - ldrh r0, [r1, 0x12] - adds r0, 0x1 - strh r0, [r1, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x10 - bls _0811CED4 - bl sub_811D6D4 - ldr r0, _0811CEE0 @ =Phase2Task_Transition9 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811CED4: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811CEDC: .4byte 0x0200c000 -_0811CEE0: .4byte Phase2Task_Transition9 - thumb_func_end sub_811CEB0 - - thumb_func_start sub_811CEE4 -sub_811CEE4: @ 811CEE4 - push {r4,lr} - ldr r4, _0811CF48 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811CF4C @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811CF50 @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl VBlankCB_BattleTransition - ldr r2, _0811CF54 @ =REG_BLDCNT - ldr r1, _0811CF58 @ =0x0200c000 - ldrh r0, [r1, 0xE] - strh r0, [r2] - subs r2, 0x8 - ldrh r0, [r1, 0x2] - strh r0, [r2] - adds r2, 0x2 - ldrh r0, [r1, 0x4] - strh r0, [r2] - subs r2, 0x6 - ldrh r0, [r1, 0x6] - strh r0, [r2] - ldrb r0, [r1] - cmp r0, 0 - beq _0811CF32 - ldr r1, _0811CF5C @ =0x040000d4 - ldr r0, _0811CF60 @ =gUnknown_03004DE0 - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _0811CF64 @ =0x80000140 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811CF32: - ldr r0, _0811CF68 @ =gUnknown_030056A0 - str r0, [r4] - ldr r0, _0811CF6C @ =REG_WIN0H - str r0, [r4, 0x4] - ldr r0, _0811CF70 @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811CF48: .4byte 0x040000b0 -_0811CF4C: .4byte 0x0000c5ff -_0811CF50: .4byte 0x00007fff -_0811CF54: .4byte REG_BLDCNT -_0811CF58: .4byte 0x0200c000 -_0811CF5C: .4byte 0x040000d4 -_0811CF60: .4byte gUnknown_03004DE0 -_0811CF64: .4byte 0x80000140 -_0811CF68: .4byte gUnknown_030056A0 -_0811CF6C: .4byte REG_WIN0H -_0811CF70: .4byte 0xa2400001 - thumb_func_end sub_811CEE4 - - thumb_func_start sub_811CF74 -sub_811CF74: @ 811CF74 - push {lr} - bl VBlankCB_BattleTransition - ldr r1, _0811CFA4 @ =REG_BLDY - ldr r2, _0811CFA8 @ =0x0200c000 - ldrh r0, [r2, 0x12] - strh r0, [r1] - subs r1, 0x4 - ldrh r0, [r2, 0xE] - strh r0, [r1] - subs r1, 0x8 - ldrh r0, [r2, 0x2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x4] - strh r0, [r1] - subs r1, 0xA - ldrh r0, [r2, 0x6] - strh r0, [r1] - adds r1, 0x4 - ldrh r0, [r2, 0x8] - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0811CFA4: .4byte REG_BLDY -_0811CFA8: .4byte 0x0200c000 - thumb_func_end sub_811CF74 - - thumb_func_start sub_811CFAC -sub_811CFAC: @ 811CFAC - ldr r2, _0811CFC4 @ =REG_BLDY - ldr r1, _0811CFC8 @ =gUnknown_03004DE0 - ldr r0, _0811CFCC @ =REG_VCOUNT - ldrh r0, [r0] - lsls r0, 1 - movs r3, 0xF0 - lsls r3, 3 - adds r1, r3 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - bx lr - .align 2, 0 -_0811CFC4: .4byte REG_BLDY -_0811CFC8: .4byte gUnknown_03004DE0 -_0811CFCC: .4byte REG_VCOUNT - thumb_func_end sub_811CFAC - - thumb_func_start sub_811CFD0 -sub_811CFD0: @ 811CFD0 - push {r4-r6,lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x38] - movs r2, 0x38 - ldrsh r0, [r3, r2] - cmp r0, 0 - beq _0811CFF8 - subs r0, r1, 0x1 - strh r0, [r3, 0x38] - movs r1, 0x3A - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _0811D0AA - ldr r0, _0811CFF4 @ =0x0200c000 - ldrb r1, [r0] - movs r1, 0x1 - strb r1, [r0] - b _0811D0AA - .align 2, 0 -_0811CFF4: .4byte 0x0200c000 -_0811CFF8: - movs r2, 0x22 - ldrsh r1, [r3, r2] - lsls r1, 1 - ldr r0, _0811D0B0 @ =gUnknown_03004DE0 - adds r6, r1, r0 - movs r2, 0xA0 - lsls r2, 1 - adds r0, r2 - adds r5, r1, r0 - movs r4, 0 -_0811D00C: - lsls r1, r4, 1 - adds r2, r1, r6 - ldrh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 24 - strh r0, [r2] - adds r1, r5 - ldrh r0, [r3, 0x20] - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x13 - bls _0811D00C - movs r1, 0x20 - ldrsh r0, [r3, r1] - ldrh r2, [r3, 0x20] - cmp r0, 0 - bne _0811D046 - movs r0, 0x2E - ldrsh r1, [r3, r0] - movs r0, 0x80 - lsls r0, 5 - cmp r1, r0 - bne _0811D046 - movs r0, 0x1 - strh r0, [r3, 0x30] -_0811D046: - adds r1, r2, 0 - subs r1, 0x10 - strh r1, [r3, 0x20] - ldrh r0, [r3, 0x2E] - adds r0, 0x80 - strh r0, [r3, 0x2E] - lsls r1, 16 - cmp r1, 0 - bge _0811D05C - movs r0, 0 - strh r0, [r3, 0x20] -_0811D05C: - movs r1, 0x2E - ldrsh r0, [r3, r1] - movs r1, 0x80 - lsls r1, 5 - cmp r0, r1 - ble _0811D06A - strh r1, [r3, 0x2E] -_0811D06A: - movs r0, 0x3A - ldrsh r2, [r3, r0] - cmp r2, 0 - beq _0811D07A - ldr r0, _0811D0B4 @ =0x0200c000 - ldrb r1, [r0] - movs r1, 0x1 - strb r1, [r0] -_0811D07A: - movs r1, 0x30 - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _0811D0AA - ldr r4, _0811D0B4 @ =0x0200c000 - cmp r2, 0 - beq _0811D09E - movs r2, 0x20 - ldrsh r0, [r4, r2] - cmp r0, 0x6 - ble _0811D0AA - ldrh r0, [r3, 0x32] - adds r1, r0, 0x1 - strh r1, [r3, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _0811D0AA -_0811D09E: - ldrh r0, [r4, 0x20] - adds r0, 0x1 - strh r0, [r4, 0x20] - adds r0, r3, 0 - bl DestroySprite -_0811D0AA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811D0B0: .4byte gUnknown_03004DE0 -_0811D0B4: .4byte 0x0200c000 - thumb_func_end sub_811CFD0 - - thumb_func_start Phase2Task_Transition10 -Phase2Task_Transition10: @ 811D0B8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811D0E8 @ =gUnknown_083FD8D4 - ldr r2, _0811D0EC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811D0CA: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811D0CA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811D0E8: .4byte gUnknown_083FD8D4 -_0811D0EC: .4byte gTasks - thumb_func_end Phase2Task_Transition10 - - thumb_func_start sub_811D0F0 -sub_811D0F0: @ 811D0F0 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - add r0, sp, 0x4 - add r1, sp, 0x8 - bl sub_811D6A8 - ldr r0, _0811D138 @ =gUnknown_083FD528 - ldr r1, [sp, 0x8] - movs r2, 0x10 - bl CpuSet - mov r1, sp - movs r2, 0xF0 - lsls r2, 8 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, [sp, 0x4] - ldr r2, _0811D13C @ =0x01000400 - mov r0, sp - bl CpuSet - ldr r0, _0811D140 @ =gFieldEffectObjectPalette10 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - add sp, 0xC - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811D138: .4byte gUnknown_083FD528 -_0811D13C: .4byte 0x01000400 -_0811D140: .4byte gFieldEffectObjectPalette10 - thumb_func_end sub_811D0F0 - - thumb_func_start sub_811D144 -sub_811D144: @ 811D144 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0811D186 - mov r0, sp - bl sub_811D690 - movs r0, 0x3 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - movs r1, 0xC - ldrsh r0, [r4, r1] - lsls r0, 5 - ldr r1, _0811D198 @ =gUnknown_083FD528 - adds r0, r1 - ldr r1, [sp] - movs r2, 0x10 - bl CpuSet - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0xD - ble _0811D186 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x10 - strh r0, [r4, 0xA] -_0811D186: - ldrh r0, [r4, 0xA] - subs r0, 0x1 - strh r0, [r4, 0xA] - movs r0, 0 - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811D198: .4byte gUnknown_083FD528 - thumb_func_end sub_811D144 - - thumb_func_start sub_811D19C -sub_811D19C: @ 811D19C - push {lr} - ldrh r1, [r0, 0xA] - subs r1, 0x1 - strh r1, [r0, 0xA] - lsls r1, 16 - cmp r1, 0 - bne _0811D1BC - bl sub_811D6D4 - ldr r0, _0811D1C4 @ =Phase2Task_Transition10 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0811D1BC: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811D1C4: .4byte Phase2Task_Transition10 - thumb_func_end sub_811D19C - - thumb_func_start Phase2Task_Transition11 -Phase2Task_Transition11: @ 811D1C8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0811D1F8 @ =gUnknown_083FD8E0 - ldr r2, _0811D1FC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0811D1DA: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0811D1DA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811D1F8: .4byte gUnknown_083FD8E0 -_0811D1FC: .4byte gTasks - thumb_func_end Phase2Task_Transition11 - - thumb_func_start sub_811D200 -sub_811D200: @ 811D200 - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_811D658 - bl dp12_8087EA4 - ldr r1, _0811D254 @ =0x0200c000 - movs r2, 0 - movs r0, 0x3F - strh r0, [r1, 0x2] - strh r2, [r1, 0x4] - movs r0, 0xA0 - strh r0, [r1, 0x8] - movs r1, 0 - ldr r2, _0811D258 @ =gUnknown_03004DE0 - movs r3, 0xF0 - adds r4, r2, 0 -_0811D222: - lsls r0, r1, 1 - adds r0, r2 - strh r3, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9F - bls _0811D222 - movs r0, 0xF0 - lsls r0, 3 - adds r1, r4, r0 - adds r0, r4, 0 - movs r2, 0xA0 - bl CpuSet - ldr r0, _0811D25C @ =sub_811D438 - bl SetVBlankCallback - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811D254: .4byte 0x0200c000 -_0811D258: .4byte gUnknown_03004DE0 -_0811D25C: .4byte sub_811D438 - thumb_func_end sub_811D200 - - thumb_func_start sub_811D260 -sub_811D260: @ 811D260 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0xC - mov r8, r0 - ldr r0, _0811D2D0 @ =0x0200c024 - ldr r6, _0811D2D4 @ =gUnknown_083FD8F4 - mov r2, r8 - movs r3, 0xA - ldrsh r1, [r2, r3] - lsls r4, r1, 2 - adds r4, r1 - lsls r4, 1 - adds r1, r4, r6 - movs r5, 0 - ldrsh r1, [r1, r5] - adds r2, r6, 0x2 - adds r2, r4, r2 - movs r3, 0 - ldrsh r2, [r2, r3] - adds r3, r6, 0x4 - adds r3, r4, r3 - movs r5, 0 - ldrsh r3, [r3, r5] - adds r5, r6, 0x6 - adds r4, r5 - movs r5, 0 - ldrsh r4, [r4, r5] - str r4, [sp] - movs r4, 0x1 - str r4, [sp, 0x4] - str r4, [sp, 0x8] - bl sub_811D8FC - mov r0, r8 - movs r2, 0xA - ldrsh r1, [r0, r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - adds r6, 0x8 - adds r0, r6 - ldrh r0, [r0] - mov r3, r8 - strh r0, [r3, 0xC] - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - movs r0, 0x1 - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811D2D0: .4byte 0x0200c024 -_0811D2D4: .4byte gUnknown_083FD8F4 - thumb_func_end sub_811D260 - - thumb_func_start sub_811D2D8 -sub_811D2D8: @ 811D2D8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - ldr r0, _0811D324 @ =0x0200c000 - ldrb r1, [r0] - movs r1, 0 - strb r1, [r0] - mov r8, r1 - mov r12, r1 - adds r6, r0, 0 - ldr r0, _0811D328 @ =gUnknown_03004DE0 - mov r9, r0 -_0811D2F4: - ldr r1, _0811D328 @ =gUnknown_03004DE0 - movs r2, 0x2A - ldrsh r0, [r6, r2] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsrs r3, r0, 8 - movs r4, 0xFF - ands r4, r0 - movs r1, 0xC - ldrsh r0, [r7, r1] - cmp r0, 0 - bne _0811D32C - movs r2, 0x28 - ldrsh r0, [r6, r2] - cmp r3, r0 - bge _0811D318 - ldrh r3, [r6, 0x28] -_0811D318: - lsls r0, r3, 16 - lsls r1, r4, 16 - cmp r0, r1 - ble _0811D344 - lsrs r3, r1, 16 - b _0811D344 - .align 2, 0 -_0811D324: .4byte 0x0200c000 -_0811D328: .4byte gUnknown_03004DE0 -_0811D32C: - lsls r0, r4, 16 - asrs r0, 16 - movs r2, 0x28 - ldrsh r1, [r6, r2] - cmp r0, r1 - ble _0811D33A - ldrh r4, [r6, 0x28] -_0811D33A: - lsls r0, r4, 16 - lsls r1, r3, 16 - cmp r0, r1 - bgt _0811D344 - lsrs r4, r1, 16 -_0811D344: - ldr r5, _0811D368 @ =0x0200c000 - movs r0, 0x2A - ldrsh r2, [r5, r0] - lsls r2, 1 - add r2, r9 - lsls r1, r3, 16 - asrs r1, 8 - lsls r0, r4, 16 - asrs r0, 16 - orrs r0, r1 - strh r0, [r2] - mov r1, r12 - cmp r1, 0 - beq _0811D36C - ldrh r0, [r7, 0x8] - adds r0, 0x1 - strh r0, [r7, 0x8] - b _0811D392 - .align 2, 0 -_0811D368: .4byte 0x0200c000 -_0811D36C: - adds r0, r5, 0 - adds r0, 0x24 - movs r1, 0x1 - movs r2, 0x1 - bl sub_811D978 - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - mov r2, r8 - lsls r0, r2, 16 - movs r1, 0x80 - lsls r1, 9 - adds r0, r1 - lsrs r2, r0, 16 - mov r8, r2 - asrs r0, 16 - cmp r0, 0xF - ble _0811D2F4 -_0811D392: - ldr r0, _0811D3AC @ =0x0200c000 - ldrb r1, [r0] - adds r1, 0x1 - ldrb r2, [r0] - strb r1, [r0] - movs r0, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811D3AC: .4byte 0x0200c000 - thumb_func_end sub_811D2D8 - - thumb_func_start sub_811D3B0 -sub_811D3B0: @ 811D3B0 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - ble _0811D3FC - ldr r1, _0811D3EC @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _0811D3F0 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _0811D3F4 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - bl sub_811D6D4 - ldr r0, _0811D3F8 @ =Phase2Task_Transition11 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - b _0811D414 - .align 2, 0 -_0811D3EC: .4byte 0x040000b0 -_0811D3F0: .4byte 0x0000c5ff -_0811D3F4: .4byte 0x00007fff -_0811D3F8: .4byte Phase2Task_Transition11 -_0811D3FC: - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - ldr r1, _0811D418 @ =gUnknown_083FD93A - movs r3, 0xA - ldrsh r0, [r2, r3] - subs r0, 0x1 - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2, 0xE] - movs r0, 0x1 -_0811D414: - pop {r1} - bx r1 - .align 2, 0 -_0811D418: .4byte gUnknown_083FD93A - thumb_func_end sub_811D3B0 - - thumb_func_start sub_811D41C -sub_811D41C: @ 811D41C - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0xE] - subs r0, 0x1 - strh r0, [r1, 0xE] - lsls r0, 16 - cmp r0, 0 - beq _0811D430 - movs r0, 0 - b _0811D434 -_0811D430: - movs r0, 0x1 - strh r0, [r1, 0x8] -_0811D434: - pop {r1} - bx r1 - thumb_func_end sub_811D41C - - thumb_func_start sub_811D438 -sub_811D438: @ 811D438 - push {r4,lr} - ldr r4, _0811D4A0 @ =0x040000b0 - ldrh r1, [r4, 0xA] - ldr r0, _0811D4A4 @ =0x0000c5ff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xA] - ldr r0, _0811D4A8 @ =0x00007fff - ands r0, r1 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xA] - bl VBlankCB_BattleTransition - ldr r2, _0811D4AC @ =0x0200c000 - ldrb r0, [r2] - cmp r0, 0 - beq _0811D46E - ldr r1, _0811D4B0 @ =0x040000d4 - ldr r0, _0811D4B4 @ =gUnknown_03004DE0 - str r0, [r1] - movs r3, 0xF0 - lsls r3, 3 - adds r0, r3 - str r0, [r1, 0x4] - ldr r0, _0811D4B8 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0811D46E: - ldr r1, _0811D4BC @ =REG_WININ - ldrh r0, [r2, 0x2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r2, 0x4] - strh r0, [r1] - subs r1, 0x6 - ldrh r0, [r2, 0x8] - strh r0, [r1] - ldr r2, _0811D4C0 @ =REG_WIN0H - ldr r0, _0811D4B4 @ =gUnknown_03004DE0 - movs r1, 0xF0 - lsls r1, 3 - adds r0, r1 - ldrh r1, [r0] - strh r1, [r2] - str r0, [r4] - str r2, [r4, 0x4] - ldr r0, _0811D4C4 @ =0xa2400001 - str r0, [r4, 0x8] - ldr r0, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811D4A0: .4byte 0x040000b0 -_0811D4A4: .4byte 0x0000c5ff -_0811D4A8: .4byte 0x00007fff -_0811D4AC: .4byte 0x0200c000 -_0811D4B0: .4byte 0x040000d4 -_0811D4B4: .4byte gUnknown_03004DE0 -_0811D4B8: .4byte 0x800000a0 -_0811D4BC: .4byte REG_WININ -_0811D4C0: .4byte REG_WIN0H -_0811D4C4: .4byte 0xa2400001 - thumb_func_end sub_811D438 - thumb_func_start sub_811D4C8 sub_811D4C8: @ 811D4C8 push {r4-r6,lr} diff --git a/data/battle_transition.s b/data/battle_transition.s index 95f5c4737..e15d03dd6 100644 --- a/data/battle_transition.s +++ b/data/battle_transition.s @@ -134,12 +134,12 @@ sPhase2_Transition8_Funcs:: @ 83FD8A4 .4byte Phase2_Transition8_Func3 .align 2 -gUnknown_083FD8B0:: @ 83FD8B0 - .4byte sub_811CD14 - .4byte sub_811CDA0 - .4byte sub_811CE14 - .4byte sub_811CE4C - .4byte sub_811CEB0 +sPhase2_Transition9_Funcs:: @ 83FD8B0 + .4byte Phase2_Transition9_Func1 + .4byte Phase2_Transition9_Func2 + .4byte Phase2_Transition9_Func3 + .4byte Phase2_Transition9_Func4 + .4byte Phase2_Transition9_Func5 .align 1 gUnknown_083FD8C4:: @ 83FD8C4 @@ -153,18 +153,18 @@ gUnknown_083FD8C4:: @ 83FD8C4 .2byte 5 .align 2 -gUnknown_083FD8D4:: @ 83FD8D4 - .4byte sub_811D0F0 - .4byte sub_811D144 - .4byte sub_811D19C +sPhase2_Transition10_Funcs:: @ 83FD8D4 + .4byte Phase2_Transition10_Func1 + .4byte Phase2_Transition10_Func2 + .4byte Phase2_Transition10_Func3 .align 2 -gUnknown_083FD8E0:: @ 83FD8E0 - .4byte sub_811D200 - .4byte sub_811D260 - .4byte sub_811D2D8 - .4byte sub_811D3B0 - .4byte sub_811D41C +sPhase2_Transition11_Funcs:: @ 83FD8E0 + .4byte Phase2_Transition11_Func1 + .4byte Phase2_Transition11_Func2 + .4byte Phase2_Transition11_Func3 + .4byte Phase2_Transition11_Func4 + .4byte Phase2_Transition11_Func5 .align 1 gUnknown_083FD8F4:: @ 83FD8F4 diff --git a/src/battle_transition.c b/src/battle_transition.c index 9ef012bb2..ae2e26d21 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -20,17 +20,16 @@ extern u16 gUnknown_03004DE0[][0x3C0]; struct TransitionData { - vs8 field_0; // now that's interesting - s8 field_1; - s16 WININ; - s16 WINOUT; - s16 field_6; - s16 WIN0V; - s16 field_A; - s16 field_C; - s16 BLDCNT; - s16 BLDALPHA; - s16 field_12; + vs8 VBlank_DMA; + u16 WININ; + u16 WINOUT; + u16 field_6; + u16 WIN0V; + u16 field_A; + u16 field_C; + u16 BLDCNT; + u16 BLDALPHA; + u16 field_12; s16 field_14; s16 field_16; s16 field_18; @@ -65,10 +64,10 @@ static void Phase2Task_Transition4(u8 taskID); static void Phase2Task_Transition5(u8 taskID); static void Phase2Task_Transition6(u8 taskID); static void Phase2Task_Transition7(u8 taskID); - void Phase2Task_Transition8(u8 taskID); - void Phase2Task_Transition9(u8 taskID); - void Phase2Task_Transition10(u8 taskID); - void Phase2Task_Transition11(u8 taskID); +static void Phase2Task_Transition8(u8 taskID); +static void Phase2Task_Transition9(u8 taskID); +static void Phase2Task_Transition10(u8 taskID); +static void Phase2Task_Transition11(u8 taskID); static void Phase2Task_Transition_Sydney(u8 taskID); static void Phase2Task_Transition_Phoebe(u8 taskID); static void Phase2Task_Transition_Glacia(u8 taskID); @@ -78,30 +77,30 @@ static bool8 Transition_Phase1(struct Task* task); static bool8 Transition_WaitForPhase1(struct Task* task); static bool8 Transition_Phase2(struct Task* task); static bool8 Transition_WaitForPhase2(struct Task* task); - static void VBlankCB_Phase2_Transition1(void); static void HBlankCB_Phase2_Transition1(void); - static void VBlankCB_Phase2_Transition2(void); static void HBlankCB_Phase2_Transition2(void); - static void VBlankCB0_Phase2_Transition3(void); static void VBlankCB1_Phase2_Transition3(void); - static void VBlankCB_Phase2_Transition5(void); - static void VBlankCB_Phase2_Transition6(void); static void HBlankCB_Phase2_Transition6(void); - static void VBlankCB_Phase2_Transition7(void); - +static void VBlankCB_Phase2_Transition8(void); +static void HBlankCB_Phase2_Transition8(void); +static void VBlankCB0_Phase2_Transition9(void); +static void VBlankCB1_Phase2_Transition9(void); +static void HBlankCB_Phase2_Transition9(void); static void VBlankCB0_Phase2_Mugshots(void); static void VBlankCB1_Phase2_Mugshots(void); static void HBlankCB_Phase2_Mugshots(void); +static void VBlankCB_Phase2_Transition11(void); void VBlankCB_BattleTransition(void); void sub_811D6E8(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5); void sub_811D6A8(u16** a0, u16** a1); +void sub_811D690(u16** a0); void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3); void sub_811D6D4(void); void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6); @@ -111,6 +110,7 @@ static void Mugshots_CreateOpponentPlayerSprites(struct Task* task); static void sub_811CA10(s16 spriteID, s16 value); static void sub_811CA28(s16 spriteID); static s16 sub_811CA44(s16 spriteID); +void sub_811CFD0(struct Sprite* sprite); // const data typedef bool8 (*TransitionState)(struct Task* task); @@ -125,6 +125,9 @@ extern const TransitionState sPhase2_Transition5_Funcs[]; extern const TransitionState sPhase2_Transition6_Funcs[]; extern const TransitionState sPhase2_Transition7_Funcs[]; extern const TransitionState sPhase2_Transition8_Funcs[]; +extern const TransitionState sPhase2_Transition9_Funcs[]; +extern const TransitionState sPhase2_Transition10_Funcs[]; +extern const TransitionState sPhase2_Transition11_Funcs[]; extern const TransitionState sPhase2_Mugshot_Transition_Funcs[]; extern const u16 gFieldEffectObjectPalette10[]; extern const u16 gUnknown_083FDB44[]; @@ -349,7 +352,7 @@ bool8 Phase2_Transition1_Func1(struct Task* task) bool8 Phase2_Transition1_Func2(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; task->data[1] += 4; task->data[2] += 8; @@ -361,14 +364,14 @@ bool8 Phase2_Transition1_Func2(struct Task* task) DestroyTask(taskID); } - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } static void VBlankCB_Phase2_Transition1(void) { VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0) + if (TRANSITION_STRUCT.VBlank_DMA) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); } @@ -413,7 +416,7 @@ bool8 Phase2_Transition2_Func2(struct Task* task) u8 i; u16 r3, r4; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; r4 = task->data[1]; r3 = task->data[2] >> 8; task->data[1] += 4224; @@ -428,14 +431,14 @@ bool8 Phase2_Transition2_Func2(struct Task* task) if (!gPaletteFade.active) DestroyTask(FindTaskIdByFunc(Phase2Task_Transition2)); - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } static void VBlankCB_Phase2_Transition2(void) { VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0) + if (TRANSITION_STRUCT.VBlank_DMA) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); } @@ -510,7 +513,7 @@ bool8 Phase2_Transition3_Func2(struct Task* task) bool8 Phase2_Transition3_Func3(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; if (task->data[3] == 0 || --task->data[3] == 0) { task->data[2]++; @@ -524,13 +527,13 @@ bool8 Phase2_Transition3_Func3(struct Task* task) sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } bool8 Phase2_Transition3_Func4(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; if (task->data[3] == 0 || --task->data[3] == 0) { task->data[1]--; @@ -544,13 +547,13 @@ bool8 Phase2_Transition3_Func4(struct Task* task) sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } bool8 Phase2_Transition3_Func5(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; task->data[4] += 8; task->data[5] -= 256; @@ -564,13 +567,13 @@ bool8 Phase2_Transition3_Func5(struct Task* task) task->data[3] = 0; } - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } bool8 Phase2_Transition3_Func6(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; if (task->data[2] < 1024) task->data[2] += 128; if (task->data[1] != 0) @@ -592,7 +595,7 @@ bool8 Phase2_Transition3_Func6(struct Task* task) SetVBlankCallback(VBlankCB1_Phase2_Transition3); } - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -600,7 +603,7 @@ static void Transition3_Vblank(void) { DmaStop(0); VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0) + if (TRANSITION_STRUCT.VBlank_DMA) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; @@ -757,7 +760,7 @@ bool8 Phase2_Transition5_Func1(struct Task* task) bool8 Phase2_Transition5_Func2(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, -1, 1, 1); do @@ -772,7 +775,7 @@ bool8 Phase2_Transition5_Func2(struct Task* task) task->tState++; } - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -781,7 +784,7 @@ bool8 Phase2_Transition5_Func3(struct Task* task) s16 r1, r3; vu8 var = 0; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, 240, TRANSITION_STRUCT.field_2E, 1, 1); @@ -810,13 +813,13 @@ bool8 Phase2_Transition5_Func3(struct Task* task) } } - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } bool8 Phase2_Transition5_Func4(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, 160, 1, 1); do @@ -831,7 +834,7 @@ bool8 Phase2_Transition5_Func4(struct Task* task) task->tState++; } - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -840,7 +843,7 @@ bool8 Phase2_Transition5_Func5(struct Task* task) s16 r1, r2, r3; vu8 var = 0; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, 0, TRANSITION_STRUCT.field_2E, 1, 1); @@ -870,13 +873,13 @@ bool8 Phase2_Transition5_Func5(struct Task* task) } } - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } bool8 Phase2_Transition5_Func6(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, 0, 1, 1); do @@ -894,7 +897,7 @@ bool8 Phase2_Transition5_Func6(struct Task* task) if (TRANSITION_STRUCT.field_28 > 120) task->tState++; - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -910,7 +913,7 @@ static void VBlankCB_Phase2_Transition5(void) { DmaStop(0); VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0 != 0) + if (TRANSITION_STRUCT.VBlank_DMA != 0) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; @@ -952,7 +955,7 @@ bool8 Phase2_Transition6_Func2(struct Task* task) s16 r3; u16 r4, r8; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; r3 = task->data[2] >> 8; r4 = task->data[1]; @@ -979,14 +982,14 @@ bool8 Phase2_Transition6_Func2(struct Task* task) if (task->data[4] != 0 && !gPaletteFade.active) DestroyTask(FindTaskIdByFunc(Phase2Task_Transition6)); - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } static void VBlankCB_Phase2_Transition6(void) { VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0) + if (TRANSITION_STRUCT.VBlank_DMA) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); } @@ -1032,7 +1035,7 @@ bool8 Phase2_Transition7_Func2(struct Task* task) u16* toStore; bool8 nextFunc; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; toStore = gUnknown_03004DE0[0]; r5 = task->data[2]; task->data[2] += 16; @@ -1052,7 +1055,7 @@ bool8 Phase2_Transition7_Func2(struct Task* task) if (nextFunc) task->tState++; - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -1068,7 +1071,7 @@ static void VBlankCB_Phase2_Transition7(void) { DmaStop(0); VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0 != 0) + if (TRANSITION_STRUCT.VBlank_DMA != 0) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; @@ -1175,7 +1178,7 @@ bool8 Phase2_Mugshot_Func3(struct Task* task) s16 value; s32 mergedValue; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; toStore = gUnknown_03004DE0[0]; r5 = task->data[1]; @@ -1212,7 +1215,7 @@ bool8 Phase2_Mugshot_Func3(struct Task* task) TRANSITION_STRUCT.field_18 -= 8; TRANSITION_STRUCT.field_1A += 8; - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -1221,7 +1224,7 @@ bool8 Phase2_Mugshot_Func4(struct Task* task) u8 i; u16* toStore; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; for (i = 0, toStore = gUnknown_03004DE0[0]; i < 160; i++, toStore++) { @@ -1241,7 +1244,7 @@ bool8 Phase2_Mugshot_Func4(struct Task* task) PlaySE(SE_BT_START); - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -1263,7 +1266,7 @@ bool8 Phase2_Mugshot_Func6(struct Task* task) TRANSITION_STRUCT.field_1A += 8; if (sub_811CA44(task->tMugshotPlayerID)) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; SetVBlankCallback(NULL); DmaStop(0); memset(gUnknown_03004DE0[0], 0, 0x140); @@ -1283,7 +1286,7 @@ bool8 Phase2_Mugshot_Func7(struct Task* task) { bool32 r6; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; r6 = TRUE; TRANSITION_STRUCT.field_18 -= 8; TRANSITION_STRUCT.field_1A += 8; @@ -1316,13 +1319,13 @@ bool8 Phase2_Mugshot_Func7(struct Task* task) if (task->data[4] == 0x50 && !r6) task->tState++; - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } bool8 Phase2_Mugshot_Func8(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; BlendPalettes(-1, 0x10, 0x7FFF); TRANSITION_STRUCT.BLDCNT = 0xFF; task->data[3] = 0; @@ -1333,14 +1336,14 @@ bool8 Phase2_Mugshot_Func8(struct Task* task) bool8 Phase2_Mugshot_Func9(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; task->data[3]++; memset(gUnknown_03004DE0[0], task->data[3], 0x140); if (task->data[3] > 15) task->tState++; - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -1356,7 +1359,7 @@ static void VBlankCB0_Phase2_Mugshots(void) { DmaStop(0); VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0 != 0) + if (TRANSITION_STRUCT.VBlank_DMA != 0) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); REG_BG0VOFS = TRANSITION_STRUCT.field_1C; REG_WININ = TRANSITION_STRUCT.WININ; @@ -1369,7 +1372,7 @@ static void VBlankCB1_Phase2_Mugshots(void) { DmaStop(0); VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0 != 0) + if (TRANSITION_STRUCT.VBlank_DMA != 0) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; DmaSet(0, gUnknown_03004DE0[1], ®_BLDY, 0xA2400001); @@ -1494,20 +1497,20 @@ static s16 sub_811CA44(s16 spriteID) #undef tMugshotPlayerID #undef tMugshotID -void Phase2Task_Transition8(u8 taskID) +static void Phase2Task_Transition8(u8 taskID) { while (sPhase2_Transition8_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition7_Func1(struct Task* task) +bool8 Phase2_Transition8_Func1(struct Task* task) { - u8 i; + u16 i; sub_811D658(); dp12_8087EA4(); task->data[2] = 256; - task->data[3] = 256; + task->data[3] = 1; TRANSITION_STRUCT.WININ = 63; TRANSITION_STRUCT.WINOUT = 0; TRANSITION_STRUCT.WIN0V = 160; @@ -1518,8 +1521,419 @@ bool8 Phase2_Transition7_Func1(struct Task* task) gUnknown_03004DE0[1][160 + i] = 0xF0; } - SetVBlankCallback(VBlankCB_Phase2_Transition7); + REG_IE |= 2; + REG_DISPSTAT |= 0x10; + + SetVBlankCallback(VBlankCB_Phase2_Transition8); + SetHBlankCallback(HBlankCB_Phase2_Transition8); + + task->tState++; + return 1; +} + +bool8 Phase2_Transition8_Func2(struct Task* task) +{ + u16 i; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + task->data[1] += (task->data[2] >> 8); + if (task->data[1] > 0xF0) + task->data[1] = 0xF0; + if (task->data[2] <= 0xFFF) + task->data[2] += task->data[3]; + if (task->data[3] < 128) + task->data[3] <<= 1; // multiplying by two + + for (i = 0; i < 160; i++) + { + u16* storeLoc1 = &gUnknown_03004DE0[0][i]; + u16* storeLoc2 = &gUnknown_03004DE0[0][i + 160]; + if (1 & i) + { + *storeLoc1 = TRANSITION_STRUCT.field_14 + task->data[1]; + *storeLoc2 = 0xF0 - task->data[1]; + } + else + { + *storeLoc1 = TRANSITION_STRUCT.field_14 - task->data[1]; + *storeLoc2 = (task->data[1] << 8) | (0xF1); + } + } + + if (task->data[1] > 0xEF) + task->tState++; + + TRANSITION_STRUCT.VBlank_DMA++; + return 0; +} + +bool8 Phase2_Transition8_Func3(struct Task* task) +{ + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition8)); + return 0; +} + +static void VBlankCB_Phase2_Transition8(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640); + DmaSet(0, &gUnknown_03004DE0[1][160], ®_WIN0H, 0xA2400001); +} + +static void HBlankCB_Phase2_Transition8(void) +{ + u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BG1HOFS = var; + REG_BG2HOFS = var; + REG_BG3HOFS = var; +} + +static void Phase2Task_Transition9(u8 taskID) +{ + while (sPhase2_Transition9_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition9_Func1(struct Task* task) +{ + u16 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.BLDCNT = 0xBF; + TRANSITION_STRUCT.field_12 = 0; + TRANSITION_STRUCT.WININ = 0x1E; + TRANSITION_STRUCT.WINOUT = 0x3F; + TRANSITION_STRUCT.WIN0V = 0xA0; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[1][i] = 0; + gUnknown_03004DE0[1][i + 160] = 0xF0; + } + + REG_IE |= 2; + REG_DISPSTAT |= 0x10; + + SetHBlankCallback(HBlankCB_Phase2_Transition9); + SetVBlankCallback(VBlankCB0_Phase2_Transition9); + + task->tState++; + return 0; +} + +extern const s16 gUnknown_083FD8C4[8]; + +bool8 Phase2_Transition9_Func2(struct Task* task) +{ + s16 i, posY; + s16 arr1[8]; + struct Sprite* sprite; + + memcpy(arr1, gUnknown_083FD8C4, sizeof(gUnknown_083FD8C4)); + for (i = 0, posY = 0; i < 8; i++, posY += 0x14) + { + sprite = &gSprites[CreateInvisibleSprite(sub_811CFD0)]; + sprite->pos1.x = 0xF0; + sprite->pos1.y = posY; + sprite->data5 = arr1[i]; + } + sprite->data6++; + + task->tState++; + return 0; +} + +bool8 Phase2_Transition9_Func3(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + if (TRANSITION_STRUCT.field_20 > 7) + { + BlendPalettes(-1, 0x10, 0x7FFF); + task->tState++; + } + return 0; +} + +bool8 Phase2_Transition9_Func4(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + + DmaStop(0); + SetVBlankCallback(0); + SetHBlankCallback(0); + + TRANSITION_STRUCT.field_6 = 0xF0; + TRANSITION_STRUCT.field_12 = 0; + TRANSITION_STRUCT.BLDCNT = 0xFF; + TRANSITION_STRUCT.WININ = 0x3F; + + SetVBlankCallback(VBlankCB1_Phase2_Transition9); + + task->tState++; + return 0; +} + +bool8 Phase2_Transition9_Func5(struct Task* task) +{ + if (++TRANSITION_STRUCT.field_12 > 16) + { + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition9)); + } + return 0; +} + +static void VBlankCB0_Phase2_Transition9(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.field_6; + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640); + DmaSet(0, &gUnknown_03004DE0[1][160], ®_WIN0H, 0xA2400001); +} + +static void VBlankCB1_Phase2_Transition9(void) +{ + VBlankCB_BattleTransition(); + REG_BLDY = TRANSITION_STRUCT.field_12; + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0H = TRANSITION_STRUCT.field_6; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; +} + +static void HBlankCB_Phase2_Transition9(void) +{ + REG_BLDY = gUnknown_03004DE0[1][REG_VCOUNT]; +} + +void sub_811CFD0(struct Sprite* sprite) +{ + if (sprite->data5) + { + sprite->data5--; + if (sprite->data6) + TRANSITION_STRUCT.VBlank_DMA = 1; + } + else + { + u16 i; + u16* ptr1 = &gUnknown_03004DE0[0][sprite->pos1.y]; + u16* ptr2 = &gUnknown_03004DE0[0][sprite->pos1.y + 160]; + for (i = 0; i < 20; i++) + { + ptr1[i] = sprite->data0 >> 8; + ptr2[i] = (u8)(sprite->pos1.x); + } + if (sprite->pos1.x == 0 && sprite->data0 == 0x1000) + sprite->data1 = 1; + + sprite->pos1.x -= 16; + sprite->data0 += 0x80; + + if (sprite->pos1.x < 0) + sprite->pos1.x = 0; + if (sprite->data0 > 0x1000) + sprite->data0 = 0x1000; + + if (sprite->data6) + TRANSITION_STRUCT.VBlank_DMA = 1; + + if (sprite->data1) + { + if (sprite->data6 == 0 || (TRANSITION_STRUCT.field_20 > 6 && sprite->data2++ > 7)) + { + TRANSITION_STRUCT.field_20++; + DestroySprite(sprite); + } + } + } +} + +static void Phase2Task_Transition10(u8 taskID) +{ + while (sPhase2_Transition10_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition10_Func1(struct Task* task) +{ + u16 *dst1, *dst2; + + sub_811D6A8(&dst1, &dst2); + CpuSet(gUnknown_083FD528, dst2, 0x10); + CpuFill16(0xF000, dst1, 0x800); + LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); task->tState++; + return 0; +} + +bool8 Phase2_Transition10_Func2(struct Task* task) +{ + u16* dst1; + + if (task->data[1] == 0) + { + sub_811D690(&dst1); + task->data[1] = 3; + task->data[2]++; + CpuSet(gUnknown_083FD528 + (task->data[2] * 8), dst1, 0x10); + if (task->data[2] > 0xD) + { + task->tState++; + task->data[1] = 16; + } + } + + task->data[1]--; + return 0; +} + +bool8 Phase2_Transition10_Func3(struct Task* task) +{ + if (--task->data[1] == 0) + { + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition10)); + } + return 0; +} + +static void Phase2Task_Transition11(u8 taskID) +{ + while (sPhase2_Transition11_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition11_Func1(struct Task* task) +{ + u16 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.WININ = 0x3F; + TRANSITION_STRUCT.WINOUT = 0; + TRANSITION_STRUCT.WIN0V = 0xA0; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[0][i] = 0xF0; + } + + CpuSet(gUnknown_03004DE0[0], gUnknown_03004DE0[1], 0xA0); + SetVBlankCallback(VBlankCB_Phase2_Transition11); + + task->tState++; + return 1; +} + +extern const s16 gUnknown_083FD8F4[][5]; + +bool8 Phase2_Transition11_Func2(struct Task* task) +{ + sub_811D8FC(&TRANSITION_STRUCT.field_24, + gUnknown_083FD8F4[task->data[1]][0], + gUnknown_083FD8F4[task->data[1]][1], + gUnknown_083FD8F4[task->data[1]][2], + gUnknown_083FD8F4[task->data[1]][3], + 1, 1); + task->data[2] = gUnknown_083FD8F4[task->data[1]][4]; + task->tState++; return 1; } + +bool8 Phase2_Transition11_Func3(struct Task* task) +{ + s16 i; + bool8 nextFunc; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + for (i = 0, nextFunc = FALSE; i < 16; i++) + { + s16 r3 = gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] >> 8; + s16 r4 = gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] & 0xFF; + if (task->data[2] == 0) + { + if (r3 < TRANSITION_STRUCT.field_28) + r3 = TRANSITION_STRUCT.field_28; + if (r3 > r4) + r3 = r4; + } + else + { + if (r4 > TRANSITION_STRUCT.field_28) + r4 = TRANSITION_STRUCT.field_28; + if (r4 <= r3) + r4 = r3; + } + gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (r4) | (r3 << 8); + if (nextFunc) + { + task->tState++; + break; + } + else + nextFunc = sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1); + } + + TRANSITION_STRUCT.VBlank_DMA++; + return 0; +} + +extern const s16 gUnknown_083FD93A[]; + +bool8 Phase2_Transition11_Func4(struct Task* task) +{ + if (++task->data[1] < 7) + { + task->tState++; + task->data[3] = gUnknown_083FD93A[task->data[1] - 1]; + return 1; + } + else + { + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition11)); + return 0; + } +} + +bool8 Phase2_Transition11_Func5(struct Task* task) +{ + if (--task->data[3] == 0) + { + task->tState = 1; + return 1; + } + else + return 0; +} + +static void VBlankCB_Phase2_Transition11(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + REG_WIN0H = gUnknown_03004DE0[1][0]; + DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); +} |