summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDizzyEggg <jajkodizzy@wp.pl>2017-08-21 21:11:42 +0200
committerDizzyEggg <jajkodizzy@wp.pl>2017-08-21 21:11:42 +0200
commita10592da1afeec6945e31f8321b94990c503e937 (patch)
tree2bead53b06ec867dd602e43aa7d01dee78683db9
parenta5b770a5112914468158842885b0b37f5425c887 (diff)
transition main functions are done
-rw-r--r--asm/battle_transition.s1316
-rw-r--r--data/battle_transition.s32
-rw-r--r--src/battle_transition.c556
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], &REG_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], &REG_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], &REG_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], &REG_WIN0H, 0xA2400001);
+}