summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDizzyEggg <jajkodizzy@wp.pl>2018-01-02 20:38:33 +0100
committerDizzyEggg <jajkodizzy@wp.pl>2018-01-02 20:38:33 +0100
commiteb00e8ba4acab773b5bcebbc622563c60abb512d (patch)
treece56dc294c2aa39ac48e12503ab7189e1e5d56cb
parentba176dfe0729e8c8c46a8f79c2f1b6e732ee13c8 (diff)
more work on battle transition
-rw-r--r--asm/battle_transition.s4893
-rw-r--r--asm/field_effect.s6
-rw-r--r--asm/main_menu.s4
-rwxr-xr-xasm/unk_transition.s64
-rw-r--r--data/battle_transition.s197
-rw-r--r--data/field_effect_scripts.s2
-rw-r--r--include/battle_transition.h10
-rw-r--r--include/field_effect.h1
-rw-r--r--include/gba/io_reg.h61
-rw-r--r--include/unk_transition.h16
-rw-r--r--src/battle_transition.c2072
11 files changed, 2174 insertions, 5152 deletions
diff --git a/asm/battle_transition.s b/asm/battle_transition.s
index 45c62656a..ef5c95332 100644
--- a/asm/battle_transition.s
+++ b/asm/battle_transition.s
@@ -5,4765 +5,8 @@
.text
- thumb_func_start Transition_WaitForPhase1
-Transition_WaitForPhase1: @ 8146030
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, =sPhase1_Tasks
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _08146054
- movs r0, 0
- b _0814605C
- .pool
-_08146054:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0x1
-_0814605C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end Transition_WaitForPhase1
-
- thumb_func_start Transition_Phase2
-Transition_Phase2: @ 8146064
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, =sPhase2_Tasks
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- bl CreateTask
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end Transition_Phase2
-
- thumb_func_start Transition_WaitForPhase2
-Transition_WaitForPhase2: @ 814608C
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0
- strh r0, [r4, 0x26]
- ldr r1, =sPhase2_Tasks
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _081460B0
- movs r0, 0x1
- strh r0, [r4, 0x26]
-_081460B0:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end Transition_WaitForPhase2
-
- thumb_func_start Phase1Task_TransitionAll
-Phase1Task_TransitionAll: @ 81460BC
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r1
- ldrh r2, [r1, 0x8]
- movs r3, 0x8
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _081460F4
- adds r0, r2, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0
- movs r1, 0
- movs r2, 0x3
- movs r3, 0x2
- bl sub_8149D78
- b _08146104
- .pool
-_081460F4:
- bl sub_8149DDC
- lsls r0, 24
- cmp r0, 0
- beq _08146104
- adds r0, r4, 0
- bl DestroyTask
-_08146104:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end Phase1Task_TransitionAll
-
- thumb_func_start Phase2Task_Transition_Blur
-Phase2Task_Transition_Blur: @ 814610C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, =sPhase2_Transition_Blur_Funcs
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0814611E:
- 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 _0814611E
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end Phase2Task_Transition_Blur
-
- thumb_func_start sub_8146144
-sub_8146144: @ 8146144
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x4C
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xA
- movs r1, 0x40
- bl SetGpuRegBits
- movs r0, 0xC
- movs r1, 0x40
- bl SetGpuRegBits
- movs r0, 0xE
- movs r1, 0x40
- bl SetGpuRegBits
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8146144
-
- thumb_func_start sub_8146178
-sub_8146178: @ 8146178
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldrh r0, [r4, 0xA]
- movs r1, 0xA
- ldrsh r2, [r4, r1]
- cmp r2, 0
- beq _0814618E
- subs r0, 0x1
- strh r0, [r4, 0xA]
- b _081461CE
-_0814618E:
- movs r0, 0x4
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _081461B0
- movs r1, 0x1
- negs r1, r1
- str r2, [sp]
- adds r0, r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_081461B0:
- ldrh r1, [r4, 0xC]
- movs r0, 0xF
- ands r0, r1
- lsls r1, r0, 4
- orrs r1, r0
- movs r0, 0x4C
- bl SetGpuReg
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0xE
- ble _081461CE
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_081461CE:
- movs r0, 0
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8146178
-
- thumb_func_start sub_81461D8
-sub_81461D8: @ 81461D8
- push {lr}
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081461F4
- ldr r0, =Phase2Task_Transition_Blur
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_081461F4:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81461D8
-
- thumb_func_start Phase2Task_Transition_Swirl
-Phase2Task_Transition_Swirl: @ 8146204
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, =sPhase2_Transition_Swirl_Funcs
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_08146216:
- 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 _08146216
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end Phase2Task_Transition_Swirl
-
- thumb_func_start sub_814623C
-sub_814623C: @ 814623C
- push {r4,r5,lr}
- sub sp, 0x8
- adds r5, r0, 0
- bl sub_8149F08
- bl dp12_8087EA4
- movs r0, 0x1
- negs r0, r0
- movs r4, 0
- str r4, [sp]
- movs r1, 0x4
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, =gUnknown_020393A8
- ldr r1, =sTransitionStructPtr
- ldr r1, [r1]
- movs r2, 0x14
- ldrsh r1, [r1, r2]
- str r4, [sp]
- movs r2, 0xA0
- str r2, [sp, 0x4]
- movs r2, 0
- movs r3, 0x2
- bl sub_8149F98
- ldr r0, =sub_8146320
- bl SetVBlankCallback
- ldr r0, =sub_8146358
- bl SetHBlankCallback
- movs r0, 0x3
- bl EnableInterrupts
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r0, 0
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_814623C
-
- thumb_func_start sub_81462A8
-sub_81462A8: @ 81462A8
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r4, =sTransitionStructPtr
- ldr r2, [r4]
- ldrb r1, [r2]
- movs r1, 0
- strb r1, [r2]
- ldrh r1, [r0, 0xA]
- adds r1, 0x4
- strh r1, [r0, 0xA]
- ldrh r1, [r0, 0xC]
- adds r1, 0x8
- strh r1, [r0, 0xC]
- ldr r3, =gUnknown_02038C28
- ldr r1, [r4]
- movs r2, 0x14
- ldrsh r1, [r1, r2]
- movs r5, 0xA
- ldrsh r2, [r0, r5]
- movs r5, 0xC
- ldrsh r0, [r0, r5]
- str r0, [sp]
- movs r0, 0xA0
- str r0, [sp, 0x4]
- adds r0, r3, 0
- movs r3, 0x2
- bl sub_8149F98
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081462FA
- ldr r0, =Phase2Task_Transition_Swirl
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_081462FA:
- ldr r0, [r4]
- ldrb r1, [r0]
- adds r1, 0x1
- ldrb r2, [r0]
- strb r1, [r0]
- movs r0, 0
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81462A8
-
- thumb_func_start sub_8146320
-sub_8146320: @ 8146320
- push {lr}
- bl sub_8149F2C
- ldr r0, =sTransitionStructPtr
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0
- beq _08146344
- ldr r1, =0x040000d4
- ldr r0, =gUnknown_02038C28
- str r0, [r1]
- movs r2, 0xF0
- lsls r2, 3
- adds r0, r2
- str r0, [r1, 0x4]
- ldr r0, =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_08146344:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8146320
-
- thumb_func_start sub_8146358
-sub_8146358: @ 8146358
- ldr r1, =gUnknown_02038C28
- ldr r0, =0x04000006
- ldrh r0, [r0]
- lsls r0, 1
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r2
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, =0x04000014
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- bx lr
- .pool
- thumb_func_end sub_8146358
-
- thumb_func_start Phase2Task_Transition_Shuffle
-Phase2Task_Transition_Shuffle: @ 8146384
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, =sPhase2_Transition_Shuffle_Funcs
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_08146396:
- 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 _08146396
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end Phase2Task_Transition_Shuffle
-
- thumb_func_start sub_81463BC
-sub_81463BC: @ 81463BC
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- bl sub_8149F08
- bl dp12_8087EA4
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r1, 0x4
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, =sTransitionStructPtr
- ldr r1, [r0]
- ldr r0, =gUnknown_020393A8
- movs r2, 0x16
- ldrsh r1, [r1, r2]
- movs r2, 0xA0
- lsls r2, 1
- bl memset
- ldr r0, =sub_81464B0
- bl SetVBlankCallback
- ldr r0, =sub_81464E8
- bl SetHBlankCallback
- movs r0, 0x3
- bl EnableInterrupts
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81463BC
-
- thumb_func_start sub_8146420
-sub_8146420: @ 8146420
- push {r4-r7,lr}
- ldr r1, =sTransitionStructPtr
- ldr r2, [r1]
- ldrb r1, [r2]
- movs r1, 0
- strb r1, [r2]
- ldrh r4, [r0, 0xA]
- ldrh r2, [r0, 0xC]
- lsls r3, r2, 16
- asrs r3, 24
- movs r5, 0x84
- lsls r5, 5
- adds r1, r4, r5
- strh r1, [r0, 0xA]
- movs r1, 0xC0
- lsls r1, 1
- adds r2, r1
- strh r2, [r0, 0xC]
- movs r5, 0
- lsls r7, r3, 16
-_08146448:
- lsrs r0, r4, 8
- asrs r1, r7, 16
- bl Sin
- ldr r1, =gUnknown_02038C28
- lsls r2, r5, 1
- adds r2, r1
- ldr r6, =sTransitionStructPtr
- ldr r1, [r6]
- ldrh r1, [r1, 0x16]
- adds r0, r1
- strh r0, [r2]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- movs r1, 0x84
- lsls r1, 5
- adds r0, r4, r1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r5, 0x9F
- bls _08146448
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0814648E
- ldr r0, =Phase2Task_Transition_Shuffle
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0814648E:
- ldr r0, [r6]
- ldrb r1, [r0]
- adds r1, 0x1
- ldrb r2, [r0]
- strb r1, [r0]
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8146420
-
- thumb_func_start sub_81464B0
-sub_81464B0: @ 81464B0
- push {lr}
- bl sub_8149F2C
- ldr r0, =sTransitionStructPtr
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0
- beq _081464D4
- ldr r1, =0x040000d4
- ldr r0, =gUnknown_02038C28
- str r0, [r1]
- movs r2, 0xF0
- lsls r2, 3
- adds r0, r2
- str r0, [r1, 0x4]
- ldr r0, =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_081464D4:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81464B0
-
- thumb_func_start sub_81464E8
-sub_81464E8: @ 81464E8
- ldr r1, =gUnknown_02038C28
- ldr r0, =0x04000006
- ldrh r0, [r0]
- lsls r0, 1
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r2
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, =0x04000016
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- bx lr
- .pool
- thumb_func_end sub_81464E8
-
- thumb_func_start Phase2Task_Transition_BigPokeball
-Phase2Task_Transition_BigPokeball: @ 8146514
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, =gUnknown_085C8AFC
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_08146526:
- 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 _08146526
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end Phase2Task_Transition_BigPokeball
-
- thumb_func_start Phase2Task_Transition_Aqua
-Phase2Task_Transition_Aqua: @ 814654C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, =gUnknown_085C8AC4
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0814655E:
- 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 _0814655E
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end Phase2Task_Transition_Aqua
-
- thumb_func_start Phase2Task_Transition_Magma
-Phase2Task_Transition_Magma: @ 8146584
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, =gUnknown_085C8AE0
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_08146596:
- 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 _08146596
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end Phase2Task_Transition_Magma
-
- thumb_func_start Phase2Task_Transition_Regice
-Phase2Task_Transition_Regice: @ 81465BC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, =gUnknown_085C8B14
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_081465CE:
- 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 _081465CE
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end Phase2Task_Transition_Regice
-
- thumb_func_start Phase2Task_Transition_Registeel
-Phase2Task_Transition_Registeel: @ 81465F4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, =gUnknown_085C8B2C
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_08146606:
- 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 _08146606
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end Phase2Task_Transition_Registeel
-
- thumb_func_start Phase2Task_Transition_Regirock
-Phase2Task_Transition_Regirock: @ 814662C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, =gUnknown_085C8B44
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0814663E:
- 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 _0814663E
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end Phase2Task_Transition_Regirock
-
- thumb_func_start Phase2Task_Transition_Kyogre
-Phase2Task_Transition_Kyogre: @ 8146664
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, =gUnknown_085C8B5C
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_08146676:
- 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 _08146676
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end Phase2Task_Transition_Kyogre
-
- thumb_func_start sub_814669C
-sub_814669C: @ 814669C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8149F08
- bl dp12_8087EA4
- movs r1, 0
- movs r0, 0x10
- strh r0, [r4, 0xA]
- strh r1, [r4, 0xC]
- strh r1, [r4, 0x10]
- movs r0, 0x80
- lsls r0, 7
- strh r0, [r4, 0x12]
- ldr r0, =sTransitionStructPtr
- ldr r2, [r0]
- movs r0, 0x3F
- strh r0, [r2, 0x2]
- strh r1, [r2, 0x4]
- movs r0, 0xF0
- strh r0, [r2, 0x6]
- movs r0, 0xA0
- strh r0, [r2, 0x8]
- ldr r0, =0x00003f41
- strh r0, [r2, 0xE]
- ldrh r0, [r4, 0xA]
- lsls r0, 8
- ldrh r1, [r4, 0xC]
- orrs r0, r1
- strh r0, [r2, 0x10]
- ldr r0, =gUnknown_02038C28
- movs r2, 0xF0
- movs r1, 0x9F
- ldr r3, =0x000008be
- adds r0, r3
-_081466E2:
- strh r2, [r0]
- subs r0, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _081466E2
- ldr r0, =sub_8146F3C
- bl SetVBlankCallback
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_814669C
-
- thumb_func_start sub_814670C
-sub_814670C: @ 814670C
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r0, 0
- movs r5, 0
- movs r0, 0x3C
- strh r0, [r4, 0x18]
- adds r0, r4, 0
- bl sub_814669C
- add r0, sp, 0x4
- add r1, sp, 0x8
- bl sub_8149F58
- mov r0, sp
- strh r5, [r0]
- ldr r1, [sp, 0x4]
- ldr r2, =0x01000400
- bl CpuSet
- ldr r0, =sTeamAqua_Tileset
- ldr r1, [sp, 0x8]
- bl LZ77UnCompVram
- ldr r0, =sEvilTeam_Palette
- 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,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_814670C
-
- thumb_func_start sub_8146760
-sub_8146760: @ 8146760
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r0, 0
- movs r5, 0
- movs r0, 0x3C
- strh r0, [r4, 0x18]
- adds r0, r4, 0
- bl sub_814669C
- add r0, sp, 0x4
- add r1, sp, 0x8
- bl sub_8149F58
- mov r0, sp
- strh r5, [r0]
- ldr r1, [sp, 0x4]
- ldr r2, =0x01000400
- bl CpuSet
- ldr r0, =sTeamMagma_Tileset
- ldr r1, [sp, 0x8]
- bl LZ77UnCompVram
- ldr r0, =sEvilTeam_Palette
- 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,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8146760
-
- thumb_func_start sub_81467B4
-sub_81467B4: @ 81467B4
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r0, 0
- movs r5, 0
- movs r0, 0x3C
- strh r0, [r4, 0x18]
- adds r0, r4, 0
- bl sub_814669C
- add r0, sp, 0x4
- add r1, sp, 0x8
- bl sub_8149F58
- mov r0, sp
- strh r5, [r0]
- ldr r1, [sp, 0x4]
- ldr r2, =0x01000400
- bl CpuSet
- ldr r0, =gUnknown_085BBC14
- ldr r1, [sp, 0x8]
- movs r2, 0x80
- lsls r2, 5
- bl CpuSet
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- add sp, 0xC
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81467B4
-
- thumb_func_start sub_8146800
-sub_8146800: @ 8146800
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- bl sub_814669C
- add r0, sp, 0x4
- add r1, sp, 0x8
- bl sub_8149F58
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r1, [sp, 0x4]
- ldr r2, =0x01000400
- mov r0, sp
- bl CpuSet
- ldr r0, =sBigPokeball_Tileset
- ldr r1, [sp, 0x8]
- movs r2, 0xB0
- lsls r2, 2
- bl CpuSet
- ldr r0, =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
- .pool
- thumb_func_end sub_8146800
-
- thumb_func_start sub_8146854
-sub_8146854: @ 8146854
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- adds r7, r0, 0
- add r1, sp, 0xC
- add r0, sp, 0x8
- bl sub_8149F58
- ldr r5, =sBigPokeball_Tilemap
- movs r1, 0
- ldr r0, [sp, 0x8]
- mov r9, r0
- ldr r6, =gUnknown_02038C28
- mov r8, r6
- movs r0, 0xF0
- lsls r0, 8
- mov r12, r0
-_0814687A:
- movs r0, 0
- lsls r3, r1, 16
- asrs r4, r3, 11
-_08146880:
- lsls r2, r0, 16
- asrs r2, 16
- adds r1, r4, r2
- lsls r1, 1
- add r1, r9
- ldrh r0, [r5]
- mov r6, r12
- orrs r0, r6
- strh r0, [r1]
- adds r2, 0x1
- lsls r2, 16
- adds r5, 0x2
- lsrs r0, r2, 16
- asrs r2, 16
- cmp r2, 0x1D
- ble _08146880
- movs r1, 0x80
- lsls r1, 9
- adds r0, r3, r1
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _0814687A
- movs r6, 0x10
- ldrsh r2, [r7, r6]
- movs r1, 0x12
- ldrsh r0, [r7, r1]
- str r0, [sp]
- movs r0, 0xA0
- str r0, [sp, 0x4]
- mov r0, r8
- movs r1, 0
- movs r3, 0x84
- bl sub_8149F98
- ldrh r0, [r7, 0x8]
- adds r0, 0x1
- strh r0, [r7, 0x8]
- movs r0, 0x1
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8146854
-
- thumb_func_start sub_81468E4
-sub_81468E4: @ 81468E4
- push {r4,lr}
- sub sp, 0x10
- adds r4, r0, 0
- add r1, sp, 0xC
- add r0, sp, 0x8
- bl sub_8149F58
- ldr r0, =sTeamAqua_Tilemap
- ldr r1, [sp, 0x8]
- bl LZ77UnCompVram
- ldr r0, =gUnknown_02038C28
- movs r1, 0x10
- ldrsh r2, [r4, r1]
- movs r3, 0x12
- ldrsh r1, [r4, r3]
- str r1, [sp]
- movs r1, 0xA0
- str r1, [sp, 0x4]
- movs r1, 0
- movs r3, 0x84
- bl sub_8149F98
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- add sp, 0x10
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81468E4
-
- thumb_func_start sub_814692C
-sub_814692C: @ 814692C
- push {r4,lr}
- sub sp, 0x10
- adds r4, r0, 0
- add r1, sp, 0xC
- add r0, sp, 0x8
- bl sub_8149F58
- ldr r0, =sTeamMagma_Tilemap
- ldr r1, [sp, 0x8]
- bl LZ77UnCompVram
- ldr r0, =gUnknown_02038C28
- movs r1, 0x10
- ldrsh r2, [r4, r1]
- movs r3, 0x12
- ldrsh r1, [r4, r3]
- str r1, [sp]
- movs r1, 0xA0
- str r1, [sp, 0x4]
- movs r1, 0
- movs r3, 0x84
- bl sub_8149F98
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- add sp, 0x10
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_814692C
-
- thumb_func_start sub_8146974
-sub_8146974: @ 8146974
- push {r4,lr}
- sub sp, 0x10
- adds r4, r0, 0
- add r1, sp, 0xC
- add r0, sp, 0x8
- bl sub_8149F58
- ldr r0, =gUnknown_085BC2B4
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, =gUnknown_085BC314
- ldr r1, [sp, 0x8]
- movs r2, 0xA0
- lsls r2, 2
- bl CpuSet
- ldr r0, =gUnknown_02038C28
- movs r1, 0x10
- ldrsh r2, [r4, r1]
- movs r3, 0x12
- ldrsh r1, [r4, r3]
- str r1, [sp]
- movs r1, 0xA0
- str r1, [sp, 0x4]
- movs r1, 0
- movs r3, 0x84
- bl sub_8149F98
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- add sp, 0x10
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8146974
-
- thumb_func_start sub_81469CC
-sub_81469CC: @ 81469CC
- push {r4,lr}
- sub sp, 0x10
- adds r4, r0, 0
- add r1, sp, 0xC
- add r0, sp, 0x8
- bl sub_8149F58
- ldr r0, =gUnknown_085BC2D4
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, =gUnknown_085BCB14
- ldr r1, [sp, 0x8]
- movs r2, 0xA0
- lsls r2, 2
- bl CpuSet
- ldr r0, =gUnknown_02038C28
- movs r1, 0x10
- ldrsh r2, [r4, r1]
- movs r3, 0x12
- ldrsh r1, [r4, r3]
- str r1, [sp]
- movs r1, 0xA0
- str r1, [sp, 0x4]
- movs r1, 0
- movs r3, 0x84
- bl sub_8149F98
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- add sp, 0x10
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81469CC
-
- thumb_func_start sub_8146A24
-sub_8146A24: @ 8146A24
- push {r4,lr}
- sub sp, 0x10
- adds r4, r0, 0
- add r1, sp, 0xC
- add r0, sp, 0x8
- bl sub_8149F58
- ldr r0, =gUnknown_085BC2F4
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, =gUnknown_085BD314
- ldr r1, [sp, 0x8]
- movs r2, 0xA0
- lsls r2, 2
- bl CpuSet
- ldr r0, =gUnknown_02038C28
- movs r1, 0x10
- ldrsh r2, [r4, r1]
- movs r3, 0x12
- ldrsh r1, [r4, r3]
- str r1, [sp]
- movs r1, 0xA0
- str r1, [sp, 0x4]
- movs r1, 0
- movs r3, 0x84
- bl sub_8149F98
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- add sp, 0x10
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8146A24
-
- thumb_func_start sub_8146A7C
-sub_8146A7C: @ 8146A7C
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- add r0, sp, 0x4
- add r1, sp, 0x8
- bl sub_8149F58
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r1, [sp, 0x4]
- ldr r2, =0x01000400
- mov r0, sp
- bl CpuSet
- ldr r0, =gUnknown_085BDB34
- ldr r1, [sp, 0x8]
- bl LZ77UnCompVram
- ldr r0, =gUnknown_085BE1E8
- ldr r1, [sp, 0x4]
- bl LZ77UnCompVram
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- add sp, 0xC
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8146A7C
-
- thumb_func_start sub_8146AC8
-sub_8146AC8: @ 8146AC8
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0xA
- ldrsh r5, [r4, r0]
- adds r0, r5, 0
- movs r1, 0x3
- bl __modsi3
- lsls r0, 16
- cmp r0, 0
- bne _08146B00
- adds r0, r5, 0
- movs r1, 0x1E
- bl __modsi3
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __udivsi3
- lsls r0, 16
- lsrs r0, 11
- ldr r1, =gUnknown_085BEDA0
- adds r0, r1
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
-_08146B00:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3A
- ble _08146B18
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- strh r0, [r4, 0xA]
-_08146B18:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8146AC8
-
- thumb_func_start sub_8146B24
-sub_8146B24: @ 8146B24
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0xA
- ldrsh r5, [r4, r0]
- adds r0, r5, 0
- movs r1, 0x5
- bl __modsi3
- lsls r0, 16
- cmp r0, 0
- bne _08146B52
- adds r0, r5, 0
- movs r1, 0x5
- bl __divsi3
- lsls r0, 16
- asrs r0, 11
- ldr r1, =gUnknown_085BEEE0
- adds r0, r1
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
-_08146B52:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x44
- ble _08146B6E
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- strh r0, [r4, 0xA]
- movs r0, 0x1E
- strh r0, [r4, 0x18]
-_08146B6E:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8146B24
-
- thumb_func_start sub_8146B7C
-sub_8146B7C: @ 8146B7C
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r0, =0xffff8000
- movs r1, 0
- str r1, [sp]
- movs r1, 0x1
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8146B7C
-
- thumb_func_start sub_8146BA8
-sub_8146BA8: @ 8146BA8
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08146BDE
- ldr r1, =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bl sub_8149F84
- ldr r0, [r4]
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_08146BDE:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8146BA8
-
- thumb_func_start sub_8146BF8
-sub_8146BF8: @ 8146BF8
- push {r4,r5,lr}
- sub sp, 0x8
- adds r3, r0, 0
- ldr r2, =sTransitionStructPtr
- ldr r1, [r2]
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldrh r1, [r3, 0xE]
- movs r4, 0xE
- ldrsh r0, [r3, r4]
- adds r4, r2, 0
- cmp r0, 0
- beq _08146C1E
- subs r0, r1, 0x1
- strh r0, [r3, 0xE]
- lsls r0, 16
- cmp r0, 0
- bne _08146C28
-_08146C1E:
- ldrh r0, [r3, 0xC]
- adds r0, 0x1
- strh r0, [r3, 0xC]
- movs r0, 0x2
- strh r0, [r3, 0xE]
-_08146C28:
- ldr r2, [r4]
- ldrh r0, [r3, 0xA]
- lsls r0, 8
- ldrh r1, [r3, 0xC]
- orrs r0, r1
- strh r0, [r2, 0x10]
- movs r5, 0xC
- ldrsh r0, [r3, r5]
- cmp r0, 0xF
- ble _08146C42
- ldrh r0, [r3, 0x8]
- adds r0, 0x1
- strh r0, [r3, 0x8]
-_08146C42:
- ldrh r0, [r3, 0x10]
- adds r0, 0x8
- strh r0, [r3, 0x10]
- ldr r0, =0xffffff00
- adds r1, r0, 0
- ldrh r5, [r3, 0x12]
- adds r1, r5
- strh r1, [r3, 0x12]
- ldr r0, =gUnknown_02038C28
- movs r5, 0x10
- ldrsh r2, [r3, r5]
- lsls r1, 16
- asrs r1, 24
- str r1, [sp]
- movs r1, 0xA0
- str r1, [sp, 0x4]
- movs r1, 0
- movs r3, 0x84
- bl sub_8149F98
- ldr r1, [r4]
- ldrb r0, [r1]
- adds r0, 0x1
- ldrb r2, [r1]
- strb r0, [r1]
- movs r0, 0
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8146BF8
-
- thumb_func_start sub_8146C8C
-sub_8146C8C: @ 8146C8C
- push {r4,r5,lr}
- sub sp, 0x8
- adds r3, r0, 0
- ldr r2, =sTransitionStructPtr
- ldr r1, [r2]
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldrh r1, [r3, 0xE]
- movs r4, 0xE
- ldrsh r0, [r3, r4]
- adds r4, r2, 0
- cmp r0, 0
- beq _08146CB2
- subs r0, r1, 0x1
- strh r0, [r3, 0xE]
- lsls r0, 16
- cmp r0, 0
- bne _08146CBC
-_08146CB2:
- ldrh r0, [r3, 0xA]
- subs r0, 0x1
- strh r0, [r3, 0xA]
- movs r0, 0x2
- strh r0, [r3, 0xE]
-_08146CBC:
- ldr r2, [r4]
- ldrh r0, [r3, 0xA]
- lsls r0, 8
- ldrh r1, [r3, 0xC]
- orrs r0, r1
- strh r0, [r2, 0x10]
- movs r5, 0xA
- ldrsh r0, [r3, r5]
- cmp r0, 0
- bne _08146CD6
- ldrh r0, [r3, 0x8]
- adds r0, 0x1
- strh r0, [r3, 0x8]
-_08146CD6:
- ldrh r0, [r3, 0x10]
- adds r0, 0x8
- strh r0, [r3, 0x10]
- ldr r0, =0xffffff00
- adds r1, r0, 0
- ldrh r5, [r3, 0x12]
- adds r1, r5
- strh r1, [r3, 0x12]
- ldr r0, =gUnknown_02038C28
- movs r5, 0x10
- ldrsh r2, [r3, r5]
- lsls r1, 16
- asrs r1, 24
- str r1, [sp]
- movs r1, 0xA0
- str r1, [sp, 0x4]
- movs r1, 0
- movs r3, 0x84
- bl sub_8149F98
- ldr r1, [r4]
- ldrb r0, [r1]
- adds r0, 0x1
- ldrb r2, [r1]
- strb r0, [r1]
- movs r0, 0
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8146C8C
-
- thumb_func_start sub_8146D20
-sub_8146D20: @ 8146D20
- push {r4-r7,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r7, =sTransitionStructPtr
- ldr r0, [r7]
- ldrb r1, [r0]
- movs r6, 0
- strb r6, [r0]
- ldrh r0, [r4, 0x10]
- adds r0, 0x8
- strh r0, [r4, 0x10]
- ldr r0, =0xffffff00
- adds r1, r0, 0
- ldrh r3, [r4, 0x12]
- adds r1, r3
- strh r1, [r4, 0x12]
- ldr r0, =gUnknown_02038C28
- movs r3, 0x10
- ldrsh r2, [r4, r3]
- lsls r1, 16
- asrs r1, 24
- str r1, [sp]
- movs r5, 0xA0
- str r5, [sp, 0x4]
- movs r1, 0
- movs r3, 0x84
- bl sub_8149F98
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bgt _08146D70
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- strh r5, [r4, 0xA]
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r4, 0xC]
- strh r6, [r4, 0xE]
-_08146D70:
- ldr r0, [r7]
- ldrb r1, [r0]
- adds r1, 0x1
- ldrb r2, [r0]
- strb r1, [r0]
- movs r0, 0
- add sp, 0x8
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8146D20
-
- thumb_func_start sub_8146D90
-sub_8146D90: @ 8146D90
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x18]
- subs r0, 0x1
- strh r0, [r1, 0x18]
- lsls r0, 16
- cmp r0, 0
- bne _08146DA6
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_08146DA6:
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_8146D90
-
- thumb_func_start sub_8146DAC
-sub_8146DAC: @ 8146DAC
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r0, =0x0000ffff
- movs r1, 0
- str r1, [sp]
- movs r1, 0x1
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8146DAC
-
- thumb_func_start sub_8146DD8
-sub_8146DD8: @ 8146DD8
- push {lr}
- adds r2, r0, 0
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08146DEE
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
-_08146DEE:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8146DD8
-
- thumb_func_start sub_8146DF8
-sub_8146DF8: @ 8146DF8
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =sTransitionStructPtr
- ldr r0, [r0]
- ldrb r1, [r0]
- movs r3, 0
- strb r3, [r0]
- ldrh r2, [r4, 0xC]
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- ldr r0, =0x000003ff
- cmp r1, r0
- bgt _08146E18
- adds r0, r2, 0
- adds r0, 0x80
- strh r0, [r4, 0xC]
-_08146E18:
- ldrh r1, [r4, 0xA]
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _08146E34
- ldrh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 24
- subs r0, r1, r0
- strh r0, [r4, 0xA]
- lsls r0, 16
- cmp r0, 0
- bge _08146E34
- strh r3, [r4, 0xA]
-_08146E34:
- ldr r0, =gUnknown_02038C28
- movs r1, 0xA
- ldrsh r3, [r4, r1]
- movs r1, 0x78
- movs r2, 0x50
- bl sub_814A014
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _08146E90
- movs r0, 0
- bl SetVBlankCallback
- ldr r1, =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bl sub_8149F84
- ldr r0, [r4]
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- b _08146EB0
- .pool
-_08146E90:
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _08146EA4
- adds r0, r1, 0x1
- strh r0, [r4, 0xE]
- ldr r0, =sub_8146F68
- bl SetVBlankCallback
-_08146EA4:
- ldr r0, =sTransitionStructPtr
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- ldrb r2, [r1]
- strb r0, [r1]
-_08146EB0:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8146DF8
-
- thumb_func_start sub_8146EC0
-sub_8146EC0: @ 8146EC0
- push {lr}
- ldr r1, =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bl sub_8149F2C
- ldr r2, =sTransitionStructPtr
- ldr r0, [r2]
- ldrb r0, [r0]
- cmp r0, 0
- beq _08146EF8
- ldr r1, =0x040000d4
- ldr r0, =gUnknown_02038C28
- str r0, [r1]
- movs r3, 0xF0
- lsls r3, 3
- adds r0, r3
- str r0, [r1, 0x4]
- ldr r0, =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_08146EF8:
- ldr r1, =0x04000048
- ldr r2, [r2]
- 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]
- adds r1, 0xC
- ldrh r0, [r2, 0xE]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r2, 0x10]
- strh r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8146EC0
-
- thumb_func_start sub_8146F3C
-sub_8146F3C: @ 8146F3C
- push {lr}
- bl sub_8146EC0
- ldr r1, =0x040000b0
- ldr r0, =gUnknown_020393A8
- str r0, [r1]
- ldr r0, =0x04000010
- str r0, [r1, 0x4]
- ldr r0, =0xa2400001
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8146F3C
-
- thumb_func_start sub_8146F68
-sub_8146F68: @ 8146F68
- push {lr}
- bl sub_8146EC0
- ldr r1, =0x040000b0
- ldr r0, =gUnknown_020393A8
- str r0, [r1]
- ldr r0, =0x04000040
- str r0, [r1, 0x4]
- ldr r0, =0xa2400001
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8146F68
-
- thumb_func_start Phase2Task_Transition_PokeballsTrail
-Phase2Task_Transition_PokeballsTrail: @ 8146F94
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, =sPhase2_Transition_PokeballsTrail_Funcs
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_08146FA6:
- 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 _08146FA6
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end Phase2Task_Transition_PokeballsTrail
-
- thumb_func_start sub_8146FCC
-sub_8146FCC: @ 8146FCC
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- add r0, sp, 0x4
- add r1, sp, 0x8
- bl sub_8149F58
- ldr r0, =sPokeballTrail_Tileset
- ldr r1, [sp, 0x8]
- movs r2, 0x20
- bl CpuSet
- movs r0, 0
- str r0, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, =0x05000200
- mov r0, sp
- bl CpuSet
- ldr r0, =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
- .pool
- thumb_func_end sub_8146FCC
-
- thumb_func_start sub_8147018
-sub_8147018: @ 8147018
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- adds r7, r0, 0
- ldr r1, =sUnknown_085C8B88
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- add r4, sp, 0x4
- ldr r1, =sUnknown_085C8B8C
- adds r0, r4, 0
- movs r2, 0xA
- bl memcpy
- bl Random
- movs r5, 0x1
- ands r5, r0
- movs r1, 0
- mov r8, r4
- ldr r6, =gFieldEffectArguments
-_08147046:
- lsls r5, 16
- asrs r5, 16
- lsls r0, r5, 1
- add r0, sp
- movs r2, 0
- ldrsh r0, [r0, r2]
- str r0, [r6]
- lsls r4, r1, 16
- asrs r4, 16
- lsls r0, r4, 5
- adds r0, 0x10
- str r0, [r6, 0x4]
- str r5, [r6, 0x8]
- lsls r0, r4, 1
- add r0, r8
- movs r1, 0
- ldrsh r0, [r0, r1]
- str r0, [r6, 0xC]
- movs r0, 0x2D
- bl FieldEffectStart
- adds r4, 0x1
- lsls r4, 16
- movs r0, 0x1
- eors r5, r0
- lsls r5, 16
- lsrs r5, 16
- lsrs r1, r4, 16
- asrs r4, 16
- cmp r4, 0x4
- ble _08147046
- ldrh r0, [r7, 0x8]
- adds r0, 0x1
- strh r0, [r7, 0x8]
- movs r0, 0
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8147018
-
- thumb_func_start sub_81470A4
-sub_81470A4: @ 81470A4
- push {lr}
- movs r0, 0x2D
- bl FieldEffectActiveListContains
- lsls r0, 24
- cmp r0, 0
- bne _081470C4
- bl sub_8149F84
- ldr r0, =Phase2Task_Transition_PokeballsTrail
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_081470C4:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81470A4
-
- thumb_func_start sub_81470D0
-sub_81470D0: @ 81470D0
- push {r4,r5,lr}
- ldr r0, =gUnknown_085C8E68
- ldr r5, =gFieldEffectArguments
- movs r2, 0
- ldrsh r1, [r5, r2]
- movs r3, 0x4
- ldrsh r2, [r5, r3]
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSprites
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r4, r1
- ldrb r1, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- strb r0, [r4, 0x5]
- ldrb r1, [r4, 0x1]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r4, 0x1]
- ldr r0, [r5, 0x8]
- strh r0, [r4, 0x2E]
- ldr r0, [r5, 0xC]
- strh r0, [r4, 0x30]
- ldr r0, =0x0000ffff
- strh r0, [r4, 0x32]
- adds r0, r4, 0
- bl InitSpriteAffineAnim
- ldrb r1, [r5, 0x8]
- adds r0, r4, 0
- bl StartSpriteAffineAnim
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81470D0
-
- thumb_func_start sub_814713C
-sub_814713C: @ 814713C
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r1, =sUnknown_085C8B96
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _08147160
- subs r0, r1, 0x1
- strh r0, [r4, 0x30]
- b _081471F2
- .pool
-_08147160:
- ldrh r0, [r4, 0x20]
- lsls r1, r0, 16
- lsrs r0, r1, 16
- cmp r0, 0xF0
- bhi _081471CE
- asrs r0, r1, 19
- lsls r0, 16
- ldrh r1, [r4, 0x22]
- lsls r1, 16
- asrs r1, 19
- lsls r1, 16
- lsrs r1, 16
- lsrs r2, r0, 16
- asrs r5, r0, 16
- movs r3, 0x32
- ldrsh r0, [r4, r3]
- cmp r5, r0
- beq _081471CE
- strh r2, [r4, 0x32]
- ldr r0, =0x04000008
- ldrh r2, [r0]
- lsrs r2, 8
- movs r0, 0x1F
- ands r2, r0
- lsls r2, 11
- movs r0, 0xC0
- lsls r0, 19
- adds r2, r0
- lsls r1, 16
- asrs r1, 16
- subs r0, r1, 0x2
- lsls r0, 5
- adds r0, r5
- lsls r0, 1
- adds r0, r2
- ldr r6, =0x0000f001
- adds r3, r6, 0
- strh r3, [r0]
- subs r0, r1, 0x1
- lsls r0, 5
- adds r0, r5
- lsls r0, 1
- adds r0, r2
- strh r3, [r0]
- lsls r0, r1, 5
- adds r0, r5
- lsls r0, 1
- adds r0, r2
- strh r3, [r0]
- adds r1, 0x1
- lsls r1, 5
- adds r1, r5
- lsls r1, 1
- adds r1, r2
- strh r3, [r1]
-_081471CE:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- adds r0, 0xF
- lsls r0, 16
- movs r1, 0x87
- lsls r1, 17
- cmp r0, r1
- bls _081471F2
- adds r0, r4, 0
- movs r1, 0x2D
- bl FieldEffectStop
-_081471F2:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_814713C
-
- thumb_func_start Phase2Task_Transition_Clockwise_BlackFade
-Phase2Task_Transition_Clockwise_BlackFade: @ 8147204
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, =sPhase2_Transition_Clockwise_BlackFade_Funcs
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_08147216:
- 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 _08147216
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end Phase2Task_Transition_Clockwise_BlackFade
-
- thumb_func_start sub_814723C
-sub_814723C: @ 814723C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8149F08
- bl dp12_8087EA4
- ldr r0, =sTransitionStructPtr
- ldr r1, [r0]
- movs r0, 0
- strh r0, [r1, 0x2]
- movs r0, 0x3F
- strh r0, [r1, 0x4]
- ldr r0, =0x0000f0f1
- strh r0, [r1, 0x6]
- movs r0, 0xA0
- strh r0, [r1, 0x8]
- movs r1, 0
- ldr r3, =gUnknown_020393A8
- ldr r2, =0x0000f3f4
-_08147262:
- lsls r0, r1, 1
- adds r0, r3
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x9F
- bls _08147262
- ldr r0, =sub_8147688
- bl SetVBlankCallback
- ldr r0, =sTransitionStructPtr
- ldr r1, [r0]
- movs r0, 0x78
- strh r0, [r1, 0x2C]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_814723C
-
- thumb_func_start sub_81472A4
-sub_81472A4: @ 81472A4
- push {r4-r7,lr}
- sub sp, 0xC
- adds r6, r0, 0
- ldr r2, =sTransitionStructPtr
- ldr r1, [r2]
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x24
- movs r2, 0x2C
- ldrsh r3, [r1, r2]
- movs r1, 0x1
- negs r1, r1
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x78
- movs r2, 0x50
- bl sub_814A1AC
- ldr r5, =gUnknown_02038C28
-_081472D4:
- ldr r4, =sTransitionStructPtr
- ldr r0, [r4]
- movs r7, 0x2A
- ldrsh r3, [r0, r7]
- lsls r3, 1
- adds r3, r5
- ldrh r1, [r0, 0x28]
- adds r1, 0x1
- movs r7, 0xF0
- lsls r7, 7
- adds r2, r7, 0
- orrs r1, r2
- strh r1, [r3]
- adds r0, 0x24
- movs r1, 0x1
- movs r2, 0x1
- bl sub_814A228
- lsls r0, 24
- cmp r0, 0
- beq _081472D4
- ldr r1, [r4]
- ldrh r0, [r1, 0x2C]
- adds r0, 0x10
- strh r0, [r1, 0x2C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xEF
- ble _08147318
- movs r0, 0
- strh r0, [r1, 0x2E]
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
-_08147318:
- ldr r0, [r4]
- ldrb r1, [r0]
- adds r1, 0x1
- ldrb r2, [r0]
- strb r1, [r0]
- movs r0, 0
- add sp, 0xC
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81472A4
-
- thumb_func_start sub_8147334
-sub_8147334: @ 8147334
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- mov r8, r0
- add r1, sp, 0xC
- movs r0, 0
- strb r0, [r1]
- ldr r4, =sTransitionStructPtr
- ldr r1, [r4]
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x24
- movs r2, 0x2E
- ldrsh r1, [r1, r2]
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0xF0
- bl sub_814A1AC
- mov r9, r4
- mov r7, r9
- add r5, sp, 0xC
-_08147372:
- movs r1, 0x78
- ldr r3, [r7]
- ldrh r0, [r3, 0x28]
- adds r0, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- movs r2, 0x2E
- ldrsh r0, [r3, r2]
- cmp r0, 0x4F
- ble _0814738A
- ldrh r1, [r3, 0x28]
- movs r4, 0xF0
-_0814738A:
- ldr r6, =gUnknown_02038C28
- movs r0, 0x2A
- ldrsh r2, [r3, r0]
- lsls r2, 1
- adds r2, r6
- lsls r1, 16
- asrs r1, 8
- lsls r0, r4, 16
- asrs r4, r0, 16
- orrs r4, r1
- strh r4, [r2]
- ldrb r0, [r5]
- cmp r0, 0
- bne _081473C0
- adds r0, r3, 0
- adds r0, 0x24
- movs r1, 0x1
- movs r2, 0x1
- bl sub_814A228
- strb r0, [r5]
- b _08147372
- .pool
-_081473C0:
- ldr r1, [r7]
- ldrh r0, [r1, 0x2E]
- adds r0, 0x8
- strh r0, [r1, 0x2E]
- lsls r0, 16
- asrs r2, r0, 16
- cmp r2, 0x9F
- ble _081473DE
- movs r0, 0xF0
- strh r0, [r1, 0x2C]
- mov r1, r8
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _08147406
-_081473DE:
- movs r3, 0x2A
- ldrsh r0, [r1, r3]
- cmp r0, r2
- bge _08147406
- adds r3, r4, 0
- ldr r5, =sTransitionStructPtr
-_081473EA:
- ldr r2, [r5]
- ldrh r0, [r2, 0x2A]
- adds r0, 0x1
- strh r0, [r2, 0x2A]
- lsls r0, 16
- asrs r0, 15
- adds r0, r6
- strh r3, [r0]
- movs r4, 0x2A
- ldrsh r1, [r2, r4]
- movs r4, 0x2E
- ldrsh r0, [r2, r4]
- cmp r1, r0
- blt _081473EA
-_08147406:
- mov r1, r9
- ldr r0, [r1]
- ldrb r1, [r0]
- adds r1, 0x1
- ldrb r2, [r0]
- strb r1, [r0]
- movs r0, 0
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8147334
-
- thumb_func_start sub_8147428
-sub_8147428: @ 8147428
- push {r4-r6,lr}
- sub sp, 0xC
- adds r6, r0, 0
- ldr r2, =sTransitionStructPtr
- ldr r1, [r2]
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x24
- movs r2, 0x2C
- ldrsh r3, [r1, r2]
- movs r1, 0xA0
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x78
- movs r2, 0x50
- bl sub_814A1AC
- ldr r5, =gUnknown_02038C28
-_08147456:
- ldr r4, =sTransitionStructPtr
- ldr r0, [r4]
- movs r1, 0x2A
- ldrsh r3, [r0, r1]
- lsls r3, 1
- adds r3, r5
- ldrh r1, [r0, 0x28]
- lsls r1, 8
- movs r2, 0xF0
- orrs r1, r2
- strh r1, [r3]
- adds r0, 0x24
- movs r1, 0x1
- movs r2, 0x1
- bl sub_814A228
- lsls r0, 24
- cmp r0, 0
- beq _08147456
- ldr r1, [r4]
- ldrh r0, [r1, 0x2C]
- subs r0, 0x10
- strh r0, [r1, 0x2C]
- lsls r0, 16
- cmp r0, 0
- bgt _08147494
- movs r0, 0xA0
- strh r0, [r1, 0x2E]
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
-_08147494:
- ldr r0, [r4]
- ldrb r1, [r0]
- adds r1, 0x1
- ldrb r2, [r0]
- strb r1, [r0]
- movs r0, 0
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8147428
-
- thumb_func_start sub_81474B0
-sub_81474B0: @ 81474B0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- mov r9, r0
- add r1, sp, 0xC
- movs r0, 0
- strb r0, [r1]
- ldr r4, =sTransitionStructPtr
- ldr r1, [r4]
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x24
- movs r2, 0x2E
- ldrsh r1, [r1, r2]
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0
- bl sub_814A1AC
- ldr r7, =gUnknown_02038C28
- mov r10, r7
- ldr r0, =sTransitionStructPtr
- mov r8, r0
- add r6, sp, 0xC
-_081474F4:
- mov r1, r8
- ldr r4, [r1]
- movs r2, 0x2A
- ldrsh r0, [r4, r2]
- lsls r0, 1
- mov r7, r10
- adds r5, r0, r7
- ldrb r1, [r5]
- ldrh r2, [r4, 0x28]
- adds r3, r2, 0
- movs r7, 0x2E
- ldrsh r0, [r4, r7]
- cmp r0, 0x50
- bgt _08147514
- movs r2, 0x78
- adds r1, r3, 0
-_08147514:
- lsls r0, r2, 16
- asrs r0, 8
- lsls r1, 16
- asrs r1, 16
- orrs r1, r0
- movs r7, 0
- strh r1, [r5]
- ldrb r0, [r6]
- cmp r0, 0
- bne _08147540
- adds r0, r4, 0
- adds r0, 0x24
- movs r1, 0x1
- movs r2, 0x1
- bl sub_814A228
- strb r0, [r6]
- b _081474F4
- .pool
-_08147540:
- mov r0, r8
- ldr r2, [r0]
- ldrh r0, [r2, 0x2E]
- subs r0, 0x8
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r3, r0, 16
- cmp r3, 0
- bgt _0814755E
- strh r7, [r2, 0x2C]
- mov r1, r9
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _08147588
-_0814755E:
- movs r4, 0x2A
- ldrsh r0, [r2, r4]
- cmp r0, r3
- ble _08147588
- ldr r6, =gUnknown_02038C28
- adds r3, r1, 0
- ldr r5, =sTransitionStructPtr
-_0814756C:
- ldr r2, [r5]
- ldrh r0, [r2, 0x2A]
- subs r0, 0x1
- strh r0, [r2, 0x2A]
- lsls r0, 16
- asrs r0, 15
- adds r0, r6
- strh r3, [r0]
- movs r7, 0x2A
- ldrsh r1, [r2, r7]
- movs r4, 0x2E
- ldrsh r0, [r2, r4]
- cmp r1, r0
- bgt _0814756C
-_08147588:
- ldr r7, =sTransitionStructPtr
- ldr r0, [r7]
- ldrb r1, [r0]
- adds r1, 0x1
- ldrb r2, [r0]
- strb r1, [r0]
- movs r0, 0
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81474B0
-
- thumb_func_start sub_81475B0
-sub_81475B0: @ 81475B0
- push {r4-r7,lr}
- sub sp, 0xC
- adds r7, r0, 0
- ldr r1, =sTransitionStructPtr
- ldr r0, [r1]
- ldrb r2, [r0]
- movs r2, 0
- strb r2, [r0]
- ldr r1, [r1]
- adds r0, r1, 0
- adds r0, 0x24
- movs r4, 0x2C
- ldrsh r3, [r1, r4]
- str r2, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x78
- movs r2, 0x50
- bl sub_814A1AC
- ldr r6, =gUnknown_02038C28
-_081475DC:
- movs r2, 0x78
- ldr r5, =sTransitionStructPtr
- ldr r3, [r5]
- ldrh r4, [r3, 0x28]
- movs r1, 0x28
- ldrsh r0, [r3, r1]
- cmp r0, 0x77
- ble _081475F0
- movs r2, 0
- movs r4, 0xF0
-_081475F0:
- movs r0, 0x2A
- ldrsh r1, [r3, r0]
- lsls r1, 1
- adds r1, r6
- lsls r2, 8
- lsls r0, r4, 16
- asrs r0, 16
- orrs r0, r2
- strh r0, [r1]
- adds r0, r3, 0
- adds r0, 0x24
- movs r1, 0x1
- movs r2, 0x1
- bl sub_814A228
- lsls r0, 24
- cmp r0, 0
- beq _081475DC
- ldr r0, [r5]
- ldrh r1, [r0, 0x2C]
- adds r1, 0x10
- strh r1, [r0, 0x2C]
- movs r1, 0x28
- ldrsh r0, [r0, r1]
- cmp r0, 0x78
- ble _0814762A
- ldrh r0, [r7, 0x8]
- adds r0, 0x1
- strh r0, [r7, 0x8]
-_0814762A:
- ldr r0, [r5]
- ldrb r1, [r0]
- adds r1, 0x1
- ldrb r2, [r0]
- strb r1, [r0]
- movs r0, 0
- add sp, 0xC
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81475B0
-
- thumb_func_start sub_8147648
-sub_8147648: @ 8147648
- push {lr}
- ldr r1, =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bl sub_8149F84
- ldr r0, =Phase2Task_Transition_Clockwise_BlackFade
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8147648
-
- thumb_func_start sub_8147688
-sub_8147688: @ 8147688
- push {r4,lr}
- ldr r4, =0x040000b0
- ldrh r1, [r4, 0xA]
- ldr r0, =0x0000c5ff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xA]
- ldr r0, =0x00007fff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xA]
- bl sub_8149F2C
- ldr r3, =sTransitionStructPtr
- ldr r0, [r3]
- ldrb r0, [r0]
- cmp r0, 0
- beq _081476C0
- ldr r1, =0x040000d4
- ldr r0, =gUnknown_02038C28
- str r0, [r1]
- movs r2, 0xF0
- lsls r2, 3
- adds r0, r2
- str r0, [r1, 0x4]
- ldr r0, =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_081476C0:
- ldr r2, =0x04000048
- ldr r1, [r3]
- 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]
- subs r2, 0x4
- ldr r0, =gUnknown_02038C28
- movs r1, 0xF0
- lsls r1, 3
- adds r0, r1
- ldrh r1, [r0]
- strh r1, [r2]
- str r0, [r4]
- str r2, [r4, 0x4]
- ldr r0, =0xa2400001
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8147688
-
- thumb_func_start Phase2Task_Transition_Ripple
-Phase2Task_Transition_Ripple: @ 8147718
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, =sPhase2_Transition_Ripple_Funcs
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0814772A:
- 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 _0814772A
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end Phase2Task_Transition_Ripple
-
- thumb_func_start sub_8147750
-sub_8147750: @ 8147750
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_8149F08
- bl dp12_8087EA4
- movs r2, 0
- ldr r4, =gUnknown_020393A8
- ldr r3, =sTransitionStructPtr
-_08147762:
- lsls r1, r2, 1
- adds r1, r4
- ldr r0, [r3]
- ldrh r0, [r0, 0x16]
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x9F
- bls _08147762
- ldr r0, =sub_8147888
- bl SetVBlankCallback
- ldr r0, =sub_81478C0
- bl SetHBlankCallback
- movs r0, 0x2
- bl EnableInterrupts
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8147750
-
- thumb_func_start sub_81477A8
-sub_81477A8: @ 81477A8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r6, r0, 0
- ldr r0, =sTransitionStructPtr
- ldr r1, [r0]
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldrh r2, [r6, 0xC]
- lsls r1, r2, 16
- asrs r0, r1, 24
- lsls r0, 16
- lsrs r3, r0, 16
- ldrh r4, [r6, 0xA]
- movs r0, 0xC0
- lsls r0, 1
- mov r8, r0
- movs r5, 0x80
- lsls r5, 3
- adds r0, r4, r5
- strh r0, [r6, 0xA]
- ldr r0, =0x1fff0000
- cmp r1, r0
- bgt _081477E4
- movs r1, 0xC0
- lsls r1, 1
- adds r0, r2, r1
- strh r0, [r6, 0xC]
-_081477E4:
- movs r5, 0
- lsls r7, r3, 16
-_081477E8:
- lsrs r0, r4, 8
- asrs r1, r7, 16
- bl Sin
- ldr r1, =gUnknown_02038C28
- lsls r2, r5, 1
- adds r2, r1
- ldr r1, =sTransitionStructPtr
- ldr r1, [r1]
- ldrh r1, [r1, 0x16]
- adds r0, r1
- strh r0, [r2]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- mov r1, r8
- adds r0, r4, r1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r5, 0x9F
- bls _081477E8
- ldrh r0, [r6, 0xE]
- adds r0, 0x1
- strh r0, [r6, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x51
- bne _08147838
- ldrh r0, [r6, 0x10]
- adds r0, 0x1
- strh r0, [r6, 0x10]
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x2
- negs r1, r1
- movs r2, 0
- str r2, [sp]
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_08147838:
- movs r5, 0x10
- ldrsh r0, [r6, r5]
- cmp r0, 0
- beq _0814785A
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0814785A
- ldr r0, =Phase2Task_Transition_Ripple
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0814785A:
- ldr r0, =sTransitionStructPtr
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- ldrb r2, [r1]
- strb r0, [r1]
- movs r0, 0
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81477A8
-
- thumb_func_start sub_8147888
-sub_8147888: @ 8147888
- push {lr}
- bl sub_8149F2C
- ldr r0, =sTransitionStructPtr
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0
- beq _081478AC
- ldr r1, =0x040000d4
- ldr r0, =gUnknown_02038C28
- str r0, [r1]
- movs r2, 0xF0
- lsls r2, 3
- adds r0, r2
- str r0, [r1, 0x4]
- ldr r0, =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_081478AC:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8147888
-
- thumb_func_start sub_81478C0
-sub_81478C0: @ 81478C0
- ldr r1, =gUnknown_02038C28
- ldr r0, =0x04000006
- ldrh r0, [r0]
- lsls r0, 1
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r2
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, =0x04000016
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- bx lr
- .pool
- thumb_func_end sub_81478C0
-
- thumb_func_start Phase2Task_Transition_Wave
-Phase2Task_Transition_Wave: @ 81478EC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, =sPhase2_Transition_Wave_Funcs
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_081478FE:
- 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 _081478FE
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end Phase2Task_Transition_Wave
-
- thumb_func_start sub_8147924
-sub_8147924: @ 8147924
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8149F08
- bl dp12_8087EA4
- ldr r0, =sTransitionStructPtr
- ldr r1, [r0]
- movs r2, 0
- movs r0, 0x3F
- strh r0, [r1, 0x2]
- strh r2, [r1, 0x4]
- movs r0, 0xF0
- strh r0, [r1, 0x6]
- movs r0, 0xA0
- strh r0, [r1, 0x8]
- movs r1, 0
- ldr r3, =gUnknown_020393A8
- movs r2, 0xF2
-_0814794A:
- lsls r0, r1, 1
- adds r0, r3
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x9F
- bls _0814794A
- ldr r0, =sub_8147A58
- bl SetVBlankCallback
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8147924
-
- thumb_func_start sub_814797C
-sub_814797C: @ 814797C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- ldr r0, =sTransitionStructPtr
- ldr r1, [r0]
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldr r7, =gUnknown_02038C28
- ldrh r0, [r4, 0xC]
- ldrb r5, [r4, 0xC]
- adds r0, 0x10
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0xA]
- adds r0, 0x8
- strh r0, [r4, 0xA]
- movs r6, 0
- movs r0, 0x1
- mov r8, r0
-_081479A4:
- adds r0, r5, 0
- movs r1, 0x28
- bl Sin
- ldrh r1, [r4, 0xA]
- adds r0, r1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r0, 0
- bge _081479BA
- movs r1, 0
-_081479BA:
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xF0
- ble _081479C4
- movs r1, 0xF0
-_081479C4:
- lsls r0, r1, 16
- asrs r0, 16
- lsls r1, r0, 8
- movs r2, 0xF1
- orrs r1, r2
- strh r1, [r7]
- cmp r0, 0xEF
- bgt _081479D8
- movs r0, 0
- mov r8, r0
-_081479D8:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r5, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, 0x2
- cmp r6, 0x9F
- bls _081479A4
- mov r1, r8
- cmp r1, 0
- beq _081479F6
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_081479F6:
- ldr r0, =sTransitionStructPtr
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- ldrb r2, [r1]
- strb r0, [r1]
- movs r0, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_814797C
-
- thumb_func_start sub_8147A18
-sub_8147A18: @ 8147A18
- push {lr}
- ldr r1, =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bl sub_8149F84
- ldr r0, =Phase2Task_Transition_Wave
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8147A18
-
- thumb_func_start sub_8147A58
-sub_8147A58: @ 8147A58
- push {r4,lr}
- ldr r4, =0x040000b0
- ldrh r1, [r4, 0xA]
- ldr r0, =0x0000c5ff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xA]
- ldr r0, =0x00007fff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xA]
- bl sub_8149F2C
- ldr r3, =sTransitionStructPtr
- ldr r0, [r3]
- ldrb r0, [r0]
- cmp r0, 0
- beq _08147A90
- ldr r1, =0x040000d4
- ldr r0, =gUnknown_02038C28
- str r0, [r1]
- movs r2, 0xF0
- lsls r2, 3
- adds r0, r2
- str r0, [r1, 0x4]
- ldr r0, =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_08147A90:
- ldr r2, =0x04000048
- ldr r1, [r3]
- 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]
- ldr r0, =gUnknown_020393A8
- str r0, [r4]
- ldr r0, =0x04000040
- str r0, [r4, 0x4]
- ldr r0, =0xa2400001
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8147A58
-
- thumb_func_start Phase2Task_Transition_Sydney
-Phase2Task_Transition_Sydney: @ 8147AE4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- strh r2, [r1, 0x26]
- bl sub_8147B84
- pop {r0}
- bx r0
- .pool
- thumb_func_end Phase2Task_Transition_Sydney
-
- thumb_func_start Phase2Task_Transition_Phoebe
-Phase2Task_Transition_Phoebe: @ 8147B04
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0x1
- strh r2, [r1, 0x26]
- bl sub_8147B84
- pop {r0}
- bx r0
- .pool
- thumb_func_end Phase2Task_Transition_Phoebe
-
- thumb_func_start Phase2Task_Transition_Glacia
-Phase2Task_Transition_Glacia: @ 8147B24
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0x2
- strh r2, [r1, 0x26]
- bl sub_8147B84
- pop {r0}
- bx r0
- .pool
- thumb_func_end Phase2Task_Transition_Glacia
-
- thumb_func_start Phase2Task_Transition_Drake
-Phase2Task_Transition_Drake: @ 8147B44
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0x3
- strh r2, [r1, 0x26]
- bl sub_8147B84
- pop {r0}
- bx r0
- .pool
- thumb_func_end Phase2Task_Transition_Drake
-
- thumb_func_start Phase2Task_Transition_Wallace
-Phase2Task_Transition_Wallace: @ 8147B64
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0x4
- strh r2, [r1, 0x26]
- bl sub_8147B84
- pop {r0}
- bx r0
- .pool
- thumb_func_end Phase2Task_Transition_Wallace
-
- thumb_func_start sub_8147B84
-sub_8147B84: @ 8147B84
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, =sPhase2_Mugshot_Transition_Funcs
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_08147B96:
- 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 _08147B96
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8147B84
-
- thumb_func_start sub_8147BBC
-sub_8147BBC: @ 8147BBC
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8149F08
- bl dp12_8087EA4
- adds r0, r4, 0
- bl sub_8148218
- movs r0, 0
- strh r0, [r4, 0xA]
- movs r0, 0x1
- strh r0, [r4, 0xC]
- movs r0, 0xEF
- strh r0, [r4, 0xE]
- ldr r0, =sTransitionStructPtr
- ldr r1, [r0]
- movs r0, 0x3F
- strh r0, [r1, 0x2]
- movs r0, 0x3E
- strh r0, [r1, 0x4]
- movs r0, 0xA0
- strh r0, [r1, 0x8]
- movs r1, 0
- ldr r3, =gUnknown_020393A8
- ldr r2, =0x0000f0f1
-_08147BF0:
- lsls r0, r1, 1
- adds r0, r3
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x9F
- bls _08147BF0
- ldr r0, =sub_81480CC
- bl SetVBlankCallback
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8147BBC
-
- thumb_func_start sub_8147C24
-sub_8147C24: @ 8147C24
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- mov r8, r0
- ldr r6, =sMugshotsTilemap
- add r1, sp, 0x4
- mov r0, sp
- bl sub_8149F58
- ldr r0, =sUnknown_085B9AF0
- ldr r1, [sp, 0x4]
- movs r2, 0xF0
- bl CpuSet
- ldr r1, =sOpponentMugshotsPals
- mov r2, r8
- movs r3, 0x26
- ldrsh r0, [r2, r3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldr r1, =sPlayerMugshotsPals
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0xFA
- movs r2, 0xC
- bl LoadPalette
- movs r1, 0
- ldr r5, [sp]
- movs r0, 0xF0
- lsls r0, 8
- adds r7, r0, 0
-_08147C78:
- movs r0, 0
- lsls r3, r1, 16
- asrs r4, r3, 11
-_08147C7E:
- lsls r2, r0, 16
- asrs r2, 16
- adds r1, r4, r2
- lsls r1, 1
- adds r1, r5
- ldrh r0, [r6]
- orrs r0, r7
- strh r0, [r1]
- adds r2, 0x1
- lsls r2, 16
- adds r6, 0x2
- lsrs r0, r2, 16
- asrs r2, 16
- cmp r2, 0x1F
- ble _08147C7E
- movs r1, 0x80
- lsls r1, 9
- adds r0, r3, r1
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _08147C78
- movs r0, 0x2
- bl EnableInterrupts
- ldr r0, =sub_81481E0
- bl SetHBlankCallback
- mov r2, r8
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- movs r0, 0
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8147C24
-
- thumb_func_start sub_8147CE4
-sub_8147CE4: @ 8147CE4
- push {r4-r7,lr}
- adds r4, r0, 0
- ldr r0, =sTransitionStructPtr
- ldr r1, [r0]
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldr r7, =gUnknown_02038C28
- ldrh r0, [r4, 0xA]
- ldrb r5, [r4, 0xA]
- adds r0, 0x10
- strh r0, [r4, 0xA]
- movs r6, 0
-_08147CFE:
- adds r0, r5, 0
- movs r1, 0x10
- bl Sin
- ldrh r1, [r4, 0xC]
- adds r0, r1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r0, 0
- bge _08147D14
- movs r2, 0x1
-_08147D14:
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0xF0
- ble _08147D1E
- movs r2, 0xF0
-_08147D1E:
- strh r2, [r7]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r7, 0x2
- adds r0, r5, 0
- adds r0, 0x10
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r6, 0x4F
- bls _08147CFE
- cmp r6, 0x9F
- bhi _08147D76
-_08147D38:
- adds r0, r5, 0
- movs r1, 0x10
- bl Sin
- ldrh r1, [r4, 0xE]
- subs r1, r0
- lsls r1, 16
- lsrs r2, r1, 16
- cmp r1, 0
- bge _08147D4E
- movs r2, 0
-_08147D4E:
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0xEF
- ble _08147D58
- movs r2, 0xEF
-_08147D58:
- lsls r0, r2, 16
- asrs r0, 8
- movs r1, 0xF0
- orrs r0, r1
- strh r0, [r7]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r7, 0x2
- adds r0, r5, 0
- adds r0, 0x10
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r6, 0x9F
- bls _08147D38
-_08147D76:
- ldrh r1, [r4, 0xC]
- adds r1, 0x8
- strh r1, [r4, 0xC]
- ldrh r0, [r4, 0xE]
- subs r0, 0x8
- strh r0, [r4, 0xE]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0xF0
- ble _08147D8E
- movs r0, 0xF0
- strh r0, [r4, 0xC]
-_08147D8E:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bge _08147D9A
- movs r0, 0
- strh r0, [r4, 0xE]
-_08147D9A:
- ldr r0, [r4, 0xC]
- cmp r0, 0xF0
- bne _08147DA6
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_08147DA6:
- ldr r0, =sTransitionStructPtr
- ldr r1, [r0]
- ldrh r0, [r1, 0x18]
- subs r0, 0x8
- strh r0, [r1, 0x18]
- ldrh r0, [r1, 0x1A]
- adds r0, 0x8
- strh r0, [r1, 0x1A]
- ldrb r0, [r1]
- adds r0, 0x1
- ldrb r2, [r1]
- strb r0, [r1]
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8147CE4
-
- thumb_func_start sub_8147DD0
-sub_8147DD0: @ 8147DD0
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r2, =sTransitionStructPtr
- ldr r1, [r2]
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldr r1, =gUnknown_02038C28
- adds r5, r2, 0
- movs r2, 0xF0
-_08147DE4:
- strh r2, [r1]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- adds r1, 0x2
- cmp r0, 0x9F
- bls _08147DE4
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r4, 0x8]
- strh r1, [r4, 0xA]
- strh r1, [r4, 0xC]
- strh r1, [r4, 0xE]
- ldr r1, [r5]
- ldrh r0, [r1, 0x18]
- subs r0, 0x8
- strh r0, [r1, 0x18]
- ldrh r0, [r1, 0x1A]
- adds r0, 0x8
- strh r0, [r1, 0x1A]
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- movs r1, 0
- bl sub_8148484
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- movs r1, 0x1
- bl sub_8148484
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- bl sub_814849C
- movs r0, 0x68
- bl PlaySE
- ldr r1, [r5]
- ldrb r0, [r1]
- adds r0, 0x1
- ldrb r2, [r1]
- strb r0, [r1]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8147DD0
-
- thumb_func_start sub_8147E4C
-sub_8147E4C: @ 8147E4C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =sTransitionStructPtr
- ldr r1, [r0]
- ldrh r0, [r1, 0x18]
- subs r0, 0x8
- strh r0, [r1, 0x18]
- ldrh r0, [r1, 0x1A]
- adds r0, 0x8
- strh r0, [r1, 0x1A]
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- bl sub_81484B8
- lsls r0, 16
- cmp r0, 0
- beq _08147E7C
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- bl sub_814849C
-_08147E7C:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8147E4C
-
- thumb_func_start sub_8147E88
-sub_8147E88: @ 8147E88
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- ldr r7, =sTransitionStructPtr
- ldr r1, [r7]
- ldrh r0, [r1, 0x18]
- subs r0, 0x8
- movs r2, 0
- mov r8, r2
- strh r0, [r1, 0x18]
- ldrh r0, [r1, 0x1A]
- adds r0, 0x8
- strh r0, [r1, 0x1A]
- movs r1, 0x24
- ldrsh r0, [r6, r1]
- bl sub_81484B8
- lsls r0, 16
- cmp r0, 0
- beq _08147F1C
- ldr r1, [r7]
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- movs r0, 0
- bl SetVBlankCallback
- ldr r1, =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- ldr r4, =gUnknown_02038C28
- movs r5, 0xA0
- lsls r5, 1
- adds r0, r4, 0
- movs r1, 0
- adds r2, r5, 0
- bl memset
- movs r2, 0xF0
- lsls r2, 3
- adds r4, r2
- adds r0, r4, 0
- movs r1, 0
- adds r2, r5, 0
- bl memset
- movs r0, 0x40
- movs r1, 0xF0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
- mov r0, r8
- strh r0, [r6, 0xE]
- strh r0, [r6, 0x10]
- ldr r1, [r7]
- movs r0, 0xBF
- strh r0, [r1, 0xE]
- ldr r0, =sub_8148160
- bl SetVBlankCallback
-_08147F1C:
- movs r0, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8147E88
-
- thumb_func_start sub_8147F40
-sub_8147F40: @ 8147F40
- push {r4-r7,lr}
- adds r4, r0, 0
- ldr r2, =sTransitionStructPtr
- ldr r1, [r2]
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- movs r6, 0x1
- ldr r1, [r2]
- ldrh r0, [r1, 0x18]
- subs r0, 0x8
- strh r0, [r1, 0x18]
- ldrh r0, [r1, 0x1A]
- adds r0, 0x8
- strh r0, [r1, 0x1A]
- ldrh r1, [r4, 0x10]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- mov r12, r2
- cmp r0, 0x4F
- bgt _08147F6E
- adds r0, r1, 0x2
- strh r0, [r4, 0x10]
-_08147F6E:
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0x50
- ble _08147F7A
- movs r0, 0x50
- strh r0, [r4, 0x10]
-_08147F7A:
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- movs r1, 0x1
- ands r0, r1
- ldrh r3, [r4, 0x10]
- cmp r0, 0
- beq _08147FDC
- movs r2, 0
- lsls r0, r3, 16
- movs r6, 0
- cmp r0, 0
- blt _08147FDC
- movs r7, 0x50
- ldr r5, =gUnknown_02038C28
-_08147F98:
- lsls r0, r2, 16
- asrs r3, r0, 16
- subs r1, r7, r3
- adds r0, r3, 0
- adds r0, 0x50
- lsls r0, 16
- lsrs r2, r0, 16
- lsls r1, 16
- asrs r1, 15
- adds r1, r5
- ldrh r0, [r1]
- cmp r0, 0xF
- bhi _08147FB8
- movs r6, 0x1
- adds r0, 0x1
- strh r0, [r1]
-_08147FB8:
- lsls r0, r2, 16
- asrs r0, 15
- adds r1, r0, r5
- ldrh r0, [r1]
- cmp r0, 0xF
- bhi _08147FCA
- movs r6, 0x1
- adds r0, 0x1
- strh r0, [r1]
-_08147FCA:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- asrs r0, 16
- movs r3, 0x10
- ldrsh r1, [r4, r3]
- ldrh r3, [r4, 0x10]
- cmp r0, r1
- ble _08147F98
-_08147FDC:
- cmp r3, 0x50
- bne _08147FEA
- cmp r6, 0
- bne _08147FEA
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_08147FEA:
- mov r1, r12
- ldr r0, [r1]
- ldrb r1, [r0]
- adds r1, 0x1
- ldrb r2, [r0]
- strb r1, [r0]
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8147F40
-
- thumb_func_start sub_8148008
-sub_8148008: @ 8148008
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r5, =sTransitionStructPtr
- ldr r0, [r5]
- ldrb r1, [r0]
- movs r6, 0
- strb r6, [r0]
- movs r0, 0x1
- negs r0, r0
- ldr r2, =0x00007fff
- movs r1, 0x10
- bl BlendPalettes
- ldr r1, [r5]
- movs r0, 0xFF
- strh r0, [r1, 0xE]
- strh r6, [r4, 0xE]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0x1
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8148008
-
- thumb_func_start sub_8148040
-sub_8148040: @ 8148040
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, =sTransitionStructPtr
- ldr r1, [r5]
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- ldr r0, =gUnknown_02038C28
- movs r2, 0xE
- ldrsh r1, [r4, r2]
- movs r2, 0xA0
- lsls r2, 1
- bl memset
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0xF
- ble _08148070
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_08148070:
- ldr r0, [r5]
- ldrb r1, [r0]
- adds r1, 0x1
- ldrb r2, [r0]
- strb r1, [r0]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8148040
-
- thumb_func_start sub_814808C
-sub_814808C: @ 814808C
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bl sub_8149F84
- ldr r0, [r4]
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_814808C
-
- thumb_func_start sub_81480CC
-sub_81480CC: @ 81480CC
- push {r4,lr}
- ldr r4, =0x040000b0
- ldrh r1, [r4, 0xA]
- ldr r0, =0x0000c5ff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xA]
- ldr r0, =0x00007fff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xA]
- bl sub_8149F2C
- ldr r3, =sTransitionStructPtr
- ldr r0, [r3]
- ldrb r0, [r0]
- cmp r0, 0
- beq _08148104
- ldr r1, =0x040000d4
- ldr r0, =gUnknown_02038C28
- str r0, [r1]
- movs r2, 0xF0
- lsls r2, 3
- adds r0, r2
- str r0, [r1, 0x4]
- ldr r0, =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_08148104:
- ldr r2, =0x04000012
- ldr r1, [r3]
- ldrh r0, [r1, 0x1C]
- strh r0, [r2]
- adds r2, 0x36
- 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]
- ldr r0, =gUnknown_020393A8
- str r0, [r4]
- ldr r0, =0x04000040
- str r0, [r4, 0x4]
- ldr r0, =0xa2400001
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81480CC
-
- thumb_func_start sub_8148160
-sub_8148160: @ 8148160
- push {r4,lr}
- ldr r4, =0x040000b0
- ldrh r1, [r4, 0xA]
- ldr r0, =0x0000c5ff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xA]
- ldr r0, =0x00007fff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xA]
- bl sub_8149F2C
- ldr r2, =sTransitionStructPtr
- ldr r0, [r2]
- ldrb r0, [r0]
- cmp r0, 0
- beq _08148198
- ldr r1, =0x040000d4
- ldr r0, =gUnknown_02038C28
- str r0, [r1]
- movs r3, 0xF0
- lsls r3, 3
- adds r0, r3
- str r0, [r1, 0x4]
- ldr r0, =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_08148198:
- ldr r1, =0x04000050
- ldr r0, [r2]
- ldrh r0, [r0, 0xE]
- strh r0, [r1]
- ldr r0, =gUnknown_020393A8
- str r0, [r4]
- ldr r0, =0x04000054
- str r0, [r4, 0x4]
- ldr r0, =0xa2400001
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8148160
-
- thumb_func_start sub_81481E0
-sub_81481E0: @ 81481E0
- push {lr}
- ldr r0, =0x04000006
- ldrh r0, [r0]
- cmp r0, 0x4F
- bhi _08148200
- ldr r1, =0x04000010
- ldr r0, =sTransitionStructPtr
- ldr r0, [r0]
- ldrh r0, [r0, 0x18]
- b _08148208
- .pool
-_08148200:
- ldr r1, =0x04000010
- ldr r0, =sTransitionStructPtr
- ldr r0, [r0]
- ldrh r0, [r0, 0x1A]
-_08148208:
- strh r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81481E0
-
- thumb_func_start sub_8148218
-sub_8148218: @ 8148218
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r0, =sMugshotsTrainerPicIDsTable
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- mov r8, r1
- add r0, r8
- ldrb r0, [r0]
- ldr r2, =sMugshotsOpponentCoords
- lsls r1, 2
- mov r8, r1
- adds r1, r2
- ldrh r1, [r1]
- subs r1, 0x20
- lsls r1, 16
- asrs r1, 16
- adds r2, 0x2
- add r2, r8
- ldrh r2, [r2]
- adds r2, 0x2A
- lsls r2, 16
- asrs r2, 16
- ldr r5, =0x0201c000
- str r5, [sp]
- movs r3, 0
- bl sub_80B5E6C
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- bl PlayerGenderToFrontTrainerPicId
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x88
- lsls r1, 1
- str r5, [sp]
- movs r2, 0x6A
- movs r3, 0
- bl sub_80B5E6C
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x24]
- movs r3, 0x22
- ldrsh r0, [r4, r3]
- lsls r5, r0, 4
- adds r5, r0
- lsls r5, 2
- ldr r1, =gSprites
- adds r5, r1
- movs r2, 0x24
- ldrsh r0, [r4, r2]
- lsls r6, r0, 4
- adds r6, r0
- lsls r6, 2
- adds r6, r1
- ldr r0, =sub_8148380
- str r0, [r5, 0x1C]
- str r0, [r6, 0x1C]
- ldrb r0, [r5, 0x1]
- movs r1, 0x3
- orrs r0, r1
- strb r0, [r5, 0x1]
- ldrb r0, [r6, 0x1]
- orrs r0, r1
- strb r0, [r6, 0x1]
- bl AllocOamMatrix
- lsls r0, 24
- lsrs r0, 24
- movs r3, 0x1F
- mov r9, r3
- mov r4, r9
- ands r0, r4
- lsls r0, 1
- ldrb r2, [r5, 0x3]
- movs r4, 0x3F
- negs r4, r4
- adds r1, r4, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r5, 0x3]
- bl AllocOamMatrix
- lsls r0, 24
- lsrs r0, 24
- mov r1, r9
- ands r0, r1
- lsls r0, 1
- ldrb r1, [r6, 0x3]
- ands r4, r1
- orrs r4, r0
- strb r4, [r6, 0x3]
- ldrb r2, [r5, 0x1]
- movs r1, 0x3F
- adds r0, r1, 0
- ands r0, r2
- movs r2, 0x40
- orrs r0, r2
- strb r0, [r5, 0x1]
- ldrb r0, [r6, 0x1]
- ands r1, r0
- orrs r1, r2
- strb r1, [r6, 0x1]
- ldrb r0, [r5, 0x3]
- movs r1, 0xC0
- orrs r0, r1
- strb r0, [r5, 0x3]
- ldrb r0, [r6, 0x3]
- orrs r0, r1
- strb r0, [r6, 0x3]
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0x3
- movs r3, 0x3
- bl CalcCenterToCornerVec
- adds r0, r6, 0
- movs r1, 0x1
- movs r2, 0x3
- movs r3, 0x3
- bl CalcCenterToCornerVec
- ldrb r0, [r5, 0x3]
- lsls r0, 26
- lsrs r0, 27
- ldr r2, =sMugshotsOpponentRotationScales
- mov r3, r8
- adds r1, r3, r2
- movs r4, 0
- ldrsh r1, [r1, r4]
- adds r2, 0x2
- add r8, r2
- mov r3, r8
- movs r4, 0
- ldrsh r2, [r3, r4]
- movs r3, 0
- bl SetOamMatrixRotationScaling
- ldrb r0, [r6, 0x3]
- lsls r0, 26
- lsrs r0, 27
- ldr r1, =0xfffffe00
- movs r2, 0x80
- lsls r2, 2
- movs r3, 0
- bl SetOamMatrixRotationScaling
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8148218
-
- thumb_func_start sub_8148380
-sub_8148380: @ 8148380
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, =sUnknown_085C8C24
-_08148386:
- movs r1, 0x2E
- 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 _08148386
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8148380
-
- thumb_func_start sub_81483A8
-sub_81483A8: @ 81483A8
- movs r0, 0
- bx lr
- thumb_func_end sub_81483A8
-
- thumb_func_start sub_81483AC
-sub_81483AC: @ 81483AC
- push {r4,r5,lr}
- sub sp, 0x8
- adds r5, r0, 0
- ldr r1, =sUnknown_085C8C40
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- add r4, sp, 0x4
- ldr r1, =sUnknown_085C8C44
- adds r0, r4, 0
- movs r2, 0x4
- bl memcpy
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- movs r1, 0x3C
- ldrsh r0, [r5, r1]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- strh r0, [r5, 0x30]
- movs r1, 0x3C
- ldrsh r0, [r5, r1]
- lsls r0, 1
- adds r4, r0
- ldrh r0, [r4]
- strh r0, [r5, 0x32]
- movs r0, 0x1
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81483AC
-
- thumb_func_start sub_81483F8
-sub_81483F8: @ 81483F8
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x30]
- ldrh r3, [r1, 0x20]
- adds r2, r0, r3
- strh r2, [r1, 0x20]
- movs r3, 0x3C
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _08148416
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x84
- bgt _08148424
- b _0814841E
-_08148416:
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x67
- ble _08148424
-_0814841E:
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
-_08148424:
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_81483F8
-
- thumb_func_start sub_814842C
-sub_814842C: @ 814842C
- push {lr}
- adds r2, r0, 0
- ldrh r3, [r2, 0x32]
- ldrh r0, [r2, 0x30]
- adds r1, r3, r0
- strh r1, [r2, 0x30]
- ldrh r0, [r2, 0x20]
- adds r0, r1
- strh r0, [r2, 0x20]
- lsls r1, 16
- cmp r1, 0
- bne _08148452
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- negs r0, r3
- strh r0, [r2, 0x32]
- movs r0, 0x1
- strh r0, [r2, 0x3A]
-_08148452:
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_814842C
-
- thumb_func_start sub_8148458
-sub_8148458: @ 8148458
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x32]
- ldrh r1, [r2, 0x30]
- adds r0, r1
- strh r0, [r2, 0x30]
- ldrh r1, [r2, 0x20]
- adds r1, r0
- strh r1, [r2, 0x20]
- adds r1, 0x1F
- lsls r1, 16
- movs r0, 0x97
- lsls r0, 17
- cmp r1, r0
- bls _0814847C
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
-_0814847C:
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_8148458
-
- thumb_func_start sub_8148484
-sub_8148484: @ 8148484
- ldr r3, =gSprites
- lsls r0, 16
- asrs r0, 16
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- strh r1, [r2, 0x3C]
- bx lr
- .pool
- thumb_func_end sub_8148484
-
- thumb_func_start sub_814849C
-sub_814849C: @ 814849C
- ldr r2, =gSprites
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
- bx lr
- .pool
- thumb_func_end sub_814849C
-
- thumb_func_start sub_81484B8
-sub_81484B8: @ 81484B8
- ldr r2, =gSprites
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r2, 0x3A
- ldrsh r0, [r1, r2]
- bx lr
- .pool
- thumb_func_end sub_81484B8
-
- thumb_func_start Phase2Task_Transition_Slice
-Phase2Task_Transition_Slice: @ 81484D0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, =gUnknown_085C8C48
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_081484E2:
- 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 _081484E2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end Phase2Task_Transition_Slice
-
- thumb_func_start sub_8148508
-sub_8148508: @ 8148508
- push {r4-r6,lr}
- adds r5, r0, 0
- bl sub_8149F08
- bl dp12_8087EA4
- movs r4, 0
- movs r3, 0
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r5, 0xC]
- movs r0, 0x1
- strh r0, [r5, 0xE]
- ldr r2, =sTransitionStructPtr
- ldr r1, [r2]
- movs r0, 0x3F
- strh r0, [r1, 0x2]
- strh r3, [r1, 0x4]
- movs r0, 0xA0
- strh r0, [r1, 0x8]
- ldrb r0, [r1]
- strb r4, [r1]
- ldr r4, =gUnknown_020393A8
- adds r6, r2, 0
- movs r2, 0xF0
-_0814853A:
- lsls r1, r3, 1
- adds r1, r4
- ldr r0, [r6]
- ldrh r0, [r0, 0x14]
- strh r0, [r1]
- adds r0, r3, 0
- adds r0, 0xA0
- lsls r0, 1
- adds r0, r4
- strh r2, [r0]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x9F
- bls _0814853A
- movs r0, 0x2
- bl EnableInterrupts
- movs r0, 0x4
- movs r1, 0x10
- bl SetGpuRegBits
- ldr r0, =sub_814869C
- bl SetVBlankCallback
- ldr r0, =sub_8148728
- bl SetHBlankCallback
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r0, 0x1
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8148508
-
- thumb_func_start sub_8148590
-sub_8148590: @ 8148590
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r3, r0, 0
- ldr r2, =sTransitionStructPtr
- ldr r1, [r2]
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldrh r0, [r3, 0xC]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r3, 0xA]
- adds r0, r1
- strh r0, [r3, 0xA]
- lsls r0, 16
- asrs r0, 16
- mov r8, r2
- cmp r0, 0xF0
- ble _081485BC
- movs r0, 0xF0
- strh r0, [r3, 0xA]
-_081485BC:
- ldrh r4, [r3, 0xC]
- movs r0, 0xC
- ldrsh r1, [r3, r0]
- ldr r0, =0x00000fff
- ldrh r2, [r3, 0xE]
- cmp r1, r0
- bgt _081485CE
- adds r0, r4, r2
- strh r0, [r3, 0xC]
-_081485CE:
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x7F
- bgt _081485DA
- lsls r0, r2, 1
- strh r0, [r3, 0xE]
-_081485DA:
- movs r5, 0
- ldr r7, =gUnknown_02038C28
- movs r1, 0xA0
- lsls r1, 1
- adds r1, r7
- mov r12, r1
- mov r6, r8
-_081485E8:
- lsls r0, r5, 1
- adds r2, r0, r7
- mov r1, r12
- adds r4, r0, r1
- movs r0, 0x1
- ands r0, r5
- cmp r0, 0
- beq _08148618
- ldr r1, [r6]
- ldrh r0, [r3, 0xA]
- ldrh r1, [r1, 0x14]
- adds r0, r1
- strh r0, [r2]
- ldrh r1, [r3, 0xA]
- movs r0, 0xF0
- subs r0, r1
- b _0814862A
- .pool
-_08148618:
- ldr r0, [r6]
- ldrh r0, [r0, 0x14]
- ldrh r1, [r3, 0xA]
- subs r0, r1
- strh r0, [r2]
- ldrh r0, [r3, 0xA]
- lsls r0, 8
- movs r1, 0xF1
- orrs r0, r1
-_0814862A:
- strh r0, [r4]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x9F
- bls _081485E8
- movs r1, 0xA
- ldrsh r0, [r3, r1]
- cmp r0, 0xEF
- ble _08148644
- ldrh r0, [r3, 0x8]
- adds r0, 0x1
- strh r0, [r3, 0x8]
-_08148644:
- mov r1, r8
- ldr r0, [r1]
- ldrb r1, [r0]
- adds r1, 0x1
- ldrb r2, [r0]
- strb r1, [r0]
- movs r0, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8148590
-
- thumb_func_start sub_814865C
-sub_814865C: @ 814865C
- push {lr}
- ldr r1, =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bl sub_8149F84
- ldr r0, =Phase2Task_Transition_Slice
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_814865C
-
- thumb_func_start sub_814869C
-sub_814869C: @ 814869C
- push {r4,lr}
- ldr r4, =0x040000b0
- ldrh r1, [r4, 0xA]
- ldr r0, =0x0000c5ff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xA]
- ldr r0, =0x00007fff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xA]
- bl sub_8149F2C
- ldr r2, =0x04000048
- ldr r0, =sTransitionStructPtr
- ldr r1, [r0]
- 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 _081486E6
- ldr r1, =0x040000d4
- ldr r0, =gUnknown_02038C28
- str r0, [r1]
- movs r2, 0xF0
- lsls r2, 3
- adds r0, r2
- str r0, [r1, 0x4]
- ldr r0, =0x80000140
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_081486E6:
- ldr r0, =gUnknown_020394E8
- str r0, [r4]
- ldr r0, =0x04000040
- str r0, [r4, 0x4]
- ldr r0, =0xa2400001
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_814869C
-
- thumb_func_start sub_8148728
-sub_8148728: @ 8148728
- push {lr}
- ldr r2, =0x04000006
- ldrh r0, [r2]
- cmp r0, 0x9F
- bhi _0814874E
- ldr r1, =gUnknown_02038C28
- ldrh r0, [r2]
- lsls r0, 1
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r2
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, =0x04000014
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
-_0814874E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8148728
-
- thumb_func_start Phase2Task_Transition_25
-Phase2Task_Transition_25: @ 8148760
+ thumb_func_start Phase2Task_25
+Phase2Task_25: @ 8148760
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -4788,7 +31,7 @@ _08148772:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_25
+ thumb_func_end Phase2Task_25
thumb_func_start sub_8148798
sub_8148798: @ 8148798
@@ -4868,9 +111,9 @@ _081487CC:
strh r0, [r6, 0x14]
movs r0, 0x2
bl EnableInterrupts
- ldr r0, =sub_814869C
+ ldr r0, =VBlankCB_Phase2_Slice
bl SetVBlankCallback
- ldr r0, =sub_8148728
+ ldr r0, =HBlankCB_Phase2_Slice
bl SetHBlankCallback
ldrh r0, [r6, 0x8]
adds r0, 0x1
@@ -5241,7 +484,7 @@ sub_8148B14: @ 8148B14
strh r0, [r1, 0xA]
ldrh r0, [r1, 0xA]
bl sub_8149F84
- ldr r0, =Phase2Task_Transition_25
+ ldr r0, =Phase2Task_25
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -5252,8 +495,8 @@ sub_8148B14: @ 8148B14
.pool
thumb_func_end sub_8148B14
- thumb_func_start Phase2Task_Transition_26
-Phase2Task_Transition_26: @ 8148B54
+ thumb_func_start Phase2Task_26
+Phase2Task_26: @ 8148B54
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -5278,10 +521,10 @@ _08148B66:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_26
+ thumb_func_end Phase2Task_26
- thumb_func_start Phase2Task_Transition_27
-Phase2Task_Transition_27: @ 8148B8C
+ thumb_func_start Phase2Task_27
+Phase2Task_27: @ 8148B8C
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -5306,7 +549,7 @@ _08148B9E:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_27
+ thumb_func_end Phase2Task_27
thumb_func_start sub_8148BC4
sub_8148BC4: @ 8148BC4
@@ -5336,7 +579,7 @@ _08148BEE:
cmp r1, 0
bge _08148BEE
movs r4, 0
- ldr r0, =sub_8146F68
+ ldr r0, =VBlankCB1_Phase2_BigPokeball
bl SetVBlankCallback
ldrh r0, [r5, 0x8]
adds r0, 0x1
@@ -5618,8 +861,8 @@ _08148E3C:
.pool
thumb_func_end sub_8148D6C
- thumb_func_start Phase2Task_Transition_28
-Phase2Task_Transition_28: @ 8148E54
+ thumb_func_start Phase2Task_28
+Phase2Task_28: @ 8148E54
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -5644,7 +887,7 @@ _08148E66:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_28
+ thumb_func_end Phase2Task_28
thumb_func_start sub_8148E8C
sub_8148E8C: @ 8148E8C
@@ -5986,12 +1229,12 @@ _08149138:
bx r1
thumb_func_end sub_8149048
- thumb_func_start Phase2Task_Transition_Groudon
-Phase2Task_Transition_Groudon: @ 8149140
+ thumb_func_start Phase2Task_Groudon
+Phase2Task_Groudon: @ 8149140
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
- ldr r5, =gUnknown_085C8D40
+ ldr r5, =sPhase2_Groudon_Funcs
ldr r2, =gTasks
lsls r1, r0, 2
adds r1, r0
@@ -6012,7 +1255,7 @@ _08149152:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_Groudon
+ thumb_func_end Phase2Task_Groudon
thumb_func_start sub_8149178
sub_8149178: @ 8149178
@@ -6140,12 +1383,12 @@ _0814926E:
.pool
thumb_func_end sub_8149224
- thumb_func_start Phase2Task_Transition_Rayquaza
-Phase2Task_Transition_Rayquaza: @ 814927C
+ thumb_func_start Phase2Task_Rayquaza
+Phase2Task_Rayquaza: @ 814927C
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
- ldr r5, =gUnknown_085C8D60
+ ldr r5, =sPhase2_Rayquaza_Funcs
ldr r2, =gTasks
lsls r1, r0, 2
adds r1, r0
@@ -6166,7 +1409,7 @@ _0814928E:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_Rayquaza
+ thumb_func_end Phase2Task_Rayquaza
thumb_func_start sub_81492B4
sub_81492B4: @ 81492B4
@@ -6419,7 +1662,7 @@ _0814949A:
movs r0, 0xA0
strh r0, [r1, 0x8]
movs r1, 0
- ldr r5, =sub_8146F68
+ ldr r5, =VBlankCB1_Phase2_BigPokeball
ldr r3, =gUnknown_020393A8
movs r2, 0
_081494C4:
@@ -6464,7 +1707,7 @@ sub_8149508: @ 8149508
ands r0, r2
strh r0, [r1, 0xA]
ldrh r0, [r1, 0xA]
- bl sub_8149F2C
+ bl VBlankCB_BattleTransition
ldr r0, =sTransitionStructPtr
ldr r0, [r0]
movs r1, 0x20
@@ -6494,8 +1737,8 @@ _08149554:
.pool
thumb_func_end sub_8149508
- thumb_func_start Phase2Task_Transition_WhiteFade
-Phase2Task_Transition_WhiteFade: @ 8149578
+ thumb_func_start Phase2Task_WhiteFade
+Phase2Task_WhiteFade: @ 8149578
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -6520,7 +1763,7 @@ _0814958A:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_WhiteFade
+ thumb_func_end Phase2Task_WhiteFade
thumb_func_start sub_81495B0
sub_81495B0: @ 81495B0
@@ -6715,7 +1958,7 @@ sub_8149740: @ 8149740
cmp r0, 0x10
bls _08149766
bl sub_8149F84
- ldr r0, =Phase2Task_Transition_WhiteFade
+ ldr r0, =Phase2Task_WhiteFade
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -6740,7 +1983,7 @@ sub_8149774: @ 8149774
ands r0, r1
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xA]
- bl sub_8149F2C
+ bl VBlankCB_BattleTransition
ldr r2, =0x04000050
ldr r0, =sTransitionStructPtr
ldr r1, [r0]
@@ -6785,7 +2028,7 @@ _081497C4:
thumb_func_start sub_8149804
sub_8149804: @ 8149804
push {lr}
- bl sub_8149F2C
+ bl VBlankCB_BattleTransition
ldr r1, =0x04000054
ldr r0, =sTransitionStructPtr
ldr r2, [r0]
@@ -6957,8 +2200,8 @@ _0814994C:
.pool
thumb_func_end sub_8149864
- thumb_func_start Phase2Task_Transition_GridSquares
-Phase2Task_Transition_GridSquares: @ 814995C
+ thumb_func_start Phase2Task_GridSquares
+Phase2Task_GridSquares: @ 814995C
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -6983,7 +2226,7 @@ _0814996E:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_GridSquares
+ thumb_func_end Phase2Task_GridSquares
thumb_func_start sub_8149994
sub_8149994: @ 8149994
@@ -7076,7 +2319,7 @@ sub_8149A40: @ 8149A40
cmp r1, 0
bne _08149A60
bl sub_8149F84
- ldr r0, =Phase2Task_Transition_GridSquares
+ ldr r0, =Phase2Task_GridSquares
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -7088,12 +2331,12 @@ _08149A60:
.pool
thumb_func_end sub_8149A40
- thumb_func_start Phase2Task_Transition_Shards
-Phase2Task_Transition_Shards: @ 8149A6C
+ thumb_func_start Phase2Task_Shards
+Phase2Task_Shards: @ 8149A6C
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
- ldr r5, =sPhase2_Transition_Shards_Funcs
+ ldr r5, =sPhase2_Shards_Funcs
ldr r2, =gTasks
lsls r1, r0, 2
adds r1, r0
@@ -7114,7 +2357,7 @@ _08149A7E:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_Shards
+ thumb_func_end Phase2Task_Shards
thumb_func_start sub_8149AA4
sub_8149AA4: @ 8149AA4
@@ -7358,7 +2601,7 @@ sub_8149C60: @ 8149C60
strh r0, [r1, 0xA]
ldrh r0, [r1, 0xA]
bl sub_8149F84
- ldr r0, =Phase2Task_Transition_Shards
+ ldr r0, =Phase2Task_Shards
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -7418,7 +2661,7 @@ sub_8149CE8: @ 8149CE8
ands r0, r1
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xA]
- bl sub_8149F2C
+ bl VBlankCB_BattleTransition
ldr r3, =sTransitionStructPtr
ldr r0, [r3]
ldrb r0, [r0]
@@ -7463,8 +2706,8 @@ _08149D20:
.pool
thumb_func_end sub_8149CE8
- thumb_func_start sub_8149D78
-sub_8149D78: @ 8149D78
+ thumb_func_start CreatePhase1Task
+CreatePhase1Task: @ 8149D78
push {r4-r6,lr}
mov r6, r8
push {r6}
@@ -7511,10 +2754,10 @@ sub_8149D78: @ 8149D78
pop {r0}
bx r0
.pool
- thumb_func_end sub_8149D78
+ thumb_func_end CreatePhase1Task
- thumb_func_start sub_8149DDC
-sub_8149DDC: @ 8149DDC
+ thumb_func_start IsPhase1Done
+IsPhase1Done: @ 8149DDC
push {lr}
ldr r0, =sub_8149DFC
bl FindTaskIdByFunc
@@ -7530,7 +2773,7 @@ _08149DF4:
_08149DF6:
pop {r1}
bx r1
- thumb_func_end sub_8149DDC
+ thumb_func_end IsPhase1Done
thumb_func_start sub_8149DFC
sub_8149DFC: @ 8149DFC
@@ -7691,15 +2934,15 @@ sub_8149F08: @ 8149F08
.pool
thumb_func_end sub_8149F08
- thumb_func_start sub_8149F2C
-sub_8149F2C: @ 8149F2C
+ thumb_func_start VBlankCB_BattleTransition
+VBlankCB_BattleTransition: @ 8149F2C
push {lr}
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
pop {r0}
bx r0
- thumb_func_end sub_8149F2C
+ thumb_func_end VBlankCB_BattleTransition
thumb_func_start sub_8149F40
sub_8149F40: @ 8149F40
@@ -8310,8 +3553,8 @@ sub_814A374: @ 814A374
.pool
thumb_func_end sub_814A374
- thumb_func_start Phase2Task_Transition_29
-Phase2Task_Transition_29: @ 814A3BC
+ thumb_func_start Phase2Task_29
+Phase2Task_29: @ 814A3BC
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -8336,10 +3579,10 @@ _0814A3CE:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_29
+ thumb_func_end Phase2Task_29
- thumb_func_start Phase2Task_Transition_30
-Phase2Task_Transition_30: @ 814A3F4
+ thumb_func_start Phase2Task_30
+Phase2Task_30: @ 814A3F4
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -8364,7 +3607,7 @@ _0814A406:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_30
+ thumb_func_end Phase2Task_30
thumb_func_start sub_814A42C
sub_814A42C: @ 814A42C
@@ -8614,7 +3857,7 @@ _0814A632:
ands r0, r1
cmp r0, 0
bne _0814A654
- ldr r0, =Phase2Task_Transition_30
+ ldr r0, =Phase2Task_30
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -8642,7 +3885,7 @@ _0814A654:
thumb_func_start sub_814A684
sub_814A684: @ 814A684
push {lr}
- bl sub_8149F2C
+ bl VBlankCB_BattleTransition
ldr r2, =0x04000050
ldr r0, =sTransitionStructPtr
ldr r1, [r0]
@@ -8687,8 +3930,8 @@ sub_814A6CC: @ 814A6CC
.pool
thumb_func_end sub_814A6CC
- thumb_func_start Phase2Task_Transition_31
-Phase2Task_Transition_31: @ 814A6F0
+ thumb_func_start Phase2Task_31
+Phase2Task_31: @ 814A6F0
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -8713,10 +3956,10 @@ _0814A702:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_31
+ thumb_func_end Phase2Task_31
- thumb_func_start Phase2Task_Transition_33
-Phase2Task_Transition_33: @ 814A728
+ thumb_func_start Phase2Task_33
+Phase2Task_33: @ 814A728
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -8741,10 +3984,10 @@ _0814A73A:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_33
+ thumb_func_end Phase2Task_33
- thumb_func_start Phase2Task_Transition_32
-Phase2Task_Transition_32: @ 814A760
+ thumb_func_start Phase2Task_32
+Phase2Task_32: @ 814A760
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -8769,7 +4012,7 @@ _0814A772:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_32
+ thumb_func_end Phase2Task_32
thumb_func_start sub_814A798
sub_814A798: @ 814A798
diff --git a/asm/field_effect.s b/asm/field_effect.s
index b6b4803d8..770f1932c 100644
--- a/asm/field_effect.s
+++ b/asm/field_effect.s
@@ -498,8 +498,8 @@ _080B5E68:
bx r1
thumb_func_end FieldEffectActiveListContains
- thumb_func_start sub_80B5E6C
-sub_80B5E6C: @ 80B5E6C
+ thumb_func_start CreateTrainerSprite
+CreateTrainerSprite: @ 80B5E6C
push {r4-r7,lr}
mov r7, r9
mov r6, r8
@@ -566,7 +566,7 @@ sub_80B5E6C: @ 80B5E6C
pop {r1}
bx r1
.pool
- thumb_func_end sub_80B5E6C
+ thumb_func_end CreateTrainerSprite
thumb_func_start sub_80B5F0C
sub_80B5F0C: @ 80B5F0C
diff --git a/asm/main_menu.s b/asm/main_menu.s
index 52afc783e..5b50c42de 100644
--- a/asm/main_menu.s
+++ b/asm/main_menu.s
@@ -3948,7 +3948,7 @@ AddBirchSpeechObjects: @ 803192C
movs r1, 0x78
movs r2, 0x3C
movs r3, 0
- bl sub_80B5E6C
+ bl CreateTrainerSprite
lsls r0, 24
lsrs r0, 24
lsls r2, r0, 4
@@ -3981,7 +3981,7 @@ AddBirchSpeechObjects: @ 803192C
movs r1, 0x78
movs r2, 0x3C
movs r3, 0
- bl sub_80B5E6C
+ bl CreateTrainerSprite
lsls r0, 24
lsrs r0, 24
lsls r2, r0, 4
diff --git a/asm/unk_transition.s b/asm/unk_transition.s
index 564d2fbad..4b96ccaf7 100755
--- a/asm/unk_transition.s
+++ b/asm/unk_transition.s
@@ -24,8 +24,8 @@ _081DABD2:
bx r1
thumb_func_end sub_81DABBC
- thumb_func_start Phase2Task_Transition_34
-Phase2Task_Transition_34: @ 81DABDC
+ thumb_func_start Phase2Task_34
+Phase2Task_34: @ 81DABDC
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -50,7 +50,7 @@ _081DABEE:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_34
+ thumb_func_end Phase2Task_34
thumb_func_start sub_81DAC14
sub_81DAC14: @ 81DAC14
@@ -119,7 +119,7 @@ sub_81DAC80: @ 81DAC80
bne _081DACA4
adds r0, r2, 0
bl sub_81DAA20
- ldr r0, =Phase2Task_Transition_34
+ ldr r0, =Phase2Task_34
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -131,8 +131,8 @@ _081DACA4:
.pool
thumb_func_end sub_81DAC80
- thumb_func_start Phase2Task_Transition_35
-Phase2Task_Transition_35: @ 81DACB4
+ thumb_func_start Phase2Task_35
+Phase2Task_35: @ 81DACB4
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -157,7 +157,7 @@ _081DACC6:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_35
+ thumb_func_end Phase2Task_35
thumb_func_start sub_81DACEC
sub_81DACEC: @ 81DACEC
@@ -226,7 +226,7 @@ sub_81DAD58: @ 81DAD58
bne _081DAD7C
adds r0, r2, 0
bl sub_81DAA20
- ldr r0, =Phase2Task_Transition_35
+ ldr r0, =Phase2Task_35
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -238,8 +238,8 @@ _081DAD7C:
.pool
thumb_func_end sub_81DAD58
- thumb_func_start Phase2Task_Transition_36
-Phase2Task_Transition_36: @ 81DAD8C
+ thumb_func_start Phase2Task_36
+Phase2Task_36: @ 81DAD8C
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -264,7 +264,7 @@ _081DAD9E:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_36
+ thumb_func_end Phase2Task_36
thumb_func_start sub_81DADC4
sub_81DADC4: @ 81DADC4
@@ -342,7 +342,7 @@ sub_81DAE44: @ 81DAE44
bne _081DAE68
adds r0, r2, 0
bl sub_81DAA20
- ldr r0, =Phase2Task_Transition_36
+ ldr r0, =Phase2Task_36
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -354,8 +354,8 @@ _081DAE68:
.pool
thumb_func_end sub_81DAE44
- thumb_func_start Phase2Task_Transition_37
-Phase2Task_Transition_37: @ 81DAE78
+ thumb_func_start Phase2Task_37
+Phase2Task_37: @ 81DAE78
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -380,7 +380,7 @@ _081DAE8A:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_37
+ thumb_func_end Phase2Task_37
thumb_func_start sub_81DAEB0
sub_81DAEB0: @ 81DAEB0
@@ -460,7 +460,7 @@ sub_81DAF34: @ 81DAF34
bne _081DAF58
adds r0, r2, 0
bl sub_81DAA20
- ldr r0, =Phase2Task_Transition_37
+ ldr r0, =Phase2Task_37
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -472,8 +472,8 @@ _081DAF58:
.pool
thumb_func_end sub_81DAF34
- thumb_func_start Phase2Task_Transition_38
-Phase2Task_Transition_38: @ 81DAF68
+ thumb_func_start Phase2Task_38
+Phase2Task_38: @ 81DAF68
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -498,7 +498,7 @@ _081DAF7A:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_38
+ thumb_func_end Phase2Task_38
thumb_func_start sub_81DAFA0
sub_81DAFA0: @ 81DAFA0
@@ -585,7 +585,7 @@ sub_81DB02C: @ 81DB02C
bne _081DB050
adds r0, r2, 0
bl sub_81DAA20
- ldr r0, =Phase2Task_Transition_38
+ ldr r0, =Phase2Task_38
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -597,8 +597,8 @@ _081DB050:
.pool
thumb_func_end sub_81DB02C
- thumb_func_start Phase2Task_Transition_39
-Phase2Task_Transition_39: @ 81DB060
+ thumb_func_start Phase2Task_39
+Phase2Task_39: @ 81DB060
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -623,7 +623,7 @@ _081DB072:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_39
+ thumb_func_end Phase2Task_39
thumb_func_start sub_81DB098
sub_81DB098: @ 81DB098
@@ -710,7 +710,7 @@ sub_81DB124: @ 81DB124
bne _081DB148
adds r0, r2, 0
bl sub_81DAA20
- ldr r0, =Phase2Task_Transition_39
+ ldr r0, =Phase2Task_39
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -722,8 +722,8 @@ _081DB148:
.pool
thumb_func_end sub_81DB124
- thumb_func_start Phase2Task_Transition_40
-Phase2Task_Transition_40: @ 81DB158
+ thumb_func_start Phase2Task_40
+Phase2Task_40: @ 81DB158
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -748,7 +748,7 @@ _081DB16A:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_40
+ thumb_func_end Phase2Task_40
thumb_func_start sub_81DB190
sub_81DB190: @ 81DB190
@@ -839,7 +839,7 @@ sub_81DB224: @ 81DB224
bne _081DB248
adds r0, r2, 0
bl sub_81DAA20
- ldr r0, =Phase2Task_Transition_40
+ ldr r0, =Phase2Task_40
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -851,8 +851,8 @@ _081DB248:
.pool
thumb_func_end sub_81DB224
- thumb_func_start Phase2Task_Transition_41
-Phase2Task_Transition_41: @ 81DB258
+ thumb_func_start Phase2Task_41
+Phase2Task_41: @ 81DB258
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -877,7 +877,7 @@ _081DB26A:
pop {r0}
bx r0
.pool
- thumb_func_end Phase2Task_Transition_41
+ thumb_func_end Phase2Task_41
thumb_func_start sub_81DB290
sub_81DB290: @ 81DB290
@@ -970,7 +970,7 @@ sub_81DB328: @ 81DB328
bne _081DB34C
adds r0, r2, 0
bl sub_81DAA20
- ldr r0, =Phase2Task_Transition_41
+ ldr r0, =Phase2Task_41
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
diff --git a/data/battle_transition.s b/data/battle_transition.s
index 901eeb69d..98b022432 100644
--- a/data/battle_transition.s
+++ b/data/battle_transition.s
@@ -4,175 +4,6 @@
.section .rodata
- .align 2
-sPhase2_Transition_Blur_Funcs:: @ 85C8AA8
- .4byte sub_8146144
- .4byte sub_8146178
- .4byte sub_81461D8
-
- .align 2
-sPhase2_Transition_Swirl_Funcs:: @ 85C8AB4
- .4byte sub_814623C
- .4byte sub_81462A8
-
- .align 2
-sPhase2_Transition_Shuffle_Funcs:: @ 85C8ABC
- .4byte sub_81463BC
- .4byte sub_8146420
-
- .align 2
-gUnknown_085C8AC4:: @ 85C8AC4
- .4byte sub_814670C
- .4byte sub_81468E4
- .4byte sub_8146BF8
- .4byte sub_8146C8C
- .4byte sub_8146D20
- .4byte sub_8146D90
- .4byte sub_8146DF8
-
- .align 2
-gUnknown_085C8AE0:: @ 85C8AE0
- .4byte sub_8146760
- .4byte sub_814692C
- .4byte sub_8146BF8
- .4byte sub_8146C8C
- .4byte sub_8146D20
- .4byte sub_8146D90
- .4byte sub_8146DF8
-
- .align 2
-gUnknown_085C8AFC:: @ 85C8AFC
- .4byte sub_8146800
- .4byte sub_8146854
- .4byte sub_8146BF8
- .4byte sub_8146C8C
- .4byte sub_8146D20
- .4byte sub_8146DF8
-
- .align 2
-gUnknown_085C8B14:: @ 85C8B14
- .4byte sub_81467B4
- .4byte sub_8146974
- .4byte sub_8146BF8
- .4byte sub_8146C8C
- .4byte sub_8146D20
- .4byte sub_8146DF8
-
- .align 2
-gUnknown_085C8B2C:: @ 85C8B2C
- .4byte sub_81467B4
- .4byte sub_81469CC
- .4byte sub_8146BF8
- .4byte sub_8146C8C
- .4byte sub_8146D20
- .4byte sub_8146DF8
-
- .align 2
-gUnknown_085C8B44:: @ 85C8B44
- .4byte sub_81467B4
- .4byte sub_8146A24
- .4byte sub_8146BF8
- .4byte sub_8146C8C
- .4byte sub_8146D20
- .4byte sub_8146DF8
-
- .align 2
-gUnknown_085C8B5C:: @ 85C8B5C
- .4byte sub_8146DAC
- .4byte sub_8146DD8
- .4byte sub_8146A7C
- .4byte sub_8146AC8
- .4byte sub_8146B24
- .4byte sub_8146D90
- .4byte sub_8146B7C
- .4byte sub_8146BA8
-
- .align 2
-sPhase2_Transition_PokeballsTrail_Funcs:: @ 85C8B7C
- .4byte sub_8146FCC
- .4byte sub_8147018
- .4byte sub_81470A4
-
- .align 1
-sUnknown_085C8B88:: @ 85C8B88
- .2byte 0xfff0, 0x0100
-
- .align 1
-sUnknown_085C8B8C:: @ 85C8B8C
- .2byte 0x0000, 0x0020, 0x0040, 0x0012, 0x0030
-
- .align 1
-sUnknown_085C8B96:: @ 85C8B96
- .2byte 0x0008, 0xfff8, 0x0000
-
- .align 2
-sPhase2_Transition_Clockwise_BlackFade_Funcs:: @ 85C8B9C
- .4byte sub_814723C
- .4byte sub_81472A4
- .4byte sub_8147334
- .4byte sub_8147428
- .4byte sub_81474B0
- .4byte sub_81475B0
- .4byte sub_8147648
-
- .align 2
-sPhase2_Transition_Ripple_Funcs:: @ 85C8BB8
- .4byte sub_8147750
- .4byte sub_81477A8
-
- .align 2
-sPhase2_Transition_Wave_Funcs:: @ 85C8BC0
- .4byte sub_8147924
- .4byte sub_814797C
- .4byte sub_8147A18
-
- .align 2
-sPhase2_Mugshot_Transition_Funcs:: @ 85C8BCC
- .4byte sub_8147BBC
- .4byte sub_8147C24
- .4byte sub_8147CE4
- .4byte sub_8147DD0
- .4byte sub_8147E4C
- .4byte sub_8147E88
- .4byte sub_8147F40
- .4byte sub_8148008
- .4byte sub_8148040
- .4byte sub_814808C
-
-sMugshotsTrainerPicIDsTable:: @ 85C8BF4
- .byte 0x24, 0x25, 0x26, 0x27, 0x36, 0x00
-
- .align 1
-sMugshotsOpponentRotationScales:: @ 85C8BFA
- .2byte 0x0200, 0x0200, 0x0200, 0x0200, 0x01b0, 0x01b0, 0x01a0, 0x01a0, 0x0188, 0x0188
-
- .align 1
-sMugshotsOpponentCoords:: @ 85C8C0E
- .2byte 0x0000, 0x0000, 0x0000, 0x0000, 0xfffc, 0x0004, 0x0000, 0x0005, 0xfff8, 0x0007, 0x0000
-
- .align 2
-sUnknown_085C8C24:: @ 85C8C24
- .4byte sub_81483A8
- .4byte sub_81483AC
- .4byte sub_81483F8
- .4byte sub_814842C
- .4byte sub_81483A8
- .4byte sub_8148458
- .4byte sub_81483A8
-
- .align 1
-sUnknown_085C8C40:: @ 85C8C40
- .2byte 0x000c, 0xfff4
-
- .align 1
-sUnknown_085C8C44:: @ 85C8C44
- .2byte 0xffff, 0x0001
-
- .align 2
-gUnknown_085C8C48:: @ 85C8C48
- .4byte sub_8148508
- .4byte sub_8148590
- .4byte sub_814865C
.align 2
gUnknown_085C8C54:: @ 85C8C54
@@ -286,20 +117,20 @@ gUnknown_085C8D38:: @ 85C8D38
.4byte gUnknown_085C8D18
.align 2
-gUnknown_085C8D40:: @ 85C8D40
- .4byte sub_8146DAC
- .4byte sub_8146DD8
+sPhase2_Groudon_Funcs:: @ 85C8D40
+ .4byte Phase2_WeatherTrio_Func1
+ .4byte Phase2_WaitPaletteFade
.4byte sub_8149178
.4byte sub_81491C8
.4byte sub_8149224
- .4byte sub_8146D90
- .4byte sub_8146B7C
- .4byte sub_8146BA8
+ .4byte Phase2_FramesCountdown
+ .4byte Phase2_WeatherDuo_Func6
+ .4byte Phase2_WeatherDuo_Func7
.align 2
-gUnknown_085C8D60:: @ 85C8D60
- .4byte sub_8146DAC
- .4byte sub_8146DD8
+sPhase2_Rayquaza_Funcs:: @ 85C8D60
+ .4byte Phase2_WeatherTrio_Func1
+ .4byte Phase2_WaitPaletteFade
.4byte sub_81492B4
.4byte sub_8149358
.4byte sub_8149388
@@ -329,7 +160,7 @@ sUnknown_085C8DB0:: @ 85C8DB0
.4byte sub_8149A40
.align 2
-sPhase2_Transition_Shards_Funcs:: @ 85C8DBC
+sPhase2_Shards_Funcs:: @ 85C8DBC
.4byte sub_8149AA4
.4byte sub_8149B08
.4byte sub_8149B84
@@ -481,10 +312,10 @@ sMugshotsTilemap:: @ 85C94D0
gUnknown_085C99D0:: @ 85C99D0
.4byte sub_814A324
.4byte sub_814A374
- .4byte sub_8146BF8
- .4byte sub_8146C8C
- .4byte sub_8146D20
- .4byte sub_8146DF8
+ .4byte Phase2_BigPokeball_Func3
+ .4byte Phase2_BigPokeball_Func4
+ .4byte Phase2_BigPokeball_Func5
+ .4byte Phase2_BigPokeball_Func6
.align 2
gUnknown_085C99E8:: @ 85C99E8
diff --git a/data/field_effect_scripts.s b/data/field_effect_scripts.s
index 9457094f9..1a877daa9 100644
--- a/data/field_effect_scripts.s
+++ b/data/field_effect_scripts.s
@@ -256,7 +256,7 @@ gFieldEffectScript_Unknown44:: @ 82DBC45
gFieldEffectScript_Unknown45:: @ 82DBC4B
field_eff_loadpal gFieldEffectObjectPaletteInfo10
- field_eff_callnative sub_81470D0
+ field_eff_callnative FldEff_Pokeball
field_eff_end
gFieldEffectScript_HeartIcon:: @ 82DBC56
diff --git a/include/battle_transition.h b/include/battle_transition.h
index 108b6232b..2ad27dc29 100644
--- a/include/battle_transition.h
+++ b/include/battle_transition.h
@@ -7,6 +7,16 @@ void BattleTransition_StartOnField(u8 transitionID);
void BattleTransition_Start(u8 transitionID);
bool8 IsBattleTransitionDone(void);
+enum // TRANSITION_MUGSHOT
+{
+ MUGSHOT_SYDNEY,
+ MUGSHOT_PHOEBE,
+ MUGSHOT_GLACIA,
+ MUGSHOT_DRAKE,
+ MUGSHOT_CHAMPION,
+ MUGSHOTS_COUNT
+};
+
// credits for the names go to Dyskinesia and Tetrable
// names are naturally subject to change
diff --git a/include/field_effect.h b/include/field_effect.h
index 772b20d37..2d1d3b3b0 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -75,5 +75,6 @@ u32 FieldEffectStart(u8);
bool8 FieldEffectActiveListContains(u8 id);
void sub_80B69DC(void);
void FieldEffectStop(struct Sprite *sprite, u8 id);
+u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer);
#endif //GUARD_FIELD_EFFECTS_H
diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h
index f86f2434c..6dbe5e8ed 100644
--- a/include/gba/io_reg.h
+++ b/include/gba/io_reg.h
@@ -137,8 +137,6 @@
#define REG_OFFSET_DMA3CNT_H 0xde
#define REG_OFFSET_TMCNT 0x100
-#define REG_OFFSET_TMCNT_L 0x100
-#define REG_OFFSET_TMCNT_H 0x102
#define REG_OFFSET_TM0CNT 0x100
#define REG_OFFSET_TM0CNT_L 0x100
#define REG_OFFSET_TM0CNT_H 0x102
@@ -300,8 +298,6 @@
#define REG_ADDR_DMA3CNT_H (REG_BASE + REG_OFFSET_DMA3CNT_H)
#define REG_ADDR_TMCNT (REG_BASE + REG_OFFSET_TMCNT)
-#define REG_ADDR_TMCNT_L (REG_BASE + REG_OFFSET_TMCNT_L)
-#define REG_ADDR_TMCNT_H (REG_BASE + REG_OFFSET_TMCNT_H)
#define REG_ADDR_TM0CNT (REG_BASE + REG_OFFSET_TM0CNT)
#define REG_ADDR_TM0CNT_L (REG_BASE + REG_OFFSET_TM0CNT_L)
#define REG_ADDR_TM0CNT_H (REG_BASE + REG_OFFSET_TM0CNT_H)
@@ -462,8 +458,6 @@
#define REG_DMA3CNT_H (*(vu16 *)REG_ADDR_DMA3CNT_H)
#define REG_TMCNT(n) (*(vu16 *)(REG_ADDR_TMCNT + ((n) * 4)))
-#define REG_TMCNT_L(n) (*(vu16 *)(REG_ADDR_TMCNT_L + ((n) * 4)))
-#define REG_TMCNT_H(n) (*(vu16 *)(REG_ADDR_TMCNT_H + ((n) * 4)))
#define REG_TM0CNT (*(vu32 *)REG_ADDR_TM0CNT)
#define REG_TM0CNT_L (*(vu16 *)REG_ADDR_TM0CNT_L)
#define REG_TM0CNT_H (*(vu16 *)REG_ADDR_TM0CNT_H)
@@ -501,12 +495,12 @@
// I/O register fields
// DISPCNT
-#define DISPCNT_MODE_0 0x0000
-#define DISPCNT_MODE_1 0x0001
-#define DISPCNT_MODE_2 0x0002
-#define DISPCNT_MODE_3 0x0003
-#define DISPCNT_MODE_4 0x0004
-#define DISPCNT_MODE_5 0x0005
+#define DISPCNT_MODE_0 0x0000 // BG0: text, BG1: text, BG2: text, BG3: text
+#define DISPCNT_MODE_1 0x0001 // BG0: text, BG1: text, BG2: affine, BG3: off
+#define DISPCNT_MODE_2 0x0002 // BG0: off, BG1: off, BG2: affine, BG3: affine
+#define DISPCNT_MODE_3 0x0003 // Bitmap mode, 240x160, BGR555 color
+#define DISPCNT_MODE_4 0x0004 // Bitmap mode, 240x160, 256 color palette
+#define DISPCNT_MODE_5 0x0005 // Bitmap mode, 160x128, BGR555 color
#define DISPCNT_OBJ_1D_MAP 0x0040
#define DISPCNT_FORCED_BLANK 0x0080
#define DISPCNT_BG0_ON 0x0100
@@ -527,7 +521,46 @@
#define DISPSTAT_HBLANK_INTR 0x0010 // H-Blank interrupt enabled
#define DISPSTAT_VCOUNT_INTR 0x0020 // V-Count interrupt enabled
+// BGCNT
+#define BGCNT_PRIORITY(n) (n) // Values 0 - 3. Lower priority BGs will be drawn on top of higher priority BGs.
+#define BGCNT_CHARBASE(n) ((n) << 2) // Values 0 - 3. Base block for tile pixel data.
+#define BGCNT_MOSAIC 0x0040
+#define BGCNT_16COLOR 0x0000 // 4 bits per pixel
+#define BGCNT_256COLOR 0x0080 // 8 bits per pixel
+#define BGCNT_SCREENBASE(n) ((n) << 8) // Values 0 - 31. Base block for tile map.
+#define BGCNT_WRAP 0x2000 // Only affects affine BGs. Text BGs wrap by default.
+#define BGCNT_TXT256x256 0x0000 // Internal screen size size of text mode BG in pixels.
+#define BGCNT_TXT512x256 0x4000
+#define BGCNT_TXT256x512 0x8000
+#define BGCNT_TXT512x512 0xC000
+#define BGCNT_AFF128x128 0x0000 // Internal screen size size of affine mode BG in pixels.
+#define BGCNT_AFF256x256 0x4000
+#define BGCNT_AFF512x512 0x8000
+#define BGCNT_AFF1024x1024 0xC000
+
// BLDCNT
+// Bits 0-5 select layers for the 1st target
+#define BLDCNT_TGT1_BG0 (1 << 0)
+#define BLDCNT_TGT1_BG1 (1 << 1)
+#define BLDCNT_TGT1_BG2 (1 << 2)
+#define BLDCNT_TGT1_BG3 (1 << 3)
+#define BLDCNT_TGT1_OBJ (1 << 4)
+#define BLDCNT_TGT1_BD (1 << 5)
+// Bits 6-7 select the special effect
+#define BLDCNT_EFFECT_NONE (0 << 6) // no special effect
+#define BLDCNT_EFFECT_BLEND (1 << 6) // 1st+2nd targets mixed (controlled by BLDALPHA)
+#define BLDCNT_EFFECT_LIGHTEN (2 << 6) // 1st target becomes whiter (controlled by BLDY)
+#define BLDCNT_EFFECT_DARKEN (3 << 6) // 1st target becomes blacker (controlled by BLDY)
+// Bits 8-13 select layers for the 2nd target
+#define BLDCNT_TGT2_BG0 (1 << 8)
+#define BLDCNT_TGT2_BG1 (1 << 9)
+#define BLDCNT_TGT2_BG2 (1 << 10)
+#define BLDCNT_TGT2_BG3 (1 << 11)
+#define BLDCNT_TGT2_OBJ (1 << 12)
+#define BLDCNT_TGT2_BD (1 << 13)
+
+// BLDALPHA
+#define BLDALPHA_BLEND(target1, target2) (((target2) << 8) | (target1))
// SOUNDCNT_H
#define SOUND_CGB_MIX_QUARTER 0x0000
@@ -627,8 +660,8 @@
#define KEY_INTR_ENABLE 0x0400
#define KEY_OR_INTR 0x0000
#define KEY_AND_INTR 0x8000
-
-#define DPAD_ANY ((DPAD_RIGHT | DPAD_LEFT | DPAD_UP | DPAD_DOWN))
+#define DPAD_ANY 0x00F0
+#define JOY_EXCL_DPAD 0x030F
// interrupt flags
#define INTR_FLAG_VBLANK (1 << 0)
diff --git a/include/unk_transition.h b/include/unk_transition.h
index ef7b33ed7..a9caac419 100644
--- a/include/unk_transition.h
+++ b/include/unk_transition.h
@@ -1,13 +1,13 @@
#ifndef GUARD_UNK_TRANSITION_H
#define GUARD_UNK_TRANSITION_H
-void Phase2Task_Transition_34(u8 taskId);
-void Phase2Task_Transition_35(u8 taskId);
-void Phase2Task_Transition_36(u8 taskId);
-void Phase2Task_Transition_37(u8 taskId);
-void Phase2Task_Transition_38(u8 taskId);
-void Phase2Task_Transition_39(u8 taskId);
-void Phase2Task_Transition_40(u8 taskId);
-void Phase2Task_Transition_41(u8 taskId);
+void Phase2Task_34(u8 taskId);
+void Phase2Task_35(u8 taskId);
+void Phase2Task_36(u8 taskId);
+void Phase2Task_37(u8 taskId);
+void Phase2Task_38(u8 taskId);
+void Phase2Task_39(u8 taskId);
+void Phase2Task_40(u8 taskId);
+void Phase2Task_41(u8 taskId);
#endif // GUARD_UNK_TRANSITION_H
diff --git a/src/battle_transition.c b/src/battle_transition.c
index 386b0dd79..e60a2d91f 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -15,6 +15,8 @@
#include "field_camera.h"
#include "unknown_task.h"
#include "malloc.h"
+#include "gpu_regs.h"
+#include "decompress.h"
struct TransitionData
{
@@ -39,54 +41,169 @@ struct TransitionData
s16 data[11];
};
-typedef bool8 (*TransitionState)(struct Task *task);
+typedef bool8 (*TransitionStateFunc)(struct Task *task);
typedef bool8 (*TransitionSpriteCallback)(struct Sprite *sprite);
+extern u16 gUnknown_020393A8[];
+extern u16 gUnknown_02038C28[][0x3C0];
+
extern void c2_exit_to_overworld_2_switch(void);
extern void sub_80AC3D0(void);
+extern void dp12_8087EA4(void);
// this file's functions
void LaunchBattleTransitionTask(u8 transitionId);
void Task_BattleTransitionMain(u8 taskId);
void Phase1Task_TransitionAll(u8 taskId);
-void Phase2Task_Transition_Blur(u8 taskId);
-void Phase2Task_Transition_Swirl(u8 taskId);
-void Phase2Task_Transition_Shuffle(u8 taskId);
-void Phase2Task_Transition_BigPokeball(u8 taskId);
-void Phase2Task_Transition_PokeballsTrail(u8 taskId);
-void Phase2Task_Transition_Clockwise_BlackFade(u8 taskId);
-void Phase2Task_Transition_Ripple(u8 taskId);
-void Phase2Task_Transition_Wave(u8 taskId);
-void Phase2Task_Transition_Slice(u8 taskId);
-void Phase2Task_Transition_WhiteFade(u8 taskId);
-void Phase2Task_Transition_GridSquares(u8 taskId);
-void Phase2Task_Transition_Shards(u8 taskId);
-void Phase2Task_Transition_Sydney(u8 taskId);
-void Phase2Task_Transition_Phoebe(u8 taskId);
-void Phase2Task_Transition_Glacia(u8 taskId);
-void Phase2Task_Transition_Drake(u8 taskId);
-void Phase2Task_Transition_Wallace(u8 taskId);
-void Phase2Task_Transition_Aqua(u8 taskId);
-void Phase2Task_Transition_Magma(u8 taskId);
-void Phase2Task_Transition_Regice(u8 taskId);
-void Phase2Task_Transition_Registeel(u8 taskId);
-void Phase2Task_Transition_Regirock(u8 taskId);
-void Phase2Task_Transition_Kyogre(u8 taskId);
-void Phase2Task_Transition_Groudon(u8 taskId);
-void Phase2Task_Transition_Rayquaza(u8 taskId);
-void Phase2Task_Transition_25(u8 taskId);
-void Phase2Task_Transition_26(u8 taskId);
-void Phase2Task_Transition_27(u8 taskId);
-void Phase2Task_Transition_28(u8 taskId);
-void Phase2Task_Transition_29(u8 taskId);
-void Phase2Task_Transition_30(u8 taskId);
-void Phase2Task_Transition_31(u8 taskId);
-void Phase2Task_Transition_32(u8 taskId);
-void Phase2Task_Transition_33(u8 taskId);
+void Phase2Task_Blur(u8 taskId);
+void Phase2Task_Swirl(u8 taskId);
+void Phase2Task_Shuffle(u8 taskId);
+void Phase2Task_BigPokeball(u8 taskId);
+void Phase2Task_PokeballsTrail(u8 taskId);
+void Phase2Task_Clockwise_BlackFade(u8 taskId);
+void Phase2Task_Ripple(u8 taskId);
+void Phase2Task_Wave(u8 taskId);
+void Phase2Task_Slice(u8 taskId);
+void Phase2Task_WhiteFade(u8 taskId);
+void Phase2Task_GridSquares(u8 taskId);
+void Phase2Task_Shards(u8 taskId);
+void Phase2Task_Sydney(u8 taskId);
+void Phase2Task_Phoebe(u8 taskId);
+void Phase2Task_Glacia(u8 taskId);
+void Phase2Task_Drake(u8 taskId);
+void Phase2Task_Champion(u8 taskId);
+void Phase2Task_Aqua(u8 taskId);
+void Phase2Task_Magma(u8 taskId);
+void Phase2Task_Regice(u8 taskId);
+void Phase2Task_Registeel(u8 taskId);
+void Phase2Task_Regirock(u8 taskId);
+void Phase2Task_Kyogre(u8 taskId);
+void Phase2Task_Groudon(u8 taskId);
+void Phase2Task_Rayquaza(u8 taskId);
+void Phase2Task_25(u8 taskId);
+void Phase2Task_26(u8 taskId);
+void Phase2Task_27(u8 taskId);
+void Phase2Task_28(u8 taskId);
+void Phase2Task_29(u8 taskId);
+void Phase2Task_30(u8 taskId);
+void Phase2Task_31(u8 taskId);
+void Phase2Task_32(u8 taskId);
+void Phase2Task_33(u8 taskId);
+void VBlankCB_BattleTransition(void);
+void VBlankCB_Phase2_Swirl(void);
+void HBlankCB_Phase2_Swirl(void);
+void VBlankCB_Phase2_Shuffle(void);
+void HBlankCB_Phase2_Shuffle(void);
+void VBlankCB0_Phase2_BigPokeball(void);
+void VBlankCB1_Phase2_BigPokeball(void);
+void VBlankCB_Phase2_Clockwise_BlackFade(void);
+void VBlankCB_Phase2_Ripple(void);
+void HBlankCB_Phase2_Ripple(void);
+void VBlankCB_Phase2_Wave(void);
+void VBlankCB_Phase2_Slice(void);
+void HBlankCB_Phase2_Slice(void);
+void VBlankCB0_Phase2_WhiteFade(void);
+void VBlankCB1_Phase2_WhiteFade(void);
+void HBlankCB_Phase2_WhiteFade(void);
+void VBlankCB_Phase2_Shards(void);
+bool8 Phase2_Blur_Func1(struct Task *task);
+bool8 Phase2_Blur_Func2(struct Task *task);
+bool8 Phase2_Blur_Func3(struct Task *task);
+bool8 Phase2_Swirl_Func1(struct Task *task);
+bool8 Phase2_Swirl_Func2(struct Task *task);
+bool8 Phase2_Shuffle_Func1(struct Task *task);
+bool8 Phase2_Shuffle_Func2(struct Task *task);
+bool8 Phase2_Aqua_Func1(struct Task *task);
+bool8 Phase2_Aqua_Func2(struct Task *task);
+bool8 Phase2_Magma_Func1(struct Task *task);
+bool8 Phase2_Magma_Func2(struct Task *task);
+bool8 Phase2_FramesCountdown(struct Task *task);
+bool8 Phase2_Regi_Func1(struct Task *task);
+bool8 Phase2_Regice_Func2(struct Task *task);
+bool8 Phase2_Registeel_Func2(struct Task *task);
+bool8 Phase2_Regirock_Func2(struct Task *task);
+bool8 Phase2_WeatherTrio_Func1(struct Task *task);
+bool8 Phase2_WaitPaletteFade(struct Task *task);
+bool8 Phase2_Kyogre_Func3(struct Task *task);
+bool8 Phase2_Kyogre_Func4(struct Task *task);
+bool8 Phase2_Kyogre_Func5(struct Task *task);
+bool8 Phase2_WeatherDuo_Func6(struct Task *task);
+bool8 Phase2_WeatherDuo_Func7(struct Task *task);
+bool8 Phase2_BigPokeball_Func1(struct Task *task);
+bool8 Phase2_BigPokeball_Func2(struct Task *task);
+bool8 Phase2_BigPokeball_Func3(struct Task *task);
+bool8 Phase2_BigPokeball_Func4(struct Task *task);
+bool8 Phase2_BigPokeball_Func5(struct Task *task);
+bool8 Phase2_BigPokeball_Func6(struct Task *task);
+bool8 Phase2_PokeballsTrail_Func1(struct Task *task);
+bool8 Phase2_PokeballsTrail_Func2(struct Task *task);
+bool8 Phase2_PokeballsTrail_Func3(struct Task *task);
+bool8 Phase2_Clockwise_BlackFade_Func1(struct Task *task);
+bool8 Phase2_Clockwise_BlackFade_Func2(struct Task *task);
+bool8 Phase2_Clockwise_BlackFade_Func3(struct Task *task);
+bool8 Phase2_Clockwise_BlackFade_Func4(struct Task *task);
+bool8 Phase2_Clockwise_BlackFade_Func5(struct Task *task);
+bool8 Phase2_Clockwise_BlackFade_Func6(struct Task *task);
+bool8 Phase2_Clockwise_BlackFade_Func7(struct Task *task);
+bool8 Phase2_Ripple_Func1(struct Task *task);
+bool8 Phase2_Ripple_Func2(struct Task *task);
+bool8 Phase2_Wave_Func1(struct Task *task);
+bool8 Phase2_Wave_Func2(struct Task *task);
+bool8 Phase2_Wave_Func3(struct Task *task);
+bool8 Phase2_Slice_Func1(struct Task *task);
+bool8 Phase2_Slice_Func2(struct Task *task);
+bool8 Phase2_Slice_Func3(struct Task *task);
+bool8 Phase2_WhiteFade_Func1(struct Task *task);
+bool8 Phase2_WhiteFade_Func2(struct Task *task);
+bool8 Phase2_WhiteFade_Func3(struct Task *task);
+bool8 Phase2_WhiteFade_Func4(struct Task *task);
+bool8 Phase2_WhiteFade_Func5(struct Task *task);
+bool8 Phase2_GridSquares_Func1(struct Task *task);
+bool8 Phase2_GridSquares_Func2(struct Task *task);
+bool8 Phase2_GridSquares_Func3(struct Task *task);
+bool8 Phase2_Shards_Func1(struct Task *task);
+bool8 Phase2_Shards_Func2(struct Task *task);
+bool8 Phase2_Shards_Func3(struct Task *task);
+bool8 Phase2_Shards_Func4(struct Task *task);
+bool8 Phase2_Shards_Func5(struct Task *task);
+bool8 Phase2_Mugshot_Func1(struct Task *task);
+bool8 Phase2_Mugshot_Func2(struct Task *task);
+bool8 Phase2_Mugshot_Func3(struct Task *task);
+bool8 Phase2_Mugshot_Func4(struct Task *task);
+bool8 Phase2_Mugshot_Func5(struct Task *task);
+bool8 Phase2_Mugshot_Func6(struct Task *task);
+bool8 Phase2_Mugshot_Func7(struct Task *task);
+bool8 Phase2_Mugshot_Func8(struct Task *task);
+bool8 Phase2_Mugshot_Func9(struct Task *task);
+bool8 Phase2_Mugshot_Func10(struct Task *task);
+void Phase2Task_MugShotTransition(u8 taskId);
+void Mugshots_CreateOpponentPlayerSprites(struct Task *task);
+void VBlankCB0_Phase2_Mugshots(void);
+void VBlankCB1_Phase2_Mugshots(void);
+void HBlankCB_Phase2_Mugshots(void);
bool8 Transition_Phase1(struct Task *task);
bool8 Transition_WaitForPhase1(struct Task *task);
bool8 Transition_Phase2(struct Task *task);
bool8 Transition_WaitForPhase2(struct Task *task);
+void sub_8149F08(void);
+void sub_8149F84(void);
+void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4);
+void sub_814A014(u16 *a0, s16 a1, s16 a2, s16 a3);
+void sub_8149F98(s16 *array, s16 sinAdd, s16 index, s16 indexIncrementer, s16 amplitude, s16 arrSize);
+void sub_8149F58(u16 **a0, u16 **a1);
+void sub_814A1AC(s16 *a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6);
+bool8 sub_814A228(s16 *a0, bool8 a1, bool8 a2);
+void sub_8148484(s16 spriteId, s16 value);
+void sub_814849C(s16 spriteId);
+s16 sub_81484B8(s16 spriteId);
+bool8 IsPhase1Done(void);
+void sub_814713C(struct Sprite *sprite);
+void sub_8148380(struct Sprite *sprite);
+bool8 sub_81483A8(struct Sprite *sprite);
+bool8 sub_81483AC(struct Sprite *sprite);
+bool8 sub_81483F8(struct Sprite *sprite);
+bool8 sub_814842C(struct Sprite *sprite);
+bool8 sub_8148458(struct Sprite *sprite);
// iwram bss vars
IWRAM_DATA u16 gUnknown_03001208;
@@ -116,16 +233,16 @@ const u32 gUnknown_085BC2F4[] = INCBIN_U32("graphics/battle_transitions/85BC2F4.
const u32 gUnknown_085BC314[] = INCBIN_U32("graphics/battle_transitions/85BC314.bin");
const u32 gUnknown_085BCB14[] = INCBIN_U32("graphics/battle_transitions/85BCB14.bin");
const u32 gUnknown_085BD314[] = INCBIN_U32("graphics/battle_transitions/85BD314.bin");
-const u32 gUnknown_085BDB14[] = INCBIN_U32("graphics/battle_transitions/85BDB14.gbapal");
+const u16 gUnknown_085BDB14[] = INCBIN_U16("graphics/battle_transitions/85BDB14.gbapal");
const u32 gUnknown_085BDB34[] = INCBIN_U32("graphics/battle_transitions/kyogre.4bpp.lz");
const u32 gUnknown_085BE1E8[] = INCBIN_U32("graphics/battle_transitions/kyogre.bin.lz");
const u32 gUnknown_085BE51C[] = INCBIN_U32("graphics/battle_transitions/groudon.4bpp.lz");
const u32 gUnknown_085BEA88[] = INCBIN_U32("graphics/battle_transitions/groudon.bin.lz");
-const u32 gUnknown_085BEDA0[] = INCBIN_U32("graphics/battle_transitions/kyogre_pt1.gbapal");
-const u32 gUnknown_085BEEE0[] = INCBIN_U32("graphics/battle_transitions/kyogre_pt2.gbapal");
-const u32 gUnknown_085BF0A0[] = INCBIN_U32("graphics/battle_transitions/groudon_pt1.gbapal");
-const u32 gUnknown_085BF2A0[] = INCBIN_U32("graphics/battle_transitions/groudon_pt2.gbapal");
-const u32 gUnknown_085BF4A0[] = INCBIN_U32("graphics/battle_transitions/rayquaza.gbapal");
+const u16 gUnknown_085BEDA0[] = INCBIN_U16("graphics/battle_transitions/kyogre_pt1.gbapal");
+const u16 gUnknown_085BEEE0[] = INCBIN_U16("graphics/battle_transitions/kyogre_pt2.gbapal");
+const u16 gUnknown_085BF0A0[] = INCBIN_U16("graphics/battle_transitions/groudon_pt1.gbapal");
+const u16 gUnknown_085BF2A0[] = INCBIN_U16("graphics/battle_transitions/groudon_pt2.gbapal");
+const u16 gUnknown_085BF4A0[] = INCBIN_U16("graphics/battle_transitions/rayquaza.gbapal");
const u32 gUnknown_085BF6A0[] = INCBIN_U32("graphics/battle_transitions/rayquaza.4bpp");
const u32 gUnknown_085C6BE0[] = INCBIN_U32("graphics/battle_transitions/rayquaza.bin");
const u32 gUnknown_085C7BE0[] = INCBIN_U32("graphics/battle_transitions/frontier_brain.gbapal");
@@ -145,51 +262,51 @@ const TaskFunc sPhase1_Tasks[B_TRANSITION_COUNT] =
const TaskFunc sPhase2_Tasks[B_TRANSITION_COUNT] =
{
- Phase2Task_Transition_Blur, // 0
- Phase2Task_Transition_Swirl, // 1
- Phase2Task_Transition_Shuffle, // 2
- Phase2Task_Transition_BigPokeball, // 3
- Phase2Task_Transition_PokeballsTrail, // 4
- Phase2Task_Transition_Clockwise_BlackFade, // 5
- Phase2Task_Transition_Ripple, // 6
- Phase2Task_Transition_Wave, // 7
- Phase2Task_Transition_Slice, // 8
- Phase2Task_Transition_WhiteFade, // 9
- Phase2Task_Transition_GridSquares, // 10
- Phase2Task_Transition_Shards, // 11
- Phase2Task_Transition_Sydney, // 12
- Phase2Task_Transition_Phoebe, // 13
- Phase2Task_Transition_Glacia, // 14
- Phase2Task_Transition_Drake, // 15
- Phase2Task_Transition_Wallace, // 16
- Phase2Task_Transition_Aqua, // 17
- Phase2Task_Transition_Magma, // 18
- Phase2Task_Transition_Regice, // 19
- Phase2Task_Transition_Registeel, // 20
- Phase2Task_Transition_Regirock, // 21
- Phase2Task_Transition_Kyogre, // 22
- Phase2Task_Transition_Groudon, // 23
- Phase2Task_Transition_Rayquaza, // 24
- Phase2Task_Transition_25, // 25
- Phase2Task_Transition_26, // 26
- Phase2Task_Transition_27, // 27
- Phase2Task_Transition_28, // 28
- Phase2Task_Transition_29, // 29
- Phase2Task_Transition_30, // 30
- Phase2Task_Transition_31, // 31
- Phase2Task_Transition_32, // 32
- Phase2Task_Transition_33, // 33
- Phase2Task_Transition_34, // 34
- Phase2Task_Transition_35, // 35
- Phase2Task_Transition_36, // 36
- Phase2Task_Transition_37, // 37
- Phase2Task_Transition_38, // 38
- Phase2Task_Transition_39, // 39
- Phase2Task_Transition_40, // 40
- Phase2Task_Transition_41, // 41
+ Phase2Task_Blur, // 0
+ Phase2Task_Swirl, // 1
+ Phase2Task_Shuffle, // 2
+ Phase2Task_BigPokeball, // 3
+ Phase2Task_PokeballsTrail, // 4
+ Phase2Task_Clockwise_BlackFade, // 5
+ Phase2Task_Ripple, // 6
+ Phase2Task_Wave, // 7
+ Phase2Task_Slice, // 8
+ Phase2Task_WhiteFade, // 9
+ Phase2Task_GridSquares, // 10
+ Phase2Task_Shards, // 11
+ Phase2Task_Sydney, // 12
+ Phase2Task_Phoebe, // 13
+ Phase2Task_Glacia, // 14
+ Phase2Task_Drake, // 15
+ Phase2Task_Champion, // 16
+ Phase2Task_Aqua, // 17
+ Phase2Task_Magma, // 18
+ Phase2Task_Regice, // 19
+ Phase2Task_Registeel, // 20
+ Phase2Task_Regirock, // 21
+ Phase2Task_Kyogre, // 22
+ Phase2Task_Groudon, // 23
+ Phase2Task_Rayquaza, // 24
+ Phase2Task_25, // 25
+ Phase2Task_26, // 26
+ Phase2Task_27, // 27
+ Phase2Task_28, // 28
+ Phase2Task_29, // 29
+ Phase2Task_30, // 30
+ Phase2Task_31, // 31
+ Phase2Task_32, // 32
+ Phase2Task_33, // 33
+ Phase2Task_34, // 34
+ Phase2Task_35, // 35
+ Phase2Task_36, // 36
+ Phase2Task_37, // 37
+ Phase2Task_38, // 38
+ Phase2Task_39, // 39
+ Phase2Task_40, // 40
+ Phase2Task_41, // 41
};
-const TransitionState sMainTransitionPhases[] =
+const TransitionStateFunc sMainTransitionPhases[] =
{
&Transition_Phase1,
&Transition_WaitForPhase1,
@@ -197,6 +314,201 @@ const TransitionState sMainTransitionPhases[] =
&Transition_WaitForPhase2
};
+const TransitionStateFunc sPhase2_Blur_Funcs[] =
+{
+ Phase2_Blur_Func1,
+ Phase2_Blur_Func2,
+ Phase2_Blur_Func3
+};
+
+const TransitionStateFunc sPhase2_Swirl_Funcs[] =
+{
+ Phase2_Swirl_Func1,
+ Phase2_Swirl_Func2,
+};
+
+const TransitionStateFunc sPhase2_Shuffle_Funcs[] =
+{
+ Phase2_Shuffle_Func1,
+ Phase2_Shuffle_Func2,
+};
+
+const TransitionStateFunc sPhase2_Aqua_Funcs[] =
+{
+ Phase2_Aqua_Func1,
+ Phase2_Aqua_Func2,
+ Phase2_BigPokeball_Func3,
+ Phase2_BigPokeball_Func4,
+ Phase2_BigPokeball_Func5,
+ Phase2_FramesCountdown,
+ Phase2_BigPokeball_Func6
+};
+
+const TransitionStateFunc sPhase2_Magma_Funcs[] =
+{
+ Phase2_Magma_Func1,
+ Phase2_Magma_Func2,
+ Phase2_BigPokeball_Func3,
+ Phase2_BigPokeball_Func4,
+ Phase2_BigPokeball_Func5,
+ Phase2_FramesCountdown,
+ Phase2_BigPokeball_Func6
+};
+
+const TransitionStateFunc sPhase2_BigPokeball_Funcs[] =
+{
+ Phase2_BigPokeball_Func1,
+ Phase2_BigPokeball_Func2,
+ Phase2_BigPokeball_Func3,
+ Phase2_BigPokeball_Func4,
+ Phase2_BigPokeball_Func5,
+ Phase2_BigPokeball_Func6
+};
+
+const TransitionStateFunc sPhase2_Regice_Funcs[] =
+{
+ Phase2_Regi_Func1,
+ Phase2_Regice_Func2,
+ Phase2_BigPokeball_Func3,
+ Phase2_BigPokeball_Func4,
+ Phase2_BigPokeball_Func5,
+ Phase2_BigPokeball_Func6
+};
+
+const TransitionStateFunc sPhase2_Registeel_Funcs[] =
+{
+ Phase2_Regi_Func1,
+ Phase2_Registeel_Func2,
+ Phase2_BigPokeball_Func3,
+ Phase2_BigPokeball_Func4,
+ Phase2_BigPokeball_Func5,
+ Phase2_BigPokeball_Func6
+};
+
+const TransitionStateFunc sPhase2_Regirock_Funcs[] =
+{
+ Phase2_Regi_Func1,
+ Phase2_Regirock_Func2,
+ Phase2_BigPokeball_Func3,
+ Phase2_BigPokeball_Func4,
+ Phase2_BigPokeball_Func5,
+ Phase2_BigPokeball_Func6
+};
+
+const TransitionStateFunc sPhase2_Kyogre_Funcs[] =
+{
+ Phase2_WeatherTrio_Func1,
+ Phase2_WaitPaletteFade,
+ Phase2_Kyogre_Func3,
+ Phase2_Kyogre_Func4,
+ Phase2_Kyogre_Func5,
+ Phase2_FramesCountdown,
+ Phase2_WeatherDuo_Func6,
+ Phase2_WeatherDuo_Func7
+};
+
+const TransitionStateFunc sPhase2_PokeballsTrail_Funcs[] =
+{
+ Phase2_PokeballsTrail_Func1,
+ Phase2_PokeballsTrail_Func2,
+ Phase2_PokeballsTrail_Func3
+};
+
+const s16 sUnknown_085C8B88[2] = {-16, 256};
+const s16 sUnknown_085C8B8C[5] = {0, 32, 64, 18, 48};
+const s16 sUnknown_085C8B96[2] = {8, -8};
+
+const TransitionStateFunc sPhase2_Clockwise_BlackFade_Funcs[] =
+{
+ Phase2_Clockwise_BlackFade_Func1,
+ Phase2_Clockwise_BlackFade_Func2,
+ Phase2_Clockwise_BlackFade_Func3,
+ Phase2_Clockwise_BlackFade_Func4,
+ Phase2_Clockwise_BlackFade_Func5,
+ Phase2_Clockwise_BlackFade_Func6,
+ Phase2_Clockwise_BlackFade_Func7
+};
+
+const TransitionStateFunc sPhase2_Ripple_Funcs[] =
+{
+ Phase2_Ripple_Func1,
+ Phase2_Ripple_Func2
+};
+
+const TransitionStateFunc sPhase2_Wave_Funcs[] =
+{
+ Phase2_Wave_Func1,
+ Phase2_Wave_Func2,
+ Phase2_Wave_Func3
+};
+
+const TransitionStateFunc sPhase2_Mugshot_Funcs[] =
+{
+ Phase2_Mugshot_Func1,
+ Phase2_Mugshot_Func2,
+ Phase2_Mugshot_Func3,
+ Phase2_Mugshot_Func4,
+ Phase2_Mugshot_Func5,
+ Phase2_Mugshot_Func6,
+ Phase2_Mugshot_Func7,
+ Phase2_Mugshot_Func8,
+ Phase2_Mugshot_Func9,
+ Phase2_Mugshot_Func10
+};
+
+const u8 sMugshotsTrainerPicIDsTable[MUGSHOTS_COUNT] =
+{
+ TRAINER_PIC_ELITE_FOUR_SIDNEY,
+ TRAINER_PIC_ELITE_FOUR_PHOEBE,
+ TRAINER_PIC_ELITE_FOUR_GLACIA,
+ TRAINER_PIC_ELITE_FOUR_DRAKE,
+ TRAINER_PIC_CHAMPION_WALLACE
+};
+const s16 sMugshotsOpponentRotationScales[MUGSHOTS_COUNT][2] =
+{
+ {0x200, 0x200},
+ {0x200, 0x200},
+ {0x1B0, 0x1B0},
+ {0x1A0, 0x1A0},
+ {0x188, 0x188},
+};
+const s16 sMugshotsOpponentCoords[MUGSHOTS_COUNT][2] =
+{
+ {0, 0},
+ {0, 0},
+ {-4, 4},
+ {0, 5},
+ {-8, 7},
+};
+
+const TransitionSpriteCallback sUnknown_085C8C24[] =
+{
+ sub_81483A8,
+ sub_81483AC,
+ sub_81483F8,
+ sub_814842C,
+ sub_81483A8,
+ sub_8148458,
+ sub_81483A8
+};
+
+const s16 sUnknown_085C8C40[2] = {12, -12};
+const s16 sUnknown_085C8C44[2] = {-1, 1};
+
+const TransitionStateFunc sPhase2_Slice_Funcs[] =
+{
+ Phase2_Slice_Func1,
+ Phase2_Slice_Func2,
+ Phase2_Slice_Func3
+};
+
+extern const u16 gFieldEffectObjectPalette10[];
+extern const u16 sBigPokeball_Tilemap[];
+extern const u16 sMugshotsTilemap[];
+extern const struct SpriteTemplate gUnknown_085C8E68;
+extern const u16 *const sOpponentMugshotsPals[MUGSHOTS_COUNT];
+extern const u16 *const sPlayerMugshotsPals[2];
+
// code
static void CB2_TestBattleTransition(void)
{
@@ -238,6 +550,7 @@ void BattleTransition_Start(u8 transitionId)
LaunchBattleTransitionTask(transitionId);
}
+// main task that launches sub-tasks for phase1 and phase2
#define tState data[0]
#define tTransitionID data[1]
#define tTransitionDone data[15]
@@ -285,3 +598,1594 @@ bool8 Transition_Phase1(struct Task *task)
return TRUE;
}
}
+
+bool8 Transition_WaitForPhase1(struct Task *task)
+{
+ if (FindTaskIdByFunc(sPhase1_Tasks[task->tTransitionID]) == 0xFF)
+ {
+ task->tState++;
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+bool8 Transition_Phase2(struct Task *task)
+{
+ CreateTask(sPhase2_Tasks[task->tTransitionID], 0);
+ task->tState++;
+ return FALSE;
+}
+
+bool8 Transition_WaitForPhase2(struct Task *task)
+{
+ task->tTransitionDone = FALSE;
+ if (FindTaskIdByFunc(sPhase2_Tasks[task->tTransitionID]) == 0xFF)
+ task->tTransitionDone = TRUE;
+ return FALSE;
+}
+
+#undef tState
+#undef tTransitionID
+#undef tTransitionDone
+
+// sub-task for phase1
+#define tState data[0]
+
+void Phase1Task_TransitionAll(u8 taskId)
+{
+ if (gTasks[taskId].tState == 0)
+ {
+ gTasks[taskId].tState++;
+ CreatePhase1Task(0, 0, 3, 2, 2); // creates a sub-task for this sub-task
+ }
+ else if (IsPhase1Done())
+ {
+ DestroyTask(taskId);
+ }
+}
+
+#undef tState
+
+// sub-task for phase2
+#define tState data[0]
+#define tFrames data[8]
+#define tOpponentSpriteId data[13]
+#define tPlayerSpriteId data[14]
+#define tMugshotId data[15]
+
+void Phase2Task_Blur(u8 taskId)
+{
+ while (sPhase2_Blur_Funcs[gTasks[taskId].tState](&gTasks[taskId]));
+}
+
+bool8 Phase2_Blur_Func1(struct Task *task)
+{
+ SetGpuReg(REG_OFFSET_MOSAIC, 0);
+ SetGpuRegBits(REG_OFFSET_BG1CNT, BGCNT_MOSAIC);
+ SetGpuRegBits(REG_OFFSET_BG2CNT, BGCNT_MOSAIC);
+ SetGpuRegBits(REG_OFFSET_BG3CNT, BGCNT_MOSAIC);
+ task->tState++;
+ return TRUE;
+}
+
+bool8 Phase2_Blur_Func2(struct Task *task)
+{
+ if (task->data[1] != 0)
+ {
+ task->data[1]--;
+ }
+ else
+ {
+ task->data[1] = 4;
+ if (++task->data[2] == 10)
+ BeginNormalPaletteFade(-1, -1, 0, 0x10, 0);
+ SetGpuReg(REG_OFFSET_MOSAIC, (task->data[2] & 15) * 17);
+ if (task->data[2] > 14)
+ task->tState++;
+ }
+ return FALSE;
+}
+
+bool8 Phase2_Blur_Func3(struct Task *task)
+{
+ if (!gPaletteFade.active)
+ {
+ u8 taskId = FindTaskIdByFunc(Phase2Task_Blur);
+ DestroyTask(taskId);
+ }
+ return FALSE;
+}
+
+void Phase2Task_Swirl(u8 taskId)
+{
+ while (sPhase2_Swirl_Funcs[gTasks[taskId].tState](&gTasks[taskId]));
+}
+
+bool8 Phase2_Swirl_Func1(struct Task *task)
+{
+ sub_8149F08();
+ dp12_8087EA4();
+ BeginNormalPaletteFade(-1, 4, 0, 0x10, 0);
+ sub_8149F98(gUnknown_020393A8, sTransitionStructPtr->field_14, 0, 2, 0, 160);
+
+ SetVBlankCallback(VBlankCB_Phase2_Swirl);
+ SetHBlankCallback(HBlankCB_Phase2_Swirl);
+
+ EnableInterrupts(INTR_FLAG_VBLANK | INTR_FLAG_HBLANK);
+
+ task->tState++;
+ return FALSE;
+}
+
+bool8 Phase2_Swirl_Func2(struct Task *task)
+{
+ sTransitionStructPtr->VBlank_DMA = 0;
+ task->data[1] += 4;
+ task->data[2] += 8;
+
+ sub_8149F98(gUnknown_02038C28[0], sTransitionStructPtr->field_14, task->data[1], 2, task->data[2], 160);
+
+ if (!gPaletteFade.active)
+ {
+ u8 taskId = FindTaskIdByFunc(Phase2Task_Swirl);
+ DestroyTask(taskId);
+ }
+
+ sTransitionStructPtr->VBlank_DMA++;
+ return FALSE;
+}
+
+void VBlankCB_Phase2_Swirl(void)
+{
+ VBlankCB_BattleTransition();
+ if (sTransitionStructPtr->VBlank_DMA)
+ DmaCopy16(3, gUnknown_02038C28[0], gUnknown_02038C28[1], 320);
+}
+
+void HBlankCB_Phase2_Swirl(void)
+{
+ u16 var = gUnknown_02038C28[1][REG_VCOUNT];
+ REG_BG1HOFS = var;
+ REG_BG2HOFS = var;
+ REG_BG3HOFS = var;
+}
+
+void Phase2Task_Shuffle(u8 taskId)
+{
+ while (sPhase2_Shuffle_Funcs[gTasks[taskId].tState](&gTasks[taskId]));
+}
+
+bool8 Phase2_Shuffle_Func1(struct Task *task)
+{
+ sub_8149F08();
+ dp12_8087EA4();
+
+ BeginNormalPaletteFade(-1, 4, 0, 0x10, 0);
+ memset(gUnknown_020393A8, sTransitionStructPtr->field_16, 0x140);
+
+ SetVBlankCallback(VBlankCB_Phase2_Shuffle);
+ SetHBlankCallback(HBlankCB_Phase2_Shuffle);
+
+ EnableInterrupts(INTR_FLAG_VBLANK | INTR_FLAG_HBLANK);
+
+ task->tState++;
+ return FALSE;
+}
+
+bool8 Phase2_Shuffle_Func2(struct Task *task)
+{
+ u8 i;
+ u16 r3, r4;
+
+ sTransitionStructPtr->VBlank_DMA = 0;
+ r4 = task->data[1];
+ r3 = task->data[2] >> 8;
+ task->data[1] += 4224;
+ task->data[2] += 384;
+
+ for (i = 0; i < 160; i++, r4 += 4224)
+ {
+ u16 var = r4 / 256;
+ gUnknown_02038C28[0][i] = sTransitionStructPtr->field_16 + Sin(var, r3);
+ }
+
+ if (!gPaletteFade.active)
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Shuffle));
+
+ sTransitionStructPtr->VBlank_DMA++;
+ return FALSE;
+}
+
+void VBlankCB_Phase2_Shuffle(void)
+{
+ VBlankCB_BattleTransition();
+ if (sTransitionStructPtr->VBlank_DMA)
+ DmaCopy16(3, gUnknown_02038C28[0], gUnknown_02038C28[1], 320);
+}
+
+void HBlankCB_Phase2_Shuffle(void)
+{
+ u16 var = gUnknown_02038C28[1][REG_VCOUNT];
+ REG_BG1VOFS = var;
+ REG_BG2VOFS = var;
+ REG_BG3VOFS = var;
+}
+
+void Phase2Task_BigPokeball(u8 taskId)
+{
+ while (sPhase2_BigPokeball_Funcs[gTasks[taskId].tState](&gTasks[taskId]));
+}
+
+void Phase2Task_Aqua(u8 taskId)
+{
+ while (sPhase2_Aqua_Funcs[gTasks[taskId].tState](&gTasks[taskId]));
+}
+
+void Phase2Task_Magma(u8 taskId)
+{
+ while (sPhase2_Magma_Funcs[gTasks[taskId].tState](&gTasks[taskId]));
+}
+
+void Phase2Task_Regice(u8 taskId)
+{
+ while (sPhase2_Regice_Funcs[gTasks[taskId].tState](&gTasks[taskId]));
+}
+
+void Phase2Task_Registeel(u8 taskId)
+{
+ while (sPhase2_Registeel_Funcs[gTasks[taskId].tState](&gTasks[taskId]));
+}
+
+void Phase2Task_Regirock(u8 taskId)
+{
+ while (sPhase2_Regirock_Funcs[gTasks[taskId].tState](&gTasks[taskId]));
+}
+
+void Phase2Task_Kyogre(u8 taskId)
+{
+ while (sPhase2_Kyogre_Funcs[gTasks[taskId].tState](&gTasks[taskId]));
+}
+
+void sub_814669C(struct Task *task)
+{
+ s32 i;
+
+ sub_8149F08();
+ dp12_8087EA4();
+
+ task->data[1] = 16;
+ task->data[2] = 0;
+ task->data[4] = 0;
+ task->data[5] = 0x4000;
+ sTransitionStructPtr->WININ = 63;
+ sTransitionStructPtr->WINOUT = 0;
+ sTransitionStructPtr->field_6 = 240;
+ sTransitionStructPtr->WIN0V = 160;
+ sTransitionStructPtr->BLDCNT = 0x3F41;
+ sTransitionStructPtr->BLDALPHA = (task->data[1] << 8) | (task->data[2]);
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_02038C28[1][i] = 240;
+ }
+
+ SetVBlankCallback(VBlankCB0_Phase2_BigPokeball);
+}
+
+bool8 Phase2_Aqua_Func1(struct Task *task)
+{
+ u16 *dst1, *dst2;
+
+ task->tFrames = 60;
+ sub_814669C(task);
+ sub_8149F58(&dst1, &dst2);
+ CpuFill16(0, dst1, 0x800);
+ LZ77UnCompVram(sTeamAqua_Tileset, dst2);
+ LoadPalette(sEvilTeam_Palette, 0xF0, 0x20);
+
+ task->tState++;
+ return FALSE;
+}
+
+bool8 Phase2_Magma_Func1(struct Task *task)
+{
+ u16 *dst1, *dst2;
+
+ task->tFrames = 60;
+ sub_814669C(task);
+ sub_8149F58(&dst1, &dst2);
+ CpuFill16(0, dst1, 0x800);
+ LZ77UnCompVram(sTeamMagma_Tileset, dst2);
+ LoadPalette(sEvilTeam_Palette, 0xF0, 0x20);
+
+ task->tState++;
+ return FALSE;
+}
+
+bool8 Phase2_Regi_Func1(struct Task *task)
+{
+ u16 *dst1, *dst2;
+
+ task->tFrames = 60;
+ sub_814669C(task);
+ sub_8149F58(&dst1, &dst2);
+ CpuFill16(0, dst1, 0x800);
+ CpuCopy16(gUnknown_085BBC14, dst2, 0x2000);
+
+ task->tState++;
+ return FALSE;
+}
+
+bool8 Phase2_BigPokeball_Func1(struct Task *task)
+{
+ u16 *dst1, *dst2;
+
+ sub_814669C(task);
+ sub_8149F58(&dst1, &dst2);
+ CpuFill16(0, dst1, 0x800);
+ CpuCopy16(sBigPokeball_Tileset, dst2, 0x580);
+ LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20);
+
+ task->tState++;
+ return FALSE;
+}
+
+bool8 Phase2_BigPokeball_Func2(struct Task *task)
+{
+ s16 i, j;
+ u16 *dst1, *dst2;
+ const u16 *BigPokeballMap;
+
+ sub_8149F58(&dst1, &dst2);
+ BigPokeballMap = sBigPokeball_Tilemap;
+ for (i = 0; i < 20; i++)
+ {
+ for (j = 0; j < 30; j++, BigPokeballMap++)
+ {
+ dst1[i * 32 + j] = *BigPokeballMap | 0xF000;
+ }
+ }
+ sub_8149F98(gUnknown_02038C28[0], 0, task->data[4], 132, task->data[5], 160);
+
+ task->tState++;
+ return TRUE;
+}
+
+bool8 Phase2_Aqua_Func2(struct Task *task)
+{
+ u16 *dst1, *dst2;
+
+ sub_8149F58(&dst1, &dst2);
+ LZ77UnCompVram(sTeamAqua_Tilemap, dst1);
+ sub_8149F98(gUnknown_02038C28[0], 0, task->data[4], 132, task->data[5], 160);
+
+ task->tState++;
+ return FALSE;
+}
+
+bool8 Phase2_Magma_Func2(struct Task *task)
+{
+ u16 *dst1, *dst2;
+
+ sub_8149F58(&dst1, &dst2);
+ LZ77UnCompVram(sTeamMagma_Tilemap, dst1);
+ sub_8149F98(gUnknown_02038C28[0], 0, task->data[4], 132, task->data[5], 160);
+
+ task->tState++;
+ return FALSE;
+}
+
+bool8 Phase2_Regice_Func2(struct Task *task)
+{
+ u16 *dst1, *dst2;
+
+ sub_8149F58(&dst1, &dst2);
+ LoadPalette(gUnknown_085BC2B4, 0xF0, 0x20);
+ CpuCopy16(gUnknown_085BC314, dst1, 0x500);
+ sub_8149F98(gUnknown_02038C28[0], 0, task->data[4], 132, task->data[5], 160);
+
+ task->tState++;
+ return FALSE;
+}
+
+bool8 Phase2_Registeel_Func2(struct Task *task)
+{
+ u16 *dst1, *dst2;
+
+ sub_8149F58(&dst1, &dst2);
+ LoadPalette(gUnknown_085BC2D4, 0xF0, 0x20);
+ CpuCopy16(gUnknown_085BCB14, dst1, 0x500);
+ sub_8149F98(gUnknown_02038C28[0], 0, task->data[4], 132, task->data[5], 160);
+
+ task->tState++;
+ return FALSE;
+}
+
+bool8 Phase2_Regirock_Func2(struct Task *task)
+{
+ u16 *dst1, *dst2;
+
+ sub_8149F58(&dst1, &dst2);
+ LoadPalette(gUnknown_085BC2F4, 0xF0, 0x20);
+ CpuCopy16(gUnknown_085BD314, dst1, 0x500);
+ sub_8149F98(gUnknown_02038C28[0], 0, task->data[4], 132, task->data[5], 160);
+
+ task->tState++;
+ return FALSE;
+}
+
+bool8 Phase2_Kyogre_Func3(struct Task *task)
+{
+ u16 *dst1, *dst2;
+
+ sub_8149F58(&dst1, &dst2);
+ CpuFill16(0, dst1, 0x800);
+ LZ77UnCompVram(gUnknown_085BDB34, dst2);
+ LZ77UnCompVram(gUnknown_085BE1E8, dst1);
+
+ task->tState++;
+ return FALSE;
+}
+
+bool8 Phase2_Kyogre_Func4(struct Task *task)
+{
+ if (task->data[1] % 3 == 0)
+ {
+ u16 var = task->data[1] % 30;
+ var /= 3;
+ LoadPalette(gUnknown_085BEDA0 + (var * 16), 0xF0, 0x20);
+ }
+ if (++task->data[1] > 58)
+ {
+ task->tState++;
+ task->data[1] = 0;
+ }
+
+ return FALSE;
+}
+
+bool8 Phase2_Kyogre_Func5(struct Task *task)
+{
+ if (task->data[1] % 5 == 0)
+ {
+ s16 var = task->data[1] / 5;
+ LoadPalette(gUnknown_085BEEE0 + (var * 16), 0xF0, 0x20);
+ }
+ if (++task->data[1] > 68)
+ {
+ task->tState++;
+ task->data[1] = 0;
+ task->tFrames = 30;
+ }
+
+ return FALSE;
+}
+
+bool8 Phase2_WeatherDuo_Func6(struct Task *task)
+{
+ BeginNormalPaletteFade(0xFFFF8000, 1, 0, 0x10, 0);
+ task->tState++;
+ return FALSE;
+}
+
+bool8 Phase2_WeatherDuo_Func7(struct Task *task)
+{
+ if (!gPaletteFade.active)
+ {
+ DmaStop(0);
+ sub_8149F84();
+ DestroyTask(FindTaskIdByFunc(task->func));
+ }
+ return FALSE;
+}
+
+bool8 Phase2_BigPokeball_Func3(struct Task *task)
+{
+ sTransitionStructPtr->VBlank_DMA = 0;
+ if (task->data[3] == 0 || --task->data[3] == 0)
+ {
+ task->data[2]++;
+ task->data[3] = 2;
+ }
+ sTransitionStructPtr->BLDALPHA = (task->data[1] << 8) | task->data[2];
+ if (task->data[2] > 15)
+ task->tState++;
+ task->data[4] += 8;
+ task->data[5] -= 256;
+
+ sub_8149F98(gUnknown_02038C28[0], 0, task->data[4], 132, task->data[5] >> 8, 160);
+
+ sTransitionStructPtr->VBlank_DMA++;
+ return FALSE;
+}
+
+bool8 Phase2_BigPokeball_Func4(struct Task *task)
+{
+ sTransitionStructPtr->VBlank_DMA = 0;
+ if (task->data[3] == 0 || --task->data[3] == 0)
+ {
+ task->data[1]--;
+ task->data[3] = 2;
+ }
+ sTransitionStructPtr->BLDALPHA = (task->data[1] << 8) | task->data[2];
+ if (task->data[1] == 0)
+ task->tState++;
+ task->data[4] += 8;
+ task->data[5] -= 256;
+
+ sub_8149F98(gUnknown_02038C28[0], 0, task->data[4], 132, task->data[5] >> 8, 160);
+
+ sTransitionStructPtr->VBlank_DMA++;
+ return FALSE;
+}
+
+bool8 Phase2_BigPokeball_Func5(struct Task *task)
+{
+ sTransitionStructPtr->VBlank_DMA = 0;
+ task->data[4] += 8;
+ task->data[5] -= 256;
+
+ sub_8149F98(gUnknown_02038C28[0], 0, task->data[4], 132, task->data[5] >> 8, 160);
+
+ if (task->data[5] <= 0)
+ {
+ task->tState++;
+ task->data[1] = 160;
+ task->data[2] = 256;
+ task->data[3] = 0;
+ }
+
+ sTransitionStructPtr->VBlank_DMA++;
+ return FALSE;
+}
+
+bool8 Phase2_FramesCountdown(struct Task *task)
+{
+ if (--task->tFrames == 0)
+ task->tState++;
+ return FALSE;
+}
+
+bool8 Phase2_WeatherTrio_Func1(struct Task *task)
+{
+ BeginNormalPaletteFade(0x0000FFFF, 1, 0, 0x10, 0);
+ task->tState++;
+ return FALSE;
+}
+
+bool8 Phase2_WaitPaletteFade(struct Task *task)
+{
+ if (!gPaletteFade.active)
+ task->tState++;
+ return FALSE;
+}
+
+bool8 Phase2_BigPokeball_Func6(struct Task *task)
+{
+ sTransitionStructPtr->VBlank_DMA = 0;
+ if (task->data[2] < 1024)
+ task->data[2] += 128;
+ if (task->data[1] != 0)
+ {
+ task->data[1] -= (task->data[2] >> 8);
+ if (task->data[1] < 0)
+ task->data[1] = 0;
+ }
+ sub_814A014(gUnknown_02038C28[0], 120, 80, task->data[1]);
+ if (task->data[1] == 0)
+ {
+ SetVBlankCallback(NULL);
+ DmaStop(0);
+ sub_8149F84();
+ DestroyTask(FindTaskIdByFunc(task->func));
+ }
+ else
+ {
+ if (task->data[3] == 0)
+ {
+ task->data[3]++;
+ SetVBlankCallback(VBlankCB1_Phase2_BigPokeball);
+ }
+
+ sTransitionStructPtr->VBlank_DMA++;
+ }
+
+ return FALSE;
+}
+
+void Transition_BigPokeball_Vblank(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ if (sTransitionStructPtr->VBlank_DMA)
+ DmaCopy16(3, gUnknown_02038C28[0], gUnknown_02038C28[1], 320);
+ REG_WININ = sTransitionStructPtr->WININ;
+ REG_WINOUT = sTransitionStructPtr->WINOUT;
+ REG_WIN0V = sTransitionStructPtr->WIN0V;
+ REG_BLDCNT = sTransitionStructPtr->BLDCNT;
+ REG_BLDALPHA = sTransitionStructPtr->BLDALPHA;
+}
+
+void VBlankCB0_Phase2_BigPokeball(void)
+{
+ Transition_BigPokeball_Vblank();
+ DmaSet(0, gUnknown_020393A8, &REG_BG0HOFS, 0xA2400001);
+}
+
+void VBlankCB1_Phase2_BigPokeball(void)
+{
+ Transition_BigPokeball_Vblank();
+ DmaSet(0, gUnknown_020393A8, &REG_WIN0H, 0xA2400001);
+}
+
+void Phase2Task_PokeballsTrail(u8 taskId)
+{
+ while (sPhase2_PokeballsTrail_Funcs[gTasks[taskId].tState](&gTasks[taskId]));
+}
+
+bool8 Phase2_PokeballsTrail_Func1(struct Task *task)
+{
+ u16 *dst1, *dst2;
+
+ sub_8149F58(&dst1, &dst2);
+ CpuSet(sPokeballTrail_Tileset, dst2, 0x20);
+ CpuFill32(0, dst1, 0x800);
+ LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20);
+
+ task->tState++;
+ return FALSE;
+}
+
+bool8 Phase2_PokeballsTrail_Func2(struct Task *task)
+{
+ s16 i;
+ s16 rand;
+ s16 arr0[ARRAY_COUNT(sUnknown_085C8B88)];
+ s16 arr1[ARRAY_COUNT(sUnknown_085C8B8C)];
+
+ memcpy(arr0, sUnknown_085C8B88, sizeof(sUnknown_085C8B88));
+ memcpy(arr1, sUnknown_085C8B8C, sizeof(sUnknown_085C8B8C));
+ rand = Random() & 1;
+ for (i = 0; i <= 4; i++, rand ^= 1)
+ {
+ gFieldEffectArguments[0] = arr0[rand]; // x
+ gFieldEffectArguments[1] = (i * 32) + 16; // y
+ gFieldEffectArguments[2] = rand;
+ gFieldEffectArguments[3] = arr1[i];
+ FieldEffectStart(FLDEFF_POKEBALL);
+ }
+
+ task->tState++;
+ return FALSE;
+}
+
+bool8 Phase2_PokeballsTrail_Func3(struct Task *task)
+{
+ if (!FieldEffectActiveListContains(FLDEFF_POKEBALL))
+ {
+ sub_8149F84();
+ DestroyTask(FindTaskIdByFunc(Phase2Task_PokeballsTrail));
+ }
+ return FALSE;
+}
+
+bool8 FldEff_Pokeball(void)
+{
+ u8 spriteId = CreateSpriteAtEnd(&gUnknown_085C8E68, gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
+ gSprites[spriteId].oam.priority = 0;
+ gSprites[spriteId].oam.affineMode = 1;
+ gSprites[spriteId].data[0] = gFieldEffectArguments[2];
+ gSprites[spriteId].data[1] = gFieldEffectArguments[3];
+ gSprites[spriteId].data[2] = -1;
+ InitSpriteAffineAnim(&gSprites[spriteId]);
+ StartSpriteAffineAnim(&gSprites[spriteId], gFieldEffectArguments[2]);
+ return FALSE;
+}
+
+#define SOME_VRAM_STORE(ptr, posY, posX, toStore) \
+{ \
+ u32 index = (posY) * 32 + posX; \
+ ptr[index] = toStore; \
+}
+
+void sub_814713C(struct Sprite *sprite)
+{
+ s16 arr0[ARRAY_COUNT(sUnknown_085C8B96)];
+
+ memcpy(arr0, sUnknown_085C8B96, sizeof(sUnknown_085C8B96));
+ if (sprite->data[1] != 0)
+ {
+ sprite->data[1]--;
+ }
+ else
+ {
+ if (sprite->pos1.x >= 0 && sprite->pos1.x <= 240)
+ {
+ s16 posX = sprite->pos1.x >> 3;
+ s16 posY = sprite->pos1.y >> 3;
+
+ if (posX != sprite->data[2])
+ {
+ u32 var;
+ u16 *ptr;
+
+ sprite->data[2] = posX;
+ var = (((REG_BG0CNT >> 8) & 0x1F) << 11); // r2
+ ptr = (u16 *)(VRAM + var);
+
+ SOME_VRAM_STORE(ptr, posY - 2, posX, 0xF001);
+ SOME_VRAM_STORE(ptr, posY - 1, posX, 0xF001);
+ SOME_VRAM_STORE(ptr, posY - 0, posX, 0xF001);
+ SOME_VRAM_STORE(ptr, posY + 1, posX, 0xF001);
+ }
+ }
+ sprite->pos1.x += arr0[sprite->data[0]];
+ if (sprite->pos1.x < -15 || sprite->pos1.x > 255)
+ FieldEffectStop(sprite, FLDEFF_POKEBALL);
+ }
+}
+
+void Phase2Task_Clockwise_BlackFade(u8 taskId)
+{
+ while (sPhase2_Clockwise_BlackFade_Funcs[gTasks[taskId].tState](&gTasks[taskId]));
+}
+
+bool8 Phase2_Clockwise_BlackFade_Func1(struct Task *task)
+{
+ u16 i;
+
+ sub_8149F08();
+ dp12_8087EA4();
+
+ sTransitionStructPtr->WININ = 0;
+ sTransitionStructPtr->WINOUT = 63;
+ sTransitionStructPtr->field_6 = -3855;
+ sTransitionStructPtr->WIN0V = 160;
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_020393A8[i] = 0xF3F4;
+ }
+
+ SetVBlankCallback(VBlankCB_Phase2_Clockwise_BlackFade);
+ sTransitionStructPtr->data[4] = 120;
+
+ task->tState++;
+ return TRUE;
+}
+
+bool8 Phase2_Clockwise_BlackFade_Func2(struct Task *task)
+{
+ sTransitionStructPtr->VBlank_DMA = 0;
+
+ sub_814A1AC(sTransitionStructPtr->data, 120, 80, sTransitionStructPtr->data[4], -1, 1, 1);
+ do
+ {
+ gUnknown_02038C28[0][sTransitionStructPtr->data[3]] = (sTransitionStructPtr->data[2] + 1) | 0x7800;
+ } while (!sub_814A228(sTransitionStructPtr->data, 1, 1));
+
+ sTransitionStructPtr->data[4] += 16;
+ if (sTransitionStructPtr->data[4] >= 240)
+ {
+ sTransitionStructPtr->data[5] = 0;
+ task->tState++;
+ }
+
+ sTransitionStructPtr->VBlank_DMA++;
+ return FALSE;
+}
+
+bool8 Phase2_Clockwise_BlackFade_Func3(struct Task *task)
+{
+ s16 r1, r3;
+ vu8 var = 0;
+
+ sTransitionStructPtr->VBlank_DMA = 0;
+
+ sub_814A1AC(sTransitionStructPtr->data, 120, 80, 240, sTransitionStructPtr->data[5], 1, 1);
+
+ while (1)
+ {
+ r1 = 120, r3 = sTransitionStructPtr->data[2] + 1;
+ if (sTransitionStructPtr->data[5] >= 80)
+ r1 = sTransitionStructPtr->data[2], r3 = 240;
+ gUnknown_02038C28[0][sTransitionStructPtr->data[3]] = (r3) | (r1 << 8);
+ if (var != 0)
+ break;
+ var = sub_814A228(sTransitionStructPtr->data, 1, 1);
+ }
+
+ sTransitionStructPtr->data[5] += 8;
+ if (sTransitionStructPtr->data[5] >= 160)
+ {
+ sTransitionStructPtr->data[4] = 240;
+ task->tState++;
+ }
+ else
+ {
+ while (sTransitionStructPtr->data[3] < sTransitionStructPtr->data[5])
+ {
+ gUnknown_02038C28[0][++sTransitionStructPtr->data[3]] = (r3) | (r1 << 8);
+ }
+ }
+
+ sTransitionStructPtr->VBlank_DMA++;
+ return FALSE;
+}
+
+bool8 Phase2_Clockwise_BlackFade_Func4(struct Task *task)
+{
+ sTransitionStructPtr->VBlank_DMA = 0;
+
+ sub_814A1AC(sTransitionStructPtr->data, 120, 80, sTransitionStructPtr->data[4], 160, 1, 1);
+ do
+ {
+ gUnknown_02038C28[0][sTransitionStructPtr->data[3]] = (sTransitionStructPtr->data[2] << 8) | 0xF0;
+ } while (!sub_814A228(sTransitionStructPtr->data, 1, 1));
+
+ sTransitionStructPtr->data[4] -= 16;
+ if (sTransitionStructPtr->data[4] <= 0)
+ {
+ sTransitionStructPtr->data[5] = 160;
+ task->tState++;
+ }
+
+ sTransitionStructPtr->VBlank_DMA++;
+ return FALSE;
+}
+
+bool8 Phase2_Clockwise_BlackFade_Func5(struct Task *task)
+{
+ s16 r1, r2, var4;
+ vu8 var = 0;
+
+ sTransitionStructPtr->VBlank_DMA = 0;
+
+ sub_814A1AC(sTransitionStructPtr->data, 120, 80, 0, sTransitionStructPtr->data[5], 1, 1);
+
+ while (1)
+ {
+ r1 = (gUnknown_02038C28[0][sTransitionStructPtr->data[3]]) & 0xFF;
+ r2 = sTransitionStructPtr->data[2];
+ if (sTransitionStructPtr->data[5] <= 80)
+ r2 = 120, r1 = sTransitionStructPtr->data[2];
+ var4 = (r1) | (r2 << 8);
+ gUnknown_02038C28[0][sTransitionStructPtr->data[3]] = var4;
+ if (var != 0)
+ break;
+ var = sub_814A228(sTransitionStructPtr->data, 1, 1);
+ }
+
+ sTransitionStructPtr->data[5] -= 8;
+ if (sTransitionStructPtr->data[5] <= 0)
+ {
+ sTransitionStructPtr->data[4] = 0;
+ task->tState++;
+ }
+ else
+ {
+ while (sTransitionStructPtr->data[3] > sTransitionStructPtr->data[5])
+ {
+ gUnknown_02038C28[0][--sTransitionStructPtr->data[3]] = (r1) | (r2 << 8);
+ }
+ }
+
+ sTransitionStructPtr->VBlank_DMA++;
+ return FALSE;
+}
+
+bool8 Phase2_Clockwise_BlackFade_Func6(struct Task *task)
+{
+ sTransitionStructPtr->VBlank_DMA = 0;
+
+ sub_814A1AC(sTransitionStructPtr->data, 120, 80, sTransitionStructPtr->data[4], 0, 1, 1);
+ do
+ {
+ s16 r2, r3;
+
+ r2 = 120, r3 = sTransitionStructPtr->data[2];
+ if (sTransitionStructPtr->data[2] >= 120)
+ r2 = 0, r3 = 240;
+ gUnknown_02038C28[0][sTransitionStructPtr->data[3]] = (r3) | (r2 << 8);
+
+ } while (!sub_814A228(sTransitionStructPtr->data, 1, 1));
+
+ sTransitionStructPtr->data[4] += 16;
+ if (sTransitionStructPtr->data[2] > 120)
+ task->tState++;
+
+ sTransitionStructPtr->VBlank_DMA++;
+ return FALSE;
+}
+
+bool8 Phase2_Clockwise_BlackFade_Func7(struct Task *task)
+{
+ DmaStop(0);
+ sub_8149F84();
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Clockwise_BlackFade));
+ return FALSE;
+}
+
+void VBlankCB_Phase2_Clockwise_BlackFade(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ if (sTransitionStructPtr->VBlank_DMA != 0)
+ DmaCopy16(3, gUnknown_02038C28[0], gUnknown_02038C28[1], 320);
+ REG_WININ = sTransitionStructPtr->WININ;
+ REG_WINOUT = sTransitionStructPtr->WINOUT;
+ REG_WIN0V = sTransitionStructPtr->WIN0V;
+ REG_WIN0H = gUnknown_02038C28[1][0];
+ DmaSet(0, gUnknown_02038C28[1], &REG_WIN0H, 0xA2400001);
+}
+
+void Phase2Task_Ripple(u8 taskId)
+{
+ while (sPhase2_Ripple_Funcs[gTasks[taskId].tState](&gTasks[taskId]));
+}
+
+bool8 Phase2_Ripple_Func1(struct Task *task)
+{
+ u8 i;
+
+ sub_8149F08();
+ dp12_8087EA4();
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_020393A8[i] = sTransitionStructPtr->field_16;
+ }
+
+ SetVBlankCallback(VBlankCB_Phase2_Ripple);
+ SetHBlankCallback(HBlankCB_Phase2_Ripple);
+
+ EnableInterrupts(INTR_FLAG_HBLANK);
+
+ task->tState++;
+ return TRUE;
+}
+
+bool8 Phase2_Ripple_Func2(struct Task *task)
+{
+ u8 i;
+ s16 r3;
+ u16 r4, r8;
+
+ sTransitionStructPtr->VBlank_DMA = 0;
+
+ r3 = task->data[2] >> 8;
+ r4 = task->data[1];
+ r8 = 384;
+ task->data[1] += 0x400;
+ if (task->data[2] <= 0x1FFF)
+ task->data[2] += 0x180;
+
+ for (i = 0; i < 160; i++, r4 += r8)
+ {
+ // todo: fix the asm
+ s16 var = r4 >> 8;
+ asm("");
+ gUnknown_02038C28[0][i] = sTransitionStructPtr->field_16 + Sin(var, r3);
+ }
+
+ if (++task->data[3] == 81)
+ {
+ task->data[4]++;
+ BeginNormalPaletteFade(-1, -2, 0, 0x10, 0);
+ }
+
+ if (task->data[4] != 0 && !gPaletteFade.active)
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Ripple));
+
+ sTransitionStructPtr->VBlank_DMA++;
+ return FALSE;
+}
+
+void VBlankCB_Phase2_Ripple(void)
+{
+ VBlankCB_BattleTransition();
+ if (sTransitionStructPtr->VBlank_DMA)
+ DmaCopy16(3, gUnknown_02038C28[0], gUnknown_02038C28[1], 320);
+}
+
+void HBlankCB_Phase2_Ripple(void)
+{
+ u16 var = gUnknown_02038C28[1][REG_VCOUNT];
+ REG_BG1VOFS = var;
+ REG_BG2VOFS = var;
+ REG_BG3VOFS = var;
+}
+
+void Phase2Task_Wave(u8 taskId)
+{
+ while (sPhase2_Wave_Funcs[gTasks[taskId].tState](&gTasks[taskId]));
+}
+
+bool8 Phase2_Wave_Func1(struct Task *task)
+{
+ u8 i;
+
+ sub_8149F08();
+ dp12_8087EA4();
+
+ sTransitionStructPtr->WININ = 63;
+ sTransitionStructPtr->WINOUT = 0;
+ sTransitionStructPtr->field_6 = 240;
+ sTransitionStructPtr->WIN0V = 160;
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_02038C28[1][i] = 242;
+ }
+
+ SetVBlankCallback(VBlankCB_Phase2_Wave);
+
+ task->tState++;
+ return TRUE;
+}
+
+bool8 Phase2_Wave_Func2(struct Task *task)
+{
+ u8 i, r5;
+ u16* toStore;
+ bool8 nextFunc;
+
+ sTransitionStructPtr->VBlank_DMA = 0;
+ toStore = gUnknown_02038C28[0];
+ r5 = task->data[2];
+ task->data[2] += 16;
+ task->data[1] += 8;
+
+ for (i = 0, nextFunc = TRUE; i < 160; i++, r5 += 4, toStore++)
+ {
+ s16 value = task->data[1] + Sin(r5, 40);
+ if (value < 0)
+ value = 0;
+ if (value > 240)
+ value = 240;
+ *toStore = (value << 8) | (0xF1);
+ if (value < 240)
+ nextFunc = FALSE;
+ }
+ if (nextFunc)
+ task->tState++;
+
+ sTransitionStructPtr->VBlank_DMA++;
+ return FALSE;
+}
+
+bool8 Phase2_Wave_Func3(struct Task *task)
+{
+ DmaStop(0);
+ sub_8149F84();
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Wave));
+ return FALSE;
+}
+
+void VBlankCB_Phase2_Wave(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ if (sTransitionStructPtr->VBlank_DMA != 0)
+ DmaCopy16(3, gUnknown_02038C28[0], gUnknown_02038C28[1], 320);
+ REG_WININ = sTransitionStructPtr->WININ;
+ REG_WINOUT = sTransitionStructPtr->WINOUT;
+ REG_WIN0V = sTransitionStructPtr->WIN0V;
+ DmaSet(0, gUnknown_02038C28[1], &REG_WIN0H, 0xA2400001);
+}
+
+void Phase2Task_Sydney(u8 taskId)
+{
+ gTasks[taskId].tMugshotId = MUGSHOT_SYDNEY;
+ Phase2Task_MugShotTransition(taskId);
+}
+
+void Phase2Task_Phoebe(u8 taskId)
+{
+ gTasks[taskId].tMugshotId = MUGSHOT_PHOEBE;
+ Phase2Task_MugShotTransition(taskId);
+}
+
+void Phase2Task_Glacia(u8 taskId)
+{
+ gTasks[taskId].tMugshotId = MUGSHOT_GLACIA;
+ Phase2Task_MugShotTransition(taskId);
+}
+
+void Phase2Task_Drake(u8 taskId)
+{
+ gTasks[taskId].tMugshotId = MUGSHOT_DRAKE;
+ Phase2Task_MugShotTransition(taskId);
+}
+
+void Phase2Task_Champion(u8 taskId)
+{
+ gTasks[taskId].tMugshotId = MUGSHOT_CHAMPION;
+ Phase2Task_MugShotTransition(taskId);
+}
+
+void Phase2Task_MugShotTransition(u8 taskId)
+{
+ while (sPhase2_Mugshot_Funcs[gTasks[taskId].tState](&gTasks[taskId]));
+}
+
+bool8 Phase2_Mugshot_Func1(struct Task *task)
+{
+ u8 i;
+
+ sub_8149F08();
+ dp12_8087EA4();
+ Mugshots_CreateOpponentPlayerSprites(task);
+
+ task->data[1] = 0;
+ task->data[2] = 1;
+ task->data[3] = 239;
+ sTransitionStructPtr->WININ = 63;
+ sTransitionStructPtr->WINOUT = 62;
+ sTransitionStructPtr->WIN0V = 160;
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_02038C28[1][i] = 0xF0F1;
+ }
+
+ SetVBlankCallback(VBlankCB0_Phase2_Mugshots);
+
+ task->tState++;
+ return FALSE;
+}
+
+bool8 Phase2_Mugshot_Func2(struct Task *task)
+{
+ s16 i, j;
+ u16 *dst1, *dst2;
+ const u16 *MugshotsMap;
+
+ MugshotsMap = sMugshotsTilemap;
+ sub_8149F58(&dst1, &dst2);
+ CpuSet(sUnknown_085B9AF0, dst2, 0xF0);
+ LoadPalette(sOpponentMugshotsPals[task->tMugshotId], 0xF0, 0x20);
+ LoadPalette(sPlayerMugshotsPals[gSaveBlock2Ptr->playerGender], 0xFA, 0xC);
+
+ for (i = 0; i < 20; i++)
+ {
+ for (j = 0; j < 32; j++, MugshotsMap++)
+ {
+ dst1[i * 32 + j] = *MugshotsMap | 0xF000;
+ }
+ }
+
+ EnableInterrupts(INTR_FLAG_HBLANK);
+
+ SetHBlankCallback(HBlankCB_Phase2_Mugshots);
+ task->tState++;
+ return FALSE;
+}
+
+bool8 Phase2_Mugshot_Func3(struct Task *task)
+{
+ u8 i, r5;
+ u16* toStore;
+ s16 value;
+ s32 mergedValue;
+
+ sTransitionStructPtr->VBlank_DMA = 0;
+
+ toStore = gUnknown_02038C28[0];
+ r5 = task->data[1];
+ task->data[1] += 0x10;
+
+ for (i = 0; i < 80; i++, toStore++, r5 += 0x10)
+ {
+ value = task->data[2] + Sin(r5, 0x10);
+ if (value < 0)
+ value = 1;
+ if (value > 0xF0)
+ value = 0xF0;
+ *toStore = value;
+ }
+ for (; i < 160; i++, toStore++, r5 += 0x10)
+ {
+ value = task->data[3] - Sin(r5, 0x10);
+ if (value < 0)
+ value = 0;
+ if (value > 0xEF)
+ value = 0xEF;
+ *toStore = (value << 8) | (0xF0);
+ }
+
+ task->data[2] += 8;
+ task->data[3] -= 8;
+ if (task->data[2] > 0xF0)
+ task->data[2] = 0xF0;
+ if (task->data[3] < 0)
+ task->data[3] = 0;
+ mergedValue = *(s32*)(&task->data[2]);
+ if (mergedValue == 0xF0)
+ task->tState++;
+
+ sTransitionStructPtr->field_18 -= 8;
+ sTransitionStructPtr->field_1A += 8;
+ sTransitionStructPtr->VBlank_DMA++;
+ return FALSE;
+}
+
+bool8 Phase2_Mugshot_Func4(struct Task *task)
+{
+ u8 i;
+ u16* toStore;
+
+ sTransitionStructPtr->VBlank_DMA = 0;
+
+ for (i = 0, toStore = gUnknown_02038C28[0]; i < 160; i++, toStore++)
+ {
+ *toStore = 0xF0;
+ }
+
+ task->tState++;
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = 0;
+ sTransitionStructPtr->field_18 -= 8;
+ sTransitionStructPtr->field_1A += 8;
+
+ sub_8148484(task->tOpponentSpriteId, 0);
+ sub_8148484(task->tPlayerSpriteId, 1);
+ sub_814849C(task->tOpponentSpriteId);
+
+ PlaySE(SE_BT_START);
+
+ sTransitionStructPtr->VBlank_DMA++;
+ return FALSE;
+}
+
+bool8 Phase2_Mugshot_Func5(struct Task *task)
+{
+ sTransitionStructPtr->field_18 -= 8;
+ sTransitionStructPtr->field_1A += 8;
+ if (sub_81484B8(task->tOpponentSpriteId))
+ {
+ task->tState++;
+ sub_814849C(task->tPlayerSpriteId);
+ }
+ return FALSE;
+}
+
+bool8 Phase2_Mugshot_Func6(struct Task *task)
+{
+ sTransitionStructPtr->field_18 -= 8;
+ sTransitionStructPtr->field_1A += 8;
+ if (sub_81484B8(task->tPlayerSpriteId))
+ {
+ sTransitionStructPtr->VBlank_DMA = 0;
+ SetVBlankCallback(NULL);
+ DmaStop(0);
+ memset(gUnknown_02038C28[0], 0, 0x140);
+ memset(gUnknown_02038C28[1], 0, 0x140);
+ SetGpuReg(REG_OFFSET_WIN0H, 0xF0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ task->tState++;
+ task->data[3] = 0;
+ task->data[4] = 0;
+ sTransitionStructPtr->BLDCNT = 0xBF;
+ SetVBlankCallback(VBlankCB1_Phase2_Mugshots);
+ }
+ return FALSE;
+}
+
+bool8 Phase2_Mugshot_Func7(struct Task *task)
+{
+ bool32 r6;
+
+ sTransitionStructPtr->VBlank_DMA = 0;
+ r6 = TRUE;
+ sTransitionStructPtr->field_18 -= 8;
+ sTransitionStructPtr->field_1A += 8;
+
+ if (task->data[4] < 0x50)
+ task->data[4] += 2;
+ if (task->data[4] > 0x50)
+ task->data[4] = 0x50;
+
+ if (++task->data[3] & 1)
+ {
+ s16 i;
+ for (i = 0, r6 = FALSE; i <= task->data[4]; i++)
+ {
+ s16 index1 = 0x50 - i;
+ s16 index2 = 0x50 + i;
+ if (gUnknown_02038C28[0][index1] <= 15)
+ {
+ r6 = TRUE;
+ gUnknown_02038C28[0][index1]++;
+ }
+ if (gUnknown_02038C28[0][index2] <= 15)
+ {
+ r6 = TRUE;
+ gUnknown_02038C28[0][index2]++;
+ }
+ }
+ }
+
+ if (task->data[4] == 0x50 && !r6)
+ task->tState++;
+
+ sTransitionStructPtr->VBlank_DMA++;
+ return FALSE;
+}
+
+bool8 Phase2_Mugshot_Func8(struct Task *task)
+{
+ sTransitionStructPtr->VBlank_DMA = 0;
+ BlendPalettes(-1, 0x10, 0x7FFF);
+ sTransitionStructPtr->BLDCNT = 0xFF;
+ task->data[3] = 0;
+
+ task->tState++;
+ return TRUE;
+}
+
+bool8 Phase2_Mugshot_Func9(struct Task *task)
+{
+ sTransitionStructPtr->VBlank_DMA = 0;
+
+ task->data[3]++;
+ memset(gUnknown_02038C28[0], task->data[3], 0x140);
+ if (task->data[3] > 15)
+ task->tState++;
+
+ sTransitionStructPtr->VBlank_DMA++;
+ return FALSE;
+}
+
+bool8 Phase2_Mugshot_Func10(struct Task *task)
+{
+ DmaStop(0);
+ sub_8149F84();
+ DestroyTask(FindTaskIdByFunc(task->func));
+ return FALSE;
+}
+
+void VBlankCB0_Phase2_Mugshots(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ if (sTransitionStructPtr->VBlank_DMA != 0)
+ DmaCopy16(3, gUnknown_02038C28[0], gUnknown_02038C28[1], 320);
+ REG_BG0VOFS = sTransitionStructPtr->field_1C;
+ REG_WININ = sTransitionStructPtr->WININ;
+ REG_WINOUT = sTransitionStructPtr->WINOUT;
+ REG_WIN0V = sTransitionStructPtr->WIN0V;
+ DmaSet(0, gUnknown_02038C28[1], &REG_WIN0H, 0xA2400001);
+}
+
+void VBlankCB1_Phase2_Mugshots(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ if (sTransitionStructPtr->VBlank_DMA != 0)
+ DmaCopy16(3, gUnknown_02038C28[0], gUnknown_02038C28[1], 320);
+ REG_BLDCNT = sTransitionStructPtr->BLDCNT;
+ DmaSet(0, gUnknown_02038C28[1], &REG_BLDY, 0xA2400001);
+}
+
+void HBlankCB_Phase2_Mugshots(void)
+{
+ if (REG_VCOUNT < 80)
+ REG_BG0HOFS = sTransitionStructPtr->field_18;
+ else
+ REG_BG0HOFS = sTransitionStructPtr->field_1A;
+}
+
+void Mugshots_CreateOpponentPlayerSprites(struct Task *task)
+{
+ struct Sprite *opponentSprite, *playerSprite;
+
+ s16 mugshotId = task->tMugshotId;
+ task->tOpponentSpriteId = CreateTrainerSprite(sMugshotsTrainerPicIDsTable[mugshotId],
+ sMugshotsOpponentCoords[mugshotId][0] - 32,
+ sMugshotsOpponentCoords[mugshotId][1] + 42,
+ 0, gDecompressionBuffer);
+ task->tPlayerSpriteId = CreateTrainerSprite(PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender), 272, 106, 0, gDecompressionBuffer);
+
+ opponentSprite = &gSprites[task->tOpponentSpriteId];
+ playerSprite = &gSprites[task->tPlayerSpriteId];
+
+ opponentSprite->callback = sub_8148380;
+ playerSprite->callback = sub_8148380;
+
+ opponentSprite->oam.affineMode = 3;
+ playerSprite->oam.affineMode = 3;
+
+ opponentSprite->oam.matrixNum = AllocOamMatrix();
+ playerSprite->oam.matrixNum = AllocOamMatrix();
+
+ opponentSprite->oam.shape = 1;
+ playerSprite->oam.shape = 1;
+
+ opponentSprite->oam.size = 3;
+ playerSprite->oam.size = 3;
+
+ CalcCenterToCornerVec(opponentSprite, 1, 3, 3);
+ CalcCenterToCornerVec(playerSprite, 1, 3, 3);
+
+ SetOamMatrixRotationScaling(opponentSprite->oam.matrixNum, sMugshotsOpponentRotationScales[mugshotId][0], sMugshotsOpponentRotationScales[mugshotId][1], 0);
+ SetOamMatrixRotationScaling(playerSprite->oam.matrixNum, -512, 512, 0);
+}
+
+void sub_8148380(struct Sprite *sprite)
+{
+ while (sUnknown_085C8C24[sprite->data[0]](sprite));
+}
+
+bool8 sub_81483A8(struct Sprite *sprite)
+{
+ return FALSE;
+}
+
+bool8 sub_81483AC(struct Sprite *sprite)
+{
+ s16 arr0[2];
+ s16 arr1[2];
+
+ memcpy(arr0, sUnknown_085C8C40, sizeof(sUnknown_085C8C40));
+ memcpy(arr1, sUnknown_085C8C44, sizeof(sUnknown_085C8C44));
+
+ sprite->data[0]++;
+ sprite->data[1] = arr0[sprite->data[7]];
+ sprite->data[2] = arr1[sprite->data[7]];
+ return TRUE;
+}
+
+bool8 sub_81483F8(struct Sprite *sprite)
+{
+ sprite->pos1.x += sprite->data[1];
+ if (sprite->data[7] && sprite->pos1.x < 133)
+ sprite->data[0]++;
+ else if (!sprite->data[7] && sprite->pos1.x > 103)
+ sprite->data[0]++;
+ return FALSE;
+}
+
+bool8 sub_814842C(struct Sprite *sprite)
+{
+ sprite->data[1] += sprite->data[2];
+ sprite->pos1.x += sprite->data[1];
+ if (sprite->data[1] == 0)
+ {
+ sprite->data[0]++;
+ sprite->data[2] = -sprite->data[2];
+ sprite->data[6] = 1;
+ }
+ return FALSE;
+}
+
+bool8 sub_8148458(struct Sprite *sprite)
+{
+ sprite->data[1] += sprite->data[2];
+ sprite->pos1.x += sprite->data[1];
+ if (sprite->pos1.x < -31 || sprite->pos1.x > 271)
+ sprite->data[0]++;
+ return FALSE;
+}
+
+void sub_8148484(s16 spriteId, s16 value)
+{
+ gSprites[spriteId].data[7] = value;
+}
+
+void sub_814849C(s16 spriteId)
+{
+ gSprites[spriteId].data[0]++;
+}
+
+s16 sub_81484B8(s16 spriteId)
+{
+ return gSprites[spriteId].data[6];
+}
+
+void Phase2Task_Slice(u8 taskId)
+{
+ while (sPhase2_Slice_Funcs[gTasks[taskId].tState](&gTasks[taskId]));
+}
+
+bool8 Phase2_Slice_Func1(struct Task *task)
+{
+ u16 i;
+
+ sub_8149F08();
+ dp12_8087EA4();
+
+ task->data[2] = 256;
+ task->data[3] = 1;
+ sTransitionStructPtr->WININ = 63;
+ sTransitionStructPtr->WINOUT = 0;
+ sTransitionStructPtr->WIN0V = 160;
+ sTransitionStructPtr->VBlank_DMA = 0;
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_02038C28[1][i] = sTransitionStructPtr->field_14;
+ gUnknown_02038C28[1][160 + i] = 0xF0;
+ }
+
+ EnableInterrupts(INTR_FLAG_HBLANK);
+ SetGpuRegBits(REG_OFFSET_DISPSTAT, DISPSTAT_HBLANK_INTR);
+
+ SetVBlankCallback(VBlankCB_Phase2_Slice);
+ SetHBlankCallback(HBlankCB_Phase2_Slice);
+
+ task->tState++;
+ return TRUE;
+}
+
+bool8 Phase2_Slice_Func2(struct Task *task)
+{
+ u16 i;
+
+ sTransitionStructPtr->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_02038C28[0][i];
+ u16* storeLoc2 = &gUnknown_02038C28[0][i + 160];
+ if (1 & i)
+ {
+ *storeLoc1 = sTransitionStructPtr->field_14 + task->data[1];
+ *storeLoc2 = 0xF0 - task->data[1];
+ }
+ else
+ {
+ *storeLoc1 = sTransitionStructPtr->field_14 - task->data[1];
+ *storeLoc2 = (task->data[1] << 8) | (0xF1);
+ }
+ }
+
+ if (task->data[1] > 0xEF)
+ task->tState++;
+
+ sTransitionStructPtr->VBlank_DMA++;
+ return FALSE;
+}
+
+bool8 Phase2_Slice_Func3(struct Task *task)
+{
+ DmaStop(0);
+ sub_8149F84();
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Slice));
+ return FALSE;
+}
+
+void VBlankCB_Phase2_Slice(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ REG_WININ = sTransitionStructPtr->WININ;
+ REG_WINOUT = sTransitionStructPtr->WINOUT;
+ REG_WIN0V = sTransitionStructPtr->WIN0V;
+ if (sTransitionStructPtr->VBlank_DMA)
+ DmaCopy16(3, gUnknown_02038C28[0], gUnknown_02038C28[1], 640);
+ DmaSet(0, &gUnknown_02038C28[1][160], &REG_WIN0H, 0xA2400001);
+}
+
+void HBlankCB_Phase2_Slice(void)
+{
+ if (REG_VCOUNT < 160)
+ {
+ u16 var = gUnknown_02038C28[1][REG_VCOUNT];
+ REG_BG1HOFS = var;
+ REG_BG2HOFS = var;
+ REG_BG3HOFS = var;
+ }
+}