summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDizzyEggg <jajkodizzy@wp.pl>2017-08-17 21:05:59 +0200
committerDizzyEggg <jajkodizzy@wp.pl>2017-08-17 21:05:59 +0200
commite9ec2a1a561d3041b8df2cb512a0e03ff5bca74b (patch)
tree03463c3e7a9c93847c15a3731a1888435b028d78
parent3f0250648efc347ce6fab48e8bb814000c847b77 (diff)
start decompiling battle transition
-rw-r--r--asm/battle_tower.s2
-rw-r--r--asm/battle_transition.s923
-rw-r--r--data/battle_transition.s122
-rw-r--r--include/battle_transition.h4
-rw-r--r--include/rom4.h2
-rw-r--r--ld_script.txt1
-rw-r--r--src/battle_setup.c4
-rw-r--r--src/battle_transition.c302
8 files changed, 451 insertions, 909 deletions
diff --git a/asm/battle_tower.s b/asm/battle_tower.s
index 15cb95854..3f019e1ea 100644
--- a/asm/battle_tower.s
+++ b/asm/battle_tower.s
@@ -2082,7 +2082,7 @@ sub_8135534: @ 8135534
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_811AAE8
+ bl IsBattleTransitionDone
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
diff --git a/asm/battle_transition.s b/asm/battle_transition.s
index a4b4d1666..207b4013f 100644
--- a/asm/battle_transition.s
+++ b/asm/battle_transition.s
@@ -6,774 +6,11 @@
.text
- thumb_func_start sub_811AABC
-sub_811AABC: @ 811AABC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811AAD0 @ =gMain
- ldr r1, _0811AAD4 @ =sub_8054398
- str r1, [r2, 0x4]
- bl sub_811AB20
- pop {r0}
- bx r0
- .align 2, 0
-_0811AAD0: .4byte gMain
-_0811AAD4: .4byte sub_8054398
- thumb_func_end sub_811AABC
-
- thumb_func_start sub_811AAD8
-sub_811AAD8: @ 811AAD8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_811AB20
- pop {r0}
- bx r0
- thumb_func_end sub_811AAD8
-
- thumb_func_start sub_811AAE8
-sub_811AAE8: @ 811AAE8
- push {lr}
- ldr r0, _0811AB0C @ =sub_811AB50
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _0811AB10 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r1, 0x26
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0811AB14
- movs r0, 0
- b _0811AB1C
- .align 2, 0
-_0811AB0C: .4byte sub_811AB50
-_0811AB10: .4byte gTasks
-_0811AB14:
- adds r0, r2, 0
- bl DestroyTask
- movs r0, 0x1
-_0811AB1C:
- pop {r1}
- bx r1
- thumb_func_end sub_811AAE8
-
- thumb_func_start sub_811AB20
-sub_811AB20: @ 811AB20
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0811AB48 @ =sub_811AB50
- movs r1, 0x2
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811AB4C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xA]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811AB48: .4byte sub_811AB50
-_0811AB4C: .4byte gTasks
- thumb_func_end sub_811AB20
-
- thumb_func_start sub_811AB50
-sub_811AB50: @ 811AB50
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811AB80 @ =gUnknown_083FD794
- ldr r2, _0811AB84 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811AB62:
- 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 _0811AB62
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811AB80: .4byte gUnknown_083FD794
-_0811AB84: .4byte gTasks
- thumb_func_end sub_811AB50
-
- thumb_func_start sub_811AB88
-sub_811AB88: @ 811AB88
- push {r4,lr}
- adds r4, r0, 0
- bl sub_807DE10
- ldr r0, _0811ABB4 @ =gPlttBufferFaded
- ldr r1, _0811ABB8 @ =gPlttBufferUnfaded
- ldr r2, _0811ABBC @ =0x04000100
- bl CpuSet
- ldr r1, _0811ABC0 @ =gUnknown_083FD70C
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- bne _0811ABC4
- movs r0, 0x2
- strh r0, [r4, 0x8]
- movs r0, 0x1
- b _0811ABD2
- .align 2, 0
-_0811ABB4: .4byte gPlttBufferFaded
-_0811ABB8: .4byte gPlttBufferUnfaded
-_0811ABBC: .4byte 0x04000100
-_0811ABC0: .4byte gUnknown_083FD70C
-_0811ABC4:
- movs r1, 0x4
- bl CreateTask
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
-_0811ABD2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811AB88
-
- thumb_func_start sub_811ABD8
-sub_811ABD8: @ 811ABD8
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _0811ABF8 @ =gUnknown_083FD70C
- 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 _0811ABFC
- movs r0, 0
- b _0811AC04
- .align 2, 0
-_0811ABF8: .4byte gUnknown_083FD70C
-_0811ABFC:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0x1
-_0811AC04:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811ABD8
-
- thumb_func_start sub_811AC0C
-sub_811AC0C: @ 811AC0C
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _0811AC30 @ =gBattleTransitionFuncs
- 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
- .align 2, 0
-_0811AC30: .4byte gBattleTransitionFuncs
- thumb_func_end sub_811AC0C
-
- thumb_func_start sub_811AC34
-sub_811AC34: @ 811AC34
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0
- strh r0, [r4, 0x26]
- ldr r1, _0811AC60 @ =gBattleTransitionFuncs
- 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 _0811AC58
- movs r0, 0x1
- strh r0, [r4, 0x26]
-_0811AC58:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811AC60: .4byte gBattleTransitionFuncs
- thumb_func_end sub_811AC34
-
- thumb_func_start sub_811AC64
-sub_811AC64: @ 811AC64
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- ldr r1, _0811AC98 @ =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 _0811AC9C
- 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_811D4C8
- b _0811ACAC
- .align 2, 0
-_0811AC98: .4byte gTasks
-_0811AC9C:
- bl sub_811D52C
- lsls r0, 24
- cmp r0, 0
- beq _0811ACAC
- adds r0, r4, 0
- bl DestroyTask
-_0811ACAC:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_811AC64
-
- thumb_func_start sub_811ACB4
-sub_811ACB4: @ 811ACB4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811ACE4 @ =gUnknown_083FD7A4
- ldr r2, _0811ACE8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811ACC6:
- 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 _0811ACC6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811ACE4: .4byte gUnknown_083FD7A4
-_0811ACE8: .4byte gTasks
- thumb_func_end sub_811ACB4
-
- thumb_func_start sub_811ACEC
-sub_811ACEC: @ 811ACEC
- ldr r2, _0811AD18 @ =REG_MOSAIC
- movs r1, 0
- strh r1, [r2]
- subs r2, 0x42
- ldrh r1, [r2]
- movs r3, 0x40
- orrs r1, r3
- strh r1, [r2]
- adds r2, 0x2
- ldrh r1, [r2]
- orrs r1, r3
- strh r1, [r2]
- adds r2, 0x2
- ldrh r1, [r2]
- orrs r1, r3
- strh r1, [r2]
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- movs r0, 0x1
- bx lr
- .align 2, 0
-_0811AD18: .4byte REG_MOSAIC
- thumb_func_end sub_811ACEC
-
- thumb_func_start sub_811AD1C
-sub_811AD1C: @ 811AD1C
- 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 _0811AD32
- subs r0, 0x1
- strh r0, [r4, 0xA]
- b _0811AD70
-_0811AD32:
- 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 _0811AD54
- movs r1, 0x1
- negs r1, r1
- str r2, [sp]
- adds r0, r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_0811AD54:
- ldr r2, _0811AD7C @ =REG_MOSAIC
- ldrh r0, [r4, 0xC]
- movs r1, 0xF
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- strh r0, [r2]
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0xE
- ble _0811AD70
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_0811AD70:
- movs r0, 0
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811AD7C: .4byte REG_MOSAIC
- thumb_func_end sub_811AD1C
-
- thumb_func_start sub_811AD80
-sub_811AD80: @ 811AD80
- push {lr}
- ldr r0, _0811ADA4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811AD9C
- ldr r0, _0811ADA8 @ =sub_811ACB4
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0811AD9C:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0811ADA4: .4byte gPaletteFade
-_0811ADA8: .4byte sub_811ACB4
- thumb_func_end sub_811AD80
-
- thumb_func_start sub_811ADAC
-sub_811ADAC: @ 811ADAC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811ADDC @ =gUnknown_083FD7B0
- ldr r2, _0811ADE0 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811ADBE:
- 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 _0811ADBE
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811ADDC: .4byte gUnknown_083FD7B0
-_0811ADE0: .4byte gTasks
- thumb_func_end sub_811ADAC
-
- thumb_func_start sub_811ADE4
-sub_811ADE4: @ 811ADE4
- push {r4,r5,lr}
- sub sp, 0x8
- adds r5, r0, 0
- bl sub_811D658
- 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, _0811AE54 @ =gUnknown_03005560
- ldr r1, _0811AE58 @ =0x0200c000
- 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_811D6E8
- ldr r0, _0811AE5C @ =sub_811AEE0
- bl SetVBlankCallback
- ldr r0, _0811AE60 @ =sub_811AF18
- bl SetHBlankCallback
- ldr r3, _0811AE64 @ =0x04000208
- ldrh r2, [r3]
- strh r4, [r3]
- ldr r4, _0811AE68 @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x3
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r2, _0811AE6C @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x18
- orrs r0, r1
- strh r0, [r2]
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r0, 0
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811AE54: .4byte gUnknown_03005560
-_0811AE58: .4byte 0x0200c000
-_0811AE5C: .4byte sub_811AEE0
-_0811AE60: .4byte sub_811AF18
-_0811AE64: .4byte 0x04000208
-_0811AE68: .4byte 0x04000200
-_0811AE6C: .4byte REG_DISPSTAT
- thumb_func_end sub_811ADE4
-
- thumb_func_start sub_811AE70
-sub_811AE70: @ 811AE70
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r4, _0811AED0 @ =0x0200c000
- ldrb r1, [r4]
- movs r1, 0
- strb r1, [r4]
- ldrh r1, [r0, 0xA]
- adds r1, 0x4
- strh r1, [r0, 0xA]
- ldrh r1, [r0, 0xC]
- adds r1, 0x8
- strh r1, [r0, 0xC]
- ldr r3, _0811AED4 @ =gUnknown_03004DE0
- movs r2, 0x14
- ldrsh r1, [r4, 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_811D6E8
- ldr r0, _0811AED8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811AEBE
- ldr r0, _0811AEDC @ =sub_811ADAC
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0811AEBE:
- ldrb r0, [r4]
- adds r0, 0x1
- ldrb r1, [r4]
- strb r0, [r4]
- movs r0, 0
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811AED0: .4byte 0x0200c000
-_0811AED4: .4byte gUnknown_03004DE0
-_0811AED8: .4byte gPaletteFade
-_0811AEDC: .4byte sub_811ADAC
- thumb_func_end sub_811AE70
-
- thumb_func_start sub_811AEE0
-sub_811AEE0: @ 811AEE0
- push {lr}
- bl sub_811D67C
- ldr r0, _0811AF08 @ =0x0200c000
- ldrb r0, [r0]
- cmp r0, 0
- beq _0811AF02
- ldr r1, _0811AF0C @ =0x040000d4
- ldr r0, _0811AF10 @ =gUnknown_03004DE0
- str r0, [r1]
- movs r2, 0xF0
- lsls r2, 3
- adds r0, r2
- str r0, [r1, 0x4]
- ldr r0, _0811AF14 @ =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811AF02:
- pop {r0}
- bx r0
- .align 2, 0
-_0811AF08: .4byte 0x0200c000
-_0811AF0C: .4byte 0x040000d4
-_0811AF10: .4byte gUnknown_03004DE0
-_0811AF14: .4byte 0x800000a0
- thumb_func_end sub_811AEE0
-
- thumb_func_start sub_811AF18
-sub_811AF18: @ 811AF18
- ldr r1, _0811AF38 @ =gUnknown_03004DE0
- ldr r0, _0811AF3C @ =REG_VCOUNT
- ldrh r0, [r0]
- lsls r0, 1
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r2
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, _0811AF40 @ =REG_BG1HOFS
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0811AF38: .4byte gUnknown_03004DE0
-_0811AF3C: .4byte REG_VCOUNT
-_0811AF40: .4byte REG_BG1HOFS
- thumb_func_end sub_811AF18
-
- thumb_func_start sub_811AF44
-sub_811AF44: @ 811AF44
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811AF74 @ =gUnknown_083FD7B8
- ldr r2, _0811AF78 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811AF56:
- 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 _0811AF56
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811AF74: .4byte gUnknown_083FD7B8
-_0811AF78: .4byte gTasks
- thumb_func_end sub_811AF44
-
- thumb_func_start sub_811AF7C
-sub_811AF7C: @ 811AF7C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- bl sub_811D658
- 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 r1, _0811AFE4 @ =0x0200c000
- ldr r0, _0811AFE8 @ =gUnknown_03005560
- movs r2, 0x16
- ldrsh r1, [r1, r2]
- movs r2, 0xA0
- lsls r2, 1
- bl memset
- ldr r0, _0811AFEC @ =sub_811B08C
- bl SetVBlankCallback
- ldr r0, _0811AFF0 @ =sub_811B0C4
- bl SetHBlankCallback
- ldr r3, _0811AFF4 @ =0x04000208
- ldrh r2, [r3]
- strh r4, [r3]
- ldr r4, _0811AFF8 @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x3
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r2, _0811AFFC @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x18
- orrs r0, r1
- strh r0, [r2]
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r0, 0
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811AFE4: .4byte 0x0200c000
-_0811AFE8: .4byte gUnknown_03005560
-_0811AFEC: .4byte sub_811B08C
-_0811AFF0: .4byte sub_811B0C4
-_0811AFF4: .4byte 0x04000208
-_0811AFF8: .4byte 0x04000200
-_0811AFFC: .4byte REG_DISPSTAT
- thumb_func_end sub_811AF7C
-
- thumb_func_start sub_811B000
-sub_811B000: @ 811B000
- push {r4-r7,lr}
- ldr r2, _0811B07C @ =0x0200c000
- 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
-_0811B026:
- lsrs r0, r4, 8
- asrs r1, r7, 16
- bl Sin
- ldr r2, _0811B080 @ =gUnknown_03004DE0
- lsls r1, r5, 1
- adds r1, r2
- ldr r6, _0811B07C @ =0x0200c000
- ldrh r2, [r6, 0x16]
- adds r0, r2
- strh r0, [r1]
- 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 _0811B026
- ldr r0, _0811B084 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811B06A
- ldr r0, _0811B088 @ =sub_811AF44
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0811B06A:
- ldrb r0, [r6]
- adds r0, 0x1
- ldrb r1, [r6]
- strb r0, [r6]
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B07C: .4byte 0x0200c000
-_0811B080: .4byte gUnknown_03004DE0
-_0811B084: .4byte gPaletteFade
-_0811B088: .4byte sub_811AF44
- thumb_func_end sub_811B000
- thumb_func_start sub_811B08C
-sub_811B08C: @ 811B08C
+ thumb_func_start VBlankCB_Phase2_Transition2
+VBlankCB_Phase2_Transition2: @ 811B08C
push {lr}
- bl sub_811D67C
+ bl VBlankCB_BattleTransition
ldr r0, _0811B0B4 @ =0x0200c000
ldrb r0, [r0]
cmp r0, 0
@@ -796,10 +33,10 @@ _0811B0B4: .4byte 0x0200c000
_0811B0B8: .4byte 0x040000d4
_0811B0BC: .4byte gUnknown_03004DE0
_0811B0C0: .4byte 0x800000a0
- thumb_func_end sub_811B08C
+ thumb_func_end VBlankCB_Phase2_Transition2
- thumb_func_start sub_811B0C4
-sub_811B0C4: @ 811B0C4
+ thumb_func_start HBlankCB_Phase2_Transition2
+HBlankCB_Phase2_Transition2: @ 811B0C4
ldr r1, _0811B0E4 @ =gUnknown_03004DE0
ldr r0, _0811B0E8 @ =REG_VCOUNT
ldrh r0, [r0]
@@ -820,10 +57,10 @@ sub_811B0C4: @ 811B0C4
_0811B0E4: .4byte gUnknown_03004DE0
_0811B0E8: .4byte REG_VCOUNT
_0811B0EC: .4byte REG_BG1VOFS
- thumb_func_end sub_811B0C4
+ thumb_func_end HBlankCB_Phase2_Transition2
- thumb_func_start sub_811B0F0
-sub_811B0F0: @ 811B0F0
+ thumb_func_start Phase2Task_Transition3
+Phase2Task_Transition3: @ 811B0F0
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -850,7 +87,7 @@ _0811B102:
.align 2, 0
_0811B120: .4byte gUnknown_083FD7C0
_0811B124: .4byte gTasks
- thumb_func_end sub_811B0F0
+ thumb_func_end Phase2Task_Transition3
thumb_func_start sub_811B128
sub_811B128: @ 811B128
@@ -1264,7 +501,7 @@ _0811B426:
strh r0, [r1, 0xA]
ldrh r0, [r1, 0xA]
bl sub_811D6D4
- ldr r0, _0811B4A0 @ =sub_811B0F0
+ ldr r0, _0811B4A0 @ =Phase2Task_Transition3
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -1296,7 +533,7 @@ _0811B490: .4byte gUnknown_03004DE0
_0811B494: .4byte 0x040000b0
_0811B498: .4byte 0x0000c5ff
_0811B49C: .4byte 0x00007fff
-_0811B4A0: .4byte sub_811B0F0
+_0811B4A0: .4byte Phase2Task_Transition3
_0811B4A4: .4byte sub_811B54C
thumb_func_end sub_811B3EC
@@ -1313,7 +550,7 @@ sub_811B4A8: @ 811B4A8
ands r0, r2
strh r0, [r1, 0xA]
ldrh r0, [r1, 0xA]
- bl sub_811D67C
+ bl VBlankCB_BattleTransition
ldr r2, _0811B50C @ =0x0200c000
ldrb r0, [r2]
cmp r0, 0
@@ -1399,8 +636,8 @@ _0811B570: .4byte REG_WIN0H
_0811B574: .4byte 0xa2400001
thumb_func_end sub_811B54C
- thumb_func_start sub_811B578
-sub_811B578: @ 811B578
+ thumb_func_start Phase2Task_Transition4
+Phase2Task_Transition4: @ 811B578
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -1427,7 +664,7 @@ _0811B58A:
.align 2, 0
_0811B5A8: .4byte gUnknown_083FD7D8
_0811B5AC: .4byte gTasks
- thumb_func_end sub_811B578
+ thumb_func_end Phase2Task_Transition4
thumb_func_start sub_811B5B0
sub_811B5B0: @ 811B5B0
@@ -1543,7 +780,7 @@ sub_811B688: @ 811B688
cmp r0, 0
bne _0811B6A8
bl sub_811D6D4
- ldr r0, _0811B6B0 @ =sub_811B578
+ ldr r0, _0811B6B0 @ =Phase2Task_Transition4
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -1553,7 +790,7 @@ _0811B6A8:
pop {r1}
bx r1
.align 2, 0
-_0811B6B0: .4byte sub_811B578
+_0811B6B0: .4byte Phase2Task_Transition4
thumb_func_end sub_811B688
thumb_func_start FldEff_Pokeball
@@ -1711,8 +948,8 @@ _0811B7E0: .4byte REG_BG0CNT
_0811B7E4: .4byte 0x0000f001
thumb_func_end sub_811B720
- thumb_func_start sub_811B7E8
-sub_811B7E8: @ 811B7E8
+ thumb_func_start Phase2Task_Transition5
+Phase2Task_Transition5: @ 811B7E8
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -1739,7 +976,7 @@ _0811B7FA:
.align 2, 0
_0811B818: .4byte gUnknown_083FD7F8
_0811B81C: .4byte gTasks
- thumb_func_end sub_811B7E8
+ thumb_func_end Phase2Task_Transition5
thumb_func_start sub_811B820
sub_811B820: @ 811B820
@@ -2257,7 +1494,7 @@ sub_811BBEC: @ 811BBEC
strh r0, [r1, 0xA]
ldrh r0, [r1, 0xA]
bl sub_811D6D4
- ldr r0, _0811BC28 @ =sub_811B7E8
+ ldr r0, _0811BC28 @ =Phase2Task_Transition5
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -2269,7 +1506,7 @@ sub_811BBEC: @ 811BBEC
_0811BC1C: .4byte 0x040000b0
_0811BC20: .4byte 0x0000c5ff
_0811BC24: .4byte 0x00007fff
-_0811BC28: .4byte sub_811B7E8
+_0811BC28: .4byte Phase2Task_Transition5
thumb_func_end sub_811BBEC
thumb_func_start sub_811BC2C
@@ -2285,7 +1522,7 @@ sub_811BC2C: @ 811BC2C
ands r0, r1
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xA]
- bl sub_811D67C
+ bl VBlankCB_BattleTransition
ldr r2, _0811BCA0 @ =0x0200c000
ldrb r0, [r2]
cmp r0, 0
@@ -2338,8 +1575,8 @@ _0811BCB4: .4byte REG_WIN0H
_0811BCB8: .4byte 0xa2400001
thumb_func_end sub_811BC2C
- thumb_func_start sub_811BCBC
-sub_811BCBC: @ 811BCBC
+ thumb_func_start Phase2Task_Transition6
+Phase2Task_Transition6: @ 811BCBC
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -2366,7 +1603,7 @@ _0811BCCE:
.align 2, 0
_0811BCEC: .4byte gUnknown_083FD814
_0811BCF0: .4byte gTasks
- thumb_func_end sub_811BCBC
+ thumb_func_end Phase2Task_Transition6
thumb_func_start sub_811BCF4
sub_811BCF4: @ 811BCF4
@@ -2500,7 +1737,7 @@ _0811BDEC:
ands r0, r1
cmp r0, 0
bne _0811BE0E
- ldr r0, _0811BE38 @ =sub_811BCBC
+ ldr r0, _0811BE38 @ =Phase2Task_Transition6
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -2523,13 +1760,13 @@ _0811BE28: .4byte 0x0200c000
_0811BE2C: .4byte 0x1fff0000
_0811BE30: .4byte gUnknown_03004DE0
_0811BE34: .4byte gPaletteFade
-_0811BE38: .4byte sub_811BCBC
+_0811BE38: .4byte Phase2Task_Transition6
thumb_func_end sub_811BD60
thumb_func_start sub_811BE3C
sub_811BE3C: @ 811BE3C
push {lr}
- bl sub_811D67C
+ bl VBlankCB_BattleTransition
ldr r0, _0811BE64 @ =0x0200c000
ldrb r0, [r0]
cmp r0, 0
@@ -2578,8 +1815,8 @@ _0811BE98: .4byte REG_VCOUNT
_0811BE9C: .4byte REG_BG1VOFS
thumb_func_end sub_811BE74
- thumb_func_start sub_811BEA0
-sub_811BEA0: @ 811BEA0
+ thumb_func_start Phase2Task_Transition7
+Phase2Task_Transition7: @ 811BEA0
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -2606,7 +1843,7 @@ _0811BEB2:
.align 2, 0
_0811BED0: .4byte gUnknown_083FD81C
_0811BED4: .4byte gTasks
- thumb_func_end sub_811BEA0
+ thumb_func_end Phase2Task_Transition7
thumb_func_start sub_811BED8
sub_811BED8: @ 811BED8
@@ -2746,7 +1983,7 @@ sub_811BFC4: @ 811BFC4
strh r0, [r1, 0xA]
ldrh r0, [r1, 0xA]
bl sub_811D6D4
- ldr r0, _0811C000 @ =sub_811BEA0
+ ldr r0, _0811C000 @ =Phase2Task_Transition7
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -2758,7 +1995,7 @@ sub_811BFC4: @ 811BFC4
_0811BFF4: .4byte 0x040000b0
_0811BFF8: .4byte 0x0000c5ff
_0811BFFC: .4byte 0x00007fff
-_0811C000: .4byte sub_811BEA0
+_0811C000: .4byte Phase2Task_Transition7
thumb_func_end sub_811BFC4
thumb_func_start sub_811C004
@@ -2774,7 +2011,7 @@ sub_811C004: @ 811C004
ands r0, r1
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xA]
- bl sub_811D67C
+ bl VBlankCB_BattleTransition
ldr r2, _0811C06C @ =0x0200c000
ldrb r0, [r2]
cmp r0, 0
@@ -2823,8 +2060,8 @@ _0811C084: .4byte REG_WIN0H
_0811C088: .4byte 0xa2400001
thumb_func_end sub_811C004
- thumb_func_start sub_811C08C
-sub_811C08C: @ 811C08C
+ thumb_func_start Phase2Task_Transition12
+Phase2Task_Transition12: @ 811C08C
push {lr}
lsls r0, 24
lsrs r0, 24
@@ -2840,10 +2077,10 @@ sub_811C08C: @ 811C08C
bx r0
.align 2, 0
_0811C0A8: .4byte gTasks
- thumb_func_end sub_811C08C
+ thumb_func_end Phase2Task_Transition12
- thumb_func_start sub_811C0AC
-sub_811C0AC: @ 811C0AC
+ thumb_func_start Phase2Task_Transition13
+Phase2Task_Transition13: @ 811C0AC
push {lr}
lsls r0, 24
lsrs r0, 24
@@ -2859,10 +2096,10 @@ sub_811C0AC: @ 811C0AC
bx r0
.align 2, 0
_0811C0C8: .4byte gTasks
- thumb_func_end sub_811C0AC
+ thumb_func_end Phase2Task_Transition13
- thumb_func_start sub_811C0CC
-sub_811C0CC: @ 811C0CC
+ thumb_func_start Phase2Task_Transition14
+Phase2Task_Transition14: @ 811C0CC
push {lr}
lsls r0, 24
lsrs r0, 24
@@ -2878,10 +2115,10 @@ sub_811C0CC: @ 811C0CC
bx r0
.align 2, 0
_0811C0E8: .4byte gTasks
- thumb_func_end sub_811C0CC
+ thumb_func_end Phase2Task_Transition14
- thumb_func_start sub_811C0EC
-sub_811C0EC: @ 811C0EC
+ thumb_func_start Phase2Task_Transition15
+Phase2Task_Transition15: @ 811C0EC
push {lr}
lsls r0, 24
lsrs r0, 24
@@ -2897,10 +2134,10 @@ sub_811C0EC: @ 811C0EC
bx r0
.align 2, 0
_0811C108: .4byte gTasks
- thumb_func_end sub_811C0EC
+ thumb_func_end Phase2Task_Transition15
- thumb_func_start sub_811C10C
-sub_811C10C: @ 811C10C
+ thumb_func_start Phase2Task_Transition16
+Phase2Task_Transition16: @ 811C10C
push {lr}
lsls r0, 24
lsrs r0, 24
@@ -2916,7 +2153,7 @@ sub_811C10C: @ 811C10C
bx r0
.align 2, 0
_0811C128: .4byte gTasks
- thumb_func_end sub_811C10C
+ thumb_func_end Phase2Task_Transition16
thumb_func_start sub_811C12C
sub_811C12C: @ 811C12C
@@ -3614,7 +2851,7 @@ sub_811C670: @ 811C670
ands r0, r1
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xA]
- bl sub_811D67C
+ bl VBlankCB_BattleTransition
ldr r2, _0811C6E0 @ =0x0200c000
ldrb r0, [r2]
cmp r0, 0
@@ -3679,7 +2916,7 @@ sub_811C700: @ 811C700
ands r0, r1
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xA]
- bl sub_811D67C
+ bl VBlankCB_BattleTransition
ldr r2, _0811C75C @ =0x0200c000
ldrb r0, [r2]
cmp r0, 0
@@ -4114,8 +3351,8 @@ sub_811CA44: @ 811CA44
_0811CA58: .4byte gSprites
thumb_func_end sub_811CA44
- thumb_func_start sub_811CA5C
-sub_811CA5C: @ 811CA5C
+ thumb_func_start Phase2Task_Transition8
+Phase2Task_Transition8: @ 811CA5C
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -4142,7 +3379,7 @@ _0811CA6E:
.align 2, 0
_0811CA8C: .4byte gUnknown_083FD8A4
_0811CA90: .4byte gTasks
- thumb_func_end sub_811CA5C
+ thumb_func_end Phase2Task_Transition8
thumb_func_start sub_811CA94
sub_811CA94: @ 811CA94
@@ -4331,7 +3568,7 @@ sub_811CBE8: @ 811CBE8
strh r0, [r1, 0xA]
ldrh r0, [r1, 0xA]
bl sub_811D6D4
- ldr r0, _0811CC24 @ =sub_811CA5C
+ ldr r0, _0811CC24 @ =Phase2Task_Transition8
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -4343,7 +3580,7 @@ sub_811CBE8: @ 811CBE8
_0811CC18: .4byte 0x040000b0
_0811CC1C: .4byte 0x0000c5ff
_0811CC20: .4byte 0x00007fff
-_0811CC24: .4byte sub_811CA5C
+_0811CC24: .4byte Phase2Task_Transition8
thumb_func_end sub_811CBE8
thumb_func_start sub_811CC28
@@ -4359,7 +3596,7 @@ sub_811CC28: @ 811CC28
ands r0, r1
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xA]
- bl sub_811D67C
+ bl VBlankCB_BattleTransition
ldr r2, _0811CC90 @ =REG_WININ
ldr r1, _0811CC94 @ =0x0200c000
ldrh r0, [r1, 0x2]
@@ -4432,8 +3669,8 @@ _0811CCD4: .4byte REG_VCOUNT
_0811CCD8: .4byte REG_BG1HOFS
thumb_func_end sub_811CCB0
- thumb_func_start sub_811CCDC
-sub_811CCDC: @ 811CCDC
+ thumb_func_start Phase2Task_Transition9
+Phase2Task_Transition9: @ 811CCDC
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -4460,7 +3697,7 @@ _0811CCEE:
.align 2, 0
_0811CD0C: .4byte gUnknown_083FD8B0
_0811CD10: .4byte gTasks
- thumb_func_end sub_811CCDC
+ thumb_func_end Phase2Task_Transition9
thumb_func_start sub_811CD14
sub_811CD14: @ 811CD14
@@ -4673,7 +3910,7 @@ sub_811CEB0: @ 811CEB0
cmp r0, 0x10
bls _0811CED4
bl sub_811D6D4
- ldr r0, _0811CEE0 @ =sub_811CCDC
+ ldr r0, _0811CEE0 @ =Phase2Task_Transition9
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -4684,7 +3921,7 @@ _0811CED4:
bx r1
.align 2, 0
_0811CEDC: .4byte 0x0200c000
-_0811CEE0: .4byte sub_811CCDC
+_0811CEE0: .4byte Phase2Task_Transition9
thumb_func_end sub_811CEB0
thumb_func_start sub_811CEE4
@@ -4700,7 +3937,7 @@ sub_811CEE4: @ 811CEE4
ands r0, r1
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xA]
- bl sub_811D67C
+ bl VBlankCB_BattleTransition
ldr r2, _0811CF54 @ =REG_BLDCNT
ldr r1, _0811CF58 @ =0x0200c000
ldrh r0, [r1, 0xE]
@@ -4755,7 +3992,7 @@ _0811CF70: .4byte 0xa2400001
thumb_func_start sub_811CF74
sub_811CF74: @ 811CF74
push {lr}
- bl sub_811D67C
+ bl VBlankCB_BattleTransition
ldr r1, _0811CFA4 @ =REG_BLDY
ldr r2, _0811CFA8 @ =0x0200c000
ldrh r0, [r2, 0x12]
@@ -4928,8 +4165,8 @@ _0811D0B0: .4byte gUnknown_03004DE0
_0811D0B4: .4byte 0x0200c000
thumb_func_end sub_811CFD0
- thumb_func_start sub_811D0B8
-sub_811D0B8: @ 811D0B8
+ thumb_func_start Phase2Task_Transition10
+Phase2Task_Transition10: @ 811D0B8
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -4956,7 +4193,7 @@ _0811D0CA:
.align 2, 0
_0811D0E8: .4byte gUnknown_083FD8D4
_0811D0EC: .4byte gTasks
- thumb_func_end sub_811D0B8
+ thumb_func_end Phase2Task_Transition10
thumb_func_start sub_811D0F0
sub_811D0F0: @ 811D0F0
@@ -5053,7 +4290,7 @@ sub_811D19C: @ 811D19C
cmp r1, 0
bne _0811D1BC
bl sub_811D6D4
- ldr r0, _0811D1C4 @ =sub_811D0B8
+ ldr r0, _0811D1C4 @ =Phase2Task_Transition10
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -5063,11 +4300,11 @@ _0811D1BC:
pop {r1}
bx r1
.align 2, 0
-_0811D1C4: .4byte sub_811D0B8
+_0811D1C4: .4byte Phase2Task_Transition10
thumb_func_end sub_811D19C
- thumb_func_start sub_811D1C8
-sub_811D1C8: @ 811D1C8
+ thumb_func_start Phase2Task_Transition11
+Phase2Task_Transition11: @ 811D1C8
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -5094,7 +4331,7 @@ _0811D1DA:
.align 2, 0
_0811D1F8: .4byte gUnknown_083FD8E0
_0811D1FC: .4byte gTasks
- thumb_func_end sub_811D1C8
+ thumb_func_end Phase2Task_Transition11
thumb_func_start sub_811D200
sub_811D200: @ 811D200
@@ -5342,7 +4579,7 @@ sub_811D3B0: @ 811D3B0
strh r0, [r1, 0xA]
ldrh r0, [r1, 0xA]
bl sub_811D6D4
- ldr r0, _0811D3F8 @ =sub_811D1C8
+ ldr r0, _0811D3F8 @ =Phase2Task_Transition11
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -5353,7 +4590,7 @@ sub_811D3B0: @ 811D3B0
_0811D3EC: .4byte 0x040000b0
_0811D3F0: .4byte 0x0000c5ff
_0811D3F4: .4byte 0x00007fff
-_0811D3F8: .4byte sub_811D1C8
+_0811D3F8: .4byte Phase2Task_Transition11
_0811D3FC:
ldrh r0, [r2, 0x8]
adds r0, 0x1
@@ -5407,7 +4644,7 @@ sub_811D438: @ 811D438
ands r0, r1
strh r0, [r4, 0xA]
ldrh r0, [r4, 0xA]
- bl sub_811D67C
+ bl VBlankCB_BattleTransition
ldr r2, _0811D4AC @ =0x0200c000
ldrb r0, [r2]
cmp r0, 0
@@ -5695,15 +4932,15 @@ _0811D674: .4byte gUnknown_083FD708
_0811D678: .4byte 0x0200c014
thumb_func_end sub_811D658
- thumb_func_start sub_811D67C
-sub_811D67C: @ 811D67C
+ thumb_func_start VBlankCB_BattleTransition
+VBlankCB_BattleTransition: @ 811D67C
push {lr}
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
pop {r0}
bx r0
- thumb_func_end sub_811D67C
+ thumb_func_end VBlankCB_BattleTransition
thumb_func_start sub_811D690
sub_811D690: @ 811D690
diff --git a/data/battle_transition.s b/data/battle_transition.s
index 0d463ddef..11d3bfe37 100644
--- a/data/battle_transition.s
+++ b/data/battle_transition.s
@@ -36,67 +36,67 @@ gUnknown_083FD708:: @ 83FD708
.4byte 0x0200c000
.align 2
-gUnknown_083FD70C:: @ 83FD70C
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
-
- .align 2
-gBattleTransitionFuncs:: @ 83FD750
- .4byte sub_811ACB4
- .4byte sub_811ADAC
- .4byte sub_811AF44
- .4byte sub_811B0F0
- .4byte sub_811B578
- .4byte sub_811B7E8
- .4byte sub_811BCBC
- .4byte sub_811BEA0
- .4byte sub_811CA5C
- .4byte sub_811CCDC
- .4byte sub_811D0B8
- .4byte sub_811D1C8
- .4byte sub_811C08C
- .4byte sub_811C0AC
- .4byte sub_811C0CC
- .4byte sub_811C0EC
- .4byte sub_811C10C
-
- .align 2
-gUnknown_083FD794:: @ 83FD794
- .4byte sub_811AB88
- .4byte sub_811ABD8
- .4byte sub_811AC0C
- .4byte sub_811AC34
-
- .align 2
-gUnknown_083FD7A4:: @ 83FD7A4
- .4byte sub_811ACEC
- .4byte sub_811AD1C
- .4byte sub_811AD80
-
- .align 2
-gUnknown_083FD7B0:: @ 83FD7B0
- .4byte sub_811ADE4
- .4byte sub_811AE70
-
- .align 2
-gUnknown_083FD7B8:: @ 83FD7B8
- .4byte sub_811AF7C
- .4byte sub_811B000
+sPhase1_Tasks:: @ 83FD70C
+ .4byte Phase1Task_TransitionAll
+ .4byte Phase1Task_TransitionAll
+ .4byte Phase1Task_TransitionAll
+ .4byte Phase1Task_TransitionAll
+ .4byte Phase1Task_TransitionAll
+ .4byte Phase1Task_TransitionAll
+ .4byte Phase1Task_TransitionAll
+ .4byte Phase1Task_TransitionAll
+ .4byte Phase1Task_TransitionAll
+ .4byte Phase1Task_TransitionAll
+ .4byte Phase1Task_TransitionAll
+ .4byte Phase1Task_TransitionAll
+ .4byte Phase1Task_TransitionAll
+ .4byte Phase1Task_TransitionAll
+ .4byte Phase1Task_TransitionAll
+ .4byte Phase1Task_TransitionAll
+ .4byte Phase1Task_TransitionAll
+
+ .align 2
+sPhase2_Tasks:: @ 83FD750
+ .4byte Phase2Task_Transition0
+ .4byte Phase2Task_Transition1
+ .4byte Phase2Task_Transition2
+ .4byte Phase2Task_Transition3
+ .4byte Phase2Task_Transition4
+ .4byte Phase2Task_Transition5
+ .4byte Phase2Task_Transition6
+ .4byte Phase2Task_Transition7
+ .4byte Phase2Task_Transition8
+ .4byte Phase2Task_Transition9
+ .4byte Phase2Task_Transition10
+ .4byte Phase2Task_Transition11
+ .4byte Phase2Task_Transition12
+ .4byte Phase2Task_Transition13
+ .4byte Phase2Task_Transition14
+ .4byte Phase2Task_Transition15
+ .4byte Phase2Task_Transition16
+
+ .align 2
+sMainTransitionPhases:: @ 83FD794
+ .4byte Transition_Phase1
+ .4byte Transition_WaitForPhase1
+ .4byte Transition_Phase2
+ .4byte Transition_WaitForPhase2
+
+ .align 2
+sPhase2_Transition0_Funcs:: @ 83FD7A4
+ .4byte Phase2_Transition0_Func1
+ .4byte Phase2_Transition0_Func2
+ .4byte Phase2_Transition0_Func3
+
+ .align 2
+sPhase2_Transition1_Funcs:: @ 83FD7B0
+ .4byte Phase2_Transition1_Func1
+ .4byte Phase2_Transition1_Func2
+
+ .align 2
+sPhase2_Transition2_Funcs:: @ 83FD7B8
+ .4byte Phase2_Transition2_Func1
+ .4byte Phase2_Transition2_Func2
.align 2
gUnknown_083FD7C0:: @ 83FD7C0
diff --git a/include/battle_transition.h b/include/battle_transition.h
index b01378505..bc78bd06e 100644
--- a/include/battle_transition.h
+++ b/include/battle_transition.h
@@ -3,6 +3,8 @@
void sub_811AABC(u8);
void sub_811AAD8(u8);
-u8 sub_811AAE8(void);
+bool8 IsBattleTransitionDone(void);
+
+#define B_TRANSITION_WILD 8
#endif // GUARD_BATTLE_TRANSITION_H
diff --git a/include/rom4.h b/include/rom4.h
index 8d5b1bfa2..daccad7e9 100644
--- a/include/rom4.h
+++ b/include/rom4.h
@@ -120,7 +120,7 @@ bool32 is_c1_link_related_active(void);
// c1_overworld_normal
// c1_overworld
// c2_overworld_basic
-// sub_8054398
+void sub_8054398(void);
void c2_overworld(void);
// set_callback1
// sub_80543DC
diff --git a/ld_script.txt b/ld_script.txt
index babcf5861..ed18398b2 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -227,6 +227,7 @@ SECTIONS {
src/coins.o(.text);
src/landmark.o(.text);
src/fldeff_strength.o(.text);
+ src/battle_transition.o(.text);
asm/battle_transition.o(.text);
src/battle_811DA74.o(.text);
asm/battle_message.o(.text);
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 04674e739..31c127416 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -438,7 +438,7 @@ void task01_battle_start(u8 taskId)
}
break;
case 1:
- if (sub_811AAE8() == TRUE)
+ if (IsBattleTransitionDone() == TRUE)
{
SetMainCallback2(sub_800E7C4);
prev_quest_postbuffer_cursor_backup_reset();
@@ -827,7 +827,7 @@ void CB2_StartFirstBattle(void)
UpdatePaletteFade();
RunTasks();
- if (sub_811AAE8() == TRUE)
+ if (IsBattleTransitionDone() == TRUE)
{
gBattleTypeFlags = BATTLE_TYPE_FIRST_BATTLE;
gMain.savedCallback = HandleFirstBattleEnd;
diff --git a/src/battle_transition.c b/src/battle_transition.c
new file mode 100644
index 000000000..35d3baf0c
--- /dev/null
+++ b/src/battle_transition.c
@@ -0,0 +1,302 @@
+#include "global.h"
+#include "main.h"
+#include "rom4.h"
+#include "task.h"
+#include "palette.h"
+#include "trig.h"
+
+void sub_807DE10(void);
+void dp12_8087EA4(void);
+
+typedef bool8 (*TransitionState)(struct Task* task);
+
+extern const TransitionState sMainTransitionPhases[];
+extern const TransitionState sPhase2_Transition0_Funcs[];
+extern const TransitionState sPhase2_Transition1_Funcs[];
+extern const TransitionState sPhase2_Transition2_Funcs[];
+
+extern const TaskFunc sPhase1_Tasks[];
+extern const TaskFunc sPhase2_Tasks[];
+
+extern u8 ewram[];
+extern s16 gUnknown_03005560[];
+
+extern u16 gUnknown_03004DE0[][0x3C0];
+
+struct TransitionData
+{
+ vs8 field_0; // now that's interesting
+ s8 field_1;
+ s16 field_2;
+ s16 field_4;
+ s16 field_6;
+ s16 field_8;
+ s16 field_A;
+ s16 field_C;
+ s16 field_E;
+ s16 field_10;
+ s16 field_12;
+ s16 field_14;
+ s16 field_16;
+ s16 field_18;
+};
+
+#define TRANSITION_STRUCT (*(struct TransitionData *) (&ewram[0xC000]))
+
+// this file's functions
+static void LaunchBattleTransitionTask(u8 transitionID);
+static void Task_BattleTransitionMain(u8 taskID);
+void sub_811D4C8(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4);
+bool8 sub_811D52C(void);
+void sub_811D658(void);
+static void VBlankCB_Phase2_Transition1(void);
+static void HBlankCB_Phase2_Transition1(void);
+void VBlankCB_Phase2_Transition2(void);
+void HBlankCB_Phase2_Transition2(void);
+void VBlankCB_BattleTransition(void);
+void sub_811D6E8(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5);
+
+void sub_811AABC(u8 transitionID)
+{
+ gMain.callback2 = sub_8054398;
+ LaunchBattleTransitionTask(transitionID);
+}
+
+void sub_811AAD8(u8 transitionID)
+{
+ LaunchBattleTransitionTask(transitionID);
+}
+
+#define tState data[0]
+#define tTransitionID data[1]
+#define tTransitionDone data[15]
+
+bool8 IsBattleTransitionDone(void)
+{
+ u8 taskID = FindTaskIdByFunc(Task_BattleTransitionMain);
+ if (gTasks[taskID].tTransitionDone)
+ {
+ DestroyTask(taskID);
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static void LaunchBattleTransitionTask(u8 transitionID)
+{
+ u8 taskID = CreateTask(Task_BattleTransitionMain, 2);
+ gTasks[taskID].tTransitionID = transitionID;
+}
+
+static void Task_BattleTransitionMain(u8 taskID)
+{
+ while (sMainTransitionPhases[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+bool8 Transition_Phase1(struct Task* task)
+{
+ sub_807DE10();
+ CpuSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x4000100);
+ if (sPhase1_Tasks[task->tTransitionID] != NULL)
+ {
+ CreateTask(sPhase1_Tasks[task->tTransitionID], 4);
+ task->tState++;
+ return 0;
+ }
+ else
+ {
+ task->tState = 2;
+ return 1;
+ }
+}
+
+bool8 Transition_WaitForPhase1(struct Task* task)
+{
+ if (FindTaskIdByFunc(sPhase1_Tasks[task->tTransitionID]) == 0xFF)
+ {
+ task->tState++;
+ return 1;
+ }
+ else
+ return 0;
+}
+
+bool8 Transition_Phase2(struct Task* task)
+{
+ CreateTask(sPhase2_Tasks[task->tTransitionID], 0);
+ task->tState++;
+ return 0;
+}
+
+bool8 Transition_WaitForPhase2(struct Task* task)
+{
+ task->tTransitionDone = 0;
+ if (FindTaskIdByFunc(sPhase2_Tasks[task->tTransitionID]) == 0xFF)
+ task->tTransitionDone = 1;
+ return 0;
+}
+
+void Phase1Task_TransitionAll(u8 taskID)
+{
+ if (gTasks[taskID].tState == 0)
+ {
+ gTasks[taskID].tState++;
+ sub_811D4C8(0, 0, 3, 2, 2);
+ }
+ else if (sub_811D52C())
+ DestroyTask(taskID);
+}
+
+void Phase2Task_Transition0(u8 taskID)
+{
+ while (sPhase2_Transition0_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+bool8 Phase2_Transition0_Func1(struct Task* task)
+{
+ REG_MOSAIC = 0;
+ REG_BG1CNT |= 0x40;
+ REG_BG2CNT |= 0x40;
+ REG_BG3CNT |= 0x40;
+ task->tState++;
+ return 1;
+}
+
+bool8 Phase2_Transition0_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);
+ REG_MOSAIC = (task->data[2] & 15) * 17;
+ if (task->data[2] > 14)
+ task->tState++;
+ }
+ return 0;
+}
+
+bool8 Phase2_Transition0_Func3(struct Task* task)
+{
+ if (!gPaletteFade.active)
+ {
+ u8 taskID = FindTaskIdByFunc(Phase2Task_Transition0);
+ DestroyTask(taskID);
+ }
+ return 0;
+}
+
+void Phase2Task_Transition1(u8 taskID)
+{
+ while (sPhase2_Transition1_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+bool8 Phase2_Transition1_Func1(struct Task* task)
+{
+ u16 savedIME;
+
+ sub_811D658();
+ dp12_8087EA4();
+ BeginNormalPaletteFade(-1, 4, 0, 0x10, 0);
+ sub_811D6E8(gUnknown_03005560, TRANSITION_STRUCT.field_14, 0, 2, 0, 160);
+
+ SetVBlankCallback(VBlankCB_Phase2_Transition1);
+ SetHBlankCallback(HBlankCB_Phase2_Transition1);
+
+ savedIME = REG_IME;
+ REG_IME = 0;
+ REG_IE |= 3;
+ REG_IME = savedIME;
+ REG_DISPSTAT |= 0x18;
+
+ task->tState++;
+ return 0;
+}
+
+bool8 Phase2_Transition1_Func2(struct Task* task)
+{
+ TRANSITION_STRUCT.field_0 = 0;
+ task->data[1] += 4;
+ task->data[2] += 8;
+
+ sub_811D6E8(gUnknown_03004DE0[0], TRANSITION_STRUCT.field_14, task->data[1], 2, task->data[2], 160);
+
+ if (!gPaletteFade.active)
+ {
+ u8 taskID = FindTaskIdByFunc(Phase2Task_Transition1);
+ DestroyTask(taskID);
+ }
+
+ TRANSITION_STRUCT.field_0++;
+ return 0;
+}
+
+static void VBlankCB_Phase2_Transition1(void)
+{
+ VBlankCB_BattleTransition();
+ if (TRANSITION_STRUCT.field_0)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+}
+
+static void HBlankCB_Phase2_Transition1(void)
+{
+ u16 var = gUnknown_03004DE0[1][REG_VCOUNT];
+ REG_BG1HOFS = var;
+ REG_BG2HOFS = var;
+ REG_BG3HOFS = var;
+}
+
+void Phase2Task_Transition2(u8 taskID)
+{
+ while (sPhase2_Transition2_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+bool8 Phase2_Transition2_Func1(struct Task* task)
+{
+ u16 savedIME;
+
+ sub_811D658();
+ dp12_8087EA4();
+
+ BeginNormalPaletteFade(-1, 4, 0, 0x10, 0);
+ memset(gUnknown_03005560, TRANSITION_STRUCT.field_16, 0x140);
+
+ SetVBlankCallback(VBlankCB_Phase2_Transition2);
+ SetHBlankCallback(HBlankCB_Phase2_Transition2);
+
+ savedIME = REG_IME;
+ REG_IME = 0;
+ REG_IE |= 3;
+ REG_IME = savedIME;
+ REG_DISPSTAT |= 0x18;
+
+ task->tState++;
+ return 0;
+}
+
+bool8 Phase2_Transition2_Func2(struct Task* task)
+{
+ u8 i;
+ u16 r3, r4;
+
+ TRANSITION_STRUCT.field_0 = 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_03004DE0[0][i] = Sin(var, r3) + TRANSITION_STRUCT.field_16;
+ }
+
+ if (!gPaletteFade.active)
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Transition2));
+
+ TRANSITION_STRUCT.field_0++;
+ return 0;
+}