summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/credits.s2713
-rw-r--r--data/credits.s82
-rw-r--r--include/asm.inc.h2
-rw-r--r--ld_script.txt1
-rw-r--r--src/credits.c2047
5 files changed, 2086 insertions, 2759 deletions
diff --git a/asm/credits.s b/asm/credits.s
deleted file mode 100644
index 860015e46..000000000
--- a/asm/credits.s
+++ /dev/null
@@ -1,2713 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start task_d_8144514
-task_d_8144514: @ 8144514
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r6, _08144548 @ =0x0201c000
- ldr r3, _0814454C @ =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r2, r0, r3
- movs r1, 0x8
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- beq _08144550
- cmp r0, 0x1
- bgt _0814453C
- b _08144658
-_0814453C:
- cmp r0, 0x2
- beq _08144584
- cmp r0, 0x3
- bne _08144546
- b _08144644
-_08144546:
- b _08144658
- .align 2, 0
-_08144548: .4byte 0x0201c000
-_0814454C: .4byte gTasks
-_08144550:
- adds r0, r6, 0
- adds r0, 0x8A
- ldrh r0, [r0]
- cmp r0, 0
- bne _0814456E
- movs r4, 0xA
- ldrsh r0, [r2, r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r3
- movs r4, 0x24
- ldrsh r0, [r1, r4]
- cmp r0, 0
- beq _08144658
-_0814456E:
- movs r0, 0xA
- ldrsh r1, [r2, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r3
- movs r1, 0
- strh r1, [r0, 0x24]
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- b _08144656
-_08144584:
- adds r0, r6, 0
- adds r0, 0x88
- ldrh r1, [r0]
- mov r9, r0
- cmp r1, 0x44
- beq _08144658
- movs r4, 0xA
- ldrsh r1, [r2, r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r3
- ldr r1, [r0]
- ldr r0, _081445EC @ =sub_8143B68
- cmp r1, r0
- bne _08144658
- adds r7, r6, 0
- adds r7, 0x8C
- ldrh r0, [r7]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- ldr r4, _081445F0 @ =gUnknown_0840CA00
- adds r5, r6, 0
- adds r5, 0x8A
- ldrh r3, [r5]
- lsls r2, r3, 1
- adds r1, r2, r4
- ldrb r1, [r1]
- adds r4, 0x1
- adds r2, r4
- ldrb r2, [r2]
- bl sub_81456B4
- lsls r0, 24
- lsrs r2, r0, 24
- ldrh r1, [r7]
- adds r0, r6, 0
- adds r0, 0x8E
- ldrh r0, [r0]
- subs r0, 0x1
- cmp r1, r0
- bge _081445F8
- adds r0, r1, 0x1
- strh r0, [r7]
- ldr r1, _081445F4 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- movs r1, 0x32
- b _0814460A
- .align 2, 0
-_081445EC: .4byte task_a_8143B68
-_081445F0: .4byte gUnknown_0840CA00
-_081445F4: .4byte gSprites
-_081445F8:
- movs r0, 0
- strh r0, [r7]
- ldr r1, _08144620 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- movs r1, 0x80
- lsls r1, 2
-_0814460A:
- strh r1, [r0, 0x34]
- mov r1, r9
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- ldrh r0, [r5]
- cmp r0, 0x2
- bne _08144624
- movs r0, 0
- b _08144626
- .align 2, 0
-_08144620: .4byte gSprites
-_08144624:
- adds r0, 0x1
-_08144626:
- strh r0, [r5]
- ldr r0, _08144640 @ =gTasks
- mov r2, r8
- lsls r1, r2, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0x32
- strh r0, [r1, 0xE]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _08144658
- .align 2, 0
-_08144640: .4byte gTasks
-_08144644:
- ldrh r1, [r2, 0xE]
- movs r3, 0xE
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _08144654
- subs r0, r1, 0x1
- strh r0, [r2, 0xE]
- b _08144658
-_08144654:
- movs r0, 0x1
-_08144656:
- strh r0, [r2, 0x8]
-_08144658:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end task_d_8144514
-
- thumb_func_start sub_8144664
-sub_8144664: @ 8144664
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _0814468C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r6, r1, 0
- cmp r0, 0x32
- bls _08144680
- b _0814492C
-_08144680:
- lsls r0, 2
- ldr r1, _08144690 @ =_08144694
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0814468C: .4byte gTasks
-_08144690: .4byte _08144694
- .align 2, 0
-_08144694:
- .4byte _08144760
- .4byte _08144784
- .4byte _081447D8
- .4byte _081447F0
- .4byte _0814482C
- .4byte _08144850
- .4byte _0814489C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _081448A8
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _081448C8
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _081448EC
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _0814492C
- .4byte _08144920
-_08144760:
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r6
- ldrh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 17
- movs r1, 0x7F
- ands r0, r1
- movs r1, 0xC
- bl Sin
- ldr r1, _08144780 @ =gUnknown_0203935A
- strh r0, [r1]
- b _081447A8
- .align 2, 0
-_08144780: .4byte gUnknown_0203935A
-_08144784:
- ldr r7, _081447B0 @ =gUnknown_0203935A
- movs r3, 0
- ldrsh r4, [r7, r3]
- cmp r4, 0
- beq _081447B4
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r6
- ldrh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 17
- movs r1, 0x7F
- ands r0, r1
- movs r1, 0xC
- bl Sin
- strh r0, [r7]
-_081447A8:
- ldrh r0, [r4, 0x12]
- adds r0, 0x1
- strh r0, [r4, 0x12]
- b _0814492C
- .align 2, 0
-_081447B0: .4byte gUnknown_0203935A
-_081447B4:
- ldr r3, _081447D4 @ =gSprites
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r6
- movs r0, 0xC
- ldrsh r2, [r1, r0]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- movs r2, 0x2
- strh r2, [r0, 0x2E]
- strh r4, [r1, 0x12]
- b _08144848
- .align 2, 0
-_081447D4: .4byte gSprites
-_081447D8:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r1, r0, r6
- ldrh r2, [r1, 0x12]
- movs r3, 0x12
- ldrsh r0, [r1, r3]
- cmp r0, 0x3F
- bgt _08144848
- adds r0, r2, 0x1
- strh r0, [r1, 0x12]
- b _08144866
-_081447F0:
- ldr r3, _08144828 @ =gSprites
- lsls r2, r5, 2
- adds r2, r5
- lsls r2, 3
- adds r2, r6
- movs r0, 0xC
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0x3
- strh r1, [r0, 0x2E]
- movs r0, 0xE
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0x1
- strh r1, [r0, 0x2E]
- movs r0, 0x78
- strh r0, [r2, 0x10]
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- b _0814492C
- .align 2, 0
-_08144828: .4byte gSprites
-_0814482C:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r1, r0, r6
- ldrh r2, [r1, 0x10]
- movs r3, 0x10
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _08144844
- subs r0, r2, 0x1
- strh r0, [r1, 0x10]
- b _0814492C
-_08144844:
- movs r0, 0x40
- strh r0, [r1, 0x12]
-_08144848:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _0814492C
-_08144850:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r6
- ldrh r1, [r4, 0x12]
- movs r2, 0x12
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _0814487C
- subs r0, r1, 0x1
- strh r0, [r4, 0x12]
-_08144866:
- movs r1, 0x7F
- ands r0, r1
- movs r1, 0x14
- bl Sin
- ldr r1, _08144878 @ =gUnknown_0203935A
- strh r0, [r1]
- b _0814492C
- .align 2, 0
-_08144878: .4byte gUnknown_0203935A
-_0814487C:
- ldr r2, _08144898 @ =gSprites
- movs r3, 0xC
- ldrsh r1, [r4, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x1
- strh r1, [r0, 0x2E]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0814492C
- .align 2, 0
-_08144898: .4byte gSprites
-_0814489C:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r6
- movs r1, 0x32
- b _0814492A
-_081448A8:
- ldr r3, _081448C4 @ =gSprites
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r6
- movs r0, 0xE
- ldrsh r2, [r1, r0]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- movs r2, 0x2
- b _081448E0
- .align 2, 0
-_081448C4: .4byte gSprites
-_081448C8:
- ldr r3, _081448E8 @ =gSprites
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r6
- movs r0, 0xC
- ldrsh r2, [r1, r0]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- movs r2, 0x4
-_081448E0:
- strh r2, [r0, 0x2E]
- movs r0, 0x32
- strh r0, [r1, 0x8]
- b _0814492C
- .align 2, 0
-_081448E8: .4byte gSprites
-_081448EC:
- ldr r3, _0814491C @ =gSprites
- lsls r2, r5, 2
- adds r2, r5
- lsls r2, 3
- adds r2, r6
- movs r0, 0xC
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0x5
- strh r1, [r0, 0x2E]
- movs r0, 0xE
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0x3
- strh r1, [r0, 0x2E]
- movs r0, 0x32
- strh r0, [r2, 0x8]
- b _0814492C
- .align 2, 0
-_0814491C: .4byte gSprites
-_08144920:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r6
- movs r1, 0
-_0814492A:
- strh r1, [r0, 0x8]
-_0814492C:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8144664
-
- thumb_func_start sub_8144934
-sub_8144934: @ 8144934
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _08144958 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r3, 0x8
- ldrsh r0, [r0, r3]
- adds r4, r1, 0
- cmp r0, 0x4
- bhi _08144974
- lsls r0, 2
- ldr r1, _0814495C @ =_08144960
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08144958: .4byte gTasks
-_0814495C: .4byte _08144960
- .align 2, 0
-_08144960:
- .4byte _08144974
- .4byte _081449B8
- .4byte _081449C4
- .4byte _08144A0C
- .4byte _08144A5C
-_08144974:
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r2, r0, r4
- movs r1, 0xA
- ldrsh r0, [r2, r1]
- ldr r5, _081449C0 @ =0x00007fff
- cmp r0, r5
- beq _081449B8
- movs r3, 0xC
- ldrsh r1, [r2, r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r3, r0, r4
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r4
- movs r1, 0xC
- ldrsh r0, [r0, r1]
- cmp r0, 0x2
- bne _081449B8
- movs r1, 0xA
- ldrsh r0, [r3, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r4
- movs r0, 0x14
- strh r0, [r1, 0x8]
- strh r5, [r2, 0xA]
-_081449B8:
- movs r0, 0
- bl sub_8149020
- b _08144A62
- .align 2, 0
-_081449C0: .4byte 0x00007fff
-_081449C4:
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r2, r0, r4
- movs r3, 0xA
- ldrsh r0, [r2, r3]
- ldr r5, _08144A08 @ =0x00007fff
- cmp r0, r5
- beq _08144A54
- movs r0, 0xC
- ldrsh r1, [r2, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r4
- movs r3, 0xA
- ldrsh r1, [r0, r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r3, r0, r4
- ldrh r1, [r3, 0x12]
- movs r0, 0x80
- negs r0, r0
- ands r0, r1
- movs r1, 0xA0
- lsls r1, 2
- cmp r0, r1
- bne _08144A54
- movs r0, 0x1
- strh r0, [r3, 0x8]
- strh r5, [r2, 0xA]
- b _08144A54
- .align 2, 0
-_08144A08: .4byte 0x00007fff
-_08144A0C:
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r2, r0, r4
- ldrh r3, [r2, 0xA]
- movs r0, 0xA
- ldrsh r1, [r2, r0]
- ldr r5, _08144A48 @ =0x00007fff
- cmp r1, r5
- beq _08144A54
- ldr r0, _08144A4C @ =0x000001f3
- cmp r1, r0
- bne _08144A50
- movs r3, 0xC
- ldrsh r1, [r2, r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r4
- movs r3, 0xA
- ldrsh r1, [r0, r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r4
- movs r1, 0xA
- strh r1, [r0, 0x8]
- strh r5, [r2, 0xA]
- b _08144A54
- .align 2, 0
-_08144A48: .4byte 0x00007fff
-_08144A4C: .4byte 0x000001f3
-_08144A50:
- adds r0, r3, 0x1
- strh r0, [r2, 0xA]
-_08144A54:
- movs r0, 0x1
- bl sub_8149020
- b _08144A62
-_08144A5C:
- movs r0, 0x2
- bl sub_8149020
-_08144A62:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8144934
-
- thumb_func_start sub_8144A68
-sub_8144A68: @ 8144A68
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r7, r1, 24
- cmp r0, 0x4
- bls _08144A7E
- b _08144DFC
-_08144A7E:
- lsls r0, 2
- ldr r1, _08144A88 @ =_08144A8C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08144A88: .4byte _08144A8C
- .align 2, 0
-_08144A8C:
- .4byte _08144AA0
- .4byte _08144B48
- .4byte _08144BF4
- .4byte _08144CA0
- .4byte _08144D50
-_08144AA0:
- ldr r5, _08144B40 @ =gSprites
- ldr r0, _08144B44 @ =gTasks
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 3
- adds r4, r0
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x5
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r2, r1
- strb r2, [r0]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r3, 0
- movs r2, 0x88
- lsls r2, 1
- strh r2, [r0, 0x20]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r2, [r0, 0x20]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r2, 0x2E
- strh r2, [r0, 0x22]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r2, [r0, 0x22]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r3, [r0, 0x2E]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r3, [r0, 0x2E]
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- movs r2, 0x20
- b _08144DF0
- .align 2, 0
-_08144B40: .4byte gSprites
-_08144B44: .4byte gTasks
-_08144B48:
- ldr r5, _08144BEC @ =gSprites
- ldr r0, _08144BF0 @ =gTasks
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 3
- adds r4, r0
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x5
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r2, r1
- strb r2, [r0]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r3, 0
- movs r1, 0x78
- strh r1, [r0, 0x20]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x88
- lsls r1, 1
- strh r1, [r0, 0x20]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r2, 0x2E
- strh r2, [r0, 0x22]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r2, [r0, 0x22]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r3, [r0, 0x2E]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r3, [r0, 0x2E]
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- movs r2, 0x20
- b _08144DF0
- .align 2, 0
-_08144BEC: .4byte gSprites
-_08144BF0: .4byte gTasks
-_08144BF4:
- ldr r5, _08144C98 @ =gSprites
- ldr r0, _08144C9C @ =gTasks
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 3
- adds r4, r0
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x5
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r2, r1
- strb r2, [r0]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r3, 0
- movs r1, 0x78
- strh r1, [r0, 0x20]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x88
- lsls r1, 1
- strh r1, [r0, 0x20]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r2, 0x2E
- strh r2, [r0, 0x22]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r2, [r0, 0x22]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r3, [r0, 0x2E]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r3, [r0, 0x2E]
- movs r1, 0x80
- lsls r1, 6
- movs r2, 0x80
- lsls r2, 2
- movs r0, 0x1
- b _08144DF0
- .align 2, 0
-_08144C98: .4byte gSprites
-_08144C9C: .4byte gTasks
-_08144CA0:
- ldr r5, _08144D44 @ =gSprites
- ldr r0, _08144D48 @ =gTasks
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 3
- adds r4, r0
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x5
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r2, r1
- strb r2, [r0]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r3, 0
- movs r1, 0x78
- strh r1, [r0, 0x20]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, _08144D4C @ =0x0000ffe0
- strh r1, [r0, 0x20]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r2, 0x2E
- strh r2, [r0, 0x22]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r2, [r0, 0x22]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r3, [r0, 0x2E]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r3, [r0, 0x2E]
- movs r1, 0x80
- lsls r1, 6
- movs r2, 0x80
- lsls r2, 2
- movs r0, 0x1
- b _08144DF0
- .align 2, 0
-_08144D44: .4byte gSprites
-_08144D48: .4byte gTasks
-_08144D4C: .4byte 0x0000ffe0
-_08144D50:
- ldr r5, _08144EBC @ =gSprites
- ldr r0, _08144EC0 @ =gTasks
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 3
- adds r4, r0
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x5
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r2, r1
- strb r2, [r0]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r3, 0
- movs r1, 0x58
- strh r1, [r0, 0x20]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x98
- strh r1, [r0, 0x20]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r2, 0x2E
- strh r2, [r0, 0x22]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r2, [r0, 0x22]
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r3, [r0, 0x2E]
- movs r0, 0x14
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r3, [r0, 0x2E]
- movs r1, 0x80
- lsls r1, 6
- movs r2, 0x80
- lsls r2, 2
- movs r0, 0x2
-_08144DF0:
- movs r3, 0x8
- bl sub_8148EC0
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x8]
-_08144DFC:
- ldr r0, _08144EC4 @ =sub_8144934
- movs r1, 0
- bl CreateTask
- ldr r6, _08144EC0 @ =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r5, r1, r6
- lsls r0, 24
- lsrs r0, 24
- movs r4, 0
- strh r0, [r5, 0xC]
- movs r0, 0xC
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- mov r1, r8
- strh r1, [r0, 0x8]
- movs r0, 0xC
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- strh r4, [r0, 0xA]
- movs r0, 0xC
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- strh r7, [r0, 0xC]
- ldr r0, _08144EC8 @ =sub_8144664
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0xA]
- movs r0, 0xA
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- strh r4, [r0, 0x8]
- movs r0, 0xA
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- strh r7, [r0, 0xA]
- movs r0, 0xA
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- ldrh r1, [r5, 0x12]
- strh r1, [r0, 0xC]
- movs r0, 0xA
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- ldrh r1, [r5, 0x14]
- strh r1, [r0, 0xE]
- movs r0, 0xA
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- strh r4, [r0, 0x10]
- mov r1, r8
- cmp r1, 0x2
- bne _08144EB0
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r6
- movs r0, 0x45
- strh r0, [r1, 0x12]
-_08144EB0:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08144EBC: .4byte gSprites
-_08144EC0: .4byte gTasks
-_08144EC4: .4byte sub_8144934
-_08144EC8: .4byte sub_8144664
- thumb_func_end sub_8144A68
-
- thumb_func_start sub_8144ECC
-sub_8144ECC: @ 8144ECC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r0, _08144F28 @ =gMain
- ldr r1, _08144F2C @ =0x0000043c
- adds r6, r0, r1
- ldrb r0, [r6]
- cmp r0, 0x1
- beq _08144F38
- cmp r0, 0x1
- ble _08144EF0
- cmp r0, 0x2
- beq _08144F5C
- cmp r0, 0x3
- bne _08144EF0
- b _0814508C
-_08144EF0:
- movs r0, 0x80
- lsls r0, 19
- movs r1, 0
- strh r1, [r0]
- ldr r2, _08144F30 @ =REG_BG3HOFS
- movs r0, 0x8
- strh r0, [r2]
- ldr r0, _08144F34 @ =REG_BG3VOFS
- strh r1, [r0]
- subs r0, 0x6
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- subs r0, 0x6
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x3A
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- movs r0, 0x1
- strb r0, [r6]
- b _081450A2
- .align 2, 0
-_08144F28: .4byte gMain
-_08144F2C: .4byte 0x0000043c
-_08144F30: .4byte REG_BG3HOFS
-_08144F34: .4byte REG_BG3VOFS
-_08144F38:
- ldr r1, _08144F54 @ =gUnknown_02039358
- movs r0, 0x22
- strh r0, [r1]
- ldr r1, _08144F58 @ =gUnknown_0203935A
- movs r0, 0
- strh r0, [r1]
- adds r0, r4, 0
- bl sub_8148CB0
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
- b _081450A2
- .align 2, 0
-_08144F54: .4byte gUnknown_02039358
-_08144F58: .4byte gUnknown_0203935A
-_08144F5C:
- ldr r0, _08144FBC @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _08144FE0
- ldr r0, _08144FC0 @ =gIntro2BrendanSpriteSheet
- bl LoadCompressedObjectPic
- ldr r0, _08144FC4 @ =gUnknown_08416E34
- bl LoadCompressedObjectPic
- ldr r0, _08144FC8 @ =gIntro2BicycleSpriteSheet
- bl LoadCompressedObjectPic
- ldr r0, _08144FCC @ =gIntro2SpritePalettes
- bl LoadSpritePalettes
- movs r0, 0x78
- movs r1, 0x2E
- bl intro_create_brendan_sprite
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _08144FD0 @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- strh r2, [r4, 0x12]
- ldr r6, _08144FD4 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r5, r6, 0
- adds r5, 0x1C
- adds r2, r0, r5
- ldr r1, _08144FD8 @ =sub_8145378
- str r1, [r2]
- adds r6, 0x8
- adds r0, r6
- ldr r1, _08144FDC @ =gUnknown_0840CA54
- str r1, [r0]
- movs r0, 0x88
- lsls r0, 1
- movs r1, 0x2E
- bl intro_create_may_sprite
- b _08145034
- .align 2, 0
-_08144FBC: .4byte gSaveBlock2
-_08144FC0: .4byte gIntro2BrendanSpriteSheet
-_08144FC4: .4byte gUnknown_08416E34
-_08144FC8: .4byte gIntro2BicycleSpriteSheet
-_08144FCC: .4byte gIntro2SpritePalettes
-_08144FD0: .4byte gTasks
-_08144FD4: .4byte gSprites
-_08144FD8: .4byte sub_8145378
-_08144FDC: .4byte gUnknown_0840CA54
-_08144FE0:
- ldr r0, _0814505C @ =gIntro2MaySpriteSheet
- bl LoadCompressedObjectPic
- ldr r0, _08145060 @ =gUnknown_08416E24
- bl LoadCompressedObjectPic
- ldr r0, _08145064 @ =gIntro2BicycleSpriteSheet
- bl LoadCompressedObjectPic
- ldr r0, _08145068 @ =gIntro2SpritePalettes
- bl LoadSpritePalettes
- movs r0, 0x78
- movs r1, 0x2E
- bl intro_create_may_sprite
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _0814506C @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- strh r2, [r4, 0x12]
- ldr r6, _08145070 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r5, r6, 0
- adds r5, 0x1C
- adds r2, r0, r5
- ldr r1, _08145074 @ =sub_8145378
- str r1, [r2]
- adds r6, 0x8
- adds r0, r6
- ldr r1, _08145078 @ =gUnknown_0840CA54
- str r1, [r0]
- movs r0, 0x88
- lsls r0, 1
- movs r1, 0x2E
- bl intro_create_brendan_sprite
-_08145034:
- lsls r0, 24
- lsrs r2, r0, 24
- strh r2, [r4, 0x14]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r5, r0, r5
- ldr r1, _0814507C @ =sub_8145420
- str r1, [r5]
- adds r0, r6
- ldr r1, _08145080 @ =gUnknown_0840CA94
- str r1, [r0]
- ldr r1, _08145084 @ =gMain
- ldr r0, _08145088 @ =0x0000043c
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _081450A2
- .align 2, 0
-_0814505C: .4byte gIntro2MaySpriteSheet
-_08145060: .4byte gUnknown_08416E24
-_08145064: .4byte gIntro2BicycleSpriteSheet
-_08145068: .4byte gIntro2SpritePalettes
-_0814506C: .4byte gTasks
-_08145070: .4byte gSprites
-_08145074: .4byte sub_8145378
-_08145078: .4byte gUnknown_0840CA54
-_0814507C: .4byte sub_8145420
-_08145080: .4byte gUnknown_0840CA94
-_08145084: .4byte gMain
-_08145088: .4byte 0x0000043c
-_0814508C:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8144A68
- adds r0, r4, 0
- bl sub_8148E90
- movs r0, 0
- strb r0, [r6]
- movs r0, 0x1
- b _081450A4
-_081450A2:
- movs r0, 0
-_081450A4:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8144ECC
-
- thumb_func_start sub_81450AC
-sub_81450AC: @ 81450AC
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08145120 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r1, [r4, 0x8]
- movs r2, 0x8
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _081450D2
- lsls r0, r1, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- strh r0, [r4, 0x8]
-_081450D2:
- ldrh r1, [r4, 0xA]
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _081450E8
- lsls r0, r1, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- strh r0, [r4, 0xA]
-_081450E8:
- ldrh r1, [r4, 0xC]
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _081450FE
- lsls r0, r1, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- strh r0, [r4, 0xC]
-_081450FE:
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _08145114
- lsls r0, r1, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- strh r0, [r4, 0xE]
-_08145114:
- ldr r1, _08145124 @ =gUnknown_0203935C
- movs r0, 0x1
- strh r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08145120: .4byte gTasks
-_08145124: .4byte gUnknown_0203935C
- thumb_func_end sub_81450AC
-
- thumb_func_start sub_8145128
-sub_8145128: @ 8145128
- push {r4-r7,lr}
- adds r3, r0, 0
- adds r4, r2, 0
- lsls r3, 16
- lsrs r3, 16
- lsls r1, 16
- lsrs r7, r1, 16
- lsls r4, 16
- lsrs r5, r4, 16
- ldr r0, _081451EC @ =gCreditsCopyrightEnd_Gfx
- movs r6, 0xC0
- lsls r6, 19
- adds r3, r6
- adds r1, r3, 0
- bl LZ77UnCompVram
- ldr r0, _081451F0 @ =gIntroCopyright_Pal
- adds r1, r5, 0
- movs r2, 0x20
- bl LoadPalette
- lsrs r4, 20
- lsls r4, 28
- lsrs r4, 16
- movs r2, 0
- adds r1, r4, 0x1
- ldr r3, _081451F4 @ =0x000003ff
-_0814515E:
- lsls r0, r2, 1
- adds r0, r7
- adds r0, r6
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, r3
- bls _0814515E
- movs r2, 0
- adds r0, r4, 0x2
- adds r6, r4, 0
- adds r6, 0x17
- movs r1, 0x2B
- adds r1, r4
- mov r12, r1
- adds r4, 0x42
- ldr r5, _081451F8 @ =0x060001c8
- adds r3, r0, 0
-_08145184:
- lsls r0, r2, 1
- adds r0, r7
- adds r0, r5
- adds r1, r2, r3
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x14
- bls _08145184
- movs r2, 0
- ldr r5, _081451FC @ =0x06000248
- adds r3, r6, 0
-_0814519E:
- lsls r0, r2, 1
- adds r0, r7
- adds r0, r5
- adds r1, r2, r3
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x13
- bls _0814519E
- movs r2, 0
- ldr r5, _08145200 @ =0x060002c8
- mov r3, r12
-_081451B8:
- lsls r0, r2, 1
- adds r0, r7
- adds r0, r5
- adds r1, r2, r3
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x16
- bls _081451B8
- movs r2, 0
- ldr r3, _08145204 @ =0x06000348
-_081451D0:
- lsls r0, r2, 1
- adds r0, r7
- adds r0, r3
- adds r1, r2, r4
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0xB
- bls _081451D0
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081451EC: .4byte gCreditsCopyrightEnd_Gfx
-_081451F0: .4byte gIntroCopyright_Pal
-_081451F4: .4byte 0x000003ff
-_081451F8: .4byte 0x060001c8
-_081451FC: .4byte 0x06000248
-_08145200: .4byte 0x060002c8
-_08145204: .4byte 0x06000348
- thumb_func_end sub_8145128
-
- thumb_func_start sub_8145208
-sub_8145208: @ 8145208
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- adds r3, r2, 0
- movs r0, 0x3F
- ands r0, r2
- adds r1, r0, 0
- adds r1, 0x50
- cmp r2, 0xFF
- bne _08145220
- movs r0, 0x1
- b _08145246
-_08145220:
- movs r0, 0x80
- ands r0, r2
- cmp r0, 0
- beq _08145230
- movs r2, 0x80
- lsls r2, 4
- adds r0, r2, 0
- orrs r1, r0
-_08145230:
- movs r0, 0x40
- ands r3, r0
- cmp r3, 0
- beq _08145244
- movs r2, 0x80
- lsls r2, 3
- adds r0, r2, 0
- orrs r1, r0
- lsls r0, r1, 16
- lsrs r1, r0, 16
-_08145244:
- adds r0, r1, 0
-_08145246:
- pop {r1}
- bx r1
- thumb_func_end sub_8145208
-
- thumb_func_start sub_814524C
-sub_814524C: @ 814524C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- str r0, [sp]
- ldr r0, [sp, 0x2C]
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x4]
- lsls r3, 16
- lsrs r3, 16
- str r3, [sp, 0x8]
- lsls r0, 16
- lsrs r0, 20
- lsls r0, 28
- lsrs r0, 16
- mov r9, r0
- movs r5, 0
-_0814527A:
- movs r4, 0
- lsls r7, r5, 1
- ldr r1, [sp, 0x4]
- adds r0, r1, r5
- adds r2, r5, 0x1
- mov r8, r2
- lsls r0, 6
- ldr r1, [sp, 0x8]
- adds r6, r0, r1
-_0814528C:
- adds r0, r7, r5
- adds r0, r4
- ldr r2, [sp]
- adds r0, r2, r0
- ldrb r0, [r0]
- bl sub_8145208
- mov r2, r10
- adds r1, r2, r4
- lsls r1, 1
- adds r1, r6
- movs r2, 0xC0
- lsls r2, 19
- adds r1, r2
- add r0, r9
- strh r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _0814528C
- mov r1, r8
- lsls r0, r1, 24
- lsrs r5, r0, 24
- cmp r5, 0x4
- bls _0814527A
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_814524C
-
- thumb_func_start sub_81452D0
-sub_81452D0: @ 81452D0
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 16
- lsrs r6, r1, 16
- lsrs r1, 20
- lsls r1, 28
- lsrs r1, 16
- movs r2, 0
- ldr r7, _08145360 @ =gUnknown_0840B83C
- movs r4, 0xC0
- lsls r4, 19
- adds r1, 0x1
- ldr r3, _08145364 @ =0x000003ff
-_081452EE:
- lsls r0, r2, 1
- adds r0, r5
- adds r0, r4
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, r3
- bls _081452EE
- str r6, [sp]
- adds r0, r7, 0
- movs r1, 0x3
- movs r2, 0x7
- adds r3, r5, 0
- bl sub_814524C
- ldr r0, _08145368 @ =gUnknown_0840B84B
- str r6, [sp]
- movs r1, 0x7
- movs r2, 0x7
- adds r3, r5, 0
- bl sub_814524C
- ldr r4, _0814536C @ =gUnknown_0840B85A
- str r6, [sp]
- adds r0, r4, 0
- movs r1, 0xB
- movs r2, 0x7
- adds r3, r5, 0
- bl sub_814524C
- str r6, [sp]
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0x7
- adds r3, r5, 0
- bl sub_814524C
- ldr r0, _08145370 @ =gUnknown_0840B869
- str r6, [sp]
- movs r1, 0x14
- movs r2, 0x7
- adds r3, r5, 0
- bl sub_814524C
- ldr r0, _08145374 @ =gUnknown_0840B878
- str r6, [sp]
- movs r1, 0x18
- movs r2, 0x7
- adds r3, r5, 0
- bl sub_814524C
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08145360: .4byte gUnknown_0840B83C
-_08145364: .4byte 0x000003ff
-_08145368: .4byte gUnknown_0840B84B
-_0814536C: .4byte gUnknown_0840B85A
-_08145370: .4byte gUnknown_0840B869
-_08145374: .4byte gUnknown_0840B878
- thumb_func_end sub_81452D0
-
- thumb_func_start sub_8145378
-sub_8145378: @ 8145378
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _08145390 @ =gUnknown_0203935C
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _08145394
- adds r0, r4, 0
- bl DestroySprite
- b _08145418
- .align 2, 0
-_08145390: .4byte gUnknown_0203935C
-_08145394:
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0x5
- bhi _08145418
- lsls r0, 2
- ldr r1, _081453A8 @ =_081453AC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081453A8: .4byte _081453AC
- .align 2, 0
-_081453AC:
- .4byte _081453C4
- .4byte _081453CE
- .4byte _081453D4
- .4byte _081453DE
- .4byte _081453E8
- .4byte _081453FE
-_081453C4:
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnimIfDifferent
- b _08145418
-_081453CE:
- adds r0, r4, 0
- movs r1, 0x1
- b _08145402
-_081453D4:
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAnimIfDifferent
- b _08145418
-_081453DE:
- adds r0, r4, 0
- movs r1, 0x3
- bl StartSpriteAnimIfDifferent
- b _08145418
-_081453E8:
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnimIfDifferent
- ldrh r1, [r4, 0x20]
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- cmp r0, 0x78
- ble _08145418
- subs r0, r1, 0x1
- b _08145416
-_081453FE:
- adds r0, r4, 0
- movs r1, 0
-_08145402:
- bl StartSpriteAnimIfDifferent
- ldrh r2, [r4, 0x20]
- movs r0, 0x20
- ldrsh r1, [r4, r0]
- movs r0, 0x20
- negs r0, r0
- cmp r1, r0
- ble _08145418
- subs r0, r2, 0x1
-_08145416:
- strh r0, [r4, 0x20]
-_08145418:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8145378
-
- thumb_func_start sub_8145420
-sub_8145420: @ 8145420
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _08145438 @ =gUnknown_0203935C
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _0814543C
- adds r0, r4, 0
- bl DestroySprite
- b _081454D8
- .align 2, 0
-_08145438: .4byte gUnknown_0203935C
-_0814543C:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08145464
- cmp r0, 0x1
- bgt _0814544E
- cmp r0, 0
- beq _08145458
- b _081454D8
-_0814544E:
- cmp r0, 0x2
- beq _081454A0
- cmp r0, 0x3
- beq _081454BE
- b _081454D8
-_08145458:
- strh r0, [r4, 0x26]
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnimIfDifferent
- b _081454D8
-_08145464:
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- cmp r0, 0xC8
- ble _08145476
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnimIfDifferent
- b _0814547E
-_08145476:
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAnimIfDifferent
-_0814547E:
- ldrh r2, [r4, 0x20]
- movs r0, 0x20
- ldrsh r1, [r4, r0]
- movs r0, 0x20
- negs r0, r0
- cmp r1, r0
- ble _08145490
- subs r0, r2, 0x2
- strh r0, [r4, 0x20]
-_08145490:
- ldr r0, _0814549C @ =gUnknown_0203935A
- ldrh r0, [r0]
- negs r0, r0
- strh r0, [r4, 0x26]
- b _081454D8
- .align 2, 0
-_0814549C: .4byte gUnknown_0203935A
-_081454A0:
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnimIfDifferent
- ldrh r1, [r4, 0x3C]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _081454D8
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- b _081454D6
-_081454BE:
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnimIfDifferent
- ldrh r2, [r4, 0x20]
- movs r0, 0x20
- ldrsh r1, [r4, r0]
- movs r0, 0x20
- negs r0, r0
- cmp r1, r0
- ble _081454D8
- subs r0, r2, 0x1
-_081454D6:
- strh r0, [r4, 0x20]
-_081454D8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8145420
-
- thumb_func_start sub_81454E0
-sub_81454E0: @ 81454E0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, _081454F8 @ =gUnknown_0203935C
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _081454FC
- adds r0, r5, 0
- bl DestroySprite
- b _081456A6
- .align 2, 0
-_081454F8: .4byte gUnknown_0203935C
-_081454FC:
- ldrh r0, [r5, 0x3C]
- adds r0, 0x1
- strh r0, [r5, 0x3C]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- cmp r0, 0xA
- bhi _08145544
- lsls r0, 2
- ldr r1, _08145514 @ =_08145518
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08145514: .4byte _08145518
- .align 2, 0
-_08145518:
- .4byte _08145544
- .4byte _0814559E
- .4byte _08145620
- .4byte _08145660
- .4byte _08145544
- .4byte _08145544
- .4byte _08145544
- .4byte _08145544
- .4byte _08145544
- .4byte _08145544
- .4byte _08145696
-_08145544:
- ldrb r1, [r5, 0x1]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r5, 0x1]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- movs r0, 0x1F
- ands r1, r0
- lsls r1, 1
- ldrb r2, [r5, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x3]
- movs r0, 0x10
- strh r0, [r5, 0x32]
- ldrh r4, [r5, 0x30]
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x80
- lsls r0, 9
- movs r1, 0x10
- bl __divsi3
- adds r1, r0, 0
- str r1, [sp]
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0
- bl SetOamMatrix
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x1
- strh r0, [r5, 0x2E]
- b _081456A6
-_0814559E:
- ldrh r1, [r5, 0x32]
- movs r2, 0x32
- ldrsh r0, [r5, r2]
- cmp r0, 0xFF
- bgt _081455D4
- adds r0, r1, 0
- adds r0, 0x8
- strh r0, [r5, 0x32]
- ldrh r4, [r5, 0x30]
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x32
- ldrsh r1, [r5, r0]
- movs r0, 0x80
- lsls r0, 9
- bl __divsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp]
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0
- bl SetOamMatrix
- b _081455DA
-_081455D4:
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
-_081455DA:
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- cmp r1, 0x2
- beq _081456A6
- cmp r1, 0x2
- bgt _081455EC
- cmp r1, 0x1
- beq _081455F2
- b _081456A6
-_081455EC:
- cmp r1, 0x3
- beq _0814560A
- b _081456A6
-_081455F2:
- ldrh r1, [r5, 0x3C]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _08145602
- ldrh r0, [r5, 0x22]
- adds r0, 0x1
- strh r0, [r5, 0x22]
-_08145602:
- ldrh r0, [r5, 0x20]
- subs r0, 0x2
- strh r0, [r5, 0x20]
- b _081456A6
-_0814560A:
- ldrh r0, [r5, 0x3C]
- ands r1, r0
- cmp r1, 0
- bne _08145618
- ldrh r0, [r5, 0x22]
- adds r0, 0x1
- strh r0, [r5, 0x22]
-_08145618:
- ldrh r0, [r5, 0x20]
- adds r0, 0x2
- strh r0, [r5, 0x20]
- b _081456A6
-_08145620:
- ldrh r1, [r5, 0x34]
- movs r2, 0x34
- ldrsh r0, [r5, r2]
- cmp r0, 0
- beq _08145630
- subs r0, r1, 0x1
- strh r0, [r5, 0x34]
- b _081456A6
-_08145630:
- ldr r1, _0814565C @ =REG_BLDCNT
- movs r2, 0xF4
- lsls r2, 4
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0x10
- strh r0, [r1]
- ldrb r1, [r5, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r5, 0x1]
- movs r0, 0x10
- strh r0, [r5, 0x34]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _081456A6
- .align 2, 0
-_0814565C: .4byte REG_BLDCNT
-_08145660:
- ldrh r1, [r5, 0x34]
- movs r2, 0x34
- ldrsh r0, [r5, r2]
- cmp r0, 0
- beq _08145684
- subs r1, 0x1
- strh r1, [r5, 0x34]
- ldr r3, _08145680 @ =REG_BLDALPHA
- movs r0, 0x34
- ldrsh r2, [r5, r0]
- movs r0, 0x10
- subs r0, r2
- lsls r0, 8
- adds r1, r0
- strh r1, [r3]
- b _081456A6
- .align 2, 0
-_08145680: .4byte REG_BLDALPHA
-_08145684:
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0xA
- strh r0, [r5, 0x2E]
- b _081456A6
-_08145696:
- ldr r0, _081456B0 @ =REG_BLDCNT
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, r5, 0
- bl DestroySprite
-_081456A6:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081456B0: .4byte REG_BLDCNT
- thumb_func_end sub_81454E0
-
- thumb_func_start sub_81456B4
-sub_81456B4: @ 81456B4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 16
- lsrs r1, 16
- mov r10, r1
- lsls r2, 16
- lsrs r2, 16
- str r2, [sp, 0x10]
- lsls r3, 16
- lsrs r3, 16
- mov r9, r3
- adds r0, r6, 0
- bl NationalPokedexNumToSpecies
- adds r6, r0, 0
- cmp r6, 0xC9
- beq _081456F8
- movs r0, 0x9A
- lsls r0, 1
- cmp r6, r0
- beq _081456EE
- movs r7, 0
- b _081456FC
-_081456EE:
- ldr r0, _081456F4 @ =gSaveBlock2
- ldr r7, [r0, 0x20]
- b _081456FC
- .align 2, 0
-_081456F4: .4byte gSaveBlock2
-_081456F8:
- ldr r0, _081457E8 @ =gSaveBlock2
- ldr r7, [r0, 0x1C]
-_081456FC:
- lsls r0, r6, 3
- ldr r1, _081457EC @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _081457F0 @ =gMonFrontPicCoords
- lsls r2, r6, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- movs r3, 0x80
- lsls r3, 18
- ldr r4, _081457F4 @ =gUnknown_0840B5A0
- mov r8, r4
- mov r5, r9
- lsls r4, r5, 2
- add r4, r8
- ldr r4, [r4]
- str r4, [sp]
- str r6, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r4, 0x1
- str r4, [sp, 0xC]
- bl LoadSpecialPokePic
- ldr r2, _081457F8 @ =0x0000ffff
- adds r0, r6, 0
- movs r1, 0
- bl species_and_otid_get_pal
- lsls r5, 4
- mov r8, r5
- movs r1, 0x80
- lsls r1, 1
- add r1, r8
- lsls r1, 16
- lsrs r1, 16
- movs r2, 0x20
- bl LoadCompressedPalette
- mov r7, r9
- lsls r6, r7, 24
- lsrs r6, 24
- mov r0, r9
- adds r1, r6, 0
- bl sub_8143648
- ldr r0, _081457FC @ =gUnknown_02024E8C
- mov r2, r10
- lsls r1, r2, 16
- asrs r1, 16
- ldr r3, [sp, 0x10]
- lsls r2, r3, 16
- asrs r2, 16
- movs r3, 0
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _08145800 @ =gSprites
- lsls r2, r4, 4
- adds r2, r4
- lsls r2, 2
- adds r3, r2, r5
- ldrb r1, [r3, 0x5]
- movs r0, 0xF
- ands r0, r1
- mov r7, r8
- orrs r0, r7
- movs r1, 0xD
- negs r1, r1
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r3, 0x5]
- mov r0, r9
- adds r0, 0x1
- strh r0, [r3, 0x30]
- movs r0, 0x3E
- adds r0, r3
- mov r8, r0
- ldrb r0, [r0]
- orrs r0, r1
- mov r1, r8
- strb r0, [r1]
- adds r0, r5, 0
- adds r0, 0x1C
- adds r2, r0
- ldr r0, _08145804 @ =sub_81454E0
- str r0, [r2]
- ldr r0, _08145808 @ =gSpriteTemplate_840CAEC
- movs r2, 0x20
- ldrsh r1, [r3, r2]
- movs r7, 0x22
- ldrsh r2, [r3, r7]
- movs r3, 0x1
- bl CreateSprite
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r4, [r0, 0x2E]
- adds r1, r6, 0
- bl StartSpriteAnimIfDifferent
- adds r0, r4, 0
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081457E8: .4byte gSaveBlock2
-_081457EC: .4byte gMonFrontPicTable
-_081457F0: .4byte gMonFrontPicCoords
-_081457F4: .4byte gUnknown_0840B5A0
-_081457F8: .4byte 0x0000ffff
-_081457FC: .4byte gUnknown_02024E8C
-_08145800: .4byte gSprites
-_08145804: .4byte sub_81454E0
-_08145808: .4byte gSpriteTemplate_840CAEC
- thumb_func_end sub_81456B4
-
- thumb_func_start sub_814580C
-sub_814580C: @ 814580C
- push {r4,lr}
- adds r3, r0, 0
- ldr r4, _08145838 @ =gSprites
- movs r1, 0x2E
- ldrsh r0, [r3, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- movs r2, 0x2E
- ldrsh r0, [r1, r2]
- cmp r0, 0xA
- beq _08145830
- ldr r0, _0814583C @ =gUnknown_0203935C
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0
- beq _08145840
-_08145830:
- adds r0, r3, 0
- bl DestroySprite
- b _081458D4
- .align 2, 0
-_08145838: .4byte gSprites
-_0814583C: .4byte gUnknown_0203935C
-_08145840:
- adds r0, r1, 0
- adds r0, 0x3E
- ldrb r0, [r0]
- movs r1, 0x3E
- adds r1, r3
- mov r12, r1
- movs r1, 0x4
- ands r1, r0
- mov r0, r12
- ldrb r2, [r0]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- movs r2, 0x2E
- ldrsh r1, [r3, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0, 0x1]
- movs r0, 0xC
- ands r0, r1
- ldrb r2, [r3, 0x1]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x1]
- movs r0, 0x2E
- ldrsh r2, [r3, r0]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x1]
- lsls r0, 30
- lsrs r0, 30
- movs r2, 0x4
- negs r2, r2
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x1]
- movs r2, 0x2E
- ldrsh r1, [r3, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x3]
- movs r1, 0x3E
- ands r1, r0
- ldrb r2, [r3, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x3]
- movs r0, 0x2E
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r0, [r0, 0x20]
- strh r0, [r3, 0x20]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r0, [r0, 0x22]
- strh r0, [r3, 0x22]
-_081458D4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_814580C
-
- thumb_func_start sub_81458DC
-sub_81458DC: @ 81458DC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r7, _0814597C @ =0x0201c000
- ldr r0, _08145980 @ =0x00004023
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl GetStarterPokemon
- lsls r0, 16
- lsrs r0, 16
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- movs r4, 0x1
- movs r5, 0
- ldr r0, _08145984 @ =0x00000181
- mov r8, r0
-_0814590E:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8090D90
- lsls r0, 24
- adds r6, r7, 0
- adds r6, 0x90
- cmp r0, 0
- beq _0814592C
- lsls r0, r5, 1
- adds r0, r6, r0
- strh r4, [r0]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_0814592C:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, r8
- bls _0814590E
- adds r4, r5, 0
- ldr r0, _08145984 @ =0x00000181
- lsls r1, r4, 16
- mov r9, r1
- movs r2, 0x8E
- adds r2, r7
- mov r8, r2
- adds r1, r7, 0
- adds r1, 0x86
- str r1, [sp]
- cmp r4, r0
- bhi _08145964
- adds r1, r6, 0
- movs r3, 0
- adds r2, r0, 0
-_08145954:
- lsls r0, r4, 1
- adds r0, r1, r0
- strh r3, [r0]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, r2
- bls _08145954
-_08145964:
- movs r2, 0xE5
- lsls r2, 2
- adds r0, r7, r2
- strh r5, [r0]
- mov r1, r9
- lsrs r0, r1, 16
- cmp r0, 0x43
- bhi _08145988
- mov r2, r8
- strh r5, [r2]
- b _0814598E
- .align 2, 0
-_0814597C: .4byte 0x0201c000
-_08145980: .4byte 0x00004023
-_08145984: .4byte 0x00000181
-_08145988:
- movs r0, 0x44
- mov r1, r8
- strh r0, [r1]
-_0814598E:
- movs r5, 0
- movs r2, 0xE5
- lsls r2, 2
- adds r4, r7, r2
- mov r9, r5
- b _0814599E
-_0814599A:
- cmp r5, 0x43
- bhi _081459EE
-_0814599E:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r4]
- bl __umodsi3
- lsls r0, 16
- lsrs r2, r0, 16
- lsls r1, r5, 1
- adds r1, r7, r1
- lsls r0, r2, 1
- adds r3, r6, r0
- ldrh r0, [r3]
- strh r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- mov r0, r9
- strh r0, [r3]
- ldrh r0, [r4]
- subs r0, 0x1
- strh r0, [r4]
- lsls r0, 16
- lsrs r0, 16
- cmp r2, r0
- beq _081459E8
- ldrh r0, [r4]
- lsls r0, 1
- adds r0, r6, r0
- ldrh r0, [r0]
- strh r0, [r3]
- ldrh r0, [r4]
- lsls r0, 1
- adds r0, r6, r0
- mov r1, r9
- strh r1, [r0]
-_081459E8:
- ldrh r0, [r4]
- cmp r0, 0
- bne _0814599A
-_081459EE:
- mov r2, r8
- ldrh r0, [r2]
- cmp r0, 0x43
- bhi _08145A26
- adds r5, r0, 0
- movs r2, 0
- cmp r5, 0x43
- bhi _08145A5C
- mov r3, r8
-_08145A00:
- lsls r1, r5, 1
- adds r1, r7, r1
- lsls r0, r2, 1
- adds r0, r7, r0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- ldrh r0, [r3]
- cmp r2, r0
- bne _08145A1A
- movs r2, 0
-_08145A1A:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x43
- bls _08145A00
- b _08145A5C
-_08145A26:
- movs r4, 0
- ldrh r0, [r7]
- cmp r0, r10
- beq _08145A42
-_08145A2E:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r0, r4, 1
- adds r0, r7, r0
- ldrh r0, [r0]
- cmp r0, r10
- beq _08145A42
- cmp r4, 0x43
- bls _08145A2E
-_08145A42:
- mov r1, r8
- ldrh r0, [r1]
- subs r0, 0x1
- cmp r4, r0
- bge _08145A5C
- lsls r0, r4, 1
- adds r0, r7, r0
- ldr r2, [sp]
- ldrh r1, [r2]
- strh r1, [r0]
- mov r0, r10
- strh r0, [r2]
- b _08145A62
-_08145A5C:
- mov r2, r10
- ldr r1, [sp]
- strh r2, [r1]
-_08145A62:
- movs r0, 0x44
- mov r1, r8
- strh r0, [r1]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81458DC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/credits.s b/data/credits.s
index c6e0ad536..8bbf71a7a 100644
--- a/data/credits.s
+++ b/data/credits.s
@@ -29,34 +29,66 @@ gUnknown_0840B878::
gUnknown_0840CA00:: @ 840CA00
.incbin "baserom.gba", 0x0040ca00, 0x8
-Unknown_840CA08:
- .incbin "baserom.gba", 0x0040ca08, 0x14
-Unknown_840CA1C:
- .incbin "baserom.gba", 0x0040ca1c, 0x14
-Unknown_840CA30:
- .incbin "baserom.gba", 0x0040ca30, 0x10
-Unknown_840CA40:
- .incbin "baserom.gba", 0x0040ca40, 0x14
+
+gSpriteAnim_840CA08:
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 64, 8
+ obj_image_anim_frame 128, 8
+ obj_image_anim_frame 192, 8
+ obj_image_anim_jump 0
+
+gSpriteAnim_840CA1C:
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 64, 4
+ obj_image_anim_frame 128, 4
+ obj_image_anim_frame 192, 4
+ obj_image_anim_jump 0
+
+gSpriteAnim_840CA30:
+ obj_image_anim_frame 256, 4
+ obj_image_anim_frame 320, 4
+ obj_image_anim_frame 384, 4
+ obj_image_anim_end
+
+gSpriteAnim_840CA40:
+ obj_image_anim_frame 384, 30
+ obj_image_anim_frame 320, 30
+ obj_image_anim_frame 256, 30
+ obj_image_anim_frame 256, 30
+ obj_image_anim_end
.align 2
-gUnknown_0840CA54:: @ 840CA54
- .4byte Unknown_840CA08
- .4byte Unknown_840CA1C
- .4byte Unknown_840CA30
- .4byte Unknown_840CA40
-
-Unknown_840CA64:
- .incbin "baserom.gba", 0x0040ca64, 0x14
-Unknown_840CA78:
- .incbin "baserom.gba", 0x0040ca78, 0x14
-Unknown_840CA8C:
- .incbin "baserom.gba", 0x0040ca8c, 0x8
+gSpriteAnimTable_0840CA54:: @ 840CA54
+ .4byte gSpriteAnim_840CA08
+ .4byte gSpriteAnim_840CA1C
+ .4byte gSpriteAnim_840CA30
+ .4byte gSpriteAnim_840CA40
+
+
+gSpriteAnim_840CA64:
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 64, 8
+ obj_image_anim_frame 128, 8
+ obj_image_anim_frame 192, 8
+ obj_image_anim_jump 0
+
+gSpriteAnim_840CA78:
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 64, 4
+ obj_image_anim_frame 128, 4
+ obj_image_anim_frame 192, 4
+ obj_image_anim_jump 0
+
+gSpriteAnim_840CA8C:
+ obj_image_anim_frame 0, 4
+ obj_image_anim_end
.align 2
-gUnknown_0840CA94:: @ 840CA94
- .4byte Unknown_840CA64
- .4byte Unknown_840CA78
- .4byte Unknown_840CA8C
+gSpriteAnimTable_0840CA94:: @ 840CA94
+ .4byte gSpriteAnim_840CA64
+ .4byte gSpriteAnim_840CA78
+ .4byte gSpriteAnim_840CA8C
+
gUnknown_0840CAA0:: @ 840CAA0
obj_tiles gHallOfFame, 6144, 1001
@@ -95,4 +127,4 @@ gSpriteAnimTable_840CAE0:: @ 840CAE0
.align 2
gSpriteTemplate_840CAEC:: @ 840CAEC
- spr_template 1001, 1001, gOamData_840CAC0, gSpriteAnimTable_840CAE0, NULL, gDummySpriteAffineAnimTable, sub_814580C
+ spr_template 1001, 1001, gOamData_840CAC0, gSpriteAnimTable_840CAE0, NULL, gDummySpriteAffineAnimTable, spritecb_814580C
diff --git a/include/asm.inc.h b/include/asm.inc.h
index c415cd825..43a25a231 100644
--- a/include/asm.inc.h
+++ b/include/asm.inc.h
@@ -478,6 +478,8 @@ void DoBrailleStrengthEffect(void);
// asm/intro_credits_graphics.o
void load_intro_part2_graphics(/*TODO: arg types*/);
void sub_8148C78(/*TODO: arg types*/);
+void sub_8148CB0(u8);
+void sub_8148E90(u8);
u8 sub_8148EC0(/*TODO: arg types*/);
void sub_8149020(/*TODO: arg types*/);
u8 intro_create_brendan_sprite(/*TODO: arg types*/);
diff --git a/ld_script.txt b/ld_script.txt
index b258669dc..190df293c 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -228,7 +228,6 @@ SECTIONS {
asm/battle_anim_813F0F4.o(.text);
asm/hall_of_fame.o(.text);
src/credits.o(.text);
- asm/credits.o(.text);
src/lottery_corner.o(.text);
src/diploma.o(.text);
src/berry_tag_screen.o(.text);
diff --git a/src/credits.c b/src/credits.c
index 665279f8e..d6eea4cac 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -1,14 +1,36 @@
#include "global.h"
+#include "asm.h"
+#include "decompress.h"
#include "m4a.h"
#include "main.h"
#include "menu.h"
#include "palette.h"
#include "songs.h"
#include "sound.h"
+#include "species.h"
#include "sprite.h"
#include "task.h"
#include "text.h"
+u32 NationalPokedexNumToSpecies(u16 nationalNum);
+
+struct MonCoords {
+ u8 x, y;
+};
+
+
+extern void *species_and_otid_get_pal(u32, u16, u16);
+
+asm(".set REG_BASE, 0x4000000");
+asm(".set OFFSET_REG_BG3HOFS, 0x1c");
+asm(".set OFFSET_REG_BG3VOFS, 0x1e");
+asm(".set OFFSET_REG_BLDCNT, 0x50");
+asm(".set OFFSET_REG_BLDALPHA, 0x52");
+asm(".set REG_BG3HOFS, REG_BASE + OFFSET_REG_BG3HOFS");
+asm(".set REG_BG3VOFS, REG_BASE + OFFSET_REG_BG3VOFS");
+asm(".set REG_BLDCNT, REG_BASE + OFFSET_REG_BLDCNT");
+asm(".set REG_BLDALPHA, REG_BASE + OFFSET_REG_BLDALPHA");
+
enum {
PAGE_TITLE,
PAGE_DIRECTOR,
@@ -74,8 +96,11 @@ enum {
enum {
TDA_0 = 0,
TDA_TASK_C_ID = 1,
+ TDA_TASK_E_ID = 2,
TDA_TASK_D_ID = 3,
TDA_4 = 4,
+ TDA_PLAYER_CYCLIST = 5,
+ TDA_RIVAL_CYCLIST = 6,
TDA_7 = 7, // Has something to do with the bike scene
TDA_11 = 11, // Gets set depending on whether the bike or the grass scene should be shown
TDA_12 = 12,
@@ -90,10 +115,20 @@ enum {
TDB_3 = 3,
TDC_0 = 0,
-
- TDD_0 = 0,
- TDD_1 = 1,
+ TDC_1 = 1,
+ TDC_2 = 2,
+ TDC_3 = 3,
+ TDC_4 = 4,
+ TDC_5 = 5,
+
+ TDD_STATE = 0,
+ TDD_TASK_A_ID = 1,
TDD_2 = 2,
+ TDD_3 = 3,
+
+ TDE_0 = 0,
+ TDE_1 = 1,
+ TDE_TASK_A_ID = 2,
};
struct Unk201C000 {
@@ -101,6 +136,7 @@ struct Unk201C000 {
u16 var_88;
u16 var_8A;
u16 var_8C;
+ u16 var_8E;
};
struct HallOfFame {
@@ -121,30 +157,60 @@ extern u8 unk_201e800[0x800];
extern u8 unk_201f000[0x800];
extern u16 unk_201f800[];
+extern struct SpriteTemplate gUnknown_02024E8C;
+
extern s16 gUnknown_02039320;
extern u16 gUnknown_02039322; // TASK A
extern u8 gUnknown_02039324;
extern u8 gUnknown_02039325;
-extern u16 gUnknown_0203935C;
+
+extern u16 gUnknown_02039358;
+extern u16 gUnknown_0203935A;
+extern s16 gUnknown_0203935C;
+
extern u8 gReservedSpritePaletteCount;
+// data/data2
+extern struct MonCoords gMonFrontPicCoords[];
+extern struct SpriteSheet gMonFrontPicTable[];
+
// data/starter_choose
extern u16 gBirchBagGrassPal[32];
extern u8 gBirchBagTilemap[];
extern u8 gBirchHelpGfx[];
-// data/credits
+// data/hall_of_fame
+extern void *gUnknown_0840B5A0[];
+
+// data/credits
extern u16 gUnknown_0840B7BC[32];
extern u16 gUnknown_0840B7FC[32];
+extern u8 gUnknown_0840B85A[];
extern struct CreditsEntry *gCreditsEntryPointerTable[][5];
+extern u8 gUnknown_0840CA00[][2];
extern struct SpriteSheet gUnknown_0840CAA0;
extern struct SpritePalette gUnknown_0840CAB0;
+extern union AnimCmd *gSpriteAnimTable_0840CA54[];
+extern union AnimCmd *gSpriteAnimTable_0840CA94[];
+extern struct SpriteTemplate gSpriteTemplate_840CAEC;
+
+// data/intro_credits_graphics
+extern const struct SpriteSheet gIntro2BrendanSpriteSheet;
+extern const struct SpriteSheet gIntro2MaySpriteSheet;
+extern const struct SpriteSheet gIntro2BicycleSpriteSheet;
+extern const struct SpritePalette gIntro2SpritePalettes[];
+extern const struct SpriteSheet gUnknown_08416E24;
+extern const struct SpriteSheet gUnknown_08416E34;
+
+// graphics
+extern u8 gCreditsCopyrightEnd_Gfx[];
+extern u16 gIntroCopyright_Pal[16];
static void task_a_8143B38(u8 taskIdA);
-void task_a_8143B68(u8 taskIdA);
+static void task_a_8143B68(u8 taskIdA);
static void task_a_8143BFC(u8 taskIdA);
-static void task_a_080C9BFC(u8 taskIdA);
+static void task_a_80C9BFC(u8 taskIdA);
static void task_a_8143CC0(u8 taskIdA);
static void task_a_8143D04(u8 taskIdA);
static void task_a_8143EBC(u8 taskIdA);
@@ -157,12 +223,14 @@ static void task_a_8144114(u8 taskIdA);
static void sub_8144130(void);
static void task_b_81441B8(u8 taskIdB);
static u8 sub_8144454(u8 page, u8 taskIdA);
-
void task_d_8144514(u8 taskIdD);
-u8 sub_8144ECC(u8 data, u8 taskIdA);
-void sub_81450AC(u8 taskIdA);
+static bool8 sub_8144ECC(u8 data, u8 taskIdA);
+static void sub_81450AC(u8 taskIdA);
void sub_8145128(u16, u16, u16);
-void sub_81452D0(int, int);
+void sub_81452D0(u16 arg0, u16 arg1);
+static void spritecb_player_8145378(struct Sprite *sprite);
+static void spritecb_rival_8145420(struct Sprite *sprite);
+u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3);
void sub_81458DC(void);
static void vblank_8143948(void) {
@@ -245,7 +313,6 @@ void sub_81439D0(void) {
BeginNormalPaletteFade(-1, 0, 16, 0, 0);
-
savedIme = REG_IME;
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
@@ -269,7 +336,7 @@ void sub_81439D0(void) {
gUnknown_02039322 = taskIdA;
}
-void task_a_8143B38(u8 taskIdA) {
+static void task_a_8143B38(u8 taskIdA) {
if (gPaletteFade.active)
{
return;
@@ -278,7 +345,7 @@ void task_a_8143B38(u8 taskIdA) {
gTasks[taskIdA].func = task_a_8143B68;
}
-void task_a_8143B68(u8 taskIdA) {
+static void task_a_8143B68(u8 taskIdA) {
u16 data11;
if (gTasks[taskIdA].data[TDA_4])
@@ -320,10 +387,10 @@ static void task_a_8143BFC(u8 taskIdA) {
REG_DISPCNT = 0;
sub_81450AC(taskIdA);
- gTasks[taskIdA].func = task_a_080C9BFC;
+ gTasks[taskIdA].func = task_a_80C9BFC;
}
-static void task_a_080C9BFC(u8 taskIdA) {
+static void task_a_80C9BFC(u8 taskIdA) {
u16 backup;
SetVBlankCallback(NULL);
@@ -357,7 +424,7 @@ static void task_a_8143CC0(u8 taskIdA) {
}
#ifdef NONMATCHING
-static void task_a_8143D04(u8 taskIdA) {
+void task_a_8143D04(u8 taskIdA) {
switch (gMain.state) {
default:
case 0: {
@@ -396,8 +463,8 @@ static void task_a_8143D04(u8 taskIdA) {
case 1: {
gTasks[taskIdA].data[TDA_TASK_D_ID] = CreateTask(task_d_8144514, 0);
- gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_0] = 1;
- gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_1] = taskIdA;
+ gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_STATE] = 1;
+ gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_TASK_A_ID] = taskIdA;
gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_2] = gTasks[taskIdA].data[TDA_7];
BeginNormalPaletteFade(-1, 0, 16, 0, 0);
@@ -415,7 +482,7 @@ static void task_a_8143D04(u8 taskIdA) {
}
#else
__attribute__((naked))
-static void task_a_8143D04(u8 taskId) {
+void task_a_8143D04(u8 taskId) {
asm(".syntax unified\n\
push {r4-r7,lr}\n\
mov r7, r9\n\
@@ -612,6 +679,7 @@ _08143EB4: .4byte gUnknown_0203935C\n\
_08143EB8: .4byte task_a_8143B38\n\
.syntax divided\n");
}
+
#endif
static void task_a_8143EBC(u8 taskIdA) {
@@ -935,3 +1003,1942 @@ static u8 sub_8144454(u8 page, u8 taskIdA) {
return FALSE;
}
+
+#define UNK_DEFINE_44 (0x44)
+
+#ifdef NONMATCHING
+void task_d_8144514(u8 taskIdD) {
+ u8 local1;
+
+ switch (gTasks[taskIdD].data[TDD_STATE])
+ {
+ case 0:
+ break;
+
+ case 1:
+ if (unk_201C000.var_8A == 0 && gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14])
+ {
+ break;
+ }
+
+ gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14] = 0;
+ gTasks[taskIdD].data[TDD_STATE] += 1;
+
+ break;
+
+ case 2:
+ if (unk_201C000.var_88 == UNK_DEFINE_44)
+ {
+ break;
+ }
+
+ if (gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != task_a_8143B68)
+ {
+ break;
+ }
+
+ local1 = sub_81456B4(
+ unk_201C000.var_00[unk_201C000.var_8C],
+ gUnknown_0840CA00[unk_201C000.var_8A][0],
+ gUnknown_0840CA00[unk_201C000.var_8A][1],
+ unk_201C000.var_8A
+ );
+
+ if (unk_201C000.var_8C > unk_201C000.var_8E - 1)
+ {
+ unk_201C000.var_8C += 1;
+ gSprites[local1].data3 = 50;
+ }
+ else
+ {
+ unk_201C000.var_8C = 0;
+ gSprites[local1].data3 = 512;
+ }
+
+ unk_201C000.var_88 += 1;
+
+ if (unk_201C000.var_8A == 2)
+ {
+ unk_201C000.var_8A = 0;
+ }
+ else
+ {
+ unk_201C000.var_8A += 1;
+ }
+
+ gTasks[taskIdD].data[TDD_3] = 50;
+ gTasks[taskIdD].data[TDD_STATE] += 1;
+ break;
+
+ case 3:
+ if (gTasks[taskIdD].data[TDD_3] != 0)
+ {
+ gTasks[taskIdD].data[TDD_3] -= 1;
+ break;
+ }
+
+ gTasks[taskIdD].data[TDD_STATE] = 1;
+ break;
+ }
+}
+#else
+__attribute__((naked))
+void task_d_8144514(u8 taskIdD) {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ ldr r6, _08144548 @ =0x0201c000\n\
+ ldr r3, _0814454C @ =gTasks\n\
+ lsls r0, 2\n\
+ add r0, r8\n\
+ lsls r0, 3\n\
+ adds r2, r0, r3\n\
+ movs r1, 0x8\n\
+ ldrsh r0, [r2, r1]\n\
+ cmp r0, 0x1\n\
+ beq _08144550\n\
+ cmp r0, 0x1\n\
+ bgt _0814453C\n\
+ b _08144658\n\
+_0814453C:\n\
+ cmp r0, 0x2\n\
+ beq _08144584\n\
+ cmp r0, 0x3\n\
+ bne _08144546\n\
+ b _08144644\n\
+_08144546:\n\
+ b _08144658\n\
+ .align 2, 0\n\
+_08144548: .4byte 0x0201c000\n\
+_0814454C: .4byte gTasks\n\
+_08144550:\n\
+ adds r0, r6, 0\n\
+ adds r0, 0x8A\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _0814456E\n\
+ movs r4, 0xA\n\
+ ldrsh r0, [r2, r4]\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 3\n\
+ adds r1, r3\n\
+ movs r4, 0x24\n\
+ ldrsh r0, [r1, r4]\n\
+ cmp r0, 0\n\
+ beq _08144658\n\
+_0814456E:\n\
+ movs r0, 0xA\n\
+ ldrsh r1, [r2, r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ adds r0, r3\n\
+ movs r1, 0\n\
+ strh r1, [r0, 0x24]\n\
+ ldrh r0, [r2, 0x8]\n\
+ adds r0, 0x1\n\
+ b _08144656\n\
+_08144584:\n\
+ adds r0, r6, 0\n\
+ adds r0, 0x88\n\
+ ldrh r1, [r0]\n\
+ mov r9, r0\n\
+ cmp r1, 0x44\n\
+ beq _08144658\n\
+ movs r4, 0xA\n\
+ ldrsh r1, [r2, r4]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ adds r0, r3\n\
+ ldr r1, [r0]\n\
+ ldr r0, _081445EC @ =sub_8143B68\n\
+ cmp r1, r0\n\
+ bne _08144658\n\
+ adds r7, r6, 0\n\
+ adds r7, 0x8C\n\
+ ldrh r0, [r7]\n\
+ lsls r0, 1\n\
+ adds r0, r6\n\
+ ldrh r0, [r0]\n\
+ ldr r4, _081445F0 @ =gUnknown_0840CA00\n\
+ adds r5, r6, 0\n\
+ adds r5, 0x8A\n\
+ ldrh r3, [r5]\n\
+ lsls r2, r3, 1\n\
+ adds r1, r2, r4\n\
+ ldrb r1, [r1]\n\
+ adds r4, 0x1\n\
+ adds r2, r4\n\
+ ldrb r2, [r2]\n\
+ bl sub_81456B4\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ ldrh r1, [r7]\n\
+ adds r0, r6, 0\n\
+ adds r0, 0x8E\n\
+ ldrh r0, [r0]\n\
+ subs r0, 0x1\n\
+ cmp r1, r0\n\
+ bge _081445F8\n\
+ adds r0, r1, 0x1\n\
+ strh r0, [r7]\n\
+ ldr r1, _081445F4 @ =gSprites\n\
+ lsls r0, r2, 4\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ movs r1, 0x32\n\
+ b _0814460A\n\
+ .align 2, 0\n\
+_081445EC: .4byte task_a_8143B68\n\
+_081445F0: .4byte gUnknown_0840CA00\n\
+_081445F4: .4byte gSprites\n\
+_081445F8:\n\
+ movs r0, 0\n\
+ strh r0, [r7]\n\
+ ldr r1, _08144620 @ =gSprites\n\
+ lsls r0, r2, 4\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ movs r1, 0x80\n\
+ lsls r1, 2\n\
+_0814460A:\n\
+ strh r1, [r0, 0x34]\n\
+ mov r1, r9\n\
+ ldrh r0, [r1]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1]\n\
+ ldrh r0, [r5]\n\
+ cmp r0, 0x2\n\
+ bne _08144624\n\
+ movs r0, 0\n\
+ b _08144626\n\
+ .align 2, 0\n\
+_08144620: .4byte gSprites\n\
+_08144624:\n\
+ adds r0, 0x1\n\
+_08144626:\n\
+ strh r0, [r5]\n\
+ ldr r0, _08144640 @ =gTasks\n\
+ mov r2, r8\n\
+ lsls r1, r2, 2\n\
+ add r1, r8\n\
+ lsls r1, 3\n\
+ adds r1, r0\n\
+ movs r0, 0x32\n\
+ strh r0, [r1, 0xE]\n\
+ ldrh r0, [r1, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1, 0x8]\n\
+ b _08144658\n\
+ .align 2, 0\n\
+_08144640: .4byte gTasks\n\
+_08144644:\n\
+ ldrh r1, [r2, 0xE]\n\
+ movs r3, 0xE\n\
+ ldrsh r0, [r2, r3]\n\
+ cmp r0, 0\n\
+ beq _08144654\n\
+ subs r0, r1, 0x1\n\
+ strh r0, [r2, 0xE]\n\
+ b _08144658\n\
+_08144654:\n\
+ movs r0, 0x1\n\
+_08144656:\n\
+ strh r0, [r2, 0x8]\n\
+_08144658:\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}
+#endif
+
+__attribute__((naked))
+void task_c_8144664(u8 taskIdC) {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ ldr r1, _0814468C @ =gTasks\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ movs r2, 0x8\n\
+ ldrsh r0, [r0, r2]\n\
+ adds r6, r1, 0\n\
+ cmp r0, 0x32\n\
+ bls _08144680\n\
+ b _0814492C\n\
+_08144680:\n\
+ lsls r0, 2\n\
+ ldr r1, _08144690 @ =_08144694\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_0814468C: .4byte gTasks\n\
+_08144690: .4byte _08144694\n\
+ .align 2, 0\n\
+_08144694:\n\
+ .4byte _08144760\n\
+ .4byte _08144784\n\
+ .4byte _081447D8\n\
+ .4byte _081447F0\n\
+ .4byte _0814482C\n\
+ .4byte _08144850\n\
+ .4byte _0814489C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _081448A8\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _081448C8\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _081448EC\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _08144920\n\
+_08144760:\n\
+ lsls r4, r5, 2\n\
+ adds r4, r5\n\
+ lsls r4, 3\n\
+ adds r4, r6\n\
+ ldrh r0, [r4, 0x12]\n\
+ lsls r0, 16\n\
+ asrs r0, 17\n\
+ movs r1, 0x7F\n\
+ ands r0, r1\n\
+ movs r1, 0xC\n\
+ bl Sin\n\
+ ldr r1, _08144780 @ =gUnknown_0203935A\n\
+ strh r0, [r1]\n\
+ b _081447A8\n\
+ .align 2, 0\n\
+_08144780: .4byte gUnknown_0203935A\n\
+_08144784:\n\
+ ldr r7, _081447B0 @ =gUnknown_0203935A\n\
+ movs r3, 0\n\
+ ldrsh r4, [r7, r3]\n\
+ cmp r4, 0\n\
+ beq _081447B4\n\
+ lsls r4, r5, 2\n\
+ adds r4, r5\n\
+ lsls r4, 3\n\
+ adds r4, r6\n\
+ ldrh r0, [r4, 0x12]\n\
+ lsls r0, 16\n\
+ asrs r0, 17\n\
+ movs r1, 0x7F\n\
+ ands r0, r1\n\
+ movs r1, 0xC\n\
+ bl Sin\n\
+ strh r0, [r7]\n\
+_081447A8:\n\
+ ldrh r0, [r4, 0x12]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x12]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
+_081447B0: .4byte gUnknown_0203935A\n\
+_081447B4:\n\
+ ldr r3, _081447D4 @ =gSprites\n\
+ lsls r1, r5, 2\n\
+ adds r1, r5\n\
+ lsls r1, 3\n\
+ adds r1, r6\n\
+ movs r0, 0xC\n\
+ ldrsh r2, [r1, r0]\n\
+ lsls r0, r2, 4\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r2, 0x2\n\
+ strh r2, [r0, 0x2E]\n\
+ strh r4, [r1, 0x12]\n\
+ b _08144848\n\
+ .align 2, 0\n\
+_081447D4: .4byte gSprites\n\
+_081447D8:\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r1, r0, r6\n\
+ ldrh r2, [r1, 0x12]\n\
+ movs r3, 0x12\n\
+ ldrsh r0, [r1, r3]\n\
+ cmp r0, 0x3F\n\
+ bgt _08144848\n\
+ adds r0, r2, 0x1\n\
+ strh r0, [r1, 0x12]\n\
+ b _08144866\n\
+_081447F0:\n\
+ ldr r3, _08144828 @ =gSprites\n\
+ lsls r2, r5, 2\n\
+ adds r2, r5\n\
+ lsls r2, 3\n\
+ adds r2, r6\n\
+ movs r0, 0xC\n\
+ ldrsh r1, [r2, r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r1, 0x3\n\
+ strh r1, [r0, 0x2E]\n\
+ movs r0, 0xE\n\
+ ldrsh r1, [r2, r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r1, 0x1\n\
+ strh r1, [r0, 0x2E]\n\
+ movs r0, 0x78\n\
+ strh r0, [r2, 0x10]\n\
+ ldrh r0, [r2, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r2, 0x8]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
+_08144828: .4byte gSprites\n\
+_0814482C:\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r1, r0, r6\n\
+ ldrh r2, [r1, 0x10]\n\
+ movs r3, 0x10\n\
+ ldrsh r0, [r1, r3]\n\
+ cmp r0, 0\n\
+ beq _08144844\n\
+ subs r0, r2, 0x1\n\
+ strh r0, [r1, 0x10]\n\
+ b _0814492C\n\
+_08144844:\n\
+ movs r0, 0x40\n\
+ strh r0, [r1, 0x12]\n\
+_08144848:\n\
+ ldrh r0, [r1, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1, 0x8]\n\
+ b _0814492C\n\
+_08144850:\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r4, r0, r6\n\
+ ldrh r1, [r4, 0x12]\n\
+ movs r2, 0x12\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r0, 0\n\
+ ble _0814487C\n\
+ subs r0, r1, 0x1\n\
+ strh r0, [r4, 0x12]\n\
+_08144866:\n\
+ movs r1, 0x7F\n\
+ ands r0, r1\n\
+ movs r1, 0x14\n\
+ bl Sin\n\
+ ldr r1, _08144878 @ =gUnknown_0203935A\n\
+ strh r0, [r1]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
+_08144878: .4byte gUnknown_0203935A\n\
+_0814487C:\n\
+ ldr r2, _08144898 @ =gSprites\n\
+ movs r3, 0xC\n\
+ ldrsh r1, [r4, r3]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ movs r1, 0x1\n\
+ strh r1, [r0, 0x2E]\n\
+ ldrh r0, [r4, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x8]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
+_08144898: .4byte gSprites\n\
+_0814489C:\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r0, r6\n\
+ movs r1, 0x32\n\
+ b _0814492A\n\
+_081448A8:\n\
+ ldr r3, _081448C4 @ =gSprites\n\
+ lsls r1, r5, 2\n\
+ adds r1, r5\n\
+ lsls r1, 3\n\
+ adds r1, r6\n\
+ movs r0, 0xE\n\
+ ldrsh r2, [r1, r0]\n\
+ lsls r0, r2, 4\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r2, 0x2\n\
+ b _081448E0\n\
+ .align 2, 0\n\
+_081448C4: .4byte gSprites\n\
+_081448C8:\n\
+ ldr r3, _081448E8 @ =gSprites\n\
+ lsls r1, r5, 2\n\
+ adds r1, r5\n\
+ lsls r1, 3\n\
+ adds r1, r6\n\
+ movs r0, 0xC\n\
+ ldrsh r2, [r1, r0]\n\
+ lsls r0, r2, 4\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r2, 0x4\n\
+_081448E0:\n\
+ strh r2, [r0, 0x2E]\n\
+ movs r0, 0x32\n\
+ strh r0, [r1, 0x8]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
+_081448E8: .4byte gSprites\n\
+_081448EC:\n\
+ ldr r3, _0814491C @ =gSprites\n\
+ lsls r2, r5, 2\n\
+ adds r2, r5\n\
+ lsls r2, 3\n\
+ adds r2, r6\n\
+ movs r0, 0xC\n\
+ ldrsh r1, [r2, r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r1, 0x5\n\
+ strh r1, [r0, 0x2E]\n\
+ movs r0, 0xE\n\
+ ldrsh r1, [r2, r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r1, 0x3\n\
+ strh r1, [r0, 0x2E]\n\
+ movs r0, 0x32\n\
+ strh r0, [r2, 0x8]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
+_0814491C: .4byte gSprites\n\
+_08144920:\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r0, r6\n\
+ movs r1, 0\n\
+_0814492A:\n\
+ strh r1, [r0, 0x8]\n\
+_0814492C:\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}
+
+#define UNK_DEF_1F3 (499)
+
+void task_e_8144934(u8 taskIdE) {
+ s16 taskIdC;
+
+ switch (gTasks[taskIdE].data[TDE_0])
+ {
+ default:
+ case 0:
+ if (gTasks[taskIdE].data[TDE_1] != 0x7FFF)
+ {
+
+ if (gTasks[gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_B_ID]].data[TDB_CURRENT_PAGE] == PAGE_ART_DIRECTOR)
+ {
+ gTasks[gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_C_ID]].data[TDC_0] = 20;
+ gTasks[taskIdE].data[TDE_1] = 0x7FFF;
+ }
+ }
+
+ sub_8149020(0);
+ break;
+
+ case 1:
+ sub_8149020(0);
+ break;
+
+ case 2:
+ if (gTasks[taskIdE].data[TDE_1] != 0x7FFF)
+ {
+ taskIdC = gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_C_ID];
+
+ // Floor to multiple of 128
+ if ((gTasks[taskIdC].data[TDC_5] & - 128) == 640)
+ {
+ gTasks[taskIdC].data[TDC_0] = 1;
+ gTasks[taskIdE].data[TDE_1] = 0x7FFF;
+ }
+ }
+ sub_8149020(1);
+ break;
+
+ case 3:
+ if (gTasks[taskIdE].data[TDE_1] != 0x7FFF)
+ {
+
+ if (gTasks[taskIdE].data[TDE_1] == UNK_DEF_1F3)
+ {
+ gTasks[gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_C_ID]].data[TDC_0] = 10;
+ gTasks[taskIdE].data[TDE_1] = 0x7FFF;
+ }
+ else
+ {
+ gTasks[taskIdE].data[TDE_1] += 1;
+ }
+ }
+
+ sub_8149020(1);
+ break;
+
+ case 4:
+ sub_8149020(2);
+ break;
+ }
+}
+
+#define UNK_DEFINE_45 (0x45)
+
+static void sub_8144A68(u8 data, u8 taskIdA) {
+ switch (data)
+ {
+ case 0:
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 272;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data0 = 0;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0;
+ gTasks[taskIdA].data[TDA_0] = sub_8148EC0(0, 0x2000, 0x20, 8);
+ break;
+
+ case 1:
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data0 = 0;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0;
+ gTasks[taskIdA].data[TDA_0] = sub_8148EC0(0, 0x2000, 0x20, 8);
+ break;
+
+ case 2:
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data0 = 0;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0;
+ gTasks[taskIdA].data[TDA_0] = sub_8148EC0(1, 0x2000, 0x200, 8);
+ break;
+
+ case 3:
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = - 32;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data0 = 0;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0;
+ gTasks[taskIdA].data[TDA_0] = sub_8148EC0(1, 0x2000, 0x200, 8);
+ break;
+
+ case 4:
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 88;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 152;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data0 = 0;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0;
+ gTasks[taskIdA].data[TDA_0] = sub_8148EC0(2, 0x2000, 0x200, 8);
+ break;
+ }
+
+ gTasks[taskIdA].data[TDA_TASK_E_ID] = CreateTask(task_e_8144934, 0);
+ gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_0] = data;
+ gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_1] = 0;
+ gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_TASK_A_ID] = taskIdA;
+
+ gTasks[taskIdA].data[TDA_TASK_C_ID] = CreateTask(task_c_8144664, 0);
+ gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_0] = 0;
+ gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_1] = taskIdA;
+ gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_2] = gTasks[taskIdA].data[TDA_PLAYER_CYCLIST];
+ gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_3] = gTasks[taskIdA].data[TDA_RIVAL_CYCLIST];
+ gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_4] = 0;
+
+ if (data == 2)
+ {
+ gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_5] = UNK_DEFINE_45;
+ }
+}
+
+static bool8 sub_8144ECC(u8 data, u8 taskIdA) {
+ u8 spriteId;
+
+ switch (gMain.state)
+ {
+ default:
+ case 0:
+ REG_DISPCNT = 0;
+ REG_BG3HOFS = 8;
+ REG_BG3VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ gMain.state = 1;
+ break;
+
+ case 1:
+ gUnknown_02039358 = 34;
+ gUnknown_0203935A = 0;
+ sub_8148CB0(data);
+ gMain.state += 1;
+ break;
+
+ case 2:
+ if (gSaveBlock2.playerGender == MALE)
+ {
+ LoadCompressedObjectPic(&gIntro2BrendanSpriteSheet);
+ LoadCompressedObjectPic(&gUnknown_08416E34);
+ LoadCompressedObjectPic(&gIntro2BicycleSpriteSheet);
+ LoadSpritePalettes(gIntro2SpritePalettes);
+
+ spriteId = intro_create_brendan_sprite(120, 46);
+ gTasks[taskIdA].data[TDA_PLAYER_CYCLIST] = spriteId;
+ gSprites[spriteId].callback = spritecb_player_8145378;
+ gSprites[spriteId].anims = gSpriteAnimTable_0840CA54;
+
+ spriteId = intro_create_may_sprite(272, 46);
+ gTasks[taskIdA].data[TDA_RIVAL_CYCLIST] = spriteId;
+ gSprites[spriteId].callback = spritecb_rival_8145420;
+ gSprites[spriteId].anims = gSpriteAnimTable_0840CA94;
+ }
+ else
+ {
+ LoadCompressedObjectPic(&gIntro2MaySpriteSheet);
+ LoadCompressedObjectPic(&gUnknown_08416E24);
+ LoadCompressedObjectPic(&gIntro2BicycleSpriteSheet);
+ LoadSpritePalettes(gIntro2SpritePalettes);
+
+ spriteId = intro_create_may_sprite(120, 46);
+ gTasks[taskIdA].data[TDA_PLAYER_CYCLIST] = spriteId;
+ gSprites[spriteId].callback = spritecb_player_8145378;
+ gSprites[spriteId].anims = gSpriteAnimTable_0840CA54;
+
+ spriteId = intro_create_brendan_sprite(272, 46);
+ gTasks[taskIdA].data[TDA_RIVAL_CYCLIST] = spriteId;
+ gSprites[spriteId].callback = spritecb_rival_8145420;
+ gSprites[spriteId].anims = gSpriteAnimTable_0840CA94;
+ };
+
+ gMain.state += 1;
+ break;
+
+ case 3:
+ sub_8144A68(data, taskIdA);
+ sub_8148E90(data);
+ gMain.state = 0;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void sub_81450AC(u8 taskIdA) {
+ if (gTasks[taskIdA].data[TDA_0] != 0)
+ {
+ DestroyTask(gTasks[taskIdA].data[TDA_0]);
+ gTasks[taskIdA].data[TDA_0] = 0;
+ }
+
+ if (gTasks[taskIdA].data[TDA_TASK_C_ID] != 0)
+ {
+ DestroyTask(gTasks[taskIdA].data[TDA_TASK_C_ID]);
+ gTasks[taskIdA].data[TDA_TASK_C_ID] = 0;
+ }
+
+ if (gTasks[taskIdA].data[TDA_TASK_E_ID] != 0)
+ {
+ DestroyTask(gTasks[taskIdA].data[TDA_TASK_E_ID]);
+ gTasks[taskIdA].data[TDA_TASK_E_ID] = 0;
+ }
+
+ if (gTasks[taskIdA].data[TDA_TASK_D_ID] != 0)
+ {
+ DestroyTask(gTasks[taskIdA].data[TDA_TASK_D_ID]);
+ gTasks[taskIdA].data[TDA_TASK_D_ID] = 0;
+ }
+
+ gUnknown_0203935C = 1;
+}
+
+__attribute__((naked))
+void sub_8145128(u16 arg0, u16 arg1, u16 arg2) {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ adds r3, r0, 0\n\
+ adds r4, r2, 0\n\
+ lsls r3, 16\n\
+ lsrs r3, 16\n\
+ lsls r1, 16\n\
+ lsrs r7, r1, 16\n\
+ lsls r4, 16\n\
+ lsrs r5, r4, 16\n\
+ ldr r0, _081451EC @ =gCreditsCopyrightEnd_Gfx\n\
+ movs r6, 0xC0\n\
+ lsls r6, 19\n\
+ adds r3, r6\n\
+ adds r1, r3, 0\n\
+ bl LZ77UnCompVram\n\
+ ldr r0, _081451F0 @ =gIntroCopyright_Pal\n\
+ adds r1, r5, 0\n\
+ movs r2, 0x20\n\
+ bl LoadPalette\n\
+ lsrs r4, 20\n\
+ lsls r4, 28\n\
+ lsrs r4, 16\n\
+ movs r2, 0\n\
+ adds r1, r4, 0x1\n\
+ ldr r3, _081451F4 @ =0x000003ff\n\
+_0814515E:\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ adds r0, r6\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, r3\n\
+ bls _0814515E\n\
+ movs r2, 0\n\
+ adds r0, r4, 0x2\n\
+ adds r6, r4, 0\n\
+ adds r6, 0x17\n\
+ movs r1, 0x2B\n\
+ adds r1, r4\n\
+ mov r12, r1\n\
+ adds r4, 0x42\n\
+ ldr r5, _081451F8 @ =0x060001c8\n\
+ adds r3, r0, 0\n\
+_08145184:\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ adds r0, r5\n\
+ adds r1, r2, r3\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x14\n\
+ bls _08145184\n\
+ movs r2, 0\n\
+ ldr r5, _081451FC @ =0x06000248\n\
+ adds r3, r6, 0\n\
+_0814519E:\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ adds r0, r5\n\
+ adds r1, r2, r3\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x13\n\
+ bls _0814519E\n\
+ movs r2, 0\n\
+ ldr r5, _08145200 @ =0x060002c8\n\
+ mov r3, r12\n\
+_081451B8:\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ adds r0, r5\n\
+ adds r1, r2, r3\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x16\n\
+ bls _081451B8\n\
+ movs r2, 0\n\
+ ldr r3, _08145204 @ =0x06000348\n\
+_081451D0:\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ adds r0, r3\n\
+ adds r1, r2, r4\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0xB\n\
+ bls _081451D0\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_081451EC: .4byte gCreditsCopyrightEnd_Gfx\n\
+_081451F0: .4byte gIntroCopyright_Pal\n\
+_081451F4: .4byte 0x000003ff\n\
+_081451F8: .4byte 0x060001c8\n\
+_081451FC: .4byte 0x06000248\n\
+_08145200: .4byte 0x060002c8\n\
+_08145204: .4byte 0x06000348\n\
+ .syntax divided\n");
+}
+
+u16 sub_8145208(u8 arg0) {
+
+ u16 out = (arg0 & 0x3F) + 80;
+
+ if (arg0 == 0xFF)
+ {
+ return 1;
+ }
+
+ if (arg0 & (1 << 7))
+ {
+ out |= 0x800;
+ }
+
+ if (arg0 & (1 << 6))
+ {
+ out |= 0x400;
+ }
+
+ return out;
+}
+
+__attribute__((naked))
+void sub_814524C(int arg0, u8 arg1, u8 arg2, u16 arg3, int arg4) {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0xC\n\
+ str r0, [sp]\n\
+ ldr r0, [sp, 0x2C]\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ mov r10, r1\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ str r2, [sp, 0x4]\n\
+ lsls r3, 16\n\
+ lsrs r3, 16\n\
+ str r3, [sp, 0x8]\n\
+ lsls r0, 16\n\
+ lsrs r0, 20\n\
+ lsls r0, 28\n\
+ lsrs r0, 16\n\
+ mov r9, r0\n\
+ movs r5, 0\n\
+_0814527A:\n\
+ movs r4, 0\n\
+ lsls r7, r5, 1\n\
+ ldr r1, [sp, 0x4]\n\
+ adds r0, r1, r5\n\
+ adds r2, r5, 0x1\n\
+ mov r8, r2\n\
+ lsls r0, 6\n\
+ ldr r1, [sp, 0x8]\n\
+ adds r6, r0, r1\n\
+_0814528C:\n\
+ adds r0, r7, r5\n\
+ adds r0, r4\n\
+ ldr r2, [sp]\n\
+ adds r0, r2, r0\n\
+ ldrb r0, [r0]\n\
+ bl sub_8145208\n\
+ mov r2, r10\n\
+ adds r1, r2, r4\n\
+ lsls r1, 1\n\
+ adds r1, r6\n\
+ movs r2, 0xC0\n\
+ lsls r2, 19\n\
+ adds r1, r2\n\
+ add r0, r9\n\
+ strh r0, [r1]\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0x2\n\
+ bls _0814528C\n\
+ mov r1, r8\n\
+ lsls r0, r1, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x4\n\
+ bls _0814527A\n\
+ add sp, 0xC\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}
+
+#ifdef NONMATCHING
+void sub_81452D0(u16 arg0, u16 arg1) {
+ u16 i;
+
+
+ for (i = 0; i < 0x400; i ++)
+ {
+ (u16 *) (VRAM + )
+ }
+ sub_814524C(&gUnknown_0840B85A, 7, 7, arg0, arg1);
+ sub_814524C(&gUnknown_0840B869, 11, 7, arg0, arg1);
+ sub_814524C(&gUnknown_0840B878, 15, 7, arg0, arg1);
+ sub_814524C(&gUnknown_0840B85A, 19, 7, arg0, arg1);
+}
+#else
+__attribute__((naked))
+void sub_81452D0(u16 arg0, u16 arg1) {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ sub sp, 0x4\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ lsls r1, 16\n\
+ lsrs r6, r1, 16\n\
+ lsrs r1, 20\n\
+ lsls r1, 28\n\
+ lsrs r1, 16\n\
+ movs r2, 0\n\
+ ldr r7, _08145360 @ =gUnknown_0840B83C\n\
+ movs r4, 0xC0\n\
+ lsls r4, 19\n\
+ adds r1, 0x1\n\
+ ldr r3, _08145364 @ =0x000003ff\n\
+_081452EE:\n\
+ lsls r0, r2, 1\n\
+ adds r0, r5\n\
+ adds r0, r4\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, r3\n\
+ bls _081452EE\n\
+ str r6, [sp]\n\
+ adds r0, r7, 0\n\
+ movs r1, 0x3\n\
+ movs r2, 0x7\n\
+ adds r3, r5, 0\n\
+ bl sub_814524C\n\
+ ldr r0, _08145368 @ =gUnknown_0840B84B\n\
+ str r6, [sp]\n\
+ movs r1, 0x7\n\
+ movs r2, 0x7\n\
+ adds r3, r5, 0\n\
+ bl sub_814524C\n\
+ ldr r4, _0814536C @ =gUnknown_0840B85A\n\
+ str r6, [sp]\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xB\n\
+ movs r2, 0x7\n\
+ adds r3, r5, 0\n\
+ bl sub_814524C\n\
+ str r6, [sp]\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x10\n\
+ movs r2, 0x7\n\
+ adds r3, r5, 0\n\
+ bl sub_814524C\n\
+ ldr r0, _08145370 @ =gUnknown_0840B869\n\
+ str r6, [sp]\n\
+ movs r1, 0x14\n\
+ movs r2, 0x7\n\
+ adds r3, r5, 0\n\
+ bl sub_814524C\n\
+ ldr r0, _08145374 @ =gUnknown_0840B878\n\
+ str r6, [sp]\n\
+ movs r1, 0x18\n\
+ movs r2, 0x7\n\
+ adds r3, r5, 0\n\
+ bl sub_814524C\n\
+ add sp, 0x4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08145360: .4byte gUnknown_0840B83C\n\
+_08145364: .4byte 0x000003ff\n\
+_08145368: .4byte gUnknown_0840B84B\n\
+_0814536C: .4byte gUnknown_0840B85A\n\
+_08145370: .4byte gUnknown_0840B869\n\
+_08145374: .4byte gUnknown_0840B878\n\
+ .syntax divided\n");
+}
+#endif
+
+static void spritecb_player_8145378(struct Sprite *sprite) {
+ if (gUnknown_0203935C != 0)
+ {
+ DestroySprite(sprite);
+ return;
+ }
+
+ switch (sprite->data0)
+ {
+ case 0:
+ StartSpriteAnimIfDifferent(sprite, 0);
+ break;
+
+ case 1:
+ StartSpriteAnimIfDifferent(sprite, 1);
+ if (sprite->pos1.x > - 32)
+ {
+ sprite->pos1.x -= 1;
+ }
+ break;
+
+ case 2:
+ StartSpriteAnimIfDifferent(sprite, 2);
+ break;
+
+ case 3:
+ StartSpriteAnimIfDifferent(sprite, 3);
+ break;
+
+ case 4:
+ StartSpriteAnimIfDifferent(sprite, 0);
+ if (sprite->pos1.x > 120)
+ {
+ sprite->pos1.x -= 1;
+ }
+ break;
+
+ case 5:
+ StartSpriteAnimIfDifferent(sprite, 0);
+ if (sprite->pos1.x > - 32)
+ {
+ sprite->pos1.x -= 1;
+ }
+ break;
+ }
+}
+
+static void spritecb_rival_8145420(struct Sprite *sprite) {
+ if (gUnknown_0203935C != 0)
+ {
+ DestroySprite(sprite);
+ return;
+ }
+
+ switch (sprite->data0)
+ {
+ case 0:
+ sprite->pos2.y = 0;
+ StartSpriteAnimIfDifferent(sprite, 0);
+ break;
+
+ case 1:
+ if (sprite->pos1.x > 200)
+ {
+ StartSpriteAnimIfDifferent(sprite, 1);
+ }
+ else
+ {
+ StartSpriteAnimIfDifferent(sprite, 2);
+ }
+
+ if (sprite->pos1.x > - 32)
+ {
+ sprite->pos1.x -= 2;
+ }
+
+ sprite->pos2.y = - gUnknown_0203935A;
+ break;
+
+ case 2:
+ sprite->data7 += 1;
+ StartSpriteAnimIfDifferent(sprite, 0);
+
+ if ((sprite->data7 & 3) == 0)
+ {
+ sprite->pos1.x += 1;
+ }
+ break;
+
+ case 3:
+ StartSpriteAnimIfDifferent(sprite, 0);
+
+ if (sprite->pos1.x > - 32)
+ {
+ sprite->pos1.x -= 1;
+ }
+ break;
+
+
+ }
+}
+
+__attribute__((naked))
+void spritecb_81454E0(struct Sprite *sprite) {
+ asm(".syntax unified\n\
+ push {r4,r5,lr}\n\
+ sub sp, 0x4\n\
+ adds r5, r0, 0\n\
+ ldr r0, _081454F8 @ =gUnknown_0203935C\n\
+ movs r1, 0\n\
+ ldrsh r0, [r0, r1]\n\
+ cmp r0, 0\n\
+ beq _081454FC\n\
+ adds r0, r5, 0\n\
+ bl DestroySprite\n\
+ b _081456A6\n\
+ .align 2, 0\n\
+_081454F8: .4byte gUnknown_0203935C\n\
+_081454FC:\n\
+ ldrh r0, [r5, 0x3C]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5, 0x3C]\n\
+ movs r2, 0x2E\n\
+ ldrsh r0, [r5, r2]\n\
+ cmp r0, 0xA\n\
+ bhi _08145544\n\
+ lsls r0, 2\n\
+ ldr r1, _08145514 @ =_08145518\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_08145514: .4byte _08145518\n\
+ .align 2, 0\n\
+_08145518:\n\
+ .4byte _08145544\n\
+ .4byte _0814559E\n\
+ .4byte _08145620\n\
+ .4byte _08145660\n\
+ .4byte _08145544\n\
+ .4byte _08145544\n\
+ .4byte _08145544\n\
+ .4byte _08145544\n\
+ .4byte _08145544\n\
+ .4byte _08145544\n\
+ .4byte _08145696\n\
+_08145544:\n\
+ ldrb r1, [r5, 0x1]\n\
+ movs r0, 0x4\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ movs r1, 0x1\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x1]\n\
+ movs r0, 0x30\n\
+ ldrsh r1, [r5, r0]\n\
+ movs r0, 0x1F\n\
+ ands r1, r0\n\
+ lsls r1, 1\n\
+ ldrb r2, [r5, 0x3]\n\
+ movs r0, 0x3F\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x3]\n\
+ movs r0, 0x10\n\
+ strh r0, [r5, 0x32]\n\
+ ldrh r4, [r5, 0x30]\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ movs r0, 0x80\n\
+ lsls r0, 9\n\
+ movs r1, 0x10\n\
+ bl __divsi3\n\
+ adds r1, r0, 0\n\
+ str r1, [sp]\n\
+ adds r0, r4, 0\n\
+ movs r2, 0\n\
+ movs r3, 0\n\
+ bl SetOamMatrix\n\
+ adds r2, r5, 0\n\
+ adds r2, 0x3E\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x5\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ strb r0, [r2]\n\
+ movs r0, 0x1\n\
+ strh r0, [r5, 0x2E]\n\
+ b _081456A6\n\
+_0814559E:\n\
+ ldrh r1, [r5, 0x32]\n\
+ movs r2, 0x32\n\
+ ldrsh r0, [r5, r2]\n\
+ cmp r0, 0xFF\n\
+ bgt _081455D4\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x8\n\
+ strh r0, [r5, 0x32]\n\
+ ldrh r4, [r5, 0x30]\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ movs r0, 0x32\n\
+ ldrsh r1, [r5, r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 9\n\
+ bl __divsi3\n\
+ adds r1, r0, 0\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ str r1, [sp]\n\
+ adds r0, r4, 0\n\
+ movs r2, 0\n\
+ movs r3, 0\n\
+ bl SetOamMatrix\n\
+ b _081455DA\n\
+_081455D4:\n\
+ ldrh r0, [r5, 0x2E]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5, 0x2E]\n\
+_081455DA:\n\
+ movs r2, 0x30\n\
+ ldrsh r1, [r5, r2]\n\
+ cmp r1, 0x2\n\
+ beq _081456A6\n\
+ cmp r1, 0x2\n\
+ bgt _081455EC\n\
+ cmp r1, 0x1\n\
+ beq _081455F2\n\
+ b _081456A6\n\
+_081455EC:\n\
+ cmp r1, 0x3\n\
+ beq _0814560A\n\
+ b _081456A6\n\
+_081455F2:\n\
+ ldrh r1, [r5, 0x3C]\n\
+ movs r0, 0x3\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08145602\n\
+ ldrh r0, [r5, 0x22]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5, 0x22]\n\
+_08145602:\n\
+ ldrh r0, [r5, 0x20]\n\
+ subs r0, 0x2\n\
+ strh r0, [r5, 0x20]\n\
+ b _081456A6\n\
+_0814560A:\n\
+ ldrh r0, [r5, 0x3C]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _08145618\n\
+ ldrh r0, [r5, 0x22]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5, 0x22]\n\
+_08145618:\n\
+ ldrh r0, [r5, 0x20]\n\
+ adds r0, 0x2\n\
+ strh r0, [r5, 0x20]\n\
+ b _081456A6\n\
+_08145620:\n\
+ ldrh r1, [r5, 0x34]\n\
+ movs r2, 0x34\n\
+ ldrsh r0, [r5, r2]\n\
+ cmp r0, 0\n\
+ beq _08145630\n\
+ subs r0, r1, 0x1\n\
+ strh r0, [r5, 0x34]\n\
+ b _081456A6\n\
+_08145630:\n\
+ ldr r1, _0814565C @ =REG_BLDCNT\n\
+ movs r2, 0xF4\n\
+ lsls r2, 4\n\
+ adds r0, r2, 0\n\
+ strh r0, [r1]\n\
+ adds r1, 0x2\n\
+ movs r0, 0x10\n\
+ strh r0, [r1]\n\
+ ldrb r1, [r5, 0x1]\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x1]\n\
+ movs r0, 0x10\n\
+ strh r0, [r5, 0x34]\n\
+ ldrh r0, [r5, 0x2E]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5, 0x2E]\n\
+ b _081456A6\n\
+ .align 2, 0\n\
+_0814565C: .4byte REG_BLDCNT\n\
+_08145660:\n\
+ ldrh r1, [r5, 0x34]\n\
+ movs r2, 0x34\n\
+ ldrsh r0, [r5, r2]\n\
+ cmp r0, 0\n\
+ beq _08145684\n\
+ subs r1, 0x1\n\
+ strh r1, [r5, 0x34]\n\
+ ldr r3, _08145680 @ =REG_BLDALPHA\n\
+ movs r0, 0x34\n\
+ ldrsh r2, [r5, r0]\n\
+ movs r0, 0x10\n\
+ subs r0, r2\n\
+ lsls r0, 8\n\
+ adds r1, r0\n\
+ strh r1, [r3]\n\
+ b _081456A6\n\
+ .align 2, 0\n\
+_08145680: .4byte REG_BLDALPHA\n\
+_08145684:\n\
+ adds r2, r5, 0\n\
+ adds r2, 0x3E\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ movs r0, 0xA\n\
+ strh r0, [r5, 0x2E]\n\
+ b _081456A6\n\
+_08145696:\n\
+ ldr r0, _081456B0 @ =REG_BLDCNT\n\
+ movs r1, 0\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, r5, 0\n\
+ bl DestroySprite\n\
+_081456A6:\n\
+ add sp, 0x4\n\
+ pop {r4,r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_081456B0: .4byte REG_BLDCNT\n\
+ .syntax divided\n");
+}
+
+#ifdef NONMATCHING
+u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3) {
+ u32 species;
+ u32 personality;
+ void *palette;
+ u8 spriteId;
+ u8 spriteId2;
+
+ species = NationalPokedexNumToSpecies(nationalNum);
+ switch (species) {
+ case SPECIES_UNOWN:
+ personality = gSaveBlock2.pokedex.unownPersonality;
+ break;
+
+ case SPECIES_SPINDA:
+ personality = gSaveBlock2.pokedex.spindaPersonality;
+ break;
+
+ default:
+ personality = 0;
+ break;
+ }
+
+ LoadSpecialPokePic(
+ &gMonFrontPicTable[species],
+ gMonFrontPicCoords[species].x,
+ gMonFrontPicCoords[species].y,
+ 0x2000000,
+ gUnknown_0840B5A0[arg3],
+ species,
+ personality,
+ 1
+ );
+
+ palette = species_and_otid_get_pal(species, 0, 0xFFFF);
+ LoadCompressedPalette(palette, 0x100 + (arg3 * 16), 0x20);
+ sub_8143648(arg3, arg3);
+
+ spriteId = CreateSprite(&gUnknown_02024E8C, x, y, 0);
+ gSprites[spriteId].oam.paletteNum = arg3;
+ gSprites[spriteId].oam.priority = 1;
+ gSprites[spriteId].data1 = arg3 + 1;
+ gSprites[spriteId].invisible = TRUE;
+ gSprites[spriteId].callback = spritecb_81454E0;
+
+ spriteId2 = CreateSprite(&gSpriteTemplate_840CAEC, gSprites[spriteId].pos1.x, gSprites[spriteId].pos1.y, 1);
+ gSprites[spriteId2].data0 = spriteId;
+
+ StartSpriteAnimIfDifferent(&gSprites[spriteId2], arg3);
+
+ return spriteId;
+}
+#else
+__attribute__((naked))
+u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3) {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x14\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ mov r10, r1\n\
+ lsls r2, 16\n\
+ lsrs r2, 16\n\
+ str r2, [sp, 0x10]\n\
+ lsls r3, 16\n\
+ lsrs r3, 16\n\
+ mov r9, r3\n\
+ adds r0, r6, 0\n\
+ bl NationalPokedexNumToSpecies\n\
+ adds r6, r0, 0\n\
+ cmp r6, 0xC9\n\
+ beq _081456F8\n\
+ movs r0, 0x9A\n\
+ lsls r0, 1\n\
+ cmp r6, r0\n\
+ beq _081456EE\n\
+ movs r7, 0\n\
+ b _081456FC\n\
+_081456EE:\n\
+ ldr r0, _081456F4 @ =gSaveBlock2\n\
+ ldr r7, [r0, 0x20]\n\
+ b _081456FC\n\
+ .align 2, 0\n\
+_081456F4: .4byte gSaveBlock2\n\
+_081456F8:\n\
+ ldr r0, _081457E8 @ =gSaveBlock2\n\
+ ldr r7, [r0, 0x1C]\n\
+_081456FC:\n\
+ lsls r0, r6, 3\n\
+ ldr r1, _081457EC @ =gMonFrontPicTable\n\
+ adds r0, r1\n\
+ ldr r1, _081457F0 @ =gMonFrontPicCoords\n\
+ lsls r2, r6, 2\n\
+ adds r2, r1\n\
+ ldrb r1, [r2]\n\
+ ldrb r2, [r2, 0x1]\n\
+ movs r3, 0x80\n\
+ lsls r3, 18\n\
+ ldr r4, _081457F4 @ =gUnknown_0840B5A0\n\
+ mov r8, r4\n\
+ mov r5, r9\n\
+ lsls r4, r5, 2\n\
+ add r4, r8\n\
+ ldr r4, [r4]\n\
+ str r4, [sp]\n\
+ str r6, [sp, 0x4]\n\
+ str r7, [sp, 0x8]\n\
+ movs r4, 0x1\n\
+ str r4, [sp, 0xC]\n\
+ bl LoadSpecialPokePic\n\
+ ldr r2, _081457F8 @ =0x0000ffff\n\
+ adds r0, r6, 0\n\
+ movs r1, 0\n\
+ bl species_and_otid_get_pal\n\
+ lsls r5, 4\n\
+ mov r8, r5\n\
+ movs r1, 0x80\n\
+ lsls r1, 1\n\
+ add r1, r8\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ movs r2, 0x20\n\
+ bl LoadCompressedPalette\n\
+ mov r7, r9\n\
+ lsls r6, r7, 24\n\
+ lsrs r6, 24\n\
+ mov r0, r9\n\
+ adds r1, r6, 0\n\
+ bl sub_8143648\n\
+ ldr r0, _081457FC @ =gUnknown_02024E8C\n\
+ mov r2, r10\n\
+ lsls r1, r2, 16\n\
+ asrs r1, 16\n\
+ ldr r3, [sp, 0x10]\n\
+ lsls r2, r3, 16\n\
+ asrs r2, 16\n\
+ movs r3, 0\n\
+ bl CreateSprite\n\
+ adds r4, r0, 0\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ ldr r5, _08145800 @ =gSprites\n\
+ lsls r2, r4, 4\n\
+ adds r2, r4\n\
+ lsls r2, 2\n\
+ adds r3, r2, r5\n\
+ ldrb r1, [r3, 0x5]\n\
+ movs r0, 0xF\n\
+ ands r0, r1\n\
+ mov r7, r8\n\
+ orrs r0, r7\n\
+ movs r1, 0xD\n\
+ negs r1, r1\n\
+ ands r0, r1\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ strb r0, [r3, 0x5]\n\
+ mov r0, r9\n\
+ adds r0, 0x1\n\
+ strh r0, [r3, 0x30]\n\
+ movs r0, 0x3E\n\
+ adds r0, r3\n\
+ mov r8, r0\n\
+ ldrb r0, [r0]\n\
+ orrs r0, r1\n\
+ mov r1, r8\n\
+ strb r0, [r1]\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x1C\n\
+ adds r2, r0\n\
+ ldr r0, _08145804 @ =spritecb_81454E0\n\
+ str r0, [r2]\n\
+ ldr r0, _08145808 @ =gSpriteTemplate_840CAEC\n\
+ movs r2, 0x20\n\
+ ldrsh r1, [r3, r2]\n\
+ movs r7, 0x22\n\
+ ldrsh r2, [r3, r7]\n\
+ movs r3, 0x1\n\
+ bl CreateSprite\n\
+ adds r1, r0, 0\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r5\n\
+ strh r4, [r0, 0x2E]\n\
+ adds r1, r6, 0\n\
+ bl StartSpriteAnimIfDifferent\n\
+ adds r0, r4, 0\n\
+ add sp, 0x14\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_081457E8: .4byte gSaveBlock2\n\
+_081457EC: .4byte gMonFrontPicTable\n\
+_081457F0: .4byte gMonFrontPicCoords\n\
+_081457F4: .4byte gUnknown_0840B5A0\n\
+_081457F8: .4byte 0x0000ffff\n\
+_081457FC: .4byte gUnknown_02024E8C\n\
+_08145800: .4byte gSprites\n\
+_08145804: .4byte spritecb_81454E0\n\
+_08145808: .4byte gSpriteTemplate_840CAEC\n\
+ .syntax divided\n");
+}
+#endif
+
+void spritecb_814580C(struct Sprite *sprite) {
+ if (gSprites[sprite->data0].data0 == 10 || gUnknown_0203935C)
+ {
+ DestroySprite(sprite);
+ return;
+ }
+
+ sprite->invisible = gSprites[sprite->data0].invisible;
+ sprite->oam.objMode = gSprites[sprite->data0].oam.objMode;
+ sprite->oam.affineMode = gSprites[sprite->data0].oam.affineMode;
+ sprite->oam.matrixNum = gSprites[sprite->data0].oam.matrixNum;
+ sprite->pos1.x = gSprites[sprite->data0].pos1.x;
+ sprite->pos1.y = gSprites[sprite->data0].pos1.y;
+}
+
+__attribute__((naked))
+void sub_81458DC(void) {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ ldr r7, _0814597C @ =0x0201c000\n\
+ ldr r0, _08145980 @ =0x00004023\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ bl GetStarterPokemon\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ bl SpeciesToNationalPokedexNum\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r10, r0\n\
+ movs r4, 0x1\n\
+ movs r5, 0\n\
+ ldr r0, _08145984 @ =0x00000181\n\
+ mov r8, r0\n\
+_0814590E:\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x1\n\
+ bl sub_8090D90\n\
+ lsls r0, 24\n\
+ adds r6, r7, 0\n\
+ adds r6, 0x90\n\
+ cmp r0, 0\n\
+ beq _0814592C\n\
+ lsls r0, r5, 1\n\
+ adds r0, r6, r0\n\
+ strh r4, [r0]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+_0814592C:\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ cmp r4, r8\n\
+ bls _0814590E\n\
+ adds r4, r5, 0\n\
+ ldr r0, _08145984 @ =0x00000181\n\
+ lsls r1, r4, 16\n\
+ mov r9, r1\n\
+ movs r2, 0x8E\n\
+ adds r2, r7\n\
+ mov r8, r2\n\
+ adds r1, r7, 0\n\
+ adds r1, 0x86\n\
+ str r1, [sp]\n\
+ cmp r4, r0\n\
+ bhi _08145964\n\
+ adds r1, r6, 0\n\
+ movs r3, 0\n\
+ adds r2, r0, 0\n\
+_08145954:\n\
+ lsls r0, r4, 1\n\
+ adds r0, r1, r0\n\
+ strh r3, [r0]\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ cmp r4, r2\n\
+ bls _08145954\n\
+_08145964:\n\
+ movs r2, 0xE5\n\
+ lsls r2, 2\n\
+ adds r0, r7, r2\n\
+ strh r5, [r0]\n\
+ mov r1, r9\n\
+ lsrs r0, r1, 16\n\
+ cmp r0, 0x43\n\
+ bhi _08145988\n\
+ mov r2, r8\n\
+ strh r5, [r2]\n\
+ b _0814598E\n\
+ .align 2, 0\n\
+_0814597C: .4byte 0x0201c000\n\
+_08145980: .4byte 0x00004023\n\
+_08145984: .4byte 0x00000181\n\
+_08145988:\n\
+ movs r0, 0x44\n\
+ mov r1, r8\n\
+ strh r0, [r1]\n\
+_0814598E:\n\
+ movs r5, 0\n\
+ movs r2, 0xE5\n\
+ lsls r2, 2\n\
+ adds r4, r7, r2\n\
+ mov r9, r5\n\
+ b _0814599E\n\
+_0814599A:\n\
+ cmp r5, 0x43\n\
+ bhi _081459EE\n\
+_0814599E:\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ ldrh r1, [r4]\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ lsls r1, r5, 1\n\
+ adds r1, r7, r1\n\
+ lsls r0, r2, 1\n\
+ adds r3, r6, r0\n\
+ ldrh r0, [r3]\n\
+ strh r0, [r1]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ mov r0, r9\n\
+ strh r0, [r3]\n\
+ ldrh r0, [r4]\n\
+ subs r0, 0x1\n\
+ strh r0, [r4]\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r2, r0\n\
+ beq _081459E8\n\
+ ldrh r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r0, r6, r0\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r3]\n\
+ ldrh r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r0, r6, r0\n\
+ mov r1, r9\n\
+ strh r1, [r0]\n\
+_081459E8:\n\
+ ldrh r0, [r4]\n\
+ cmp r0, 0\n\
+ bne _0814599A\n\
+_081459EE:\n\
+ mov r2, r8\n\
+ ldrh r0, [r2]\n\
+ cmp r0, 0x43\n\
+ bhi _08145A26\n\
+ adds r5, r0, 0\n\
+ movs r2, 0\n\
+ cmp r5, 0x43\n\
+ bhi _08145A5C\n\
+ mov r3, r8\n\
+_08145A00:\n\
+ lsls r1, r5, 1\n\
+ adds r1, r7, r1\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7, r0\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r1]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ ldrh r0, [r3]\n\
+ cmp r2, r0\n\
+ bne _08145A1A\n\
+ movs r2, 0\n\
+_08145A1A:\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ cmp r5, 0x43\n\
+ bls _08145A00\n\
+ b _08145A5C\n\
+_08145A26:\n\
+ movs r4, 0\n\
+ ldrh r0, [r7]\n\
+ cmp r0, r10\n\
+ beq _08145A42\n\
+_08145A2E:\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ lsls r0, r4, 1\n\
+ adds r0, r7, r0\n\
+ ldrh r0, [r0]\n\
+ cmp r0, r10\n\
+ beq _08145A42\n\
+ cmp r4, 0x43\n\
+ bls _08145A2E\n\
+_08145A42:\n\
+ mov r1, r8\n\
+ ldrh r0, [r1]\n\
+ subs r0, 0x1\n\
+ cmp r4, r0\n\
+ bge _08145A5C\n\
+ lsls r0, r4, 1\n\
+ adds r0, r7, r0\n\
+ ldr r2, [sp]\n\
+ ldrh r1, [r2]\n\
+ strh r1, [r0]\n\
+ mov r0, r10\n\
+ strh r0, [r2]\n\
+ b _08145A62\n\
+_08145A5C:\n\
+ mov r2, r10\n\
+ ldr r1, [sp]\n\
+ strh r2, [r1]\n\
+_08145A62:\n\
+ movs r0, 0x44\n\
+ mov r1, r8\n\
+ strh r0, [r1]\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}