summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/contest_link_80F57C4.s2512
-rw-r--r--asm/easy_chat.s5972
-rw-r--r--asm/flying.s817
-rw-r--r--data/easy_chat.s22
-rw-r--r--include/contest_link_80FC4F4.h5
-rw-r--r--include/dewford_trend.h1
-rw-r--r--include/graphics.h4
-rw-r--r--include/strings.h17
-rw-r--r--ld_script.txt2
-rw-r--r--src/contest_link_80F57C4.c1729
-rw-r--r--src/easy_chat.c3591
-rw-r--r--src/flying.c312
12 files changed, 5326 insertions, 9658 deletions
diff --git a/asm/contest_link_80F57C4.s b/asm/contest_link_80F57C4.s
deleted file mode 100644
index d73293648..000000000
--- a/asm/contest_link_80F57C4.s
+++ /dev/null
@@ -1,2512 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80F7364
-sub_80F7364: @ 80F7364
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r6, r1, 24
- ldr r1, =gUnknown_02039F18
- lsls r0, r5, 1
- adds r0, r1
- movs r2, 0
- ldrsh r0, [r0, r2]
- adds r7, r1, 0
- cmp r0, 0
- bge _080F7380
- negs r0, r0
-_080F7380:
- lsls r4, r0, 16
- adds r0, r4, 0
- movs r1, 0x50
- bl __udivsi3
- adds r2, r0, 0
- ldr r0, =0x0000ffff
- ands r0, r2
- cmp r0, 0
- beq _080F739A
- movs r0, 0x80
- lsls r0, 9
- adds r2, r0
-_080F739A:
- lsrs r2, 16
- cmp r2, 0
- bne _080F73A6
- cmp r4, 0
- beq _080F73A6
- movs r2, 0x1
-_080F73A6:
- cmp r6, 0
- beq _080F73B0
- cmp r2, 0xA
- bls _080F73B0
- movs r2, 0xA
-_080F73B0:
- lsls r0, r5, 1
- adds r0, r7
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bge _080F73CC
- negs r0, r2
- lsls r0, 24
- b _080F73CE
- .pool
-_080F73CC:
- lsls r0, r2, 24
-_080F73CE:
- lsrs r0, 24
- lsls r0, 24
- asrs r0, 24
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80F7364
-
- thumb_func_start sub_80F73DC
-sub_80F73DC: @ 80F73DC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r1, =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r7, r0, r1
- ldrh r2, [r7, 0x1C]
- movs r0, 0x1C
- ldrsh r6, [r7, r0]
- cmp r6, 0
- bne _080F741C
- movs r1, 0x8
- ldrsh r0, [r7, r1]
- movs r1, 0x3
- subs r1, r0
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- strh r0, [r7, 0x1E]
- adds r0, r2, 0x1
- strh r0, [r7, 0x1C]
- b _080F74A4
- .pool
-_080F741C:
- cmp r6, 0x1
- bne _080F74A4
- ldrh r0, [r7, 0x1E]
- subs r0, 0x1
- strh r0, [r7, 0x1E]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080F74A4
- movs r2, 0x8
- ldrsh r4, [r7, r2]
- lsls r4, 17
- ldr r0, =0x50430000
- adds r4, r0
- lsrs r4, 16
- movs r1, 0xA
- ldrsh r0, [r7, r1]
- lsls r3, r0, 1
- adds r3, r0
- adds r3, 0x5
- lsls r3, 24
- lsrs r3, 24
- movs r2, 0x2
- mov r9, r2
- str r2, [sp]
- str r6, [sp, 0x4]
- movs r5, 0x11
- str r5, [sp, 0x8]
- str r6, [sp, 0xC]
- movs r0, 0x2
- adds r1, r4, 0
- movs r2, 0x1
- bl WriteSequenceToBgTilemapBuffer
- adds r4, 0x10
- lsls r4, 16
- lsrs r4, 16
- movs r1, 0xA
- ldrsh r0, [r7, r1]
- lsls r3, r0, 1
- adds r3, r0
- adds r3, 0x6
- lsls r3, 24
- lsrs r3, 24
- mov r2, r9
- str r2, [sp]
- str r6, [sp, 0x4]
- str r5, [sp, 0x8]
- str r6, [sp, 0xC]
- movs r0, 0x2
- adds r1, r4, 0
- movs r2, 0x1
- bl WriteSequenceToBgTilemapBuffer
- ldr r0, =gUnknown_0203A034
- ldr r0, [r0]
- ldr r1, [r0]
- ldrb r0, [r1, 0x5]
- adds r0, 0x1
- strb r0, [r1, 0x5]
- mov r0, r8
- bl DestroyTask
- movs r0, 0x18
- bl PlaySE
-_080F74A4:
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F73DC
-
- thumb_func_start sub_80F74BC
-sub_80F74BC: @ 80F74BC
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r1, =gContestFinalStandings
- ldrb r0, [r1]
- ldr r6, =gUnknown_0203A034
- cmp r0, 0
- beq _080F74DE
-_080F74D0:
- adds r4, 0x1
- cmp r4, 0x3
- bgt _080F74DE
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F74D0
-_080F74DE:
- ldr r1, [r6]
- lsls r3, r4, 1
- adds r3, r4
- lsls r0, r3, 6
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2
- ldr r1, [r1, 0x14]
- adds r1, r0
- adds r3, 0x4
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0x3
- str r0, [sp, 0x4]
- movs r0, 0x9
- str r0, [sp, 0x8]
- movs r0, 0x2
- movs r2, 0
- bl CopyToBgTilemapBufferRect_ChangePalette
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0x1C]
- movs r1, 0x1
- strh r1, [r0, 0x20]
- ldr r1, =sub_80F753C
- str r1, [r0]
- ldr r0, [r6]
- ldr r0, [r0]
- strb r5, [r0, 0x3]
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F74BC
-
- thumb_func_start sub_80F753C
-sub_80F753C: @ 80F753C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r0, [r4, 0x1E]
- adds r0, 0x1
- strh r0, [r4, 0x1E]
- lsls r0, 16
- asrs r5, r0, 16
- cmp r5, 0x1
- bne _080F75A0
- movs r0, 0
- strh r0, [r4, 0x1E]
- ldrh r2, [r4, 0x20]
- lsls r2, 24
- lsrs r2, 24
- ldr r3, =0x00006f8d
- movs r0, 0x91
- movs r1, 0x1
- bl BlendPalette
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080F7590
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- bne _080F75A0
- strh r5, [r4, 0x22]
- b _080F75A0
- .pool
-_080F7590:
- ldrh r0, [r4, 0x20]
- subs r0, 0x1
- strh r0, [r4, 0x20]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bne _080F75A0
- strh r0, [r4, 0x22]
-_080F75A0:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80F753C
-
- thumb_func_start sub_80F75A8
-sub_80F75A8: @ 80F75A8
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0x9
- bgt _080F75D0
- adds r0, r1, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _080F7610
- ldrh r0, [r4, 0x30]
- movs r1, 0
- bl PlayCry1
- movs r0, 0
- strh r0, [r4, 0x30]
- b _080F7610
-_080F75D0:
- movs r0, 0xC0
- lsls r0, 3
- adds r2, r0, 0
- ldrh r1, [r4, 0x30]
- adds r2, r1
- lsls r1, r2, 16
- asrs r1, 24
- ldrh r0, [r4, 0x20]
- subs r0, r1
- strh r0, [r4, 0x20]
- movs r1, 0xFF
- ands r2, r1
- strh r2, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x77
- bgt _080F75F6
- movs r0, 0x78
- strh r0, [r4, 0x20]
-_080F75F6:
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- cmp r0, 0x78
- bne _080F7610
- ldr r0, =SpriteCallbackDummy
- str r0, [r4, 0x1C]
- movs r0, 0
- strh r0, [r4, 0x30]
- ldr r0, =gUnknown_0203A034
- ldr r0, [r0]
- ldr r1, [r0]
- movs r0, 0x1
- strb r0, [r1, 0x6]
-_080F7610:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F75A8
-
- thumb_func_start sub_80F7620
-sub_80F7620: @ 80F7620
- push {lr}
- adds r3, r0, 0
- movs r0, 0xC0
- lsls r0, 3
- adds r2, r0, 0
- ldrh r0, [r3, 0x30]
- adds r2, r0
- lsls r1, r2, 16
- asrs r1, 24
- ldrh r0, [r3, 0x20]
- subs r0, r1
- strh r0, [r3, 0x20]
- movs r1, 0xFF
- ands r2, r1
- strh r2, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- bge _080F7664
- ldr r0, =SpriteCallbackDummy
- str r0, [r3, 0x1C]
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =gUnknown_0203A034
- ldr r0, [r0]
- ldr r1, [r0]
- movs r0, 0x2
- strb r0, [r1, 0x6]
-_080F7664:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F7620
-
- thumb_func_start sub_80F7670
-sub_80F7670: @ 80F7670
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r1, r0, r1
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _080F7732
- movs r0, 0
- strh r0, [r1, 0x8]
- ldr r0, =gUnknown_0203A034
- mov r8, r0
- ldr r0, [r0]
- ldr r0, [r0]
- ldrb r0, [r0, 0x7]
- cmp r0, 0x27
- bhi _080F7732
- ldr r4, =gSpriteTemplate_858D860
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xF0
- bl __umodsi3
- adds r1, r0, 0
- subs r1, 0x14
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- movs r2, 0x2C
- movs r3, 0x5
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl Random
- ldr r1, =gSprites
- lsls r5, r4, 4
- adds r5, r4
- lsls r5, 2
- adds r5, r1
- lsls r0, 23
- lsrs r0, 23
- strh r0, [r5, 0x2E]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x18
- bl __umodsi3
- adds r0, 0x10
- strh r0, [r5, 0x30]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xFF
- ands r0, r1
- adds r0, 0x30
- strh r0, [r5, 0x32]
- bl Random
- ldrh r6, [r5, 0x4]
- lsls r4, r6, 22
- lsrs r4, 22
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x11
- bl __umodsi3
- adds r4, r0
- ldr r1, =0x000003ff
- adds r0, r1, 0
- ands r4, r0
- ldr r0, =0xfffffc00
- ands r0, r6
- orrs r0, r4
- strh r0, [r5, 0x4]
- mov r1, r8
- ldr r0, [r1]
- ldr r1, [r0]
- ldrb r0, [r1, 0x7]
- adds r0, 0x1
- strb r0, [r1, 0x7]
-_080F7732:
- ldr r0, =gUnknown_0203A034
- ldr r0, [r0]
- ldr r0, [r0]
- ldrb r0, [r0, 0x9]
- cmp r0, 0
- beq _080F7744
- adds r0, r7, 0
- bl DestroyTask
-_080F7744:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F7670
-
- thumb_func_start sub_80F7768
-sub_80F7768: @ 80F7768
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- ldrh r1, [r4, 0x34]
- adds r0, r1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 24
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r1, [r4, 0x32]
- ldrh r0, [r4, 0x36]
- adds r1, r0
- lsls r0, r1, 16
- asrs r0, 24
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r4, 0x36]
- ldrh r0, [r4, 0x22]
- adds r0, 0x1
- strh r0, [r4, 0x22]
- ldr r5, =gUnknown_0203A034
- ldr r0, [r5]
- ldr r0, [r0]
- ldrb r0, [r0, 0x9]
- cmp r0, 0
- beq _080F77B6
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_080F77B6:
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- cmp r0, 0xF8
- bgt _080F77C6
- movs r2, 0x22
- ldrsh r0, [r4, r2]
- cmp r0, 0x74
- ble _080F77D6
-_080F77C6:
- adds r0, r4, 0
- bl DestroySprite
- ldr r0, [r5]
- ldr r1, [r0]
- ldrb r0, [r1, 0x7]
- subs r0, 0x1
- strb r0, [r1, 0x7]
-_080F77D6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F7768
-
- thumb_func_start sub_80F77E0
-sub_80F77E0: @ 80F77E0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r0, =sub_80F7824
- movs r1, 0x8
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- strh r5, [r1, 0xA]
- ldr r0, =gContestMons
- lsls r4, 6
- adds r4, r0
- ldrh r0, [r4]
- strh r0, [r1, 0xC]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F77E0
-
- thumb_func_start sub_80F7824
-sub_80F7824: @ 80F7824
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrb r5, [r4, 0x8]
- ldrh r0, [r4, 0x1C]
- adds r1, r0, 0x1
- strh r1, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0xA
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _080F786E
- movs r0, 0
- strh r0, [r4, 0x1C]
- ldrh r0, [r4, 0xC]
- ldrb r2, [r4, 0x1E]
- ldr r1, =gContestMons
- lsls r3, r5, 6
- adds r1, 0x38
- adds r3, r1
- ldr r1, [r3]
- str r1, [sp]
- adds r1, r5, 0
- movs r3, 0
- bl sub_80F69B8
- ldrh r0, [r4, 0x1E]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r4, 0x1E]
-_080F786E:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F7824
-
- thumb_func_start sub_80F7880
-sub_80F7880: @ 80F7880
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, =gUnknown_02039F08
- ldrh r2, [r0]
- adds r4, r0, 0
- adds r3, r4, 0x2
- movs r0, 0x2
- mov r8, r0
-_080F7898:
- lsls r0, r2, 16
- asrs r0, 16
- movs r5, 0
- ldrsh r1, [r3, r5]
- cmp r0, r1
- bge _080F78A6
- ldrh r2, [r3]
-_080F78A6:
- adds r3, 0x2
- movs r0, 0x1
- negs r0, r0
- add r8, r0
- mov r1, r8
- cmp r1, 0
- bge _080F7898
- lsls r0, r2, 16
- str r0, [sp]
- cmp r0, 0
- bge _080F78E4
- ldrh r2, [r4]
- adds r3, r4, 0x2
- movs r4, 0x2
- mov r8, r4
-_080F78C4:
- lsls r0, r2, 16
- asrs r0, 16
- movs r5, 0
- ldrsh r1, [r3, r5]
- cmp r0, r1
- ble _080F78D2
- ldrh r2, [r3]
-_080F78D2:
- adds r3, 0x2
- movs r0, 0x1
- negs r0, r0
- add r8, r0
- lsls r1, r2, 16
- str r1, [sp]
- mov r4, r8
- cmp r4, 0
- bge _080F78C4
-_080F78E4:
- movs r5, 0
- mov r8, r5
- mov r10, r5
-_080F78EA:
- ldr r0, =gContestMonConditions
- mov r1, r8
- lsls r7, r1, 1
- adds r0, r7, r0
- movs r2, 0
- ldrsh r1, [r0, r2]
- lsls r0, r1, 5
- subs r0, r1
- lsls r0, 2
- adds r0, r1
- lsls r0, 3
- ldr r4, [sp]
- asrs r5, r4, 16
- adds r1, r5, 0
- cmp r5, 0
- bge _080F790C
- negs r1, r5
-_080F790C:
- bl __divsi3
- adds r4, r0, 0
- movs r1, 0xA
- bl __modsi3
- cmp r0, 0x4
- ble _080F791E
- adds r4, 0xA
-_080F791E:
- ldr r0, =gUnknown_0203A034
- mov r9, r0
- ldr r0, [r0]
- ldr r0, [r0, 0x4]
- mov r1, r10
- adds r6, r1, r0
- adds r0, r4, 0
- movs r1, 0xA
- bl __divsi3
- str r0, [r6]
- ldr r0, =gUnknown_02039F18
- adds r7, r0
- movs r2, 0
- ldrsh r1, [r7, r2]
- cmp r1, 0
- bge _080F7942
- negs r1, r1
-_080F7942:
- lsls r0, r1, 5
- subs r0, r1
- lsls r0, 2
- adds r0, r1
- lsls r0, 3
- adds r1, r5, 0
- cmp r1, 0
- bge _080F7954
- negs r1, r1
-_080F7954:
- bl __divsi3
- adds r4, r0, 0
- movs r1, 0xA
- bl __modsi3
- cmp r0, 0x4
- ble _080F7966
- adds r4, 0xA
-_080F7966:
- adds r0, r4, 0
- movs r1, 0xA
- bl __divsi3
- str r0, [r6, 0x4]
- movs r4, 0
- ldrsh r0, [r7, r4]
- cmp r0, 0
- bge _080F797C
- movs r0, 0x1
- strb r0, [r6, 0x10]
-_080F797C:
- mov r5, r9
- ldr r0, [r5]
- ldr r0, [r0, 0x4]
- mov r1, r10
- adds r4, r1, r0
- ldr r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- subs r0, r1
- lsls r0, 11
- movs r1, 0x64
- bl __divsi3
- adds r1, r0, 0
- movs r5, 0xFF
- ands r0, r5
- cmp r0, 0x7F
- bls _080F79A8
- movs r2, 0x80
- lsls r2, 1
- adds r1, r2
-_080F79A8:
- lsrs r0, r1, 8
- str r0, [r4, 0x8]
- ldr r1, [r4, 0x4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- subs r0, r1
- lsls r0, 11
- movs r1, 0x64
- bl __divsi3
- adds r1, r0, 0
- ands r0, r5
- cmp r0, 0x7F
- bls _080F79CC
- movs r5, 0x80
- lsls r5, 1
- adds r1, r5
-_080F79CC:
- lsrs r0, r1, 8
- str r0, [r4, 0xC]
- mov r0, r8
- lsls r4, r0, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80F7310
- mov r2, r9
- ldr r1, [r2]
- ldr r1, [r1, 0x4]
- add r1, r10
- strb r0, [r1, 0x11]
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80F7364
- mov r4, r9
- ldr r1, [r4]
- ldr r1, [r1, 0x4]
- add r1, r10
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bge _080F7A02
- negs r0, r0
-_080F7A02:
- strb r0, [r1, 0x12]
- ldr r0, =gContestFinalStandings
- add r0, r8
- ldrb r0, [r0]
- cmp r0, 0
- beq _080F7A60
- mov r5, r9
- ldr r0, [r5]
- ldr r0, [r0, 0x4]
- mov r2, r10
- adds r1, r2, r0
- ldr r5, [r1, 0x8]
- ldrh r3, [r1, 0x8]
- ldr r4, [r1, 0xC]
- ldrh r2, [r1, 0xC]
- ldrb r0, [r1, 0x10]
- cmp r0, 0
- beq _080F7A2C
- lsls r0, r2, 16
- negs r0, r0
- lsrs r2, r0, 16
-_080F7A2C:
- lsls r0, r3, 16
- asrs r3, r0, 16
- lsls r0, r2, 16
- asrs r2, r0, 16
- adds r0, r3, r2
- cmp r0, 0x58
- bne _080F7A60
- cmp r2, 0
- ble _080F7A58
- subs r0, r4, 0x1
- str r0, [r1, 0xC]
- b _080F7A60
- .pool
-_080F7A58:
- cmp r3, 0
- ble _080F7A60
- subs r0, r5, 0x1
- str r0, [r1, 0x8]
-_080F7A60:
- movs r4, 0x14
- add r10, r4
- movs r5, 0x1
- add r8, r5
- mov r0, r8
- cmp r0, 0x3
- bgt _080F7A70
- b _080F78EA
-_080F7A70:
- 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_80F7880
-
- thumb_func_start sub_80F7A80
-sub_80F7A80: @ 80F7A80
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- movs r1, 0
- str r1, [sp, 0x8]
- movs r3, 0
- str r3, [sp, 0xC]
- cmp r0, 0
- bne _080F7B5C
- mov r9, r3
- ldr r4, =gUnknown_0203A034
- mov r10, r4
- movs r7, 0xA0
- lsls r7, 19
- movs r6, 0
-_080F7AAC:
- mov r1, r10
- ldr r0, [r1]
- ldr r0, [r0, 0x4]
- adds r0, r6, r0
- ldrb r2, [r0, 0x11]
- cmp r8, r2
- bcs _080F7B2E
- adds r2, 0x13
- mov r3, r8
- subs r2, r3
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- lsrs r3, r7, 24
- movs r0, 0x1
- str r0, [sp]
- str r0, [sp, 0x4]
- ldr r1, =0x000060b3
- bl FillBgTilemapBufferRect_Palette0
- ldr r0, =sub_80F7CA8
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r5, r0, 24
- mov r0, r10
- ldr r4, [r0]
- ldr r1, [r4, 0x4]
- adds r1, r6, r1
- ldr r0, [r1, 0x8]
- lsls r0, 16
- ldrb r1, [r1, 0x11]
- bl __udivsi3
- mov r1, r8
- adds r1, 0x1
- adds r3, r0, 0
- muls r3, r1
- ldr r0, =0x0000ffff
- ands r0, r3
- ldr r1, =0x00007fff
- cmp r0, r1
- bls _080F7B0A
- movs r1, 0x80
- lsls r1, 9
- adds r3, r1
-_080F7B0A:
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- mov r1, r9
- strh r1, [r0, 0x8]
- lsrs r1, r3, 16
- strh r1, [r0, 0xA]
- ldr r1, [r4]
- ldrb r0, [r1, 0x14]
- adds r0, 0x1
- strb r0, [r1, 0x14]
- ldr r0, [sp, 0x8]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x8]
-_080F7B2E:
- movs r3, 0xC0
- lsls r3, 18
- adds r7, r3
- adds r6, 0x14
- movs r4, 0x1
- add r9, r4
- mov r0, r9
- cmp r0, 0x3
- ble _080F7AAC
- b _080F7C7E
- .pool
-_080F7B5C:
- movs r1, 0
- mov r9, r1
- mov r10, r1
- movs r3, 0xC0
- lsls r3, 19
- str r3, [sp, 0x10]
-_080F7B68:
- ldr r4, =gUnknown_0203A034
- ldr r0, [r4]
- ldr r0, [r0, 0x4]
- add r0, r10
- ldrb r2, [r0, 0x12]
- ldrb r0, [r0, 0x10]
- ldr r1, =0x000060a3
- cmp r0, 0
- beq _080F7B7C
- adds r1, 0x2
-_080F7B7C:
- lsls r0, r2, 24
- asrs r0, 24
- cmp r8, r0
- bge _080F7C64
- mov r3, r8
- lsls r2, r3, 24
- asrs r2, 24
- subs r2, 0x13
- subs r2, r0, r2
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r4, [sp, 0x10]
- lsrs r3, r4, 24
- movs r7, 0x1
- str r7, [sp]
- str r7, [sp, 0x4]
- movs r0, 0x1
- bl FillBgTilemapBufferRect_Palette0
- ldr r0, =sub_80F7CA8
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gUnknown_0203A034
- ldr r6, [r0]
- ldr r1, [r6, 0x4]
- add r1, r10
- ldr r0, [r1, 0xC]
- lsls r0, 16
- ldrb r1, [r1, 0x12]
- bl __udivsi3
- mov r1, r8
- adds r1, 0x1
- adds r3, r0, 0
- muls r3, r1
- ldr r0, =0x0000ffff
- ands r0, r3
- ldr r1, =0x00007fff
- cmp r0, r1
- bls _080F7BDA
- movs r1, 0x80
- lsls r1, 9
- adds r3, r1
-_080F7BDA:
- ldr r1, =gTasks
- lsls r2, r5, 2
- adds r0, r2, r5
- lsls r0, 3
- adds r4, r0, r1
- mov r0, r9
- strh r0, [r4, 0x8]
- ldr r0, [r6, 0x4]
- add r0, r10
- ldrb r0, [r0, 0x10]
- adds r6, r1, 0
- cmp r0, 0
- beq _080F7C1C
- strh r7, [r4, 0xC]
- ldr r0, [sp, 0xC]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0xC]
- b _080F7C26
- .pool
-_080F7C1C:
- ldr r0, [sp, 0x8]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x8]
-_080F7C26:
- ldr r1, =gUnknown_0203A034
- ldr r0, [r1]
- ldr r0, [r0, 0x4]
- mov r4, r10
- adds r1, r4, r0
- ldrb r0, [r1, 0x10]
- ldr r4, =gUnknown_0203A034
- cmp r0, 0
- beq _080F7C4C
- adds r0, r2, r5
- lsls r0, 3
- adds r0, r6
- lsrs r2, r3, 16
- ldr r1, [r1, 0x8]
- subs r1, r2
- b _080F7C58
- .pool
-_080F7C4C:
- adds r0, r2, r5
- lsls r0, 3
- adds r0, r6
- lsrs r2, r3, 16
- ldr r1, [r1, 0x8]
- adds r1, r2
-_080F7C58:
- strh r1, [r0, 0xA]
- ldr r0, [r4]
- ldr r1, [r0]
- ldrb r0, [r1, 0x14]
- adds r0, 0x1
- strb r0, [r1, 0x14]
-_080F7C64:
- movs r0, 0x14
- add r10, r0
- ldr r1, [sp, 0x10]
- movs r3, 0xC0
- lsls r3, 18
- adds r1, r3
- str r1, [sp, 0x10]
- movs r4, 0x1
- add r9, r4
- mov r0, r9
- cmp r0, 0x3
- bgt _080F7C7E
- b _080F7B68
-_080F7C7E:
- ldr r1, [sp, 0xC]
- cmp r1, 0
- beq _080F7C8A
- movs r0, 0x16
- bl PlaySE
-_080F7C8A:
- ldr r3, [sp, 0x8]
- cmp r3, 0
- beq _080F7C96
- movs r0, 0x15
- bl PlaySE
-_080F7C96:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80F7A80
-
- thumb_func_start sub_80F7CA8
-sub_80F7CA8: @ 80F7CA8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r4, 0
- mov r9, r4
- ldr r1, =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- ldrb r6, [r0, 0x8]
- ldrh r7, [r0, 0xA]
- ldrh r1, [r0, 0xC]
- mov r12, r1
- movs r2, 0xC
- ldrsh r0, [r0, r2]
- cmp r0, 0
- beq _080F7CF8
- ldr r2, =gUnknown_0203A034
- ldr r0, [r2]
- ldr r0, [r0]
- lsls r1, r6, 1
- adds r0, 0xC
- adds r0, r1
- movs r3, 0
- ldrsh r0, [r0, r3]
- adds r5, r1, 0
- cmp r0, 0
- bgt _080F7D10
- b _080F7D0E
- .pool
-_080F7CF8:
- ldr r2, =gUnknown_0203A034
- ldr r0, [r2]
- ldr r0, [r0]
- lsls r1, r6, 1
- adds r0, 0xC
- adds r0, r1
- movs r3, 0
- ldrsh r0, [r0, r3]
- adds r5, r1, 0
- cmp r0, 0x57
- ble _080F7D10
-_080F7D0E:
- movs r4, 0x1
-_080F7D10:
- ldr r0, [r2]
- ldr r0, [r0]
- adds r0, 0xC
- adds r2, r0, r5
- ldrh r3, [r2]
- movs r0, 0
- ldrsh r1, [r2, r0]
- lsls r0, r7, 16
- asrs r0, 16
- cmp r1, r0
- bne _080F7D2A
- movs r1, 0x1
- mov r9, r1
-_080F7D2A:
- mov r0, r9
- cmp r0, 0
- bne _080F7D4A
- cmp r4, 0
- beq _080F7D3C
- strh r7, [r2]
- b _080F7D4A
- .pool
-_080F7D3C:
- mov r1, r12
- cmp r1, 0
- beq _080F7D46
- subs r0, r3, 0x1
- b _080F7D48
-_080F7D46:
- adds r0, r3, 0x1
-_080F7D48:
- strh r0, [r2]
-_080F7D4A:
- cmp r4, 0
- bne _080F7DC4
- mov r2, r9
- cmp r2, 0
- bne _080F7DCA
- movs r2, 0
-_080F7D56:
- ldr r0, =gUnknown_0203A034
- ldr r0, [r0]
- ldr r0, [r0]
- adds r0, 0xC
- adds r0, r5
- movs r1, 0
- ldrsh r3, [r0, r1]
- adds r0, r2, 0x1
- lsls r1, r0, 3
- adds r4, r0, 0
- cmp r3, r1
- blt _080F7D78
- movs r0, 0x8
- b _080F7D94
- .pool
-_080F7D78:
- lsls r0, r2, 3
- cmp r3, r0
- blt _080F7D92
- adds r0, r3, 0
- cmp r3, 0
- bge _080F7D86
- adds r0, r3, 0x7
-_080F7D86:
- asrs r0, 3
- lsls r0, 3
- subs r0, r3, r0
- lsls r0, 24
- lsrs r0, 24
- b _080F7D94
-_080F7D92:
- movs r0, 0
-_080F7D94:
- cmp r0, 0x3
- bhi _080F7DA0
- ldr r3, =0x0000504c
- b _080F7DA2
- .pool
-_080F7DA0:
- ldr r3, =0x00005057
-_080F7DA2:
- adds r1, r0, r3
- adds r2, 0x7
- lsls r2, 24
- lsrs r2, 24
- adds r3, r5, r6
- adds r3, 0x6
- lsls r3, 24
- movs r0, 0x1
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x2
- lsrs r3, 24
- bl FillBgTilemapBufferRect_Palette0
- adds r2, r4, 0
- cmp r2, 0xA
- ble _080F7D56
-_080F7DC4:
- mov r0, r9
- cmp r0, 0
- beq _080F7DDC
-_080F7DCA:
- ldr r0, =gUnknown_0203A034
- ldr r0, [r0]
- ldr r1, [r0]
- ldrb r0, [r1, 0x14]
- subs r0, 0x1
- strb r0, [r1, 0x14]
- mov r0, r8
- bl DestroyTask
-_080F7DDC:
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F7CA8
-
- thumb_func_start sub_80F7DF4
-sub_80F7DF4: @ 80F7DF4
- push {r4,r5,lr}
- ldr r4, =gUnknown_0203A034
- movs r0, 0x20
- bl AllocZeroed
- str r0, [r4]
- movs r0, 0x18
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1]
- movs r0, 0x50
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0x4]
- movs r5, 0x80
- lsls r5, 4
- adds r0, r5, 0
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0x8]
- adds r0, r5, 0
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0xC]
- adds r0, r5, 0
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0x10]
- adds r0, r5, 0
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0x14]
- adds r0, r5, 0
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0x18]
- movs r0, 0x80
- lsls r0, 5
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0x1C]
- bl AllocateMonSpritesGfx
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F7DF4
-
- thumb_func_start sub_80F7E64
-sub_80F7E64: @ 80F7E64
- push {r4,r5,lr}
- ldr r5, =gUnknown_0203A034
- ldr r0, [r5]
- ldr r0, [r0]
- bl Free
- ldr r0, [r5]
- movs r4, 0
- str r4, [r0]
- ldr r0, [r0, 0x4]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0x4]
- ldr r0, [r0, 0x8]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0x8]
- ldr r0, [r0, 0xC]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0xC]
- ldr r0, [r0, 0x10]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0x10]
- ldr r0, [r0, 0x14]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0x14]
- ldr r0, [r0, 0x18]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0x18]
- ldr r0, [r0, 0x1C]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0x1C]
- bl Free
- str r4, [r5]
- bl FreeMonSpritesGfx
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F7E64
-
- thumb_func_start sub_80F7ED0
-sub_80F7ED0: @ 80F7ED0
- push {r4,lr}
- sub sp, 0x10
- adds r4, r0, 0
- str r1, [sp]
- mov r0, sp
- movs r3, 0
- strb r4, [r0, 0x4]
- mov r1, sp
- movs r0, 0x7
- strb r0, [r1, 0x5]
- mov r0, sp
- strb r2, [r0, 0x6]
- movs r1, 0x2
- strb r1, [r0, 0x7]
- strb r2, [r0, 0x8]
- strb r1, [r0, 0x9]
- strb r3, [r0, 0xA]
- strb r3, [r0, 0xB]
- mov r3, sp
- ldrb r2, [r3, 0xC]
- subs r1, 0x12
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r3, 0xC]
- mov r2, sp
- movs r0, 0x10
- strb r0, [r2, 0xC]
- ldrb r0, [r2, 0xD]
- ands r1, r0
- strb r1, [r2, 0xD]
- mov r1, sp
- movs r0, 0x80
- strb r0, [r1, 0xD]
- mov r0, sp
- movs r1, 0
- movs r2, 0
- bl AddTextPrinter
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl PutWindowTilemap
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80F7ED0
-
- thumb_func_start sub_80F7F30
-sub_80F7F30: @ 80F7F30
- push {r4,r5,lr}
- ldr r0, =gContestMonPartyIndex
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- bl sub_80DAE0C
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- cmp r5, 0
- beq _080F7F5E
- ldr r4, =gSpecialVar_ContestCategory
- ldrb r0, [r4]
- ldr r1, =gSpecialVar_ContestRank
- ldrb r1, [r1]
- bl sub_80DAB8C
- ldrb r0, [r4]
- bl sub_80DB09C
-_080F7F5E:
- ldr r0, =gSpecialVar_Result
- strh r5, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F7F30
-
- thumb_func_start sub_80F7F7C
-sub_80F7F7C: @ 80F7F7C
- push {r4,lr}
- movs r4, 0
- ldr r0, =gContestMonPartyIndex
- ldrb r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r2, r1, r0
- ldr r0, =gSpecialVar_ContestCategory
- ldrh r0, [r0]
- cmp r0, 0x4
- bhi _080F7FEE
- lsls r0, 2
- ldr r1, =_080F7FB0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F7FB0:
- .4byte _080F7FC4
- .4byte _080F7FCA
- .4byte _080F7FD0
- .4byte _080F7FD6
- .4byte _080F7FDC
-_080F7FC4:
- adds r0, r2, 0
- movs r1, 0x32
- b _080F7FE0
-_080F7FCA:
- adds r0, r2, 0
- movs r1, 0x33
- b _080F7FE0
-_080F7FD0:
- adds r0, r2, 0
- movs r1, 0x34
- b _080F7FE0
-_080F7FD6:
- adds r0, r2, 0
- movs r1, 0x35
- b _080F7FE0
-_080F7FDC:
- adds r0, r2, 0
- movs r1, 0x36
-_080F7FE0:
- bl GetMonData
- ldr r1, =gSpecialVar_ContestRank
- ldrh r1, [r1]
- cmp r0, r1
- bls _080F7FEE
- movs r4, 0x1
-_080F7FEE:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80F7F7C
-
- thumb_func_start sub_80F7FFC
-sub_80F7FFC: @ 80F7FFC
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r1, =gContestFinalStandings
- ldr r0, =gContestPlayerMonIndex
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080F8010
- b _080F8250
-_080F8010:
- ldr r0, =gSpecialVar_ContestCategory
- ldrh r0, [r0]
- cmp r0, 0x4
- bls _080F801A
- b _080F8250
-_080F801A:
- lsls r0, 2
- ldr r1, =_080F8034
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F8034:
- .4byte _080F8048
- .4byte _080F80B8
- .4byte _080F8124
- .4byte _080F8190
- .4byte _080F81F8
-_080F8048:
- ldr r6, =gContestMonPartyIndex
- ldrb r0, [r6]
- movs r5, 0x64
- muls r0, r5
- ldr r4, =gPlayerParty
- adds r0, r4
- movs r1, 0x32
- bl GetMonData
- lsls r0, 24
- lsrs r1, r0, 24
- mov r0, sp
- strb r1, [r0]
- ldr r0, =gSpecialVar_ContestRank
- ldrh r0, [r0]
- cmp r1, r0
- bls _080F806C
- b _080F8250
-_080F806C:
- adds r0, r1, 0
- cmp r0, 0x3
- bls _080F8074
- b _080F8250
-_080F8074:
- adds r1, r0, 0x1
- mov r0, sp
- strb r1, [r0]
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r4
- movs r1, 0x32
- mov r2, sp
- bl SetMonData
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r4
- bl GetRibbonCount
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080F809C
- b _080F8250
-_080F809C:
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r4
- movs r1, 0x32
- bl sub_80EE4DC
- b _080F8250
- .pool
-_080F80B8:
- mov r4, sp
- ldr r7, =gContestMonPartyIndex
- ldrb r0, [r7]
- movs r6, 0x64
- muls r0, r6
- ldr r5, =gPlayerParty
- adds r0, r5
- movs r1, 0x33
- bl GetMonData
- strb r0, [r4]
- mov r0, sp
- ldrb r2, [r0]
- ldr r0, =gSpecialVar_ContestRank
- ldrh r0, [r0]
- cmp r2, r0
- bls _080F80DC
- b _080F8250
-_080F80DC:
- cmp r2, 0x3
- bls _080F80E2
- b _080F8250
-_080F80E2:
- mov r1, sp
- adds r0, r2, 0x1
- strb r0, [r1]
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x33
- mov r2, sp
- bl SetMonData
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- bl GetRibbonCount
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080F810A
- b _080F8250
-_080F810A:
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x33
- bl sub_80EE4DC
- b _080F8250
- .pool
-_080F8124:
- mov r4, sp
- ldr r7, =gContestMonPartyIndex
- ldrb r0, [r7]
- movs r6, 0x64
- muls r0, r6
- ldr r5, =gPlayerParty
- adds r0, r5
- movs r1, 0x34
- bl GetMonData
- strb r0, [r4]
- mov r0, sp
- ldrb r2, [r0]
- ldr r0, =gSpecialVar_ContestRank
- ldrh r0, [r0]
- cmp r2, r0
- bls _080F8148
- b _080F8250
-_080F8148:
- cmp r2, 0x3
- bls _080F814E
- b _080F8250
-_080F814E:
- mov r1, sp
- adds r0, r2, 0x1
- strb r0, [r1]
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x34
- mov r2, sp
- bl SetMonData
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- bl GetRibbonCount
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080F8250
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x34
- bl sub_80EE4DC
- b _080F8250
- .pool
-_080F8190:
- mov r4, sp
- ldr r7, =gContestMonPartyIndex
- ldrb r0, [r7]
- movs r6, 0x64
- muls r0, r6
- ldr r5, =gPlayerParty
- adds r0, r5
- movs r1, 0x35
- bl GetMonData
- strb r0, [r4]
- mov r0, sp
- ldrb r2, [r0]
- ldr r0, =gSpecialVar_ContestRank
- ldrh r0, [r0]
- cmp r2, r0
- bhi _080F8250
- cmp r2, 0x3
- bhi _080F8250
- mov r1, sp
- adds r0, r2, 0x1
- strb r0, [r1]
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x35
- mov r2, sp
- bl SetMonData
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- bl GetRibbonCount
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080F8250
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x35
- bl sub_80EE4DC
- b _080F8250
- .pool
-_080F81F8:
- mov r4, sp
- ldr r7, =gContestMonPartyIndex
- ldrb r0, [r7]
- movs r6, 0x64
- muls r0, r6
- ldr r5, =gPlayerParty
- adds r0, r5
- movs r1, 0x36
- bl GetMonData
- strb r0, [r4]
- mov r0, sp
- ldrb r2, [r0]
- ldr r0, =gSpecialVar_ContestRank
- ldrh r0, [r0]
- cmp r2, r0
- bhi _080F8250
- cmp r2, 0x3
- bhi _080F8250
- mov r1, sp
- adds r0, r2, 0x1
- strb r0, [r1]
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x36
- mov r2, sp
- bl SetMonData
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- bl GetRibbonCount
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080F8250
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x36
- bl sub_80EE4DC
-_080F8250:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F7FFC
-
- thumb_func_start sub_80F8264
-sub_80F8264: @ 80F8264
- push {r4,lr}
- ldr r4, =gStringVar1
- ldr r0, =gSpecialVar_0x8006
- ldrh r1, [r0]
- lsls r1, 6
- ldr r0, =gContestMons + 13
- adds r1, r0
- adds r0, r4, 0
- bl StringCopy
- adds r0, r4, 0
- bl sub_81DB5AC
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F8264
-
- thumb_func_start sub_80F8290
-sub_80F8290: @ 80F8290
- push {lr}
- ldr r0, =gStringVar3
- ldr r1, =gSpecialVar_0x8006
- ldrh r1, [r1]
- lsls r1, 6
- ldr r2, =gContestMons + 2
- adds r1, r2
- bl StringCopy
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F8290
-
- thumb_func_start sub_80F82B4
-sub_80F82B4: @ 80F82B4
- push {r4-r6,lr}
- movs r1, 0
- movs r2, 0
- ldr r5, =gSpecialVar_0x8004
- ldr r4, =gContestMonConditions
- ldr r0, =gSpecialVar_0x8006
- ldrh r0, [r0]
- lsls r0, 1
- adds r0, r4
- movs r6, 0
- ldrsh r3, [r0, r6]
-_080F82CA:
- lsls r0, r1, 1
- adds r0, r4
- movs r6, 0
- ldrsh r0, [r0, r6]
- cmp r3, r0
- bge _080F82DC
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
-_080F82DC:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x3
- bls _080F82CA
- strh r2, [r5]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F82B4
-
- thumb_func_start sub_80F82FC
-sub_80F82FC: @ 80F82FC
- ldr r2, =gSpecialVar_0x8004
- ldr r1, =gContestMonConditions
- ldr r0, =gSpecialVar_0x8006
- ldrh r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- bx lr
- .pool
- thumb_func_end sub_80F82FC
-
- thumb_func_start sub_80F831C
-sub_80F831C: @ 80F831C
- push {lr}
- movs r1, 0
- ldr r2, =gContestFinalStandings
- ldrb r0, [r2]
- ldr r3, =gSpecialVar_0x8005
- cmp r0, 0
- beq _080F833C
-_080F832A:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x3
- bhi _080F833C
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F832A
-_080F833C:
- strh r1, [r3]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F831C
-
- thumb_func_start sub_80F834C
-sub_80F834C: @ 80F834C
- push {r4,lr}
- movs r1, 0
- ldr r2, =gContestFinalStandings
- ldrb r0, [r2]
- ldr r4, =gStringVar3
- ldr r3, =gContestMons + 13
- cmp r0, 0
- beq _080F836E
-_080F835C:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x3
- bhi _080F836E
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F835C
-_080F836E:
- lsls r1, 6
- adds r1, r3
- adds r0, r4, 0
- bl StringCopy
- adds r0, r4, 0
- bl sub_81DB5AC
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F834C
-
- thumb_func_start sub_80F8390
-sub_80F8390: @ 80F8390
- push {r4,lr}
- movs r1, 0
- ldr r2, =gContestFinalStandings
- ldrb r0, [r2]
- ldr r4, =gStringVar1
- ldr r3, =gContestMons + 2
- cmp r0, 0
- beq _080F83B2
-_080F83A0:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x3
- bhi _080F83B2
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F83A0
-_080F83B2:
- lsls r1, 6
- adds r1, r3
- adds r0, r4, 0
- bl StringCopy
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F8390
-
- thumb_func_start sub_80F83D0
-sub_80F83D0: @ 80F83D0
- push {lr}
- ldr r0, =sub_80D7B24
- bl SetMainCallback2
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F83D0
-
- thumb_func_start sub_80F83E0
-sub_80F83E0: @ 80F83E0
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080F83FE
- adds r0, r2, 0
- bl DestroyTask
- ldr r0, =sub_80F83D0
- bl SetMainCallback2
-_080F83FE:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F83E0
-
- thumb_func_start sub_80F840C
-sub_80F840C: @ 80F840C
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- ldr r0, =sub_80F83E0
- movs r1, 0xA
- bl CreateTask
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F840C
-
- thumb_func_start sub_80F8438
-sub_80F8438: @ 80F8438
- ldr r2, =gSpecialVar_0x8004
- ldr r1, =gContestMons
- ldr r0, =gSpecialVar_0x8006
- ldrh r0, [r0]
- lsls r0, 6
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- bx lr
- .pool
- thumb_func_end sub_80F8438
-
- thumb_func_start sub_80F8458
-sub_80F8458: @ 80F8458
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080F8476
- adds r0, r2, 0
- bl DestroyTask
- ldr r0, =sub_80F5B00
- bl SetMainCallback2
-_080F8476:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F8458
-
- thumb_func_start sub_80F8484
-sub_80F8484: @ 80F8484
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- ldr r0, =sub_80F8458
- movs r1, 0xA
- bl CreateTask
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F8484
-
- thumb_func_start sub_80F84B0
-sub_80F84B0: @ 80F84B0
- ldr r0, =gSpecialVar_0x8004
- ldr r1, =gContestPlayerMonIndex
- ldrb r1, [r1]
- strh r1, [r0]
- bx lr
- .pool
- thumb_func_end sub_80F84B0
-
- thumb_func_start sub_80F84C4
-sub_80F84C4: @ 80F84C4
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- bl ScriptContext2_Enable
- ldr r6, =sub_80FC580
- adds r0, r6, 0
- movs r1, 0
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r2, =sub_80F8508
- adds r0, r4, 0
- adds r1, r6, 0
- bl SetTaskFuncWithFollowupFunc
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- strh r5, [r0, 0x1A]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F84C4
-
- thumb_func_start sub_80F8508
-sub_80F8508: @ 80F8508
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gIsLinkContest
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080F8540
- ldr r0, =gContestMonPartyIndex
- ldrb r0, [r0]
- bl sub_80DA8C8
- ldr r1, =sub_80FC6BC
- ldr r2, =sub_80F8568
- adds r0, r4, 0
- bl SetTaskFuncWithFollowupFunc
- b _080F8556
- .pool
-_080F8540:
- ldr r0, =gContestMonPartyIndex
- ldrb r0, [r0]
- bl sub_80DA8C8
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81D9DE4
- str r1, [r0]
-_080F8556:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F8508
-
- thumb_func_start sub_80F8568
-sub_80F8568: @ 80F8568
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =sub_80FC804
- ldr r2, =sub_80F8584
- bl SetTaskFuncWithFollowupFunc
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F8568
-
- thumb_func_start sub_80F8584
-sub_80F8584: @ 80F8584
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =sub_80FCE48
- ldr r2, =sub_80F85A0
- bl SetTaskFuncWithFollowupFunc
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F8584
-
- thumb_func_start sub_80F85A0
-sub_80F85A0: @ 80F85A0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =sub_80FC894
- ldr r2, =sub_80F85BC
- bl SetTaskFuncWithFollowupFunc
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F85A0
-
- thumb_func_start sub_80F85BC
-sub_80F85BC: @ 80F85BC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r3, 0
- ldr r5, =gNumLinkContestPlayers
- mov r12, r5
- ldr r0, =gSpecialVar_0x8004
- mov r9, r0
- add r1, sp, 0x4
- mov r8, r1
- ldrb r0, [r5]
- cmp r3, r0
- bcs _080F8606
- lsls r0, r6, 2
- adds r0, r6
- lsls r4, r0, 3
- ldr r7, =gTasks + 0x8
-_080F85EC:
- mov r1, sp
- adds r2, r1, r3
- adds r1, r3, 0x1
- lsls r0, r1, 1
- adds r0, r4
- adds r0, r7
- ldrh r0, [r0]
- strb r0, [r2]
- lsls r1, 24
- lsrs r3, r1, 24
- ldrb r0, [r5]
- cmp r3, r0
- bcc _080F85EC
-_080F8606:
- movs r3, 0
- mov r1, r12
- ldrb r0, [r1]
- cmp r3, r0
- bcs _080F862A
- adds r4, r0, 0
- mov r2, sp
-_080F8614:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, r4
- bcs _080F862A
- mov r0, sp
- adds r1, r0, r3
- ldrb r0, [r2]
- ldrb r1, [r1]
- cmp r0, r1
- beq _080F8614
-_080F862A:
- mov r1, r12
- ldrb r1, [r1]
- cmp r3, r1
- bne _080F8644
- movs r0, 0
- b _080F8646
- .pool
-_080F8644:
- movs r0, 0x1
-_080F8646:
- mov r1, r9
- strh r0, [r1]
- movs r3, 0
- mov r4, r12
- ldrb r0, [r4]
- cmp r3, r0
- bcs _080F8678
- mov r5, r8
- lsls r0, r6, 2
- adds r0, r6
- lsls r2, r0, 3
- ldr r7, =gTasks + 0x8
-_080F865E:
- adds r1, r5, r3
- adds r0, r3, 0x5
- lsls r0, 1
- adds r0, r2
- adds r0, r7
- ldrh r0, [r0]
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- ldrb r1, [r4]
- cmp r3, r1
- bcc _080F865E
-_080F8678:
- mov r0, r8
- bl sub_80F86E0
- ldr r1, =gUnknown_02039F2B
- strb r0, [r1]
- ldr r0, =gSpecialVar_ContestCategory
- ldrb r0, [r0]
- bl sub_80DB09C
- ldr r1, =sub_80FCF40
- ldr r2, =sub_80F86B8
- adds r0, r6, 0
- bl SetTaskFuncWithFollowupFunc
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F85BC
-
- thumb_func_start sub_80F86B8
-sub_80F86B8: @ 80F86B8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- bl sub_80DCE58
- ldr r1, =sub_80FCFD0
- ldr r2, =sub_80F8714
- adds r0, r4, 0
- bl SetTaskFuncWithFollowupFunc
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F86B8
-
- thumb_func_start sub_80F86E0
-sub_80F86E0: @ 80F86E0
- push {r4,r5,lr}
- adds r3, r0, 0
- movs r4, 0
- movs r2, 0x1
- ldr r0, =gNumLinkContestPlayers
- ldrb r0, [r0]
- cmp r2, r0
- bge _080F8708
- adds r5, r0, 0
-_080F86F2:
- adds r0, r3, r4
- adds r1, r3, r2
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bcs _080F8702
- lsls r0, r2, 24
- lsrs r4, r0, 24
-_080F8702:
- adds r2, 0x1
- cmp r2, r5
- blt _080F86F2
-_080F8708:
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80F86E0
-
- thumb_func_start sub_80F8714
-sub_80F8714: @ 80F8714
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0x1
- bne _080F8748
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _080F877E
- ldr r0, =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80F878C
- str r0, [r1]
- b _080F877E
- .pool
-_080F8748:
- ldr r5, =gContestMons + 2
- movs r4, 0x3
-_080F874C:
- adds r0, r5, 0
- bl StringGetEnd10
- adds r5, 0x40
- subs r4, 0x1
- cmp r4, 0
- bge _080F874C
- adds r0, r6, 0
- bl DestroyTask
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0x4
- ldrsb r1, [r0, r1]
- movs r2, 0x5
- ldrsb r2, [r0, r2]
- movs r3, 0x1
- negs r3, r3
- movs r0, 0
- bl SetDynamicWarp
- bl ScriptContext2_Disable
- bl EnableBothScriptContexts
-_080F877E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F8714
-
- thumb_func_start sub_80F878C
-sub_80F878C: @ 80F878C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_800AC34
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80F87B4
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F878C
-
- thumb_func_start sub_80F87B4
-sub_80F87B4: @ 80F87B4
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F87D0
- adds r0, r1, 0
- bl DestroyTask
- bl ScriptContext2_Disable
- bl EnableBothScriptContexts
-_080F87D0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F87B4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/easy_chat.s b/asm/easy_chat.s
index 7a46f12c5..50e707ac3 100644
--- a/asm/easy_chat.s
+++ b/asm/easy_chat.s
@@ -5,5978 +5,6 @@
.text
- thumb_func_start sub_811ACDC
-sub_811ACDC: @ 811ACDC
- push {r4-r6,lr}
- ldr r2, =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0811AD4A
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r0, [r0, 0x5]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- beq _0811AD3E
- b _0811AD24
- .pool
-_0811AD04:
- movs r0, 0x20
- ands r0, r2
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- bne _0811ADE0
- movs r0, 0x80
- ands r0, r2
- cmp r0, 0
- bne _0811ADD0
- movs r0, 0x10
- ands r0, r2
- cmp r0, 0
- bne _0811ADC0
- movs r0, 0
- b _0811AE32
-_0811AD24:
- cmp r0, 0x1
- bgt _0811AD2E
- cmp r0, 0
- beq _0811AD38
- b _0811AD4A
-_0811AD2E:
- cmp r0, 0x2
- beq _0811ADF6
- cmp r0, 0x3
- beq _0811AD44
- b _0811AD4A
-_0811AD38:
- bl sub_811B184
- b _0811ADFA
-_0811AD3E:
- bl sub_811B150
- b _0811ADFA
-_0811AD44:
- bl sub_811B264
- b _0811ADFA
-_0811AD4A:
- ldrh r2, [r2, 0x2E]
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- bne _0811ADF0
- movs r0, 0x8
- ands r0, r2
- cmp r0, 0
- bne _0811ADF6
- movs r0, 0x40
- ands r0, r2
- cmp r0, 0
- beq _0811AD04
- ldr r2, =gUnknown_0203A118
- ldr r1, [r2]
- ldrb r0, [r1, 0x6]
- subs r0, 0x1
- strb r0, [r1, 0x6]
-_0811AD6E:
- adds r6, r2, 0
-_0811AD70:
- adds r5, r6, 0
- ldr r4, [r5]
- movs r3, 0x6
- ldrsb r3, [r4, r3]
- ldr r2, =gUnknown_08597550
- ldrb r1, [r4, 0x1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r1, r0, r2
- ldrb r0, [r1, 0x2]
- cmp r3, r0
- bne _0811AE00
- bl sub_811BA3C
- movs r2, 0x3
- cmp r0, 0
- beq _0811AD96
- movs r2, 0x4
-_0811AD96:
- ldr r1, [r5]
- movs r0, 0x5
- ldrsb r0, [r1, r0]
- cmp r0, 0
- bge _0811ADA4
- subs r0, r2, 0x1
- strb r0, [r1, 0x5]
-_0811ADA4:
- ldr r1, [r5]
- movs r0, 0x5
- ldrsb r0, [r1, r0]
- cmp r0, r2
- blt _0811ADB2
- movs r0, 0
- strb r0, [r1, 0x5]
-_0811ADB2:
- movs r0, 0x3
- b _0811AE32
- .pool
-_0811ADC0:
- ldr r2, =gUnknown_0203A118
- ldr r1, [r2]
- ldrb r0, [r1, 0x5]
- adds r0, 0x1
- strb r0, [r1, 0x5]
- b _0811AD6E
- .pool
-_0811ADD0:
- ldr r1, =gUnknown_0203A118
- ldr r0, [r1]
- strb r3, [r0, 0x6]
- adds r6, r1, 0
- b _0811AD70
- .pool
-_0811ADE0:
- ldr r2, =gUnknown_0203A118
- ldr r1, [r2]
- ldrb r0, [r1, 0x5]
- subs r0, 0x1
- strb r0, [r1, 0x5]
- b _0811AD6E
- .pool
-_0811ADF0:
- bl sub_811B150
- b _0811ADFA
-_0811ADF6:
- bl sub_811B1B4
-_0811ADFA:
- lsls r0, 16
- lsrs r0, 16
- b _0811AE32
-_0811AE00:
- movs r0, 0x5
- ldrsb r0, [r4, r0]
- ldrb r1, [r1, 0x1]
- cmp r0, r1
- blt _0811AE0E
- subs r0, r1, 0x1
- strb r0, [r4, 0x5]
-_0811AE0E:
- bl sub_811AB44
- cmp r0, 0
- beq _0811AE28
- ldr r2, [r6]
- ldr r0, [r2, 0x4]
- ldr r1, =0x00ffff00
- ands r0, r1
- ldr r1, =0x00040100
- cmp r0, r1
- bne _0811AE28
- movs r0, 0
- strb r0, [r2, 0x5]
-_0811AE28:
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- movs r0, 0
- strb r0, [r1, 0x4]
- movs r0, 0x2
-_0811AE32:
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_811ACDC
-
- thumb_func_start sub_811AE44
-sub_811AE44: @ 811AE44
- push {lr}
- ldr r1, =gMain
- ldrh r2, [r1, 0x2E]
- movs r0, 0x2
- ands r0, r2
- adds r3, r1, 0
- cmp r0, 0
- beq _0811AE60
- bl sub_811B32C
- b _0811AEF6
- .pool
-_0811AE60:
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _0811AEAE
- ldr r0, =gUnknown_0203A118
- ldr r2, [r0]
- movs r1, 0xA
- ldrsb r1, [r2, r1]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0811AE84
- bl sub_811B2B0
- b _0811AEF6
- .pool
-_0811AE84:
- movs r0, 0xB
- ldrsb r0, [r2, r0]
- cmp r0, 0x1
- beq _0811AEA2
- cmp r0, 0x1
- bgt _0811AE96
- cmp r0, 0
- beq _0811AE9C
- b _0811AEAE
-_0811AE96:
- cmp r0, 0x2
- beq _0811AEA8
- b _0811AEAE
-_0811AE9C:
- bl sub_811B33C
- b _0811AEF6
-_0811AEA2:
- bl sub_811B368
- b _0811AEF6
-_0811AEA8:
- bl sub_811B32C
- b _0811AEF6
-_0811AEAE:
- ldrh r1, [r3, 0x2E]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0811AEBE
- bl sub_811B33C
- b _0811AEF6
-_0811AEBE:
- ldrh r1, [r3, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0811AECC
- movs r0, 0x2
- b _0811AEF2
-_0811AECC:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0811AED8
- movs r0, 0x3
- b _0811AEF2
-_0811AED8:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0811AEE4
- movs r0, 0x1
- b _0811AEF2
-_0811AEE4:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0811AEF0
- movs r0, 0
- b _0811AEFA
-_0811AEF0:
- movs r0, 0
-_0811AEF2:
- bl sub_811B528
-_0811AEF6:
- lsls r0, 16
- lsrs r0, 16
-_0811AEFA:
- pop {r1}
- bx r1
- thumb_func_end sub_811AE44
-
- thumb_func_start sub_811AF00
-sub_811AF00: @ 811AF00
- push {lr}
- ldr r2, =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0811AF24
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- movs r0, 0x2
- strb r0, [r1, 0x4]
- movs r0, 0xE
- b _0811AF86
- .pool
-_0811AF24:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0811AF32
- bl sub_811B394
- b _0811AF82
-_0811AF32:
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0811AF3E
- movs r0, 0x4
- b _0811AF7E
-_0811AF3E:
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0811AF4A
- movs r0, 0x5
- b _0811AF7E
-_0811AF4A:
- ldrh r1, [r2, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0811AF58
- movs r0, 0x2
- b _0811AF7E
-_0811AF58:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0811AF64
- movs r0, 0x3
- b _0811AF7E
-_0811AF64:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0811AF70
- movs r0, 0x1
- b _0811AF7E
-_0811AF70:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0811AF7C
- movs r0, 0
- b _0811AF86
-_0811AF7C:
- movs r0, 0
-_0811AF7E:
- bl sub_811B794
-_0811AF82:
- lsls r0, 16
- lsrs r0, 16
-_0811AF86:
- pop {r1}
- bx r1
- thumb_func_end sub_811AF00
-
- thumb_func_start sub_811AF8C
-sub_811AF8C: @ 811AF8C
- push {lr}
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _0811AFC0
- cmp r1, 0
- bgt _0811AFA8
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0811AFAC
- b _0811AFE4
-_0811AFA8:
- cmp r1, 0x1
- bne _0811AFE4
-_0811AFAC:
- bl sub_811B2A4
- ldr r1, =gUnknown_0203A118
- ldr r1, [r1]
- strb r0, [r1, 0x4]
- movs r0, 0x7
- b _0811AFE6
- .pool
-_0811AFC0:
- ldr r0, =gSpecialVar_Result
- strh r1, [r0]
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r0, [r0]
- subs r0, 0x11
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _0811AFD8
- bl sub_811B3E4
-_0811AFD8:
- movs r0, 0x18
- b _0811AFE6
- .pool
-_0811AFE4:
- movs r0, 0
-_0811AFE6:
- pop {r1}
- bx r1
- thumb_func_end sub_811AF8C
-
- thumb_func_start sub_811AFEC
-sub_811AFEC: @ 811AFEC
- push {r4,lr}
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _0811B020
- cmp r1, 0
- bgt _0811B008
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0811B00C
- b _0811B038
-_0811B008:
- cmp r1, 0x1
- bne _0811B038
-_0811B00C:
- bl sub_811B2A4
- ldr r1, =gUnknown_0203A118
- ldr r1, [r1]
- strb r0, [r1, 0x4]
- movs r0, 0x7
- b _0811B03A
- .pool
-_0811B020:
- bl sub_811BE9C
- ldr r4, =gSpecialVar_Result
- bl sub_811B4EC
- strh r0, [r4]
- bl sub_811B3E4
- movs r0, 0x18
- b _0811B03A
- .pool
-_0811B038:
- movs r0, 0
-_0811B03A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811AFEC
-
- thumb_func_start sub_811B040
-sub_811B040: @ 811B040
- push {lr}
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _0811B070
- cmp r1, 0
- bgt _0811B05C
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0811B060
- b _0811B084
-_0811B05C:
- cmp r1, 0x1
- bne _0811B084
-_0811B060:
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- movs r0, 0x1
- strb r0, [r1, 0x4]
- movs r0, 0x7
- b _0811B086
- .pool
-_0811B070:
- bl sub_811B418
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- movs r0, 0x1
- strb r0, [r1, 0x4]
- movs r0, 0x8
- b _0811B086
- .pool
-_0811B084:
- movs r0, 0
-_0811B086:
- pop {r1}
- bx r1
- thumb_func_end sub_811B040
-
- thumb_func_start sub_811B08C
-sub_811B08C: @ 811B08C
- push {lr}
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0811B0A4
- movs r0, 0x1A
- b _0811B0B8
- .pool
-_0811B0A4:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0811B0B0
- movs r0, 0
- b _0811B0B8
-_0811B0B0:
- bl sub_811B150
- lsls r0, 16
- lsrs r0, 16
-_0811B0B8:
- pop {r1}
- bx r1
- thumb_func_end sub_811B08C
-
- thumb_func_start sub_811B0BC
-sub_811B0BC: @ 811B0BC
- push {lr}
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _0811B0D4
- movs r0, 0
- b _0811B0E0
- .pool
-_0811B0D4:
- bl sub_811B2A4
- ldr r1, =gUnknown_0203A118
- ldr r1, [r1]
- strb r0, [r1, 0x4]
- movs r0, 0x7
-_0811B0E0:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_811B0BC
-
- thumb_func_start sub_811B0E8
-sub_811B0E8: @ 811B0E8
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- movs r0, 0xA
- strb r0, [r1, 0x4]
- movs r0, 0x6
- bx lr
- .pool
- thumb_func_end sub_811B0E8
-
- thumb_func_start sub_811B0F8
-sub_811B0F8: @ 811B0F8
- push {r4,lr}
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _0811B134
- cmp r1, 0
- bgt _0811B114
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0811B118
- b _0811B148
-_0811B114:
- cmp r1, 0x1
- bne _0811B148
-_0811B118:
- bl sub_811B454
- ldr r2, =gUnknown_0203A118
- ldr r1, [r2]
- movs r0, 0
- strb r0, [r1, 0x8]
- ldr r1, [r2]
- movs r0, 0x8
- strb r0, [r1, 0x4]
- movs r0, 0x1F
- b _0811B14A
- .pool
-_0811B134:
- ldr r4, =gSpecialVar_Result
- bl sub_811B4EC
- strh r0, [r4]
- bl sub_811B3E4
- movs r0, 0x18
- b _0811B14A
- .pool
-_0811B148:
- movs r0, 0
-_0811B14A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811B0F8
-
- thumb_func_start sub_811B150
-sub_811B150: @ 811B150
- push {lr}
- ldr r1, =gUnknown_0203A118
- ldr r2, [r1]
- ldrb r0, [r2]
- cmp r0, 0x13
- beq _0811B160
- cmp r0, 0xB
- bne _0811B174
-_0811B160:
- ldrb r0, [r2, 0x4]
- strb r0, [r2, 0x8]
- ldr r1, [r1]
- movs r0, 0x8
- strb r0, [r1, 0x4]
- movs r0, 0x22
- b _0811B180
- .pool
-_0811B174:
- ldrb r0, [r2, 0x4]
- strb r0, [r2, 0x8]
- ldr r1, [r1]
- movs r0, 0x4
- strb r0, [r1, 0x4]
- movs r0, 0x5
-_0811B180:
- pop {r1}
- bx r1
- thumb_func_end sub_811B150
-
- thumb_func_start sub_811B184
-sub_811B184: @ 811B184
- push {lr}
- ldr r2, =gUnknown_0203A118
- ldr r0, [r2]
- ldrb r1, [r0, 0x4]
- strb r1, [r0, 0x8]
- ldr r1, [r2]
- ldrb r0, [r1]
- cmp r0, 0x6
- bne _0811B1A8
- ldrb r0, [r1, 0x4]
- strb r0, [r1, 0x8]
- ldr r1, [r2]
- movs r0, 0x8
- strb r0, [r1, 0x4]
- movs r0, 0x20
- b _0811B1AE
- .pool
-_0811B1A8:
- movs r0, 0x5
- strb r0, [r1, 0x4]
- movs r0, 0x4
-_0811B1AE:
- pop {r1}
- bx r1
- thumb_func_end sub_811B184
-
- thumb_func_start sub_811B1B4
-sub_811B1B4: @ 811B1B4
- push {r4,lr}
- ldr r4, =gUnknown_0203A118
- ldr r1, [r4]
- ldrb r0, [r1, 0x4]
- strb r0, [r1, 0x8]
- ldr r1, [r4]
- ldrb r0, [r1]
- cmp r0, 0x11
- bne _0811B1DC
- bl sub_811BD64
- cmp r0, 0
- bne _0811B1FA
- bl sub_811BDB0
- cmp r0, 0
- bne _0811B1E8
- b _0811B256
- .pool
-_0811B1DC:
- cmp r0, 0x12
- bne _0811B204
- bl sub_811BDB0
- cmp r0, 0
- beq _0811B1F2
-_0811B1E8:
- ldr r1, [r4]
- movs r0, 0x8
- strb r0, [r1, 0x4]
- movs r0, 0x1E
- b _0811B25C
-_0811B1F2:
- bl sub_811BD64
- cmp r0, 0
- beq _0811B256
-_0811B1FA:
- ldr r1, [r4]
- movs r0, 0x8
- strb r0, [r1, 0x4]
- movs r0, 0x1D
- b _0811B25C
-_0811B204:
- cmp r0, 0x9
- beq _0811B20C
- cmp r0, 0xD
- bne _0811B21E
-_0811B20C:
- bl sub_811BD2C
- cmp r0, 0
- bne _0811B256
- ldr r1, [r4]
- movs r0, 0x8
- strb r0, [r1, 0x4]
- movs r0, 0x21
- b _0811B25C
-_0811B21E:
- cmp r0, 0x13
- beq _0811B226
- cmp r0, 0xB
- bne _0811B238
-_0811B226:
- bl sub_811BCF4
- cmp r0, 0
- beq _0811B256
- ldr r1, [r4]
- movs r0, 0x8
- strb r0, [r1, 0x4]
- movs r0, 0x22
- b _0811B25C
-_0811B238:
- cmp r0, 0x14
- beq _0811B258
- bl sub_811BCF4
- cmp r0, 0x1
- beq _0811B24C
- bl sub_811B4EC
- cmp r0, 0
- bne _0811B256
-_0811B24C:
- ldr r1, [r4]
- movs r0, 0x4
- strb r0, [r1, 0x4]
- movs r0, 0x5
- b _0811B25C
-_0811B256:
- ldr r1, [r4]
-_0811B258:
- movs r0, 0x6
- strb r0, [r1, 0x4]
-_0811B25C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811B1B4
-
- thumb_func_start sub_811B264
-sub_811B264: @ 811B264
- push {lr}
- ldr r2, =gUnknown_0203A118
- ldr r1, [r2]
- ldrb r0, [r1, 0x4]
- strb r0, [r1, 0x8]
- ldr r0, [r2]
- ldrb r0, [r0]
- cmp r0, 0x11
- beq _0811B28E
- cmp r0, 0x11
- bgt _0811B284
- cmp r0, 0xF
- beq _0811B28A
- b _0811B29E
- .pool
-_0811B284:
- cmp r0, 0x12
- beq _0811B296
- b _0811B29E
-_0811B28A:
- movs r0, 0x19
- b _0811B2A0
-_0811B28E:
- bl sub_811B3E4
- movs r0, 0x1C
- b _0811B2A0
-_0811B296:
- bl sub_811B3E4
- movs r0, 0x1B
- b _0811B2A0
-_0811B29E:
- movs r0, 0
-_0811B2A0:
- pop {r1}
- bx r1
- thumb_func_end sub_811B264
-
- thumb_func_start sub_811B2A4
-sub_811B2A4: @ 811B2A4
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- bx lr
- .pool
- thumb_func_end sub_811B2A4
-
- thumb_func_start sub_811B2B0
-sub_811B2B0: @ 811B2B0
- push {lr}
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r0, [r0, 0x9]
- cmp r0, 0
- bne _0811B2DC
- bl sub_811B8E8
- lsls r0, 24
- lsrs r0, 24
- bl sub_811F3B8
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0
- bl sub_811F548
- b _0811B2EC
- .pool
-_0811B2DC:
- bl sub_811B908
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x1
- bl sub_811F548
-_0811B2EC:
- bl sub_811F5B0
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _0811B324
- ldr r2, =gUnknown_0203A118
- ldr r3, [r2]
- subs r0, 0x1
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- movs r1, 0
- strb r0, [r3, 0xF]
- ldr r0, [r2]
- strb r1, [r0, 0xE]
- ldr r0, [r2]
- strb r1, [r0, 0x10]
- ldr r0, [r2]
- strb r1, [r0, 0x11]
- ldr r1, [r2]
- movs r0, 0x3
- strb r0, [r1, 0x4]
- movs r0, 0xB
- b _0811B326
- .pool
-_0811B324:
- movs r0, 0
-_0811B326:
- pop {r1}
- bx r1
- thumb_func_end sub_811B2B0
-
- thumb_func_start sub_811B32C
-sub_811B32C: @ 811B32C
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- movs r0, 0
- strb r0, [r1, 0x4]
- movs r0, 0xA
- bx lr
- .pool
- thumb_func_end sub_811B32C
-
- thumb_func_start sub_811B33C
-sub_811B33C: @ 811B33C
- push {lr}
- ldr r1, =gUnknown_0203A118
- ldr r0, [r1]
- movs r2, 0
- strb r2, [r0, 0xA]
- ldr r0, [r1]
- strb r2, [r0, 0xB]
- ldr r0, [r1]
- strb r2, [r0, 0xC]
- ldr r1, [r1]
- ldrb r0, [r1, 0x9]
- cmp r0, 0
- bne _0811B360
- movs r0, 0x1
- strb r0, [r1, 0x9]
- b _0811B362
- .pool
-_0811B360:
- strb r2, [r1, 0x9]
-_0811B362:
- movs r0, 0x17
- pop {r1}
- bx r1
- thumb_func_end sub_811B33C
-
- thumb_func_start sub_811B368
-sub_811B368: @ 811B368
- push {lr}
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0x6
- beq _0811B388
- ldr r0, =0x0000ffff
- bl sub_811B488
- movs r0, 0x1
- b _0811B390
- .pool
-_0811B388:
- movs r0, 0x20
- bl PlaySE
- movs r0, 0
-_0811B390:
- pop {r1}
- bx r1
- thumb_func_end sub_811B368
-
- thumb_func_start sub_811B394
-sub_811B394: @ 811B394
- push {r4,r5,lr}
- bl sub_811B940
- lsls r0, 16
- lsrs r0, 16
- bl sub_811F578
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl sub_811BF88
- adds r5, r0, 0
- cmp r5, 0
- beq _0811B3BC
- movs r0, 0x20
- bl PlaySE
- movs r0, 0
- b _0811B3DC
-_0811B3BC:
- adds r0, r4, 0
- bl sub_811B488
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- ldrb r0, [r1]
- cmp r0, 0x6
- bne _0811B3D8
- movs r0, 0x9
- strb r0, [r1, 0x4]
- movs r0, 0xD
- b _0811B3DC
- .pool
-_0811B3D8:
- strb r5, [r1, 0x4]
- movs r0, 0xC
-_0811B3DC:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_811B394
-
- thumb_func_start sub_811B3E4
-sub_811B3E4: @ 811B3E4
- push {r4,r5,lr}
- movs r4, 0
- ldr r3, =gUnknown_0203A118
- ldr r0, [r3]
- ldrb r0, [r0, 0x7]
- cmp r4, r0
- bge _0811B40E
- adds r5, r3, 0
-_0811B3F4:
- ldr r3, [r5]
- ldr r1, [r3, 0x38]
- lsls r2, r4, 1
- adds r1, r2, r1
- adds r0, r3, 0
- adds r0, 0x3C
- adds r0, r2
- ldrh r0, [r0]
- strh r0, [r1]
- adds r4, 0x1
- ldrb r3, [r3, 0x7]
- cmp r4, r3
- blt _0811B3F4
-_0811B40E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811B3E4
-
- thumb_func_start sub_811B418
-sub_811B418: @ 811B418
- push {r4,r5,lr}
- movs r3, 0
- ldr r2, =gUnknown_0203A118
- ldr r0, [r2]
- ldrb r0, [r0, 0x7]
- cmp r3, r0
- bge _0811B444
- adds r5, r2, 0
- ldr r0, =0x0000ffff
- adds r4, r0, 0
-_0811B42C:
- ldr r2, [r5]
- lsls r0, r3, 1
- adds r1, r2, 0
- adds r1, 0x3C
- adds r1, r0
- ldrh r0, [r1]
- orrs r0, r4
- strh r0, [r1]
- adds r3, 0x1
- ldrb r2, [r2, 0x7]
- cmp r3, r2
- blt _0811B42C
-_0811B444:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811B418
-
- thumb_func_start sub_811B454
-sub_811B454: @ 811B454
- push {r4,r5,lr}
- movs r4, 0
- ldr r3, =gUnknown_0203A118
- ldr r0, [r3]
- ldrb r0, [r0, 0x7]
- cmp r4, r0
- bge _0811B47E
- adds r5, r3, 0
-_0811B464:
- ldr r3, [r5]
- lsls r1, r4, 1
- adds r2, r3, 0
- adds r2, 0x3C
- adds r2, r1
- ldr r0, [r3, 0x38]
- adds r1, r0
- ldrh r0, [r1]
- strh r0, [r2]
- adds r4, 0x1
- ldrb r3, [r3, 0x7]
- cmp r4, r3
- blt _0811B464
-_0811B47E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811B454
-
- thumb_func_start sub_811B488
-sub_811B488: @ 811B488
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- bl sub_811B8C8
- lsls r0, 16
- ldr r1, =gUnknown_0203A118
- ldr r1, [r1]
- lsrs r0, 15
- adds r1, 0x3C
- adds r1, r0
- strh r4, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811B488
-
- thumb_func_start sub_811B4AC
-sub_811B4AC: @ 811B4AC
- push {r4,r5,lr}
- movs r2, 0
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r1, [r0, 0x7]
- cmp r2, r1
- bcs _0811B4E2
- adds r5, r1, 0
- adds r4, r0, 0
- adds r4, 0x3C
- ldr r3, [r0, 0x38]
-_0811B4C2:
- lsls r0, r2, 1
- adds r1, r4, r0
- adds r0, r3
- ldrh r1, [r1]
- ldrh r0, [r0]
- cmp r1, r0
- beq _0811B4D8
- movs r0, 0x1
- b _0811B4E4
- .pool
-_0811B4D8:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, r5
- bcc _0811B4C2
-_0811B4E2:
- movs r0, 0
-_0811B4E4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_811B4AC
-
- thumb_func_start sub_811B4EC
-sub_811B4EC: @ 811B4EC
- push {lr}
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r0, [r0]
- subs r0, 0x11
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _0811B51C
- bl sub_811BD64
- cmp r0, 0
- bne _0811B50E
- bl sub_811BDB0
- cmp r0, 0
- beq _0811B518
-_0811B50E:
- movs r0, 0
- b _0811B524
- .pool
-_0811B518:
- movs r0, 0x1
- b _0811B524
-_0811B51C:
- bl sub_811B4AC
- lsls r0, 24
- lsrs r0, 24
-_0811B524:
- pop {r1}
- bx r1
- thumb_func_end sub_811B4EC
-
- thumb_func_start sub_811B528
-sub_811B528: @ 811B528
- push {lr}
- adds r2, r0, 0
- ldr r0, =gUnknown_0203A118
- ldr r3, [r0]
- movs r1, 0xA
- ldrsb r1, [r3, r1]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0811B558
- ldrb r0, [r3, 0x9]
- cmp r0, 0
- bne _0811B550
- adds r0, r2, 0
- bl sub_811B568
- b _0811B55E
- .pool
-_0811B550:
- adds r0, r2, 0
- bl sub_811B634
- b _0811B55E
-_0811B558:
- adds r0, r2, 0
- bl sub_811B6C4
-_0811B55E:
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_811B528
-
- thumb_func_start sub_811B568
-sub_811B568: @ 811B568
- push {r4,lr}
- cmp r0, 0x1
- beq _0811B5DE
- cmp r0, 0x1
- bcc _0811B5FE
- cmp r0, 0x2
- beq _0811B57C
- cmp r0, 0x3
- beq _0811B5A4
- b _0811B62A
-_0811B57C:
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- movs r0, 0xB
- ldrsb r0, [r1, r0]
- ldrb r3, [r1, 0xC]
- cmn r0, r3
- beq _0811B62A
- ldrb r2, [r1, 0xB]
- cmp r0, 0
- beq _0811B59C
- subs r0, r2, 0x1
- strb r0, [r1, 0xB]
-_0811B594:
- movs r0, 0xF
- b _0811B62C
- .pool
-_0811B59C:
- subs r0, r3, 0x1
- strb r0, [r1, 0xC]
- movs r0, 0x11
- b _0811B62C
-_0811B5A4:
- ldr r0, =gUnknown_0203A118
- ldr r2, [r0]
- movs r1, 0xB
- ldrsb r1, [r2, r1]
- ldrb r3, [r2, 0xC]
- adds r1, r3
- ldrb r0, [r2, 0xD]
- subs r0, 0x1
- cmp r1, r0
- bge _0811B62A
- ldrb r1, [r2, 0xB]
- movs r0, 0xB
- ldrsb r0, [r2, r0]
- cmp r0, 0x2
- bgt _0811B5D0
- adds r0, r1, 0x1
- strb r0, [r2, 0xB]
- movs r4, 0xF
- b _0811B5D6
- .pool
-_0811B5D0:
- adds r0, r3, 0x1
- strb r0, [r2, 0xC]
- movs r4, 0x10
-_0811B5D6:
- bl sub_811B978
- adds r0, r4, 0
- b _0811B62C
-_0811B5DE:
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- ldrb r2, [r1, 0xA]
- movs r0, 0xA
- ldrsb r0, [r1, r0]
- cmp r0, 0
- beq _0811B5F8
- subs r0, r2, 0x1
- strb r0, [r1, 0xA]
- b _0811B594
- .pool
-_0811B5F8:
- bl sub_811B744
- b _0811B594
-_0811B5FE:
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- ldrb r2, [r1, 0xA]
- movs r0, 0xA
- ldrsb r0, [r1, r0]
- cmp r0, 0
- bgt _0811B624
- adds r0, r2, 0x1
- strb r0, [r1, 0xA]
- bl sub_811B9C8
- lsls r0, 24
- cmp r0, 0
- beq _0811B594
- bl sub_811B744
- b _0811B594
- .pool
-_0811B624:
- bl sub_811B744
- b _0811B594
-_0811B62A:
- movs r0, 0
-_0811B62C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811B568
-
- thumb_func_start sub_811B634
-sub_811B634: @ 811B634
- push {lr}
- cmp r0, 0x1
- beq _0811B6A0
- cmp r0, 0x1
- bcc _0811B684
- cmp r0, 0x2
- beq _0811B64A
- cmp r0, 0x3
- beq _0811B66A
- movs r0, 0
- b _0811B6BC
-_0811B64A:
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- ldrb r2, [r1, 0xB]
- movs r0, 0xB
- ldrsb r0, [r1, r0]
- cmp r0, 0
- ble _0811B660
- subs r0, r2, 0x1
- b _0811B662
- .pool
-_0811B660:
- movs r0, 0x3
-_0811B662:
- strb r0, [r1, 0xB]
- bl sub_811B978
- b _0811B6BA
-_0811B66A:
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- ldrb r2, [r1, 0xB]
- movs r0, 0xB
- ldrsb r0, [r1, r0]
- cmp r0, 0x2
- bgt _0811B680
- adds r0, r2, 0x1
- b _0811B662
- .pool
-_0811B680:
- movs r0, 0
- b _0811B662
-_0811B684:
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- ldrb r0, [r1, 0xA]
- adds r0, 0x1
- strb r0, [r1, 0xA]
- bl sub_811B9C8
- lsls r0, 24
- cmp r0, 0
- beq _0811B6BA
- b _0811B6B6
- .pool
-_0811B6A0:
- ldr r2, =gUnknown_0203A118
- ldr r1, [r2]
- ldrb r0, [r1, 0xA]
- subs r0, 0x1
- strb r0, [r1, 0xA]
- ldr r0, [r2]
- ldrb r0, [r0, 0xA]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bge _0811B6BA
-_0811B6B6:
- bl sub_811B744
-_0811B6BA:
- movs r0, 0xF
-_0811B6BC:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_811B634
-
- thumb_func_start sub_811B6C4
-sub_811B6C4: @ 811B6C4
- push {lr}
- adds r2, r0, 0
- cmp r2, 0x1
- beq _0811B714
- cmp r2, 0x1
- bcc _0811B728
- cmp r2, 0x2
- beq _0811B6DC
- cmp r2, 0x3
- beq _0811B6F8
- movs r0, 0
- b _0811B73A
-_0811B6DC:
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- ldrb r3, [r1, 0xB]
- movs r0, 0xB
- ldrsb r0, [r1, r0]
- cmp r0, 0
- beq _0811B6F4
- subs r0, r3, 0x1
- b _0811B736
- .pool
-_0811B6F4:
- strb r2, [r1, 0xB]
- b _0811B738
-_0811B6F8:
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- ldrb r2, [r1, 0xB]
- movs r0, 0xB
- ldrsb r0, [r1, r0]
- cmp r0, 0x1
- bgt _0811B710
- adds r0, r2, 0x1
- b _0811B736
- .pool
-_0811B710:
- movs r0, 0
- b _0811B736
-_0811B714:
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- ldrb r0, [r1, 0xB]
- adds r0, 0x1
- strb r0, [r1, 0xB]
- bl sub_811B768
- b _0811B738
- .pool
-_0811B728:
- ldr r2, =gUnknown_0203A118
- ldr r1, [r2]
- movs r0, 0
- strb r0, [r1, 0xA]
- ldr r1, [r2]
- ldrb r0, [r1, 0xB]
- adds r0, 0x1
-_0811B736:
- strb r0, [r1, 0xB]
-_0811B738:
- movs r0, 0xF
-_0811B73A:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_811B6C4
-
- thumb_func_start sub_811B744
-sub_811B744: @ 811B744
- push {lr}
- ldr r2, =gUnknown_0203A118
- ldr r1, [r2]
- movs r0, 0xFF
- strb r0, [r1, 0xA]
- ldr r2, [r2]
- ldrb r1, [r2, 0xB]
- movs r0, 0xB
- ldrsb r0, [r2, r0]
- cmp r0, 0
- beq _0811B75E
- subs r0, r1, 0x1
- strb r0, [r2, 0xB]
-_0811B75E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811B744
-
- thumb_func_start sub_811B768
-sub_811B768: @ 811B768
- push {r4,lr}
- ldr r4, =gUnknown_0203A118
- ldr r1, [r4]
- ldrb r0, [r1, 0x9]
- cmp r0, 0
- bne _0811B784
- movs r0, 0x1
- strb r0, [r1, 0xA]
- bl sub_811B978
- b _0811B78E
- .pool
-_0811B784:
- ldrb r0, [r1, 0xB]
- bl sub_811B960
- ldr r1, [r4]
- strb r0, [r1, 0xA]
-_0811B78E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_811B768
-
- thumb_func_start sub_811B794
-sub_811B794: @ 811B794
- push {r4,lr}
- cmp r0, 0x5
- bls _0811B79C
- b _0811B8C0
-_0811B79C:
- lsls r0, 2
- ldr r1, =_0811B7AC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0811B7AC:
- .4byte _0811B848
- .4byte _0811B826
- .4byte _0811B7C4
- .4byte _0811B7F0
- .4byte _0811B870
- .4byte _0811B890
-_0811B7C4:
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- movs r0, 0x11
- ldrsb r0, [r1, r0]
- ldrb r3, [r1, 0xE]
- adds r0, r3
- cmp r0, 0
- bgt _0811B7D6
- b _0811B8C0
-_0811B7D6:
- ldrb r2, [r1, 0x11]
- movs r0, 0x11
- ldrsb r0, [r1, r0]
- cmp r0, 0
- ble _0811B7E8
- subs r0, r2, 0x1
- b _0811B80E
- .pool
-_0811B7E8:
- subs r0, r3, 0x1
- strb r0, [r1, 0xE]
- movs r4, 0x13
- b _0811B81E
-_0811B7F0:
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- movs r0, 0x11
- ldrsb r0, [r1, r0]
- ldrb r3, [r1, 0xE]
- adds r0, r3
- ldrb r2, [r1, 0xF]
- cmp r0, r2
- bge _0811B8C0
- ldrb r2, [r1, 0x11]
- movs r0, 0x11
- ldrsb r0, [r1, r0]
- cmp r0, 0x2
- bgt _0811B818
- adds r0, r2, 0x1
-_0811B80E:
- strb r0, [r1, 0x11]
- movs r4, 0x12
- b _0811B81E
- .pool
-_0811B818:
- adds r0, r3, 0x1
- strb r0, [r1, 0xE]
- movs r4, 0x14
-_0811B81E:
- bl sub_811B9A0
- adds r0, r4, 0
- b _0811B8C2
-_0811B826:
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- ldrb r2, [r1, 0x10]
- movs r0, 0x10
- ldrsb r0, [r1, r0]
- cmp r0, 0
- ble _0811B83C
- subs r0, r2, 0x1
- b _0811B83E
- .pool
-_0811B83C:
- movs r0, 0x1
-_0811B83E:
- strb r0, [r1, 0x10]
- bl sub_811B9A0
-_0811B844:
- movs r0, 0x12
- b _0811B8C2
-_0811B848:
- ldr r4, =gUnknown_0203A118
- ldr r1, [r4]
- ldrb r2, [r1, 0x10]
- movs r0, 0x10
- ldrsb r0, [r1, r0]
- cmp r0, 0
- bgt _0811B866
- adds r0, r2, 0x1
- strb r0, [r1, 0x10]
- bl sub_811BA1C
- lsls r0, 24
- cmp r0, 0
- beq _0811B844
- ldr r1, [r4]
-_0811B866:
- movs r0, 0
- strb r0, [r1, 0x10]
- b _0811B844
- .pool
-_0811B870:
- ldr r0, =gUnknown_0203A118
- ldr r2, [r0]
- ldrb r0, [r2, 0xE]
- adds r1, r0, 0
- cmp r1, 0
- beq _0811B8C0
- cmp r1, 0x3
- bls _0811B888
- subs r0, 0x4
- b _0811B88A
- .pool
-_0811B888:
- movs r0, 0
-_0811B88A:
- strb r0, [r2, 0xE]
- movs r0, 0x15
- b _0811B8C2
-_0811B890:
- ldr r3, =gUnknown_0203A118
- ldr r1, [r3]
- ldrb r2, [r1, 0xE]
- ldrb r0, [r1, 0xF]
- subs r0, 0x4
- cmp r2, r0
- bgt _0811B8C0
- adds r0, r2, 0x4
- strb r0, [r1, 0xE]
- ldr r2, [r3]
- ldrb r1, [r2, 0xE]
- ldrb r3, [r2, 0xF]
- subs r0, r3, 0x3
- cmp r1, r0
- ble _0811B8B4
- adds r0, r3, 0
- adds r0, 0xFD
- strb r0, [r2, 0xE]
-_0811B8B4:
- bl sub_811B9A0
- movs r0, 0x16
- b _0811B8C2
- .pool
-_0811B8C0:
- movs r0, 0
-_0811B8C2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811B794
-
- thumb_func_start sub_811B8C8
-sub_811B8C8: @ 811B8C8
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- movs r2, 0x6
- ldrsb r2, [r0, r2]
- ldrb r1, [r0, 0x2]
- muls r1, r2
- ldrb r0, [r0, 0x5]
- lsls r0, 24
- asrs r0, 24
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- bx lr
- .pool
- thumb_func_end sub_811B8C8
-
- thumb_func_start sub_811B8E8
-sub_811B8E8: @ 811B8E8
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- movs r1, 0xB
- ldrsb r1, [r0, r1]
- ldrb r2, [r0, 0xC]
- adds r1, r2
- lsls r1, 1
- ldrb r0, [r0, 0xA]
- lsls r0, 24
- asrs r0, 24
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- bx lr
- .pool
- thumb_func_end sub_811B8E8
-
- thumb_func_start sub_811B908
-sub_811B908: @ 811B908
- push {lr}
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- ldrb r0, [r1, 0xA]
- movs r3, 0
- cmp r0, 0x6
- bhi _0811B91A
- movs r3, 0xA
- ldrsb r3, [r1, r3]
-_0811B91A:
- ldrb r0, [r1, 0xB]
- movs r2, 0
- cmp r0, 0x3
- bhi _0811B926
- movs r2, 0xB
- ldrsb r2, [r1, r2]
-_0811B926:
- ldr r0, =gUnknown_08597748
- lsls r1, r2, 3
- subs r1, r2
- adds r1, r3, r1
- adds r1, r0
- ldrb r0, [r1]
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_811B908
-
- thumb_func_start sub_811B940
-sub_811B940: @ 811B940
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- movs r1, 0x11
- ldrsb r1, [r0, r1]
- ldrb r2, [r0, 0xE]
- adds r1, r2
- lsls r1, 1
- ldrb r0, [r0, 0x10]
- lsls r0, 24
- asrs r0, 24
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- bx lr
- .pool
- thumb_func_end sub_811B940
-
- thumb_func_start sub_811B960
-sub_811B960: @ 811B960
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0811B96E
- cmp r0, 0x1
- beq _0811B972
-_0811B96E:
- movs r0, 0x6
- b _0811B974
-_0811B972:
- movs r0, 0x5
-_0811B974:
- pop {r1}
- bx r1
- thumb_func_end sub_811B960
-
- thumb_func_start sub_811B978
-sub_811B978: @ 811B978
- push {lr}
- b _0811B98E
-_0811B97C:
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- ldrb r2, [r1, 0xA]
- movs r0, 0xA
- ldrsb r0, [r1, r0]
- cmp r0, 0
- beq _0811B998
- subs r0, r2, 0x1
- strb r0, [r1, 0xA]
-_0811B98E:
- bl sub_811B9C8
- lsls r0, 24
- cmp r0, 0
- bne _0811B97C
-_0811B998:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811B978
-
- thumb_func_start sub_811B9A0
-sub_811B9A0: @ 811B9A0
- push {lr}
- b _0811B9B6
-_0811B9A4:
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- ldrb r2, [r1, 0x10]
- movs r0, 0x10
- ldrsb r0, [r1, r0]
- cmp r0, 0
- beq _0811B9C0
- subs r0, r2, 0x1
- strb r0, [r1, 0x10]
-_0811B9B6:
- bl sub_811BA1C
- lsls r0, 24
- cmp r0, 0
- bne _0811B9A4
-_0811B9C0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811B9A0
-
- thumb_func_start sub_811B9C8
-sub_811B9C8: @ 811B9C8
- push {r4,lr}
- ldr r4, =gUnknown_0203A118
- ldr r1, [r4]
- ldrb r0, [r1, 0x9]
- cmp r0, 0
- bne _0811B9F8
- bl sub_811B8E8
- adds r4, r0, 0
- bl sub_811F3AC
- movs r1, 0
- lsls r0, 24
- lsls r4, 16
- lsrs r4, 16
- lsrs r0, 24
- cmp r4, r0
- bcc _0811B9EE
- movs r1, 0x1
-_0811B9EE:
- adds r0, r1, 0
- b _0811BA14
- .pool
-_0811B9F8:
- ldrb r0, [r1, 0xB]
- bl sub_811B960
- movs r2, 0
- ldr r1, [r4]
- ldrb r1, [r1, 0xA]
- lsls r1, 24
- asrs r1, 24
- lsls r0, 24
- lsrs r0, 24
- cmp r1, r0
- ble _0811BA12
- movs r2, 0x1
-_0811BA12:
- adds r0, r2, 0
-_0811BA14:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811B9C8
-
- thumb_func_start sub_811BA1C
-sub_811BA1C: @ 811BA1C
- push {r4,lr}
- bl sub_811B940
- adds r4, r0, 0
- bl sub_811F5B0
- movs r1, 0
- lsls r4, 16
- lsls r0, 16
- cmp r4, r0
- bcc _0811BA34
- movs r1, 0x1
-_0811BA34:
- adds r0, r1, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811BA1C
-
- thumb_func_start sub_811BA3C
-sub_811BA3C: @ 811BA3C
- ldr r2, =gUnknown_08597550
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r1, [r0, 0x1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r0, [r0, 0x3]
- lsrs r0, 7
- bx lr
- .pool
- thumb_func_end sub_811BA3C
-
- thumb_func_start sub_811BA5C
-sub_811BA5C: @ 811BA5C
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r0, [r0]
- bx lr
- .pool
- thumb_func_end sub_811BA5C
-
- thumb_func_start sub_811BA68
-sub_811BA68: @ 811BA68
- ldr r2, =gUnknown_08597550
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r1, [r0, 0x1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r0, [r0, 0x3]
- lsls r0, 25
- lsrs r0, 25
- bx lr
- .pool
- thumb_func_end sub_811BA68
-
- thumb_func_start sub_811BA88
-sub_811BA88: @ 811BA88
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldr r0, [r0, 0x34]
- bx lr
- .pool
- thumb_func_end sub_811BA88
-
- thumb_func_start sub_811BA94
-sub_811BA94: @ 811BA94
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- adds r0, 0x3C
- bx lr
- .pool
- thumb_func_end sub_811BA94
-
- thumb_func_start sub_811BAA0
-sub_811BAA0: @ 811BAA0
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r0, [r0, 0x3]
- bx lr
- .pool
- thumb_func_end sub_811BAA0
-
- thumb_func_start sub_811BAAC
-sub_811BAAC: @ 811BAAC
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r0, [r0, 0x2]
- bx lr
- .pool
- thumb_func_end sub_811BAAC
-
- thumb_func_start sub_811BAB8
-sub_811BAB8: @ 811BAB8
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r0, [r0, 0x5]
- bx lr
- .pool
- thumb_func_end sub_811BAB8
-
- thumb_func_start sub_811BAC4
-sub_811BAC4: @ 811BAC4
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r0, [r0, 0x6]
- bx lr
- .pool
- thumb_func_end sub_811BAC4
-
- thumb_func_start sub_811BAD0
-sub_811BAD0: @ 811BAD0
- push {r4,r5,lr}
- ldr r4, =gUnknown_08597550
- ldr r2, =gUnknown_0203A118
- ldr r5, [r2]
- ldrb r3, [r5, 0x1]
- lsls r2, r3, 1
- adds r2, r3
- lsls r2, 3
- adds r3, r4, 0
- adds r3, 0x8
- adds r2, r3
- ldr r2, [r2]
- str r2, [r0]
- ldrb r2, [r5, 0x1]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 3
- adds r4, 0xC
- adds r0, r4
- ldr r0, [r0]
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811BAD0
-
- thumb_func_start sub_811BB08
-sub_811BB08: @ 811BB08
- push {r4,r5,lr}
- ldr r4, =gUnknown_08597550
- ldr r2, =gUnknown_0203A118
- ldr r5, [r2]
- ldrb r3, [r5, 0x1]
- lsls r2, r3, 1
- adds r2, r3
- lsls r2, 3
- adds r3, r4, 0
- adds r3, 0x10
- adds r2, r3
- ldr r2, [r2]
- str r2, [r0]
- ldrb r2, [r5, 0x1]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 3
- adds r4, 0x14
- adds r0, r4
- ldr r0, [r0]
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811BB08
-
- thumb_func_start sub_811BB40
-sub_811BB40: @ 811BB40
- push {lr}
- adds r2, r0, 0
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _0811BB5C
- ldr r0, =gText_StopGivingPkmnMail
- b _0811BB7A
- .pool
-_0811BB5C:
- cmp r0, 0x4
- blt _0811BB78
- cmp r0, 0x10
- bgt _0811BB78
- cmp r0, 0xF
- blt _0811BB78
- ldr r0, =gText_LikeToQuitQuiz
- str r0, [r2]
- ldr r0, =gText_ChallengeQuestionMark
- b _0811BB7E
- .pool
-_0811BB78:
- ldr r0, =gText_QuitEditing
-_0811BB7A:
- str r0, [r2]
- movs r0, 0
-_0811BB7E:
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811BB40
-
- thumb_func_start sub_811BB88
-sub_811BB88: @ 811BB88
- ldr r2, =gText_AllTextBeingEditedWill
- str r2, [r0]
- ldr r0, =gText_BeDeletedThatOkay
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_811BB88
-
- thumb_func_start sub_811BB9C
-sub_811BB9C: @ 811BB9C
- ldr r2, =gUnknown_0203A118
- ldr r3, [r2]
- ldrb r2, [r3, 0xA]
- strb r2, [r0]
- ldrb r0, [r3, 0xB]
- strb r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_811BB9C
-
- thumb_func_start sub_811BBB0
-sub_811BBB0: @ 811BBB0
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r0, [r0, 0x9]
- bx lr
- .pool
- thumb_func_end sub_811BBB0
-
- thumb_func_start sub_811BBBC
-sub_811BBBC: @ 811BBBC
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r0, [r0, 0xC]
- bx lr
- .pool
- thumb_func_end sub_811BBBC
-
- thumb_func_start sub_811BBC8
-sub_811BBC8: @ 811BBC8
- ldr r2, =gUnknown_0203A118
- ldr r3, [r2]
- ldrb r2, [r3, 0x10]
- strb r2, [r0]
- ldrb r0, [r3, 0x11]
- strb r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_811BBC8
-
- thumb_func_start sub_811BBDC
-sub_811BBDC: @ 811BBDC
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r0, [r0, 0xE]
- bx lr
- .pool
- thumb_func_end sub_811BBDC
-
- thumb_func_start sub_811BBE8
-sub_811BBE8: @ 811BBE8
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r0, [r0, 0xF]
- bx lr
- .pool
- thumb_func_end sub_811BBE8
-
- thumb_func_start sub_811BBF4
-sub_811BBF4: @ 811BBF4
- movs r0, 0
- bx lr
- thumb_func_end sub_811BBF4
-
- thumb_func_start sub_811BBF8
-sub_811BBF8: @ 811BBF8
- push {lr}
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- ldrb r0, [r1, 0x4]
- cmp r0, 0x2
- beq _0811BC10
- cmp r0, 0x3
- beq _0811BC1A
- b _0811BC24
- .pool
-_0811BC10:
- ldrb r0, [r1, 0x9]
- cmp r0, 0
- bne _0811BC24
- ldrb r0, [r1, 0xC]
- b _0811BC1C
-_0811BC1A:
- ldrb r0, [r1, 0xE]
-_0811BC1C:
- cmp r0, 0
- beq _0811BC24
- movs r0, 0x1
- b _0811BC26
-_0811BC24:
- movs r0, 0
-_0811BC26:
- pop {r1}
- bx r1
- thumb_func_end sub_811BBF8
-
- thumb_func_start sub_811BC2C
-sub_811BC2C: @ 811BC2C
- push {lr}
- ldr r0, =gUnknown_0203A118
- ldr r2, [r0]
- ldrb r0, [r2, 0x4]
- cmp r0, 0x2
- beq _0811BC44
- cmp r0, 0x3
- beq _0811BC5A
- b _0811BC68
- .pool
-_0811BC44:
- ldrb r0, [r2, 0x9]
- cmp r0, 0
- bne _0811BC68
- ldrb r1, [r2, 0xC]
- adds r1, 0x4
- ldrb r0, [r2, 0xD]
- subs r0, 0x1
- cmp r1, r0
- bgt _0811BC68
- movs r0, 0x1
- b _0811BC6A
-_0811BC5A:
- ldrb r0, [r2, 0xE]
- adds r0, 0x4
- ldrb r2, [r2, 0xF]
- cmp r0, r2
- bgt _0811BC68
- movs r0, 0x1
- b _0811BC6A
-_0811BC68:
- movs r0, 0
-_0811BC6A:
- pop {r1}
- bx r1
- thumb_func_end sub_811BC2C
-
- thumb_func_start sub_811BC70
-sub_811BC70: @ 811BC70
- push {lr}
- bl sub_811BA3C
- pop {r1}
- bx r1
- thumb_func_end sub_811BC70
-
- thumb_func_start sub_811BC7C
-sub_811BC7C: @ 811BC7C
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 24
- lsrs r3, r1, 24
- movs r2, 0
- cmp r2, r3
- bcs _0811BCB2
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- adds r4, r0, 0
- adds r4, 0x3C
-_0811BC92:
- lsls r0, r2, 1
- adds r1, r0, r5
- adds r0, r4, r0
- ldrh r1, [r1]
- ldrh r0, [r0]
- cmp r1, r0
- beq _0811BCA8
- movs r0, 0x1
- b _0811BCB4
- .pool
-_0811BCA8:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r3
- bcc _0811BC92
-_0811BCB2:
- movs r0, 0
-_0811BCB4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_811BC7C
-
- thumb_func_start sub_811BCBC
-sub_811BCBC: @ 811BCBC
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r0, [r0, 0x12]
- bx lr
- .pool
- thumb_func_end sub_811BCBC
-
- thumb_func_start sub_811BCC8
-sub_811BCC8: @ 811BCC8
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- movs r1, 0
- ldr r2, =gUnknown_08597550
-_0811BCD2:
- ldrb r0, [r2]
- cmp r0, r3
- bne _0811BCE4
- lsls r0, r1, 24
- lsrs r0, 24
- b _0811BCEE
- .pool
-_0811BCE4:
- adds r2, 0x18
- adds r1, 0x1
- cmp r1, 0x14
- bls _0811BCD2
- movs r0, 0
-_0811BCEE:
- pop {r1}
- bx r1
- thumb_func_end sub_811BCC8
-
- thumb_func_start sub_811BCF4
-sub_811BCF4: @ 811BCF4
- push {r4,lr}
- movs r2, 0
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r1, [r0, 0x7]
- cmp r2, r1
- bge _0811BD24
- ldr r4, =0x0000ffff
- adds r3, r1, 0
- adds r1, r0, 0
- adds r1, 0x3C
-_0811BD0A:
- ldrh r0, [r1]
- cmp r0, r4
- beq _0811BD1C
- movs r0, 0
- b _0811BD26
- .pool
-_0811BD1C:
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, r3
- blt _0811BD0A
-_0811BD24:
- movs r0, 0x1
-_0811BD26:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811BCF4
-
- thumb_func_start sub_811BD2C
-sub_811BD2C: @ 811BD2C
- push {r4,lr}
- movs r2, 0
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r1, [r0, 0x7]
- cmp r2, r1
- bge _0811BD5C
- ldr r4, =0x0000ffff
- adds r3, r1, 0
- adds r1, r0, 0
- adds r1, 0x3C
-_0811BD42:
- ldrh r0, [r1]
- cmp r0, r4
- bne _0811BD54
- movs r0, 0
- b _0811BD5E
- .pool
-_0811BD54:
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, r3
- blt _0811BD42
-_0811BD5C:
- movs r0, 0x1
-_0811BD5E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811BD2C
-
- thumb_func_start sub_811BD64
-sub_811BD64: @ 811BD64
- push {r4,lr}
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0x11
- bne _0811BD80
- bl sub_811BCF4
- b _0811BD9C
- .pool
-_0811BD7C:
- movs r0, 0
- b _0811BD9C
-_0811BD80:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r2, 0
- ldr r3, =0x0000ffff
- ldr r4, =0x00003b5a
- adds r1, r0, r4
-_0811BD8C:
- ldrh r0, [r1]
- cmp r0, r3
- bne _0811BD7C
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, 0x8
- ble _0811BD8C
- movs r0, 0x1
-_0811BD9C:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_811BD64
-
- thumb_func_start sub_811BDB0
-sub_811BDB0: @ 811BDB0
- push {lr}
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0x12
- bne _0811BDC8
- bl sub_811BCF4
- b _0811BDDE
- .pool
-_0811BDC8:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003b58
- adds r0, r1
- movs r2, 0
- ldrh r1, [r0, 0x14]
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _0811BDDC
- movs r2, 0x1
-_0811BDDC:
- adds r0, r2, 0
-_0811BDDE:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_811BDB0
-
- thumb_func_start sub_811BDF0
-sub_811BDF0: @ 811BDF0
- push {r4-r6,lr}
- sub sp, 0x20
- adds r6, r0, 0
- ldr r0, =gSaveBlock1Ptr
- ldr r4, [r0]
- bl DynamicPlaceholderTextUtil_Reset
- ldr r0, =0x00003b70
- adds r5, r4, r0
- adds r0, r5, 0
- bl StringLength
- lsls r0, 16
- cmp r0, 0
- beq _0811BE34
- ldr r1, =0x00003b85
- adds r0, r4, r1
- ldrb r2, [r0]
- mov r0, sp
- adds r1, r5, 0
- bl TVShowConvertInternationalString
- movs r0, 0
- mov r1, sp
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- b _0811BE3C
- .pool
-_0811BE34:
- ldr r1, =gText_Lady
- movs r0, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
-_0811BE3C:
- ldr r1, =gText_F700sQuiz
- adds r0, r6, 0
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
- add sp, 0x20
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811BDF0
-
- thumb_func_start sub_811BE54
-sub_811BE54: @ 811BE54
- push {r4,r5,lr}
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- adds r4, r0, 0
- adds r4, 0x3C
- ldr r2, =gStringVar2
- movs r5, 0
- b _0811BE86
- .pool
-_0811BE6C:
- ldrh r1, [r4]
- adds r0, r2, 0
- movs r2, 0
- bl CopyEasyChatWordPadded
- adds r2, r0, 0
- movs r0, 0
- strb r0, [r2]
- adds r2, 0x1
- adds r4, 0x2
- adds r5, 0x1
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
-_0811BE86:
- ldrb r0, [r0, 0x7]
- cmp r5, r0
- blt _0811BE6C
- subs r2, 0x1
- movs r0, 0xFF
- strb r0, [r2]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811BE54
-
- thumb_func_start sub_811BE9C
-sub_811BE9C: @ 811BE9C
- push {r4,r5,lr}
- ldr r5, =gUnknown_0203A118
- ldr r0, [r5]
- ldrb r0, [r0]
- cmp r0, 0x9
- beq _0811BEF0
- cmp r0, 0x9
- bgt _0811BEB8
- cmp r0, 0
- beq _0811BEC2
- b _0811BF14
- .pool
-_0811BEB8:
- cmp r0, 0xD
- beq _0811BF0C
- cmp r0, 0x14
- beq _0811BED0
- b _0811BF14
-_0811BEC2:
- ldr r0, =0x00000865
- bl FlagSet
- b _0811BF14
- .pool
-_0811BED0:
- bl sub_811BF20
- adds r1, r0, 0
- cmp r1, 0
- beq _0811BEE4
- ldr r1, =gSpecialVar_0x8004
- movs r0, 0x2
- b _0811BF12
- .pool
-_0811BEE4:
- ldr r0, =gSpecialVar_0x8004
- strh r1, [r0]
- b _0811BF14
- .pool
-_0811BEF0:
- bl sub_811BE54
- ldr r4, =gSpecialVar_0x8004
- ldr r0, [r5]
- adds r0, 0x3C
- bl sub_81226D8
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- b _0811BF14
- .pool
-_0811BF0C:
- bl sub_811BF40
- ldr r1, =gSpecialVar_0x8004
-_0811BF12:
- strh r0, [r1]
-_0811BF14:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811BE9C
-
- thumb_func_start sub_811BF20
-sub_811BF20: @ 811BF20
- push {lr}
- ldr r0, =gUnknown_08597764
- movs r1, 0x4
- bl sub_811BC7C
- movs r1, 0
- lsls r0, 24
- cmp r0, 0
- bne _0811BF34
- movs r1, 0x1
-_0811BF34:
- adds r0, r1, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_811BF20
-
- thumb_func_start sub_811BF40
-sub_811BF40: @ 811BF40
- push {r4,r5,lr}
- movs r4, 0
- movs r5, 0x80
- lsls r5, 9
-_0811BF48:
- lsls r0, r4, 2
- ldr r1, =gUnknown_0859776C
- adds r0, r1
- movs r1, 0x2
- bl sub_811BC7C
- lsls r0, 24
- cmp r0, 0
- bne _0811BF64
- lsrs r0, r5, 16
- b _0811BF72
- .pool
-_0811BF64:
- movs r0, 0x80
- lsls r0, 9
- adds r5, r0
- adds r4, 0x1
- cmp r4, 0x4
- ble _0811BF48
- movs r0, 0
-_0811BF72:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_811BF40
-
- thumb_func_start sub_811BF78
-sub_811BF78: @ 811BF78
- ldr r0, =gUnknown_0203A118
- ldr r1, [r0]
- movs r0, 0
- strb r0, [r1, 0x13]
- bx lr
- .pool
- thumb_func_end sub_811BF78
-
- thumb_func_start sub_811BF88
-sub_811BF88: @ 811BF88
- movs r0, 0
- bx lr
- thumb_func_end sub_811BF88
-
- thumb_func_start sub_811BF8C
-sub_811BF8C: @ 811BF8C
- push {lr}
- bl sub_811CE94
- lsls r0, 24
- cmp r0, 0
- beq _0811BF9C
- movs r0, 0x1
- b _0811BF9E
-_0811BF9C:
- movs r0, 0
-_0811BF9E:
- pop {r1}
- bx r1
- thumb_func_end sub_811BF8C
-
- thumb_func_start sub_811BFA4
-sub_811BFA4: @ 811BFA4
- push {r4,lr}
- sub sp, 0x8
- ldr r0, =gUnknown_0203A11C
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0x5
- bls _0811BFB4
- b _0811C120
-_0811BFB4:
- lsls r0, 2
- ldr r1, =_0811BFC8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0811BFC8:
- .4byte _0811BFE0
- .4byte _0811C044
- .4byte _0811C090
- .4byte _0811C0AC
- .4byte _0811C0BE
- .4byte _0811C0D4
-_0811BFE0:
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_08597C54
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- ldr r4, =gUnknown_0203A11C
- ldr r1, [r4]
- movs r0, 0xB0
- lsls r0, 4
- adds r1, r0
- movs r0, 0x3
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- movs r0, 0xC0
- lsls r0, 2
- adds r1, r0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r0, =gUnknown_08597C64
- bl InitWindows
- bl DeactivateAllTextPrinters
- bl sub_811CF64
- bl sub_811CF04
- movs r0, 0
- str r0, [sp, 0x4]
- movs r1, 0xE0
- lsls r1, 19
- ldr r2, =0x01000100
- add r0, sp, 0x4
- bl CpuFastSet
- b _0811C124
- .pool
-_0811C044:
- ldr r1, =gEasyChatWindow_Gfx
- movs r0, 0
- str r0, [sp]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl DecompressAndLoadBgGfxUsingHeap
- ldr r1, =gEasyChatWindow_Tilemap
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- bl sub_811D60C
- ldr r0, =gUnknown_0203A11C
- ldr r0, [r0]
- movs r1, 0xC0
- lsls r1, 2
- adds r0, r1
- bl sub_811D424
- bl sub_811D230
- bl sub_811E948
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- b _0811C124
- .pool
-_0811C090:
- ldr r1, =gUnknown_08597B54
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl DecompressAndLoadBgGfxUsingHeap
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- b _0811C124
- .pool
-_0811C0AC:
- bl sub_811CFCC
- bl sub_811D0BC
- bl sub_811D2C8
- bl sub_811D684
- b _0811C124
-_0811C0BE:
- bl sub_811DE90
- bl sub_811BA5C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x10
- beq _0811C124
- bl sub_811DEC4
- b _0811C124
-_0811C0D4:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0811C12E
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_811DE5C
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0x3B
- bl SetGpuReg
- movs r0, 0x3
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0
- bl ShowBg
- bl sub_811E5D4
- bl sub_811E720
- bl sub_811E828
- b _0811C124
-_0811C120:
- movs r0, 0
- b _0811C130
-_0811C124:
- ldr r0, =gUnknown_0203A11C
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0811C12E:
- movs r0, 0x1
-_0811C130:
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_811BFA4
-
- thumb_func_start sub_811C13C
-sub_811C13C: @ 811C13C
- push {r4,lr}
- ldr r4, =gUnknown_0203A11C
- ldr r0, [r4]
- cmp r0, 0
- beq _0811C14E
- bl Free
- movs r0, 0
- str r0, [r4]
-_0811C14E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811C13C
-
- thumb_func_start sub_811C158
-sub_811C158: @ 811C158
- push {lr}
- ldr r1, =gUnknown_0203A11C
- ldr r1, [r1]
- movs r2, 0
- strh r0, [r1, 0x4]
- strh r2, [r1]
- bl sub_811C170
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811C158
-
- thumb_func_start sub_811C170
-sub_811C170: @ 811C170
- push {lr}
- ldr r0, =gUnknown_0203A11C
- ldr r0, [r0]
- ldrh r0, [r0, 0x4]
- cmp r0, 0x22
- bls _0811C17E
- b _0811C2CE
-_0811C17E:
- lsls r0, 2
- ldr r1, =_0811C190
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0811C190:
- .4byte _0811C2CE
- .4byte _0811C21C
- .4byte _0811C222
- .4byte _0811C228
- .4byte _0811C22E
- .4byte _0811C234
- .4byte _0811C23A
- .4byte _0811C240
- .4byte _0811C246
- .4byte _0811C24C
- .4byte _0811C252
- .4byte _0811C258
- .4byte _0811C25E
- .4byte _0811C264
- .4byte _0811C26A
- .4byte _0811C270
- .4byte _0811C276
- .4byte _0811C27C
- .4byte _0811C282
- .4byte _0811C288
- .4byte _0811C28E
- .4byte _0811C294
- .4byte _0811C29A
- .4byte _0811C2A0
- .4byte _0811C2CE
- .4byte _0811C2CE
- .4byte _0811C2CE
- .4byte _0811C2CE
- .4byte _0811C2CE
- .4byte _0811C2A6
- .4byte _0811C2AC
- .4byte _0811C2B2
- .4byte _0811C2B8
- .4byte _0811C2BE
- .4byte _0811C2C4
-_0811C21C:
- bl sub_811C2D4
- b _0811C2C8
-_0811C222:
- bl sub_811C30C
- b _0811C2C8
-_0811C228:
- bl sub_811C3E4
- b _0811C2C8
-_0811C22E:
- bl sub_811C48C
- b _0811C2C8
-_0811C234:
- bl sub_811C404
- b _0811C2C8
-_0811C23A:
- bl sub_811C448
- b _0811C2C8
-_0811C240:
- bl sub_811C4D0
- b _0811C2C8
-_0811C246:
- bl sub_811C518
- b _0811C2C8
-_0811C24C:
- bl sub_811C554
- b _0811C2C8
-_0811C252:
- bl sub_811C620
- b _0811C2C8
-_0811C258:
- bl sub_811C830
- b _0811C2C8
-_0811C25E:
- bl sub_811C8F0
- b _0811C2C8
-_0811C264:
- bl sub_811C99C
- b _0811C2C8
-_0811C26A:
- bl sub_811CA5C
- b _0811C2C8
-_0811C270:
- bl sub_811C780
- b _0811C2C8
-_0811C276:
- bl sub_811C78C
- b _0811C2C8
-_0811C27C:
- bl sub_811C7D4
- b _0811C2C8
-_0811C282:
- bl sub_811CB18
- b _0811C2C8
-_0811C288:
- bl sub_811CB98
- b _0811C2C8
-_0811C28E:
- bl sub_811CB24
- b _0811C2C8
-_0811C294:
- bl sub_811CC90
- b _0811C2C8
-_0811C29A:
- bl sub_811CC08
- b _0811C2C8
-_0811C2A0:
- bl sub_811C6C0
- b _0811C2C8
-_0811C2A6:
- bl sub_811CD14
- b _0811C2C8
-_0811C2AC:
- bl sub_811CD54
- b _0811C2C8
-_0811C2B2:
- bl sub_811CD94
- b _0811C2C8
-_0811C2B8:
- bl sub_811CDD4
- b _0811C2C8
-_0811C2BE:
- bl sub_811CE14
- b _0811C2C8
-_0811C2C4:
- bl sub_811CE54
-_0811C2C8:
- lsls r0, 24
- lsrs r0, 24
- b _0811C2D0
-_0811C2CE:
- movs r0, 0
-_0811C2D0:
- pop {r1}
- bx r1
- thumb_func_end sub_811C170
-
- thumb_func_start sub_811C2D4
-sub_811C2D4: @ 811C2D4
- push {r4,lr}
- ldr r4, =gUnknown_0203A11C
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _0811C2EC
- cmp r0, 0x1
- beq _0811C2FA
- b _0811C304
- .pool
-_0811C2EC:
- bl sub_811D2C8
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811C304
-_0811C2FA:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- b _0811C306
-_0811C304:
- movs r0, 0x1
-_0811C306:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811C2D4
-
- thumb_func_start sub_811C30C
-sub_811C30C: @ 811C30C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x40
- bl sub_811BA94
- adds r4, r0, 0
- bl sub_811BA68
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- bl sub_811BAB8
- lsls r0, 24
- lsrs r7, r0, 24
- bl sub_811BAC4
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- bl sub_811BAAC
- lsls r0, 24
- lsrs r0, 24
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- lsls r0, 1
- adds r4, r0
- ldr r1, =gUnknown_08597C30
- mov r2, r10
- lsls r0, r2, 2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 27
- lsrs r0, 8
- movs r1, 0xD0
- lsls r1, 12
- adds r0, r1
- lsrs r6, r0, 16
- movs r5, 0
- cmp r5, r7
- bcs _0811C3AA
- ldr r2, =0x0000ffff
- mov r8, r2
-_0811C36C:
- ldrh r0, [r4]
- cmp r0, r8
- bne _0811C380
- movs r0, 0x48
- b _0811C392
- .pool
-_0811C380:
- ldrh r1, [r4]
- mov r0, sp
- bl CopyEasyChatWord
- movs r0, 0x1
- mov r1, sp
- movs r2, 0
- bl GetStringWidth
-_0811C392:
- adds r0, 0x11
- lsls r1, r6, 16
- asrs r1, 16
- adds r1, r0
- lsls r1, 16
- lsrs r6, r1, 16
- adds r4, 0x2
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, r7
- bcc _0811C36C
-_0811C3AA:
- ldr r1, =gUnknown_08597C30
- mov r2, r10
- lsls r0, r2, 2
- adds r0, r1
- ldrb r1, [r0]
- lsrs r1, 5
- mov r2, r9
- lsls r0, r2, 1
- adds r1, r0
- lsls r1, 27
- lsls r0, r6, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 20
- adds r1, r2
- lsrs r1, 24
- bl sub_811DF60
- movs r0, 0
- add sp, 0x40
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_811C30C
-
- thumb_func_start sub_811C3E4
-sub_811C3E4: @ 811C3E4
- push {lr}
- bl sub_811BAB8
- lsls r0, 24
- lsrs r0, 24
- bl sub_811E920
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x60
- bl sub_811DF60
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_811C3E4
-
- thumb_func_start sub_811C404
-sub_811C404: @ 811C404
- push {r4,lr}
- ldr r4, =gUnknown_0203A11C
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _0811C41C
- cmp r0, 0x1
- beq _0811C436
- b _0811C440
- .pool
-_0811C41C:
- bl sub_811DF90
- movs r0, 0x2
- bl sub_811D104
- movs r0, 0x1
- bl sub_811D214
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811C440
-_0811C436:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- b _0811C442
-_0811C440:
- movs r0, 0x1
-_0811C442:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811C404
-
- thumb_func_start sub_811C448
-sub_811C448: @ 811C448
- push {r4,lr}
- ldr r4, =gUnknown_0203A11C
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _0811C460
- cmp r0, 0x1
- beq _0811C47A
- b _0811C484
- .pool
-_0811C460:
- bl sub_811DF90
- movs r0, 0x3
- bl sub_811D104
- movs r0, 0
- bl sub_811D214
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811C484
-_0811C47A:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- b _0811C486
-_0811C484:
- movs r0, 0x1
-_0811C486:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811C448
-
- thumb_func_start sub_811C48C
-sub_811C48C: @ 811C48C
- push {r4,lr}
- ldr r4, =gUnknown_0203A11C
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _0811C4A4
- cmp r0, 0x1
- beq _0811C4BE
- b _0811C4C8
- .pool
-_0811C4A4:
- bl sub_811DF90
- movs r0, 0x1
- bl sub_811D104
- movs r0, 0x1
- bl sub_811D214
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811C4C8
-_0811C4BE:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- b _0811C4CA
-_0811C4C8:
- movs r0, 0x1
-_0811C4CA:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811C48C
-
- thumb_func_start sub_811C4D0
-sub_811C4D0: @ 811C4D0
- push {r4,lr}
- ldr r4, =gUnknown_0203A11C
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _0811C4E8
- cmp r0, 0x1
- beq _0811C506
- b _0811C510
- .pool
-_0811C4E8:
- bl sub_811DFB0
- movs r0, 0
- bl sub_811D104
- bl sub_811D2C8
- movs r0, 0
- bl ShowBg
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811C510
-_0811C506:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- b _0811C512
-_0811C510:
- movs r0, 0x1
-_0811C512:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811C4D0
-
- thumb_func_start sub_811C518
-sub_811C518: @ 811C518
- push {r4,lr}
- ldr r4, =gUnknown_0203A11C
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _0811C530
- cmp r0, 0x1
- beq _0811C546
- movs r0, 0x1
- b _0811C54E
- .pool
-_0811C530:
- bl sub_811DFB0
- movs r0, 0
- bl sub_811D104
- bl sub_811D2C8
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0811C546:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
-_0811C54E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811C518
-
- thumb_func_start sub_811C554
-sub_811C554: @ 811C554
- push {lr}
- ldr r0, =gUnknown_0203A11C
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0x4
- bhi _0811C60E
- lsls r0, 2
- ldr r1, =_0811C574
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0811C574:
- .4byte _0811C588
- .4byte _0811C5A4
- .4byte _0811C5B6
- .4byte _0811C5CC
- .4byte _0811C5EC
-_0811C588:
- bl sub_811DF90
- movs r0, 0
- bl HideBg
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_811DE5C
- bl sub_811D6D4
- b _0811C5DA
-_0811C5A4:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0811C618
- movs r0, 0
- bl sub_811D9CC
- b _0811C5DA
-_0811C5B6:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0811C618
- bl sub_811DAA4
- lsls r0, 24
- cmp r0, 0
- bne _0811C618
- b _0811C5DA
-_0811C5CC:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0811C618
- bl sub_811E3AC
-_0811C5DA:
- ldr r0, =gUnknown_0203A11C
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811C618
- .pool
-_0811C5EC:
- bl sub_811E418
- lsls r0, 24
- cmp r0, 0
- bne _0811C618
- bl sub_811DFC8
- movs r0, 0
- bl sub_811E6E0
- bl sub_811E64C
- ldr r0, =gUnknown_0203A11C
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0811C60E:
- movs r0, 0
- b _0811C61A
- .pool
-_0811C618:
- movs r0, 0x1
-_0811C61A:
- pop {r1}
- bx r1
- thumb_func_end sub_811C554
-
- thumb_func_start sub_811C620
-sub_811C620: @ 811C620
- push {lr}
- ldr r0, =gUnknown_0203A11C
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0x4
- bhi _0811C6B8
- lsls r0, 2
- ldr r1, =_0811C640
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0811C640:
- .4byte _0811C654
- .4byte _0811C662
- .4byte _0811C67E
- .4byte _0811C690
- .4byte _0811C6B4
-_0811C654:
- bl sub_811E050
- bl sub_811E4AC
- bl sub_811E6B0
- b _0811C6A4
-_0811C662:
- bl sub_811E4D0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0811C6B8
- movs r0, 0x1
- bl sub_811D9CC
- ldr r0, =gUnknown_0203A11C
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0811C67E:
- bl sub_811DAA4
- lsls r0, 24
- cmp r0, 0
- bne _0811C6B8
- b _0811C6A4
- .pool
-_0811C690:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0811C6B8
- bl sub_811DFB0
- movs r0, 0
- bl ShowBg
-_0811C6A4:
- ldr r0, =gUnknown_0203A11C
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811C6B8
- .pool
-_0811C6B4:
- movs r0, 0
- b _0811C6BA
-_0811C6B8:
- movs r0, 0x1
-_0811C6BA:
- pop {r1}
- bx r1
- thumb_func_end sub_811C620
-
- thumb_func_start sub_811C6C0
-sub_811C6C0: @ 811C6C0
- push {lr}
- ldr r0, =gUnknown_0203A11C
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0x4
- bhi _0811C778
- lsls r0, 2
- ldr r1, =_0811C6E0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0811C6E0:
- .4byte _0811C6F4
- .4byte _0811C708
- .4byte _0811C722
- .4byte _0811C748
- .4byte _0811C76E
-_0811C6F4:
- bl sub_811E050
- bl sub_811E6B0
- bl sub_811E55C
- movs r0, 0x5
- bl sub_811D9CC
- b _0811C736
-_0811C708:
- bl sub_811DAA4
- lsls r0, 24
- cmp r0, 0
- bne _0811C778
- bl sub_811E5B8
- lsls r0, 24
- cmp r0, 0
- bne _0811C778
- bl sub_811D6D4
- b _0811C736
-_0811C722:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0811C778
- movs r0, 0x6
- bl sub_811D9CC
- bl sub_811E578
-_0811C736:
- ldr r0, =gUnknown_0203A11C
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811C778
- .pool
-_0811C748:
- bl sub_811DAA4
- lsls r0, 24
- cmp r0, 0
- bne _0811C778
- bl sub_811E5B8
- lsls r0, 24
- cmp r0, 0
- bne _0811C778
- bl sub_811E64C
- bl sub_811DFC8
- ldr r0, =gUnknown_0203A11C
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0811C76E:
- movs r0, 0
- b _0811C77A
- .pool
-_0811C778:
- movs r0, 0x1
-_0811C77A:
- pop {r1}
- bx r1
- thumb_func_end sub_811C6C0
-
- thumb_func_start sub_811C780
-sub_811C780: @ 811C780
- push {lr}
- bl sub_811E088
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_811C780
-
- thumb_func_start sub_811C78C
-sub_811C78C: @ 811C78C
- push {r4,lr}
- ldr r4, =gUnknown_0203A11C
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _0811C7A4
- cmp r0, 0x1
- beq _0811C7B4
- b _0811C7CA
- .pool
-_0811C7A4:
- movs r0, 0x1
- movs r1, 0x4
- bl sub_811DDAC
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0811C7B4:
- bl sub_811DE10
- lsls r0, 24
- cmp r0, 0
- bne _0811C7CA
- bl sub_811E088
- bl sub_811E64C
- movs r0, 0
- b _0811C7CC
-_0811C7CA:
- movs r0, 0x1
-_0811C7CC:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811C78C
-
- thumb_func_start sub_811C7D4
-sub_811C7D4: @ 811C7D4
- push {r4,lr}
- ldr r4, =gUnknown_0203A11C
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _0811C808
- cmp r0, 0x1
- bgt _0811C7F0
- cmp r0, 0
- beq _0811C7F6
- b _0811C828
- .pool
-_0811C7F0:
- cmp r0, 0x2
- beq _0811C820
- b _0811C828
-_0811C7F6:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x4
- bl sub_811DDAC
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0811C808:
- bl sub_811DE10
- lsls r0, 24
- cmp r0, 0
- bne _0811C828
- bl sub_811E64C
- ldr r0, =gUnknown_0203A11C
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0811C820:
- movs r0, 0
- b _0811C82A
- .pool
-_0811C828:
- movs r0, 0x1
-_0811C82A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811C7D4
-
- thumb_func_start sub_811C830
-sub_811C830: @ 811C830
- push {lr}
- ldr r0, =gUnknown_0203A11C
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0x5
- bhi _0811C8E8
- lsls r0, 2
- ldr r1, =_0811C850
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0811C850:
- .4byte _0811C868
- .4byte _0811C876
- .4byte _0811C886
- .4byte _0811C898
- .4byte _0811C8B8
- .4byte _0811C8DE
-_0811C868:
- bl sub_811E050
- bl sub_811E4AC
- bl sub_811E6B0
- b _0811C8A8
-_0811C876:
- bl sub_811E4D0
- lsls r0, 24
- cmp r0, 0
- bne _0811C8E8
- bl sub_811D9B4
- b _0811C8A8
-_0811C886:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0811C8E8
- movs r0, 0x2
- bl sub_811D9CC
- b _0811C8A8
-_0811C898:
- bl sub_811DAA4
- lsls r0, 24
- cmp r0, 0
- bne _0811C8E8
- movs r0, 0x2
- bl sub_811D698
-_0811C8A8:
- ldr r0, =gUnknown_0203A11C
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811C8E8
- .pool
-_0811C8B8:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0811C8E8
- bl sub_811E288
- movs r0, 0x1
- bl sub_811E6E0
- bl sub_811E64C
- bl sub_811E794
- ldr r0, =gUnknown_0203A11C
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0811C8DE:
- movs r0, 0
- b _0811C8EA
- .pool
-_0811C8E8:
- movs r0, 0x1
-_0811C8EA:
- pop {r1}
- bx r1
- thumb_func_end sub_811C830
-
- thumb_func_start sub_811C8F0
-sub_811C8F0: @ 811C8F0
- push {lr}
- ldr r0, =gUnknown_0203A11C
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0x5
- bhi _0811C994
- lsls r0, 2
- ldr r1, =_0811C910
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0811C910:
- .4byte _0811C928
- .4byte _0811C92E
- .4byte _0811C940
- .4byte _0811C952
- .4byte _0811C974
- .4byte _0811C98C
-_0811C928:
- bl sub_811D2C8
- b _0811C962
-_0811C92E:
- bl sub_811E380
- bl sub_811E6B0
- bl sub_811E7F8
- bl sub_811D9B4
- b _0811C962
-_0811C940:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0811C994
- movs r0, 0x3
- bl sub_811D9CC
- b _0811C962
-_0811C952:
- bl sub_811DAA4
- lsls r0, 24
- cmp r0, 0
- bne _0811C994
- movs r0, 0
- bl ShowBg
-_0811C962:
- ldr r0, =gUnknown_0203A11C
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811C994
- .pool
-_0811C974:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0811C994
- bl sub_811DFB0
- ldr r0, =gUnknown_0203A11C
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0811C98C:
- movs r0, 0
- b _0811C996
- .pool
-_0811C994:
- movs r0, 0x1
-_0811C996:
- pop {r1}
- bx r1
- thumb_func_end sub_811C8F0
-
- thumb_func_start sub_811C99C
-sub_811C99C: @ 811C99C
- push {lr}
- ldr r0, =gUnknown_0203A11C
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0x6
- bhi _0811CA54
- lsls r0, 2
- ldr r1, =_0811C9BC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0811C9BC:
- .4byte _0811C9D8
- .4byte _0811C9DE
- .4byte _0811C9F0
- .4byte _0811CA02
- .4byte _0811CA14
- .4byte _0811CA34
- .4byte _0811CA4C
-_0811C9D8:
- bl sub_811D2C8
- b _0811CA24
-_0811C9DE:
- bl sub_811E380
- bl sub_811E6B0
- bl sub_811E7F8
- bl sub_811D9B4
- b _0811CA24
-_0811C9F0:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0811CA54
- movs r0, 0x3
- bl sub_811D9CC
- b _0811CA24
-_0811CA02:
- bl sub_811DAA4
- lsls r0, 24
- cmp r0, 0
- bne _0811CA54
- movs r0, 0x3
- bl sub_811D104
- b _0811CA24
-_0811CA14:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0811CA54
- movs r0, 0
- bl ShowBg
-_0811CA24:
- ldr r0, =gUnknown_0203A11C
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811CA54
- .pool
-_0811CA34:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0811CA54
- bl sub_811DFB0
- ldr r0, =gUnknown_0203A11C
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0811CA4C:
- movs r0, 0
- b _0811CA56
- .pool
-_0811CA54:
- movs r0, 0x1
-_0811CA56:
- pop {r1}
- bx r1
- thumb_func_end sub_811C99C
-
- thumb_func_start sub_811CA5C
-sub_811CA5C: @ 811CA5C
- push {lr}
- ldr r0, =gUnknown_0203A11C
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0x4
- bhi _0811CB10
- lsls r0, 2
- ldr r1, =_0811CA7C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0811CA7C:
- .4byte _0811CA90
- .4byte _0811CAA2
- .4byte _0811CAB4
- .4byte _0811CAC4
- .4byte _0811CAE4
-_0811CA90:
- bl sub_811E380
- bl sub_811E6B0
- bl sub_811E7F8
- bl sub_811D9B4
- b _0811CAD2
-_0811CAA2:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0811CB10
- movs r0, 0x4
- bl sub_811D9CC
- b _0811CAD2
-_0811CAB4:
- bl sub_811DAA4
- lsls r0, 24
- cmp r0, 0
- bne _0811CB10
- bl sub_811D6D4
- b _0811CAD2
-_0811CAC4:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0811CB10
- bl sub_811E3AC
-_0811CAD2:
- ldr r0, =gUnknown_0203A11C
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811CB10
- .pool
-_0811CAE4:
- bl sub_811E418
- lsls r0, 24
- cmp r0, 0
- bne _0811CB10
- bl sub_811DFC8
- movs r0, 0
- bl sub_811E6E0
- bl sub_811E64C
- ldr r0, =gUnknown_0203A11C
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- movs r0, 0
- b _0811CB12
- .pool
-_0811CB10:
- movs r0, 0x1
-_0811CB12:
- pop {r1}
- bx r1
- thumb_func_end sub_811CA5C
-
- thumb_func_start sub_811CB18
-sub_811CB18: @ 811CB18
- push {lr}
- bl sub_811E30C
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_811CB18
-
- thumb_func_start sub_811CB24
-sub_811CB24: @ 811CB24
- push {r4,lr}
- ldr r4, =gUnknown_0203A11C
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _0811CB50
- cmp r0, 0x1
- bgt _0811CB40
- cmp r0, 0
- beq _0811CB4A
- b _0811CB8E
- .pool
-_0811CB40:
- cmp r0, 0x2
- beq _0811CB6C
- cmp r0, 0x3
- beq _0811CB8A
- b _0811CB8E
-_0811CB4A:
- bl sub_811D7A4
- b _0811CB62
-_0811CB50:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0811CB8E
- movs r0, 0x1
- movs r1, 0x4
- bl sub_811DDAC
-_0811CB62:
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811CB8E
-_0811CB6C:
- bl sub_811DE10
- lsls r0, 24
- cmp r0, 0
- bne _0811CB8E
- bl sub_811E30C
- bl sub_811E64C
- bl sub_811E794
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0811CB8A:
- movs r0, 0
- b _0811CB90
-_0811CB8E:
- movs r0, 0x1
-_0811CB90:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811CB24
-
- thumb_func_start sub_811CB98
-sub_811CB98: @ 811CB98
- push {r4,lr}
- ldr r4, =gUnknown_0203A11C
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _0811CBC4
- cmp r0, 0x1
- bgt _0811CBB4
- cmp r0, 0
- beq _0811CBBE
- b _0811CC00
- .pool
-_0811CBB4:
- cmp r0, 0x2
- beq _0811CBE2
- cmp r0, 0x3
- beq _0811CBFC
- b _0811CC00
-_0811CBBE:
- bl sub_811D7C8
- b _0811CBD8
-_0811CBC4:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0811CC00
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x4
- bl sub_811DDAC
-_0811CBD8:
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811CC00
-_0811CBE2:
- bl sub_811DE10
- lsls r0, 24
- cmp r0, 0
- bne _0811CC00
- bl sub_811E64C
- bl sub_811E794
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0811CBFC:
- movs r0, 0
- b _0811CC02
-_0811CC00:
- movs r0, 0x1
-_0811CC02:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811CB98
-
- thumb_func_start sub_811CC08
-sub_811CC08: @ 811CC08
- push {r4,r5,lr}
- ldr r5, =gUnknown_0203A11C
- ldr r0, [r5]
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _0811CC34
- cmp r0, 0x1
- bgt _0811CC24
- cmp r0, 0
- beq _0811CC2E
- b _0811CC86
- .pool
-_0811CC24:
- cmp r0, 0x2
- beq _0811CC64
- cmp r0, 0x3
- beq _0811CC82
- b _0811CC86
-_0811CC2E:
- bl sub_811D7EC
- b _0811CC5A
-_0811CC34:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0811CC86
- bl sub_811BBDC
- adds r4, r0, 0
- bl sub_811DE48
- lsls r4, 24
- lsrs r4, 24
- subs r4, r0
- lsls r4, 16
- asrs r4, 16
- adds r0, r4, 0
- movs r1, 0x8
- bl sub_811DDAC
-_0811CC5A:
- ldr r1, [r5]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811CC86
-_0811CC64:
- bl sub_811DE10
- lsls r0, 24
- cmp r0, 0
- bne _0811CC86
- bl sub_811E30C
- bl sub_811E64C
- bl sub_811E794
- ldr r1, [r5]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0811CC82:
- movs r0, 0
- b _0811CC88
-_0811CC86:
- movs r0, 0x1
-_0811CC88:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_811CC08
-
- thumb_func_start sub_811CC90
-sub_811CC90: @ 811CC90
- push {r4,r5,lr}
- ldr r5, =gUnknown_0203A11C
- ldr r0, [r5]
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _0811CCBC
- cmp r0, 0x1
- bgt _0811CCAC
- cmp r0, 0
- beq _0811CCB6
- b _0811CD0A
- .pool
-_0811CCAC:
- cmp r0, 0x2
- beq _0811CCEC
- cmp r0, 0x3
- beq _0811CD06
- b _0811CD0A
-_0811CCB6:
- bl sub_811D830
- b _0811CCE2
-_0811CCBC:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0811CD0A
- bl sub_811BBDC
- adds r4, r0, 0
- bl sub_811DE48
- lsls r4, 24
- lsrs r4, 24
- subs r4, r0
- lsls r4, 16
- asrs r4, 16
- adds r0, r4, 0
- movs r1, 0x8
- bl sub_811DDAC
-_0811CCE2:
- ldr r1, [r5]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811CD0A
-_0811CCEC:
- bl sub_811DE10
- lsls r0, 24
- cmp r0, 0
- bne _0811CD0A
- bl sub_811E64C
- bl sub_811E794
- ldr r1, [r5]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0811CD06:
- movs r0, 0
- b _0811CD0C
-_0811CD0A:
- movs r0, 0x1
-_0811CD0C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_811CC90
-
- thumb_func_start sub_811CD14
-sub_811CD14: @ 811CD14
- push {r4,lr}
- ldr r4, =gUnknown_0203A11C
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _0811CD2C
- cmp r0, 0x1
- beq _0811CD40
- b _0811CD4A
- .pool
-_0811CD2C:
- bl sub_811DF90
- movs r0, 0x4
- bl sub_811D104
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811CD4A
-_0811CD40:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- b _0811CD4C
-_0811CD4A:
- movs r0, 0x1
-_0811CD4C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811CD14
-
- thumb_func_start sub_811CD54
-sub_811CD54: @ 811CD54
- push {r4,lr}
- ldr r4, =gUnknown_0203A11C
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _0811CD6C
- cmp r0, 0x1
- beq _0811CD80
- b _0811CD8A
- .pool
-_0811CD6C:
- bl sub_811DF90
- movs r0, 0x5
- bl sub_811D104
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811CD8A
-_0811CD80:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- b _0811CD8C
-_0811CD8A:
- movs r0, 0x1
-_0811CD8C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811CD54
-
- thumb_func_start sub_811CD94
-sub_811CD94: @ 811CD94
- push {r4,lr}
- ldr r4, =gUnknown_0203A11C
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _0811CDAC
- cmp r0, 0x1
- beq _0811CDC0
- b _0811CDCA
- .pool
-_0811CDAC:
- bl sub_811DF90
- movs r0, 0x6
- bl sub_811D104
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811CDCA
-_0811CDC0:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- b _0811CDCC
-_0811CDCA:
- movs r0, 0x1
-_0811CDCC:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811CD94
-
- thumb_func_start sub_811CDD4
-sub_811CDD4: @ 811CDD4
- push {r4,lr}
- ldr r4, =gUnknown_0203A11C
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _0811CDEC
- cmp r0, 0x1
- beq _0811CE00
- b _0811CE0A
- .pool
-_0811CDEC:
- bl sub_811DF90
- movs r0, 0x7
- bl sub_811D104
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811CE0A
-_0811CE00:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- b _0811CE0C
-_0811CE0A:
- movs r0, 0x1
-_0811CE0C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811CDD4
-
- thumb_func_start sub_811CE14
-sub_811CE14: @ 811CE14
- push {r4,lr}
- ldr r4, =gUnknown_0203A11C
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _0811CE2C
- cmp r0, 0x1
- beq _0811CE40
- b _0811CE4A
- .pool
-_0811CE2C:
- bl sub_811DF90
- movs r0, 0x8
- bl sub_811D104
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811CE4A
-_0811CE40:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- b _0811CE4C
-_0811CE4A:
- movs r0, 0x1
-_0811CE4C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811CE14
-
- thumb_func_start sub_811CE54
-sub_811CE54: @ 811CE54
- push {r4,lr}
- ldr r4, =gUnknown_0203A11C
- ldr r0, [r4]
- ldrh r0, [r0]
- cmp r0, 0
- beq _0811CE6C
- cmp r0, 0x1
- beq _0811CE80
- b _0811CE8A
- .pool
-_0811CE6C:
- bl sub_811DF90
- movs r0, 0x9
- bl sub_811D104
- ldr r1, [r4]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0811CE8A
-_0811CE80:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- b _0811CE8C
-_0811CE8A:
- movs r0, 0x1
-_0811CE8C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811CE54
-
- thumb_func_start sub_811CE94
-sub_811CE94: @ 811CE94
- push {r4,lr}
- ldr r4, =gUnknown_0203A11C
- movs r0, 0x98
- lsls r0, 5
- bl Alloc
- adds r2, r0, 0
- str r2, [r4]
- cmp r2, 0
- beq _0811CEFC
- movs r1, 0
- strh r1, [r2]
- movs r3, 0xB6
- lsls r3, 2
- adds r0, r2, r3
- str r1, [r0]
- adds r3, 0x4
- adds r0, r2, r3
- str r1, [r0]
- adds r3, 0x4
- adds r0, r2, r3
- str r1, [r0]
- adds r3, 0x4
- adds r0, r2, r3
- str r1, [r0]
- adds r3, 0x4
- adds r0, r2, r3
- str r1, [r0]
- adds r3, 0x4
- adds r0, r2, r3
- str r1, [r0]
- adds r3, 0x4
- adds r0, r2, r3
- str r1, [r0]
- adds r3, 0x4
- adds r0, r2, r3
- str r1, [r0]
- adds r3, 0x4
- adds r0, r2, r3
- str r1, [r0]
- adds r3, 0x4
- adds r0, r2, r3
- str r1, [r0]
- bl sub_811BC70
- ldr r1, [r4]
- strb r0, [r1, 0xA]
- movs r0, 0x1
- b _0811CEFE
- .pool
-_0811CEFC:
- movs r0, 0
-_0811CEFE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811CE94
-
- thumb_func_start sub_811CF04
-sub_811CF04: @ 811CF04
- push {lr}
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r1, 0xC1
- lsls r1, 6
- movs r0, 0
- bl SetGpuReg
- pop {r0}
- bx r0
- thumb_func_end sub_811CF04
-
- thumb_func_start sub_811CF64
-sub_811CF64: @ 811CF64
- push {r4,lr}
- bl ResetPaletteFade
- ldr r0, =gEasyChatMode_Pal
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, =gUnknown_08597B14
- movs r1, 0x10
- movs r2, 0x20
- bl LoadPalette
- ldr r0, =gUnknown_08597B34
- movs r1, 0x40
- movs r2, 0x20
- bl LoadPalette
- ldr r0, =gUnknown_08597C1C
- movs r1, 0xA0
- movs r2, 0x8
- bl LoadPalette
- ldr r4, =gUnknown_08597C24
- adds r0, r4, 0
- movs r1, 0xB0
- movs r2, 0xC
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0xF0
- movs r2, 0xC
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0x30
- movs r2, 0xC
- bl LoadPalette
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811CF64
-
- thumb_func_start sub_811CFCC
-sub_811CFCC: @ 811CFCC
- push {r4,r5,lr}
- sub sp, 0x14
- bl sub_811BA88
- adds r5, r0, 0
- cmp r5, 0
- beq _0811D020
- movs r0, 0x1
- adds r1, r5, 0
- movs r2, 0x90
- bl GetStringCenterAlignXOffset
- adds r4, r0, 0
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r0, 0x2
- str r0, [sp, 0xC]
- movs r0, 0x3
- str r0, [sp, 0x10]
- movs r0, 0
- movs r1, 0x1
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_811D058
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0811D020:
- add sp, 0x14
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811CFCC
-
- thumb_func_start sub_811D028
-sub_811D028: @ 811D028
- push {r4-r6,lr}
- sub sp, 0xC
- ldr r4, [sp, 0x1C]
- ldr r5, [sp, 0x20]
- ldr r6, [sp, 0x24]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- bl AddTextPrinterParameterized
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_811D028
-
- thumb_func_start sub_811D058
-sub_811D058: @ 811D058
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- mov r9, r3
- ldr r3, [sp, 0x30]
- ldr r4, [sp, 0x34]
- mov r8, r4
- ldr r7, [sp, 0x38]
- mov r10, r7
- ldr r5, [sp, 0x3C]
- ldr r6, [sp, 0x40]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r4, r9
- lsls r4, 24
- lsrs r4, 24
- mov r9, r4
- lsls r3, 24
- lsrs r3, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- add r4, sp, 0xC
- mov r7, r10
- strb r7, [r4]
- strb r5, [r4, 0x1]
- strb r6, [r4, 0x2]
- str r4, [sp]
- mov r4, r8
- lsls r4, 24
- asrs r4, 24
- str r4, [sp, 0x4]
- str r2, [sp, 0x8]
- mov r2, r9
- bl AddTextPrinterParameterized3
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_811D058
-
- thumb_func_start sub_811D0BC
-sub_811D0BC: @ 811D0BC
- push {lr}
- sub sp, 0xC
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0xE0
- bl LoadUserWindowBorderGfx
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0xE
- bl sub_8098858
- movs r0, 0
- bl sub_811D104
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- add sp, 0xC
- pop {r0}
- bx r0
- thumb_func_end sub_811D0BC
-
- thumb_func_start sub_811D104
-sub_811D104: @ 811D104
- push {lr}
- sub sp, 0x14
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0
- str r0, [sp, 0x10]
- str r0, [sp, 0xC]
- cmp r1, 0x9
- bhi _0811D1BC
- lsls r0, r1, 2
- ldr r1, =_0811D124
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0811D124:
- .4byte _0811D14C
- .4byte _0811D16A
- .4byte _0811D156
- .4byte _0811D160
- .4byte _0811D174
- .4byte _0811D180
- .4byte _0811D18C
- .4byte _0811D19C
- .4byte _0811D1A8
- .4byte _0811D1B4
-_0811D14C:
- add r1, sp, 0x10
- add r0, sp, 0xC
- bl sub_811BAD0
- b _0811D1BC
-_0811D156:
- add r1, sp, 0x10
- add r0, sp, 0xC
- bl sub_811BB40
- b _0811D1BC
-_0811D160:
- add r1, sp, 0x10
- add r0, sp, 0xC
- bl sub_811BB08
- b _0811D1BC
-_0811D16A:
- add r1, sp, 0x10
- add r0, sp, 0xC
- bl sub_811BB88
- b _0811D1BC
-_0811D174:
- ldr r0, =gText_CreateAQuiz
- str r0, [sp, 0xC]
- b _0811D1BC
- .pool
-_0811D180:
- ldr r0, =gText_SelectTheAnswer
- str r0, [sp, 0xC]
- b _0811D1BC
- .pool
-_0811D18C:
- ldr r0, =gText_OnlyOnePhrase
- str r0, [sp, 0xC]
- ldr r0, =gText_OriginalSongWillBeUsed
- b _0811D1BA
- .pool
-_0811D19C:
- ldr r0, =gText_LyricsCantBeDeleted
- str r0, [sp, 0xC]
- b _0811D1BC
- .pool
-_0811D1A8:
- ldr r0, =gText_CombineTwoWordsOrPhrases3
- str r0, [sp, 0xC]
- b _0811D1BC
- .pool
-_0811D1B4:
- ldr r0, =gText_YouCannotQuitHere
- str r0, [sp, 0xC]
- ldr r0, =gText_SectionMustBeCompleted
-_0811D1BA:
- str r0, [sp, 0x10]
-_0811D1BC:
- movs r0, 0x1
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r2, [sp, 0xC]
- cmp r2, 0
- beq _0811D1E0
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r3, 0
- bl sub_811D028
-_0811D1E0:
- ldr r2, [sp, 0x10]
- cmp r2, 0
- beq _0811D1FC
- movs r0, 0x11
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r3, 0
- bl sub_811D028
-_0811D1FC:
- movs r0, 0x1
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0x14
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811D104
-
- thumb_func_start sub_811D214
-sub_811D214: @ 811D214
- push {lr}
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- ldr r0, =gUnknown_08597C84
- movs r1, 0x1
- movs r2, 0xE
- bl CreateYesNoMenu
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811D214
-
- thumb_func_start sub_811D230
-sub_811D230: @ 811D230
- push {r4-r6,lr}
- sub sp, 0x8
- bl sub_811BA68
- lsls r0, 24
- ldr r6, =0xffffff00
- ldr r4, [sp]
- ands r4, r6
- movs r1, 0x3
- orrs r4, r1
- str r4, [sp]
- ldr r1, =gUnknown_08597C30
- lsrs r0, 22
- adds r0, r1
- ldrb r3, [r0]
- lsls r1, r3, 27
- lsrs r1, 19
- ldr r5, =0xffff00ff
- adds r2, r5, 0
- ands r2, r4
- orrs r2, r1
- lsrs r3, 5
- lsls r3, 16
- ldr r1, =0xff00ffff
- ands r2, r1
- orrs r2, r3
- str r2, [sp]
- ldrb r3, [r0, 0x1]
- lsls r3, 24
- ldr r1, =0x00ffffff
- ands r1, r2
- orrs r1, r3
- str r1, [sp]
- ldrb r1, [r0, 0x2]
- ldr r0, [sp, 0x4]
- ands r0, r6
- orrs r0, r1
- ands r0, r5
- movs r1, 0xB0
- lsls r1, 4
- orrs r0, r1
- ldr r1, =0x0000ffff
- ands r0, r1
- movs r1, 0xD8
- lsls r1, 15
- orrs r0, r1
- str r0, [sp, 0x4]
- mov r0, sp
- bl AddWindow
- ldr r1, =gUnknown_0203A11C
- ldr r1, [r1]
- strh r0, [r1, 0x2]
- lsls r0, 24
- lsrs r0, 24
- bl PutWindowTilemap
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811D230
-
- thumb_func_start sub_811D2C8
-sub_811D2C8: @ 811D2C8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- bl sub_811BA94
- adds r4, r0, 0
- bl sub_811BAAC
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x10]
- bl sub_811BAA0
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x14]
- bl sub_811BA68
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0
- mov r8, r0
- cmp r6, 0x7
- bne _0811D302
- movs r1, 0x1
- mov r8, r1
-_0811D302:
- ldr r0, =gUnknown_0203A11C
- ldr r0, [r0]
- ldrb r0, [r0, 0x2]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- movs r7, 0
- ldr r0, [sp, 0x14]
- cmp r7, r0
- bge _0811D402
-_0811D316:
- add r0, sp, 0xC
- ldr r1, =gUnknown_08597C8C
- movs r2, 0x4
- bl memcpy
- mov r1, r8
- cmp r1, 0
- beq _0811D32C
- add r1, sp, 0xC
- movs r0, 0x6
- strb r0, [r1, 0x2]
-_0811D32C:
- ldr r0, =gUnknown_0203A11C
- ldr r1, [r0]
- adds r2, r1, 0
- adds r2, 0xB
- movs r0, 0xFF
- strb r0, [r1, 0xB]
- adds r0, r2, 0
- add r1, sp, 0xC
- bl StringAppend
- adds r2, r0, 0
- movs r5, 0
- lsls r0, r7, 4
- mov r9, r0
- adds r1, r7, 0x1
- mov r10, r1
- b _0811D3CE
- .pool
-_0811D358:
- ldrh r0, [r4]
- ldr r1, =0x0000ffff
- cmp r0, r1
- beq _0811D374
- adds r1, r0, 0
- adds r0, r2, 0
- bl CopyEasyChatWord
- adds r2, r0, 0
- adds r4, 0x2
- b _0811D3A2
- .pool
-_0811D374:
- adds r4, 0x2
- mov r0, r8
- cmp r0, 0
- bne _0811D3A8
- adds r0, r2, 0
- movs r1, 0
- movs r2, 0x4
- bl WriteColorChangeControlCode
- adds r2, r0, 0
- movs r1, 0xAE
- movs r0, 0xB
-_0811D38C:
- strb r1, [r2]
- adds r2, 0x1
- subs r0, 0x1
- cmp r0, 0
- bge _0811D38C
- adds r0, r2, 0
- movs r1, 0
- movs r2, 0x2
- bl WriteColorChangeControlCode
- adds r2, r0, 0
-_0811D3A2:
- mov r1, r8
- cmp r1, 0
- beq _0811D3AE
-_0811D3A8:
- add r1, sp, 0xC
- movs r0, 0x3
- strb r0, [r1, 0x2]
-_0811D3AE:
- adds r0, r2, 0
- add r1, sp, 0xC
- bl StringAppend
- adds r2, r0, 0
- cmp r6, 0x2
- beq _0811D3C4
- cmp r6, 0x7
- beq _0811D3C4
- cmp r6, 0x8
- bne _0811D3CC
-_0811D3C4:
- cmp r5, 0
- bne _0811D3CC
- cmp r7, 0x4
- beq _0811D3D4
-_0811D3CC:
- adds r5, 0x1
-_0811D3CE:
- ldr r0, [sp, 0x10]
- cmp r5, r0
- blt _0811D358
-_0811D3D4:
- movs r0, 0xFF
- strb r0, [r2]
- ldr r0, =gUnknown_0203A11C
- ldr r2, [r0]
- ldrb r0, [r2, 0x2]
- adds r2, 0xB
- mov r1, r9
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl sub_811D028
- mov r7, r10
- ldr r1, [sp, 0x14]
- cmp r7, r1
- blt _0811D316
-_0811D402:
- ldr r0, =gUnknown_0203A11C
- ldr r0, [r0]
- ldrb r0, [r0, 0x2]
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811D2C8
-
- thumb_func_start sub_811D424
-sub_811D424: @ 811D424
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r8, r0
- bl sub_811BA68
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0
- str r0, [sp]
- ldr r2, =0x01000200
- mov r0, sp
- mov r1, r8
- bl CpuFastSet
- cmp r6, 0x2
- beq _0811D450
- cmp r6, 0x8
- bne _0811D4D4
-_0811D450:
- ldr r0, =gUnknown_08597C30
- lsls r2, r6, 2
- adds r2, r0
- ldrb r1, [r2]
- lsls r3, r1, 27
- lsrs r0, r3, 27
- ldrb r4, [r2, 0x1]
- adds r5, r0, r4
- lsls r1, 24
- lsrs r0, r1, 29
- ldrb r2, [r2, 0x2]
- adds r2, r0
- mov r12, r2
- adds r6, r0, 0
- cmp r6, r12
- blt _0811D472
- b _0811D5D6
-_0811D472:
- mov r9, r3
-_0811D474:
- mov r0, r9
- lsrs r3, r0, 27
- subs r7, r3, 0x1
- lsls r2, r6, 5
- adds r0, r2, r7
- lsls r0, 1
- add r0, r8
- ldr r4, =0x00001005
- adds r1, r4, 0
- strh r1, [r0]
- adds r7, r3, 0
- adds r3, r2, 0
- adds r4, r6, 0x1
- cmp r7, r5
- bge _0811D4AE
- movs r0, 0x80
- lsls r0, 5
- adds r2, r0, 0
- lsls r1, r7, 1
- lsls r0, r6, 6
- add r0, r8
- adds r0, r1, r0
- subs r7, r5, r7
-_0811D4A2:
- strh r2, [r0]
- adds r0, 0x2
- subs r7, 0x1
- cmp r7, 0
- bne _0811D4A2
- adds r7, r5, 0
-_0811D4AE:
- adds r0, r3, r7
- lsls r0, 1
- add r0, r8
- ldr r2, =0x00001007
- adds r1, r2, 0
- strh r1, [r0]
- adds r6, r4, 0
- cmp r6, r12
- blt _0811D474
- b _0811D5D6
- .pool
-_0811D4D4:
- ldr r4, =gUnknown_08597C30
- mov r10, r4
- lsls r6, 2
- mov r9, r6
- mov r3, r9
- add r3, r10
- ldrb r0, [r3]
- lsls r2, r0, 24
- lsrs r1, r2, 29
- subs r6, r1, 0x1
- lsls r0, 27
- lsrs r4, r0, 27
- subs r7, r4, 0x1
- adds r0, r4, 0
- ldrb r1, [r3, 0x1]
- adds r5, r0, r1
- lsrs r2, 29
- ldrb r3, [r3, 0x2]
- adds r3, r2
- mov r12, r3
- lsls r0, r6, 5
- adds r0, r7
- lsls r0, 1
- add r0, r8
- ldr r2, =0x00001001
- adds r1, r2, 0
- strh r1, [r0]
- adds r7, r4, 0
- cmp r7, r5
- bge _0811D52A
- ldr r4, =0x00001002
- adds r2, r4, 0
- lsls r1, r7, 1
- lsls r0, r6, 6
- add r0, r8
- adds r1, r0
- subs r7, r5, r7
-_0811D51E:
- strh r2, [r1]
- adds r1, 0x2
- subs r7, 0x1
- cmp r7, 0
- bne _0811D51E
- adds r7, r5, 0
-_0811D52A:
- lsls r0, r6, 5
- adds r0, r7
- lsls r0, 1
- add r0, r8
- ldr r2, =0x00001003
- adds r1, r2, 0
- strh r1, [r0]
- adds r6, 0x1
- cmp r6, r12
- bge _0811D590
- ldr r0, =gUnknown_08597C30
- add r0, r9
- ldrb r0, [r0]
- lsls r3, r0, 27
-_0811D546:
- lsrs r0, r3, 27
- subs r7, r0, 0x1
- lsls r1, r6, 5
- adds r1, r7
- lsls r1, 1
- add r1, r8
- ldr r4, =0x00001005
- adds r2, r4, 0
- strh r2, [r1]
- adds r7, r0, 0
- adds r4, r6, 0x1
- cmp r7, r5
- bge _0811D57C
- movs r0, 0x80
- lsls r0, 5
- adds r2, r0, 0
- lsls r1, r7, 1
- lsls r0, r6, 6
- add r0, r8
- adds r1, r0
- subs r7, r5, r7
-_0811D570:
- strh r2, [r1]
- adds r1, 0x2
- subs r7, 0x1
- cmp r7, 0
- bne _0811D570
- adds r7, r5, 0
-_0811D57C:
- lsls r0, r6, 5
- adds r0, r7
- lsls r0, 1
- add r0, r8
- ldr r2, =0x00001007
- adds r1, r2, 0
- strh r1, [r0]
- adds r6, r4, 0
- cmp r6, r12
- blt _0811D546
-_0811D590:
- mov r0, r9
- add r0, r10
- ldrb r2, [r0]
- lsls r2, 27
- lsrs r2, 27
- subs r7, r2, 0x1
- lsls r3, r6, 5
- adds r0, r3, r7
- lsls r0, 1
- add r0, r8
- ldr r4, =0x00001009
- adds r1, r4, 0
- strh r1, [r0]
- adds r7, r2, 0
- cmp r7, r5
- bge _0811D5CA
- ldr r0, =0x0000100a
- adds r2, r0, 0
- lsls r1, r7, 1
- lsls r0, r6, 6
- add r0, r8
- adds r0, r1, r0
- subs r7, r5, r7
-_0811D5BE:
- strh r2, [r0]
- adds r0, 0x2
- subs r7, 0x1
- cmp r7, 0
- bne _0811D5BE
- adds r7, r5, 0
-_0811D5CA:
- adds r0, r3, r7
- lsls r0, 1
- add r0, r8
- ldr r2, =0x0000100b
- adds r1, r2, 0
- strh r1, [r0]
-_0811D5D6:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811D424
-
- thumb_func_start sub_811D60C
-sub_811D60C: @ 811D60C
- push {r4,lr}
- sub sp, 0x8
- movs r0, 0x3
- bl GetBgTilemapBuffer
- adds r4, r0, 0
- bl sub_811BA68
- lsls r0, 24
- ldr r1, =gUnknown_08597C30
- lsrs r0, 22
- adds r0, r1
- ldrb r1, [r0, 0x3]
- cmp r1, 0x2
- beq _0811D63E
- cmp r1, 0x2
- bgt _0811D638
- cmp r1, 0x1
- beq _0811D64C
- b _0811D67C
- .pool
-_0811D638:
- cmp r1, 0x3
- beq _0811D668
- b _0811D67C
-_0811D63E:
- movs r0, 0xA8
- lsls r0, 3
- adds r4, r0
- movs r0, 0x20
- str r0, [sp]
- str r1, [sp, 0x4]
- b _0811D65A
-_0811D64C:
- movs r0, 0xC0
- lsls r0, 3
- adds r4, r0
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
-_0811D65A:
- movs r0, 0x3
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0xB
- bl CopyToBgTilemapBufferRect
- b _0811D67C
-_0811D668:
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0x4
- str r0, [sp, 0x4]
- movs r0, 0x3
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0xA
- bl CopyToBgTilemapBufferRect
-_0811D67C:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_811D60C
-
- thumb_func_start sub_811D684
-sub_811D684: @ 811D684
- push {lr}
- movs r0, 0x2
- bl PutWindowTilemap
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- pop {r0}
- bx r0
- thumb_func_end sub_811D684
-
- thumb_func_start sub_811D698
-sub_811D698: @ 811D698
- push {r4,lr}
- adds r4, r0, 0
- bl sub_811DD84
- movs r0, 0x2
- movs r1, 0x11
- bl FillWindowPixelBuffer
- cmp r4, 0x1
- beq _0811D6BC
- cmp r4, 0x1
- bcc _0811D6B6
- cmp r4, 0x2
- beq _0811D6C2
- b _0811D6C6
-_0811D6B6:
- bl sub_811D6F4
- b _0811D6C6
-_0811D6BC:
- bl sub_811D758
- b _0811D6C6
-_0811D6C2:
- bl sub_811D794
-_0811D6C6:
- movs r0, 0x2
- movs r1, 0x2
- bl CopyWindowToVram
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_811D698
-
- thumb_func_start sub_811D6D4
-sub_811D6D4: @ 811D6D4
- push {lr}
- bl sub_811BBB0
- lsls r0, 24
- cmp r0, 0
- bne _0811D6E8
- movs r0, 0
- bl sub_811D698
- b _0811D6EE
-_0811D6E8:
- movs r0, 0x1
- bl sub_811D698
-_0811D6EE:
- pop {r0}
- bx r0
- thumb_func_end sub_811D6D4
-
- thumb_func_start sub_811D6F4
-sub_811D6F4: @ 811D6F4
- push {r4-r7,lr}
- sub sp, 0xC
- movs r5, 0
- movs r7, 0x61
-_0811D6FC:
- movs r4, 0
- lsls r0, r7, 24
- lsrs r6, r0, 24
-_0811D702:
- lsls r0, r5, 24
- lsrs r0, 24
- adds r5, 0x1
- bl sub_811F3B8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x16
- beq _0811D742
- bl sub_811F424
- adds r2, r0, 0
- movs r0, 0x54
- adds r3, r4, 0
- muls r3, r0
- adds r3, 0xA
- lsls r3, 24
- lsrs r3, 24
- str r6, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r0, 0x2
- movs r1, 0x1
- bl sub_811D028
- adds r4, 0x1
- cmp r4, 0x1
- ble _0811D702
- adds r7, 0x10
- b _0811D6FC
-_0811D742:
- bl sub_811BBBC
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_811DDAC
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_811D6F4
-
- thumb_func_start sub_811D758
-sub_811D758: @ 811D758
- push {r4-r6,lr}
- sub sp, 0xC
- movs r5, 0
- movs r4, 0xC2
- lsls r4, 23
- ldr r6, =gUnknown_08597C90
-_0811D764:
- ldm r6!, {r2}
- lsrs r0, r4, 24
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r0, 0x2
- movs r1, 0x1
- movs r3, 0xA
- bl sub_811D028
- movs r0, 0x80
- lsls r0, 21
- adds r4, r0
- adds r5, 0x1
- cmp r5, 0x3
- bls _0811D764
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811D758
-
- thumb_func_start sub_811D794
-sub_811D794: @ 811D794
- push {lr}
- movs r0, 0
- movs r1, 0x4
- bl sub_811D864
- pop {r0}
- bx r0
- thumb_func_end sub_811D794
-
- thumb_func_start sub_811D7A4
-sub_811D7A4: @ 811D7A4
- push {r4,lr}
- bl sub_811BBDC
- adds r4, r0, 0
- adds r4, 0x3
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_811D950
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_811D864
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_811D7A4
-
- thumb_func_start sub_811D7C8
-sub_811D7C8: @ 811D7C8
- push {r4,lr}
- bl sub_811BBDC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_811D950
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_811D864
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_811D7C8
-
- thumb_func_start sub_811D7EC
-sub_811D7EC: @ 811D7EC
- push {r4,r5,lr}
- bl sub_811BBDC
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- adds r0, r5, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_811BBE8
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bls _0811D80E
- adds r4, r0, 0
-_0811D80E:
- cmp r5, r4
- bcs _0811D828
- subs r4, r5
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811D950
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811D864
-_0811D828:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811D7EC
-
- thumb_func_start sub_811D830
-sub_811D830: @ 811D830
- push {r4,r5,lr}
- bl sub_811BBDC
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_811DE48
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- bcs _0811D85C
- subs r4, r0, r5
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811D950
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811D864
-_0811D85C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811D830
-
- thumb_func_start sub_811D864
-sub_811D864: @ 811D864
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x14]
- lsls r1, r0, 1
- mov r8, r1
- lsls r0, 4
- adds r1, r0, 0
- adds r1, 0x60
- movs r0, 0xFF
- ands r1, r0
- adds r1, 0x1
- movs r0, 0
- b _0811D930
-_0811D88E:
- movs r6, 0
- movs r2, 0x10
- adds r2, r1
- mov r9, r2
- adds r0, 0x1
- mov r10, r0
- lsls r0, r1, 24
- lsrs r7, r0, 24
-_0811D89E:
- mov r1, r8
- lsls r0, r1, 16
- lsrs r0, 16
- movs r2, 0x1
- add r8, r2
- bl sub_811F578
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, =0x0000ffff
- cmp r4, r0
- beq _0811D926
- ldr r5, =gUnknown_0203A11C
- ldr r0, [r5]
- adds r0, 0xCC
- adds r1, r4, 0
- movs r2, 0
- bl CopyEasyChatWordPadded
- adds r0, r4, 0
- bl sub_811BF88
- adds r1, r0, 0
- cmp r1, 0
- bne _0811D8FC
- ldr r2, [r5]
- adds r2, 0xCC
- movs r0, 0xD
- adds r3, r6, 0
- muls r3, r0
- adds r3, 0x3
- lsls r3, 27
- lsrs r3, 24
- str r7, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r0, 0x2
- movs r1, 0x1
- bl sub_811D028
- b _0811D926
- .pool
-_0811D8FC:
- ldr r2, [r5]
- adds r2, 0xCC
- movs r0, 0xD
- adds r3, r6, 0
- muls r3, r0
- adds r3, 0x3
- lsls r3, 27
- lsrs r3, 24
- str r7, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x5
- str r0, [sp, 0xC]
- movs r0, 0x3
- str r0, [sp, 0x10]
- movs r0, 0x2
- movs r1, 0x1
- bl sub_811D058
-_0811D926:
- adds r6, 0x1
- cmp r6, 0x1
- ble _0811D89E
- mov r1, r9
- mov r0, r10
-_0811D930:
- ldr r2, [sp, 0x14]
- cmp r0, r2
- blt _0811D88E
- movs r0, 0x2
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_811D864
-
- thumb_func_start sub_811D950
-sub_811D950: @ 811D950
- push {r4,r5,lr}
- sub sp, 0x8
- lsls r0, 24
- lsls r1, 24
- lsrs r0, 20
- adds r3, r0, 0
- adds r3, 0x60
- movs r0, 0xFF
- ands r3, r0
- lsrs r0, r1, 20
- adds r1, r3, r0
- cmp r1, 0xFF
- ble _0811D97C
- ldr r0, =0xffffff00
- adds r4, r1, r0
- movs r0, 0x80
- lsls r0, 1
- subs r0, r3
- b _0811D97E
- .pool
-_0811D97C:
- movs r4, 0
-_0811D97E:
- movs r5, 0xE0
- str r5, [sp]
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0x11
- movs r2, 0
- bl FillWindowPixelRect
- cmp r4, 0
- beq _0811D9AA
- str r5, [sp]
- lsls r0, r4, 16
- lsrs r0, 16
- str r0, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0x11
- movs r2, 0
- movs r3, 0
- bl FillWindowPixelRect
-_0811D9AA:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811D950
-
- thumb_func_start sub_811D9B4
-sub_811D9B4: @ 811D9B4
- push {lr}
- movs r0, 0x2
- movs r1, 0x11
- bl FillWindowPixelBuffer
- movs r0, 0x2
- movs r1, 0x2
- bl CopyWindowToVram
- pop {r0}
- bx r0
- thumb_func_end sub_811D9B4
-
- thumb_func_start sub_811D9CC
-sub_811D9CC: @ 811D9CC
- push {lr}
- ldr r1, =gUnknown_0203A11C
- cmp r0, 0x6
- bhi _0811DA86
- lsls r0, 2
- ldr r1, =_0811D9E8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0811D9E8:
- .4byte _0811DA04
- .4byte _0811DA18
- .4byte _0811DA28
- .4byte _0811DA3C
- .4byte _0811DA50
- .4byte _0811DA64
- .4byte _0811DA78
-_0811DA04:
- ldr r1, =gUnknown_0203A11C
- ldr r2, [r1]
- movs r0, 0
- strb r0, [r2, 0x6]
- ldr r2, [r1]
- movs r0, 0xA
- b _0811DA84
- .pool
-_0811DA18:
- ldr r1, =gUnknown_0203A11C
- ldr r2, [r1]
- movs r3, 0
- movs r0, 0x9
- b _0811DA44
- .pool
-_0811DA28:
- ldr r1, =gUnknown_0203A11C
- ldr r2, [r1]
- movs r0, 0xB
- strb r0, [r2, 0x6]
- ldr r2, [r1]
- movs r0, 0x11
- b _0811DA84
- .pool
-_0811DA3C:
- ldr r1, =gUnknown_0203A11C
- ldr r2, [r1]
- movs r3, 0
- movs r0, 0x11
-_0811DA44:
- strb r0, [r2, 0x6]
- ldr r0, [r1]
- strb r3, [r0, 0x7]
- b _0811DA86
- .pool
-_0811DA50:
- ldr r1, =gUnknown_0203A11C
- ldr r2, [r1]
- movs r0, 0x11
- strb r0, [r2, 0x6]
- ldr r2, [r1]
- movs r0, 0xA
- b _0811DA84
- .pool
-_0811DA64:
- ldr r1, =gUnknown_0203A11C
- ldr r2, [r1]
- movs r0, 0x12
- strb r0, [r2, 0x6]
- ldr r2, [r1]
- movs r0, 0x16
- b _0811DA84
- .pool
-_0811DA78:
- ldr r1, =gUnknown_0203A11C
- ldr r2, [r1]
- movs r0, 0x16
- strb r0, [r2, 0x6]
- ldr r2, [r1]
- movs r0, 0x12
-_0811DA84:
- strb r0, [r2, 0x7]
-_0811DA86:
- ldr r1, [r1]
- ldrb r0, [r1, 0x6]
- movs r3, 0x1
- negs r3, r3
- adds r2, r3, 0
- ldrb r3, [r1, 0x7]
- cmp r0, r3
- bcs _0811DA98
- movs r2, 0x1
-_0811DA98:
- strb r2, [r1, 0x8]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811D9CC
-
- thumb_func_start sub_811DAA4
-sub_811DAA4: @ 811DAA4
- push {r4,lr}
- ldr r4, =gUnknown_0203A11C
- ldr r1, [r4]
- ldrb r2, [r1, 0x6]
- ldrb r0, [r1, 0x7]
- cmp r2, r0
- beq _0811DAD4
- ldrb r0, [r1, 0x8]
- adds r0, r2, r0
- strb r0, [r1, 0x6]
- ldr r0, [r4]
- ldrb r0, [r0, 0x6]
- bl sub_811DADC
- ldr r0, [r4]
- ldrb r1, [r0, 0x6]
- ldrb r0, [r0, 0x7]
- eors r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- b _0811DAD6
- .pool
-_0811DAD4:
- movs r0, 0
-_0811DAD6:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811DAA4
-
thumb_func_start sub_811DADC
sub_811DADC: @ 811DADC
push {r4,lr}
diff --git a/asm/flying.s b/asm/flying.s
index c8010106a..37873f17b 100644
--- a/asm/flying.s
+++ b/asm/flying.s
@@ -5,823 +5,6 @@
.text
- thumb_func_start sub_810DE70
-sub_810DE70: @ 810DE70
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0
- bl InitSpritePosToAnimTarget
- ldrh r0, [r4, 0x22]
- adds r0, 0x14
- strh r0, [r4, 0x22]
- movs r0, 0xBF
- strh r0, [r4, 0x30]
- ldr r1, =sub_810DE98
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810DE70
-
- thumb_func_start sub_810DE98
-sub_810DE98: @ 810DE98
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x20
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x8
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r0, 0x5
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x47
- bne _0810DED2
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0810DED2:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_810DE98
-
- thumb_func_start sub_810DED8
-sub_810DED8: @ 810DED8
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x8]
- ldrh r0, [r1]
- strh r0, [r4, 0xA]
- ldr r0, =0x00002719
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xC]
- ldr r0, =sub_810DF18
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810DED8
-
- thumb_func_start sub_810DF18
-sub_810DF18: @ 810DF18
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r2, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r3, r0, r2
- ldrh r0, [r3, 0x1C]
- adds r1, r0, 0x1
- strh r1, [r3, 0x1C]
- lsls r0, 16
- asrs r0, 16
- movs r4, 0xA
- ldrsh r1, [r3, r4]
- adds r7, r2, 0
- cmp r0, r1
- bne _0810DF76
- movs r0, 0
- strh r0, [r3, 0x1C]
- ldrb r0, [r3, 0xC]
- ldr r2, =gPlttBufferFaded
- lsls r0, 4
- movs r3, 0x84
- lsls r3, 1
- adds r1, r0, r3
- lsls r1, 1
- adds r1, r2
- ldrh r6, [r1]
- movs r4, 0x7
- mov r12, r0
- ldr r0, =0x00000107
- add r0, r12
- lsls r0, 1
- adds r3, r0, r2
-_0810DF5E:
- ldrh r0, [r3]
- strh r0, [r1]
- subs r3, 0x2
- subs r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bgt _0810DF5E
- ldr r0, =0x00000101
- add r0, r12
- lsls r0, 1
- adds r0, r2
- strh r6, [r0]
-_0810DF76:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r7
- ldrh r1, [r0, 0x8]
- subs r1, 0x1
- strh r1, [r0, 0x8]
- lsls r1, 16
- cmp r1, 0
- bne _0810DF90
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_0810DF90:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810DF18
-
- thumb_func_start sub_810DFA8
-sub_810DFA8: @ 810DFA8
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x1
- bl InitSpritePosToAnimAttacker
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0810DFC8
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_0810DFC8:
- ldr r4, =gBattleAnimArgs
- ldrh r0, [r4, 0x8]
- strh r0, [r6, 0x2E]
- ldrh r0, [r6, 0x20]
- strh r0, [r6, 0x30]
- ldr r5, =gBattleAnimTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- adds r0, r1
- strh r0, [r6, 0x32]
- ldrh r0, [r6, 0x22]
- strh r0, [r6, 0x34]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x6]
- adds r0, r4
- strh r0, [r6, 0x36]
- adds r0, r6, 0
- bl InitAnimLinearTranslation
- ldr r0, =RunStoredCallbackWhenAffineAnimEnds
- str r0, [r6, 0x1C]
- ldr r1, =sub_810E028
- adds r0, r6, 0
- bl StoreSpriteCallbackInData6
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810DFA8
-
- thumb_func_start sub_810E028
-sub_810E028: @ 810E028
- push {r4,lr}
- adds r4, r0, 0
- bl AnimTranslateLinear
- lsls r0, 24
- cmp r0, 0
- beq _0810E03C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0810E03C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_810E028
-
- thumb_func_start sub_810E044
-sub_810E044: @ 810E044
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, =gBattleAnimAttacker
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0810E070
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
- ldrh r0, [r1, 0x2]
- negs r0, r0
- strh r0, [r1, 0x2]
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
- ldrh r0, [r1, 0x6]
- negs r0, r0
- strh r0, [r1, 0x6]
-_0810E070:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _0810E088
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r0, 0x2]
- negs r1, r1
- strh r1, [r0, 0x2]
- ldrh r1, [r0, 0x6]
- negs r1, r1
- strh r1, [r0, 0x6]
-_0810E088:
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r2, =gBattleAnimArgs
- ldrh r1, [r2]
- ldrh r3, [r5, 0x20]
- adds r1, r3
- strh r1, [r5, 0x20]
- lsrs r0, 24
- ldrh r1, [r2, 0x2]
- adds r0, r1
- strh r0, [r5, 0x22]
- ldrh r0, [r2, 0x8]
- strh r0, [r5, 0x2E]
- movs r3, 0xC
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bne _0810E0EC
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- b _0810E0FE
- .pool
-_0810E0EC:
- ldr r0, =gBattleAnimTarget
- ldrb r0, [r0]
- adds r2, r5, 0
- adds r2, 0x32
- adds r3, r5, 0
- adds r3, 0x36
- movs r1, 0x1
- bl SetAverageBattlerPositions
-_0810E0FE:
- ldr r4, =gBattleAnimArgs
- ldrh r0, [r4, 0x4]
- ldrh r1, [r5, 0x32]
- adds r0, r1
- strh r0, [r5, 0x32]
- ldrh r0, [r4, 0x6]
- ldrh r3, [r5, 0x36]
- adds r0, r3
- strh r0, [r5, 0x36]
- ldr r0, =StartAnimLinearTranslation
- str r0, [r5, 0x1C]
- ldr r1, =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData6
- ldrb r1, [r4, 0xA]
- adds r0, r5, 0
- bl SeekSpriteAnim
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810E044
-
- thumb_func_start sub_810E13C
-sub_810E13C: @ 810E13C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl InitSpritePosToAnimAttacker
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x30]
- ldr r0, =sub_810E184
- str r0, [r4, 0x1C]
- movs r0, 0
- bl GetAnimBattlerSpriteId
- ldr r2, =gSprites
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810E13C
-
- thumb_func_start sub_810E184
-sub_810E184: @ 810E184
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x2E]
- movs r3, 0x2E
- ldrsh r0, [r2, r3]
- cmp r0, 0
- ble _0810E198
- subs r0, r1, 0x1
- strh r0, [r2, 0x2E]
- b _0810E1AA
-_0810E198:
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x32]
- adds r0, r1
- strh r0, [r2, 0x32]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r2, 0x26]
- subs r1, r0
- strh r1, [r2, 0x26]
-_0810E1AA:
- movs r3, 0x22
- ldrsh r0, [r2, r3]
- movs r3, 0x26
- ldrsh r1, [r2, r3]
- adds r0, r1
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- bge _0810E1C2
- adds r0, r2, 0
- bl DestroyAnimSprite
-_0810E1C2:
- pop {r0}
- bx r0
- thumb_func_end sub_810E184
-
- thumb_func_start sub_810E1C8
-sub_810E1C8: @ 810E1C8
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, =gBattleAnimAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0810E1F8
- movs r0, 0x88
- lsls r0, 1
- strh r0, [r5, 0x20]
- ldr r0, =0x0000ffe0
- strh r0, [r5, 0x22]
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- b _0810E1FE
- .pool
-_0810E1F8:
- ldr r0, =0x0000ffe0
- strh r0, [r5, 0x20]
- strh r0, [r5, 0x22]
-_0810E1FE:
- ldr r0, =gBattleAnimArgs
- ldrh r0, [r0]
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- ldr r4, =gBattleAnimTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBattlerSpriteCoord
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl InitAnimLinearTranslation
- ldr r0, =sub_810E24C
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810E1C8
-
- thumb_func_start sub_810E24C
-sub_810E24C: @ 810E24C
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x1
- strh r0, [r4, 0x2E]
- adds r0, r4, 0
- bl AnimTranslateLinear
- ldrh r1, [r4, 0x34]
- lsrs r0, r1, 8
- cmp r0, 0xC8
- bls _0810E274
- ldrh r0, [r4, 0x24]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- movs r0, 0
- strh r0, [r4, 0x24]
- movs r0, 0xFF
- ands r0, r1
- strh r0, [r4, 0x34]
-_0810E274:
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- movs r2, 0x24
- ldrsh r1, [r4, r2]
- adds r0, r1
- adds r0, 0x20
- movs r1, 0x98
- lsls r1, 1
- cmp r0, r1
- bhi _0810E296
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- adds r0, r1
- cmp r0, 0xA0
- ble _0810E2BC
-_0810E296:
- movs r0, 0
- bl GetAnimBattlerSpriteId
- ldr r2, =gSprites
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- adds r0, r4, 0
- bl DestroyAnimSprite
-_0810E2BC:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810E24C
-
- thumb_func_start sub_810E2C8
-sub_810E2C8: @ 810E2C8
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- subs r1, r0, 0x1
- strh r1, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bgt _0810E308
- ldrb r0, [r4, 0x1]
- lsls r0, 30
- lsrs r0, 30
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810E2FA
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- ldrb r1, [r4, 0x1]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- strb r0, [r4, 0x1]
-_0810E2FA:
- adds r0, r4, 0
- bl DestroySprite
- ldr r1, =gAnimVisualTaskCount
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
-_0810E308:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810E2C8
-
- thumb_func_start sub_810E314
-sub_810E314: @ 810E314
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- adds r5, r7, 0
- adds r5, 0x2E
- ldr r0, =gBattleAnimArgs
- ldrh r1, [r0, 0xE]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _0810E33C
- ldr r0, =gBattleAnimAttacker
- b _0810E33E
- .pool
-_0810E33C:
- ldr r0, =gBattleAnimTarget
-_0810E33E:
- ldrb r6, [r0]
- adds r0, r6, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0810E354
- ldr r1, =gBattleAnimArgs
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
-_0810E354:
- adds r0, r6, 0
- movs r1, 0
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldr r4, =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r7, 0x20]
- adds r0, r6, 0
- movs r1, 0x1
- bl GetBattlerSpriteCoord
- lsls r0, 24
- ldrh r1, [r4, 0x2]
- lsrs r0, 24
- adds r1, r0, r1
- strh r1, [r7, 0x22]
- lsls r1, 8
- strh r1, [r5, 0x8]
- ldrh r1, [r4, 0xC]
- adds r0, r1
- lsls r0, 1
- ldrh r2, [r5, 0xE]
- movs r1, 0x1
- ands r1, r2
- orrs r1, r0
- strh r1, [r5, 0xE]
- ldrb r0, [r5]
- movs r2, 0x4
- mov r8, r2
- mov r1, r8
- orrs r0, r1
- strb r0, [r5]
- ldrh r0, [r4, 0x4]
- ldrb r1, [r4, 0x4]
- strh r1, [r5, 0x2]
- lsls r0, 16
- lsrs r0, 24
- strh r0, [r5, 0xA]
- ldrh r0, [r4, 0x6]
- strh r0, [r5, 0x4]
- ldrh r0, [r4, 0x8]
- strh r0, [r5, 0x6]
- ldrh r0, [r4, 0xA]
- strh r0, [r5, 0xC]
- subs r1, 0x40
- lsls r1, 16
- lsrs r1, 16
- cmp r1, 0x7F
- bhi _0810E44A
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _0810E3F0
- adds r0, r6, 0
- bl GetBattlerSpriteBGPriority
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- lsls r0, 2
- ldrb r2, [r7, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r7, 0x5]
- b _0810E408
- .pool
-_0810E3F0:
- adds r0, r6, 0
- bl GetBattlerSpriteBGPriority
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r7, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r7, 0x5]
-_0810E408:
- ldrb r1, [r5, 0xE]
- movs r4, 0x2
- negs r4, r4
- adds r0, r4, 0
- ands r0, r1
- strb r0, [r5, 0xE]
- movs r2, 0x4
- ldrsh r0, [r5, r2]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- bne _0810E4AA
- adds r3, r7, 0
- adds r3, 0x3F
- ldrb r2, [r3]
- lsls r0, r2, 31
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- lsls r0, 31
- lsrs r0, 31
- adds r1, r7, 0
- adds r1, 0x2A
- strb r0, [r1]
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- b _0810E4A2
-_0810E44A:
- adds r0, r6, 0
- bl GetBattlerSpriteBGPriority
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r7, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r7, 0x5]
- ldrb r0, [r5, 0xE]
- movs r4, 0x1
- orrs r0, r4
- strb r0, [r5, 0xE]
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _0810E4AA
- adds r3, r7, 0
- adds r3, 0x3F
- ldrb r2, [r3]
- lsls r1, r2, 31
- lsrs r1, 31
- movs r0, 0x1
- eors r1, r0
- ands r1, r4
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- lsls r0, 31
- lsrs r0, 31
- adds r1, r7, 0
- adds r1, 0x2A
- strb r0, [r1]
- ldrb r0, [r3]
- mov r2, r8
- orrs r0, r2
-_0810E4A2:
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r3]
-_0810E4AA:
- ldrh r1, [r5, 0x2]
- lsrs r1, 6
- lsls r1, 4
- ldrb r2, [r5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r1
- strb r0, [r5]
- ldr r3, =gSineTable
- ldrh r0, [r5, 0x2]
- lsls r0, 1
- adds r0, r3
- movs r2, 0
- ldrsh r1, [r0, r2]
- ldrb r0, [r5, 0xC]
- muls r0, r1
- asrs r0, 8
- strh r0, [r7, 0x24]
- ldrb r2, [r7, 0x3]
- lsls r2, 26
- lsrs r2, 27
- movs r1, 0x24
- ldrsh r0, [r7, r1]
- negs r0, r0
- asrs r0, 1
- ldrb r5, [r5, 0xA]
- adds r0, r5
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r3
- ldrh r4, [r1]
- ldr r1, =gOamMatrices
- lsls r2, 3
- adds r2, r1
- adds r0, 0x40
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- strh r0, [r2, 0x6]
- strh r0, [r2]
- strh r4, [r2, 0x2]
- lsls r0, r4, 16
- asrs r0, 16
- negs r0, r0
- strh r0, [r2, 0x4]
- ldr r0, =sub_810E520
- str r0, [r7, 0x1C]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_810E314
-
thumb_func_start sub_810E520
sub_810E520: @ 810E520
push {r4-r7,lr}
diff --git a/data/easy_chat.s b/data/easy_chat.s
index ce416dfbc..b8df93d7a 100644
--- a/data/easy_chat.s
+++ b/data/easy_chat.s
@@ -17,7 +17,7 @@ gUnknown_08597530:: @ 8597530
.4byte 0x0000001b
.4byte sub_811A938
-gUnknown_08597550:: @ 8597550
+gEasyChatScreenTemplates:: @ 8597550
.byte 0x00, 0x02, 0x02, 0x00
.align 2
@@ -208,13 +208,20 @@ gUnknown_08597550:: @ 8597550
.4byte gText_IsAsShownOkay
gUnknown_08597748:: @ 8597748
- .byte 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x00, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x00, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a
+ .byte 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x00
+ .byte 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x00
+ .byte 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13
+ .byte 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a
gUnknown_08597764:: @ 8597764
.2byte 0x0209, 0x140b, 0x1030, 0x102a
gUnknown_0859776C:: @ 859776C
- .2byte 0x1240, 0x0628, 0x061f, 0x2204, 0x1422, 0x0197, 0x0415, 0x0198, 0x2207, 0x0449
+ .2byte 0x1240, 0x0628
+ .2byte 0x061f, 0x2204
+ .2byte 0x1422, 0x0197
+ .2byte 0x0415, 0x0198
+ .2byte 0x2207, 0x0449
.align 2
gUnknown_08597780:: @ 8597780
@@ -261,7 +268,14 @@ gUnknown_08597C24:: @ 8597C24
.incbin "graphics/misc/8597C24.gbapal"
gUnknown_08597C30:: @ 8597C30
- .byte 0x83, 0x18, 0x04, 0x00, 0x63, 0x18, 0x06, 0x00, 0x03, 0x18, 0x0a, 0x00, 0xa3, 0x18, 0x02, 0x00, 0xb0, 0x0c, 0x02, 0x00, 0x83, 0x18, 0x04, 0x00, 0x89, 0x0c, 0x02, 0x01, 0x65, 0x14, 0x0a, 0x03
+ .byte 0x83, 0x18, 0x04, 0x00
+ .byte 0x63, 0x18, 0x06, 0x00
+ .byte 0x03, 0x18, 0x0a, 0x00
+ .byte 0xa3, 0x18, 0x02, 0x00
+ .byte 0xb0, 0x0c, 0x02, 0x00
+ .byte 0x83, 0x18, 0x04, 0x00
+ .byte 0x89, 0x0c, 0x02, 0x01
+ .byte 0x65, 0x14, 0x0a, 0x03
.byte 0x03, 0x18, 0x0a, 0x02
.align 2
diff --git a/include/contest_link_80FC4F4.h b/include/contest_link_80FC4F4.h
index 6f3bab97d..a3f118798 100644
--- a/include/contest_link_80FC4F4.h
+++ b/include/contest_link_80FC4F4.h
@@ -4,5 +4,10 @@
void sub_80FCC88(u8);
void sub_80FCC88(u8);
void sub_80FCACC(u8);
+void sub_80FC580(u8);
+void sub_80FC6BC(u8);
+void sub_80FC804(u8);
+void sub_80FCE48(u8);
+void sub_80FC894(u8);
#endif //GUARD_CONTEST_LINK_80FC4F4_H
diff --git a/include/dewford_trend.h b/include/dewford_trend.h
index dac5ea6c9..608a925f5 100644
--- a/include/dewford_trend.h
+++ b/include/dewford_trend.h
@@ -4,5 +4,6 @@
void InitDewfordTrend(void);
void UpdateDewfordTrendPerDay(u16);
void UpdateDewfordTrendPerDay(u16 days);
+bool8 sub_81226D8(u16 *a);
#endif // GUARD_DEWFORDTREND_H
diff --git a/include/graphics.h b/include/graphics.h
index d4696bc8b..d313bae11 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4890,5 +4890,9 @@ extern const u16 gFrontierPassMedalsGold_Pal[];
extern const u16 gFrontierPassMedalsSilver_Pal[];
extern const u16 gFrontierPassMapCursor_Pal[];
+// Easy Chat Screen
+extern const u32 gEasyChatWindow_Gfx[];
+extern const u32 gEasyChatWindow_Tilemap[];
+extern const u16 gEasyChatMode_Pal[];
#endif //GUARD_GRAPHICS_H
diff --git a/include/strings.h b/include/strings.h
index 3acbc1c55..a3e743943 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -2413,5 +2413,22 @@ extern const u8 gUnknown_085EDC45[];
extern const u8 gUnknown_085EDB00[];
extern const u8 gUnknown_085EDC84[];
+// Easy Chat Entry
+extern const u8 gText_StopGivingPkmnMail[];
+extern const u8 gText_LikeToQuitQuiz[];
+extern const u8 gText_ChallengeQuestionMark[];
+extern const u8 gText_QuitEditing[];
+extern const u8 gText_AllTextBeingEditedWill[];
+extern const u8 gText_BeDeletedThatOkay[];
+extern const u8 gText_Lady[];
+extern const u8 gText_F700sQuiz[];
+extern const u8 gText_CreateAQuiz[];
+extern const u8 gText_SelectTheAnswer[];
+extern const u8 gText_OriginalSongWillBeUsed[];
+extern const u8 gText_LyricsCantBeDeleted[];
+extern const u8 gText_CombineTwoWordsOrPhrases3[];
+extern const u8 gText_OnlyOnePhrase[];
+extern const u8 gText_YouCannotQuitHere[];
+extern const u8 gText_SectionMustBeCompleted[];
#endif // GUARD_STRINGS_H
diff --git a/ld_script.txt b/ld_script.txt
index 77bc56ecc..eaf75c3de 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -147,7 +147,6 @@ SECTIONS {
src/secret_base.o(.text);
src/tv.o(.text);
src/contest_link_80F57C4.o(.text);
- asm/contest_link_80F57C4.o(.text);
src/script_pokemon_util_80F87D8.o(.text);
src/field_poison.o(.text);
src/pokemon_size_record.o(.text);
@@ -165,6 +164,7 @@ SECTIONS {
src/ice.o(.text);
src/fight.o(.text);
src/poison.o(.text);
+ src/flying.o(.text);
asm/flying.o(.text);
src/psychic.o(.text);
src/bug.o(.text);
diff --git a/src/contest_link_80F57C4.c b/src/contest_link_80F57C4.c
index 381fb34fa..485065d71 100644
--- a/src/contest_link_80F57C4.c
+++ b/src/contest_link_80F57C4.c
@@ -1,8 +1,11 @@
#include "global.h"
+#include "alloc.h"
#include "battle.h"
+#include "battle_gfx_sfx_util.h"
#include "bg.h"
#include "contest.h"
#include "contest_link_80F57C4.h"
+#include "contest_link_80FC4F4.h"
#include "decompress.h"
#include "dma3.h"
#include "event_data.h"
@@ -22,11 +25,13 @@
#include "random.h"
#include "save.h"
#include "scanline_effect.h"
+#include "script.h"
#include "sound.h"
#include "string_util.h"
#include "strings.h"
#include "task.h"
#include "text.h"
+#include "trig.h"
#include "tv.h"
#include "util.h"
#include "window.h"
@@ -44,26 +49,38 @@ struct ContestLinkUnk0
u8 unk4;
u8 unk5;
u8 unk6;
- u8 filler7[0x1];
+ u8 unk7;
u8 spriteId;
u8 unk9;
u8 unkA;
- u8 fillerB[0x9];
+ s16 unkC[4];
u8 unk14;
u8 filler15[0x3];
};
+struct ContestLinkUnk14
+{
+ int unk0;
+ int unk4;
+ u32 unk8;
+ u32 unkC;
+ u8 unk10;
+ u8 unk11;
+ u8 unk12;
+};
+
struct ContestLinkUnk4
{
- u8 filler0[0x50];
+ struct ContestLinkUnk14 unk0[4];
};
struct ContestLink80F57C4
{
struct ContestLinkUnk0 *unk0;
struct ContestLinkUnk4 *unk4;
- u8 filler8[0x4];
+ u8 *unk8;
u8 *unkC[4];
+ u8 *unk1C;
};
EWRAM_DATA struct ContestLink80F57C4 *gUnknown_0203A034 = NULL;
@@ -80,20 +97,23 @@ extern const u8 gUnknown_0858D6D0[];
extern const struct SpriteTemplate gSpriteTemplate_858D7F8;
extern const struct SpriteSheet gUnknown_0858D810[];
extern const struct SpritePalette gUnknown_0858D850;
+extern const struct SpriteTemplate gSpriteTemplate_858D860;
+
+extern void sub_81D9DE4(u8);
static void sub_80F6A9C(void);
static void sub_80F71C8(void);
u8 sub_80F7310(u8, u8);
s8 sub_80F7364(u8, u8);
-void sub_80F7ED0(int, u8 *, int);
-void sub_80F7DF4(void);
-static void sub_80F6A64(u8, u8);
+static void sub_80F7ED0(int, u8 *, int);
+static void sub_80F7DF4(void);
+static void LoadAllContestMonIcons(u8, u8);
static void sub_80F6DC0(void);
static void sub_80F6AE8(void);
static void sub_80F5CE4(u8);
static void sub_80F5C00(void);
static void sub_80F68B4(u8);
-void sub_80F7880(void);
+static void sub_80F7880(void);
static void sub_80F5C24(void);
static void sub_80F707C(const u8 *);
static void sub_80F5ED8(u8);
@@ -105,27 +125,38 @@ static void sub_80F68F0(u8);
s16 sub_80F6B78(const u8 *, u8);
static void sub_80F6E9C(s16, u16, u16, u16);
static void sub_80F6058(u8);
-void sub_80F7A80(u8, u8);
+static void sub_80F7A80(u8, u8);
+void sub_80F7CA8(u8);
static void sub_80F6EF4(u16);
static void sub_80F60F0(u8);
static void sub_80F616C(u8);
static void sub_80F6204(u8);
-void sub_80F73DC(u8);
-void sub_80F74BC(u8);
-void sub_80F77E0(u8, u8);
+static void sub_80F73DC(u8);
+static void sub_80F74BC(u8);
+static void sub_80F753C(u8);
+static void sub_80F77E0(u8, u8);
+static void sub_80F7824(u8);
static void sub_80F6404(u8);
-void sub_80F75A8(struct Sprite *);
-void sub_80F7670(u8);
-void sub_80F7620(struct Sprite *);
+static void sub_80F75A8(struct Sprite *);
+static void sub_80F7670(u8);
+static void sub_80F7620(struct Sprite *);
static void sub_80F66B4(u8);
static void sub_80F671C(u8);
static void sub_80F677C(u8);
static void sub_80F67C4(u8);
static void sub_80F6820(u8);
-void sub_80F7E64(void);
+static void sub_80F7E64(void);
static void sub_80F6F68(struct Sprite *);
static void sub_80F7014(struct Sprite *);
static void sub_80F6FDC(struct Sprite *);
+static void sub_80F8508(u8);
+static void sub_80F8568(u8);
+static void sub_80F8584(u8);
+static void sub_80F85A0(u8);
+static void sub_80F85BC(u8);
+static void sub_80F86B8(u8);
+static void sub_80F878C(u8);
+static void sub_80F87B4(u8);
void sub_80F57C4(void)
{
@@ -265,7 +296,7 @@ void sub_80F5B00(void)
FreeAllSpritePalettes();
sub_80F591C();
sub_80F6A9C();
- sub_80F6A64(0, 1);
+ LoadAllContestMonIcons(0, 1);
sub_80F5AE0();
memset(gUnknown_0203A034->unk0, 0, sizeof(*gUnknown_0203A034->unk0));
memset(gUnknown_0203A034->unk4, 0, sizeof(*gUnknown_0203A034->unk4));
@@ -827,7 +858,7 @@ static void sub_80F68F0(u8 taskId)
gUnknown_0203A034->unk0->unkA = 1;
}
-void sub_80F69B8(u16 species, u8 monIndex, u8 arg2, u8 arg3, u32 personality)
+void sub_80F69B8(u16 species, u8 monIndex, u8 srcOffset, u8 useDmaNow, u32 personality)
{
u8 frameNum;
const u8 *iconPtr;
@@ -838,8 +869,8 @@ void sub_80F69B8(u16 species, u8 monIndex, u8 arg2, u8 arg3, u32 personality)
frameNum = (monIndex == *contestPlayerMonIndex) ? 1 : 0;
iconPtr = GetMonIconPtr(species, personality, frameNum);
- iconPtr += arg2 * 0x200 + 0x80;
- if (arg3)
+ iconPtr += srcOffset * 0x200 + 0x80;
+ if (useDmaNow)
{
RequestDma3Copy(iconPtr, (void *)BG_CHAR_ADDR(1) + monIndex * 0x200, 0x180, 1);
var0 = ((monIndex + 10) << 12);
@@ -852,12 +883,12 @@ void sub_80F69B8(u16 species, u8 monIndex, u8 arg2, u8 arg3, u32 personality)
}
}
-static void sub_80F6A64(u8 arg0, u8 arg1)
+static void LoadAllContestMonIcons(u8 srcOffset, u8 useDmaNow)
{
int i;
for (i = 0; i < 4; i++)
- sub_80F69B8(gContestMons[i].species, i, arg0, arg1, gContestMons[i].personality);
+ sub_80F69B8(gContestMons[i].species, i, srcOffset, useDmaNow, gContestMons[i].personality);
}
static void sub_80F6A9C(void)
@@ -1439,3 +1470,1657 @@ u8 sub_80F7310(u8 monIndex, u8 arg1)
return var1;
}
+
+s8 sub_80F7364(u8 arg0, u8 arg1)
+{
+ u32 r4;
+ u32 r2;
+ s16 val;
+ s8 ret;
+
+ val = gUnknown_02039F18[arg0];
+ if (val < 0)
+ r4 = -val << 16;
+ else
+ r4 = val << 16;
+
+ r2 = r4 / 80;
+ if (r2 & 0xFFFF)
+ r2 += 0x10000;
+
+ r2 >>= 16;
+ if (r2 == 0 && r4 != 0)
+ r2 = 1;
+
+ if (arg1 != 0 && r2 > 10)
+ r2 = 10;
+
+ if (gUnknown_02039F18[arg0] < 0)
+ ret = -r2;
+ else
+ ret = r2;
+
+ return ret;
+}
+
+static void sub_80F73DC(u8 taskId)
+{
+ u16 firstTileNum;
+
+ if (gTasks[taskId].data[10] == 0)
+ {
+ gTasks[taskId].data[11] = (3 - gTasks[taskId].data[0]) * 40;
+ gTasks[taskId].data[10]++;
+ }
+ else if (gTasks[taskId].data[10] == 1)
+ {
+ if (--gTasks[taskId].data[11] == -1)
+ {
+ firstTileNum = gTasks[taskId].data[0] * 2 + 0x5043;
+ WriteSequenceToBgTilemapBuffer(2, firstTileNum, 1, gTasks[taskId].data[1] * 3 + 5, 2, 1, 17, 1);
+ WriteSequenceToBgTilemapBuffer(2, firstTileNum + 0x10, 1, gTasks[taskId].data[1] * 3 + 6, 2, 1, 17, 1);
+ gUnknown_0203A034->unk0->unk5++;
+ DestroyTask(taskId);
+ PlaySE(SE_JYUNI);
+ }
+ }
+}
+
+static void sub_80F74BC(u8 taskId)
+{
+ int i;
+ for (i = 0; i < 4 && gContestFinalStandings[i] != 0; i++)
+ ;
+
+ CopyToBgTilemapBufferRect_ChangePalette(2, i * 0xC0 + 0x100 + gUnknown_0203A034->unkC[2], 0, i * 3 + 4, 32, 3, 9);
+ gTasks[taskId].data[10] = i;
+ gTasks[taskId].data[12] = 1;
+ gTasks[taskId].func = sub_80F753C;
+ gUnknown_0203A034->unk0->unk3 = taskId;
+}
+
+static void sub_80F753C(u8 taskId)
+{
+ if (++gTasks[taskId].data[11] == 1)
+ {
+ gTasks[taskId].data[11] = 0;
+ BlendPalette(0x91, 1, gTasks[taskId].data[12], RGB(13, 28, 27));
+ if (gTasks[taskId].data[13] == 0)
+ {
+ if (++gTasks[taskId].data[12] == 16)
+ gTasks[taskId].data[13] = 1;
+ }
+ else
+ {
+ if (--gTasks[taskId].data[12] == 0)
+ gTasks[taskId].data[13] = 0;
+ }
+ }
+}
+
+static void sub_80F75A8(struct Sprite *sprite)
+{
+ if (sprite->data[0] < 10)
+ {
+ if (++sprite->data[0] == 10)
+ {
+ PlayCry1(sprite->data[1], 0);
+ sprite->data[1] = 0;
+ }
+ }
+ else
+ {
+ s16 delta = (u16)sprite->data[1] + 0x600;
+ sprite->pos1.x -= delta >> 8;
+ sprite->data[1] = (sprite->data[1] + 0x600) & 0xFF;
+ if (sprite->pos1.x < 120)
+ sprite->pos1.x = 120;
+
+ if (sprite->pos1.x == 120)
+ {
+ sprite->callback = SpriteCallbackDummy;
+ sprite->data[1] = 0;
+ gUnknown_0203A034->unk0->unk6 = 1;
+ }
+ }
+}
+
+static void sub_80F7620(struct Sprite *sprite)
+{
+ s16 delta = (u16)sprite->data[1] + 0x600;
+ sprite->pos1.x -= delta >> 8;
+ sprite->data[1] = (sprite->data[1] + 0x600) & 0xFF;
+ if (sprite->pos1.x < -32)
+ {
+ sprite->callback = SpriteCallbackDummy;
+ sprite->invisible = 1;
+ gUnknown_0203A034->unk0->unk6 = 2;
+ }
+}
+
+static void sub_80F7670(u8 taskId)
+{
+ if (++gTasks[taskId].data[0] == 5)
+ {
+ gTasks[taskId].data[0] = 0;
+ if (gUnknown_0203A034->unk0->unk7 < 40)
+ {
+ u8 spriteId = CreateSprite(&gSpriteTemplate_858D860, (Random() % 240) - 20, 44, 5);
+ gSprites[spriteId].data[0] = Random() % 512;
+ gSprites[spriteId].data[1] = (Random() % 24) + 16;
+ gSprites[spriteId].data[2] = (Random() % 256) + 48;
+ gSprites[spriteId].oam.tileNum += Random() % 17;
+ gUnknown_0203A034->unk0->unk7++;
+ }
+ }
+
+ if (gUnknown_0203A034->unk0->unk9)
+ DestroyTask(taskId);
+}
+
+void sub_80F7768(struct Sprite *sprite)
+{
+ register s16 var0 asm("r1");
+
+ sprite->data[3] += sprite->data[0];
+ sprite->pos2.x = Sin(sprite->data[3] >> 8, sprite->data[1]);
+ var0 = sprite->data[4] + sprite->data[2];
+ sprite->pos1.x += var0 >> 8;
+ var0 = var0 & 0xFF;
+ sprite->data[4] = var0;
+ sprite->pos1.y++;
+ if (gUnknown_0203A034->unk0->unk9)
+ sprite->invisible = 1;
+
+ if (sprite->pos1.x > 248 || sprite->pos1.y > 116)
+ {
+ DestroySprite(sprite);
+ gUnknown_0203A034->unk0->unk7--;
+ }
+}
+
+static void sub_80F77E0(u8 monIndex, u8 numFrames)
+{
+ u8 taskId = CreateTask(sub_80F7824, 8);
+ gTasks[taskId].data[0] = monIndex;
+ gTasks[taskId].data[1] = numFrames;
+ gTasks[taskId].data[2] = gContestMons[monIndex].species;
+}
+
+static void sub_80F7824(u8 taskId)
+{
+ u8 monIndex = gTasks[taskId].data[0];
+ if (gTasks[taskId].data[10]++ == gTasks[taskId].data[1])
+ {
+ gTasks[taskId].data[10] = 0;
+ sub_80F69B8(gTasks[taskId].data[2], monIndex, gTasks[taskId].data[11], FALSE, gContestMons[monIndex].personality);
+ gTasks[taskId].data[11] ^= 1;
+ }
+}
+
+// static void sub_80F7880(void)
+// {
+// int i;
+// int var0;
+// int var1;
+// int var2;
+// int var3;
+// u32 var4;
+// int var5;
+// int var6;
+// s16 var7;
+// s16 var8;
+// s16 r2;
+
+// r2 = gUnknown_02039F08[0];
+// for (i = 1; i < 4; i++)
+// {
+// if (r2 < gUnknown_02039F08[i])
+// r2 = gUnknown_02039F08[i];
+// }
+
+// if (r2 < 0)
+// {
+// r2 = gUnknown_02039F08[0];
+// for (i = 1; i < 4; i++)
+// {
+// if (r2 > gUnknown_02039F08[i])
+// r2 = gUnknown_02039F08[i];
+// }
+// }
+
+// // _080F78E4
+// for (i = 0; i < 4; i++)
+// {
+// var0 = gContestMonConditions[i] * 1000;
+// var1 = r2;
+// if (r2 < 0)
+// var1 = -var1;
+
+// var2 = var0 / var1;
+// if (var2 % 10 > 4)
+// var2 += 10;
+
+// gUnknown_0203A034->unk4->unk0[i].unk0 = var2 / 10;
+// var3 = gUnknown_02039F18[i];
+// if (var3 < 0)
+// var3 = -var3;
+
+// var0 = var3 * 1000;
+// var1 = r2;
+// if (r2 < 0)
+// var1 = -var1;
+
+// var2 = var0 / var1;
+// if (var2 % 10 > 4)
+// var2 += 10;
+
+// // _080F7966
+// gUnknown_0203A034->unk4->unk0[i].unk4 = var2 / 10;
+// if (gUnknown_02039F18[i] < 0)
+// gUnknown_0203A034->unk4->unk0[i].unk10 = 1;
+
+// var4 = gUnknown_0203A034->unk4->unk0[i].unk0 * 22528 / 100;
+// if ((var4 & 0xFF) > 0x7F)
+// var4 += 0x100;
+
+// gUnknown_0203A034->unk4->unk0[i].unk8 = var4 >> 8;
+// var4 = gUnknown_0203A034->unk4->unk0[i].unk4 * 22528 / 100;
+// if ((var4 & 0xFF) > 0x7F)
+// var4 += 0x100;
+
+// gUnknown_0203A034->unk4->unk0[i].unkC = var4 >> 8;
+// gUnknown_0203A034->unk4->unk0[i].unk11 = sub_80F7310(i, 1);
+// var5 = sub_80F7364(i, 1);
+// if (var5 < 0)
+// var5 = -var5;
+
+// gUnknown_0203A034->unk4->unk0[i].unk12 = var5;
+// if (gContestFinalStandings[i])
+// {
+// var7 = gUnknown_0203A034->unk4->unk0[i].unk8;
+// var8 = gUnknown_0203A034->unk4->unk0[i].unkC;
+// if (gUnknown_0203A034->unk4->unk0[i].unk10)
+// var8 = -var8;
+
+// if (var7 + var8 == 88)
+// {
+// if (var8 > 0)
+// gUnknown_0203A034->unk4->unk0[i].unkC--;
+// else if (var7 > 0)
+// gUnknown_0203A034->unk4->unk0[i].unk8--;
+// }
+// }
+// }
+// }
+
+NAKED
+static void sub_80F7880(void)
+{
+ asm_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 r0, =gUnknown_02039F08\n\
+ ldrh r2, [r0]\n\
+ adds r4, r0, 0\n\
+ adds r3, r4, 0x2\n\
+ movs r0, 0x2\n\
+ mov r8, r0\n\
+_080F7898:\n\
+ lsls r0, r2, 16\n\
+ asrs r0, 16\n\
+ movs r5, 0\n\
+ ldrsh r1, [r3, r5]\n\
+ cmp r0, r1\n\
+ bge _080F78A6\n\
+ ldrh r2, [r3]\n\
+_080F78A6:\n\
+ adds r3, 0x2\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ add r8, r0\n\
+ mov r1, r8\n\
+ cmp r1, 0\n\
+ bge _080F7898\n\
+ lsls r0, r2, 16\n\
+ str r0, [sp]\n\
+ cmp r0, 0\n\
+ bge _080F78E4\n\
+ ldrh r2, [r4]\n\
+ adds r3, r4, 0x2\n\
+ movs r4, 0x2\n\
+ mov r8, r4\n\
+_080F78C4:\n\
+ lsls r0, r2, 16\n\
+ asrs r0, 16\n\
+ movs r5, 0\n\
+ ldrsh r1, [r3, r5]\n\
+ cmp r0, r1\n\
+ ble _080F78D2\n\
+ ldrh r2, [r3]\n\
+_080F78D2:\n\
+ adds r3, 0x2\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ add r8, r0\n\
+ lsls r1, r2, 16\n\
+ str r1, [sp]\n\
+ mov r4, r8\n\
+ cmp r4, 0\n\
+ bge _080F78C4\n\
+_080F78E4:\n\
+ movs r5, 0\n\
+ mov r8, r5\n\
+ mov r10, r5\n\
+_080F78EA:\n\
+ ldr r0, =gContestMonConditions\n\
+ mov r1, r8\n\
+ lsls r7, r1, 1\n\
+ adds r0, r7, r0\n\
+ movs r2, 0\n\
+ ldrsh r1, [r0, r2]\n\
+ lsls r0, r1, 5\n\
+ subs r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ ldr r4, [sp]\n\
+ asrs r5, r4, 16\n\
+ adds r1, r5, 0\n\
+ cmp r5, 0\n\
+ bge _080F790C\n\
+ negs r1, r5\n\
+_080F790C:\n\
+ bl __divsi3\n\
+ adds r4, r0, 0\n\
+ movs r1, 0xA\n\
+ bl __modsi3\n\
+ cmp r0, 0x4\n\
+ ble _080F791E\n\
+ adds r4, 0xA\n\
+_080F791E:\n\
+ ldr r0, =gUnknown_0203A034\n\
+ mov r9, r0\n\
+ ldr r0, [r0]\n\
+ ldr r0, [r0, 0x4]\n\
+ mov r1, r10\n\
+ adds r6, r1, r0\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ str r0, [r6]\n\
+ ldr r0, =gUnknown_02039F18\n\
+ adds r7, r0\n\
+ movs r2, 0\n\
+ ldrsh r1, [r7, r2]\n\
+ cmp r1, 0\n\
+ bge _080F7942\n\
+ negs r1, r1\n\
+_080F7942:\n\
+ lsls r0, r1, 5\n\
+ subs r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ adds r1, r5, 0\n\
+ cmp r1, 0\n\
+ bge _080F7954\n\
+ negs r1, r1\n\
+_080F7954:\n\
+ bl __divsi3\n\
+ adds r4, r0, 0\n\
+ movs r1, 0xA\n\
+ bl __modsi3\n\
+ cmp r0, 0x4\n\
+ ble _080F7966\n\
+ adds r4, 0xA\n\
+_080F7966:\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ str r0, [r6, 0x4]\n\
+ movs r4, 0\n\
+ ldrsh r0, [r7, r4]\n\
+ cmp r0, 0\n\
+ bge _080F797C\n\
+ movs r0, 0x1\n\
+ strb r0, [r6, 0x10]\n\
+_080F797C:\n\
+ mov r5, r9\n\
+ ldr r0, [r5]\n\
+ ldr r0, [r0, 0x4]\n\
+ mov r1, r10\n\
+ adds r4, r1, r0\n\
+ ldr r1, [r4]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ subs r0, r1\n\
+ lsls r0, 11\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ adds r1, r0, 0\n\
+ movs r5, 0xFF\n\
+ ands r0, r5\n\
+ cmp r0, 0x7F\n\
+ bls _080F79A8\n\
+ movs r2, 0x80\n\
+ lsls r2, 1\n\
+ adds r1, r2\n\
+_080F79A8:\n\
+ lsrs r0, r1, 8\n\
+ str r0, [r4, 0x8]\n\
+ ldr r1, [r4, 0x4]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ subs r0, r1\n\
+ lsls r0, 11\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ adds r1, r0, 0\n\
+ ands r0, r5\n\
+ cmp r0, 0x7F\n\
+ bls _080F79CC\n\
+ movs r5, 0x80\n\
+ lsls r5, 1\n\
+ adds r1, r5\n\
+_080F79CC:\n\
+ lsrs r0, r1, 8\n\
+ str r0, [r4, 0xC]\n\
+ mov r0, r8\n\
+ lsls r4, r0, 24\n\
+ lsrs r4, 24\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x1\n\
+ bl sub_80F7310\n\
+ mov r2, r9\n\
+ ldr r1, [r2]\n\
+ ldr r1, [r1, 0x4]\n\
+ add r1, r10\n\
+ strb r0, [r1, 0x11]\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x1\n\
+ bl sub_80F7364\n\
+ mov r4, r9\n\
+ ldr r1, [r4]\n\
+ ldr r1, [r1, 0x4]\n\
+ add r1, r10\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+ cmp r0, 0\n\
+ bge _080F7A02\n\
+ negs r0, r0\n\
+_080F7A02:\n\
+ strb r0, [r1, 0x12]\n\
+ ldr r0, =gContestFinalStandings\n\
+ add r0, r8\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _080F7A60\n\
+ mov r5, r9\n\
+ ldr r0, [r5]\n\
+ ldr r0, [r0, 0x4]\n\
+ mov r2, r10\n\
+ adds r1, r2, r0\n\
+ ldr r5, [r1, 0x8]\n\
+ ldrh r3, [r1, 0x8]\n\
+ ldr r4, [r1, 0xC]\n\
+ ldrh r2, [r1, 0xC]\n\
+ ldrb r0, [r1, 0x10]\n\
+ cmp r0, 0\n\
+ beq _080F7A2C\n\
+ lsls r0, r2, 16\n\
+ negs r0, r0\n\
+ lsrs r2, r0, 16\n\
+_080F7A2C:\n\
+ lsls r0, r3, 16\n\
+ asrs r3, r0, 16\n\
+ lsls r0, r2, 16\n\
+ asrs r2, r0, 16\n\
+ adds r0, r3, r2\n\
+ cmp r0, 0x58\n\
+ bne _080F7A60\n\
+ cmp r2, 0\n\
+ ble _080F7A58\n\
+ subs r0, r4, 0x1\n\
+ str r0, [r1, 0xC]\n\
+ b _080F7A60\n\
+ .pool\n\
+_080F7A58:\n\
+ cmp r3, 0\n\
+ ble _080F7A60\n\
+ subs r0, r5, 0x1\n\
+ str r0, [r1, 0x8]\n\
+_080F7A60:\n\
+ movs r4, 0x14\n\
+ add r10, r4\n\
+ movs r5, 0x1\n\
+ add r8, r5\n\
+ mov r0, r8\n\
+ cmp r0, 0x3\n\
+ bgt _080F7A70\n\
+ b _080F78EA\n\
+_080F7A70:\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");
+}
+
+// static void sub_80F7A80(u8 arg0, u8 arg1)
+// {
+// int i;
+// u8 taskId;
+// u8 sp8, spC;
+
+// sp8 = 0;
+// spC = 0;
+// if (!arg0)
+// {
+// u32 var0;
+// for (i = 0; i < 4; i++)
+// {
+// int var1 = gUnknown_0203A034->unk4->unk0[i].unk11;
+// if (arg1 < var1)
+// {
+// int x = var1 + 19;
+// x -= arg1;
+// x--;
+// FillBgTilemapBufferRect_Palette0(1, 0x60B3, x, i * 3 + 5, 1, 1);
+// taskId = CreateTask(sub_80F7CA8, 10);
+// var0 = ((gUnknown_0203A034->unk4->unk0[i].unk8 << 16) / gUnknown_0203A034->unk4->unk0[i].unk11) * (arg1 + 1);
+// var0 &= 0xFFFF;
+// if (var0 > 0x7FFF)
+// var0 += 0x10000;
+
+// gTasks[taskId].data[0] = i;
+// gTasks[taskId].data[1] = var0 >> 16;
+// gUnknown_0203A034->unk0->unk14++;
+// sp8++;
+// }
+// }
+// }
+// else
+// {
+// u32 var0;
+// for (i = 0; i < 4; i++)
+// {
+// int tile;
+// s8 var1 = gUnknown_0203A034->unk4->unk0[i].unk12;
+// tile = gUnknown_0203A034->unk4->unk0[i].unk10 ? 0x60A5 : 0x60A3;
+// if (arg1 < var1)
+// {
+// int thing = ((s8)arg1 - 19);
+// int x = var1 - thing;
+// x--;
+// FillBgTilemapBufferRect_Palette0(1, tile, x, i * 3 + 6, 1, 1);
+// taskId = CreateTask(sub_80F7CA8, 10);
+// var0 = ((gUnknown_0203A034->unk4->unk0[i].unkC << 16) / gUnknown_0203A034->unk4->unk0[i].unk12) * (arg1 + 1);
+// var0 &= 0xFFFF;
+// if (var0 > 0x7FFF)
+// var0 += 0x10000;
+
+// gTasks[taskId].data[0] = i;
+// if (gUnknown_0203A034->unk4->unk0[i].unk10)
+// {
+// gTasks[taskId].data[2] = 1;
+// spC++;
+// }
+// else
+// {
+// sp8++;
+// }
+
+// if (gUnknown_0203A034->unk4->unk0[i].unk10)
+// gTasks[taskId].data[1] = gUnknown_0203A034->unk4->unk0[i].unk8 - (var0 >> 16);
+// else
+// gTasks[taskId].data[1] = gUnknown_0203A034->unk4->unk0[i].unk8 + (var0 >> 16);
+
+// gUnknown_0203A034->unk0->unk14++;
+// }
+// }
+// }
+
+// if (spC)
+// PlaySE(SE_PIN);
+
+// if (sp8)
+// PlaySE(SE_BAN);
+// }
+
+NAKED
+static void sub_80F7A80(u8 arg0, u8 arg1)
+{
+ asm_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, 24\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ mov r8, r1\n\
+ movs r1, 0\n\
+ str r1, [sp, 0x8]\n\
+ movs r3, 0\n\
+ str r3, [sp, 0xC]\n\
+ cmp r0, 0\n\
+ bne _080F7B5C\n\
+ mov r9, r3\n\
+ ldr r4, =gUnknown_0203A034\n\
+ mov r10, r4\n\
+ movs r7, 0xA0\n\
+ lsls r7, 19\n\
+ movs r6, 0\n\
+_080F7AAC:\n\
+ mov r1, r10\n\
+ ldr r0, [r1]\n\
+ ldr r0, [r0, 0x4]\n\
+ adds r0, r6, r0\n\
+ ldrb r2, [r0, 0x11]\n\
+ cmp r8, r2\n\
+ bcs _080F7B2E\n\
+ adds r2, 0x13\n\
+ mov r3, r8\n\
+ subs r2, r3\n\
+ subs r2, 0x1\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ lsrs r3, r7, 24\n\
+ movs r0, 0x1\n\
+ str r0, [sp]\n\
+ str r0, [sp, 0x4]\n\
+ ldr r1, =0x000060b3\n\
+ bl FillBgTilemapBufferRect_Palette0\n\
+ ldr r0, =sub_80F7CA8\n\
+ movs r1, 0xA\n\
+ bl CreateTask\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ mov r0, r10\n\
+ ldr r4, [r0]\n\
+ ldr r1, [r4, 0x4]\n\
+ adds r1, r6, r1\n\
+ ldr r0, [r1, 0x8]\n\
+ lsls r0, 16\n\
+ ldrb r1, [r1, 0x11]\n\
+ bl __udivsi3\n\
+ mov r1, r8\n\
+ adds r1, 0x1\n\
+ adds r3, r0, 0\n\
+ muls r3, r1\n\
+ ldr r0, =0x0000ffff\n\
+ ands r0, r3\n\
+ ldr r1, =0x00007fff\n\
+ cmp r0, r1\n\
+ bls _080F7B0A\n\
+ movs r1, 0x80\n\
+ lsls r1, 9\n\
+ adds r3, r1\n\
+_080F7B0A:\n\
+ ldr r1, =gTasks\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ mov r1, r9\n\
+ strh r1, [r0, 0x8]\n\
+ lsrs r1, r3, 16\n\
+ strh r1, [r0, 0xA]\n\
+ ldr r1, [r4]\n\
+ ldrb r0, [r1, 0x14]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1, 0x14]\n\
+ ldr r0, [sp, 0x8]\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x8]\n\
+_080F7B2E:\n\
+ movs r3, 0xC0\n\
+ lsls r3, 18\n\
+ adds r7, r3\n\
+ adds r6, 0x14\n\
+ movs r4, 0x1\n\
+ add r9, r4\n\
+ mov r0, r9\n\
+ cmp r0, 0x3\n\
+ ble _080F7AAC\n\
+ b _080F7C7E\n\
+ .pool\n\
+_080F7B5C:\n\
+ movs r1, 0\n\
+ mov r9, r1\n\
+ mov r10, r1\n\
+ movs r3, 0xC0\n\
+ lsls r3, 19\n\
+ str r3, [sp, 0x10]\n\
+_080F7B68:\n\
+ ldr r4, =gUnknown_0203A034\n\
+ ldr r0, [r4]\n\
+ ldr r0, [r0, 0x4]\n\
+ add r0, r10\n\
+ ldrb r2, [r0, 0x12]\n\
+ ldrb r0, [r0, 0x10]\n\
+ ldr r1, =0x000060a3\n\
+ cmp r0, 0\n\
+ beq _080F7B7C\n\
+ adds r1, 0x2\n\
+_080F7B7C:\n\
+ lsls r0, r2, 24\n\
+ asrs r0, 24\n\
+ cmp r8, r0\n\
+ bge _080F7C64\n\
+ mov r3, r8\n\
+ lsls r2, r3, 24\n\
+ asrs r2, 24\n\
+ subs r2, 0x13\n\
+ subs r2, r0, r2\n\
+ subs r2, 0x1\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ ldr r4, [sp, 0x10]\n\
+ lsrs r3, r4, 24\n\
+ movs r7, 0x1\n\
+ str r7, [sp]\n\
+ str r7, [sp, 0x4]\n\
+ movs r0, 0x1\n\
+ bl FillBgTilemapBufferRect_Palette0\n\
+ ldr r0, =sub_80F7CA8\n\
+ movs r1, 0xA\n\
+ bl CreateTask\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ ldr r0, =gUnknown_0203A034\n\
+ ldr r6, [r0]\n\
+ ldr r1, [r6, 0x4]\n\
+ add r1, r10\n\
+ ldr r0, [r1, 0xC]\n\
+ lsls r0, 16\n\
+ ldrb r1, [r1, 0x12]\n\
+ bl __udivsi3\n\
+ mov r1, r8\n\
+ adds r1, 0x1\n\
+ adds r3, r0, 0\n\
+ muls r3, r1\n\
+ ldr r0, =0x0000ffff\n\
+ ands r0, r3\n\
+ ldr r1, =0x00007fff\n\
+ cmp r0, r1\n\
+ bls _080F7BDA\n\
+ movs r1, 0x80\n\
+ lsls r1, 9\n\
+ adds r3, r1\n\
+_080F7BDA:\n\
+ ldr r1, =gTasks\n\
+ lsls r2, r5, 2\n\
+ adds r0, r2, r5\n\
+ lsls r0, 3\n\
+ adds r4, r0, r1\n\
+ mov r0, r9\n\
+ strh r0, [r4, 0x8]\n\
+ ldr r0, [r6, 0x4]\n\
+ add r0, r10\n\
+ ldrb r0, [r0, 0x10]\n\
+ adds r6, r1, 0\n\
+ cmp r0, 0\n\
+ beq _080F7C1C\n\
+ strh r7, [r4, 0xC]\n\
+ ldr r0, [sp, 0xC]\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0xC]\n\
+ b _080F7C26\n\
+ .pool\n\
+_080F7C1C:\n\
+ ldr r0, [sp, 0x8]\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x8]\n\
+_080F7C26:\n\
+ ldr r1, =gUnknown_0203A034\n\
+ ldr r0, [r1]\n\
+ ldr r0, [r0, 0x4]\n\
+ mov r4, r10\n\
+ adds r1, r4, r0\n\
+ ldrb r0, [r1, 0x10]\n\
+ ldr r4, =gUnknown_0203A034\n\
+ cmp r0, 0\n\
+ beq _080F7C4C\n\
+ adds r0, r2, r5\n\
+ lsls r0, 3\n\
+ adds r0, r6\n\
+ lsrs r2, r3, 16\n\
+ ldr r1, [r1, 0x8]\n\
+ subs r1, r2\n\
+ b _080F7C58\n\
+ .pool\n\
+_080F7C4C:\n\
+ adds r0, r2, r5\n\
+ lsls r0, 3\n\
+ adds r0, r6\n\
+ lsrs r2, r3, 16\n\
+ ldr r1, [r1, 0x8]\n\
+ adds r1, r2\n\
+_080F7C58:\n\
+ strh r1, [r0, 0xA]\n\
+ ldr r0, [r4]\n\
+ ldr r1, [r0]\n\
+ ldrb r0, [r1, 0x14]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1, 0x14]\n\
+_080F7C64:\n\
+ movs r0, 0x14\n\
+ add r10, r0\n\
+ ldr r1, [sp, 0x10]\n\
+ movs r3, 0xC0\n\
+ lsls r3, 18\n\
+ adds r1, r3\n\
+ str r1, [sp, 0x10]\n\
+ movs r4, 0x1\n\
+ add r9, r4\n\
+ mov r0, r9\n\
+ cmp r0, 0x3\n\
+ bgt _080F7C7E\n\
+ b _080F7B68\n\
+_080F7C7E:\n\
+ ldr r1, [sp, 0xC]\n\
+ cmp r1, 0\n\
+ beq _080F7C8A\n\
+ movs r0, 0x16\n\
+ bl PlaySE\n\
+_080F7C8A:\n\
+ ldr r3, [sp, 0x8]\n\
+ cmp r3, 0\n\
+ beq _080F7C96\n\
+ movs r0, 0x15\n\
+ bl PlaySE\n\
+_080F7C96:\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 {r0}\n\
+ bx r0");
+}
+
+#ifdef NONMATCHING
+void sub_80F7CA8(u8 taskId)
+{
+ register int r4 asm("r4");
+ int r9;
+ u8 r6;
+ s16 r7;
+ s16 r12;
+ int i;
+ u8 var0;
+ u16 tileNum;
+
+ r4 = 0;
+ r9 = 0;
+ r6 = gTasks[taskId].data[0];
+ r7 = gTasks[taskId].data[1];
+ r12 = gTasks[taskId].data[2];
+ if (r12)
+ {
+ if (gUnknown_0203A034->unk0->unkC[r6] <= 0)
+ r4 = 1;
+ }
+ else
+ {
+ if (gUnknown_0203A034->unk0->unkC[r6] > 87)
+ r4 = 1;
+ }
+
+ if (gUnknown_0203A034->unk0->unkC[r6] == r7)
+ r9 = 1;
+
+ if (!r9)
+ {
+ if (r4)
+ gUnknown_0203A034->unk0->unkC[r6] = r7;
+ else if (r12)
+ gUnknown_0203A034->unk0->unkC[r6] = gUnknown_0203A034->unk0->unkC[r6] - 1;
+ else
+ gUnknown_0203A034->unk0->unkC[r6] = gUnknown_0203A034->unk0->unkC[r6] + 1;
+ }
+
+ if (!r4 && !r9)
+ {
+ for (i = 0; i < 11; i++)
+ {
+ if (gUnknown_0203A034->unk0->unkC[r6] >= (i + 1) * 8)
+ {
+ var0 = 8;
+ }
+ else if (gUnknown_0203A034->unk0->unkC[r6] >= i * 8)
+ {
+ int var2 = gUnknown_0203A034->unk0->unkC[r6];
+ int var1 = var2;
+ if (var1 < 0)
+ var1 += 7;
+
+ var0 = var2 - ((var1 >> 3) << 3);
+ }
+ else
+ {
+ var0 = 0;
+ }
+
+ if (var0 < 4)
+ tileNum = 0x504C;
+ else
+ tileNum = 0x5057;
+
+ FillBgTilemapBufferRect_Palette0(2, tileNum + var0, i + 7, r6 * 3 + 6, 1, 1);
+ }
+ }
+
+ if (r9)
+ {
+ gUnknown_0203A034->unk0->unk14--;
+ DestroyTask(taskId);
+ }
+}
+#else
+NAKED
+void sub_80F7CA8(u8 taskId)
+{
+ asm_unified("\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ sub sp, 0x8\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ movs r4, 0\n\
+ mov r9, r4\n\
+ ldr r1, =gTasks\n\
+ lsls r0, 2\n\
+ add r0, r8\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ ldrb r6, [r0, 0x8]\n\
+ ldrh r7, [r0, 0xA]\n\
+ ldrh r1, [r0, 0xC]\n\
+ mov r12, r1\n\
+ movs r2, 0xC\n\
+ ldrsh r0, [r0, r2]\n\
+ cmp r0, 0\n\
+ beq _080F7CF8\n\
+ ldr r2, =gUnknown_0203A034\n\
+ ldr r0, [r2]\n\
+ ldr r0, [r0]\n\
+ lsls r1, r6, 1\n\
+ adds r0, 0xC\n\
+ adds r0, r1\n\
+ movs r3, 0\n\
+ ldrsh r0, [r0, r3]\n\
+ adds r5, r1, 0\n\
+ cmp r0, 0\n\
+ bgt _080F7D10\n\
+ b _080F7D0E\n\
+ .pool\n\
+_080F7CF8:\n\
+ ldr r2, =gUnknown_0203A034\n\
+ ldr r0, [r2]\n\
+ ldr r0, [r0]\n\
+ lsls r1, r6, 1\n\
+ adds r0, 0xC\n\
+ adds r0, r1\n\
+ movs r3, 0\n\
+ ldrsh r0, [r0, r3]\n\
+ adds r5, r1, 0\n\
+ cmp r0, 0x57\n\
+ ble _080F7D10\n\
+_080F7D0E:\n\
+ movs r4, 0x1\n\
+_080F7D10:\n\
+ ldr r0, [r2]\n\
+ ldr r0, [r0]\n\
+ adds r0, 0xC\n\
+ adds r2, r0, r5\n\
+ ldrh r3, [r2]\n\
+ movs r0, 0\n\
+ ldrsh r1, [r2, r0]\n\
+ lsls r0, r7, 16\n\
+ asrs r0, 16\n\
+ cmp r1, r0\n\
+ bne _080F7D2A\n\
+ movs r1, 0x1\n\
+ mov r9, r1\n\
+_080F7D2A:\n\
+ mov r0, r9\n\
+ cmp r0, 0\n\
+ bne _080F7D4A\n\
+ cmp r4, 0\n\
+ beq _080F7D3C\n\
+ strh r7, [r2]\n\
+ b _080F7D4A\n\
+ .pool\n\
+_080F7D3C:\n\
+ mov r1, r12\n\
+ cmp r1, 0\n\
+ beq _080F7D46\n\
+ subs r0, r3, 0x1\n\
+ b _080F7D48\n\
+_080F7D46:\n\
+ adds r0, r3, 0x1\n\
+_080F7D48:\n\
+ strh r0, [r2]\n\
+_080F7D4A:\n\
+ cmp r4, 0\n\
+ bne _080F7DC4\n\
+ mov r2, r9\n\
+ cmp r2, 0\n\
+ bne _080F7DCA\n\
+ movs r2, 0\n\
+_080F7D56:\n\
+ ldr r0, =gUnknown_0203A034\n\
+ ldr r0, [r0]\n\
+ ldr r0, [r0]\n\
+ adds r0, 0xC\n\
+ adds r0, r5\n\
+ movs r1, 0\n\
+ ldrsh r3, [r0, r1]\n\
+ adds r0, r2, 0x1\n\
+ lsls r1, r0, 3\n\
+ adds r4, r0, 0\n\
+ cmp r3, r1\n\
+ blt _080F7D78\n\
+ movs r0, 0x8\n\
+ b _080F7D94\n\
+ .pool\n\
+_080F7D78:\n\
+ lsls r0, r2, 3\n\
+ cmp r3, r0\n\
+ blt _080F7D92\n\
+ adds r0, r3, 0\n\
+ cmp r3, 0\n\
+ bge _080F7D86\n\
+ adds r0, r3, 0x7\n\
+_080F7D86:\n\
+ asrs r0, 3\n\
+ lsls r0, 3\n\
+ subs r0, r3, r0\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ b _080F7D94\n\
+_080F7D92:\n\
+ movs r0, 0\n\
+_080F7D94:\n\
+ cmp r0, 0x3\n\
+ bhi _080F7DA0\n\
+ ldr r3, =0x0000504c\n\
+ b _080F7DA2\n\
+ .pool\n\
+_080F7DA0:\n\
+ ldr r3, =0x00005057\n\
+_080F7DA2:\n\
+ adds r1, r0, r3\n\
+ adds r2, 0x7\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ adds r3, r5, r6\n\
+ adds r3, 0x6\n\
+ lsls r3, 24\n\
+ movs r0, 0x1\n\
+ str r0, [sp]\n\
+ str r0, [sp, 0x4]\n\
+ movs r0, 0x2\n\
+ lsrs r3, 24\n\
+ bl FillBgTilemapBufferRect_Palette0\n\
+ adds r2, r4, 0\n\
+ cmp r2, 0xA\n\
+ ble _080F7D56\n\
+_080F7DC4:\n\
+ mov r0, r9\n\
+ cmp r0, 0\n\
+ beq _080F7DDC\n\
+_080F7DCA:\n\
+ ldr r0, =gUnknown_0203A034\n\
+ ldr r0, [r0]\n\
+ ldr r1, [r0]\n\
+ ldrb r0, [r1, 0x14]\n\
+ subs r0, 0x1\n\
+ strb r0, [r1, 0x14]\n\
+ mov r0, r8\n\
+ bl DestroyTask\n\
+_080F7DDC:\n\
+ add sp, 0x8\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool");
+}
+#endif // NONMATCHING
+
+static void sub_80F7DF4(void)
+{
+ gUnknown_0203A034 = AllocZeroed(sizeof(*gUnknown_0203A034));
+ gUnknown_0203A034->unk0 = AllocZeroed(sizeof(*gUnknown_0203A034->unk0));
+ gUnknown_0203A034->unk4 = AllocZeroed(sizeof(*gUnknown_0203A034->unk4));
+ gUnknown_0203A034->unk8 = AllocZeroed(BG_SCREEN_SIZE);
+ gUnknown_0203A034->unkC[0] = AllocZeroed(BG_SCREEN_SIZE);
+ gUnknown_0203A034->unkC[1] = AllocZeroed(BG_SCREEN_SIZE);
+ gUnknown_0203A034->unkC[2] = AllocZeroed(BG_SCREEN_SIZE);
+ gUnknown_0203A034->unkC[3] = AllocZeroed(BG_SCREEN_SIZE);
+ gUnknown_0203A034->unk1C = AllocZeroed(0x1000);
+ AllocateMonSpritesGfx();
+}
+
+static void sub_80F7E64(void)
+{
+ FREE_AND_SET_NULL(gUnknown_0203A034->unk0);
+ FREE_AND_SET_NULL(gUnknown_0203A034->unk4);
+ FREE_AND_SET_NULL(gUnknown_0203A034->unk8);
+ FREE_AND_SET_NULL(gUnknown_0203A034->unkC[0]);
+ FREE_AND_SET_NULL(gUnknown_0203A034->unkC[1]);
+ FREE_AND_SET_NULL(gUnknown_0203A034->unkC[2]);
+ FREE_AND_SET_NULL(gUnknown_0203A034->unkC[3]);
+ FREE_AND_SET_NULL(gUnknown_0203A034->unk1C);
+ FREE_AND_SET_NULL(gUnknown_0203A034);
+ FreeMonSpritesGfx();
+}
+
+static void sub_80F7ED0(int windowId, u8 *str, int arg2)
+{
+ struct TextPrinterTemplate textPrinter;
+ textPrinter.currentChar = str;
+ textPrinter.windowId = windowId;
+ textPrinter.fontId = 7;
+ textPrinter.x = arg2;
+ textPrinter.y = 2;
+ textPrinter.currentX = arg2;
+ textPrinter.currentY = 2;
+ textPrinter.letterSpacing = 0;
+ textPrinter.lineSpacing = 0;
+ textPrinter.unk = 0;
+ textPrinter.fgColor = 1;
+ textPrinter.bgColor = 0;
+ textPrinter.shadowColor = 8;
+ AddTextPrinter(&textPrinter, 0, NULL);
+ PutWindowTilemap(windowId);
+}
+
+void sub_80F7F30(void)
+{
+ u8 result = sub_80DAE0C(&gPlayerParty[gContestMonPartyIndex]);
+ if (result)
+ {
+ sub_80DAB8C(gSpecialVar_ContestCategory, gSpecialVar_ContestRank);
+ sub_80DB09C(gSpecialVar_ContestCategory);
+ }
+
+ gSpecialVar_Result = result;
+}
+
+u16 sub_80F7F7C(void)
+{
+ u16 result = 0;
+ struct Pokemon *mon = &gPlayerParty[gContestMonPartyIndex];
+ switch (gSpecialVar_ContestCategory)
+ {
+ case CONTEST_CATEGORY_COOL:
+ if (GetMonData(mon, MON_DATA_COOL_RIBBON) > gSpecialVar_ContestRank)
+ result = 1;
+ break;
+ case CONTEST_CATEGORY_BEAUTY:
+ if (GetMonData(mon, MON_DATA_BEAUTY_RIBBON) > gSpecialVar_ContestRank)
+ result = 1;
+ break;
+ case CONTEST_CATEGORY_CUTE:
+ if (GetMonData(mon, MON_DATA_CUTE_RIBBON) > gSpecialVar_ContestRank)
+ result = 1;
+ break;
+ case CONTEST_CATEGORY_SMART:
+ if (GetMonData(mon, MON_DATA_SMART_RIBBON) > gSpecialVar_ContestRank)
+ result = 1;
+ break;
+ case CONTEST_CATEGORY_TOUGH:
+ if (GetMonData(mon, MON_DATA_TOUGH_RIBBON) > gSpecialVar_ContestRank)
+ result = 1;
+ break;
+ }
+
+ return result;
+}
+
+void sub_80F7FFC(void)
+{
+ u8 ribbonData;
+
+ if (gContestFinalStandings[gContestPlayerMonIndex] != 0)
+ return;
+
+ switch (gSpecialVar_ContestCategory)
+ {
+ case CONTEST_CATEGORY_COOL:
+ ribbonData = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_COOL_RIBBON);
+ if (ribbonData <= gSpecialVar_ContestRank && ribbonData < 4)
+ {
+ ribbonData++;
+ SetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_COOL_RIBBON, &ribbonData);
+ if (GetRibbonCount(&gPlayerParty[gContestMonPartyIndex]) > 4)
+ sub_80EE4DC(&gPlayerParty[gContestMonPartyIndex], MON_DATA_COOL_RIBBON);
+ }
+ break;
+ case CONTEST_CATEGORY_BEAUTY:
+ ribbonData = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_BEAUTY_RIBBON);
+ if (ribbonData <= gSpecialVar_ContestRank && ribbonData < 4)
+ {
+ ribbonData++;
+ SetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_BEAUTY_RIBBON, &ribbonData);
+ if (GetRibbonCount(&gPlayerParty[gContestMonPartyIndex]) > 4)
+ sub_80EE4DC(&gPlayerParty[gContestMonPartyIndex], MON_DATA_BEAUTY_RIBBON);
+ }
+ break;
+ case CONTEST_CATEGORY_CUTE:
+ ribbonData = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_CUTE_RIBBON);
+ if (ribbonData <= gSpecialVar_ContestRank && ribbonData < 4)
+ {
+ ribbonData++;
+ SetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_CUTE_RIBBON, &ribbonData);
+ if (GetRibbonCount(&gPlayerParty[gContestMonPartyIndex]) > 4)
+ sub_80EE4DC(&gPlayerParty[gContestMonPartyIndex], MON_DATA_CUTE_RIBBON);
+ }
+ break;
+ case CONTEST_CATEGORY_SMART:
+ ribbonData = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_SMART_RIBBON);
+ if (ribbonData <= gSpecialVar_ContestRank && ribbonData < 4)
+ {
+ ribbonData++;
+ SetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_SMART_RIBBON, &ribbonData);
+ if (GetRibbonCount(&gPlayerParty[gContestMonPartyIndex]) > 4)
+ sub_80EE4DC(&gPlayerParty[gContestMonPartyIndex], MON_DATA_SMART_RIBBON);
+ }
+ break;
+ case CONTEST_CATEGORY_TOUGH:
+ ribbonData = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_TOUGH_RIBBON);
+ if (ribbonData <= gSpecialVar_ContestRank && ribbonData < 4)
+ {
+ ribbonData++;
+ SetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_TOUGH_RIBBON, &ribbonData);
+ if (GetRibbonCount(&gPlayerParty[gContestMonPartyIndex]) > 4)
+ sub_80EE4DC(&gPlayerParty[gContestMonPartyIndex], MON_DATA_TOUGH_RIBBON);
+ }
+ break;
+ }
+}
+
+void sub_80F8264(void)
+{
+ StringCopy(gStringVar1, gContestMons[gSpecialVar_0x8006].trainerName);
+ sub_81DB5AC(gStringVar1);
+}
+
+void sub_80F8290(void)
+{
+ StringCopy(gStringVar3, gContestMons[gSpecialVar_0x8006].nickname);
+}
+
+void sub_80F82B4(void)
+{
+ u8 i;
+ u8 count;
+
+ for (i = 0, count = 0; i < 4; i++)
+ {
+ if (gContestMonConditions[gSpecialVar_0x8006] < gContestMonConditions[i])
+ count++;
+ }
+
+ gSpecialVar_0x8004 = count;
+}
+
+void sub_80F82FC(void)
+{
+ gSpecialVar_0x8004 = gContestMonConditions[gSpecialVar_0x8006];
+}
+
+void sub_80F831C(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4 && gContestFinalStandings[i] != 0; i++)
+ ;
+
+ gSpecialVar_0x8005 = i;
+}
+
+void sub_80F834C(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4 && gContestFinalStandings[i] != 0; i++)
+ ;
+
+ StringCopy(gStringVar3, gContestMons[i].trainerName);
+ sub_81DB5AC(gStringVar3);
+}
+
+void sub_80F8390(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4 && gContestFinalStandings[i] != 0; i++)
+ ;
+
+ StringCopy(gStringVar1, gContestMons[i].nickname);
+}
+
+void sub_80F83D0(void)
+{
+ SetMainCallback2(sub_80D7B24);
+}
+
+static void sub_80F83E0(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ DestroyTask(taskId);
+ SetMainCallback2(sub_80F83D0);
+ }
+}
+
+void sub_80F840C(void)
+{
+ ScriptContext2_Enable();
+ CreateTask(sub_80F83E0, 10);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+}
+
+void sub_80F8438(void)
+{
+ gSpecialVar_0x8004 = gContestMons[gSpecialVar_0x8006].species;
+}
+
+static void sub_80F8458(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ DestroyTask(taskId);
+ SetMainCallback2(sub_80F5B00);
+ }
+}
+
+void sub_80F8484(void)
+{
+ ScriptContext2_Enable();
+ CreateTask(sub_80F8458, 10);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+}
+
+void sub_80F84B0(void)
+{
+ gSpecialVar_0x8004 = gContestPlayerMonIndex;
+}
+
+void sub_80F84C4(u8 taskId)
+{
+ u8 newTaskId;
+ ScriptContext2_Enable();
+ newTaskId = CreateTask(sub_80FC580, 0);
+ SetTaskFuncWithFollowupFunc(newTaskId, sub_80FC580, sub_80F8508);
+ gTasks[newTaskId].data[9] = taskId;
+}
+
+static void sub_80F8508(u8 taskId)
+{
+ if (gIsLinkContest & 0x4)
+ {
+ sub_80DA8C8(gContestMonPartyIndex);
+ SetTaskFuncWithFollowupFunc(taskId, sub_80FC6BC, sub_80F8568);
+ }
+ else
+ {
+ sub_80DA8C8(gContestMonPartyIndex);
+ gTasks[taskId].func = sub_81D9DE4;
+ }
+}
+
+static void sub_80F8568(u8 taskId)
+{
+ SetTaskFuncWithFollowupFunc(taskId, sub_80FC804, sub_80F8584);
+}
+
+static void sub_80F8584(u8 taskId)
+{
+ SetTaskFuncWithFollowupFunc(taskId, sub_80FCE48, sub_80F85A0);
+}
+
+static void sub_80F85A0(u8 taskId)
+{
+ SetTaskFuncWithFollowupFunc(taskId, sub_80FC894, sub_80F85BC);
+}
+
+#ifdef NONMATCHING
+static void sub_80F85BC(u8 taskId)
+{
+ u32 i;
+ u8 sp0[4];
+ u8 sp4[4];
+
+ memset(sp0, 0, sizeof(sp0));
+ memset(sp4, 0, sizeof(sp4));
+
+ for (i = 0; i < gNumLinkContestPlayers; i++)
+ sp0[i] = gTasks[taskId].data[i + 1];
+
+ for (i = 0; i < gNumLinkContestPlayers; i++)
+ {
+ if (sp0[0] != sp0[i + 1])
+ break;
+ }
+
+ if (i == gNumLinkContestPlayers)
+ gSpecialVar_0x8004 = 0;
+ else
+ gSpecialVar_0x8004 = 1;
+
+ for (i = 0; i < gNumLinkContestPlayers; i++)
+ sp4[i] = gTasks[taskId].data[i + 5];
+
+ gUnknown_02039F2B = sub_80F86E0(sp4);
+ sub_80DB09C(gSpecialVar_ContestCategory);
+ SetTaskFuncWithFollowupFunc(taskId, sub_80FCF40, sub_80F86B8);
+}
+#else
+NAKED
+static void sub_80F85BC(u8 taskId)
+{
+ asm_unified("\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ sub sp, 0x8\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ str r0, [sp, 0x4]\n\
+ movs r3, 0\n\
+ ldr r5, =gNumLinkContestPlayers\n\
+ mov r12, r5\n\
+ ldr r0, =gSpecialVar_0x8004\n\
+ mov r9, r0\n\
+ add r1, sp, 0x4\n\
+ mov r8, r1\n\
+ ldrb r0, [r5]\n\
+ cmp r3, r0\n\
+ bcs _080F8606\n\
+ lsls r0, r6, 2\n\
+ adds r0, r6\n\
+ lsls r4, r0, 3\n\
+ ldr r7, =gTasks + 0x8\n\
+_080F85EC:\n\
+ mov r1, sp\n\
+ adds r2, r1, r3\n\
+ adds r1, r3, 0x1\n\
+ lsls r0, r1, 1\n\
+ adds r0, r4\n\
+ adds r0, r7\n\
+ ldrh r0, [r0]\n\
+ strb r0, [r2]\n\
+ lsls r1, 24\n\
+ lsrs r3, r1, 24\n\
+ ldrb r0, [r5]\n\
+ cmp r3, r0\n\
+ bcc _080F85EC\n\
+_080F8606:\n\
+ movs r3, 0\n\
+ mov r1, r12\n\
+ ldrb r0, [r1]\n\
+ cmp r3, r0\n\
+ bcs _080F862A\n\
+ adds r4, r0, 0\n\
+ mov r2, sp\n\
+_080F8614:\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, r4\n\
+ bcs _080F862A\n\
+ mov r0, sp\n\
+ adds r1, r0, r3\n\
+ ldrb r0, [r2]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ beq _080F8614\n\
+_080F862A:\n\
+ mov r1, r12\n\
+ ldrb r1, [r1]\n\
+ cmp r3, r1\n\
+ bne _080F8644\n\
+ movs r0, 0\n\
+ b _080F8646\n\
+ .pool\n\
+_080F8644:\n\
+ movs r0, 0x1\n\
+_080F8646:\n\
+ mov r1, r9\n\
+ strh r0, [r1]\n\
+ movs r3, 0\n\
+ mov r4, r12\n\
+ ldrb r0, [r4]\n\
+ cmp r3, r0\n\
+ bcs _080F8678\n\
+ mov r5, r8\n\
+ lsls r0, r6, 2\n\
+ adds r0, r6\n\
+ lsls r2, r0, 3\n\
+ ldr r7, =gTasks + 0x8\n\
+_080F865E:\n\
+ adds r1, r5, r3\n\
+ adds r0, r3, 0x5\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ adds r0, r7\n\
+ ldrh r0, [r0]\n\
+ strb r0, [r1]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ ldrb r1, [r4]\n\
+ cmp r3, r1\n\
+ bcc _080F865E\n\
+_080F8678:\n\
+ mov r0, r8\n\
+ bl sub_80F86E0\n\
+ ldr r1, =gUnknown_02039F2B\n\
+ strb r0, [r1]\n\
+ ldr r0, =gSpecialVar_ContestCategory\n\
+ ldrb r0, [r0]\n\
+ bl sub_80DB09C\n\
+ ldr r1, =sub_80FCF40\n\
+ ldr r2, =sub_80F86B8\n\
+ adds r0, r6, 0\n\
+ bl SetTaskFuncWithFollowupFunc\n\
+ add sp, 0x8\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool");
+}
+#endif // NONMATCHING
+
+static void sub_80F86B8(u8 taskId)
+{
+ sub_80DCE58(0);
+ SetTaskFuncWithFollowupFunc(taskId, sub_80FCFD0, sub_80F8714);
+}
+
+u8 sub_80F86E0(u8 *arg0)
+{
+ int i;
+ u8 result = 0;
+
+ for (i = 1; i < gNumLinkContestPlayers; i++)
+ {
+ if (arg0[result] < arg0[i])
+ result = i;
+ }
+
+ return result;
+}
+
+void sub_80F8714(u8 taskId)
+{
+ int i;
+
+ if (gSpecialVar_0x8004 == 1)
+ {
+ if (IsLinkTaskFinished())
+ gTasks[taskId].func = sub_80F878C;
+ }
+ else
+ {
+ for (i = 0; i < 4; i++)
+ StringGetEnd10(gContestMons[i].nickname);
+
+ DestroyTask(taskId);
+ SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
+ ScriptContext2_Disable();
+ EnableBothScriptContexts();
+ }
+}
+
+static void sub_80F878C(u8 taskId)
+{
+ sub_800AC34();
+ gTasks[taskId].func = sub_80F87B4;
+}
+
+static void sub_80F87B4(u8 taskId)
+{
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ DestroyTask(taskId);
+ ScriptContext2_Disable();
+ EnableBothScriptContexts();
+ }
+}
diff --git a/src/easy_chat.c b/src/easy_chat.c
index 7158253d1..5c55cd2ca 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -2,20 +2,28 @@
// Includes
#include "global.h"
#include "alloc.h"
-#include "constants/songs.h"
-#include "sound.h"
-#include "overworld.h"
-#include "task.h"
-#include "main.h"
-#include "link.h"
+#include "bg.h"
+#include "dewford_trend.h"
+#include "dynamic_placeholder_text_util.h"
+#include "easy_chat.h"
+#include "event_data.h"
#include "field_weather.h"
-#include "window.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "international_string_util.h"
+#include "link.h"
+#include "main.h"
+#include "menu.h"
+#include "overworld.h"
#include "palette.h"
-#include "event_data.h"
-#include "easy_chat.h"
+#include "sound.h"
#include "string_util.h"
-
-// Static type declarations
+#include "strings.h"
+#include "task.h"
+#include "text_window.h"
+#include "window.h"
+#include "constants/flags.h"
+#include "constants/songs.h"
#define EZCHAT_TASK_STATE 0
#define EZCHAT_TASK_KIND 1
@@ -24,37 +32,86 @@
#define EZCHAT_TASK_UNK06 6
#define EZCHAT_TASK_SIZE 7
-// Static RAM declarations
-
-EWRAM_DATA struct
-{
- u8 kind;
- u8 unk_01;
- u8 unk_02;
- u8 unk_03;
- u8 unk_04;
- s8 unk_05;
- s8 unk_06;
- u8 unk_07;
- u8 unk_08;
- u8 unk_09;
- u8 unk_0a;
- u8 unk_0b;
- u8 unk_0c;
- u8 unk_0d;
- u8 unk_0e[0x4];
- u8 sizeParam;
- u8 unk_13;
- u8 unk_14[0x20];
- const u8 *src;
- const u16 *words;
- u16 ecWordBuffer[9];
-} *gUnknown_0203A118 = NULL;
-
-EWRAM_DATA void *gUnknown_0203A11C = 0;
-EWRAM_DATA void *gUnknown_0203A120 = 0;
+struct EasyChatScreenTemplate
+{
+ u8 unk_00;
+ u8 numColumns;
+ u8 numRows;
+ u8 unk_03_0:7;
+ u8 unk_03_7:1;
+ const u8 *titleText;
+ const u8 *instructionsText1;
+ const u8 *instructionsText2;
+ const u8 *confirmText1;
+ const u8 *confirmText2;
+};
+
+struct EasyChatScreen
+{
+ /*0x00*/ u8 kind;
+ /*0x01*/ u8 templateId;
+ /*0x02*/ u8 numColumns;
+ /*0x03*/ u8 numRows;
+ /*0x04*/ u8 state;
+ /*0x05*/ s8 mainCursorColumn;
+ /*0x06*/ s8 mainCursorRow;
+ /*0x07*/ u8 unk_07;
+ /*0x08*/ u8 unk_08;
+ /*0x09*/ u8 unk_09;
+ /*0x0A*/ s8 unk_0a;
+ /*0x0B*/ s8 unk_0b;
+ /*0x0C*/ u8 unk_0c;
+ /*0x0D*/ u8 unk_0d;
+ /*0x0E*/ u8 unk_0e;
+ /*0x0F*/ u8 unk_0f;
+ /*0x10*/ s8 unk_10;
+ /*0x11*/ s8 unk_11;
+ /*0x12*/ u8 sizeParam;
+ /*0x13*/ u8 unk_13;
+ /*0x14*/ u8 unk_14[0x20];
+ /*0x34*/ const u8 *titleText;
+ /*0x38*/ u16 *words;
+ /*0x3C*/ u16 ecWordBuffer[9];
+};
+
+struct Unk203A11C
+{
+ u16 unk0;
+ u16 windowId;
+ u16 unk4;
+ u8 unk6;
+ u8 unk7;
+ s8 unk8;
+ u8 filler9[0x1];
+ u8 unkA;
+ u8 unkB[0xC1];
+ u8 unkCC[0x20C];
+ int unk2D8;
+ int unk2DC;
+ int unk2E0;
+ int unk2E4;
+ int unk2E8;
+ int unk2EC;
+ int unk2F0;
+ int unk2F4;
+ int unk2F8;
+ int unk2FC;
+ u16 unk300[BG_SCREEN_SIZE / 2];
+ u16 unkB00[BG_SCREEN_SIZE / 2];
+};
-// Static ROM declarations
+struct Unk08597C30
+{
+ u8 unk0_0:5;
+ u8 unk0_5:3;
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+};
+
+EWRAM_DATA struct EasyChatScreen *gEasyChatScreen = NULL;
+EWRAM_DATA struct Unk203A11C *gUnknown_0203A11C = 0;
+EWRAM_DATA void *gUnknown_0203A120 = 0;
static void sub_811A2C0(u8);
static void sub_811A278(void);
@@ -68,47 +125,185 @@ static bool8 EasyChat_AllocateResources(u8, u16 *, u8);
static void EasyChat_FreeResources(void);
static u16 sub_811AAAC(void);
static u16 sub_811AB68(void);
-u16 sub_811ACDC(void);
-u16 sub_811AE44(void);
-u16 sub_811AF00(void);
-u16 sub_811AF8C(void);
-u16 sub_811AFEC(void);
-u16 sub_811B040(void);
-u16 sub_811B08C(void);
-u16 sub_811B0BC(void);
-u16 sub_811B0E8(void);
-u16 sub_811B0F8(void);
-u16 sub_811B150(void);
+static u16 sub_811ACDC(void);
+static u16 sub_811AE44(void);
+static u16 sub_811AF00(void);
+static u16 sub_811AF8C(void);
+static u16 sub_811AFEC(void);
+static u16 sub_811B040(void);
+static u16 sub_811B08C(void);
+static u16 sub_811B0BC(void);
+static u16 sub_811B0E8(void);
+static u16 sub_811B0F8(void);
+static u16 sub_811B150(void);
u16 sub_811B1B4(void);
u8 sub_811BA68(void);
-u8 sub_811BCC8(u8);
-void sub_811BDF0(u8 *);
+static u8 sub_811BCC8(u8);
+static void sub_811BDF0(u8 *);
void sub_811BF78(void);
-bool8 sub_811BF8C(void);
-bool8 sub_811BFA4(void);
-void sub_811C13C(void);
-/*static*/ void sub_811C158(u16);
-/*static*/ bool8 sub_811C170(void);
+static bool8 sub_811BF8C(void);
+static bool8 sub_811BFA4(void);
+static void sub_811C13C(void);
+static void sub_811C158(u16);
+static bool8 sub_811C170(void);
bool8 sub_811F28C(void);
void sub_811F2B8(void);
u8 sub_811F3AC(void);
-
-// .rodata
+int sub_811BA3C(void);
+int sub_811B184(void);
+int sub_811B264(void);
+static int sub_811B32C(void);
+static int sub_811B2B0(void);
+static int sub_811B33C(void);
+static int sub_811B368(void);
+static u16 sub_811B528(int);
+static u16 sub_811B794(u32);
+static int sub_811B394(void);
+static u8 sub_811B2A4(void);
+static void sub_811B3E4(void);
+static void sub_811BE9C(void);
+static int sub_811B4EC(void);
+static void sub_811B418(void);
+static void sub_811B454(void);
+static int sub_811BD64(void);
+static int sub_811BDB0(void);
+static int sub_811BD2C(void);
+int sub_811BCF4(void);
+static u16 sub_811B8E8(void);
+int sub_811F3B8(u8);
+void sub_811F548(int, u16);
+static int sub_811B908(void);
+u16 sub_811F5B0(void);
+static void sub_811B488(u16);
+u16 sub_811B940(void);
+u16 sub_811F578(u16);
+int sub_811BF88(int);
+static u16 sub_811B8C8(void);
+static int sub_811B568(u32);
+static int sub_811B634(u32);
+static int sub_811B6C4(u32);
+static void sub_811B978(void);
+static void sub_811B744(void);
+static u8 sub_811B9C8(void);
+static void sub_811B768(void);
+static u8 sub_811B960(u8);
+static void sub_811B9A0(void);
+static u8 sub_811BA1C(void);
+static int sub_811BF20(void);
+static u16 sub_811BF40(void);
+static bool8 sub_811CE94(void);
+static void sub_811CF64(void);
+static void sub_811CF04(void);
+static void sub_811D60C(void);
+static void sub_811D424(u16 *);
+static void sub_811D230(void);
+void sub_811E948(void);
+static void sub_811CFCC(void);
+static void sub_811D0BC(void);
+static void sub_811D2C8(void);
+static void sub_811D684(void);
+void sub_811DE90(void);
+void sub_811DEC4(void);
+void sub_811DE5C(u8, u8, u8, u8);
+void sub_811E5D4(void);
+void sub_811E720(void);
+void sub_811E828(void);
+static bool8 sub_811C2D4(void);
+static bool8 sub_811C30C(void);
+static bool8 sub_811C3E4(void);
+static bool8 sub_811C48C(void);
+static bool8 sub_811C404(void);
+static bool8 sub_811C448(void);
+static bool8 sub_811C4D0(void);
+static bool8 sub_811C518(void);
+static bool8 sub_811C554(void);
+static bool8 sub_811C620(void);
+static bool8 sub_811C830(void);
+static bool8 sub_811C8F0(void);
+static bool8 sub_811C99C(void);
+static bool8 sub_811CA5C(void);
+static bool8 sub_811C780(void);
+static bool8 sub_811C78C(void);
+static bool8 sub_811C7D4(void);
+static bool8 sub_811CB18(void);
+static bool8 sub_811CB98(void);
+static bool8 sub_811CB24(void);
+static bool8 sub_811CC90(void);
+static bool8 sub_811CC08(void);
+static bool8 sub_811C6C0(void);
+static bool8 sub_811CD14(void);
+static bool8 sub_811CD54(void);
+static bool8 sub_811CD94(void);
+static bool8 sub_811CDD4(void);
+static bool8 sub_811CE14(void);
+static bool8 sub_811CE54(void);
+void sub_811DF60(u8, u8);
+int sub_811E920(int);
+void sub_811DF90(void);
+static void sub_811D104(u8);
+static void sub_811D214(u8);
+void sub_811DFB0(void);
+static void sub_811D6D4(void);
+static void sub_811D9CC(int);
+void sub_811E3AC(void);
+bool8 sub_811E418(void);
+void sub_811DFC8(void);
+void sub_811E6E0(int);
+static bool8 sub_811DAA4(void);
+void sub_811E64C(void);
+void sub_811E050(void);
+void sub_811E4AC(void);
+void sub_811E6B0(void);
+void sub_811E55C(void);
+bool8 sub_811E4D0(void);
+bool8 sub_811E5B8(void);
+void sub_811E578(void);
+void sub_811E088(void);
+void sub_811DDAC(s16, u8);
+bool8 sub_811DE10(void);
+static void sub_811D9B4(void);
+static void sub_811D698(u32);
+void sub_811E288(void);
+void sub_811E794(void);
+void sub_811E380(void);
+void sub_811E7F8(void);
+void sub_811E30C(void);
+static void sub_811D7A4(void);
+static void sub_811D7C8(void);
+int sub_811DE48(void);
+static void sub_811D7EC(void);
+static void sub_811D830(void);
+void sub_811D058(u8, u8, const u8 *, u8, u8, u8, u8, u8, u8);
+void sub_811DD84(void);
+static void sub_811D6F4(void);
+static void sub_811D758(void);
+static void sub_811D794(void);
+const u8 *sub_811F424(u8);
+static void sub_811D864(u8, u8);
+static void sub_811D950(u8, u8);
+void sub_811DADC(u8);
+u8 *CopyEasyChatWordPadded(u8 *, u16, u16);
extern const struct {
u16 word;
MainCallback callback;
} gUnknown_08597530[4];
-extern const struct {
- u8 unk_00;
- u8 unk_01;
- u8 unk_02;
- u8 unk_03;
- u8 *data;
- u8 filler_08[16];
-} gUnknown_08597550[];
-// .text
+extern const struct EasyChatScreenTemplate gEasyChatScreenTemplates[21];
+extern const u8 gUnknown_08597748[][7];
+extern const u16 gUnknown_08597764[];
+extern const u16 gUnknown_0859776C[][2];
+extern const struct BgTemplate gUnknown_08597C54[4];
+extern const struct WindowTemplate gUnknown_08597C64[];
+extern const u32 gUnknown_08597B54[];
+extern const struct Unk08597C30 gUnknown_08597C30[];
+extern const u16 gUnknown_08597B14[];
+extern const u16 gUnknown_08597B34[];
+extern const u16 gUnknown_08597C1C[];
+extern const u16 gUnknown_08597C24[];
+extern const struct WindowTemplate gUnknown_08597C84;
+extern const u8 gUnknown_08597C8C[4];
+extern const u8 *const gUnknown_08597C90[4];
void sub_811A20C(u8 kind, u16 *words, MainCallback callback, u8 sizeParam)
{
@@ -444,66 +639,66 @@ void sub_811A938(void)
static bool8 EasyChat_AllocateResources(u8 kind, u16 *words, u8 sizeParam)
{
- u8 r6;
+ u8 templateId;
int i;
- gUnknown_0203A118 = malloc(sizeof(*gUnknown_0203A118));
- if (gUnknown_0203A118 == NULL)
+ gEasyChatScreen = malloc(sizeof(*gEasyChatScreen));
+ if (gEasyChatScreen == NULL)
{
return FALSE;
}
- gUnknown_0203A118->kind = kind;
- gUnknown_0203A118->words = words;
- gUnknown_0203A118->unk_05 = 0;
- gUnknown_0203A118->unk_06 = 0;
- gUnknown_0203A118->unk_09 = 0;
- gUnknown_0203A118->sizeParam = sizeParam;
- gUnknown_0203A118->unk_13 = 0;
- r6 = sub_811BCC8(kind);
+ gEasyChatScreen->kind = kind;
+ gEasyChatScreen->words = words;
+ gEasyChatScreen->mainCursorColumn = 0;
+ gEasyChatScreen->mainCursorRow = 0;
+ gEasyChatScreen->unk_09 = 0;
+ gEasyChatScreen->sizeParam = sizeParam;
+ gEasyChatScreen->unk_13 = 0;
+ templateId = sub_811BCC8(kind);
if (kind == 0x10)
{
- sub_811BDF0(gUnknown_0203A118->unk_14);
- gUnknown_0203A118->src = gUnknown_0203A118->unk_14;
- gUnknown_0203A118->unk_04 = 7;
+ sub_811BDF0(gEasyChatScreen->unk_14);
+ gEasyChatScreen->titleText = gEasyChatScreen->unk_14;
+ gEasyChatScreen->state = 7;
}
else
{
- gUnknown_0203A118->unk_04 = 0;
- gUnknown_0203A118->src = gUnknown_08597550[r6].data;
+ gEasyChatScreen->state = 0;
+ gEasyChatScreen->titleText = gEasyChatScreenTemplates[templateId].titleText;
}
- gUnknown_0203A118->unk_02 = gUnknown_08597550[r6].unk_01;
- gUnknown_0203A118->unk_03 = gUnknown_08597550[r6].unk_02;
- gUnknown_0203A118->unk_07 = gUnknown_0203A118->unk_02 * gUnknown_0203A118->unk_03;
- gUnknown_0203A118->unk_01 = r6;
- if (gUnknown_0203A118->unk_07 > 9)
+ gEasyChatScreen->numColumns = gEasyChatScreenTemplates[templateId].numColumns;
+ gEasyChatScreen->numRows = gEasyChatScreenTemplates[templateId].numRows;
+ gEasyChatScreen->unk_07 = gEasyChatScreen->numColumns * gEasyChatScreen->numRows;
+ gEasyChatScreen->templateId = templateId;
+ if (gEasyChatScreen->unk_07 > 9)
{
- gUnknown_0203A118->unk_07 = 9;
+ gEasyChatScreen->unk_07 = 9;
}
if (words != NULL)
{
- CpuCopy16(words, gUnknown_0203A118->ecWordBuffer, gUnknown_0203A118->unk_07 * sizeof(u16));
+ CpuCopy16(words, gEasyChatScreen->ecWordBuffer, gEasyChatScreen->unk_07 * sizeof(u16));
}
else
{
- for (i = 0; i < gUnknown_0203A118->unk_07; i ++)
+ for (i = 0; i < gEasyChatScreen->unk_07; i ++)
{
- gUnknown_0203A118->ecWordBuffer[i] = -1;
+ gEasyChatScreen->ecWordBuffer[i] = -1;
}
- gUnknown_0203A118->words = gUnknown_0203A118->ecWordBuffer;
+ gEasyChatScreen->words = gEasyChatScreen->ecWordBuffer;
}
- gUnknown_0203A118->unk_0d = (sub_811F3AC() - 1) / 2 + 1;
+ gEasyChatScreen->unk_0d = (sub_811F3AC() - 1) / 2 + 1;
return TRUE;
}
static void EasyChat_FreeResources(void)
{
- if (gUnknown_0203A118 != NULL)
- FREE_AND_SET_NULL(gUnknown_0203A118);
+ if (gEasyChatScreen != NULL)
+ FREE_AND_SET_NULL(gEasyChatScreen);
}
static u16 sub_811AAAC(void)
{
- switch (gUnknown_0203A118->unk_04)
+ switch (gEasyChatScreen->state)
{
case 0:
return sub_811AB68();
@@ -549,263 +744,3011 @@ static u16 sub_811AB68(void)
if (gMain.newKeys & A_BUTTON)
{
sub_811BF78();
- gUnknown_0203A118->unk_04 = 2;
- gUnknown_0203A118->unk_0a = 0;
- gUnknown_0203A118->unk_0b = 0;
- gUnknown_0203A118->unk_0c = 0;
+ gEasyChatScreen->state = 2;
+ gEasyChatScreen->unk_0a = 0;
+ gEasyChatScreen->unk_0b = 0;
+ gEasyChatScreen->unk_0c = 0;
return 9;
}
else if (gMain.newKeys & B_BUTTON)
- { // FIXME: See note below
+ {
return sub_811B150();
}
else if (gMain.newKeys & START_BUTTON)
- { // FIXME: See note below
+ {
return sub_811B1B4();
}
else if (gMain.newKeys & DPAD_UP)
{
- gUnknown_0203A118->unk_06--;
+ gEasyChatScreen->mainCursorRow--;
}
else if (gMain.newKeys & DPAD_LEFT)
- { // FIXME: See note below
- gUnknown_0203A118->unk_05--;
+ {
+ gEasyChatScreen->mainCursorColumn--;
}
else if (gMain.newKeys & DPAD_DOWN)
- { // FIXME: See note below
- gUnknown_0203A118->unk_06++;
+ {
+ gEasyChatScreen->mainCursorRow++;
}
else if (gMain.newKeys & DPAD_RIGHT)
- { // FIXME: See note below
- gUnknown_0203A118->unk_05++;
+ {
+ gEasyChatScreen->mainCursorColumn++;
}
else
{
return 0;
}
- if (gUnknown_0203A118->unk_06 < 0)
+
+ if (gEasyChatScreen->mainCursorRow < 0)
+ gEasyChatScreen->mainCursorRow = gEasyChatScreenTemplates[gEasyChatScreen->templateId].numRows;
+
+ if (gEasyChatScreen->mainCursorRow > gEasyChatScreenTemplates[gEasyChatScreen->templateId].numRows)
+ gEasyChatScreen->mainCursorRow = 0;
+
+ if (gEasyChatScreen->mainCursorRow == gEasyChatScreenTemplates[gEasyChatScreen->templateId].numRows)
{
- gUnknown_0203A118->unk_06 = gUnknown_08597550[gUnknown_0203A118->unk_01].unk_02;
+ if (gEasyChatScreen->mainCursorColumn > 2)
+ gEasyChatScreen->mainCursorColumn = 2;
+
+ gEasyChatScreen->state = 1;
+ return 3;
}
- if (gUnknown_0203A118->unk_06 > gUnknown_08597550[gUnknown_0203A118->unk_01].unk_02)
+
+ if (gEasyChatScreen->mainCursorColumn < 0)
+ gEasyChatScreen->mainCursorColumn = gEasyChatScreenTemplates[gEasyChatScreen->templateId].numColumns - 1;
+
+ if (gEasyChatScreen->mainCursorColumn >= gEasyChatScreenTemplates[gEasyChatScreen->templateId].numColumns)
+ gEasyChatScreen->mainCursorColumn = 0;
+
+ if (sub_811AB44() && gEasyChatScreen->mainCursorColumn == 1 && gEasyChatScreen->mainCursorRow == 4)
+ gEasyChatScreen->mainCursorColumn = 0;
+
+ return 2;
+}
+#else
+NAKED
+static u16 sub_811AB68(void)
+{
+ asm_unified("\n\
+ push {r4-r7,lr}\n\
+ ldr r0, =gMain\n\
+ ldrh r1, [r0, 0x2E]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0811ABB8\n\
+ bl sub_811BF78\n\
+ ldr r1, =gEasyChatScreen\n\
+ ldr r3, [r1]\n\
+ movs r2, 0\n\
+ movs r0, 0x2\n\
+ strb r0, [r3, 0x4]\n\
+ ldr r0, [r1]\n\
+ strb r2, [r0, 0xA]\n\
+ ldr r0, [r1]\n\
+ strb r2, [r0, 0xB]\n\
+ ldr r0, [r1]\n\
+ strb r2, [r0, 0xC]\n\
+ movs r0, 0x9\n\
+ b RETURN\n\
+ .pool\n\
+_0811AB9C:\n\
+ movs r0, 0x20\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0811AC68_dpad_left\n\
+ movs r0, 0x80\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0811AC58_dpad_down\n\
+ movs r0, 0x10\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0811AC48_dpad_right\n\
+ movs r0, 0\n\
+ b RETURN\n\
+_0811ABB8:\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0811AC78_b_button\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0811AC7E_start_button\n\
+ movs r0, 0x40\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0811AB9C\n\
+ ldr r2, =gEasyChatScreen\n\
+ ldr r1, [r2]\n\
+ ldrb r0, [r1, 0x6]\n\
+ subs r0, 0x1\n\
+_0811ABD8:\n\
+ strb r0, [r1, 0x6]\n\
+_0811ABDA:\n\
+ adds r7, r2, 0\n\
+ adds r4, r7, 0\n\
+ ldr r2, [r4]\n\
+ movs r0, 0x6\n\
+ ldrsb r0, [r2, r0]\n\
+ ldr r6, =gEasyChatScreenTemplates\n\
+ cmp r0, 0\n\
+ bge _0811ABF8\n\
+ ldrb r0, [r2, 0x1]\n\
+ lsls r1, r0, 1\n\
+ adds r1, r0\n\
+ lsls r1, 3\n\
+ adds r1, r6\n\
+ ldrb r0, [r1, 0x2]\n\
+ strb r0, [r2, 0x6]\n\
+_0811ABF8:\n\
+ ldr r3, [r4]\n\
+ movs r2, 0x6\n\
+ ldrsb r2, [r3, r2]\n\
+ adds r5, r6, 0\n\
+ ldrb r1, [r3, 0x1]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ adds r0, r5\n\
+ ldrb r0, [r0, 0x2]\n\
+ cmp r2, r0\n\
+ ble _0811AC14\n\
+ movs r0, 0\n\
+ strb r0, [r3, 0x6]\n\
+_0811AC14:\n\
+ ldr r3, [r4]\n\
+ movs r2, 0x6\n\
+ ldrsb r2, [r3, r2]\n\
+ ldrb r1, [r3, 0x1]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ adds r1, r0, r5\n\
+ ldrb r0, [r1, 0x2]\n\
+ cmp r2, r0\n\
+ bne _0811AC88\n\
+ movs r0, 0x5\n\
+ ldrsb r0, [r3, r0]\n\
+ cmp r0, 0x2\n\
+ ble _0811AC36\n\
+ movs r0, 0x2\n\
+ strb r0, [r3, 0x5]\n\
+_0811AC36:\n\
+ ldr r1, [r4]\n\
+ movs r0, 0x1\n\
+ strb r0, [r1, 0x4]\n\
+ movs r0, 0x3\n\
+ b RETURN\n\
+ .pool\n\
+_0811AC48_dpad_right:\n\
+ ldr r2, =gEasyChatScreen\n\
+ ldr r1, [r2]\n\
+ ldrb r0, [r1, 0x5]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1, 0x5]\n\
+ b _0811ABDA\n\
+ .pool\n\
+_0811AC58_dpad_down:\n\
+ ldr r2, =gEasyChatScreen\n\
+ ldr r1, [r2]\n\
+ ldrb r0, [r1, 0x6]\n\
+ adds r0, 0x1\n\
+ b _0811ABD8\n\
+ .pool\n\
+_0811AC68_dpad_left:\n\
+ ldr r2, =gEasyChatScreen\n\
+ ldr r1, [r2]\n\
+ ldrb r0, [r1, 0x5]\n\
+ subs r0, 0x1\n\
+ strb r0, [r1, 0x5]\n\
+ b _0811ABDA\n\
+ .pool\n\
+_0811AC78_b_button:\n\
+ bl sub_811B150\n\
+ b _0811AC82\n\
+_0811AC7E_start_button:\n\
+ bl sub_811B1B4\n\
+_0811AC82:\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ b RETURN\n\
+_0811AC88:\n\
+ movs r0, 0x5\n\
+ ldrsb r0, [r3, r0]\n\
+ cmp r0, 0\n\
+ bge _0811AC96\n\
+ ldrb r0, [r1, 0x1]\n\
+ subs r0, 0x1\n\
+ strb r0, [r3, 0x5]\n\
+_0811AC96:\n\
+ ldr r3, [r4]\n\
+ movs r2, 0x5\n\
+ ldrsb r2, [r3, r2]\n\
+ ldrb r1, [r3, 0x1]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ adds r0, r6\n\
+ ldrb r0, [r0, 0x1]\n\
+ cmp r2, r0\n\
+ blt _0811ACB0\n\
+ movs r0, 0\n\
+ strb r0, [r3, 0x5]\n\
+_0811ACB0:\n\
+ bl sub_811AB44\n\
+ cmp r0, 0\n\
+ beq _0811ACCA\n\
+ ldr r2, [r7]\n\
+ ldr r0, [r2, 0x4]\n\
+ ldr r1, =0x00ffff00\n\
+ ands r0, r1\n\
+ ldr r1, =0x00040100\n\
+ cmp r0, r1\n\
+ bne _0811ACCA\n\
+ movs r0, 0\n\
+ strb r0, [r2, 0x5]\n\
+_0811ACCA:\n\
+ movs r0, 0x2\n\
+RETURN:\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .pool");
+}
+#endif // NONMATCHING
+
+#ifdef NONMATCHING
+static u16 sub_811ACDC(void)
+{
+ int numFooterColumns;
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ switch (gEasyChatScreen->mainCursorColumn)
+ {
+ case 0:
+ return sub_811B184();
+ case 1:
+ return sub_811B150();
+ case 2:
+ return sub_811B1B4();
+ case 3:
+ return sub_811B264();
+ }
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ return sub_811B150();
+ else if (gMain.newKeys & START_BUTTON)
+ return sub_811B1B4();
+ else if (gMain.newKeys & DPAD_UP)
+ gEasyChatScreen->mainCursorRow--;
+ else if (gMain.newKeys & DPAD_LEFT)
+ gEasyChatScreen->mainCursorColumn--;
+ else if (gMain.newKeys & DPAD_DOWN)
+ gEasyChatScreen->mainCursorRow = 0;
+ else if (gMain.newKeys & DPAD_RIGHT)
+ gEasyChatScreen->mainCursorColumn++;
+ else
+ return 0;
+
+ if (gEasyChatScreen->mainCursorRow == gEasyChatScreenTemplates[gEasyChatScreen->templateId].numRows)
{
- gUnknown_0203A118->unk_06 = 0;
+ numFooterColumns = sub_811BA3C() ? 4 : 3;
+ if (gEasyChatScreen->mainCursorColumn < 0)
+ gEasyChatScreen->mainCursorColumn = numFooterColumns - 1;
+
+ if (gEasyChatScreen->mainCursorColumn >= numFooterColumns)
+ gEasyChatScreen->mainCursorColumn = 0;
+
+ return 3;
}
- if (gUnknown_0203A118->unk_06 == gUnknown_08597550[gUnknown_0203A118->unk_01].unk_02)
+
+ if (gEasyChatScreen->mainCursorColumn >= gEasyChatScreenTemplates[gEasyChatScreen->templateId].numColumns)
+ gEasyChatScreen->mainCursorColumn = gEasyChatScreenTemplates[gEasyChatScreen->templateId].numColumns - 1;
+
+ if (sub_811AB44() && gEasyChatScreen->mainCursorColumn == 1 && gEasyChatScreen->mainCursorRow == 4)
+ gEasyChatScreen->mainCursorColumn = 0;
+
+ gEasyChatScreen->state = 0;
+ return 2;
+}
+#else
+NAKED
+static u16 sub_811ACDC(void)
+{
+ asm_unified("\n\
+ push {r4-r6,lr}\n\
+ ldr r2, =gMain\n\
+ ldrh r1, [r2, 0x2E]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0811AD4A\n\
+ ldr r0, =gEasyChatScreen\n\
+ ldr r0, [r0]\n\
+ ldrb r0, [r0, 0x5]\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+ cmp r0, 0x1\n\
+ beq _0811AD3E\n\
+ b _0811AD24\n\
+ .pool\n\
+_0811AD04:\n\
+ movs r0, 0x20\n\
+ ands r0, r2\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0\n\
+ bne _0811ADE0\n\
+ movs r0, 0x80\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ bne _0811ADD0\n\
+ movs r0, 0x10\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ bne _0811ADC0\n\
+ movs r0, 0\n\
+ b _0811AE32\n\
+_0811AD24:\n\
+ cmp r0, 0x1\n\
+ bgt _0811AD2E\n\
+ cmp r0, 0\n\
+ beq _0811AD38\n\
+ b _0811AD4A\n\
+_0811AD2E:\n\
+ cmp r0, 0x2\n\
+ beq _0811ADF6\n\
+ cmp r0, 0x3\n\
+ beq _0811AD44\n\
+ b _0811AD4A\n\
+_0811AD38:\n\
+ bl sub_811B184\n\
+ b _0811ADFA\n\
+_0811AD3E:\n\
+ bl sub_811B150\n\
+ b _0811ADFA\n\
+_0811AD44:\n\
+ bl sub_811B264\n\
+ b _0811ADFA\n\
+_0811AD4A:\n\
+ ldrh r2, [r2, 0x2E]\n\
+ movs r0, 0x2\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ bne _0811ADF0\n\
+ movs r0, 0x8\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ bne _0811ADF6\n\
+ movs r0, 0x40\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _0811AD04\n\
+ ldr r2, =gEasyChatScreen\n\
+ ldr r1, [r2]\n\
+ ldrb r0, [r1, 0x6]\n\
+ subs r0, 0x1\n\
+ strb r0, [r1, 0x6]\n\
+_0811AD6E:\n\
+ adds r6, r2, 0\n\
+_0811AD70:\n\
+ adds r5, r6, 0\n\
+ ldr r4, [r5]\n\
+ movs r3, 0x6\n\
+ ldrsb r3, [r4, r3]\n\
+ ldr r2, =gEasyChatScreenTemplates\n\
+ ldrb r1, [r4, 0x1]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ adds r1, r0, r2\n\
+ ldrb r0, [r1, 0x2]\n\
+ cmp r3, r0\n\
+ bne _0811AE00\n\
+ bl sub_811BA3C\n\
+ movs r2, 0x3\n\
+ cmp r0, 0\n\
+ beq _0811AD96\n\
+ movs r2, 0x4\n\
+_0811AD96:\n\
+ ldr r1, [r5]\n\
+ movs r0, 0x5\n\
+ ldrsb r0, [r1, r0]\n\
+ cmp r0, 0\n\
+ bge _0811ADA4\n\
+ subs r0, r2, 0x1\n\
+ strb r0, [r1, 0x5]\n\
+_0811ADA4:\n\
+ ldr r1, [r5]\n\
+ movs r0, 0x5\n\
+ ldrsb r0, [r1, r0]\n\
+ cmp r0, r2\n\
+ blt _0811ADB2\n\
+ movs r0, 0\n\
+ strb r0, [r1, 0x5]\n\
+_0811ADB2:\n\
+ movs r0, 0x3\n\
+ b _0811AE32\n\
+ .pool\n\
+_0811ADC0:\n\
+ ldr r2, =gEasyChatScreen\n\
+ ldr r1, [r2]\n\
+ ldrb r0, [r1, 0x5]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1, 0x5]\n\
+ b _0811AD6E\n\
+ .pool\n\
+_0811ADD0:\n\
+ ldr r1, =gEasyChatScreen\n\
+ ldr r0, [r1]\n\
+ strb r3, [r0, 0x6]\n\
+ adds r6, r1, 0\n\
+ b _0811AD70\n\
+ .pool\n\
+_0811ADE0:\n\
+ ldr r2, =gEasyChatScreen\n\
+ ldr r1, [r2]\n\
+ ldrb r0, [r1, 0x5]\n\
+ subs r0, 0x1\n\
+ strb r0, [r1, 0x5]\n\
+ b _0811AD6E\n\
+ .pool\n\
+_0811ADF0:\n\
+ bl sub_811B150\n\
+ b _0811ADFA\n\
+_0811ADF6:\n\
+ bl sub_811B1B4\n\
+_0811ADFA:\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ b _0811AE32\n\
+_0811AE00:\n\
+ movs r0, 0x5\n\
+ ldrsb r0, [r4, r0]\n\
+ ldrb r1, [r1, 0x1]\n\
+ cmp r0, r1\n\
+ blt _0811AE0E\n\
+ subs r0, r1, 0x1\n\
+ strb r0, [r4, 0x5]\n\
+_0811AE0E:\n\
+ bl sub_811AB44\n\
+ cmp r0, 0\n\
+ beq _0811AE28\n\
+ ldr r2, [r6]\n\
+ ldr r0, [r2, 0x4]\n\
+ ldr r1, =0x00ffff00\n\
+ ands r0, r1\n\
+ ldr r1, =0x00040100\n\
+ cmp r0, r1\n\
+ bne _0811AE28\n\
+ movs r0, 0\n\
+ strb r0, [r2, 0x5]\n\
+_0811AE28:\n\
+ ldr r0, =gEasyChatScreen\n\
+ ldr r1, [r0]\n\
+ movs r0, 0\n\
+ strb r0, [r1, 0x4]\n\
+ movs r0, 0x2\n\
+_0811AE32:\n\
+ pop {r4-r6}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .pool");
+}
+#endif // NONMATCHING
+
+static u16 sub_811AE44(void)
+{
+ if (gMain.newKeys & B_BUTTON)
+ return sub_811B32C();
+
+ if (gMain.newKeys & A_BUTTON)
{
- if (gUnknown_0203A118->unk_05 > 2)
+ if (gEasyChatScreen->unk_0a != -1)
+ return sub_811B2B0();
+
+ switch (gEasyChatScreen->unk_0b)
{
- gUnknown_0203A118->unk_05 = 2;
+ case 0:
+ return sub_811B33C();
+ case 1:
+ return sub_811B368();
+ case 2:
+ return sub_811B32C();
}
- gUnknown_0203A118->unk_04 = 1;
- return 3;
}
- /*
- * FIXME: right, down, left, b, and start
- * should be inserted here, but aren't
- */
- if (gUnknown_0203A118->unk_05 < 0)
+
+ if (gMain.newKeys & SELECT_BUTTON)
+ return sub_811B33C();
+
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ return sub_811B528(2);
+
+ if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ return sub_811B528(3);
+
+ if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ return sub_811B528(1);
+
+ if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ return sub_811B528(0);
+
+ return 0;
+}
+
+static u16 sub_811AF00(void)
+{
+ if (gMain.newKeys & B_BUTTON)
{
- gUnknown_0203A118->unk_05 = gUnknown_08597550[gUnknown_0203A118->unk_01].unk_01 - 1;
+ gEasyChatScreen->state = 2;
+ return 14;
}
- if (gUnknown_0203A118->unk_05 >= gUnknown_08597550[gUnknown_0203A118->unk_01].unk_01)
+
+ if (gMain.newKeys & A_BUTTON)
+ return sub_811B394();
+
+ if (gMain.newKeys & START_BUTTON)
+ return sub_811B794(4);
+
+ if (gMain.newKeys & SELECT_BUTTON)
+ return sub_811B794(5);
+
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ return sub_811B794(2);
+
+ if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ return sub_811B794(3);
+
+ if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ return sub_811B794(1);
+
+ if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ return sub_811B794(0);
+
+ return 0;
+}
+
+static u16 sub_811AF8C(void)
+{
+ u8 var0;
+
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
{
- gUnknown_0203A118->unk_05 = 0;
+ case MENU_B_PRESSED: // B Button
+ case 1: // No
+ gEasyChatScreen->state = sub_811B2A4();
+ return 7;
+ case 0: // Yes
+ gSpecialVar_Result = 0;
+ var0 = gEasyChatScreen->kind - 17;
+ if (var0 < 2)
+ sub_811B3E4();
+
+ return 24;
+ default:
+ return 0;
}
- if (sub_811AB44() && gUnknown_0203A118->unk_05 == 1 && gUnknown_0203A118->unk_06 == 4)
+}
+
+static u16 sub_811AFEC(void)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
{
- gUnknown_0203A118->unk_05 = 0;
+ case MENU_B_PRESSED: // B Button
+ case 1: // No
+ gEasyChatScreen->state = sub_811B2A4();
+ return 7;
+ case 0: // Yes
+ sub_811BE9C();
+ gSpecialVar_Result = sub_811B4EC();
+ sub_811B3E4();
+ return 24;
+ default:
+ return 0;
}
- return 2;
}
-#else
-__attribute__((naked)) static u16 sub_811AB68(void)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tldr r0, =gMain\n"
- "\tldrh r1, [r0, 0x2E]\n"
- "\tmovs r0, 0x1\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbeq _0811ABB8\n"
- "\tbl sub_811BF78\n"
- "\tldr r1, =gUnknown_0203A118\n"
- "\tldr r3, [r1]\n"
- "\tmovs r2, 0\n"
- "\tmovs r0, 0x2\n"
- "\tstrb r0, [r3, 0x4]\n"
- "\tldr r0, [r1]\n"
- "\tstrb r2, [r0, 0xA]\n"
- "\tldr r0, [r1]\n"
- "\tstrb r2, [r0, 0xB]\n"
- "\tldr r0, [r1]\n"
- "\tstrb r2, [r0, 0xC]\n"
- "\tmovs r0, 0x9\n"
- "\tb _0811ACCC_return_r0\n"
- "\t.pool\n"
- "_0811AB9C:\n"
- "\tmovs r0, 0x20\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbne _0811AC68_dpad_left\n"
- "\tmovs r0, 0x80\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbne _0811AC58_dpad_down\n"
- "\tmovs r0, 0x10\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbne _0811AC48_dpad_right\n"
- "\tmovs r0, 0\n"
- "\tb _0811ACCC_return_r0\n"
- "_0811ABB8:\n"
- "\tmovs r0, 0x2\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbne _0811AC78_b_button\n"
- "\tmovs r0, 0x8\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbne _0811AC7E_start_button\n"
- "\tmovs r0, 0x40\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbeq _0811AB9C\n"
- "\tldr r2, =gUnknown_0203A118\n"
- "\tldr r1, [r2]\n"
- "\tldrb r0, [r1, 0x6]\n"
- "\tsubs r0, 0x1\n"
- "_0811ABD8:\n"
- "\tstrb r0, [r1, 0x6]\n"
- "_0811ABDA:\n"
- "\tadds r7, r2, 0\n"
- "\tadds r4, r7, 0\n"
- "\tldr r2, [r4]\n"
- "\tmovs r0, 0x6\n"
- "\tldrsb r0, [r2, r0]\n"
- "\tldr r6, =gUnknown_08597550\n"
- "\tcmp r0, 0\n"
- "\tbge _0811ABF8\n"
- "\tldrb r0, [r2, 0x1]\n"
- "\tlsls r1, r0, 1\n"
- "\tadds r1, r0\n"
- "\tlsls r1, 3\n"
- "\tadds r1, r6\n"
- "\tldrb r0, [r1, 0x2]\n"
- "\tstrb r0, [r2, 0x6]\n"
- "_0811ABF8:\n"
- "\tldr r3, [r4]\n"
- "\tmovs r2, 0x6\n"
- "\tldrsb r2, [r3, r2]\n"
- "\tadds r5, r6, 0\n"
- "\tldrb r1, [r3, 0x1]\n"
- "\tlsls r0, r1, 1\n"
- "\tadds r0, r1\n"
- "\tlsls r0, 3\n"
- "\tadds r0, r5\n"
- "\tldrb r0, [r0, 0x2]\n"
- "\tcmp r2, r0\n"
- "\tble _0811AC14\n"
- "\tmovs r0, 0\n"
- "\tstrb r0, [r3, 0x6]\n"
- "_0811AC14:\n"
- "\tldr r3, [r4]\n"
- "\tmovs r2, 0x6\n"
- "\tldrsb r2, [r3, r2]\n"
- "\tldrb r1, [r3, 0x1]\n"
- "\tlsls r0, r1, 1\n"
- "\tadds r0, r1\n"
- "\tlsls r0, 3\n"
- "\tadds r1, r0, r5\n"
- "\tldrb r0, [r1, 0x2]\n"
- "\tcmp r2, r0\n"
- "\tbne _0811AC88\n"
- "\tmovs r0, 0x5\n"
- "\tldrsb r0, [r3, r0]\n"
- "\tcmp r0, 0x2\n"
- "\tble _0811AC36\n"
- "\tmovs r0, 0x2\n"
- "\tstrb r0, [r3, 0x5]\n"
- "_0811AC36:\n"
- "\tldr r1, [r4]\n"
- "\tmovs r0, 0x1\n"
- "\tstrb r0, [r1, 0x4]\n"
- "\tmovs r0, 0x3\n"
- "\tb _0811ACCC_return_r0\n"
- "\t.pool\n"
- "_0811AC48_dpad_right:\n"
- "\tldr r2, =gUnknown_0203A118\n"
- "\tldr r1, [r2]\n"
- "\tldrb r0, [r1, 0x5]\n"
- "\tadds r0, 0x1\n"
- "\tstrb r0, [r1, 0x5]\n"
- "\tb _0811ABDA\n"
- "\t.pool\n"
- "_0811AC58_dpad_down:\n"
- "\tldr r2, =gUnknown_0203A118\n"
- "\tldr r1, [r2]\n"
- "\tldrb r0, [r1, 0x6]\n"
- "\tadds r0, 0x1\n"
- "\tb _0811ABD8\n"
- "\t.pool\n"
- "_0811AC68_dpad_left:\n"
- "\tldr r2, =gUnknown_0203A118\n"
- "\tldr r1, [r2]\n"
- "\tldrb r0, [r1, 0x5]\n"
- "\tsubs r0, 0x1\n"
- "\tstrb r0, [r1, 0x5]\n"
- "\tb _0811ABDA\n"
- "\t.pool\n"
- "_0811AC78_b_button:\n"
- "\tbl sub_811B150\n"
- "\tb _0811AC82\n"
- "_0811AC7E_start_button:\n"
- "\tbl sub_811B1B4\n"
- "_0811AC82:\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tb _0811ACCC_return_r0\n"
- "_0811AC88:\n"
- "\tmovs r0, 0x5\n"
- "\tldrsb r0, [r3, r0]\n"
- "\tcmp r0, 0\n"
- "\tbge _0811AC96\n"
- "\tldrb r0, [r1, 0x1]\n"
- "\tsubs r0, 0x1\n"
- "\tstrb r0, [r3, 0x5]\n"
- "_0811AC96:\n"
- "\tldr r3, [r4]\n"
- "\tmovs r2, 0x5\n"
- "\tldrsb r2, [r3, r2]\n"
- "\tldrb r1, [r3, 0x1]\n"
- "\tlsls r0, r1, 1\n"
- "\tadds r0, r1\n"
- "\tlsls r0, 3\n"
- "\tadds r0, r6\n"
- "\tldrb r0, [r0, 0x1]\n"
- "\tcmp r2, r0\n"
- "\tblt _0811ACB0\n"
- "\tmovs r0, 0\n"
- "\tstrb r0, [r3, 0x5]\n"
- "_0811ACB0:\n"
- "\tbl sub_811AB44\n"
- "\tcmp r0, 0\n"
- "\tbeq _0811ACCA\n"
- "\tldr r2, [r7]\n"
- "\tldr r0, [r2, 0x4]\n"
- "\tldr r1, =0x00ffff00\n"
- "\tands r0, r1\n"
- "\tldr r1, =0x00040100\n"
- "\tcmp r0, r1\n"
- "\tbne _0811ACCA\n"
- "\tmovs r0, 0\n"
- "\tstrb r0, [r2, 0x5]\n"
- "_0811ACCA:\n"
- "\tmovs r0, 0x2\n"
- "_0811ACCC_return_r0:\n"
- "\tpop {r4-r7}\n"
- "\tpop {r1}\n"
- "\tbx r1\n"
- "\t.pool");
-}
-#endif
+
+static u16 sub_811B040(void)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case MENU_B_PRESSED: // B Button
+ case 1: // No
+ gEasyChatScreen->state = 1;
+ return 7;
+ case 0: // Yes
+ sub_811B418();
+ gEasyChatScreen->state = 1;
+ return 8;
+ default:
+ return 0;
+ }
+}
+
+static u16 sub_811B08C(void)
+{
+ if (gMain.newKeys & A_BUTTON)
+ return 26;
+
+ if (gMain.newKeys & B_BUTTON)
+ return sub_811B150();
+
+ return 0;
+}
+
+static u16 sub_811B0BC(void)
+{
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ gEasyChatScreen->state = sub_811B2A4();
+ return 7;
+ }
+
+ return 0;
+}
+
+static u16 sub_811B0E8(void)
+{
+ gEasyChatScreen->state = 10;
+ return 6;
+}
+
+static u16 sub_811B0F8(void)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case MENU_B_PRESSED: // B Button
+ case 1: // No
+ sub_811B454();
+ gEasyChatScreen->unk_08 = 0;
+ gEasyChatScreen->state = 8;
+ return 31;
+ case 0: // Yes
+ gSpecialVar_Result = sub_811B4EC();
+ sub_811B3E4();
+ return 24;
+ default:
+ return 0;
+ }
+}
+
+static u16 sub_811B150(void)
+{
+ if (gEasyChatScreen->kind == 19 || gEasyChatScreen->kind == 11)
+ {
+ gEasyChatScreen->unk_08 = gEasyChatScreen->state;
+ gEasyChatScreen->state = 8;
+ return 34;
+ }
+ else
+ {
+ gEasyChatScreen->unk_08 = gEasyChatScreen->state;
+ gEasyChatScreen->state = 4;
+ return 5;
+ }
+}
+
+int sub_811B184(void)
+{
+ gEasyChatScreen->unk_08 = gEasyChatScreen->state;
+ if (gEasyChatScreen->kind != 6)
+ {
+ gEasyChatScreen->state = 5;
+ return 4;
+ }
+ else
+ {
+ gEasyChatScreen->unk_08 = gEasyChatScreen->state;
+ gEasyChatScreen->state = 8;
+ return 32;
+ }
+}
+
+u16 sub_811B1B4(void)
+{
+ gEasyChatScreen->unk_08 = gEasyChatScreen->state;
+ if (gEasyChatScreen->kind == 17)
+ {
+ if (sub_811BD64())
+ {
+ gEasyChatScreen->state = 8;
+ return 29;
+ }
+
+ if (sub_811BDB0())
+ {
+ gEasyChatScreen->state = 8;
+ return 30;
+ }
+
+ gEasyChatScreen->state = 6;
+ return 6;
+ }
+ else if (gEasyChatScreen->kind == 18)
+ {
+ if (sub_811BDB0())
+ {
+ gEasyChatScreen->state = 8;
+ return 30;
+ }
+
+ if (sub_811BD64())
+ {
+ gEasyChatScreen->state = 8;
+ return 29;
+ }
+
+ gEasyChatScreen->state = 6;
+ return 6;
+ }
+ else if (gEasyChatScreen->kind == 9 || gEasyChatScreen->kind == 13)
+ {
+ if (!sub_811BD2C())
+ {
+ gEasyChatScreen->state = 8;
+ return 33;
+ }
+
+ gEasyChatScreen->state = 6;
+ return 6;
+ }
+ else if (gEasyChatScreen->kind == 19 || gEasyChatScreen->kind == 11)
+ {
+ if (sub_811BCF4())
+ {
+ gEasyChatScreen->state = 8;
+ return 34;
+ }
+
+ gEasyChatScreen->state = 6;
+ return 6;
+ }
+ else if (gEasyChatScreen->kind == 20)
+ {
+ gEasyChatScreen->state = 6;
+ return 6;
+ }
+ else
+ {
+ if (sub_811BCF4() == 1 || !sub_811B4EC())
+ {
+ gEasyChatScreen->state = 4;
+ return 5;
+ }
+
+ gEasyChatScreen->state = 6;
+ return 6;
+ }
+}
+
+int sub_811B264(void)
+{
+ gEasyChatScreen->unk_08 = gEasyChatScreen->state;
+ switch (gEasyChatScreen->kind)
+ {
+ case 15:
+ return 25;
+ case 17:
+ sub_811B3E4();
+ return 28;
+ case 18:
+ sub_811B3E4();
+ return 27;
+ default:
+ return 0;
+ }
+}
+
+static u8 sub_811B2A4(void)
+{
+ return gEasyChatScreen->unk_08;
+}
+
+static int sub_811B2B0(void)
+{
+ u16 var1;
+
+ if (gEasyChatScreen->unk_09 == 0)
+ {
+ u8 var0 = sub_811F3B8(sub_811B8E8());
+ sub_811F548(0, var0);
+ }
+ else
+ {
+ sub_811F548(1, sub_811B908());
+ }
+
+ var1 = sub_811F5B0();
+ if (var1 == 0)
+ return 0;
+
+ gEasyChatScreen->unk_0f = (var1 - 1) / 2;
+ gEasyChatScreen->unk_0e = 0;
+ gEasyChatScreen->unk_10 = 0;
+ gEasyChatScreen->unk_11 = 0;
+ gEasyChatScreen->state = 3;
+ return 11;
+}
+
+static int sub_811B32C(void)
+{
+ gEasyChatScreen->state = 0;
+ return 10;
+}
+
+static int sub_811B33C(void)
+{
+ gEasyChatScreen->unk_0a = 0;
+ gEasyChatScreen->unk_0b = 0;
+ gEasyChatScreen->unk_0c = 0;
+ if (!gEasyChatScreen->unk_09)
+ gEasyChatScreen->unk_09 = 1;
+ else
+ gEasyChatScreen->unk_09 = 0;
+
+ return 23;
+}
+
+static int sub_811B368(void)
+{
+ if (gEasyChatScreen->kind == 6)
+ {
+ PlaySE(SE_HAZURE);
+ return 0;
+ }
+ else
+ {
+ sub_811B488(0xFFFF);
+ return 1;
+ }
+}
+
+static int sub_811B394(void)
+{
+ u16 easyChatWord = sub_811F578(sub_811B940());
+ if (sub_811BF88(easyChatWord))
+ {
+ PlaySE(SE_HAZURE);
+ return 0;
+ }
+ else
+ {
+ sub_811B488(easyChatWord);
+ if (gEasyChatScreen->kind != 6)
+ {
+ gEasyChatScreen->state = 0;
+ return 12;
+ }
+ else
+ {
+ gEasyChatScreen->state = 9;
+ return 13;
+ }
+ }
+}
+
+static void sub_811B3E4(void)
+{
+ int i;
+ for (i = 0; i < gEasyChatScreen->unk_07; i++)
+ gEasyChatScreen->words[i] = gEasyChatScreen->ecWordBuffer[i];
+}
+
+static void sub_811B418(void)
+{
+ int i;
+ for (i = 0; i < gEasyChatScreen->unk_07; i++)
+ gEasyChatScreen->ecWordBuffer[i] = 0xFFFF;
+}
+
+static void sub_811B454(void)
+{
+ int i;
+ for (i = 0; i < gEasyChatScreen->unk_07; i++)
+ gEasyChatScreen->ecWordBuffer[i] = gEasyChatScreen->words[i];
+}
+
+static void sub_811B488(u16 easyChatWord)
+{
+ u16 index = sub_811B8C8();
+ gEasyChatScreen->ecWordBuffer[index] = easyChatWord;
+}
+
+static u8 sub_811B4AC(void)
+{
+ u16 i;
+ for (i = 0; i < gEasyChatScreen->unk_07; i++)
+ {
+ if (gEasyChatScreen->ecWordBuffer[i] != gEasyChatScreen->words[i])
+ return 1;
+ }
+
+ return 0;
+}
+
+static int sub_811B4EC(void)
+{
+ u8 var0 = gEasyChatScreen->kind - 17;
+ if (var0 < 2)
+ {
+ if (sub_811BD64())
+ return 0;
+
+ if (sub_811BDB0())
+ return 0;
+
+ return 1;
+ }
+ else
+ {
+ return sub_811B4AC();
+ }
+}
+
+static u16 sub_811B528(int arg0)
+{
+ if (gEasyChatScreen->unk_0a != -1)
+ {
+ if (gEasyChatScreen->unk_09 == 0)
+ return sub_811B568(arg0);
+ else
+ return sub_811B634(arg0);
+ }
+ else
+ {
+ return sub_811B6C4(arg0);
+ }
+}
+
+static int sub_811B568(u32 arg0)
+{
+ switch (arg0)
+ {
+ case 2:
+ if (gEasyChatScreen->unk_0b != -gEasyChatScreen->unk_0c)
+ {
+ if (gEasyChatScreen->unk_0b)
+ {
+ gEasyChatScreen->unk_0b--;
+ return 15;
+ }
+ else
+ {
+ gEasyChatScreen->unk_0c--;
+ return 17;
+ }
+ }
+ break;
+ case 3:
+ if (gEasyChatScreen->unk_0b + gEasyChatScreen->unk_0c < gEasyChatScreen->unk_0d - 1)
+ {
+ int var0;
+ if (gEasyChatScreen->unk_0b < 3)
+ {
+ gEasyChatScreen->unk_0b++;
+ var0 = 15;
+ }
+ else
+ {
+ gEasyChatScreen->unk_0c++;
+ var0 = 16;
+ }
+
+ sub_811B978();
+ return var0;
+ }
+ break;
+ case 1:
+ if (gEasyChatScreen->unk_0a)
+ gEasyChatScreen->unk_0a--;
+ else
+ sub_811B744();
+
+ return 15;
+ case 0:
+ if (gEasyChatScreen->unk_0a < 1)
+ {
+ gEasyChatScreen->unk_0a++;
+ if (sub_811B9C8())
+ sub_811B744();
+ }
+ else
+ {
+ sub_811B744();
+ }
+ return 15;
+ }
+
+ return 0;
+}
+
+static int sub_811B634(u32 arg0)
+{
+ switch (arg0)
+ {
+ case 2:
+ if (gEasyChatScreen->unk_0b > 0)
+ gEasyChatScreen->unk_0b--;
+ else
+ gEasyChatScreen->unk_0b = 3;
+
+ sub_811B978();
+ return 15;
+ case 3:
+ if (gEasyChatScreen->unk_0b < 3)
+ gEasyChatScreen->unk_0b++;
+ else
+ gEasyChatScreen->unk_0b = 0;
+
+ sub_811B978();
+ return 15;
+ case 0:
+ gEasyChatScreen->unk_0a++;
+ if (sub_811B9C8())
+ sub_811B744();
+
+ return 15;
+ case 1:
+ gEasyChatScreen->unk_0a--;
+ if (gEasyChatScreen->unk_0a < 0)
+ sub_811B744();
+
+ return 15;
+ }
+
+ return 0;
+}
+
+static int sub_811B6C4(u32 arg0)
+{
+ switch (arg0)
+ {
+ case 2:
+ if (gEasyChatScreen->unk_0b)
+ gEasyChatScreen->unk_0b--;
+ else
+ gEasyChatScreen->unk_0b = 2;
+
+ return 15;
+ case 3:
+ if (gEasyChatScreen->unk_0b < 2)
+ gEasyChatScreen->unk_0b++;
+ else
+ gEasyChatScreen->unk_0b = 0;
+
+ return 15;
+ case 1:
+ gEasyChatScreen->unk_0b++;
+ sub_811B768();
+ return 15;
+ case 0:
+ gEasyChatScreen->unk_0a = 0;
+ gEasyChatScreen->unk_0b++;
+ return 15;
+ }
+
+ return 0;
+}
+
+static void sub_811B744(void)
+{
+ gEasyChatScreen->unk_0a = 0xFF;
+ if (gEasyChatScreen->unk_0b)
+ gEasyChatScreen->unk_0b--;
+}
+
+static void sub_811B768(void)
+{
+ if (gEasyChatScreen->unk_09 == 0)
+ {
+ gEasyChatScreen->unk_0a = 1;
+ sub_811B978();
+ }
+ else
+ {
+ gEasyChatScreen->unk_0a = sub_811B960(gEasyChatScreen->unk_0b);
+ }
+}
+
+static u16 sub_811B794(u32 arg0)
+{
+ u16 result;
+ switch (arg0)
+ {
+ case 2:
+ if (gEasyChatScreen->unk_11 + gEasyChatScreen->unk_0e > 0)
+ {
+ if (gEasyChatScreen->unk_11 > 0)
+ {
+ gEasyChatScreen->unk_11--;
+ result = 18;
+ }
+ else
+ {
+ gEasyChatScreen->unk_0e--;
+ result = 19;
+ }
+
+ sub_811B9A0();
+ return result;
+ }
+ break;
+ case 3:
+ if (gEasyChatScreen->unk_11 + gEasyChatScreen->unk_0e < gEasyChatScreen->unk_0f)
+ {
+ if (gEasyChatScreen->unk_11 < 3)
+ {
+ gEasyChatScreen->unk_11++;
+ result = 18;
+ }
+ else
+ {
+ gEasyChatScreen->unk_0e++;
+ result = 20;
+ }
+
+ sub_811B9A0();
+ return result;
+ }
+ break;
+ case 1:
+ if (gEasyChatScreen->unk_10 > 0)
+ gEasyChatScreen->unk_10--;
+ else
+ gEasyChatScreen->unk_10 = 1;
+
+ sub_811B9A0();
+ return 18;
+ case 0:
+ if (gEasyChatScreen->unk_10 < 1)
+ {
+ gEasyChatScreen->unk_10++;
+ if (sub_811BA1C())
+ gEasyChatScreen->unk_10 = 0;
+ }
+ else
+ {
+ gEasyChatScreen->unk_10 = 0;
+ }
+ return 18;
+ case 4:
+ if (gEasyChatScreen->unk_0e)
+ {
+ if (gEasyChatScreen->unk_0e > 3)
+ gEasyChatScreen->unk_0e -= 4;
+ else
+ gEasyChatScreen->unk_0e = 0;
+
+ return 21;
+ }
+ break;
+ case 5:
+ if (gEasyChatScreen->unk_0e <= gEasyChatScreen->unk_0f - 4)
+ {
+ gEasyChatScreen->unk_0e += 4;
+ if (gEasyChatScreen->unk_0e > gEasyChatScreen->unk_0f - 3)
+ gEasyChatScreen->unk_0e = gEasyChatScreen->unk_0f + 0xFD;
+
+ sub_811B9A0();
+ return 22;
+ }
+ break;
+ }
+
+ return 0;
+}
+
+static u16 sub_811B8C8(void)
+{
+ return (gEasyChatScreen->mainCursorRow * gEasyChatScreen->numColumns) + gEasyChatScreen->mainCursorColumn;
+}
+
+static u16 sub_811B8E8(void)
+{
+ return 2 * (gEasyChatScreen->unk_0b + gEasyChatScreen->unk_0c) + gEasyChatScreen->unk_0a;
+}
+
+static int sub_811B908(void)
+{
+ int var0 = (u8)gEasyChatScreen->unk_0a < 7 ? gEasyChatScreen->unk_0a : 0;
+ int var1 = (u8)gEasyChatScreen->unk_0b < 4 ? gEasyChatScreen->unk_0b : 0;
+ return gUnknown_08597748[var1][var0];
+}
+
+u16 sub_811B940(void)
+{
+ return 2 * (gEasyChatScreen->unk_11 + gEasyChatScreen->unk_0e) + gEasyChatScreen->unk_10;
+}
+
+static u8 sub_811B960(u8 arg0)
+{
+ switch (arg0)
+ {
+ case 0:
+ default:
+ return 6;
+ case 1:
+ return 5;
+ }
+}
+
+static void sub_811B978(void)
+{
+ while (sub_811B9C8())
+ {
+ if (gEasyChatScreen->unk_0a)
+ gEasyChatScreen->unk_0a--;
+ else
+ break;
+ }
+}
+
+static void sub_811B9A0(void)
+{
+ while (sub_811BA1C())
+ {
+ if (gEasyChatScreen->unk_10)
+ gEasyChatScreen->unk_10--;
+ else
+ break;
+ }
+}
+
+static u8 sub_811B9C8(void)
+{
+ if (gEasyChatScreen->unk_09 == 0)
+ return sub_811B8E8() >= sub_811F3AC() ? 1 : 0;
+ else
+ return gEasyChatScreen->unk_0a > sub_811B960(gEasyChatScreen->unk_0b) ? 1 : 0;
+}
+
+static u8 sub_811BA1C(void)
+{
+ return sub_811B940() >= sub_811F5B0() ? 1 : 0;
+}
+
+int sub_811BA3C(void)
+{
+ return gEasyChatScreenTemplates[gEasyChatScreen->templateId].unk_03_7;
+}
+
+u8 sub_811BA5C(void)
+{
+ return gEasyChatScreen->kind;
+}
+
+u8 sub_811BA68(void)
+{
+ return gEasyChatScreenTemplates[gEasyChatScreen->templateId].unk_03_0;
+}
+
+const u8 *sub_811BA88(void)
+{
+ return gEasyChatScreen->titleText;
+}
+
+u16 *sub_811BA94(void)
+{
+ return gEasyChatScreen->ecWordBuffer;
+}
+
+u8 sub_811BAA0(void)
+{
+ return gEasyChatScreen->numRows;
+}
+
+u8 sub_811BAAC(void)
+{
+ return gEasyChatScreen->numColumns;
+}
+
+u8 sub_811BAB8(void)
+{
+ return gEasyChatScreen->mainCursorColumn;
+}
+
+u8 sub_811BAC4(void)
+{
+ return gEasyChatScreen->mainCursorRow;
+}
+
+static void GetEasyChatInstructionsText(const u8 **str1, const u8 **str2)
+{
+ *str1 = gEasyChatScreenTemplates[gEasyChatScreen->templateId].instructionsText1;
+ *str2 = gEasyChatScreenTemplates[gEasyChatScreen->templateId].instructionsText2;
+}
+
+static void GetEasyChatConfirmText(const u8 **str1, const u8 **str2)
+{
+ *str1 = gEasyChatScreenTemplates[gEasyChatScreen->templateId].confirmText1;
+ *str2 = gEasyChatScreenTemplates[gEasyChatScreen->templateId].confirmText2;
+}
+
+static void sub_811BB40(const u8 **str1, const u8 **str2)
+{
+ switch (gEasyChatScreen->kind)
+ {
+ case 4:
+ *str1 = gText_StopGivingPkmnMail;
+ *str2 = NULL;
+ break;
+ case 15:
+ case 16:
+ *str1 = gText_LikeToQuitQuiz;
+ *str2 = gText_ChallengeQuestionMark;
+ break;
+ default:
+ *str1 = gText_QuitEditing;
+ *str2 = NULL;
+ break;
+ }
+
+}
+
+static void GetEasyChatConfirmDeletionText(const u8 **str1, const u8 **str2)
+{
+ *str1 = gText_AllTextBeingEditedWill;
+ *str2 = gText_BeDeletedThatOkay;
+}
+
+void sub_811BB9C(u8 *arg0, u8 *arg1)
+{
+ *arg0 = gEasyChatScreen->unk_0a;
+ *arg1 = gEasyChatScreen->unk_0b;
+}
+
+u8 sub_811BBB0(void)
+{
+ return gEasyChatScreen->unk_09;
+}
+
+u8 sub_811BBBC(void)
+{
+ return gEasyChatScreen->unk_0c;
+}
+
+void sub_811BBC8(u8 *arg0, u8 *arg1)
+{
+ *arg0 = gEasyChatScreen->unk_10;
+ *arg1 = gEasyChatScreen->unk_11;
+}
+
+u8 sub_811BBDC(void)
+{
+ return gEasyChatScreen->unk_0e;
+}
+
+u8 sub_811BBE8(void)
+{
+ return gEasyChatScreen->unk_0f;
+}
+
+static u8 unref_sub_811BBF4(void)
+{
+ return 0;
+}
+
+int sub_811BBF8(void)
+{
+ switch (gEasyChatScreen->state)
+ {
+ case 2:
+ if (gEasyChatScreen->unk_09 == 0 && gEasyChatScreen->unk_0c)
+ return 1;
+ break;
+ case 3:
+ if (gEasyChatScreen->unk_0e)
+ return 1;
+ break;
+ }
+
+ return 0;
+}
+
+int sub_811BC2C(void)
+{
+ switch (gEasyChatScreen->state)
+ {
+ case 2:
+ if (gEasyChatScreen->unk_09 == 0 && gEasyChatScreen->unk_0c + 4 <= gEasyChatScreen->unk_0d - 1)
+ return 1;
+ break;
+ case 3:
+ if (gEasyChatScreen->unk_0e + 4 <= gEasyChatScreen->unk_0f)
+ return 1;
+ break;
+ }
+
+ return 0;
+}
+
+static int sub_811BC70(void)
+{
+ return sub_811BA3C();
+}
+
+u8 sub_811BC7C(const u16 *arg0, u8 arg1)
+{
+ u8 i;
+
+ for (i = 0; i < arg1; i++)
+ {
+ if (arg0[i] != gEasyChatScreen->ecWordBuffer[i])
+ return 1;
+ }
+
+ return 0;
+}
+
+u8 sub_811BCBC(void)
+{
+ return gEasyChatScreen->sizeParam;
+}
+
+static u8 sub_811BCC8(u8 entryType)
+{
+ u32 i;
+
+ for (i = 0; i < ARRAY_COUNT(gEasyChatScreenTemplates); i++)
+ {
+ if (gEasyChatScreenTemplates[i].unk_00 == entryType)
+ return i;
+ }
+
+ return 0;
+}
+
+int sub_811BCF4(void)
+{
+ int i;
+
+ for (i = 0; i < gEasyChatScreen->unk_07; i++)
+ {
+ if (gEasyChatScreen->ecWordBuffer[i] != 0xFFFF)
+ return 0;
+ }
+
+ return 1;
+}
+
+static int sub_811BD2C(void)
+{
+ int i;
+
+ for (i = 0; i < gEasyChatScreen->unk_07; i++)
+ {
+ if (gEasyChatScreen->ecWordBuffer[i] == 0xFFFF)
+ return 0;
+ }
+
+ return 1;
+}
+
+static int sub_811BD64(void)
+{
+ int i;
+ struct SaveBlock1 *saveBlock1;
+
+ if (gEasyChatScreen->kind == 17)
+ return sub_811BCF4();
+
+ saveBlock1 = gSaveBlock1Ptr;
+ for (i = 0; i < 9; i++)
+ {
+ if (saveBlock1->lilycoveLady.quiz.unk_002[i] != 0xFFFF)
+ return 0;
+ }
+
+ return 1;
+}
+
+static int sub_811BDB0(void)
+{
+ struct LilycoveLadyQuiz *quiz;
+ if (gEasyChatScreen->kind == 18)
+ return sub_811BCF4();
+
+ quiz = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ return quiz->unk_014 == 0xFFFF ? 1 : 0;
+}
+
+static void sub_811BDF0(u8 *arg0)
+{
+ u8 name[32];
+ struct SaveBlock1 *saveBlock1 = gSaveBlock1Ptr;
+ DynamicPlaceholderTextUtil_Reset();
+ if (StringLength(saveBlock1->lilycoveLady.quiz.playerName) != 0)
+ {
+ TVShowConvertInternationalString(name, saveBlock1->lilycoveLady.quiz.playerName, saveBlock1->lilycoveLady.quiz.language);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, name);
+ }
+ else
+ {
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gText_Lady);
+ }
+
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(arg0, gText_F700sQuiz);
+}
+
+static void sub_811BE54(void)
+{
+ int i;
+ u16 *ecWord;
+ u8 *str;
+
+ ecWord = gEasyChatScreen->ecWordBuffer;
+ str = gStringVar2;
+ i = 0;
+ while (i < gEasyChatScreen->unk_07)
+ {
+ str = CopyEasyChatWordPadded(str, *ecWord, 0);
+ *str = 0;
+ str++;
+ ecWord++;
+ i++;
+ }
+
+ str--;
+ str[0] = 0xFF;
+}
+
+static void sub_811BE9C(void)
+{
+ switch (gEasyChatScreen->kind)
+ {
+ case 0:
+ FlagSet(FLAG_SYS_CHAT_USED);
+ break;
+ case 20:
+ if (sub_811BF20())
+ gSpecialVar_0x8004 = 2;
+ else
+ gSpecialVar_0x8004 = 0;
+ break;
+ case 9:
+ sub_811BE54();
+ gSpecialVar_0x8004 = sub_81226D8(gEasyChatScreen->ecWordBuffer);
+ break;
+ case 13:
+ gSpecialVar_0x8004 = sub_811BF40();
+ break;
+ }
+}
+
+static int sub_811BF20(void)
+{
+ return sub_811BC7C(gUnknown_08597764, 4) == 0;
+}
+
+static u16 sub_811BF40(void)
+{
+ int i;
+ for (i = 0; i < 5; i++)
+ {
+ if (!sub_811BC7C(gUnknown_0859776C[i], 2))
+ return i + 1;
+ }
+
+ return 0;
+}
+
+void sub_811BF78(void)
+{
+ gEasyChatScreen->unk_13 = 0;
+}
+
+int sub_811BF88(int easyChatWord)
+{
+ return 0;
+}
+
+static bool8 sub_811BF8C(void)
+{
+ if (!sub_811CE94())
+ return 0;
+ else
+ return 1;
+}
+
+static bool8 sub_811BFA4(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_08597C54, ARRAY_COUNT(gUnknown_08597C54));
+ SetBgTilemapBuffer(3, gUnknown_0203A11C->unkB00);
+ SetBgTilemapBuffer(1, gUnknown_0203A11C->unk300);
+ InitWindows(gUnknown_08597C64);
+ DeactivateAllTextPrinters();
+ sub_811CF64();
+ sub_811CF04();
+ CpuFastFill(0, (void *)VRAM + 0x1000000, 0x400);
+ break;
+ case 1:
+ DecompressAndLoadBgGfxUsingHeap(3, gEasyChatWindow_Gfx, 0, 0, 0);
+ CopyToBgTilemapBuffer(3, gEasyChatWindow_Tilemap, 0, 0);
+ sub_811D60C();
+ sub_811D424(gUnknown_0203A11C->unk300);
+ sub_811D230();
+ sub_811E948();
+ CopyBgTilemapBufferToVram(3);
+ break;
+ case 2:
+ DecompressAndLoadBgGfxUsingHeap(1, gUnknown_08597B54, 0, 0, 0);
+ CopyBgTilemapBufferToVram(1);
+ break;
+ case 3:
+ sub_811CFCC();
+ sub_811D0BC();
+ sub_811D2C8();
+ sub_811D684();
+ break;
+ case 4:
+ sub_811DE90();
+ if (sub_811BA5C() != 16)
+ sub_811DEC4();
+ break;
+ case 5:
+ if (IsDma3ManagerBusyWithBgCopy())
+ {
+ return TRUE;
+ }
+ else
+ {
+ sub_811DE5C(0, 0, 0, 0);
+ SetGpuReg(REG_OFFSET_WININ, WIN_RANGE(0, 63));
+ SetGpuReg(REG_OFFSET_WINOUT, WIN_RANGE(0, 59));
+ ShowBg(3);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(0);
+ sub_811E5D4();
+ sub_811E720();
+ sub_811E828();
+ }
+ break;
+ default:
+ return FALSE;
+ }
+
+ gUnknown_0203A11C->unk0++;
+ return TRUE;
+}
+
+static void sub_811C13C(void)
+{
+ if (gUnknown_0203A11C)
+ FREE_AND_SET_NULL(gUnknown_0203A11C);
+}
+
+static void sub_811C158(u16 arg0)
+{
+ gUnknown_0203A11C->unk4 = arg0;
+ gUnknown_0203A11C->unk0 = 0;
+ sub_811C170();
+}
+
+static bool8 sub_811C170(void)
+{
+ switch (gUnknown_0203A11C->unk4)
+ {
+ case 0: return FALSE;
+ case 1: return sub_811C2D4();
+ case 2: return sub_811C30C();
+ case 3: return sub_811C3E4();
+ case 4: return sub_811C48C();
+ case 5: return sub_811C404();
+ case 6: return sub_811C448();
+ case 7: return sub_811C4D0();
+ case 8: return sub_811C518();
+ case 9: return sub_811C554();
+ case 10: return sub_811C620();
+ case 11: return sub_811C830();
+ case 12: return sub_811C8F0();
+ case 13: return sub_811C99C();
+ case 14: return sub_811CA5C();
+ case 15: return sub_811C780();
+ case 16: return sub_811C78C();
+ case 17: return sub_811C7D4();
+ case 18: return sub_811CB18();
+ case 19: return sub_811CB98();
+ case 20: return sub_811CB24();
+ case 21: return sub_811CC90();
+ case 22: return sub_811CC08();
+ case 23: return sub_811C6C0();
+ case 24: return FALSE;
+ case 25: return FALSE;
+ case 26: return FALSE;
+ case 27: return FALSE;
+ case 28: return FALSE;
+ case 29: return sub_811CD14();
+ case 30: return sub_811CD54();
+ case 31: return sub_811CD94();
+ case 32: return sub_811CDD4();
+ case 33: return sub_811CE14();
+ case 34: return sub_811CE54();
+ default: return FALSE;
+ }
+}
+
+static bool8 sub_811C2D4(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811D2C8();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C30C(void)
+{
+ u8 i;
+ u16 *ecWordBuffer;
+ u16 *ecWord;
+ u8 var0;
+ u8 cursorColumn, cursorRow, numColumns;
+ s16 var1;
+ int stringWidth;
+ int trueStringWidth;
+ u8 var2;
+ u8 sp0[64];
+
+ ecWordBuffer = sub_811BA94();
+ var0 = sub_811BA68();
+ cursorColumn = sub_811BAB8();
+ cursorRow = sub_811BAC4();
+ numColumns = sub_811BAAC();
+ ecWord = &ecWordBuffer[cursorRow * numColumns];
+ var1 = 8 * gUnknown_08597C30[var0].unk0_0 + 13;
+ for (i = 0; i < cursorColumn; i++)
+ {
+ if (*ecWord == 0xFFFF)
+ {
+ stringWidth = 72;
+ }
+ else
+ {
+ CopyEasyChatWord(sp0, *ecWord);
+ stringWidth = GetStringWidth(1, sp0, 0);
+ }
+
+ trueStringWidth = stringWidth + 17;
+ var1 += trueStringWidth;
+ ecWord++;
+ }
+
+ var2 = 8 * (gUnknown_08597C30[var0].unk0_5 + cursorRow * 2);
+ sub_811DF60(var1, var2 + 8);
+ return FALSE;
+}
+
+static bool8 sub_811C3E4(void)
+{
+ u8 var0 = sub_811E920(sub_811BAB8());
+ sub_811DF60(var0, 96);
+ return FALSE;
+}
+
+static bool8 sub_811C404(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(2);
+ sub_811D214(1);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C448(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(3);
+ sub_811D214(0);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C48C(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(1);
+ sub_811D214(1);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C4D0(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DFB0();
+ sub_811D104(0);
+ sub_811D2C8();
+ ShowBg(0);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C518(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DFB0();
+ sub_811D104(0);
+ sub_811D2C8();
+ gUnknown_0203A11C->unk0++;
+ // Fall through
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C554(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ HideBg(0);
+ sub_811DE5C(0, 0, 0, 0);
+ sub_811D6D4();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811D9CC(0);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy() && !sub_811DAA4())
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811E3AC();
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 4:
+ if (!sub_811E418())
+ {
+ sub_811DFC8();
+ sub_811E6E0(0);
+ sub_811E64C();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ default:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C620(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811E050();
+ sub_811E4AC();
+ sub_811E6B0();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (sub_811E4D0() == TRUE)
+ break;
+
+ sub_811D9CC(1);
+ gUnknown_0203A11C->unk0++;
+ // Fall through
+ case 2:
+ if (!sub_811DAA4())
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811DFB0();
+ ShowBg(0);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 4:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C6C0(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811E050();
+ sub_811E6B0();
+ sub_811E55C();
+ sub_811D9CC(5);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!sub_811DAA4() && !sub_811E5B8())
+ {
+ sub_811D6D4();
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811D9CC(6);
+ sub_811E578();
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 3:
+ if (!sub_811DAA4() && !sub_811E5B8())
+ {
+ sub_811E64C();
+ sub_811DFC8();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 4:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C780(void)
+{
+ sub_811E088();
+ return FALSE;
+}
+
+static bool8 sub_811C78C(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DDAC(1, 4);
+ gUnknown_0203A11C->unk0++;
+ // Fall through
+ case 1:
+ if (!sub_811DE10())
+ {
+ sub_811E088();
+ sub_811E64C();
+ return FALSE;
+ }
+ break;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C7D4(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DDAC(-1, 4);
+ gUnknown_0203A11C->unk0++;
+ // Fall through
+ case 1:
+ if (!sub_811DE10())
+ {
+ sub_811E64C();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 2:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C830(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811E050();
+ sub_811E4AC();
+ sub_811E6B0();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!sub_811E4D0())
+ {
+ sub_811D9B4();
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811D9CC(2);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 3:
+ if (!sub_811DAA4())
+ {
+ sub_811D698(2);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 4:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811E288();
+ sub_811E6E0(1);
+ sub_811E64C();
+ sub_811E794();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 5:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C8F0(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811D2C8();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ sub_811E380();
+ sub_811E6B0();
+ sub_811E7F8();
+ sub_811D9B4();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811D9CC(3);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 3:
+ if (!sub_811DAA4())
+ {
+ ShowBg(0);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 4:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811DFB0();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 5:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C99C(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811D2C8();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ sub_811E380();
+ sub_811E6B0();
+ sub_811E7F8();
+ sub_811D9B4();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811D9CC(3);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 3:
+ if (!sub_811DAA4())
+ {
+ sub_811D104(3);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 4:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ ShowBg(0);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 5:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811DFB0();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 6:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CA5C(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811E380();
+ sub_811E6B0();
+ sub_811E7F8();
+ sub_811D9B4();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811D9CC(4);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!sub_811DAA4())
+ {
+ sub_811D6D4();
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811E3AC();
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 4:
+ if (!sub_811E418())
+ {
+ sub_811DFC8();
+ sub_811E6E0(0);
+ sub_811E64C();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CB18(void)
+{
+ sub_811E30C();
+ return FALSE;
+}
+
+static bool8 sub_811CB24(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811D7A4();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811DDAC(1, 4);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!sub_811DE10())
+ {
+ sub_811E30C();
+ sub_811E64C();
+ sub_811E794();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 3:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CB98(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811D7C8();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811DDAC(-1, 4);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!sub_811DE10())
+ {
+ sub_811E64C();
+ sub_811E794();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 3:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CC08(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811D7EC();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ s16 var0 = sub_811BBDC() - sub_811DE48();
+ sub_811DDAC(var0, 8);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!sub_811DE10())
+ {
+ sub_811E30C();
+ sub_811E64C();
+ sub_811E794();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 3:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CC90(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811D830();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ s16 var0 = sub_811BBDC() - sub_811DE48();
+ sub_811DDAC(var0, 8);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!sub_811DE10())
+ {
+ sub_811E64C();
+ sub_811E794();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 3:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CD14(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(4);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CD54(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(5);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CD94(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(6);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CDD4(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(7);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CE14(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(8);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CE54(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(9);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CE94(void)
+{
+ gUnknown_0203A11C = Alloc(sizeof(*gUnknown_0203A11C));
+ if (!gUnknown_0203A11C)
+ return FALSE;
+
+ gUnknown_0203A11C->unk0 = 0;
+ gUnknown_0203A11C->unk2D8 = 0;
+ gUnknown_0203A11C->unk2DC = 0;
+ gUnknown_0203A11C->unk2E0 = 0;
+ gUnknown_0203A11C->unk2E4 = 0;
+ gUnknown_0203A11C->unk2E8 = 0;
+ gUnknown_0203A11C->unk2EC = 0;
+ gUnknown_0203A11C->unk2F0 = 0;
+ gUnknown_0203A11C->unk2F4 = 0;
+ gUnknown_0203A11C->unk2F8 = 0;
+ gUnknown_0203A11C->unk2FC = 0;
+ gUnknown_0203A11C->unkA = sub_811BC70();
+ return TRUE;
+}
+
+static void sub_811CF04(void)
+{
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON);
+}
+
+static void sub_811CF64(void)
+{
+ ResetPaletteFade();
+ LoadPalette(gEasyChatMode_Pal, 0, 32);
+ LoadPalette(gUnknown_08597B14, 1 * 16, 32);
+ LoadPalette(gUnknown_08597B34, 4 * 16, 32);
+ LoadPalette(gUnknown_08597C1C, 10 * 16, 8);
+ LoadPalette(gUnknown_08597C24, 11 * 16, 12);
+ LoadPalette(gUnknown_08597C24, 15 * 16, 12);
+ LoadPalette(gUnknown_08597C24, 3 * 16, 12);
+}
+
+static void sub_811CFCC(void)
+{
+ int xOffset;
+ const u8 *titleText = sub_811BA88();
+ if (!titleText)
+ return;
+
+ xOffset = GetStringCenterAlignXOffset(1, titleText, 144);
+ FillWindowPixelBuffer(0, 0);
+ sub_811D058(0, 1, titleText, xOffset, 1, 0xFF, 0, 2, 3);
+ PutWindowTilemap(0);
+ CopyWindowToVram(0, 3);
+}
+
+void sub_811D028(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16))
+{
+ AddTextPrinterParameterized(windowId, fontId, str, x, y, speed, callback);
+}
+
+void sub_811D058(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 speed, u8 red, u8 green, u8 blue)
+{
+ u8 color[3];
+ color[0] = red;
+ color[1] = green;
+ color[2] = blue;
+ AddTextPrinterParameterized3(windowId, fontId, left, top, color, speed, str);
+}
+
+static void sub_811D0BC(void)
+{
+ FillBgTilemapBufferRect(0, 0, 0, 0, 32, 20, 17);
+ LoadUserWindowBorderGfx(1, 1, 0xE0);
+ sub_8098858(1, 1, 14);
+ sub_811D104(0);
+ PutWindowTilemap(1);
+ CopyBgTilemapBufferToVram(0);
+}
+
+static void sub_811D104(u8 arg0)
+{
+ const u8 *text2 = NULL;
+ const u8 *text1 = NULL;
+ switch (arg0)
+ {
+ case 0:
+ GetEasyChatInstructionsText(&text1, &text2);
+ break;
+ case 2:
+ sub_811BB40(&text1, &text2);
+ break;
+ case 3:
+ GetEasyChatConfirmText(&text1, &text2);
+ break;
+ case 1:
+ GetEasyChatConfirmDeletionText(&text1, &text2);
+ break;
+ case 4:
+ text1 = gText_CreateAQuiz;
+ break;
+ case 5:
+ text1 = gText_SelectTheAnswer;
+ break;
+ case 6:
+ text1 = gText_OnlyOnePhrase;
+ text2 = gText_OriginalSongWillBeUsed;
+ break;
+ case 7:
+ text1 = gText_LyricsCantBeDeleted;
+ break;
+ case 8:
+ text1 = gText_CombineTwoWordsOrPhrases3;
+ break;
+ case 9:
+ text1 = gText_YouCannotQuitHere;
+ text2 = gText_SectionMustBeCompleted;
+ break;
+ }
+
+ FillWindowPixelBuffer(1, 0x11);
+ if (text1)
+ sub_811D028(1, 1, text1, 0, 1, 0xFF, 0);
+
+ if (text2)
+ sub_811D028(1, 1, text2, 0, 17, 0xFF, 0);
+
+ CopyWindowToVram(1, 3);
+}
+
+static void sub_811D214(u8 initialCursorPos)
+{
+ CreateYesNoMenu(&gUnknown_08597C84, 1, 14, initialCursorPos);
+}
+
+static void sub_811D230(void)
+{
+ u8 var0;
+ struct WindowTemplate template;
+
+ var0 = sub_811BA68();
+ template.bg = 3;
+ template.tilemapLeft = gUnknown_08597C30[var0].unk0_0;
+ template.tilemapTop = gUnknown_08597C30[var0].unk0_5;
+ template.width = gUnknown_08597C30[var0].unk1;
+ template.height = gUnknown_08597C30[var0].unk2;
+ template.paletteNum = 11;
+ template.baseBlock = 0x6C;
+ gUnknown_0203A11C->windowId = AddWindow(&template);
+ PutWindowTilemap(gUnknown_0203A11C->windowId);
+}
+
+static void sub_811D2C8(void)
+{
+ u8 spC[4];
+ u16 *ecWord;
+ u8 numColumns, numRows;
+ u8 *str;
+ int var0;
+ int var1;
+ int i, j, k;
+
+ ecWord = sub_811BA94();
+ numColumns = sub_811BAAC();
+ numRows = sub_811BAA0();
+ var0 = sub_811BA68();
+ var1 = 0;
+ if (var0 == 7)
+ var1 = 1;
+
+ FillWindowPixelBuffer(gUnknown_0203A11C->windowId, 0x11);
+ for (i = 0; i < numRows; i++)
+ {
+ memcpy(spC, gUnknown_08597C8C, sizeof(gUnknown_08597C8C));
+ if (var1)
+ spC[2] = 6;
+
+ str = gUnknown_0203A11C->unkB;
+ gUnknown_0203A11C->unkB[0] = EOS;
+ str = StringAppend(str, spC);
+ for (j = 0; j < numColumns; j++)
+ {
+ if (*ecWord != 0xFFFF)
+ {
+ str = CopyEasyChatWord(str, *ecWord);
+ ecWord++;
+ }
+ else
+ {
+ ecWord++;
+ if (!var1)
+ {
+ str = WriteColorChangeControlCode(str, 0, 4);
+ for (k = 0; k < 12; k++)
+ {
+ *str = CHAR_HYPHEN;
+ str++;
+ }
+
+ str = WriteColorChangeControlCode(str, 0, 2);
+ }
+ }
+
+ if (var1)
+ spC[2] = 3;
+
+ str = StringAppend(str, spC);
+ if (var0 == 2 || var0 == 7 || var0 == 8)
+ {
+ if (j == 0 && i == 4)
+ break;
+ }
+ }
+
+ *str = EOS;
+ sub_811D028(gUnknown_0203A11C->windowId, 1, gUnknown_0203A11C->unkB, 0, i * 16 + 1, 0xFF, 0);
+ }
+
+ CopyWindowToVram(gUnknown_0203A11C->windowId, 3);
+}
+
+static void sub_811D424(u16 *tilemap)
+{
+ u8 var0;
+ int right, bottom;
+ int x, y;
+
+ var0 = sub_811BA68();
+ CpuFastFill(0, tilemap, BG_SCREEN_SIZE);
+ if (var0 == 2 || var0 == 8)
+ {
+ right = gUnknown_08597C30[var0].unk0_0 + gUnknown_08597C30[var0].unk1;
+ bottom = gUnknown_08597C30[var0].unk0_5 + gUnknown_08597C30[var0].unk2;
+ for (y = gUnknown_08597C30[var0].unk0_5; y < bottom; y++)
+ {
+ x = gUnknown_08597C30[var0].unk0_0 - 1;
+ tilemap[y * 32 + x] = 0x1005;
+ x++;
+ for (; x < right; x++)
+ tilemap[y * 32 + x] = 0x1000;
+
+ tilemap[y* 32 + x] = 0x1007;
+ }
+ }
+ else
+ {
+ y = gUnknown_08597C30[var0].unk0_5 - 1;
+ x = gUnknown_08597C30[var0].unk0_0 - 1;
+ right = gUnknown_08597C30[var0].unk0_0 + gUnknown_08597C30[var0].unk1;
+ bottom = gUnknown_08597C30[var0].unk0_5 + gUnknown_08597C30[var0].unk2;
+ tilemap[y * 32 + x] = 0x1001;
+ x++;
+ for (; x < right; x++)
+ tilemap[y * 32 + x] = 0x1002;
+
+ tilemap[y * 32 + x] = 0x1003;
+ y++;
+ for (; y < bottom; y++)
+ {
+ x = gUnknown_08597C30[var0].unk0_0 - 1;
+ tilemap[y * 32 + x] = 0x1005;
+ x++;
+ for (; x < right; x++)
+ tilemap[y * 32 + x] = 0x1000;
+
+ tilemap[y* 32 + x] = 0x1007;
+ }
+
+ x = gUnknown_08597C30[var0].unk0_0 - 1;
+ tilemap[y * 32 + x] = 0x1009;
+ x++;
+ for (; x < right; x++)
+ tilemap[y * 32 + x] = 0x100A;
+
+ tilemap[y * 32 + x] = 0x100B;
+ }
+}
+
+static void sub_811D60C(void)
+{
+ u8 var0;
+ u16 *tilemap;
+
+ tilemap = GetBgTilemapBuffer(3);
+ var0 = sub_811BA68();
+ switch (gUnknown_08597C30[var0].unk3)
+ {
+ case 2:
+ tilemap += 0x2A0;
+ CopyToBgTilemapBufferRect(3, tilemap, 0, 11, 32, 2);
+ break;
+ case 1:
+ tilemap += 0x300;
+ CopyToBgTilemapBufferRect(3, tilemap, 0, 11, 32, 2);
+ break;
+ case 3:
+ CopyToBgTilemapBufferRect(3, tilemap, 0, 10, 32, 4);
+ break;
+ }
+}
+
+static void sub_811D684(void)
+{
+ PutWindowTilemap(2);
+ CopyBgTilemapBufferToVram(2);
+}
+
+static void sub_811D698(u32 arg0)
+{
+ sub_811DD84();
+ FillWindowPixelBuffer(2, 0x11);
+ switch (arg0)
+ {
+ case 0:
+ sub_811D6F4();
+ break;
+ case 1:
+ sub_811D758();
+ break;
+ case 2:
+ sub_811D794();
+ break;
+ }
+
+ CopyWindowToVram(2, 2);
+}
+
+static void sub_811D6D4(void)
+{
+ if (!sub_811BBB0())
+ sub_811D698(0);
+ else
+ sub_811D698(1);
+}
+
+static void sub_811D6F4(void)
+{
+ int i;
+ int x, y;
+
+ i = 0;
+ y = 97;
+ while (1)
+ {
+ for (x = 0; x < 2; x++)
+ {
+ u8 index = sub_811F3B8(i++);
+ if (index == 22)
+ {
+ sub_811DDAC(sub_811BBBC(), 0);
+ return;
+ }
+
+ sub_811D028(2, 1, sub_811F424(index), x * 84 + 10, y, 0xFF, NULL);
+ }
+
+ y += 16;
+ }
+}
+
+static void sub_811D758(void)
+{
+ u32 i;
+
+ for (i = 0; i < 4; i++)
+ sub_811D028(2, 1, gUnknown_08597C90[i], 10, 97 + i * 16, 0xFF, NULL);
+}
+
+static void sub_811D794(void)
+{
+ sub_811D864(0, 4);
+}
+
+static void sub_811D7A4(void)
+{
+ u8 var0 = sub_811BBDC() + 3;
+ sub_811D950(var0, 1);
+ sub_811D864(var0, 1);
+}
+
+static void sub_811D7C8(void)
+{
+ u8 var0 = sub_811BBDC();
+ sub_811D950(var0, 1);
+ sub_811D864(var0, 1);
+}
+
+static void sub_811D7EC(void)
+{
+ u8 var0 = sub_811BBDC();
+ u8 var1 = var0 + 4;
+ u8 var2 = sub_811BBE8() + 1;
+ if (var1 > var2)
+ var1 = var2;
+
+ if (var0 < var1)
+ {
+ u8 var3 = var1 - var0;
+ sub_811D950(var0, var3);
+ sub_811D864(var0, var3);
+ }
+}
+
+static void sub_811D830(void)
+{
+ u8 var0 = sub_811BBDC();
+ u8 var1 = sub_811DE48();
+ if (var0 < var1)
+ {
+ u8 var2 = var1 - var0;
+ sub_811D950(var0, var2);
+ sub_811D864(var0, var2);
+ }
+}
+
+static void sub_811D864(u8 arg0, u8 arg1)
+{
+ int i, j;
+ u16 easyChatWord;
+ u8 *str;
+ int y;
+ int var0;
+
+ var0 = arg0 * 2;
+ y = (arg0 * 16 + 96) & 0xFF;
+ y++;
+ for (i = 0; i < arg1; i++)
+ {
+ for (j = 0; j < 2; j++)
+ {
+ easyChatWord = sub_811F578(var0++);
+ if (easyChatWord != 0xFFFF)
+ {
+ CopyEasyChatWordPadded(gUnknown_0203A11C->unkCC, easyChatWord, 0);
+ if (!sub_811BF88(easyChatWord))
+ sub_811D028(2, 1, gUnknown_0203A11C->unkCC, (j * 13 + 3) * 8, y, 0xFF, NULL);
+ else
+ sub_811D058(2, 1, gUnknown_0203A11C->unkCC, (j * 13 + 3) * 8, y, 0xFF, 1, 5, 3);
+ }
+ }
+
+ y += 16;
+ }
+
+ CopyWindowToVram(2, 2);
+}
+
+static void sub_811D950(u8 arg0, u8 arg1)
+{
+ int y;
+ int var0;
+ int var1;
+ int var2;
+
+ y = (arg0 * 16 + 96) & 0xFF;
+ var2 = arg1 * 16;
+ var0 = y + var2;
+ if (var0 > 255)
+ {
+ var1 = var0 - 256;
+ var2 = 256 - y;
+ }
+ else
+ {
+ var1 = 0;
+ }
+
+ FillWindowPixelRect(2, 0x11, 0, y, 224, var2);
+ if (var1)
+ FillWindowPixelRect(2, 0x11, 0, 0, 224, var1);
+}
+
+static void sub_811D9B4(void)
+{
+ FillWindowPixelBuffer(2, 0x11);
+ CopyWindowToVram(2, 2);
+}
+
+static void sub_811D9CC(int arg0)
+{
+ switch (arg0)
+ {
+ case 0:
+ gUnknown_0203A11C->unk6 = 0;
+ gUnknown_0203A11C->unk7 = 10;
+ break;
+ case 1:
+ gUnknown_0203A11C->unk6 = 9;
+ gUnknown_0203A11C->unk7 = 0;
+ break;
+ case 2:
+ gUnknown_0203A11C->unk6 = 11;
+ gUnknown_0203A11C->unk7 = 17;
+ break;
+ case 3:
+ gUnknown_0203A11C->unk6 = 17;
+ gUnknown_0203A11C->unk7 = 0;
+ break;
+ case 4:
+ gUnknown_0203A11C->unk6 = 17;
+ gUnknown_0203A11C->unk7 = 10;
+ break;
+ case 5:
+ gUnknown_0203A11C->unk6 = 18;
+ gUnknown_0203A11C->unk7 = 22;
+ break;
+ case 6:
+ gUnknown_0203A11C->unk6 = 22;
+ gUnknown_0203A11C->unk7 = 18;
+ break;
+ }
+
+ gUnknown_0203A11C->unk8 = gUnknown_0203A11C->unk6 < gUnknown_0203A11C->unk7 ? 1 : -1;
+}
+
+static bool8 sub_811DAA4(void)
+{
+ u8 var0, var1;
+ if (gUnknown_0203A11C->unk6 == gUnknown_0203A11C->unk7)
+ return FALSE;
+
+ gUnknown_0203A11C->unk6 += gUnknown_0203A11C->unk8;
+ sub_811DADC(gUnknown_0203A11C->unk6);
+ var0 = gUnknown_0203A11C->unk6;
+ var1 = gUnknown_0203A11C->unk7;
+ return (var0 ^ var1) > 0;
+}
diff --git a/src/flying.c b/src/flying.c
index d3ea3f11b..48df12a06 100644
--- a/src/flying.c
+++ b/src/flying.c
@@ -1,13 +1,16 @@
#include "global.h"
#include "battle_anim.h"
+#include "palette.h"
+#include "trig.h"
+#include "constants/battle_anim.h"
#include "constants/rgb.h"
-extern void sub_810DE70(struct Sprite *);
-extern void sub_810DFA8(struct Sprite *);
-extern void sub_810E044(struct Sprite *);
-extern void sub_810E13C(struct Sprite *);
-extern void sub_810E1C8(struct Sprite *);
-extern void sub_810E314(struct Sprite *);
+void sub_810DE70(struct Sprite *);
+void sub_810DFA8(struct Sprite *);
+void sub_810E044(struct Sprite *);
+void sub_810E13C(struct Sprite *);
+void sub_810E1C8(struct Sprite *);
+void sub_810E314(struct Sprite *);
extern void sub_810EA4C(struct Sprite *);
extern void sub_810EAA0(struct Sprite *);
extern void sub_810EC34(struct Sprite *);
@@ -18,6 +21,13 @@ extern void sub_810EEF8(struct Sprite *);
extern void sub_810F004(struct Sprite *);
extern void sub_810F084(struct Sprite *);
+static void sub_810DE98(struct Sprite *);
+static void sub_810DF18(u8);
+static void sub_810E028(struct Sprite *);
+static void sub_810E184(struct Sprite *);
+static void sub_810E24C(struct Sprite *);
+void sub_810E520(struct Sprite *);
+
const struct SpriteTemplate gUnknown_08596270 =
{
.tileTag = ANIM_TAG_GUST,
@@ -326,3 +336,293 @@ const struct SpriteTemplate gUnknown_08596514 =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_810F084,
};
+
+
+void sub_810DE70(struct Sprite *sprite)
+{
+ InitSpritePosToAnimTarget(sprite, FALSE);
+ sprite->pos1.y += 20;
+ sprite->data[1] = 191;
+ sprite->callback = sub_810DE98;
+ sprite->callback(sprite);
+}
+
+static void sub_810DE98(struct Sprite *sprite) {
+ sprite->pos2.x = Sin(sprite->data[1], 32);
+ sprite->pos2.y = Cos(sprite->data[1], 8);
+ sprite->data[1] += 5;
+ sprite->data[1] &= 0xFF;
+ if (++sprite->data[0] == 71)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_810DED8(u8 taskId)
+{
+ gTasks[taskId].data[0] = gBattleAnimArgs[1];
+ gTasks[taskId].data[1] = gBattleAnimArgs[0];
+ gTasks[taskId].data[2] = IndexOfSpritePaletteTag(ANIM_TAG_GUST);
+ gTasks[taskId].func = sub_810DF18;
+}
+
+static void sub_810DF18(u8 taskId)
+{
+ u8 data2;
+ u16 temp;
+ int i, base;
+
+ if (gTasks[taskId].data[10]++ == gTasks[taskId].data[1])
+ {
+ gTasks[taskId].data[10] = 0;
+ data2 = gTasks[taskId].data[2];
+ temp = gPlttBufferFaded[16 * data2 + 0x108];
+ i = 7;
+ base = data2 * 16;
+
+ do
+ {
+ gPlttBufferFaded[base + 0x101 + i] = gPlttBufferFaded[base + 0x100 + i];
+ i--;
+ }
+ while (i > 0);
+
+ gPlttBufferFaded[base + 0x101] = temp;
+ }
+
+ if (--gTasks[taskId].data[0] == 0)
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_810DFA8(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
+ InitAnimLinearTranslation(sprite);
+ sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
+ StoreSpriteCallbackInData6(sprite, sub_810E028);
+}
+
+static void sub_810E028(struct Sprite *sprite)
+{
+ if (AnimTranslateLinear(sprite))
+ DestroyAnimSprite(sprite);
+}
+
+void sub_810E044(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ }
+
+ if (IsContest())
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ }
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[4];
+
+ if (gBattleAnimArgs[6] == 0)
+ {
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+ }
+ else
+ {
+ SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->data[2], &sprite->data[4]);
+ }
+
+ sprite->data[2] = sprite->data[2] + gBattleAnimArgs[2];
+ sprite->data[4] = sprite->data[4] + gBattleAnimArgs[3];
+ sprite->callback = StartAnimLinearTranslation;
+
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ SeekSpriteAnim(sprite, gBattleAnimArgs[5]);
+}
+
+void sub_810E13C(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->callback = sub_810E184;
+ gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = 1;
+}
+
+static void sub_810E184(struct Sprite *sprite)
+{
+ if (sprite->data[0] > 0)
+ {
+ sprite->data[0]--;
+ }
+ else
+ {
+ sprite->data[2] += sprite->data[1];
+ sprite->pos2.y -= (sprite->data[2] >> 8);
+ }
+
+ if (sprite->pos1.y + sprite->pos2.y < -32)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_810E1C8(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ sprite->pos1.x = 272;
+ sprite->pos1.y = -32;
+ StartSpriteAffineAnim(sprite, 1);
+ }
+ else
+ {
+ sprite->pos1.x = -32;
+ sprite->pos1.y = -32;
+ }
+
+ sprite->data[0] = gBattleAnimArgs[0];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+
+ InitAnimLinearTranslation(sprite);
+ sprite->callback = sub_810E24C;
+}
+
+static void sub_810E24C(struct Sprite *sprite)
+{
+ sprite->data[0] = 1;
+ AnimTranslateLinear(sprite);
+ if (((u16)sprite->data[3] >> 8) > 200)
+ {
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos2.x = 0;
+ sprite->data[3] &= 0xFF;
+ }
+
+ if ((u32)(sprite->pos1.x + sprite->pos2.x + 32) > 304 || sprite->pos1.y + sprite->pos2.y > 160)
+ {
+ gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = 0;
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_810E2C8(struct Sprite *sprite)
+{
+ if (sprite->data[0]-- <= 0)
+ {
+ if (sprite->oam.affineMode & ST_OAM_AFFINE_ON_MASK)
+ {
+ FreeOamMatrix(sprite->oam.matrixNum);
+ sprite->oam.affineMode = 0;
+ }
+
+ DestroySprite(sprite);
+ gAnimVisualTaskCount--;
+ }
+}
+
+// FAKEMATCHING
+void sub_810E314(struct Sprite *sprite)
+{
+ s16 *data;
+ u8 slot;
+ s16 spriteCoord;
+ int t1, t2;
+ u32 arg2;
+ u32 matrixNum;
+ u8 sinIndex;
+ register s16 sinVal asm ("r4");
+ register int sinVal2 asm ("r0");
+
+ data = sprite->data;
+
+ if (gBattleAnimArgs[7] & 0x100)
+ slot = gBattleAnimAttacker;
+ else
+ slot = gBattleAnimTarget;
+
+ if (GetBattlerSide(slot) == B_SIDE_PLAYER)
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+
+ sprite->pos1.x = GetBattlerSpriteCoord(slot, 0) + gBattleAnimArgs[0];
+ spriteCoord = GetBattlerSpriteCoord(slot, 1);
+ sprite->pos1.y = spriteCoord + gBattleAnimArgs[1];
+ data[4] = sprite->pos1.y << 8;
+
+ t1 = (spriteCoord + (u16) gBattleAnimArgs[6]) << 1;
+ data[7] = (data[7] & 1) | t1;
+ ((u8 *) data)[0] |= 4;
+
+ arg2 = (u16) gBattleAnimArgs[2];
+ data[1] = (u8) gBattleAnimArgs[2];
+ arg2 <<= 16;
+ data[5] = arg2 >> 24;
+ data[2] = gBattleAnimArgs[3];
+ data[3] = gBattleAnimArgs[4];
+ data[6] = gBattleAnimArgs[5];
+
+ if ((u16) (data[1] - 64) <= 0x7f)
+ {
+ if (!IsContest())
+ sprite->oam.priority = GetBattlerSpriteBGPriority(slot) + 1;
+ else
+ sprite->oam.priority = GetBattlerSpriteBGPriority(slot);
+
+ ((u8 *) data)[14] = data[7] & -2;
+
+ if (!(data[2] & 0x8000))
+ {
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+
+ sprite->animBeginning = 1;
+ sprite->animEnded = 0;
+ }
+ }
+ else
+ {
+ sprite->oam.priority = GetBattlerSpriteBGPriority(slot);
+ ((u8 *) data)[14] |= 1;
+
+ if (data[2] & 0x8000)
+ {
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+
+ sprite->animBeginning = 1;
+ sprite->animEnded = 0;
+ }
+ }
+
+ t2 = (u16) data[1] >> 6 << 4;
+ ((u8 *) data)[0] = (15 & data[0]) | t2;
+
+ sprite->pos2.x = (gSineTable[(u16) data[1]] * (u8) data[6]) >> 8;
+
+ matrixNum = sprite->oam.matrixNum;
+
+ sinIndex = (-sprite->pos2.x >> 1) + data[5];
+ sinVal = gSineTable[sinIndex];
+
+ gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64];
+ gOamMatrices[matrixNum].b = sinVal;
+ sinVal2 = -sinVal;
+ gOamMatrices[matrixNum].c = sinVal2;
+
+ sprite->callback = sub_810E520;
+}