summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/easy_chat.s1863
-rw-r--r--asm/link_rfu.s2
-rw-r--r--asm/mon_markings.s6
-rw-r--r--data/strings.s2
-rw-r--r--include/constants/easy_chat.h2
-rw-r--r--include/easy_chat.h13
-rw-r--r--include/global.h8
-rw-r--r--include/mevent.h1
-rw-r--r--include/strings.h1
-rw-r--r--ld_script.txt2
-rw-r--r--src/easy_chat.c4318
-rw-r--r--src/mail.c4
-rw-r--r--src/mevent.c2
-rw-r--r--src/trade_scene.c3
-rw-r--r--sym_bss.txt22
-rw-r--r--sym_ewram.txt13
16 files changed, 197 insertions, 6065 deletions
diff --git a/asm/easy_chat.s b/asm/easy_chat.s
deleted file mode 100644
index 295487be2..000000000
--- a/asm/easy_chat.s
+++ /dev/null
@@ -1,1863 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80BD718
-sub_80BD718: @ 80BD718
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- cmp r0, 0x14
- beq _080BD73E
- cmp r0, 0x14
- bgt _080BD738
- cmp r0, 0x11
- blt _080BD74C
- ldr r0, _080BD734 @ =0x0000082c
- bl FlagGet
- b _080BD746
- .align 2, 0
-_080BD734: .4byte 0x0000082c
-_080BD738:
- cmp r1, 0x15
- beq _080BD742
- b _080BD74C
-_080BD73E:
- movs r0, 0
- b _080BD74E
-_080BD742:
- bl sub_80BDCA8
-_080BD746:
- lsls r0, 24
- lsrs r0, 24
- b _080BD74E
-_080BD74C:
- movs r0, 0x1
-_080BD74E:
- pop {r1}
- bx r1
- thumb_func_end sub_80BD718
-
- thumb_func_start start_menu_is_selected_item_valid
-start_menu_is_selected_item_valid: @ 80BD754
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- cmp r0, 0x15
- bne _080BD76C
- movs r0, 0
- bl GetNationalPokedexCount
- lsls r0, 16
- lsrs r0, 16
- b _080BD782
-_080BD76C:
- bl sub_80BD718
- lsls r0, 24
- cmp r0, 0
- bne _080BD77A
- movs r0, 0
- b _080BD782
-_080BD77A:
- ldr r0, _080BD788 @ =gEasyChatGroups
- lsls r1, r4, 3
- adds r1, r0
- ldrh r0, [r1, 0x6]
-_080BD782:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080BD788: .4byte gEasyChatGroups
- thumb_func_end start_menu_is_selected_item_valid
-
- thumb_func_start sub_80BD78C
-sub_80BD78C: @ 80BD78C
- push {r4,r5,lr}
- lsls r2, r0, 16
- lsrs r1, r2, 16
- ldr r0, _080BD7B8 @ =0x0000ffff
- cmp r1, r0
- beq _080BD7EC
- lsrs r3, r2, 25
- ldr r5, _080BD7BC @ =0x000001ff
- ands r5, r1
- cmp r3, 0x15
- bhi _080BD7F0
- ldr r0, _080BD7C0 @ =gEasyChatGroups
- lsls r2, r3, 3
- adds r1, r2, r0
- ldrh r4, [r1, 0x4]
- cmp r3, 0x13
- bgt _080BD7C4
- cmp r3, 0x12
- bge _080BD7C8
- cmp r3, 0
- beq _080BD7C8
- b _080BD7E8
- .align 2, 0
-_080BD7B8: .4byte 0x0000ffff
-_080BD7BC: .4byte 0x000001ff
-_080BD7C0: .4byte gEasyChatGroups
-_080BD7C4:
- cmp r3, 0x15
- bne _080BD7E8
-_080BD7C8:
- adds r0, r2, r0
- ldr r2, [r0]
- movs r1, 0
- cmp r1, r4
- bcs _080BD7F0
-_080BD7D2:
- lsls r0, r1, 1
- adds r0, r2
- ldrh r0, [r0]
- cmp r5, r0
- beq _080BD7EC
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, r4
- bcc _080BD7D2
- b _080BD7F0
-_080BD7E8:
- cmp r5, r4
- bcs _080BD7F0
-_080BD7EC:
- movs r0, 0
- b _080BD7F2
-_080BD7F0:
- movs r0, 0x1
-_080BD7F2:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80BD78C
-
- thumb_func_start GetEasyChatWord
-GetEasyChatWord: @ 80BD7F8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r2, r1, 16
- cmp r0, 0x13
- bgt _080BD810
- cmp r0, 0x12
- bge _080BD824
- cmp r0, 0
- beq _080BD814
- b _080BD834
-_080BD810:
- cmp r0, 0x15
- bne _080BD834
-_080BD814:
- movs r0, 0xB
- muls r0, r2
- ldr r1, _080BD820 @ =gSpeciesNames
- adds r0, r1
- b _080BD846
- .align 2, 0
-_080BD820: .4byte gSpeciesNames
-_080BD824:
- movs r0, 0xD
- muls r0, r2
- ldr r1, _080BD830 @ =gMoveNames
- adds r0, r1
- b _080BD846
- .align 2, 0
-_080BD830: .4byte gMoveNames
-_080BD834:
- ldr r1, _080BD84C @ =gEasyChatGroups
- lsls r0, 3
- adds r0, r1
- ldr r1, [r0]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
-_080BD846:
- pop {r1}
- bx r1
- .align 2, 0
-_080BD84C: .4byte gEasyChatGroups
- thumb_func_end GetEasyChatWord
-
- thumb_func_start CopyEasyChatWord
-CopyEasyChatWord: @ 80BD850
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r6, r1, 16
- lsrs r0, r6, 16
- adds r4, r0, 0
- bl sub_80BD78C
- lsls r0, 24
- cmp r0, 0
- beq _080BD86C
- ldr r1, _080BD868 @ =gUnknown_841E093
- b _080BD87E
- .align 2, 0
-_080BD868: .4byte gUnknown_841E093
-_080BD86C:
- ldr r0, _080BD888 @ =0x0000ffff
- cmp r4, r0
- beq _080BD890
- ldr r1, _080BD88C @ =0x000001ff
- ands r1, r4
- lsrs r0, r6, 25
- bl GetEasyChatWord
- adds r1, r0, 0
-_080BD87E:
- adds r0, r5, 0
- bl StringCopy
- b _080BD896
- .align 2, 0
-_080BD888: .4byte 0x0000ffff
-_080BD88C: .4byte 0x000001ff
-_080BD890:
- movs r0, 0xFF
- strb r0, [r5]
- adds r0, r5, 0
-_080BD896:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end CopyEasyChatWord
-
- thumb_func_start ConvertEasyChatWordsToString
-ConvertEasyChatWordsToString: @ 80BD89C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r2, 16
- lsls r3, 16
- lsrs r3, 16
- mov r9, r3
- ldr r0, _080BD924 @ =0xffff0000
- adds r2, r0
- lsrs r7, r2, 16
- movs r0, 0
- cmp r0, r9
- bcs _080BD90C
-_080BD8BE:
- movs r6, 0
- adds r0, 0x1
- mov r8, r0
- cmp r6, r7
- bcs _080BD8F0
- ldr r2, _080BD928 @ =0x0000ffff
-_080BD8CA:
- ldrh r1, [r5]
- adds r0, r4, 0
- str r2, [sp]
- bl CopyEasyChatWord
- adds r4, r0, 0
- ldrh r0, [r5]
- ldr r2, [sp]
- cmp r0, r2
- beq _080BD8E4
- movs r0, 0
- strb r0, [r4]
- adds r4, 0x1
-_080BD8E4:
- adds r5, 0x2
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, r7
- bcc _080BD8CA
-_080BD8F0:
- ldrh r1, [r5]
- adds r5, 0x2
- adds r0, r4, 0
- bl CopyEasyChatWord
- adds r4, r0, 0
- movs r0, 0xFE
- strb r0, [r4]
- adds r4, 0x1
- mov r1, r8
- lsls r0, r1, 16
- lsrs r0, 16
- cmp r0, r9
- bcc _080BD8BE
-_080BD90C:
- subs r4, 0x1
- movs r0, 0xFF
- strb r0, [r4]
- adds r0, r4, 0
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080BD924: .4byte 0xffff0000
-_080BD928: .4byte 0x0000ffff
- thumb_func_end ConvertEasyChatWordsToString
-
- thumb_func_start sub_80BD92C
-sub_80BD92C: @ 80BD92C
- push {r4,r5,lr}
- lsls r5, r0, 16
- lsrs r0, r5, 16
- adds r4, r0, 0
- ldr r0, _080BD940 @ =0x0000ffff
- cmp r4, r0
- bne _080BD944
- movs r0, 0
- b _080BD96A
- .align 2, 0
-_080BD940: .4byte 0x0000ffff
-_080BD944:
- adds r0, r4, 0
- bl sub_80BD78C
- lsls r0, 24
- cmp r0, 0
- bne _080BD960
- ldr r1, _080BD95C @ =0x000001ff
- ands r1, r4
- lsrs r0, r5, 25
- bl GetEasyChatWord
- b _080BD962
- .align 2, 0
-_080BD95C: .4byte 0x000001ff
-_080BD960:
- ldr r0, _080BD970 @ =gUnknown_841E093
-_080BD962:
- bl StringLength
- lsls r0, 16
- lsrs r0, 16
-_080BD96A:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080BD970: .4byte gUnknown_841E093
- thumb_func_end sub_80BD92C
-
- thumb_func_start sub_80BD974
-sub_80BD974: @ 80BD974
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r6, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- lsls r3, 16
- lsrs r3, 16
- mov r10, r3
- movs r7, 0
- cmp r7, r8
- bcs _080BD9D6
- subs r0, r1, 0x1
- lsls r0, 16
- mov r9, r0
-_080BD99E:
- mov r0, r9
- lsrs r4, r0, 16
- movs r5, 0
- cmp r5, r1
- bcs _080BD9C4
-_080BD9A8:
- ldrh r0, [r6]
- adds r6, 0x2
- str r1, [sp]
- bl sub_80BD92C
- adds r0, r4, r0
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, [sp]
- cmp r5, r1
- bcc _080BD9A8
-_080BD9C4:
- cmp r4, r10
- bls _080BD9CC
- movs r0, 0x1
- b _080BD9D8
-_080BD9CC:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, r8
- bcc _080BD99E
-_080BD9D6:
- movs r0, 0
-_080BD9D8:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80BD974
-
- thumb_func_start sub_80BD9E8
-sub_80BD9E8: @ 80BD9E8
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- bl Random
- ldr r2, _080BDA38 @ =gEasyChatGroups
- lsls r1, r4, 3
- adds r1, r2
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r1, 0x4]
- bl __umodsi3
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r4, 0
- beq _080BDA16
- cmp r4, 0x15
- beq _080BDA16
- cmp r4, 0x12
- beq _080BDA16
- cmp r4, 0x13
- bne _080BDA24
-_080BDA16:
- ldr r1, _080BDA38 @ =gEasyChatGroups
- lsls r0, r4, 3
- adds r0, r1
- ldr r1, [r0]
- lsls r0, r2, 1
- adds r0, r1
- ldrh r2, [r0]
-_080BDA24:
- movs r0, 0x7F
- ands r0, r4
- lsls r0, 9
- ldr r1, _080BDA3C @ =0x000001ff
- ands r2, r1
- orrs r0, r2
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080BDA38: .4byte gEasyChatGroups
-_080BDA3C: .4byte 0x000001ff
- thumb_func_end sub_80BD9E8
-
- thumb_func_start sub_80BDA40
-sub_80BDA40: @ 80BDA40
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- adds r4, r0, 0
- lsls r0, r4, 24
- lsrs r0, 24
- bl sub_80BD718
- lsls r0, 24
- cmp r0, 0
- bne _080BDA60
- ldr r0, _080BDA5C @ =0x0000ffff
- b _080BDA74
- .align 2, 0
-_080BDA5C: .4byte 0x0000ffff
-_080BDA60:
- cmp r4, 0x15
- beq _080BDA6C
- adds r0, r4, 0
- bl sub_80BD9E8
- b _080BDA70
-_080BDA6C:
- bl sub_80BDCB8
-_080BDA70:
- lsls r0, 16
- lsrs r0, 16
-_080BDA74:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80BDA40
-
- thumb_func_start sub_80BDA7C
-sub_80BDA7C: @ 80BDA7C
- push {r4,r5,lr}
- ldr r0, _080BDA90 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _080BDAB4
- cmp r0, 0x1
- bgt _080BDA94
- cmp r0, 0
- beq _080BDA9E
- b _080BDB08
- .align 2, 0
-_080BDA90: .4byte gSpecialVar_0x8004
-_080BDA94:
- cmp r0, 0x2
- beq _080BDADC
- cmp r0, 0x3
- beq _080BDAEC
- b _080BDB08
-_080BDA9E:
- ldr r0, _080BDAAC @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _080BDAB0 @ =0x00002ca0
- adds r5, r0, r1
- movs r2, 0x2
- b _080BDAF6
- .align 2, 0
-_080BDAAC: .4byte gSaveBlock1Ptr
-_080BDAB0: .4byte 0x00002ca0
-_080BDAB4:
- ldr r0, _080BDAD4 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _080BDAD8 @ =0x00002cac
- adds r5, r0, r1
- adds r0, r5, 0
- movs r1, 0x3
- movs r2, 0x2
- movs r3, 0x12
- bl sub_80BD974
- lsls r0, 24
- cmp r0, 0
- beq _080BDAF4
- movs r2, 0x2
- movs r3, 0x3
- b _080BDAF8
- .align 2, 0
-_080BDAD4: .4byte gSaveBlock1Ptr
-_080BDAD8: .4byte 0x00002cac
-_080BDADC:
- ldr r0, _080BDAE4 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _080BDAE8 @ =0x00002cb8
- b _080BDAF2
- .align 2, 0
-_080BDAE4: .4byte gSaveBlock1Ptr
-_080BDAE8: .4byte 0x00002cb8
-_080BDAEC:
- ldr r0, _080BDB10 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _080BDB14 @ =0x00002cc4
-_080BDAF2:
- adds r5, r0, r1
-_080BDAF4:
- movs r2, 0x3
-_080BDAF6:
- movs r3, 0x2
-_080BDAF8:
- ldr r4, _080BDB18 @ =gStringVar4
- adds r0, r4, 0
- adds r1, r5, 0
- bl ConvertEasyChatWordsToString
- adds r0, r4, 0
- bl ShowFieldAutoScrollMessage
-_080BDB08:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BDB10: .4byte gSaveBlock1Ptr
-_080BDB14: .4byte 0x00002cc4
-_080BDB18: .4byte gStringVar4
- thumb_func_end sub_80BDA7C
-
- thumb_func_start BufferRandomHobbyOrLifestyleString
-BufferRandomHobbyOrLifestyleString: @ 80BDB1C
- push {lr}
- bl Random
- movs r1, 0x1
- ands r1, r0
- movs r0, 0xC
- cmp r1, 0
- beq _080BDB2E
- movs r0, 0xD
-_080BDB2E:
- bl sub_80BDA40
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r0, _080BDB44 @ =gStringVar2
- bl CopyEasyChatWord
- pop {r0}
- bx r0
- .align 2, 0
-_080BDB44: .4byte gStringVar2
- thumb_func_end BufferRandomHobbyOrLifestyleString
-
- thumb_func_start sub_80BDB48
-sub_80BDB48: @ 80BDB48
- lsls r0, 24
- lsrs r2, r0, 27
- movs r1, 0xE0
- lsls r1, 19
- ands r1, r0
- lsrs r1, 24
- ldr r0, _080BDB68 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r3, _080BDB6C @ =0x00002f10
- adds r0, r3
- adds r0, r2
- ldrb r0, [r0]
- asrs r0, r1
- movs r1, 0x1
- ands r0, r1
- bx lr
- .align 2, 0
-_080BDB68: .4byte gSaveBlock1Ptr
-_080BDB6C: .4byte 0x00002f10
- thumb_func_end sub_80BDB48
-
- thumb_func_start EnableRareWord
-EnableRareWord: @ 80BDB70
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x20
- bhi _080BDB94
- lsrs r3, r0, 27
- movs r2, 0x7
- ands r2, r1
- ldr r0, _080BDB98 @ =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, _080BDB9C @ =0x00002f10
- adds r1, r0
- adds r1, r3
- movs r0, 0x1
- lsls r0, r2
- ldrb r2, [r1]
- orrs r0, r2
- strb r0, [r1]
-_080BDB94:
- pop {r0}
- bx r0
- .align 2, 0
-_080BDB98: .4byte gSaveBlock1Ptr
-_080BDB9C: .4byte 0x00002f10
- thumb_func_end EnableRareWord
-
- thumb_func_start sub_80BDBA0
-sub_80BDBA0: @ 80BDBA0
- push {r4,r5,lr}
- movs r4, 0
- movs r5, 0
-_080BDBA6:
- adds r0, r4, 0
- bl sub_80BDB48
- lsls r0, 24
- cmp r0, 0
- beq _080BDBB8
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_080BDBB8:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x20
- bls _080BDBA6
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80BDBA0
-
- thumb_func_start sub_80BDBCC
-sub_80BDBCC: @ 80BDBCC
- push {r4-r6,lr}
- bl sub_80BDBA0
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x21
- bne _080BDBF8
- b _080BDC32
-_080BDBDC:
- adds r0, r5, 0
- bl EnableRareWord
- ldr r0, _080BDBF4 @ =0x000001ff
- ands r4, r0
- movs r1, 0xA0
- lsls r1, 6
- adds r0, r1, 0
- orrs r4, r0
- adds r0, r4, 0
- b _080BDC34
- .align 2, 0
-_080BDBF4: .4byte 0x000001ff
-_080BDBF8:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x21
- subs r1, r4
- bl __modsi3
- lsls r0, 16
- lsrs r6, r0, 16
- movs r4, 0
-_080BDC0E:
- lsls r0, r4, 24
- lsrs r5, r0, 24
- adds r0, r5, 0
- bl sub_80BDB48
- lsls r0, 24
- cmp r0, 0
- bne _080BDC28
- cmp r6, 0
- beq _080BDBDC
- subs r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_080BDC28:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x20
- bls _080BDC0E
-_080BDC32:
- ldr r0, _080BDC3C @ =0x0000ffff
-_080BDC34:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080BDC3C: .4byte 0x0000ffff
- thumb_func_end sub_80BDBCC
-
- thumb_func_start sub_80BDC40
-sub_80BDC40: @ 80BDC40
- push {r4,r5,lr}
- bl sub_80BDBA0
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _080BDC64
- b _080BDC9A
-_080BDC50:
- ldr r0, _080BDC60 @ =0x000001ff
- ands r4, r0
- movs r1, 0xA0
- lsls r1, 6
- adds r0, r1, 0
- orrs r4, r0
- adds r0, r4, 0
- b _080BDC9C
- .align 2, 0
-_080BDC60: .4byte 0x000001ff
-_080BDC64:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- bl __umodsi3
- lsls r0, 16
- lsrs r5, r0, 16
- movs r4, 0
-_080BDC78:
- lsls r0, r4, 24
- lsrs r0, 24
- bl sub_80BDB48
- lsls r0, 24
- cmp r0, 0
- beq _080BDC90
- cmp r5, 0
- beq _080BDC50
- subs r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_080BDC90:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x20
- bls _080BDC78
-_080BDC9A:
- ldr r0, _080BDCA4 @ =0x0000ffff
-_080BDC9C:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080BDCA4: .4byte 0x0000ffff
- thumb_func_end sub_80BDC40
-
- thumb_func_start sub_80BDCA8
-sub_80BDCA8: @ 80BDCA8
- push {lr}
- bl IsNationalPokedexEnabled
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_80BDCA8
-
- thumb_func_start sub_80BDCB8
-sub_80BDCB8: @ 80BDCB8
- push {r4-r7,lr}
- movs r0, 0
- bl start_menu_is_selected_item_valid
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- bne _080BDCD8
- b _080BDD22
-_080BDCCA:
- ldrh r1, [r5]
- ldr r0, _080BDCD4 @ =0x000001ff
- ands r0, r1
- b _080BDD24
- .align 2, 0
-_080BDCD4: .4byte 0x000001ff
-_080BDCD8:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r4, 0
- bl __umodsi3
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, _080BDD2C @ =gEasyChatGroups
- ldr r5, [r0]
- ldrh r7, [r0, 0x4]
- movs r6, 0
- cmp r6, r7
- bcs _080BDD22
-_080BDCF6:
- ldrh r0, [r5]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- bl GetSetPokedexFlag
- lsls r0, 24
- cmp r0, 0
- beq _080BDD16
- cmp r4, 0
- beq _080BDCCA
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
-_080BDD16:
- adds r5, 0x2
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, r7
- bcc _080BDCF6
-_080BDD22:
- ldr r0, _080BDD30 @ =0x0000ffff
-_080BDD24:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080BDD2C: .4byte gEasyChatGroups
-_080BDD30: .4byte 0x0000ffff
- thumb_func_end sub_80BDCB8
-
- thumb_func_start InitEasyChatPhrases
-InitEasyChatPhrases: @ 80BDD34
- push {r4-r7,lr}
- movs r4, 0
- ldr r5, _080BDE00 @ =gSaveBlock1Ptr
- ldr r3, _080BDE04 @ =0x00002ca0
- ldr r2, _080BDE08 @ =sDefaultProfileWords
-_080BDD3E:
- ldr r1, [r5]
- lsls r0, r4, 1
- adds r1, r3
- adds r1, r0
- adds r0, r2
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _080BDD3E
- movs r4, 0
- ldr r5, _080BDE00 @ =gSaveBlock1Ptr
- ldr r3, _080BDE0C @ =0x00002cac
- ldr r2, _080BDE10 @ =sDefaultBattleStartWords
-_080BDD5E:
- ldr r1, [r5]
- lsls r0, r4, 1
- adds r1, r3
- adds r1, r0
- adds r0, r2
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x5
- bls _080BDD5E
- movs r4, 0
- ldr r0, _080BDE00 @ =gSaveBlock1Ptr
- mov r12, r0
- ldr r7, _080BDE14 @ =0x00002cb8
- ldr r0, _080BDE18 @ =0x0000ffff
- adds r5, r0, 0
- ldr r6, _080BDE1C @ =0x00002cc4
-_080BDD84:
- mov r0, r12
- ldr r2, [r0]
- lsls r3, r4, 1
- adds r1, r2, r7
- adds r1, r3
- ldrh r0, [r1]
- orrs r0, r5
- strh r0, [r1]
- adds r2, r6
- adds r2, r3
- ldrh r0, [r2]
- orrs r0, r5
- strh r0, [r2]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x5
- bls _080BDD84
- movs r4, 0
- ldr r7, _080BDE00 @ =gSaveBlock1Ptr
- ldr r6, _080BDE20 @ =0x00002cd0
- ldr r0, _080BDE18 @ =0x0000ffff
- adds r5, r0, 0
-_080BDDB2:
- movs r2, 0
- lsls r0, r4, 3
- adds r0, r4
- lsls r3, r0, 2
-_080BDDBA:
- ldr r1, [r7]
- lsls r0, r2, 1
- adds r0, r3
- adds r1, r6
- adds r1, r0
- ldrh r0, [r1]
- orrs r0, r5
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x8
- bls _080BDDBA
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0xF
- bls _080BDDB2
- movs r4, 0
- ldr r3, _080BDE00 @ =gSaveBlock1Ptr
- ldr r2, _080BDE24 @ =0x00002f10
- movs r1, 0
-_080BDDE6:
- ldr r0, [r3]
- adds r0, r2
- adds r0, r4
- strb r1, [r0]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3F
- bls _080BDDE6
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BDE00: .4byte gSaveBlock1Ptr
-_080BDE04: .4byte 0x00002ca0
-_080BDE08: .4byte sDefaultProfileWords
-_080BDE0C: .4byte 0x00002cac
-_080BDE10: .4byte sDefaultBattleStartWords
-_080BDE14: .4byte 0x00002cb8
-_080BDE18: .4byte 0x0000ffff
-_080BDE1C: .4byte 0x00002cc4
-_080BDE20: .4byte 0x00002cd0
-_080BDE24: .4byte 0x00002f10
- thumb_func_end InitEasyChatPhrases
-
- thumb_func_start sub_80BDE28
-sub_80BDE28: @ 80BDE28
- push {lr}
- bl sub_8143DA8
- ldr r1, _080BDE40 @ =0x0000ffff
- adds r2, r1, 0
- adds r1, r0, 0x6
-_080BDE34:
- strh r2, [r1]
- subs r1, 0x2
- cmp r1, r0
- bge _080BDE34
- pop {r0}
- bx r0
- .align 2, 0
-_080BDE40: .4byte 0x0000ffff
- thumb_func_end sub_80BDE28
-
- thumb_func_start sub_80BDE44
-sub_80BDE44: @ 80BDE44
- push {r4,lr}
- ldr r4, _080BDE60 @ =gUnknown_20399BC
- ldr r0, _080BDE64 @ =0x00003ba4
- bl Alloc
- str r0, [r4]
- cmp r0, 0
- beq _080BDE68
- bl sub_80BDE88
- bl sub_80BDFF8
- movs r0, 0x1
- b _080BDE6A
- .align 2, 0
-_080BDE60: .4byte gUnknown_20399BC
-_080BDE64: .4byte 0x00003ba4
-_080BDE68:
- movs r0, 0
-_080BDE6A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80BDE44
-
- thumb_func_start sub_80BDE70
-sub_80BDE70: @ 80BDE70
- push {lr}
- ldr r0, _080BDE84 @ =gUnknown_20399BC
- ldr r0, [r0]
- cmp r0, 0
- beq _080BDE7E
- bl Free
-_080BDE7E:
- pop {r0}
- bx r0
- .align 2, 0
-_080BDE84: .4byte gUnknown_20399BC
- thumb_func_end sub_80BDE70
-
- thumb_func_start sub_80BDE88
-sub_80BDE88: @ 80BDE88
- push {r4,lr}
- ldr r4, _080BDF30 @ =gUnknown_20399BC
- ldr r1, [r4]
- movs r0, 0
- strh r0, [r1]
- bl GetNationalPokedexCount
- lsls r0, 16
- cmp r0, 0
- beq _080BDEB0
- ldr r0, [r4]
- ldrh r1, [r0]
- adds r2, r1, 0x1
- strh r2, [r0]
- lsls r1, 16
- lsrs r1, 15
- adds r0, 0x2
- adds r0, r1
- movs r1, 0x15
- strh r1, [r0]
-_080BDEB0:
- movs r3, 0x1
-_080BDEB2:
- ldr r0, [r4]
- ldrh r2, [r0]
- adds r1, r2, 0x1
- strh r1, [r0]
- lsls r2, 16
- lsrs r2, 15
- adds r0, 0x2
- adds r0, r2
- strh r3, [r0]
- adds r3, 0x1
- cmp r3, 0x10
- ble _080BDEB2
- ldr r0, _080BDF34 @ =0x0000082c
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080BDF0C
- ldr r0, _080BDF30 @ =gUnknown_20399BC
- ldr r2, [r0]
- ldrh r0, [r2]
- adds r1, r0, 0x1
- strh r1, [r2]
- lsls r0, 16
- lsrs r0, 15
- adds r3, r2, 0x2
- adds r0, r3, r0
- movs r1, 0x11
- strh r1, [r0]
- ldrh r0, [r2]
- adds r1, r0, 0x1
- strh r1, [r2]
- lsls r0, 16
- lsrs r0, 15
- adds r0, r3, r0
- movs r1, 0x12
- strh r1, [r0]
- ldrh r0, [r2]
- adds r1, r0, 0x1
- strh r1, [r2]
- lsls r0, 16
- lsrs r0, 15
- adds r3, r0
- movs r0, 0x13
- strh r0, [r3]
-_080BDF0C:
- bl IsNationalPokedexEnabled
- cmp r0, 0
- beq _080BDF2A
- ldr r0, _080BDF30 @ =gUnknown_20399BC
- ldr r0, [r0]
- ldrh r1, [r0]
- adds r2, r1, 0x1
- strh r2, [r0]
- lsls r1, 16
- lsrs r1, 15
- adds r0, 0x2
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
-_080BDF2A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BDF30: .4byte gUnknown_20399BC
-_080BDF34: .4byte 0x0000082c
- thumb_func_end sub_80BDE88
-
- thumb_func_start sub_80BDF38
-sub_80BDF38: @ 80BDF38
- ldr r0, _080BDF40 @ =gUnknown_20399BC
- ldr r0, [r0]
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080BDF40: .4byte gUnknown_20399BC
- thumb_func_end sub_80BDF38
-
- thumb_func_start sub_80BDF44
-sub_80BDF44: @ 80BDF44
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080BDF60 @ =gUnknown_20399BC
- ldr r1, [r0]
- ldrh r0, [r1]
- cmp r2, r0
- bcs _080BDF64
- lsls r0, r2, 1
- adds r1, 0x2
- adds r1, r0
- ldrb r0, [r1]
- b _080BDF66
- .align 2, 0
-_080BDF60: .4byte gUnknown_20399BC
-_080BDF64:
- movs r0, 0x16
-_080BDF66:
- pop {r1}
- bx r1
- thumb_func_end sub_80BDF44
-
- thumb_func_start sub_80BDF6C
-sub_80BDF6C: @ 80BDF6C
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsls r2, 16
- lsrs r5, r2, 16
- ldr r0, _080BDFAC @ =gEasyChatGroupNamePointers
- lsrs r1, 22
- adds r1, r0
- ldr r1, [r1]
- adds r0, r4, 0
- bl StringCopy
- adds r1, r0, 0
- subs r4, r1, r4
- lsls r4, 16
- lsrs r0, r4, 16
- cmp r0, r5
- bcs _080BDFA0
- movs r2, 0
-_080BDF92:
- strb r2, [r1]
- adds r1, 0x1
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r5
- bcc _080BDF92
-_080BDFA0:
- movs r0, 0xFF
- strb r0, [r1]
- adds r0, r1, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080BDFAC: .4byte gEasyChatGroupNamePointers
- thumb_func_end sub_80BDF6C
-
- thumb_func_start sub_80BDFB0
-sub_80BDFB0: @ 80BDFB0
- lsls r0, 24
- ldr r1, _080BDFBC @ =gEasyChatGroupNamePointers
- lsrs r0, 22
- adds r0, r1
- ldr r0, [r0]
- bx lr
- .align 2, 0
-_080BDFBC: .4byte gEasyChatGroupNamePointers
- thumb_func_end sub_80BDFB0
-
- thumb_func_start CopyEasyChatWordPadded
-CopyEasyChatWordPadded: @ 80BDFC0
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r5, r2, 16
- bl CopyEasyChatWord
- adds r1, r0, 0
- subs r4, r1, r4
- lsls r4, 16
- lsrs r0, r4, 16
- cmp r0, r5
- bcs _080BDFEC
- movs r2, 0
-_080BDFDE:
- strb r2, [r1]
- adds r1, 0x1
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r5
- bcc _080BDFDE
-_080BDFEC:
- movs r0, 0xFF
- strb r0, [r1]
- adds r0, r1, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end CopyEasyChatWordPadded
-
- thumb_func_start sub_80BDFF8
-sub_80BDFF8: @ 80BDFF8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r1, _080BE06C @ =gUnknown_300116C
- movs r0, 0
- str r0, [r1]
- mov r10, r0
-_080BE00A:
- ldr r3, _080BE070 @ =gEasyChatWordsByLetterPointers
- ldr r2, [r1]
- lsls r1, r2, 3
- adds r0, r3, 0x4
- adds r0, r1, r0
- ldr r4, [r0]
- ldr r0, _080BE074 @ =gUnknown_300117C
- str r4, [r0]
- adds r1, r3
- ldr r0, [r1]
- ldr r1, _080BE078 @ =gUnknown_3001184
- str r0, [r1]
- ldr r0, _080BE07C @ =gUnknown_20399BC
- ldr r0, [r0]
- lsls r2, 1
- adds r0, 0x2E
- adds r0, r2
- mov r2, r10
- strh r2, [r0]
- ldr r5, _080BE080 @ =gUnknown_3001178
- mov r3, r10
- str r3, [r5]
- ldr r0, _080BE084 @ =gUnknown_3001170
- str r3, [r0]
- cmp r10, r4
- blt _080BE040
- b _080BE13C
-_080BE040:
- ldr r1, _080BE088 @ =gUnknown_3001180
- mov r9, r1
- adds r2, r0, 0
- mov r8, r2
-_080BE048:
- ldr r3, _080BE078 @ =gUnknown_3001184
- ldr r2, [r3]
- ldrh r0, [r2]
- ldr r1, _080BE08C @ =0x0000ffff
- cmp r0, r1
- bne _080BE0E4
- adds r1, r2, 0x2
- str r1, [r3]
- ldrh r0, [r2, 0x2]
- mov r2, r9
- str r0, [r2]
- adds r1, 0x2
- str r1, [r3]
- mov r3, r8
- ldr r0, [r3]
- adds r0, 0x2
- str r0, [r3]
- b _080BE0EA
- .align 2, 0
-_080BE06C: .4byte gUnknown_300116C
-_080BE070: .4byte gEasyChatWordsByLetterPointers
-_080BE074: .4byte gUnknown_300117C
-_080BE078: .4byte gUnknown_3001184
-_080BE07C: .4byte gUnknown_20399BC
-_080BE080: .4byte gUnknown_3001178
-_080BE084: .4byte gUnknown_3001170
-_080BE088: .4byte gUnknown_3001180
-_080BE08C: .4byte 0x0000ffff
-_080BE090:
- ldr r0, _080BE0D4 @ =gUnknown_20399BC
- ldr r4, [r0]
- ldr r0, _080BE0D8 @ =gUnknown_3001178
- ldr r5, [r0]
- lsls r1, r5, 1
- ldr r0, _080BE0DC @ =gUnknown_300116C
- ldr r3, [r0]
- lsls r0, r3, 4
- adds r0, r3
- lsls r0, 3
- subs r0, r3
- lsls r0, 2
- adds r1, r0
- adds r2, r4, 0
- adds r2, 0x64
- adds r2, r1
- ldr r0, [r6]
- ldr r1, [r7]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- adds r5, 0x1
- ldr r1, _080BE0D8 @ =gUnknown_3001178
- str r5, [r1]
- lsls r3, 1
- adds r4, 0x2E
- adds r4, r3
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- ldr r4, _080BE0E0 @ =gUnknown_3001180
- b _080BE120
- .align 2, 0
-_080BE0D4: .4byte gUnknown_20399BC
-_080BE0D8: .4byte gUnknown_3001178
-_080BE0DC: .4byte gUnknown_300116C
-_080BE0E0: .4byte gUnknown_3001180
-_080BE0E4:
- movs r0, 0x1
- mov r2, r9
- str r0, [r2]
-_080BE0EA:
- ldr r4, _080BE158 @ =gUnknown_3001180
- ldr r1, _080BE15C @ =gUnknown_3001174
- mov r3, r10
- str r3, [r1]
- ldr r0, [r4]
- cmp r10, r0
- bge _080BE120
- adds r6, r1, 0
- ldr r7, _080BE160 @ =gUnknown_3001184
- ldr r4, _080BE158 @ =gUnknown_3001180
-_080BE0FE:
- ldr r0, [r6]
- ldr r1, [r7]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- bl sub_80BE440
- lsls r0, 24
- cmp r0, 0
- bne _080BE090
- ldr r1, [r6]
- adds r1, 0x1
- str r1, [r6]
- mov r2, r9
- ldr r0, [r2]
- cmp r1, r0
- blt _080BE0FE
-_080BE120:
- ldr r2, [r4]
- lsls r1, r2, 1
- ldr r3, _080BE160 @ =gUnknown_3001184
- ldr r0, [r3]
- adds r0, r1
- str r0, [r3]
- mov r0, r8
- ldr r1, [r0]
- adds r1, r2
- str r1, [r0]
- ldr r0, _080BE164 @ =gUnknown_300117C
- ldr r0, [r0]
- cmp r1, r0
- blt _080BE048
-_080BE13C:
- ldr r1, _080BE168 @ =gUnknown_300116C
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x1A
- bgt _080BE14A
- b _080BE00A
-_080BE14A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BE158: .4byte gUnknown_3001180
-_080BE15C: .4byte gUnknown_3001174
-_080BE160: .4byte gUnknown_3001184
-_080BE164: .4byte gUnknown_300117C
-_080BE168: .4byte gUnknown_300116C
- thumb_func_end sub_80BDFF8
-
- thumb_func_start sub_80BE16C
-sub_80BE16C: @ 80BE16C
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- cmp r0, 0
- bne _080BE17E
- adds r0, r1, 0
- bl sub_80BE1E8
- b _080BE184
-_080BE17E:
- adds r0, r1, 0
- bl sub_80BE2F8
-_080BE184:
- ldr r1, _080BE194 @ =gUnknown_20399BC
- ldr r1, [r1]
- ldr r2, _080BE198 @ =0x00003ba0
- adds r1, r2
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080BE194: .4byte gUnknown_20399BC
-_080BE198: .4byte 0x00003ba0
- thumb_func_end sub_80BE16C
-
- thumb_func_start sub_80BE19C
-sub_80BE19C: @ 80BE19C
- push {lr}
- lsls r0, 16
- lsrs r2, r0, 16
- ldr r0, _080BE1BC @ =gUnknown_20399BC
- ldr r1, [r0]
- ldr r3, _080BE1C0 @ =0x00003ba0
- adds r0, r1, r3
- ldrh r0, [r0]
- cmp r2, r0
- bcs _080BE1C8
- lsls r0, r2, 1
- ldr r2, _080BE1C4 @ =0x00003984
- adds r1, r2
- adds r1, r0
- ldrh r0, [r1]
- b _080BE1CA
- .align 2, 0
-_080BE1BC: .4byte gUnknown_20399BC
-_080BE1C0: .4byte 0x00003ba0
-_080BE1C4: .4byte 0x00003984
-_080BE1C8:
- ldr r0, _080BE1D0 @ =0x0000ffff
-_080BE1CA:
- pop {r1}
- bx r1
- .align 2, 0
-_080BE1D0: .4byte 0x0000ffff
- thumb_func_end sub_80BE19C
-
- thumb_func_start sub_80BE1D4
-sub_80BE1D4: @ 80BE1D4
- ldr r0, _080BE1E0 @ =gUnknown_20399BC
- ldr r0, [r0]
- ldr r1, _080BE1E4 @ =0x00003ba0
- adds r0, r1
- ldrh r0, [r0]
- bx lr
- .align 2, 0
-_080BE1E0: .4byte gUnknown_20399BC
-_080BE1E4: .4byte 0x00003ba0
- thumb_func_end sub_80BE1D4
-
- thumb_func_start sub_80BE1E8
-sub_80BE1E8: @ 80BE1E8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 16
- lsrs r2, r0, 16
- ldr r1, _080BE270 @ =gEasyChatGroups
- lsls r0, r2, 3
- adds r0, r1
- ldrh r7, [r0, 0x4]
- cmp r2, 0
- beq _080BE20E
- cmp r2, 0x15
- beq _080BE20E
- cmp r2, 0x12
- beq _080BE20E
- cmp r2, 0x13
- bne _080BE280
-_080BE20E:
- lsls r0, r2, 3
- adds r0, r1
- ldr r0, [r0]
- mov r10, r0
- movs r5, 0
- movs r6, 0
- cmp r6, r7
- bcs _080BE2DC
- movs r0, 0x7F
- ands r0, r2
- lsls r0, 9
- mov r9, r0
- lsls r2, 24
- mov r8, r2
-_080BE22A:
- lsls r0, r5, 1
- mov r1, r10
- adds r4, r0, r1
- ldrh r0, [r4]
- mov r2, r8
- lsrs r1, r2, 24
- bl sub_80BE3A4
- lsls r0, 24
- cmp r0, 0
- beq _080BE262
- ldr r0, _080BE274 @ =gUnknown_20399BC
- ldr r2, [r0]
- adds r1, r6, 0
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 1
- ldr r3, _080BE278 @ =0x00003984
- adds r2, r3
- adds r2, r1
- ldrh r0, [r4]
- ldr r3, _080BE27C @ =0x000001ff
- adds r1, r3, 0
- ands r0, r1
- mov r1, r9
- orrs r0, r1
- strh r0, [r2]
-_080BE262:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, r7
- bcc _080BE22A
- b _080BE2DC
- .align 2, 0
-_080BE270: .4byte gEasyChatGroups
-_080BE274: .4byte gUnknown_20399BC
-_080BE278: .4byte 0x00003984
-_080BE27C: .4byte 0x000001ff
-_080BE280:
- ldr r0, [r0]
- mov r10, r0
- movs r5, 0
- movs r6, 0
- cmp r6, r7
- bcs _080BE2DC
- movs r0, 0x7F
- ands r0, r2
- lsls r0, 9
- mov r9, r0
- lsls r2, 24
- mov r8, r2
-_080BE298:
- lsls r0, r5, 1
- adds r0, r5
- lsls r0, 2
- add r0, r10
- ldrh r4, [r0, 0x4]
- adds r0, r4, 0
- mov r2, r8
- lsrs r1, r2, 24
- bl sub_80BE3A4
- lsls r0, 24
- cmp r0, 0
- beq _080BE2D2
- ldr r0, _080BE2EC @ =gUnknown_20399BC
- ldr r2, [r0]
- adds r1, r6, 0
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 1
- ldr r3, _080BE2F0 @ =0x00003984
- adds r2, r3
- adds r2, r1
- ldr r1, _080BE2F4 @ =0x000001ff
- adds r0, r1, 0
- ands r4, r0
- mov r3, r9
- orrs r4, r3
- strh r4, [r2]
-_080BE2D2:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, r7
- bcc _080BE298
-_080BE2DC:
- adds r0, r6, 0
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080BE2EC: .4byte gUnknown_20399BC
-_080BE2F0: .4byte 0x00003984
-_080BE2F4: .4byte 0x000001ff
- thumb_func_end sub_80BE1E8
-
- thumb_func_start sub_80BE2F8
-sub_80BE2F8: @ 80BE2F8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r1, r0, 16
- movs r4, 0
- movs r6, 0
- ldr r3, _080BE364 @ =gUnknown_20399BC
- ldr r0, [r3]
- lsls r5, r1, 1
- adds r0, 0x2E
- adds r0, r5
- ldrh r0, [r0]
- cmp r6, r0
- bcs _080BE358
- mov r8, r3
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 3
- subs r0, r1
- lsls r7, r0, 2
- ldr r0, _080BE368 @ =0x00003984
- mov r12, r0
-_080BE326:
- mov r0, r8
- ldr r3, [r0]
- adds r1, r6, 0
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 1
- mov r0, r12
- adds r2, r3, r0
- adds r2, r1
- lsls r1, r4, 1
- adds r1, r7
- adds r0, r3, 0
- adds r0, 0x64
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- adds r3, 0x2E
- adds r3, r5
- ldrh r3, [r3]
- cmp r4, r3
- bcc _080BE326
-_080BE358:
- adds r0, r6, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080BE364: .4byte gUnknown_20399BC
-_080BE368: .4byte 0x00003984
- thumb_func_end sub_80BE2F8
-
- thumb_func_start sub_80BE36C
-sub_80BE36C: @ 80BE36C
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- movs r2, 0
- ldr r0, _080BE390 @ =gUnknown_20399BC
- ldr r0, [r0]
- ldrh r1, [r0]
- cmp r2, r1
- bge _080BE39C
- adds r4, r3, 0
- adds r3, r1, 0
- adds r1, r0, 0x2
-_080BE384:
- ldrh r0, [r1]
- cmp r0, r4
- bne _080BE394
- movs r0, 0x1
- b _080BE39E
- .align 2, 0
-_080BE390: .4byte gUnknown_20399BC
-_080BE394:
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, r3
- blt _080BE384
-_080BE39C:
- movs r0, 0
-_080BE39E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80BE36C
-
- thumb_func_start sub_80BE3A4
-sub_80BE3A4: @ 80BE3A4
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 24
- lsrs r0, r1, 24
- cmp r0, 0x13
- bgt _080BE3BC
- cmp r0, 0x12
- bge _080BE3F6
- cmp r0, 0
- beq _080BE3D6
- b _080BE3FA
-_080BE3BC:
- cmp r0, 0x15
- bne _080BE3FA
- adds r0, r4, 0
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- bl GetSetPokedexFlag
- lsls r0, 24
- lsrs r0, 24
- b _080BE40C
-_080BE3D6:
- adds r0, r4, 0
- bl sub_80BE418
- cmp r0, 0
- beq _080BE3F6
- adds r0, r4, 0
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- bl GetSetPokedexFlag
- lsls r0, 24
- lsrs r0, 24
- b _080BE40C
-_080BE3F6:
- movs r0, 0x1
- b _080BE40C
-_080BE3FA:
- ldr r1, _080BE414 @ =gEasyChatGroups
- lsls r0, 3
- adds r0, r1
- ldr r1, [r0]
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x8]
-_080BE40C:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080BE414: .4byte gEasyChatGroups
- thumb_func_end sub_80BE3A4
-
- thumb_func_start sub_80BE418
-sub_80BE418: @ 80BE418
- push {lr}
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0
- ldr r1, _080BE42C @ =gUnknown_83EE004
-_080BE422:
- ldrh r0, [r1]
- cmp r0, r3
- bne _080BE430
- movs r0, 0x1
- b _080BE43A
- .align 2, 0
-_080BE42C: .4byte gUnknown_83EE004
-_080BE430:
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, 0
- beq _080BE422
- movs r0, 0
-_080BE43A:
- pop {r1}
- bx r1
- thumb_func_end sub_80BE418
-
- thumb_func_start sub_80BE440
-sub_80BE440: @ 80BE440
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r5, r0, 25
- lsls r0, 7
- lsrs r4, r0, 23
- adds r0, r5, 0
- bl sub_80BE36C
- lsls r0, 24
- cmp r0, 0
- beq _080BE464
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80BE3A4
- lsls r0, 24
- lsrs r0, 24
- b _080BE466
-_080BE464:
- movs r0, 0
-_080BE466:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80BE440
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/link_rfu.s b/asm/link_rfu.s
index c6918f6ad..b70c877ad 100644
--- a/asm/link_rfu.s
+++ b/asm/link_rfu.s
@@ -8497,7 +8497,7 @@ _0810134A:
lsrs r0, 24
cmp r0, 0x16
beq _0810138A
- bl sub_80BDFB0
+ bl GetEasyChatWordGroupName
adds r2, r0, 0
movs r0, 0x54
adds r3, r4, 0
diff --git a/asm/mon_markings.s b/asm/mon_markings.s
index 5408a70be..a0dad2280 100644
--- a/asm/mon_markings.s
+++ b/asm/mon_markings.s
@@ -981,4 +981,10 @@ sub_80BEBD0: @ 80BEBD0
_080BEBE8: .4byte gUnknown_83EE028
thumb_func_end sub_80BEBD0
+ .section ewram_data
+ .align 2, 0
+gUnknown_20399C0:
+ .4byte 0
+
+ .text
.align 2, 0 @ Don't pad with nop.
diff --git a/data/strings.s b/data/strings.s
index a4b4c51b4..5599847de 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -4368,7 +4368,7 @@ gEasyChatGroupName_Pokemon2:: @ 841DFDE
.string "POKéMON2$"
@ trade-related
-gUnknown_841E093:: @ 841E093
+gText_ThreeQuestionMarks:: @ 841E093
.string "???$"
.string "$"
diff --git a/include/constants/easy_chat.h b/include/constants/easy_chat.h
index 5d6536490..11a8a1ba7 100644
--- a/include/constants/easy_chat.h
+++ b/include/constants/easy_chat.h
@@ -23,6 +23,7 @@
#define EC_GROUP_MOVE_2 0x13
#define EC_GROUP_TRENDY_SAYING 0x14
#define EC_GROUP_POKEMON 0x15
+#define EC_NUM_GROUPS 0x16
// TRAINER
#define EC_WORD_I_CHOOSE_YOU (EC_GROUP_TRAINER << 9) | 0x0
@@ -1073,5 +1074,6 @@
#define EC_GROUP(word) ((word) >> 9)
#define EC_INDEX(word) ((word) & 0x1FF)
+#define EC_WORD(groupId, index) ((((groupId) & 0x7F) << 9) | ((index) & 0x1FF))
#endif // GUARD_CONSTANTS_EASY_CHAT_H
diff --git a/include/easy_chat.h b/include/easy_chat.h
index b64916123..3aee386ad 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -2,6 +2,7 @@
#define GUARD_EASYCHAT_H
#include "global.h"
+#include "constants/easy_chat.h"
struct EasyChatWordInfo
{
@@ -31,13 +32,21 @@ struct EasyChatWordsByLetter
void InitEasyChatPhrases(void);
void easy_chat_input_maybe(void);
-void CopyEasyChatWord(u8 *dest, u16 word);
+u8 *CopyEasyChatWord(u8 *dest, u16 word);
bool32 sub_811F8D8(u16 word);
void InitializeEasyChatWordArray(u16 *words, u16 length);
-void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2);
+u8 *ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2);
bool8 ECWord_CheckIfOutsideOfValidRange(u16 word);
void sub_80BDE28(void);
void InitEasyChatPhrases(void);
void EnableRareWord(u8);
+bool8 sub_80BDE44(void);
+void sub_80BDE70(void);
+u8 sub_80BDF44(u8);
+void sub_80BE16C(int, u16);
+u16 sub_80BE1D4(void);
+u16 sub_80BE19C(u16);
+const u8 *GetEasyChatWordGroupName(u8);
+u8 *CopyEasyChatWordPadded(u8 *, u16, u16);
#endif // GUARD_EASYCHAT_H
diff --git a/include/global.h b/include/global.h
index 9588deae3..22faa7b1c 100644
--- a/include/global.h
+++ b/include/global.h
@@ -754,10 +754,10 @@ struct SaveBlock1
/*0x1000*/ u16 vars[VARS_COUNT];
/*0x1200*/ u32 gameStats[NUM_GAME_STATS];
/*0x1300*/ struct QuestLog questLog[4];
- /*0x2CA0*/ u16 unk2CA0[6];
- /*0x2CAC*/ u16 unk2CAC[6];
- /*0x2CB8*/ u16 unk2CB8[6];
- /*0x2CC4*/ u16 unk2CC4[6];
+ /*0x2CA0*/ u16 easyChatProfile[6];
+ /*0x2CAC*/ u16 easyChatBattleStart[6];
+ /*0x2CB8*/ u16 easyChatBattleWon[6];
+ /*0x2CC4*/ u16 easyChatBattleLost[6];
/*0x2CD0*/ struct MailStruct mail[MAIL_COUNT];
/*0x2F10*/ u8 additionalPhrases[EASY_CHAT_EXTRA_PHRASES_SIZE];
/*0x2F18*/ OldMan oldMan; // unused
diff --git a/include/mevent.h b/include/mevent.h
index 6b67aa27c..31ab9e421 100644
--- a/include/mevent.h
+++ b/include/mevent.h
@@ -69,5 +69,6 @@ u32 MENews_GetInput(u16 input);
void sub_8143D24(void);
u16 sub_81445C0(u32 command);
void sub_8144714(u32 a0, u32 a1);
+u16 *sub_8143DA8(void);
#endif //GUARD_MEVENT_H
diff --git a/include/strings.h b/include/strings.h
index 86a26f332..45f228e19 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -708,5 +708,6 @@ extern const u8 gEasyChatGroupName_Move1[];
extern const u8 gEasyChatGroupName_Move2[];
extern const u8 gEasyChatGroupName_TrendySaying[];
extern const u8 gEasyChatGroupName_Pokemon2[];
+extern const u8 gText_ThreeQuestionMarks[];
#endif //GUARD_STRINGS_H
diff --git a/ld_script.txt b/ld_script.txt
index 02bf0d371..4955916e3 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -174,7 +174,7 @@ SECTIONS {
src/battle_anim_utility_funcs.o(.text);
src/battle_intro.o(.text);
asm/bike.o(.text);
- asm/easy_chat.o(.text);
+ src/easy_chat.o(.text);
asm/mon_markings.o(.text);
src/mail.o(.text);
src/menu_helpers.o(.text);
diff --git a/src/easy_chat.c b/src/easy_chat.c
index 3f03dec54..76fcdf109 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -13,6 +13,7 @@
#include "main.h"
#include "mevent.h"
#include "menu.h"
+#include "mail.h"
#include "overworld.h"
#include "palette.h"
#include "pokedex.h"
@@ -29,210 +30,33 @@
#include "constants/songs.h"
#include "constants/species.h"
-#define EZCHAT_TASK_STATE 0
-#define EZCHAT_TASK_TYPE 1
-#define EZCHAT_TASK_WORDS 2
-#define EZCHAT_TASK_MAINCALLBACK 4
-#define EZCHAT_TASK_UNK06 6
-#define EZCHAT_TASK_SIZE 7
-
-EWRAM_DATA struct EasyChatScreen *sEasyChatScreen = NULL;
-EWRAM_DATA struct Unk203A11C *sUnknown_0203A11C = NULL;
-EWRAM_DATA struct Unk203A120 *sUnknown_0203A120 = NULL;
-
-void sub_811A2C0(u8);
-void MainCallback_EasyChatScreen(void);
-bool8 sub_811A428(u8);
-void sub_811A2FC(u8);
-void sub_811A4D0(MainCallback);
-bool32 sub_811A88C(u16);
-void sub_811A8A4(u16);
-bool8 EasyChat_AllocateResources(u8, u16 *, u8);
-void EasyChat_FreeResources(void);
-u16 sub_811AAAC(void);
-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);
-u16 sub_811B1B4(void);
-u8 GetEasyChatScreenFrameId(void);
-u8 GetEachChatScreenTemplateId(u8);
-void sub_811BDF0(u8 *);
-void sub_811BF78(void);
-bool8 sub_811BF8C(void);
-bool8 sub_811BFA4(void);
-void sub_811C13C(void);
-void sub_811C158(u16);
-bool8 sub_811C170(void);
-bool8 sub_811F28C(void);
-void sub_811F2B8(void);
-u8 sub_811F3AC(void);
-int FooterHasFourOptions(void);
-int sub_811B184(void);
-int sub_811B264(void);
-int sub_811B32C(void);
-int sub_811B2B0(void);
-int sub_811B33C(void);
-int sub_811B368(void);
-u16 sub_811B528(int);
-u16 sub_811B794(u32);
-int sub_811B394(void);
-u8 sub_811B2A4(void);
-void sub_811B3E4(void);
-void sub_811BE9C(void);
-int sub_811B4EC(void);
-void sub_811B418(void);
-void sub_811B454(void);
-int sub_811BD64(void);
-int sub_811BDB0(void);
-int sub_811BD2C(void);
-int sub_811BCF4(void);
-u16 sub_811B8E8(void);
-u8 sub_811F3B8(u8);
-void sub_811F548(int, u16);
-int sub_811B908(void);
-u16 sub_811F5B0(void);
-void sub_811B488(u16);
-u16 sub_811B940(void);
-u16 sub_811F578(u16);
-int sub_811BF88(int);
-u16 sub_811B8C8(void);
-int sub_811B568(u32);
-int sub_811B634(u32);
-int sub_811B6C4(u32);
-void sub_811B978(void);
-void sub_811B744(void);
-u8 sub_811B9C8(void);
-void sub_811B768(void);
-u8 sub_811B960(u8);
-void sub_811B9A0(void);
-u8 sub_811BA1C(void);
-int sub_811BF20(void);
-u16 sub_811BF40(void);
-bool8 sub_811CE94(void);
-void sub_811CF64(void);
-void sub_811CF04(void);
-void sub_811D60C(void);
-void sub_811D424(u16 *);
-void sub_811D230(void);
-void sub_811E948(void);
-void sub_811CFCC(void);
-void sub_811D0BC(void);
-void sub_811D2C8(void);
-void sub_811D684(void);
-void sub_811DE90(void);
-void sub_811DEC4(void);
-void sub_811DF28(struct Sprite *);
-void sub_811DE5C(u8, u8, u8, u8);
-void sub_811E5D4(void);
-void sub_811E720(void);
-void sub_811E828(void);
-bool8 sub_811C2D4(void);
-bool8 sub_811C30C(void);
-bool8 sub_811C3E4(void);
-bool8 sub_811C48C(void);
-bool8 sub_811C404(void);
-bool8 sub_811C448(void);
-bool8 sub_811C4D0(void);
-bool8 sub_811C518(void);
-bool8 sub_811C554(void);
-bool8 sub_811C620(void);
-bool8 sub_811C830(void);
-bool8 sub_811C8F0(void);
-bool8 sub_811C99C(void);
-bool8 sub_811CA5C(void);
-bool8 sub_811C780(void);
-bool8 sub_811C78C(void);
-bool8 sub_811C7D4(void);
-bool8 sub_811CB18(void);
-bool8 sub_811CB98(void);
-bool8 sub_811CB24(void);
-bool8 sub_811CC90(void);
-bool8 sub_811CC08(void);
-bool8 sub_811C6C0(void);
-bool8 sub_811CD14(void);
-bool8 sub_811CD54(void);
-bool8 sub_811CD94(void);
-bool8 sub_811CDD4(void);
-bool8 sub_811CE14(void);
-bool8 sub_811CE54(void);
-void sub_811DF60(u8, u8);
-int GetFooterOptionXOffset(int);
-void sub_811DF90(void);
-void sub_811D104(u8);
-void sub_811D214(u8);
-void sub_811DFB0(void);
-void sub_811D6D4(void);
-void sub_811D9CC(int);
-void sub_811E3AC(void);
-bool8 sub_811E418(void);
-void sub_811DFC8(void);
-void sub_811E6E0(int);
-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);
-void sub_811D9B4(void);
-void sub_811D698(u32);
-void sub_811E288(void);
-void sub_811E794(void);
-void sub_811E380(void);
-void sub_811E7F8(void);
-void sub_811E30C(void);
-void sub_811D7A4(void);
-void sub_811D7C8(void);
-int sub_811DE48(void);
-void sub_811D7EC(void);
-void sub_811D830(void);
-void sub_811D058(u8, u8, const u8 *, u8, u8, u8, u8, u8, u8);
-void sub_811DD84(void);
-void sub_811D6F4(void);
-void PrintEasyChatKeyboardText(void);
-void sub_811D794(void);
-const u8 *GetEasyChatWordGroupName(u8);
-void sub_811D864(u8, u8);
-void sub_811D950(u8, u8);
-void sub_811DADC(u8);
-void sub_811DC28(int, int, int, int);
-void sub_811E0EC(s8, s8);
-void sub_811E1A4(s8, s8);
-void sub_811E2DC(struct Sprite *);
-void sub_811E34C(u8, u8);
-bool8 sub_811F0F8(void);
-u16 sub_811F108(void);
-void sub_811F2D4(void);
-void sub_811F46C(void);
-u8 *CopyEasyChatWordPadded(u8 *, u16, u16);
-u8 sub_811F860(u16);
-u16 sub_811F5C4(u16);
-u16 sub_811F6B8(u16);
-bool8 sub_811F764(u16, u8);
-int sub_811F838(u16);
-void DoQuizAnswerEasyChatScreen(void);
-void DoQuizQuestionEasyChatScreen(void);
-void DoQuizSetAnswerEasyChatScreen(void);
-void DoQuizSetQuestionEasyChatScreen(void);
+struct Unk203A120
+{
+ u16 unk0;
+ u16 unk2[EC_NUM_GROUPS];
+ u16 unk2E[27];
+ u16 unk64[27][270];
+ u8 filler3958[0x2C];
+ u16 unk3984[0x10E];
+ u16 unk3BA0;
+}; /*size = 0x3BA4*/
+
+static EWRAM_DATA struct Unk203A120 * gUnknown_20399BC = NULL;
+
+static bool8 sub_80BDCA8(void);
+static u16 GetRandomECPokemon(void);
+static void sub_80BDE88(void);
+static void sub_80BDFF8(void);
+static u16 sub_80BE1E8(u16);
+static u16 sub_80BE2F8(u16);
+static bool8 sub_80BE3A4(u16, u8);
+static int sub_80BE418(u16 species);
+static u8 sub_80BE440(u16 word);
#include "data/easy_chat/easy_chat_groups.h"
#include "data/easy_chat/easy_chat_words_by_letter.h"
-const u8 *const gEasyChatGroupNamePointers[] = {
+static const u8 *const gEasyChatGroupNamePointers[] = {
[EC_GROUP_POKEMON] = gEasyChatGroupName_Pokemon,
[EC_GROUP_TRAINER] = gEasyChatGroupName_Trainer,
[EC_GROUP_STATUS] = gEasyChatGroupName_Status,
@@ -257,14 +81,14 @@ const u8 *const gEasyChatGroupNamePointers[] = {
[EC_GROUP_POKEMON_2] = gEasyChatGroupName_Pokemon2,
};
-const u16 sDefaultProfileWords[] = {
+static const u16 sDefaultProfileWords[] = {
EC_WORD_I_AM,
EC_WORD_A,
EC_WORD_POKEMON,
EC_WORD_FRIEND,
};
-const u16 sDefaultBattleStartWords[] = {
+static const u16 sDefaultBattleStartWords[] = {
EC_WORD_ARE,
EC_WORD_YOU,
EC_WORD_READY,
@@ -273,3767 +97,39 @@ const u16 sDefaultBattleStartWords[] = {
EC_WORD_EXCL,
};
-const u16 gUnknown_83EE004[] = {
+static const u16 gUnknown_83EE004[] = {
SPECIES_DEOXYS,
};
-/*
-
-void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback, u8 displayedPersonType)
-{
- u8 taskId;
-
- ResetTasks();
- taskId = CreateTask(sub_811A2C0, 0);
- gTasks[taskId].data[EZCHAT_TASK_TYPE] = type;
- gTasks[taskId].data[EZCHAT_TASK_SIZE] = displayedPersonType;
- SetWordTaskArg(taskId, EZCHAT_TASK_WORDS, (u32)words);
- SetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK, (u32)callback);
- SetMainCallback2(MainCallback_EasyChatScreen);
-}
-
-void MainCallback_EasyChatScreen(void)
-{
- RunTasks();
- AnimateSprites();
- BuildOamBuffer();
- UpdatePaletteFade();
-}
-
-void VBlankCallback_EasyChatScreen(void)
-{
- TransferPlttBuffer();
- LoadOam();
- ProcessSpriteCopyRequests();
-}
-
-void sub_811A2A4(u8 taskId, TaskFunc taskFunc)
-{
- gTasks[taskId].func = taskFunc;
- gTasks[taskId].data[EZCHAT_TASK_STATE] = 0;
-}
-
-void sub_811A2C0(u8 taskId)
-{
- if (!IsUpdateLinkStateCBActive())
- {
- while (sub_811A428(taskId));
- }
- else
- {
- if (sub_811A428(taskId) == TRUE)
- {
- return;
- }
- }
- sub_811A2A4(taskId, sub_811A2FC);
-}
-
-void sub_811A2FC(u8 taskId)
-{
- u16 v0;
- s16 *data;
-
- data = gTasks[taskId].data;
- switch (data[EZCHAT_TASK_STATE])
- {
- case 0:
- SetVBlankCallback(VBlankCallback_EasyChatScreen);
- BlendPalettes(0xFFFFFFFF, 16, 0);
- BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK);
- data[EZCHAT_TASK_STATE] = 5;
- break;
- case 1:
- v0 = sub_811AAAC();
- if (sub_811A88C(v0))
- {
- BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK);
- data[EZCHAT_TASK_STATE] = 3;
- data[EZCHAT_TASK_UNK06] = v0;
- }
- else if (v0 == 0x18)
- {
- BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK);
- data[EZCHAT_TASK_STATE] = 4;
- }
- else if (v0 != 0)
- {
- PlaySE(SE_SELECT);
- sub_811C158(v0);
- data[EZCHAT_TASK_STATE] ++;
- }
- break;
- case 2:
- if (!sub_811C170())
- data[EZCHAT_TASK_STATE] = 1;
- break;
- case 3:
- if (!gPaletteFade.active)
- sub_811A8A4(data[EZCHAT_TASK_UNK06]);
- break;
- case 4:
- if (!gPaletteFade.active)
- sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
- break;
- case 5:
- if (!gPaletteFade.active)
- data[EZCHAT_TASK_STATE] = 1;
- break;
- }
-}
-bool8 sub_811A428(u8 taskId)
-{
- s16 *data;
-
- data = gTasks[taskId].data;
- switch (data[EZCHAT_TASK_STATE])
- {
- case 0:
- SetVBlankCallback(NULL);
- ResetSpriteData();
- FreeAllSpritePalettes();
- ResetPaletteFade();
- break;
- case 1:
- if (!sub_811F28C())
- {
- sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
- }
- break;
- case 2:
- if (!EasyChat_AllocateResources(data[EZCHAT_TASK_TYPE], (u16 *)GetWordTaskArg(taskId, EZCHAT_TASK_WORDS), data[EZCHAT_TASK_SIZE]))
- {
- sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
- }
- break;
- case 3:
- if (!sub_811BF8C())
- {
- sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
- }
- break;
- case 4:
- if (sub_811BFA4())
- {
- return TRUE;
- }
- break;
- default:
- return FALSE;
- }
- data[EZCHAT_TASK_STATE] ++;
- return TRUE;
-}
-
-void sub_811A4D0(MainCallback callback)
-{
- sub_811C13C();
- EasyChat_FreeResources();
- sub_811F2B8();
- FreeAllWindowBuffers();
- SetMainCallback2(callback);
-}
-
-void ShowEasyChatScreen(void)
-{
- int i;
- u16 *words;
- struct MauvilleManBard *bard;
- u8 displayedPersonType = EASY_CHAT_PERSON_DISPLAY_NONE;
- switch (gSpecialVar_0x8004)
- {
- case EASY_CHAT_TYPE_PROFILE:
- words = gSaveBlock1Ptr->easyChatProfile;
- break;
- case EASY_CHAT_TYPE_BATTLE_START:
- words = gSaveBlock1Ptr->easyChatBattleStart;
- break;
- case EASY_CHAT_TYPE_BATTLE_WON:
- words = gSaveBlock1Ptr->easyChatBattleWon;
- break;
- case EASY_CHAT_TYPE_BATTLE_LOST:
- words = gSaveBlock1Ptr->easyChatBattleLost;
- break;
- case EASY_CHAT_TYPE_MAIL:
- words = gSaveBlock1Ptr->mail[gSpecialVar_0x8005].words;
- break;
- case EASY_CHAT_TYPE_BARD_SONG:
- bard = &gSaveBlock1Ptr->oldMan.bard;
- for (i = 0; i < 6; i ++)
- bard->temporaryLyrics[i] = bard->songLyrics[i];
-
- words = bard->temporaryLyrics;
- break;
- case EASY_CHAT_TYPE_INTERVIEW:
- words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].bravoTrainer.words;
- displayedPersonType = gSpecialVar_0x8006;
- break;
- case EASY_CHAT_TYPE_FAN_CLUB:
- words = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.words[gSpecialVar_0x8006];
- displayedPersonType = EASY_CHAT_PERSON_REPORTER_FEMALE;
- break;
- case EASY_CHAT_TYPE_UNK_8:
- words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].unkShow04.words;
- displayedPersonType = EASY_CHAT_PERSON_REPORTER_MALE;
- break;
- case EASY_CHAT_TYPE_TRENDY_PHRASE:
- words = (u16 *)gStringVar3;
- words[0] = gSaveBlock1Ptr->easyChatPairs[0].words[0];
- words[1] = gSaveBlock1Ptr->easyChatPairs[0].words[1];
- break;
- case EASY_CHAT_TYPE_GABBY_AND_TY:
- words = gSaveBlock1Ptr->gabbyAndTyData.quote;
- *words = -1;
- displayedPersonType = EASY_CHAT_PERSON_REPORTER_FEMALE;
- break;
- case EASY_CHAT_TYPE_CONTEST_INTERVIEW:
- words = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].bravoTrainer.words[gSpecialVar_0x8006];
- displayedPersonType = EASY_CHAT_PERSON_REPORTER_MALE;
- break;
- case EASY_CHAT_TYPE_BATTLE_TOWER_INTERVIEW:
- words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.words18;
- displayedPersonType = EASY_CHAT_PERSON_REPORTER_FEMALE;
- break;
- case EASY_CHAT_TYPE_GOOD_SAYING:
- words = (u16 *)gStringVar3;
- InitializeEasyChatWordArray(words, 2);
- break;
- case EASY_CHAT_TYPE_FAN_QUESTION:
- words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanClubSpecial.words;
- words[0] = -1;
- displayedPersonType = EASY_CHAT_PERSON_BOY;
- break;
- case EASY_CHAT_TYPE_QUIZ_ANSWER:
- words = &gSaveBlock1Ptr->lilycoveLady.quiz.playerAnswer;
- break;
- case EASY_CHAT_TYPE_QUIZ_QUESTION:
- return;
- case EASY_CHAT_TYPE_QUIZ_SET_QUESTION:
- words = gSaveBlock1Ptr->lilycoveLady.quiz.question;
- break;
- case EASY_CHAT_TYPE_QUIZ_SET_ANSWER:
- words = &gSaveBlock1Ptr->lilycoveLady.quiz.correctAnswer;
- break;
- case EASY_CHAT_TYPE_APPRENTICE:
- words = gSaveBlock2Ptr->apprentices[0].easyChatWords;
- break;
- case EASY_CHAT_TYPE_QUESTIONNAIRE:
- words = sub_801B058();
- break;
- default:
- return;
- }
-
- CleanupOverworldWindowsAndTilemaps();
- DoEasyChatScreen(gSpecialVar_0x8004, words, CB2_ReturnToFieldContinueScript, displayedPersonType);
-}
-
-void CB2_QuizLadyQuestion(void)
-{
- LilycoveLady *lilycoveLady;
-
- UpdatePaletteFade();
- switch (gMain.state)
- {
- case 0:
- FadeScreen(1, 0);
- break;
- case 1:
- if (!gPaletteFade.active)
- {
- lilycoveLady = &gSaveBlock1Ptr->lilycoveLady;
- lilycoveLady->quiz.playerAnswer = -1;
- CleanupOverworldWindowsAndTilemaps();
- DoQuizQuestionEasyChatScreen();
- }
- return;
- }
- gMain.state ++;
-}
-
-void QuizLadyShowQuizQuestion(void)
-{
- SetMainCallback2(CB2_QuizLadyQuestion);
-}
-
-int sub_811A868(u16 word)
-{
- int i;
-
- for (i = 0; i < ARRAY_COUNT(sUnknown_08597530); i ++)
- {
- if (word == sUnknown_08597530[i].word)
- return i;
- }
- return -1;
-}
-
-bool32 sub_811A88C(u16 word)
-{
- return sub_811A868(word) == -1 ? FALSE : TRUE;
-}
-
-void sub_811A8A4(u16 word)
-{
- int i;
-
- i = sub_811A868(word);
- ResetTasks();
- sub_811A4D0(sUnknown_08597530[i].callback);
-}
-
-void DoQuizAnswerEasyChatScreen(void)
-{
- DoEasyChatScreen(
- EASY_CHAT_TYPE_QUIZ_ANSWER,
- &gSaveBlock1Ptr->lilycoveLady.quiz.playerAnswer,
- CB2_ReturnToFieldContinueScript,
- EASY_CHAT_PERSON_DISPLAY_NONE);
-}
-
-void DoQuizQuestionEasyChatScreen(void)
-{
- DoEasyChatScreen(EASY_CHAT_TYPE_QUIZ_QUESTION,
- gSaveBlock1Ptr->lilycoveLady.quiz.question,
- CB2_ReturnToFieldContinueScript,
- EASY_CHAT_PERSON_DISPLAY_NONE);
-}
-
-void DoQuizSetAnswerEasyChatScreen(void)
-{
- DoEasyChatScreen(EASY_CHAT_TYPE_QUIZ_SET_ANSWER,
- &gSaveBlock1Ptr->lilycoveLady.quiz.correctAnswer,
- CB2_ReturnToFieldContinueScript,
- EASY_CHAT_PERSON_DISPLAY_NONE);
-}
-
-void DoQuizSetQuestionEasyChatScreen(void)
-{
- DoEasyChatScreen(EASY_CHAT_TYPE_QUIZ_SET_QUESTION,
- gSaveBlock1Ptr->lilycoveLady.quiz.question,
- CB2_ReturnToFieldContinueScript,
- EASY_CHAT_PERSON_DISPLAY_NONE);
-}
-
-bool8 EasyChat_AllocateResources(u8 type, u16 *words, u8 displayedPersonType)
-{
- u8 templateId;
- int i;
-
- sEasyChatScreen = malloc(sizeof(*sEasyChatScreen));
- if (sEasyChatScreen == NULL)
- return FALSE;
-
- sEasyChatScreen->type = type;
- sEasyChatScreen->words = words;
- sEasyChatScreen->mainCursorColumn = 0;
- sEasyChatScreen->mainCursorRow = 0;
- sEasyChatScreen->unk_09 = 0;
- sEasyChatScreen->displayedPersonType = displayedPersonType;
- sEasyChatScreen->unk_13 = 0;
- templateId = GetEachChatScreenTemplateId(type);
- if (type == EASY_CHAT_TYPE_QUIZ_QUESTION)
- {
- sub_811BDF0(sEasyChatScreen->unk_14);
- sEasyChatScreen->titleText = sEasyChatScreen->unk_14;
- sEasyChatScreen->state = 7;
- }
- else
- {
- sEasyChatScreen->state = 0;
- sEasyChatScreen->titleText = sEasyChatScreenTemplates[templateId].titleText;
- }
-
- sEasyChatScreen->numColumns = sEasyChatScreenTemplates[templateId].numColumns;
- sEasyChatScreen->numRows = sEasyChatScreenTemplates[templateId].numRows;
- sEasyChatScreen->unk_07 = sEasyChatScreen->numColumns * sEasyChatScreen->numRows;
- sEasyChatScreen->templateId = templateId;
- if (sEasyChatScreen->unk_07 > 9)
- sEasyChatScreen->unk_07 = 9;
-
- if (words != NULL)
- {
- CpuCopy16(words, sEasyChatScreen->ecWordBuffer, sEasyChatScreen->unk_07 * sizeof(u16));
- }
- else
- {
- for (i = 0; i < sEasyChatScreen->unk_07; i ++)
- sEasyChatScreen->ecWordBuffer[i] = -1;
-
- sEasyChatScreen->words = sEasyChatScreen->ecWordBuffer;
- }
-
- sEasyChatScreen->unk_0d = (sub_811F3AC() - 1) / 2 + 1;
- return TRUE;
-}
-
-void EasyChat_FreeResources(void)
-{
- if (sEasyChatScreen != NULL)
- FREE_AND_SET_NULL(sEasyChatScreen);
-}
-
-u16 sub_811AAAC(void)
-{
- switch (sEasyChatScreen->state)
- {
- case 0:
- return sub_811AB68();
- case 1:
- return sub_811ACDC();
- case 2:
- return sub_811AE44();
- case 3:
- return sub_811AF00();
- case 4:
- return sub_811AF8C();
- case 5:
- return sub_811B040();
- case 6:
- return sub_811AFEC();
- case 7:
- return sub_811B08C();
- case 8:
- return sub_811B0BC();
- case 9:
- return sub_811B0E8();
- case 10:
- return sub_811B0F8();
- }
- return 0;
-}
-
-bool32 sub_811AB44(void)
-{
- switch (GetEasyChatScreenFrameId())
- {
- case 2:
- case 7:
- case 8:
- return TRUE;
- }
- return FALSE;
-}
-
-u16 sub_811AB68(void)
-{
- do
- {
- if (gMain.newKeys & A_BUTTON)
- {
- sub_811BF78();
- sEasyChatScreen->state = 2;
- sEasyChatScreen->unk_0a = 0;
- sEasyChatScreen->unk_0b = 0;
- sEasyChatScreen->unk_0c = 0;
- return 9;
- }
- else if (gMain.newKeys & B_BUTTON)
- {
- return sub_811B150();
- }
- else if (gMain.newKeys & START_BUTTON)
- {
- return sub_811B1B4();
- }
- else if (gMain.newKeys & DPAD_UP)
- {
- sEasyChatScreen->mainCursorRow--;
- break;
- }
- else if (gMain.newKeys & DPAD_LEFT)
- {
- sEasyChatScreen->mainCursorColumn--;
- break;
- }
- else if (gMain.newKeys & DPAD_DOWN)
- {
- sEasyChatScreen->mainCursorRow++;
- break;
- }
- else if (gMain.newKeys & DPAD_RIGHT)
- {
- sEasyChatScreen->mainCursorColumn++;
- break;
- }
-
- return 0;
- } while (0);
-
- if (sEasyChatScreen->mainCursorRow < 0)
- sEasyChatScreen->mainCursorRow = sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows;
-
- if (sEasyChatScreen->mainCursorRow > sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows)
- sEasyChatScreen->mainCursorRow = 0;
-
- if (sEasyChatScreen->mainCursorRow == sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows)
- {
- if (sEasyChatScreen->mainCursorColumn > 2)
- sEasyChatScreen->mainCursorColumn = 2;
-
- sEasyChatScreen->state = 1;
- return 3;
- }
-
- if (sEasyChatScreen->mainCursorColumn < 0)
- sEasyChatScreen->mainCursorColumn = sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns - 1;
-
- if (sEasyChatScreen->mainCursorColumn >= sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns)
- sEasyChatScreen->mainCursorColumn = 0;
-
- if (sub_811AB44() && sEasyChatScreen->mainCursorColumn == 1 && sEasyChatScreen->mainCursorRow == 4)
- sEasyChatScreen->mainCursorColumn = 0;
-
- return 2;
-}
-
-u16 sub_811ACDC(void)
-{
- do
- {
- if (gMain.newKeys & A_BUTTON)
- {
- switch (sEasyChatScreen->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)
- {
- sEasyChatScreen->mainCursorRow--;
- break;
- }
- else if (gMain.newKeys & DPAD_LEFT)
- {
- sEasyChatScreen->mainCursorColumn--;
- break;
- }
- else if (gMain.newKeys & DPAD_DOWN)
- {
- sEasyChatScreen->mainCursorRow = 0;
- break;
- }
- else if (gMain.newKeys & DPAD_RIGHT)
- {
- sEasyChatScreen->mainCursorColumn++;
- break;
- }
-
- return 0;
- } while (0);
-
- if (sEasyChatScreen->mainCursorRow == sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows)
- {
- int numFooterColumns = FooterHasFourOptions() ? 4 : 3;
- if (sEasyChatScreen->mainCursorColumn < 0)
- sEasyChatScreen->mainCursorColumn = numFooterColumns - 1;
-
- if (sEasyChatScreen->mainCursorColumn >= numFooterColumns)
- sEasyChatScreen->mainCursorColumn = 0;
-
- return 3;
- }
-
- if (sEasyChatScreen->mainCursorColumn >= sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns)
- sEasyChatScreen->mainCursorColumn = sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns - 1;
-
- if (sub_811AB44() && sEasyChatScreen->mainCursorColumn == 1 && sEasyChatScreen->mainCursorRow == 4)
- sEasyChatScreen->mainCursorColumn = 0;
-
- sEasyChatScreen->state = 0;
- return 2;
-}
-
-u16 sub_811AE44(void)
-{
- if (gMain.newKeys & B_BUTTON)
- return sub_811B32C();
-
- if (gMain.newKeys & A_BUTTON)
- {
- if (sEasyChatScreen->unk_0a != -1)
- return sub_811B2B0();
-
- switch (sEasyChatScreen->unk_0b)
- {
- case 0:
- return sub_811B33C();
- case 1:
- return sub_811B368();
- case 2:
- return sub_811B32C();
- }
- }
-
- 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;
-}
-
-u16 sub_811AF00(void)
-{
- if (gMain.newKeys & B_BUTTON)
- {
- sEasyChatScreen->state = 2;
- return 14;
- }
-
- 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;
-}
-
-u16 sub_811AF8C(void)
-{
- u8 var0;
-
- switch (Menu_ProcessInputNoWrapClearOnChoose())
- {
- case MENU_B_PRESSED: // B Button
- case 1: // No
- sEasyChatScreen->state = sub_811B2A4();
- return 7;
- case 0: // Yes
- gSpecialVar_Result = 0;
- var0 = sEasyChatScreen->type - EASY_CHAT_TYPE_QUIZ_SET_QUESTION;
- if (var0 < 2)
- sub_811B3E4();
-
- return 24;
- default:
- return 0;
- }
-}
-
-u16 sub_811AFEC(void)
-{
- switch (Menu_ProcessInputNoWrapClearOnChoose())
- {
- case MENU_B_PRESSED: // B Button
- case 1: // No
- sEasyChatScreen->state = sub_811B2A4();
- return 7;
- case 0: // Yes
- sub_811BE9C();
- gSpecialVar_Result = sub_811B4EC();
- sub_811B3E4();
- return 24;
- default:
- return 0;
- }
-}
-
-u16 sub_811B040(void)
-{
- switch (Menu_ProcessInputNoWrapClearOnChoose())
- {
- case MENU_B_PRESSED: // B Button
- case 1: // No
- sEasyChatScreen->state = 1;
- return 7;
- case 0: // Yes
- sub_811B418();
- sEasyChatScreen->state = 1;
- return 8;
- default:
- return 0;
- }
-}
-
-u16 sub_811B08C(void)
-{
- if (gMain.newKeys & A_BUTTON)
- return 26;
-
- if (gMain.newKeys & B_BUTTON)
- return sub_811B150();
-
- return 0;
-}
-
-u16 sub_811B0BC(void)
-{
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
- {
- sEasyChatScreen->state = sub_811B2A4();
- return 7;
- }
-
- return 0;
-}
-
-u16 sub_811B0E8(void)
-{
- sEasyChatScreen->state = 10;
- return 6;
-}
-
-u16 sub_811B0F8(void)
-{
- switch (Menu_ProcessInputNoWrapClearOnChoose())
- {
- case MENU_B_PRESSED: // B Button
- case 1: // No
- sub_811B454();
- sEasyChatScreen->stateBackup = 0;
- sEasyChatScreen->state = 8;
- return 31;
- case 0: // Yes
- gSpecialVar_Result = sub_811B4EC();
- sub_811B3E4();
- return 24;
- default:
- return 0;
- }
-}
-
-u16 sub_811B150(void)
-{
- if (sEasyChatScreen->type == EASY_CHAT_TYPE_APPRENTICE
- || sEasyChatScreen->type == EASY_CHAT_TYPE_CONTEST_INTERVIEW)
- {
- sEasyChatScreen->stateBackup = sEasyChatScreen->state;
- sEasyChatScreen->state = 8;
- return 34;
- }
- else
- {
- sEasyChatScreen->stateBackup = sEasyChatScreen->state;
- sEasyChatScreen->state = 4;
- return 5;
- }
-}
-
-int sub_811B184(void)
-{
- sEasyChatScreen->stateBackup = sEasyChatScreen->state;
- if (sEasyChatScreen->type != EASY_CHAT_TYPE_BARD_SONG)
- {
- sEasyChatScreen->state = 5;
- return 4;
- }
- else
- {
- sEasyChatScreen->stateBackup = sEasyChatScreen->state;
- sEasyChatScreen->state = 8;
- return 32;
- }
-}
-
-u16 sub_811B1B4(void)
-{
- sEasyChatScreen->stateBackup = sEasyChatScreen->state;
- if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUIZ_SET_QUESTION)
- {
- if (sub_811BD64())
- {
- sEasyChatScreen->state = 8;
- return 29;
- }
-
- if (sub_811BDB0())
- {
- sEasyChatScreen->state = 8;
- return 30;
- }
-
- sEasyChatScreen->state = 6;
- return 6;
- }
- else if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUIZ_SET_ANSWER)
- {
- if (sub_811BDB0())
- {
- sEasyChatScreen->state = 8;
- return 30;
- }
-
- if (sub_811BD64())
- {
- sEasyChatScreen->state = 8;
- return 29;
- }
-
- sEasyChatScreen->state = 6;
- return 6;
- }
- else if (sEasyChatScreen->type == EASY_CHAT_TYPE_TRENDY_PHRASE
- || sEasyChatScreen->type == EASY_CHAT_TYPE_GOOD_SAYING)
- {
- if (!sub_811BD2C())
- {
- sEasyChatScreen->state = 8;
- return 33;
- }
-
- sEasyChatScreen->state = 6;
- return 6;
- }
- else if (sEasyChatScreen->type == EASY_CHAT_TYPE_APPRENTICE
- || sEasyChatScreen->type == EASY_CHAT_TYPE_CONTEST_INTERVIEW)
- {
- if (sub_811BCF4())
- {
- sEasyChatScreen->state = 8;
- return 34;
- }
-
- sEasyChatScreen->state = 6;
- return 6;
- }
- else if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUESTIONNAIRE)
- {
- sEasyChatScreen->state = 6;
- return 6;
- }
- else
- {
- if (sub_811BCF4() == 1 || !sub_811B4EC())
- {
- sEasyChatScreen->state = 4;
- return 5;
- }
-
- sEasyChatScreen->state = 6;
- return 6;
- }
-}
-
-int sub_811B264(void)
-{
- sEasyChatScreen->stateBackup = sEasyChatScreen->state;
- switch (sEasyChatScreen->type)
- {
- case EASY_CHAT_TYPE_QUIZ_ANSWER:
- return 25;
- case EASY_CHAT_TYPE_QUIZ_SET_QUESTION:
- sub_811B3E4();
- return 28;
- case EASY_CHAT_TYPE_QUIZ_SET_ANSWER:
- sub_811B3E4();
- return 27;
- default:
- return 0;
- }
-}
-
-u8 sub_811B2A4(void)
-{
- return sEasyChatScreen->stateBackup;
-}
-
-int sub_811B2B0(void)
-{
- u16 var1;
-
- if (sEasyChatScreen->unk_09 == 0)
- {
- u8 groupId = sub_811F3B8(sub_811B8E8());
- sub_811F548(0, groupId);
- }
- else
- {
- sub_811F548(1, sub_811B908());
- }
-
- var1 = sub_811F5B0();
- if (var1 == 0)
- return 0;
-
- sEasyChatScreen->unk_0f = (var1 - 1) / 2;
- sEasyChatScreen->unk_0e = 0;
- sEasyChatScreen->unk_10 = 0;
- sEasyChatScreen->unk_11 = 0;
- sEasyChatScreen->state = 3;
- return 11;
-}
-
-int sub_811B32C(void)
-{
- sEasyChatScreen->state = 0;
- return 10;
-}
-
-int sub_811B33C(void)
-{
- sEasyChatScreen->unk_0a = 0;
- sEasyChatScreen->unk_0b = 0;
- sEasyChatScreen->unk_0c = 0;
- if (!sEasyChatScreen->unk_09)
- sEasyChatScreen->unk_09 = 1;
- else
- sEasyChatScreen->unk_09 = 0;
-
- return 23;
-}
-
-int sub_811B368(void)
-{
- if (sEasyChatScreen->type == EASY_CHAT_TYPE_BARD_SONG)
- {
- PlaySE(SE_HAZURE);
- return 0;
- }
- else
- {
- sub_811B488(0xFFFF);
- return 1;
- }
-}
-
-int sub_811B394(void)
-{
- u16 easyChatWord = sub_811F578(sub_811B940());
- if (sub_811BF88(easyChatWord))
- {
- PlaySE(SE_HAZURE);
- return 0;
- }
- else
- {
- sub_811B488(easyChatWord);
- if (sEasyChatScreen->type != EASY_CHAT_TYPE_BARD_SONG)
- {
- sEasyChatScreen->state = 0;
- return 12;
- }
- else
- {
- sEasyChatScreen->state = 9;
- return 13;
- }
- }
-}
-
-void sub_811B3E4(void)
-{
- int i;
- for (i = 0; i < sEasyChatScreen->unk_07; i++)
- sEasyChatScreen->words[i] = sEasyChatScreen->ecWordBuffer[i];
-}
-
-void sub_811B418(void)
-{
- int i;
- for (i = 0; i < sEasyChatScreen->unk_07; i++)
- sEasyChatScreen->ecWordBuffer[i] = 0xFFFF;
-}
-
-void sub_811B454(void)
-{
- int i;
- for (i = 0; i < sEasyChatScreen->unk_07; i++)
- sEasyChatScreen->ecWordBuffer[i] = sEasyChatScreen->words[i];
-}
-
-void sub_811B488(u16 easyChatWord)
-{
- u16 index = sub_811B8C8();
- sEasyChatScreen->ecWordBuffer[index] = easyChatWord;
-}
-
-u8 sub_811B4AC(void)
-{
- u16 i;
- for (i = 0; i < sEasyChatScreen->unk_07; i++)
- {
- if (sEasyChatScreen->ecWordBuffer[i] != sEasyChatScreen->words[i])
- return 1;
- }
-
- return 0;
-}
-
-int sub_811B4EC(void)
-{
- u8 var0 = sEasyChatScreen->type - EASY_CHAT_TYPE_QUIZ_SET_QUESTION;
- if (var0 < 2)
- {
- if (sub_811BD64())
- return 0;
-
- if (sub_811BDB0())
- return 0;
-
- return 1;
- }
- else
- {
- return sub_811B4AC();
- }
-}
-
-u16 sub_811B528(int arg0)
-{
- if (sEasyChatScreen->unk_0a != -1)
- {
- if (sEasyChatScreen->unk_09 == 0)
- return sub_811B568(arg0);
- else
- return sub_811B634(arg0);
- }
- else
- {
- return sub_811B6C4(arg0);
- }
-}
-
-int sub_811B568(u32 arg0)
-{
- switch (arg0)
- {
- case 2:
- if (sEasyChatScreen->unk_0b != -sEasyChatScreen->unk_0c)
- {
- if (sEasyChatScreen->unk_0b)
- {
- sEasyChatScreen->unk_0b--;
- return 15;
- }
- else
- {
- sEasyChatScreen->unk_0c--;
- return 17;
- }
- }
- break;
- case 3:
- if (sEasyChatScreen->unk_0b + sEasyChatScreen->unk_0c < sEasyChatScreen->unk_0d - 1)
- {
- int var0;
- if (sEasyChatScreen->unk_0b < 3)
- {
- sEasyChatScreen->unk_0b++;
- var0 = 15;
- }
- else
- {
- sEasyChatScreen->unk_0c++;
- var0 = 16;
- }
-
- sub_811B978();
- return var0;
- }
- break;
- case 1:
- if (sEasyChatScreen->unk_0a)
- sEasyChatScreen->unk_0a--;
- else
- sub_811B744();
-
- return 15;
- case 0:
- if (sEasyChatScreen->unk_0a < 1)
- {
- sEasyChatScreen->unk_0a++;
- if (sub_811B9C8())
- sub_811B744();
- }
- else
- {
- sub_811B744();
- }
- return 15;
- }
-
- return 0;
-}
-
-int sub_811B634(u32 arg0)
-{
- switch (arg0)
- {
- case 2:
- if (sEasyChatScreen->unk_0b > 0)
- sEasyChatScreen->unk_0b--;
- else
- sEasyChatScreen->unk_0b = 3;
-
- sub_811B978();
- return 15;
- case 3:
- if (sEasyChatScreen->unk_0b < 3)
- sEasyChatScreen->unk_0b++;
- else
- sEasyChatScreen->unk_0b = 0;
-
- sub_811B978();
- return 15;
- case 0:
- sEasyChatScreen->unk_0a++;
- if (sub_811B9C8())
- sub_811B744();
-
- return 15;
- case 1:
- sEasyChatScreen->unk_0a--;
- if (sEasyChatScreen->unk_0a < 0)
- sub_811B744();
-
- return 15;
- }
-
- return 0;
-}
-
-int sub_811B6C4(u32 arg0)
-{
- switch (arg0)
- {
- case 2:
- if (sEasyChatScreen->unk_0b)
- sEasyChatScreen->unk_0b--;
- else
- sEasyChatScreen->unk_0b = 2;
-
- return 15;
- case 3:
- if (sEasyChatScreen->unk_0b < 2)
- sEasyChatScreen->unk_0b++;
- else
- sEasyChatScreen->unk_0b = 0;
-
- return 15;
- case 1:
- sEasyChatScreen->unk_0b++;
- sub_811B768();
- return 15;
- case 0:
- sEasyChatScreen->unk_0a = 0;
- sEasyChatScreen->unk_0b++;
- return 15;
- }
-
- return 0;
-}
-
-void sub_811B744(void)
-{
- sEasyChatScreen->unk_0a = 0xFF;
- if (sEasyChatScreen->unk_0b)
- sEasyChatScreen->unk_0b--;
-}
-
-void sub_811B768(void)
-{
- if (sEasyChatScreen->unk_09 == 0)
- {
- sEasyChatScreen->unk_0a = 1;
- sub_811B978();
- }
- else
- {
- sEasyChatScreen->unk_0a = sub_811B960(sEasyChatScreen->unk_0b);
- }
-}
-
-u16 sub_811B794(u32 arg0)
-{
- u16 result;
- switch (arg0)
- {
- case 2:
- if (sEasyChatScreen->unk_11 + sEasyChatScreen->unk_0e > 0)
- {
- if (sEasyChatScreen->unk_11 > 0)
- {
- sEasyChatScreen->unk_11--;
- result = 18;
- }
- else
- {
- sEasyChatScreen->unk_0e--;
- result = 19;
- }
-
- sub_811B9A0();
- return result;
- }
- break;
- case 3:
- if (sEasyChatScreen->unk_11 + sEasyChatScreen->unk_0e < sEasyChatScreen->unk_0f)
- {
- if (sEasyChatScreen->unk_11 < 3)
- {
- sEasyChatScreen->unk_11++;
- result = 18;
- }
- else
- {
- sEasyChatScreen->unk_0e++;
- result = 20;
- }
-
- sub_811B9A0();
- return result;
- }
- break;
- case 1:
- if (sEasyChatScreen->unk_10 > 0)
- sEasyChatScreen->unk_10--;
- else
- sEasyChatScreen->unk_10 = 1;
-
- sub_811B9A0();
- return 18;
- case 0:
- if (sEasyChatScreen->unk_10 < 1)
- {
- sEasyChatScreen->unk_10++;
- if (sub_811BA1C())
- sEasyChatScreen->unk_10 = 0;
- }
- else
- {
- sEasyChatScreen->unk_10 = 0;
- }
- return 18;
- case 4:
- if (sEasyChatScreen->unk_0e)
- {
- if (sEasyChatScreen->unk_0e > 3)
- sEasyChatScreen->unk_0e -= 4;
- else
- sEasyChatScreen->unk_0e = 0;
-
- return 21;
- }
- break;
- case 5:
- if (sEasyChatScreen->unk_0e <= sEasyChatScreen->unk_0f - 4)
- {
- sEasyChatScreen->unk_0e += 4;
- if (sEasyChatScreen->unk_0e > sEasyChatScreen->unk_0f - 3)
- sEasyChatScreen->unk_0e = sEasyChatScreen->unk_0f + 0xFD;
-
- sub_811B9A0();
- return 22;
- }
- break;
- }
-
- return 0;
-}
-
-u16 sub_811B8C8(void)
-{
- return (sEasyChatScreen->mainCursorRow * sEasyChatScreen->numColumns) + sEasyChatScreen->mainCursorColumn;
-}
-
-u16 sub_811B8E8(void)
-{
- return 2 * (sEasyChatScreen->unk_0b + sEasyChatScreen->unk_0c) + sEasyChatScreen->unk_0a;
-}
-
-int sub_811B908(void)
-{
- int var0 = (u8)sEasyChatScreen->unk_0a < 7 ? sEasyChatScreen->unk_0a : 0;
- int var1 = (u8)sEasyChatScreen->unk_0b < 4 ? sEasyChatScreen->unk_0b : 0;
- return sUnknown_08597748[var1][var0];
-}
-
-u16 sub_811B940(void)
-{
- return 2 * (sEasyChatScreen->unk_11 + sEasyChatScreen->unk_0e) + sEasyChatScreen->unk_10;
-}
-
-u8 sub_811B960(u8 arg0)
-{
- switch (arg0)
- {
- case 0:
- default:
- return 6;
- case 1:
- return 5;
- }
-}
-
-void sub_811B978(void)
-{
- while (sub_811B9C8())
- {
- if (sEasyChatScreen->unk_0a)
- sEasyChatScreen->unk_0a--;
- else
- break;
- }
-}
-
-void sub_811B9A0(void)
-{
- while (sub_811BA1C())
- {
- if (sEasyChatScreen->unk_10)
- sEasyChatScreen->unk_10--;
- else
- break;
- }
-}
-
-u8 sub_811B9C8(void)
-{
- if (sEasyChatScreen->unk_09 == 0)
- return sub_811B8E8() >= sub_811F3AC() ? 1 : 0;
- else
- return sEasyChatScreen->unk_0a > sub_811B960(sEasyChatScreen->unk_0b) ? 1 : 0;
-}
-
-u8 sub_811BA1C(void)
-{
- return sub_811B940() >= sub_811F5B0() ? 1 : 0;
-}
-
-int FooterHasFourOptions(void)
-{
- return sEasyChatScreenTemplates[sEasyChatScreen->templateId].fourFooterOptions;
-}
-
-u8 GetEasyChatScreenType(void)
-{
- return sEasyChatScreen->type;
-}
-
-u8 GetEasyChatScreenFrameId(void)
-{
- return sEasyChatScreenTemplates[sEasyChatScreen->templateId].frameId;
-}
-
-const u8 *GetTitleText(void)
-{
- return sEasyChatScreen->titleText;
-}
-
-u16 *GetEasyChatWordBuffer(void)
-{
- return sEasyChatScreen->ecWordBuffer;
-}
-
-u8 GetNumRows(void)
-{
- return sEasyChatScreen->numRows;
-}
-
-u8 GetNumColumns(void)
-{
- return sEasyChatScreen->numColumns;
-}
-
-u8 GetMainCursorColumn(void)
-{
- return sEasyChatScreen->mainCursorColumn;
-}
-
-u8 GetMainCursorRow(void)
-{
- return sEasyChatScreen->mainCursorRow;
-}
-
-void GetEasyChatInstructionsText(const u8 **str1, const u8 **str2)
-{
- *str1 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].instructionsText1;
- *str2 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].instructionsText2;
-}
-
-void GetEasyChatConfirmText(const u8 **str1, const u8 **str2)
-{
- *str1 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].confirmText1;
- *str2 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].confirmText2;
-}
-
-void sub_811BB40(const u8 **str1, const u8 **str2)
-{
- switch (sEasyChatScreen->type)
- {
- case EASY_CHAT_TYPE_MAIL:
- *str1 = gText_StopGivingPkmnMail;
- *str2 = NULL;
- break;
- case EASY_CHAT_TYPE_QUIZ_ANSWER:
- case EASY_CHAT_TYPE_QUIZ_QUESTION:
- *str1 = gText_LikeToQuitQuiz;
- *str2 = gText_ChallengeQuestionMark;
- break;
- default:
- *str1 = gText_QuitEditing;
- *str2 = NULL;
- break;
- }
-
-}
-
-void GetEasyChatConfirmDeletionText(const u8 **str1, const u8 **str2)
-{
- *str1 = gText_AllTextBeingEditedWill;
- *str2 = gText_BeDeletedThatOkay;
-}
-
-void sub_811BB9C(u8 *arg0, u8 *arg1)
-{
- *arg0 = sEasyChatScreen->unk_0a;
- *arg1 = sEasyChatScreen->unk_0b;
-}
-
-u8 sub_811BBB0(void)
-{
- return sEasyChatScreen->unk_09;
-}
-
-u8 sub_811BBBC(void)
-{
- return sEasyChatScreen->unk_0c;
-}
-
-void sub_811BBC8(u8 *arg0, u8 *arg1)
-{
- *arg0 = sEasyChatScreen->unk_10;
- *arg1 = sEasyChatScreen->unk_11;
-}
-
-u8 sub_811BBDC(void)
-{
- return sEasyChatScreen->unk_0e;
-}
-
-u8 sub_811BBE8(void)
-{
- return sEasyChatScreen->unk_0f;
-}
-
-u8 unref_sub_811BBF4(void)
-{
- return 0;
-}
-
-int sub_811BBF8(void)
-{
- switch (sEasyChatScreen->state)
- {
- case 2:
- if (sEasyChatScreen->unk_09 == 0 && sEasyChatScreen->unk_0c)
- return 1;
- break;
- case 3:
- if (sEasyChatScreen->unk_0e)
- return 1;
- break;
- }
-
- return 0;
-}
-
-int sub_811BC2C(void)
-{
- switch (sEasyChatScreen->state)
- {
- case 2:
- if (sEasyChatScreen->unk_09 == 0 && sEasyChatScreen->unk_0c + 4 <= sEasyChatScreen->unk_0d - 1)
- return 1;
- break;
- case 3:
- if (sEasyChatScreen->unk_0e + 4 <= sEasyChatScreen->unk_0f)
- return 1;
- break;
- }
-
- return 0;
-}
-
-int FooterHasFourOptions_(void)
-{
- return FooterHasFourOptions();
-}
-
-u8 sub_811BC7C(const u16 *arg0, u8 arg1)
-{
- u8 i;
-
- for (i = 0; i < arg1; i++)
- {
- if (arg0[i] != sEasyChatScreen->ecWordBuffer[i])
- return 1;
- }
-
- return 0;
-}
-
-u8 GetDisplayedPersonType(void)
-{
- return sEasyChatScreen->displayedPersonType;
-}
-
-u8 GetEachChatScreenTemplateId(u8 type)
-{
- u32 i;
-
- for (i = 0; i < ARRAY_COUNT(sEasyChatScreenTemplates); i++)
- {
- if (sEasyChatScreenTemplates[i].type == type)
- return i;
- }
-
- return 0;
-}
-
-int sub_811BCF4(void)
-{
- int i;
-
- for (i = 0; i < sEasyChatScreen->unk_07; i++)
- {
- if (sEasyChatScreen->ecWordBuffer[i] != 0xFFFF)
- return 0;
- }
-
- return 1;
-}
-
-int sub_811BD2C(void)
-{
- int i;
-
- for (i = 0; i < sEasyChatScreen->unk_07; i++)
- {
- if (sEasyChatScreen->ecWordBuffer[i] == 0xFFFF)
- return 0;
- }
-
- return 1;
-}
-
-int sub_811BD64(void)
-{
- int i;
- struct SaveBlock1 *saveBlock1;
-
- if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUIZ_SET_QUESTION)
- return sub_811BCF4();
-
- saveBlock1 = gSaveBlock1Ptr;
- for (i = 0; i < QUIZ_QUESTION_LEN; i++)
- {
- if (saveBlock1->lilycoveLady.quiz.question[i] != 0xFFFF)
- return 0;
- }
-
- return 1;
-}
-
-int sub_811BDB0(void)
-{
- struct LilycoveLadyQuiz *quiz;
- if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUIZ_SET_ANSWER)
- return sub_811BCF4();
-
- quiz = &gSaveBlock1Ptr->lilycoveLady.quiz;
- return quiz->correctAnswer == 0xFFFF ? 1 : 0;
-}
-
-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);
-}
-
-void sub_811BE54(void)
-{
- int i;
- u16 *ecWord;
- u8 *str;
-
- ecWord = sEasyChatScreen->ecWordBuffer;
- str = gStringVar2;
- i = 0;
- while (i < sEasyChatScreen->unk_07)
- {
- str = CopyEasyChatWordPadded(str, *ecWord, 0);
- *str = 0;
- str++;
- ecWord++;
- i++;
- }
-
- str--;
- str[0] = 0xFF;
-}
-
-void sub_811BE9C(void)
-{
- switch (sEasyChatScreen->type)
- {
- case EASY_CHAT_TYPE_PROFILE:
- FlagSet(FLAG_SYS_CHAT_USED);
- break;
- case EASY_CHAT_TYPE_QUESTIONNAIRE:
- if (sub_811BF20())
- gSpecialVar_0x8004 = 2;
- else
- gSpecialVar_0x8004 = 0;
- break;
- case EASY_CHAT_TYPE_TRENDY_PHRASE:
- sub_811BE54();
- gSpecialVar_0x8004 = sub_81226D8(sEasyChatScreen->ecWordBuffer);
- break;
- case EASY_CHAT_TYPE_GOOD_SAYING:
- gSpecialVar_0x8004 = sub_811BF40();
- break;
- }
-}
-
-int sub_811BF20(void)
-{
- return sub_811BC7C(sMysteryGiftPhrase, ARRAY_COUNT(sMysteryGiftPhrase)) == 0;
-}
-
-u16 sub_811BF40(void)
-{
- int i;
- for (i = 0; i < 5; i++)
- {
- if (!sub_811BC7C(sBerryMasterWifePhrases[i], ARRAY_COUNT(*sBerryMasterWifePhrases)))
- return i + 1;
- }
-
- return 0;
-}
-
-void sub_811BF78(void)
-{
- sEasyChatScreen->unk_13 = 0;
-}
-
-int sub_811BF88(int easyChatWord)
-{
- return 0;
-}
-
-bool8 sub_811BF8C(void)
-{
- if (!sub_811CE94())
- return 0;
- else
- return 1;
-}
-
-bool8 sub_811BFA4(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, sEasyChatBgTemplates, ARRAY_COUNT(sEasyChatBgTemplates));
- SetBgTilemapBuffer(3, sUnknown_0203A11C->unkB00);
- SetBgTilemapBuffer(1, sUnknown_0203A11C->unk300);
- InitWindows(sEasyChatWindowTemplates);
- 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(sUnknown_0203A11C->unk300);
- sub_811D230();
- sub_811E948();
- CopyBgTilemapBufferToVram(3);
- break;
- case 2:
- DecompressAndLoadBgGfxUsingHeap(1, sUnknown_08597B54, 0, 0, 0);
- CopyBgTilemapBufferToVram(1);
- break;
- case 3:
- sub_811CFCC();
- sub_811D0BC();
- sub_811D2C8();
- sub_811D684();
- break;
- case 4:
- sub_811DE90();
- if (GetEasyChatScreenType() != EASY_CHAT_TYPE_QUIZ_QUESTION)
- 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;
- }
-
- sUnknown_0203A11C->unk0++;
- return TRUE;
-}
-
-void sub_811C13C(void)
-{
- if (sUnknown_0203A11C)
- FREE_AND_SET_NULL(sUnknown_0203A11C);
-}
-
-void sub_811C158(u16 arg0)
-{
- sUnknown_0203A11C->unk4 = arg0;
- sUnknown_0203A11C->unk0 = 0;
- sub_811C170();
-}
-
-bool8 sub_811C170(void)
-{
- switch (sUnknown_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;
- }
-}
-
-bool8 sub_811C2D4(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811D2C8();
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- return IsDma3ManagerBusyWithBgCopy();
- }
-
- return TRUE;
-}
-
-bool8 sub_811C30C(void)
-{
- u8 i;
- u16 *ecWordBuffer;
- u16 *ecWord;
- u8 frameId;
- u8 cursorColumn, cursorRow, numColumns;
- s16 var1;
- int stringWidth;
- int trueStringWidth;
- u8 var2;
- u8 str[64];
-
- ecWordBuffer = GetEasyChatWordBuffer();
- frameId = GetEasyChatScreenFrameId();
- cursorColumn = GetMainCursorColumn();
- cursorRow = GetMainCursorRow();
- numColumns = GetNumColumns();
- ecWord = &ecWordBuffer[cursorRow * numColumns];
- var1 = 8 * sPhraseFrameDimensions[frameId].left + 13;
- for (i = 0; i < cursorColumn; i++)
- {
- if (*ecWord == 0xFFFF)
- {
- stringWidth = 72;
- }
- else
- {
- CopyEasyChatWord(str, *ecWord);
- stringWidth = GetStringWidth(1, str, 0);
- }
-
- trueStringWidth = stringWidth + 17;
- var1 += trueStringWidth;
- ecWord++;
- }
-
- var2 = 8 * (sPhraseFrameDimensions[frameId].top + cursorRow * 2);
- sub_811DF60(var1, var2 + 8);
- return FALSE;
-}
-
-bool8 sub_811C3E4(void)
-{
- u8 xOffset = GetFooterOptionXOffset(GetMainCursorColumn());
- sub_811DF60(xOffset, 96);
- return FALSE;
-}
-
-bool8 sub_811C404(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811DF90();
- sub_811D104(2);
- sub_811D214(1);
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- return IsDma3ManagerBusyWithBgCopy();
- }
-
- return TRUE;
-}
-
-bool8 sub_811C448(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811DF90();
- sub_811D104(3);
- sub_811D214(0);
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- return IsDma3ManagerBusyWithBgCopy();
- }
-
- return TRUE;
-}
-
-bool8 sub_811C48C(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811DF90();
- sub_811D104(1);
- sub_811D214(1);
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- return IsDma3ManagerBusyWithBgCopy();
- }
-
- return TRUE;
-}
-
-bool8 sub_811C4D0(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811DFB0();
- sub_811D104(0);
- sub_811D2C8();
- ShowBg(0);
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- return IsDma3ManagerBusyWithBgCopy();
- }
-
- return TRUE;
-}
-
-bool8 sub_811C518(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811DFB0();
- sub_811D104(0);
- sub_811D2C8();
- sUnknown_0203A11C->unk0++;
- // Fall through
- case 1:
- return IsDma3ManagerBusyWithBgCopy();
- }
-
- return TRUE;
-}
-
-bool8 sub_811C554(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811DF90();
- HideBg(0);
- sub_811DE5C(0, 0, 0, 0);
- sub_811D6D4();
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- if (!IsDma3ManagerBusyWithBgCopy())
- {
- sub_811D9CC(0);
- sUnknown_0203A11C->unk0++;
- }
- break;
- case 2:
- if (!IsDma3ManagerBusyWithBgCopy() && !sub_811DAA4())
- sUnknown_0203A11C->unk0++;
- break;
- case 3:
- if (!IsDma3ManagerBusyWithBgCopy())
- {
- sub_811E3AC();
- sUnknown_0203A11C->unk0++;
- }
- break;
- case 4:
- if (!sub_811E418())
- {
- sub_811DFC8();
- sub_811E6E0(0);
- sub_811E64C();
- sUnknown_0203A11C->unk0++;
- return FALSE;
- }
- break;
- default:
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool8 sub_811C620(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811E050();
- sub_811E4AC();
- sub_811E6B0();
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- if (sub_811E4D0() == TRUE)
- break;
-
- sub_811D9CC(1);
- sUnknown_0203A11C->unk0++;
- // Fall through
- case 2:
- if (!sub_811DAA4())
- sUnknown_0203A11C->unk0++;
- break;
- case 3:
- if (!IsDma3ManagerBusyWithBgCopy())
- {
- sub_811DFB0();
- ShowBg(0);
- sUnknown_0203A11C->unk0++;
- }
- break;
- case 4:
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool8 sub_811C6C0(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811E050();
- sub_811E6B0();
- sub_811E55C();
- sub_811D9CC(5);
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- if (!sub_811DAA4() && !sub_811E5B8())
- {
- sub_811D6D4();
- sUnknown_0203A11C->unk0++;
- }
- break;
- case 2:
- if (!IsDma3ManagerBusyWithBgCopy())
- {
- sub_811D9CC(6);
- sub_811E578();
- sUnknown_0203A11C->unk0++;
- }
- break;
- case 3:
- if (!sub_811DAA4() && !sub_811E5B8())
- {
- sub_811E64C();
- sub_811DFC8();
- sUnknown_0203A11C->unk0++;
- return FALSE;
- }
- break;
- case 4:
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool8 sub_811C780(void)
-{
- sub_811E088();
- return FALSE;
-}
-
-bool8 sub_811C78C(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811DDAC(1, 4);
- sUnknown_0203A11C->unk0++;
- // Fall through
- case 1:
- if (!sub_811DE10())
- {
- sub_811E088();
- sub_811E64C();
- return FALSE;
- }
- break;
- }
-
- return TRUE;
-}
-
-bool8 sub_811C7D4(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811DDAC(-1, 4);
- sUnknown_0203A11C->unk0++;
- // Fall through
- case 1:
- if (!sub_811DE10())
- {
- sub_811E64C();
- sUnknown_0203A11C->unk0++;
- return FALSE;
- }
- break;
- case 2:
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool8 sub_811C830(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811E050();
- sub_811E4AC();
- sub_811E6B0();
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- if (!sub_811E4D0())
- {
- sub_811D9B4();
- sUnknown_0203A11C->unk0++;
- }
- break;
- case 2:
- if (!IsDma3ManagerBusyWithBgCopy())
- {
- sub_811D9CC(2);
- sUnknown_0203A11C->unk0++;
- }
- break;
- case 3:
- if (!sub_811DAA4())
- {
- sub_811D698(2);
- sUnknown_0203A11C->unk0++;
- }
- break;
- case 4:
- if (!IsDma3ManagerBusyWithBgCopy())
- {
- sub_811E288();
- sub_811E6E0(1);
- sub_811E64C();
- sub_811E794();
- sUnknown_0203A11C->unk0++;
- return FALSE;
- }
- break;
- case 5:
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool8 sub_811C8F0(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811D2C8();
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- sub_811E380();
- sub_811E6B0();
- sub_811E7F8();
- sub_811D9B4();
- sUnknown_0203A11C->unk0++;
- break;
- case 2:
- if (!IsDma3ManagerBusyWithBgCopy())
- {
- sub_811D9CC(3);
- sUnknown_0203A11C->unk0++;
- }
- break;
- case 3:
- if (!sub_811DAA4())
- {
- ShowBg(0);
- sUnknown_0203A11C->unk0++;
- }
- break;
- case 4:
- if (!IsDma3ManagerBusyWithBgCopy())
- {
- sub_811DFB0();
- sUnknown_0203A11C->unk0++;
- return FALSE;
- }
- break;
- case 5:
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool8 sub_811C99C(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811D2C8();
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- sub_811E380();
- sub_811E6B0();
- sub_811E7F8();
- sub_811D9B4();
- sUnknown_0203A11C->unk0++;
- break;
- case 2:
- if (!IsDma3ManagerBusyWithBgCopy())
- {
- sub_811D9CC(3);
- sUnknown_0203A11C->unk0++;
- }
- break;
- case 3:
- if (!sub_811DAA4())
- {
- sub_811D104(3);
- sUnknown_0203A11C->unk0++;
- }
- break;
- case 4:
- if (!IsDma3ManagerBusyWithBgCopy())
- {
- ShowBg(0);
- sUnknown_0203A11C->unk0++;
- }
- break;
- case 5:
- if (!IsDma3ManagerBusyWithBgCopy())
- {
- sub_811DFB0();
- sUnknown_0203A11C->unk0++;
- return FALSE;
- }
- break;
- case 6:
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool8 sub_811CA5C(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811E380();
- sub_811E6B0();
- sub_811E7F8();
- sub_811D9B4();
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- if (!IsDma3ManagerBusyWithBgCopy())
- {
- sub_811D9CC(4);
- sUnknown_0203A11C->unk0++;
- }
- break;
- case 2:
- if (!sub_811DAA4())
- {
- sub_811D6D4();
- sUnknown_0203A11C->unk0++;
- }
- break;
- case 3:
- if (!IsDma3ManagerBusyWithBgCopy())
- {
- sub_811E3AC();
- sUnknown_0203A11C->unk0++;
- }
- break;
- case 4:
- if (!sub_811E418())
- {
- sub_811DFC8();
- sub_811E6E0(0);
- sub_811E64C();
- sUnknown_0203A11C->unk0++;
- return FALSE;
- }
- break;
- }
-
- return TRUE;
-}
-
-bool8 sub_811CB18(void)
-{
- sub_811E30C();
- return FALSE;
-}
-
-bool8 sub_811CB24(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811D7A4();
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- if (!IsDma3ManagerBusyWithBgCopy())
- {
- sub_811DDAC(1, 4);
- sUnknown_0203A11C->unk0++;
- }
- break;
- case 2:
- if (!sub_811DE10())
- {
- sub_811E30C();
- sub_811E64C();
- sub_811E794();
- sUnknown_0203A11C->unk0++;
- return FALSE;
- }
- break;
- case 3:
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool8 sub_811CB98(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811D7C8();
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- if (!IsDma3ManagerBusyWithBgCopy())
- {
- sub_811DDAC(-1, 4);
- sUnknown_0203A11C->unk0++;
- }
- break;
- case 2:
- if (!sub_811DE10())
- {
- sub_811E64C();
- sub_811E794();
- sUnknown_0203A11C->unk0++;
- return FALSE;
- }
- break;
- case 3:
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool8 sub_811CC08(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811D7EC();
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- if (!IsDma3ManagerBusyWithBgCopy())
- {
- s16 var0 = sub_811BBDC() - sub_811DE48();
- sub_811DDAC(var0, 8);
- sUnknown_0203A11C->unk0++;
- }
- break;
- case 2:
- if (!sub_811DE10())
- {
- sub_811E30C();
- sub_811E64C();
- sub_811E794();
- sUnknown_0203A11C->unk0++;
- return FALSE;
- }
- break;
- case 3:
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool8 sub_811CC90(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811D830();
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- if (!IsDma3ManagerBusyWithBgCopy())
- {
- s16 var0 = sub_811BBDC() - sub_811DE48();
- sub_811DDAC(var0, 8);
- sUnknown_0203A11C->unk0++;
- }
- break;
- case 2:
- if (!sub_811DE10())
- {
- sub_811E64C();
- sub_811E794();
- sUnknown_0203A11C->unk0++;
- return FALSE;
- }
- break;
- case 3:
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool8 sub_811CD14(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811DF90();
- sub_811D104(4);
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- return IsDma3ManagerBusyWithBgCopy();
- }
-
- return TRUE;
-}
-
-bool8 sub_811CD54(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811DF90();
- sub_811D104(5);
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- return IsDma3ManagerBusyWithBgCopy();
- }
-
- return TRUE;
-}
-
-bool8 sub_811CD94(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811DF90();
- sub_811D104(6);
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- return IsDma3ManagerBusyWithBgCopy();
- }
-
- return TRUE;
-}
-
-bool8 sub_811CDD4(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811DF90();
- sub_811D104(7);
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- return IsDma3ManagerBusyWithBgCopy();
- }
-
- return TRUE;
-}
-
-bool8 sub_811CE14(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811DF90();
- sub_811D104(8);
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- return IsDma3ManagerBusyWithBgCopy();
- }
-
- return TRUE;
-}
-
-bool8 sub_811CE54(void)
-{
- switch (sUnknown_0203A11C->unk0)
- {
- case 0:
- sub_811DF90();
- sub_811D104(9);
- sUnknown_0203A11C->unk0++;
- break;
- case 1:
- return IsDma3ManagerBusyWithBgCopy();
- }
-
- return TRUE;
-}
-
-bool8 sub_811CE94(void)
-{
- sUnknown_0203A11C = Alloc(sizeof(*sUnknown_0203A11C));
- if (!sUnknown_0203A11C)
- return FALSE;
-
- sUnknown_0203A11C->unk0 = 0;
- sUnknown_0203A11C->unk2D8 = NULL;
- sUnknown_0203A11C->unk2DC = NULL;
- sUnknown_0203A11C->unk2E0 = NULL;
- sUnknown_0203A11C->unk2E4 = NULL;
- sUnknown_0203A11C->unk2E8 = NULL;
- sUnknown_0203A11C->unk2EC = NULL;
- sUnknown_0203A11C->unk2F0 = NULL;
- sUnknown_0203A11C->unk2F4 = NULL;
- sUnknown_0203A11C->unk2F8 = NULL;
- sUnknown_0203A11C->unk2FC = NULL;
- sUnknown_0203A11C->unkA = FooterHasFourOptions_();
- return TRUE;
-}
-
-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);
-}
-
-void sub_811CF64(void)
-{
- ResetPaletteFade();
- LoadPalette(gEasyChatMode_Pal, 0, 32);
- LoadPalette(sUnknown_08597B14, 1 * 16, 32);
- LoadPalette(sUnknown_08597B34, 4 * 16, 32);
- LoadPalette(sUnknown_08597C1C, 10 * 16, 8);
- LoadPalette(sUnknown_08597C24, 11 * 16, 12);
- LoadPalette(sUnknown_08597C24, 15 * 16, 12);
- LoadPalette(sUnknown_08597C24, 3 * 16, 12);
-}
-
-void sub_811CFCC(void)
-{
- int xOffset;
- const u8 *titleText = GetTitleText();
- if (!titleText)
- return;
-
- xOffset = GetStringCenterAlignXOffset(1, titleText, 144);
- FillWindowPixelBuffer(0, PIXEL_FILL(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);
-}
-
-void sub_811D0BC(void)
-{
- FillBgTilemapBufferRect(0, 0, 0, 0, 32, 20, 17);
- LoadUserWindowBorderGfx(1, 1, 0xE0);
- DrawTextBorderOuter(1, 1, 14);
- sub_811D104(0);
- PutWindowTilemap(1);
- CopyBgTilemapBufferToVram(0);
-}
-
-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, PIXEL_FILL(1));
- 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);
-}
-
-void sub_811D214(u8 initialCursorPos)
-{
- CreateYesNoMenu(&sEasyChatYesNoWindowTemplate, 1, 14, initialCursorPos);
-}
-
-void sub_811D230(void)
-{
- u8 frameId;
- struct WindowTemplate template;
-
- frameId = GetEasyChatScreenFrameId();
- template.bg = 3;
- template.tilemapLeft = sPhraseFrameDimensions[frameId].left;
- template.tilemapTop = sPhraseFrameDimensions[frameId].top;
- template.width = sPhraseFrameDimensions[frameId].width;
- template.height = sPhraseFrameDimensions[frameId].height;
- template.paletteNum = 11;
- template.baseBlock = 0x6C;
- sUnknown_0203A11C->windowId = AddWindow(&template);
- PutWindowTilemap(sUnknown_0203A11C->windowId);
-}
-
-void sub_811D2C8(void)
-{
- u8 spC[4];
- u16 *ecWord;
- u8 numColumns, numRows;
- u8 *str;
- int frameId;
- int var1;
- int i, j, k;
-
- ecWord = GetEasyChatWordBuffer();
- numColumns = GetNumColumns();
- numRows = GetNumRows();
- frameId = GetEasyChatScreenFrameId();
- var1 = 0;
- if (frameId == 7)
- var1 = 1;
-
- FillWindowPixelBuffer(sUnknown_0203A11C->windowId, PIXEL_FILL(1));
- for (i = 0; i < numRows; i++)
- {
- memcpy(spC, sText_Clear17, sizeof(sText_Clear17));
- if (var1)
- spC[2] = 6;
-
- str = sUnknown_0203A11C->unkB;
- sUnknown_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 (frameId == 2 || frameId == 7 || frameId == 8)
- {
- if (j == 0 && i == 4)
- break;
- }
- }
-
- *str = EOS;
- sub_811D028(sUnknown_0203A11C->windowId, 1, sUnknown_0203A11C->unkB, 0, i * 16 + 1, 0xFF, 0);
- }
-
- CopyWindowToVram(sUnknown_0203A11C->windowId, 3);
-}
-
-void sub_811D424(u16 *tilemap)
-{
- u8 frameId;
- int right, bottom;
- int x, y;
-
- frameId = GetEasyChatScreenFrameId();
- CpuFastFill(0, tilemap, BG_SCREEN_SIZE);
- if (frameId == 2 || frameId == 8)
- {
- right = sPhraseFrameDimensions[frameId].left + sPhraseFrameDimensions[frameId].width;
- bottom = sPhraseFrameDimensions[frameId].top + sPhraseFrameDimensions[frameId].height;
- for (y = sPhraseFrameDimensions[frameId].top; y < bottom; y++)
- {
- x = sPhraseFrameDimensions[frameId].left - 1;
- tilemap[y * 32 + x] = 0x1005;
- x++;
- for (; x < right; x++)
- tilemap[y * 32 + x] = 0x1000;
-
- tilemap[y* 32 + x] = 0x1007;
- }
- }
- else
- {
- y = sPhraseFrameDimensions[frameId].top - 1;
- x = sPhraseFrameDimensions[frameId].left - 1;
- right = sPhraseFrameDimensions[frameId].left + sPhraseFrameDimensions[frameId].width;
- bottom = sPhraseFrameDimensions[frameId].top + sPhraseFrameDimensions[frameId].height;
- 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 = sPhraseFrameDimensions[frameId].left - 1;
- tilemap[y * 32 + x] = 0x1005;
- x++;
- for (; x < right; x++)
- tilemap[y * 32 + x] = 0x1000;
-
- tilemap[y* 32 + x] = 0x1007;
- }
-
- x = sPhraseFrameDimensions[frameId].left - 1;
- tilemap[y * 32 + x] = 0x1009;
- x++;
- for (; x < right; x++)
- tilemap[y * 32 + x] = 0x100A;
-
- tilemap[y * 32 + x] = 0x100B;
- }
-}
-
-void sub_811D60C(void)
-{
- u8 frameId;
- u16 *tilemap;
-
- tilemap = GetBgTilemapBuffer(3);
- frameId = GetEasyChatScreenFrameId();
- switch (sPhraseFrameDimensions[frameId].footerId)
- {
- 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;
- }
-}
-
-void sub_811D684(void)
-{
- PutWindowTilemap(2);
- CopyBgTilemapBufferToVram(2);
-}
-
-void sub_811D698(u32 arg0)
-{
- sub_811DD84();
- FillWindowPixelBuffer(2, PIXEL_FILL(1));
- switch (arg0)
- {
- case 0:
- sub_811D6F4();
- break;
- case 1:
- PrintEasyChatKeyboardText();
- break;
- case 2:
- sub_811D794();
- break;
- }
-
- CopyWindowToVram(2, 2);
-}
-
-void sub_811D6D4(void)
-{
- if (!sub_811BBB0())
- sub_811D698(0);
- else
- sub_811D698(1);
-}
-
-void sub_811D6F4(void)
-{
- int i;
- int x, y;
-
- i = 0;
- y = 97;
- while (1)
- {
- for (x = 0; x < 2; x++)
- {
- u8 groupId = sub_811F3B8(i++);
- if (groupId == EC_NUM_GROUPS)
- {
- sub_811DDAC(sub_811BBBC(), 0);
- return;
- }
-
- sub_811D028(2, 1, GetEasyChatWordGroupName(groupId), x * 84 + 10, y, 0xFF, NULL);
- }
-
- y += 16;
- }
-}
-
-void PrintEasyChatKeyboardText(void)
-{
- u32 i;
-
- for (i = 0; i < ARRAY_COUNT(sEasyChatKeyboardText); i++)
- sub_811D028(2, 1, sEasyChatKeyboardText[i], 10, 97 + i * 16, 0xFF, NULL);
-}
-
-void sub_811D794(void)
-{
- sub_811D864(0, 4);
-}
-
-void sub_811D7A4(void)
-{
- u8 var0 = sub_811BBDC() + 3;
- sub_811D950(var0, 1);
- sub_811D864(var0, 1);
-}
-
-void sub_811D7C8(void)
-{
- u8 var0 = sub_811BBDC();
- sub_811D950(var0, 1);
- sub_811D864(var0, 1);
-}
-
-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);
- }
-}
-
-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);
- }
-}
-
-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(sUnknown_0203A11C->unkCC, easyChatWord, 0);
- if (!sub_811BF88(easyChatWord))
- sub_811D028(2, 1, sUnknown_0203A11C->unkCC, (j * 13 + 3) * 8, y, 0xFF, NULL);
- else
- sub_811D058(2, 1, sUnknown_0203A11C->unkCC, (j * 13 + 3) * 8, y, 0xFF, 1, 5, 3);
- }
- }
-
- y += 16;
- }
-
- CopyWindowToVram(2, 2);
-}
-
-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, PIXEL_FILL(1), 0, y, 224, var2);
- if (var1)
- FillWindowPixelRect(2, PIXEL_FILL(1), 0, 0, 224, var1);
-}
-
-void sub_811D9B4(void)
-{
- FillWindowPixelBuffer(2, PIXEL_FILL(1));
- CopyWindowToVram(2, 2);
-}
-
-void sub_811D9CC(int arg0)
-{
- switch (arg0)
- {
- case 0:
- sUnknown_0203A11C->unk6 = 0;
- sUnknown_0203A11C->unk7 = 10;
- break;
- case 1:
- sUnknown_0203A11C->unk6 = 9;
- sUnknown_0203A11C->unk7 = 0;
- break;
- case 2:
- sUnknown_0203A11C->unk6 = 11;
- sUnknown_0203A11C->unk7 = 17;
- break;
- case 3:
- sUnknown_0203A11C->unk6 = 17;
- sUnknown_0203A11C->unk7 = 0;
- break;
- case 4:
- sUnknown_0203A11C->unk6 = 17;
- sUnknown_0203A11C->unk7 = 10;
- break;
- case 5:
- sUnknown_0203A11C->unk6 = 18;
- sUnknown_0203A11C->unk7 = 22;
- break;
- case 6:
- sUnknown_0203A11C->unk6 = 22;
- sUnknown_0203A11C->unk7 = 18;
- break;
- }
-
- sUnknown_0203A11C->unk8 = sUnknown_0203A11C->unk6 < sUnknown_0203A11C->unk7 ? 1 : -1;
-}
-
-bool8 sub_811DAA4(void)
-{
- u8 var0, var1;
- if (sUnknown_0203A11C->unk6 == sUnknown_0203A11C->unk7)
- return FALSE;
-
- sUnknown_0203A11C->unk6 += sUnknown_0203A11C->unk8;
- sub_811DADC(sUnknown_0203A11C->unk6);
- var0 = sUnknown_0203A11C->unk6;
- var1 = sUnknown_0203A11C->unk7;
- return (var0 ^ var1) > 0;
-}
-
-void sub_811DADC(u8 arg0)
-{
- FillBgTilemapBufferRect_Palette0(1, 0, 0, 10, 30, 10);
- switch (arg0)
- {
- case 0:
- break;
- case 1:
- sub_811DC28(11, 14, 3, 2);
- break;
- case 2:
- sub_811DC28(9, 14, 7, 2);
- break;
- case 3:
- sub_811DC28(7, 14, 11, 2);
- break;
- case 4:
- sub_811DC28(5, 14, 15, 2);
- break;
- case 5:
- sub_811DC28(3, 14, 19, 2);
- break;
- case 6:
- sub_811DC28(1, 14, 23, 2);
- break;
- case 11:
- sub_811DC28(1, 10, 24, 10);
- break;
- case 12:
- sub_811DC28(1, 10, 25, 10);
- break;
- case 13:
- sub_811DC28(1, 10, 26, 10);
- break;
- case 14:
- sub_811DC28(1, 10, 27, 10);
- break;
- case 15:
- sub_811DC28(1, 10, 28, 10);
- break;
- case 16:
- sub_811DC28(1, 10, 29, 10);
- break;
- case 17:
- sub_811DC28(0, 10, 30, 10);
- break;
- case 10:
- case 18:
- sub_811DC28(1, 10, 23, 10);
- break;
- case 9:
- case 19:
- sub_811DC28(1, 11, 23, 8);
- break;
- case 8:
- case 20:
- sub_811DC28(1, 12, 23, 6);
- break;
- case 7:
- case 21:
- sub_811DC28(1, 13, 23, 4);
- break;
- case 22:
- sub_811DC28(1, 14, 23, 2);
- break;
- }
-
- CopyBgTilemapBufferToVram(1);
-}
-
-void sub_811DC28(int left, int top, int width, int height)
-{
- u16 *tilemap;
- int right;
- int bottom;
- int x, y;
-
- tilemap = sUnknown_0203A11C->unk300;
- right = left + width - 1;
- bottom = top + height - 1;
- x = left;
- y = top;
- tilemap[y * 32 + x] = 0x4001;
- x++;
- for (; x < right; x++)
- tilemap[y * 32 + x] = 0x4002;
-
- tilemap[y * 32 + x] = 0x4003;
- y++;
- for (; y < bottom; y++)
- {
- tilemap[y * 32 + left] = 0x4005;
- x = left + 1;
- for (; x < right; x++)
- tilemap[y * 32 + x] = 0x4000;
-
- tilemap[y * 32 + x] = 0x4007;
- }
-
- tilemap[y * 32 + left] = 0x4009;
- x = left + 1;
- for (; x < right; x++)
- tilemap[y * 32 + x] = 0x400A;
-
- tilemap[y * 32 + x] = 0x400B;
- sub_811DE5C((left + 1) * 8, (top + 1) * 8, (width - 2) * 8, (height - 2) * 8);
-}
-
-void sub_811DD84(void)
-{
- ChangeBgY(2, 0x800, 0);
- sUnknown_0203A11C->unk2CE = 0;
-}
-
-void sub_811DDAC(s16 arg0, u8 arg1)
-{
- int bgY;
- s16 var0;
-
- bgY = GetBgY(2);
- sUnknown_0203A11C->unk2CE += arg0;
- var0 = arg0 * 16;
- bgY += var0 << 8;
- if (arg1)
- {
- sUnknown_0203A11C->unk2D0 = bgY;
- sUnknown_0203A11C->unk2D4 = arg1 * 256;
- if (var0 < 0)
- sUnknown_0203A11C->unk2D4 = -sUnknown_0203A11C->unk2D4;
- }
- else
- {
- ChangeBgY(2, bgY, 0);
- }
-}
-
-bool8 sub_811DE10(void)
-{
- int bgY;
-
- bgY = GetBgY(2);
- if (bgY == sUnknown_0203A11C->unk2D0)
- {
- return FALSE;
- }
- else
- {
- ChangeBgY(2, sUnknown_0203A11C->unk2D4, 1);
- return TRUE;
- }
-}
-
-int sub_811DE48(void)
-{
- return sUnknown_0203A11C->unk2CE;
-}
-
-void sub_811DE5C(u8 left, u8 top, u8 width, u8 height)
-{
- u16 horizontalDimensions = WIN_RANGE(left, left + width);
- u16 verticalDimensions = WIN_RANGE(top, top + height);
- SetGpuReg(REG_OFFSET_WIN0H, horizontalDimensions);
- SetGpuReg(REG_OFFSET_WIN0V, verticalDimensions);
-}
-
-void sub_811DE90(void)
-{
- u32 i;
-
- LoadSpriteSheets(sEasyChatSpriteSheets);
- LoadSpritePalettes(sEasyChatSpritePalettes);
- for (i = 0; i < ARRAY_COUNT(sUnknown_08597CE8); i++)
- LoadCompressedSpriteSheet(&sUnknown_08597CE8[i]);
-}
-
-void sub_811DEC4(void)
-{
- u8 frameId = GetEasyChatScreenFrameId();
- int x = sPhraseFrameDimensions[frameId].left * 8 + 13;
- int y = sPhraseFrameDimensions[frameId].top * 8 + 8;
- u8 spriteId = CreateSprite(&sUnknown_08597D18, x, y, 2);
- sUnknown_0203A11C->unk2D8 = &gSprites[spriteId];
- gSprites[spriteId].data[1] = 1;
-}
-
-void sub_811DF28(struct Sprite *sprite)
-{
- if (sprite->data[1])
- {
- if (++sprite->data[0] > 2)
- {
- sprite->data[0] = 0;
- if (++sprite->pos2.x > 0)
- sprite->pos2.x = -6;
- }
- }
-}
-
-void sub_811DF60(u8 x, u8 y)
-{
- sUnknown_0203A11C->unk2D8->pos1.x = x;
- sUnknown_0203A11C->unk2D8->pos1.y = y;
- sUnknown_0203A11C->unk2D8->pos2.x = 0;
- sUnknown_0203A11C->unk2D8->data[0] = 0;
-}
-
-void sub_811DF90(void)
-{
- sUnknown_0203A11C->unk2D8->data[0] = 0;
- sUnknown_0203A11C->unk2D8->data[1] = 0;
- sUnknown_0203A11C->unk2D8->pos2.x = 0;
-}
-
-void sub_811DFB0(void)
-{
- sUnknown_0203A11C->unk2D8->data[1] = 1;
-}
-
-void sub_811DFC8(void)
-{
- u8 spriteId = CreateSprite(&sUnknown_08597D68, 0, 0, 3);
- sUnknown_0203A11C->unk2DC = &gSprites[spriteId];
- sUnknown_0203A11C->unk2DC->pos2.x = 32;
-
- spriteId = CreateSprite(&sUnknown_08597D68, 0, 0, 3);
- sUnknown_0203A11C->unk2E0 = &gSprites[spriteId];
- sUnknown_0203A11C->unk2E0->pos2.x = -32;
-
- sUnknown_0203A11C->unk2DC->hFlip = 1;
- sub_811E088();
-}
-
-void sub_811E050(void)
-{
- DestroySprite(sUnknown_0203A11C->unk2DC);
- sUnknown_0203A11C->unk2DC = NULL;
- DestroySprite(sUnknown_0203A11C->unk2E0);
- sUnknown_0203A11C->unk2E0 = NULL;
-}
-
-void sub_811E088(void)
-{
- u8 var0;
- u8 var1;
-
- if (sUnknown_0203A11C->unk2DC && sUnknown_0203A11C->unk2E0)
- {
- sub_811BB9C(&var0, &var1);
- if (!sub_811BBB0())
- sub_811E0EC(var0, var1);
- else
- sub_811E1A4(var0, var1);
- }
-}
-
-void sub_811E0EC(s8 arg0, s8 arg1)
-{
- if (arg0 != -1)
- {
- StartSpriteAnim(sUnknown_0203A11C->unk2DC, 0);
- sUnknown_0203A11C->unk2DC->pos1.x = arg0 * 84 + 58;
- sUnknown_0203A11C->unk2DC->pos1.y = arg1 * 16 + 96;
-
- StartSpriteAnim(sUnknown_0203A11C->unk2E0, 0);
- sUnknown_0203A11C->unk2E0->pos1.x = arg0 * 84 + 58;
- sUnknown_0203A11C->unk2E0->pos1.y = arg1 * 16 + 96;
- }
- else
- {
- StartSpriteAnim(sUnknown_0203A11C->unk2DC, 1);
- sUnknown_0203A11C->unk2DC->pos1.x = 216;
- sUnknown_0203A11C->unk2DC->pos1.y = arg1 * 16 + 112;
-
- StartSpriteAnim(sUnknown_0203A11C->unk2E0, 1);
- sUnknown_0203A11C->unk2E0->pos1.x = 216;
- sUnknown_0203A11C->unk2E0->pos1.y = arg1 * 16 + 112;
- }
-}
-
-void sub_811E1A4(s8 arg0, s8 arg1)
-{
- int anim;
- int x, y;
-
- if (arg0 != -1)
- {
- y = arg1 * 16 + 96;
- x = 32;
- if (arg0 == 6 && arg1 == 0)
- {
- x = 158;
- anim = 2;
- }
- else
- {
- x += sUnknown_08597D08[arg0 < ARRAY_COUNT(sUnknown_08597D08) ? arg0 : 0];
- anim = 3;
- }
-
- StartSpriteAnim(sUnknown_0203A11C->unk2DC, anim);
- sUnknown_0203A11C->unk2DC->pos1.x = x;
- sUnknown_0203A11C->unk2DC->pos1.y = y;
-
- StartSpriteAnim(sUnknown_0203A11C->unk2E0, anim);
- sUnknown_0203A11C->unk2E0->pos1.x = x;
- sUnknown_0203A11C->unk2E0->pos1.y = y;
- }
- else
- {
- StartSpriteAnim(sUnknown_0203A11C->unk2DC, 1);
- sUnknown_0203A11C->unk2DC->pos1.x = 216;
- sUnknown_0203A11C->unk2DC->pos1.y = arg1 * 16 + 112;
-
- StartSpriteAnim(sUnknown_0203A11C->unk2E0, 1);
- sUnknown_0203A11C->unk2E0->pos1.x = 216;
- sUnknown_0203A11C->unk2E0->pos1.y = arg1 * 16 + 112;
- }
-}
-
-void sub_811E288(void)
-{
- u8 spriteId = CreateSprite(&sUnknown_08597D18, 0, 0, 4);
- sUnknown_0203A11C->unk2E4 = &gSprites[spriteId];
- sUnknown_0203A11C->unk2E4->callback = sub_811E2DC;
- sUnknown_0203A11C->unk2E4->oam.priority = 2;
- sub_811E30C();
-}
-
-void sub_811E2DC(struct Sprite *sprite)
-{
- if (++sprite->data[0] > 2)
- {
- sprite->data[0] = 0;
- if (++sprite->pos2.x > 0)
- sprite->pos2.x = -6;
- }
-}
-
-void sub_811E30C(void)
-{
- s8 var0, var1, x, y;
-
- sub_811BBC8(&var0, &var1);
- x = var0 * 13;
- x = x * 8 + 28;
- y = var1 * 16 + 96;
- sub_811E34C(x, y);
-}
-
-void sub_811E34C(u8 x, u8 y)
-{
- if (sUnknown_0203A11C->unk2E4)
- {
- sUnknown_0203A11C->unk2E4->pos1.x = x;
- sUnknown_0203A11C->unk2E4->pos1.y = y;
- sUnknown_0203A11C->unk2E4->pos2.x = 0;
- sUnknown_0203A11C->unk2E4->data[0] = 0;
- }
-}
-
-void sub_811E380(void)
-{
- if (sUnknown_0203A11C->unk2E4)
- {
- DestroySprite(sUnknown_0203A11C->unk2E4);
- sUnknown_0203A11C->unk2E4 = NULL;
- }
-}
-
-void sub_811E3AC(void)
-{
- u8 spriteId = CreateSprite(&sUnknown_08597DF0, 208, 128, 6);
- sUnknown_0203A11C->unk2E8 = &gSprites[spriteId];
- sUnknown_0203A11C->unk2E8->pos2.x = -64;
-
- spriteId = CreateSprite(&sUnknown_08597DD0, 208, 80, 5);
- sUnknown_0203A11C->unk2EC = &gSprites[spriteId];
- sUnknown_0203A11C->unk9 = 0;
-}
-
-bool8 sub_811E418(void)
-{
- switch (sUnknown_0203A11C->unk9)
- {
- default:
- return FALSE;
- case 0:
- sUnknown_0203A11C->unk2E8->pos2.x += 8;
- if (sUnknown_0203A11C->unk2E8->pos2.x >= 0)
- {
- sUnknown_0203A11C->unk2E8->pos2.x = 0;
- if (!sub_811BBB0())
- StartSpriteAnim(sUnknown_0203A11C->unk2EC, 1);
- else
- StartSpriteAnim(sUnknown_0203A11C->unk2EC, 2);
-
- sUnknown_0203A11C->unk9++;
- }
- break;
- case 1:
- if (sUnknown_0203A11C->unk2EC->animEnded)
- {
- sUnknown_0203A11C->unk9 = 2;
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-void sub_811E4AC(void)
-{
- sUnknown_0203A11C->unk9 = 0;
- StartSpriteAnim(sUnknown_0203A11C->unk2EC, 3);
-}
-
-bool8 sub_811E4D0(void)
-{
- switch (sUnknown_0203A11C->unk9)
- {
- default:
- return FALSE;
- case 0:
- if (sUnknown_0203A11C->unk2EC->animEnded)
- sUnknown_0203A11C->unk9 = 1;
- break;
- case 1:
- sUnknown_0203A11C->unk2E8->pos2.x -= 8;
- if (sUnknown_0203A11C->unk2E8->pos2.x <= -64)
- {
- DestroySprite(sUnknown_0203A11C->unk2EC);
- DestroySprite(sUnknown_0203A11C->unk2E8);
- sUnknown_0203A11C->unk2EC = NULL;
- sUnknown_0203A11C->unk2E8 = NULL;
- sUnknown_0203A11C->unk9++;
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-void sub_811E55C(void)
-{
- StartSpriteAnim(sUnknown_0203A11C->unk2EC, 4);
-}
-
-void sub_811E578(void)
-{
- if (!sub_811BBB0())
- StartSpriteAnim(sUnknown_0203A11C->unk2EC, 1);
- else
- StartSpriteAnim(sUnknown_0203A11C->unk2EC, 2);
-}
-
-bool8 sub_811E5B8(void)
-{
- return !sUnknown_0203A11C->unk2EC->animEnded;
-}
-
-void sub_811E5D4(void)
-{
- u8 spriteId = CreateSprite(&sUnknown_08597E48, 96, 80, 0);
- if (spriteId != MAX_SPRITES)
- sUnknown_0203A11C->unk2F0 = &gSprites[spriteId];
-
- spriteId = CreateSprite(&sUnknown_08597E48, 96, 156, 0);
- if (spriteId != MAX_SPRITES)
- {
- sUnknown_0203A11C->unk2F4 = &gSprites[spriteId];
- sUnknown_0203A11C->unk2F4->vFlip = 1;
- }
-
- sub_811E6B0();
-}
-
-void sub_811E64C(void)
-{
- sUnknown_0203A11C->unk2F0->invisible = !sub_811BBF8();
- sUnknown_0203A11C->unk2F4->invisible = !sub_811BC2C();
-}
-
-void sub_811E6B0(void)
-{
- sUnknown_0203A11C->unk2F0->invisible = 1;
- sUnknown_0203A11C->unk2F4->invisible = 1;
-}
-
-void sub_811E6E0(int arg0)
-{
- if (!arg0)
- {
- sUnknown_0203A11C->unk2F0->pos1.x = 96;
- sUnknown_0203A11C->unk2F4->pos1.x = 96;
- }
- else
- {
- sUnknown_0203A11C->unk2F0->pos1.x = 120;
- sUnknown_0203A11C->unk2F4->pos1.x = 120;
- }
-}
-
-void sub_811E720(void)
-{
- u8 spriteId = CreateSprite(&sUnknown_08597E30, 220, 84, 1);
- if (spriteId != MAX_SPRITES)
- sUnknown_0203A11C->unk2F8 = &gSprites[spriteId];
-
- spriteId = CreateSprite(&sUnknown_08597E30, 220, 156, 1);
- if (spriteId != MAX_SPRITES)
- {
- sUnknown_0203A11C->unk2FC = &gSprites[spriteId];
- StartSpriteAnim(sUnknown_0203A11C->unk2FC, 1);
- }
-
- sub_811E7F8();
-}
-
-void sub_811E794(void)
-{
- sUnknown_0203A11C->unk2F8->invisible = !sub_811BBF8();
- sUnknown_0203A11C->unk2FC->invisible = !sub_811BC2C();
-}
-
-void sub_811E7F8(void)
-{
- sUnknown_0203A11C->unk2F8->invisible = 1;
- sUnknown_0203A11C->unk2FC->invisible = 1;
-}
-
-void sub_811E828(void)
-{
- int graphicsId;
- u8 spriteId;
-
- switch (GetDisplayedPersonType())
- {
- case EASY_CHAT_PERSON_REPORTER_MALE:
- graphicsId = EVENT_OBJ_GFX_REPORTER_M;
- break;
- case EASY_CHAT_PERSON_REPORTER_FEMALE:
- graphicsId = EVENT_OBJ_GFX_REPORTER_F;
- break;
- case EASY_CHAT_PERSON_BOY:
- graphicsId = EVENT_OBJ_GFX_BOY_1;
- break;
- default:
- return;
- }
-
- if (GetEasyChatScreenFrameId() != 4)
- return;
-
- spriteId = AddPseudoEventObject(graphicsId, SpriteCallbackDummy, 76, 40, 0);
- if (spriteId != MAX_SPRITES)
- {
- gSprites[spriteId].oam.priority = 0;
- StartSpriteAnim(&gSprites[spriteId], 2);
- }
-
- spriteId = AddPseudoEventObject(
- gSaveBlock2Ptr->playerGender == MALE ? EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL : EVENT_OBJ_GFX_RIVAL_MAY_NORMAL,
- SpriteCallbackDummy,
- 52,
- 40,
- 0);
-
- if (spriteId != MAX_SPRITES)
- {
- gSprites[spriteId].oam.priority = 0;
- StartSpriteAnim(&gSprites[spriteId], 3);
- }
-}
-
-int GetFooterIndex(void)
-{
- u8 frameId = GetEasyChatScreenFrameId();
- switch (sPhraseFrameDimensions[frameId].footerId)
- {
- case 1:
- return 1;
- case 2:
- return 2;
- case 0:
- return 0;
- default:
- return 3;
- }
-}
-
-int GetFooterOptionXOffset(int option)
-{
- int footerIndex = GetFooterIndex();
- if (footerIndex < 3)
- return sFooterOptionXOffsets[footerIndex][option] + 4;
- else
- return 0;
-}
-
-void sub_811E948(void)
-{
- int i;
- u16 windowId;
- struct WindowTemplate template;
- int footerId = GetFooterIndex();
- if (footerId == 3)
- return;
-
- template.bg = 3;
- template.tilemapLeft = 1;
- template.tilemapTop = 11;
- template.width = 28;
- template.height = 2;
- template.paletteNum = 11;
- template.baseBlock = 0x34;
- windowId = AddWindow(&template);
- FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
- for (i = 0; i < 4; i++)
- {
- const u8 *str = sFooterTextOptions[footerId][i];
- if (str)
- {
- int x = sFooterOptionXOffsets[footerId][i];
- sub_811D028(windowId, 1, str, x, 1, 0, NULL);
- }
- }
-
- PutWindowTilemap(windowId);
-}
-
-bool8 sub_811EA28(u8 groupId)
+static bool8 sub_80BD718(u8 groupId)
{
switch (groupId)
{
case EC_GROUP_TRENDY_SAYING:
- return FlagGet(FLAG_SYS_HIPSTER_MEET);
+ return FALSE;
case EC_GROUP_EVENTS:
case EC_GROUP_MOVE_1:
case EC_GROUP_MOVE_2:
return FlagGet(FLAG_SYS_GAME_CLEAR);
- case EC_GROUP_POKEMON_2:
- return sub_811F0F8();
+ case EC_GROUP_POKEMON:
+ return sub_80BDCA8();
default:
return TRUE;
}
}
-u16 EasyChat_GetNumWordsInGroup(u8 groupId)
+static u16 EasyChat_GetNumWordsInGroup(u8 groupId)
{
if (groupId == EC_GROUP_POKEMON)
return GetNationalPokedexCount(FLAG_GET_SEEN);
- if (sub_811EA28(groupId))
+ if (sub_80BD718(groupId))
return gEasyChatGroups[groupId].numEnabledWords;
return 0;
}
-bool8 sub_811EAA4(u16 easyChatWord)
+static bool8 sub_80BD78C(u16 easyChatWord)
{
u16 i;
u8 groupId;
@@ -4070,36 +166,7 @@ bool8 sub_811EAA4(u16 easyChatWord)
}
}
-bool8 ECWord_CheckIfOutsideOfValidRange(u16 easyChatWord)
-{
- int numWordsInGroup;
- u8 groupId = EC_GROUP(easyChatWord);
- u32 index = EC_INDEX(easyChatWord);
- if (groupId >= EC_NUM_GROUPS)
- return TRUE;
-
- switch (groupId)
- {
- case EC_GROUP_POKEMON:
- case EC_GROUP_POKEMON_2:
- numWordsInGroup = gNumSpeciesNames;
- break;
- case EC_GROUP_MOVE_1:
- case EC_GROUP_MOVE_2:
- numWordsInGroup = gUnknown_085FA1D4;
- break;
- default:
- numWordsInGroup = gEasyChatGroups[groupId].numWords;
- break;
- }
-
- if (numWordsInGroup <= index)
- return TRUE;
- else
- return FALSE;
-}
-
-const u8 *GetEasyChatWord(u8 groupId, u16 index)
+static const u8 *GetEasyChatWord(u8 groupId, u16 index)
{
switch (groupId)
{
@@ -4117,7 +184,7 @@ const u8 *GetEasyChatWord(u8 groupId, u16 index)
u8 *CopyEasyChatWord(u8 *dest, u16 easyChatWord)
{
u8 *resultStr;
- if (sub_811EAA4(easyChatWord))
+ if (sub_80BD78C(easyChatWord))
{
resultStr = StringCopy(dest, gText_ThreeQuestionMarks);
}
@@ -4165,64 +232,12 @@ u8 *ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows
return dest;
}
-u8 *unref_sub_811EC98(u8 *dest, const u16 *src, u16 columns, u16 rows)
-{
- u16 i, j, k;
- u16 numColumns;
- int var0, var1;
-
- numColumns = columns;
- var1 = 0;
- columns--;
- for (i = 0; i < rows; i++)
- {
- const u16 *var2 = src;
- var0 = 0;
- for (j = 0; j < numColumns; j++)
- {
- if (var2[j] != 0xFFFF)
- var0 = 1;
- }
-
- if (!var0)
- {
- src += numColumns;
- continue;
- }
-
- for (k = 0; k < columns; k++)
- {
- dest = CopyEasyChatWord(dest, *src);
- if (*src != 0xFFFF)
- {
- *dest = CHAR_SPACE;
- dest++;
- }
-
- src++;
- }
-
- dest = CopyEasyChatWord(dest, *(src++));
- if (var1 == 0)
- *dest = CHAR_NEWLINE;
- else
- *dest = CHAR_PROMPT_SCROLL;
-
- dest++;
- var1++;
- }
-
- dest--;
- *dest = EOS;
- return dest;
-}
-
-u16 GetEasyChatWordStringLength(u16 easyChatWord)
+static u16 GetEasyChatWordStringLength(u16 easyChatWord)
{
if (easyChatWord == 0xFFFF)
return 0;
- if (sub_811EAA4(easyChatWord))
+ if (sub_80BD78C(easyChatWord))
{
return StringLength(gText_ThreeQuestionMarks);
}
@@ -4234,7 +249,7 @@ u16 GetEasyChatWordStringLength(u16 easyChatWord)
}
}
-bool8 sub_811EDC4(const u16 *easyChatWords, u8 arg1, u8 arg2, u16 arg3)
+bool8 sub_80BD974(const u16 *easyChatWords, u8 arg1, u8 arg2, u16 arg3)
{
u8 i, j;
@@ -4251,11 +266,11 @@ bool8 sub_811EDC4(const u16 *easyChatWords, u8 arg1, u8 arg2, u16 arg3)
return FALSE;
}
-u16 sub_811EE38(u16 groupId)
+static u16 sub_80BD9E8(u16 groupId)
{
u16 index = Random() % gEasyChatGroups[groupId].numWords;
- if (groupId == EC_GROUP_POKEMON
- || groupId == EC_GROUP_POKEMON_2
+ if (groupId == EC_GROUP_POKEMON_2
+ || groupId == EC_GROUP_POKEMON
|| groupId == EC_GROUP_MOVE_1
|| groupId == EC_GROUP_MOVE_2)
{
@@ -4265,18 +280,18 @@ u16 sub_811EE38(u16 groupId)
return EC_WORD(groupId, index);
}
-u16 sub_811EE90(u16 groupId)
+static u16 sub_80BDA40(u16 groupId)
{
- if (!sub_811EA28(groupId))
+ if (!sub_80BD718(groupId))
return 0xFFFF;
if (groupId == EC_GROUP_POKEMON)
- return sub_811F108();
+ return GetRandomECPokemon();
- return sub_811EE38(groupId);
+ return sub_80BD9E8(groupId);
}
-void sub_811EECC(void)
+void sub_80BDA7C(void)
{
u16 *easyChatWords;
int columns, rows;
@@ -4289,7 +304,7 @@ void sub_811EECC(void)
break;
case 1:
easyChatWords = gSaveBlock1Ptr->easyChatBattleStart;
- if (sub_811EDC4(gSaveBlock1Ptr->easyChatBattleStart, 3, 2, 18))
+ if (sub_80BD974(gSaveBlock1Ptr->easyChatBattleStart, 3, 2, 18))
{
columns = 2;
rows = 3;
@@ -4318,21 +333,21 @@ void sub_811EECC(void)
ShowFieldAutoScrollMessage(gStringVar4);
}
-void sub_811EF6C(void)
+void BufferRandomHobbyOrLifestyleString(void)
{
int groupId = Random() & 1 ? EC_GROUP_HOBBIES : EC_GROUP_LIFESTYLE;
- u16 easyChatWord = sub_811EE90(groupId);
+ u16 easyChatWord = sub_80BDA40(groupId);
CopyEasyChatWord(gStringVar2, easyChatWord);
}
-bool8 sub_811EF98(u8 additionalPhraseId)
+static bool8 IsTrendySayingUnlocked(u8 additionalPhraseId)
{
int byteOffset = additionalPhraseId / 8;
int shift = additionalPhraseId % 8;
return (gSaveBlock1Ptr->additionalPhrases[byteOffset] >> shift) & 1;
}
-void sub_811EFC0(u8 additionalPhraseId)
+void EnableRareWord(u8 additionalPhraseId)
{
if (additionalPhraseId < 33)
{
@@ -4342,32 +357,32 @@ void sub_811EFC0(u8 additionalPhraseId)
}
}
-u8 sub_811EFF0(void)
+static u8 GetNumUnlockedTrendySayings(void)
{
u8 i;
u8 numAdditionalPhrasesUnlocked;
for (i = 0, numAdditionalPhrasesUnlocked = 0; i < 33; i++)
{
- if (sub_811EF98(i))
+ if (IsTrendySayingUnlocked(i))
numAdditionalPhrasesUnlocked++;
}
return numAdditionalPhrasesUnlocked;
}
-u16 sub_811F01C(void)
+static u16 UnlockRandomTrendySaying(void)
{
u16 i;
u16 additionalPhraseId;
- u8 numAdditionalPhrasesUnlocked = sub_811EFF0();
+ u8 numAdditionalPhrasesUnlocked = GetNumUnlockedTrendySayings();
if (numAdditionalPhrasesUnlocked == 33)
return 0xFFFF;
additionalPhraseId = Random() % (33 - numAdditionalPhrasesUnlocked);
for (i = 0; i < 33; i++)
{
- if (!sub_811EF98(i))
+ if (!IsTrendySayingUnlocked(i))
{
if (additionalPhraseId)
{
@@ -4375,7 +390,7 @@ u16 sub_811F01C(void)
}
else
{
- sub_811EFC0(i);
+ EnableRareWord(i);
return EC_WORD(EC_GROUP_TRENDY_SAYING, i);
}
}
@@ -4384,17 +399,17 @@ u16 sub_811F01C(void)
return 0xFFFF;
}
-u16 sub_811F090(void)
+static u16 GetRandomUnlockedTrendySaying(void)
{
u16 i;
- u16 additionalPhraseId = sub_811EFF0();
+ u16 additionalPhraseId = GetNumUnlockedTrendySayings();
if (additionalPhraseId == 0)
return 0xFFFF;
additionalPhraseId = Random() % additionalPhraseId;
for (i = 0; i < 33; i++)
{
- if (sub_811EF98(i))
+ if (IsTrendySayingUnlocked(i))
{
if (additionalPhraseId)
additionalPhraseId--;
@@ -4406,23 +421,23 @@ u16 sub_811F090(void)
return 0xFFFF;
}
-bool8 sub_811F0F8(void)
+static bool8 sub_80BDCA8(void)
{
return IsNationalPokedexEnabled();
}
-u16 sub_811F108(void)
+static u16 GetRandomECPokemon(void)
{
u16 i;
u16 numWords;
const u16 *species;
- u16 index = EasyChat_GetNumWordsInGroup(EC_GROUP_POKEMON);
+ u16 index = EasyChat_GetNumWordsInGroup(EC_GROUP_POKEMON_2);
if (index == 0)
return 0xFFFF;
index = Random() % index;
- species = gEasyChatGroups[EC_GROUP_POKEMON].wordData.valueList;
- numWords = gEasyChatGroups[EC_GROUP_POKEMON].numWords;
+ species = gEasyChatGroups[EC_GROUP_POKEMON_2].wordData.valueList;
+ numWords = gEasyChatGroups[EC_GROUP_POKEMON_2].numWords;
for (i = 0; i < numWords; i++)
{
u16 dexNum = SpeciesToNationalPokedexNum(*species);
@@ -4431,7 +446,7 @@ u16 sub_811F108(void)
if (index)
index--;
else
- return EC_WORD(EC_GROUP_POKEMON, *species);
+ return EC_WORD(EC_GROUP_POKEMON_2, *species);
}
species++;
@@ -4446,16 +461,16 @@ void InitEasyChatPhrases(void)
for (i = 0; i < 4; i++)
gSaveBlock1Ptr->easyChatProfile[i] = sDefaultProfileWords[i];
-
+
for (i = 0; i < 6; i++)
gSaveBlock1Ptr->easyChatBattleStart[i] = sDefaultBattleStartWords[i];
-
- for (i = 0; i < 6; i++)
- gSaveBlock1Ptr->easyChatBattleWon[i] = sUnknown_0859E640[i];
-
+
for (i = 0; i < 6; i++)
- gSaveBlock1Ptr->easyChatBattleLost[i] = sUnknown_0859E64C[i];
-
+ {
+ gSaveBlock1Ptr->easyChatBattleWon[i] = 0xFFFF;
+ gSaveBlock1Ptr->easyChatBattleLost[i] = 0xFFFF;
+ }
+
for (i = 0; i < MAIL_COUNT; i++)
{
for (j = 0; j < MAIL_WORDS_COUNT; j++)
@@ -4470,62 +485,67 @@ void InitEasyChatPhrases(void)
gSaveBlock1Ptr->additionalPhrases[i] = 0;
}
-bool8 sub_811F28C(void)
+void sub_80BDE28(void)
+{
+ s32 i;
+ u16 *ptr = sub_8143DA8();
+ for (i = 0; i < 4; i++)
+ ptr[i] = 0xFFFF;
+}
+
+bool8 sub_80BDE44(void)
{
- sUnknown_0203A120 = Alloc(sizeof(*sUnknown_0203A120));
- if (!sUnknown_0203A120)
+ gUnknown_20399BC = Alloc(sizeof(*gUnknown_20399BC));
+ if (!gUnknown_20399BC)
return FALSE;
- sub_811F2D4();
- sub_811F46C();
+ sub_80BDE88();
+ sub_80BDFF8();
return TRUE;
}
-void sub_811F2B8(void)
+void sub_80BDE70(void)
{
- if (sUnknown_0203A120)
- FREE_AND_SET_NULL(sUnknown_0203A120);
+ if (gUnknown_20399BC != NULL)
+ Free(gUnknown_20399BC);
}
-void sub_811F2D4(void)
+static void sub_80BDE88(void)
{
int i;
- sUnknown_0203A120->unk0 = 0;
+ gUnknown_20399BC->unk0 = 0;
if (GetNationalPokedexCount(FLAG_GET_SEEN))
- sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_POKEMON;
-
+ gUnknown_20399BC->unk2[gUnknown_20399BC->unk0++] = EC_GROUP_POKEMON;
+
for (i = EC_GROUP_TRAINER; i <= EC_GROUP_ADJECTIVES; i++)
- sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = i;
-
+ gUnknown_20399BC->unk2[gUnknown_20399BC->unk0++] = i;
+
if (FlagGet(FLAG_SYS_GAME_CLEAR))
{
- sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_EVENTS;
- sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_MOVE_1;
- sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_MOVE_2;
+ gUnknown_20399BC->unk2[gUnknown_20399BC->unk0++] = EC_GROUP_EVENTS;
+ gUnknown_20399BC->unk2[gUnknown_20399BC->unk0++] = EC_GROUP_MOVE_1;
+ gUnknown_20399BC->unk2[gUnknown_20399BC->unk0++] = EC_GROUP_MOVE_2;
}
- if (FlagGet(FLAG_SYS_HIPSTER_MEET))
- sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_TRENDY_SAYING;
-
if (IsNationalPokedexEnabled())
- sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_POKEMON_2;
+ gUnknown_20399BC->unk2[gUnknown_20399BC->unk0++] = EC_GROUP_POKEMON_2;
}
-u8 sub_811F3AC(void)
+u8 sub_80BDF38(void)
{
- return sUnknown_0203A120->unk0;
+ return gUnknown_20399BC->unk0;
}
-u8 sub_811F3B8(u8 index)
+u8 sub_80BDF44(u8 index)
{
- if (index >= sUnknown_0203A120->unk0)
+ if (index >= gUnknown_20399BC->unk0)
return EC_NUM_GROUPS;
else
- return sUnknown_0203A120->unk2[index];
+ return gUnknown_20399BC->unk2[index];
}
-u8 *unref_sub_811F3E0(u8 *dest, u8 groupId, u16 totalChars)
+static u8 *unref_sub_80BDF6C(u8 *dest, u8 groupId, u16 totalChars)
{
u16 i;
u8 *str = StringCopy(dest, gEasyChatGroupNamePointers[groupId]);
@@ -4534,7 +554,7 @@ u8 *unref_sub_811F3E0(u8 *dest, u8 groupId, u16 totalChars)
*str = CHAR_SPACE;
str++;
}
-
+
*str = EOS;
return str;
}
@@ -4553,33 +573,34 @@ u8 *CopyEasyChatWordPadded(u8 *dest, u16 easyChatWord, u16 totalChars)
*str = CHAR_SPACE;
str++;
}
-
+
*str = EOS;
return str;
}
-void sub_811F46C(void)
+static void sub_80BDFF8(void)
{
- int i, j, k;
- int numWords;
- const u16 *words;
- u16 numToProcess;
- int index;
+ static int i;
+ static int j;
+ static int k;
+ static int index;
+ static int numWords;
+ static int numToProcess;
+ static const u16 *words;
for (i = 0; i < 27; i++)
{
numWords = gEasyChatWordsByLetterPointers[i].numWords;
words = gEasyChatWordsByLetterPointers[i].words;
- sUnknown_0203A120->unk2E[i] = 0;
+ gUnknown_20399BC->unk2E[i] = 0;
index = 0;
- for (j = 0; j < numWords; j++)
+ for (j = 0; j < numWords; )
{
if (*words == 0xFFFF)
{
words++;
- numToProcess = *words;
- words++;
- j += 1 + numToProcess;
+ numToProcess = *words++;
+ j += 2;
}
else
{
@@ -4588,56 +609,57 @@ void sub_811F46C(void)
for (k = 0; k < numToProcess; k++)
{
- if (sub_811F860(words[k]))
+ if (sub_80BE440(words[k]))
{
- sUnknown_0203A120->unk64[i][index++] = words[k];
- sUnknown_0203A120->unk2E[i]++;
+ gUnknown_20399BC->unk64[i][index++] = words[k];
+ gUnknown_20399BC->unk2E[i]++;
break;
}
}
words += numToProcess;
+ j += numToProcess;
}
}
}
-void sub_811F548(int arg0, u16 groupId)
+void sub_80BE16C(int arg0, u16 groupId)
{
if (!arg0)
- sUnknown_0203A120->unk3BA0 = sub_811F5C4(groupId);
+ gUnknown_20399BC->unk3BA0 = sub_80BE1E8(groupId);
else
- sUnknown_0203A120->unk3BA0 = sub_811F6B8(groupId);
+ gUnknown_20399BC->unk3BA0 = sub_80BE2F8(groupId);
}
-u16 sub_811F578(u16 arg0)
+u16 sub_80BE19C(u16 arg0)
{
- if (arg0 >= sUnknown_0203A120->unk3BA0)
+ if (arg0 >= gUnknown_20399BC->unk3BA0)
return 0xFFFF;
else
- return sUnknown_0203A120->unk3984[arg0];
+ return gUnknown_20399BC->unk3984[arg0];
}
-u16 sub_811F5B0(void)
+u16 sub_80BE1D4(void)
{
- return sUnknown_0203A120->unk3BA0;
+ return gUnknown_20399BC->unk3BA0;
}
-u16 sub_811F5C4(u16 groupId)
+static u16 sub_80BE1E8(u16 groupId)
{
- u32 i;
- int totalWords;
+ u16 i;
+ u16 totalWords;
const u16 *list;
- const struct EasyChatWordInfo *wordInfo;
+ const struct EasyChatWordInfo * wordInfo;
u16 numWords = gEasyChatGroups[groupId].numWords;
- if (groupId == EC_GROUP_POKEMON || groupId == EC_GROUP_POKEMON_2
+ if (groupId == EC_GROUP_POKEMON_2 || groupId == EC_GROUP_POKEMON
|| groupId == EC_GROUP_MOVE_1 || groupId == EC_GROUP_MOVE_2)
{
list = gEasyChatGroups[groupId].wordData.valueList;
for (i = 0, totalWords = 0; i < numWords; i++)
{
- if (sub_811F764(list[i], groupId))
- sUnknown_0203A120->unk3984[totalWords++] = EC_WORD(groupId, list[i]);
+ if (sub_80BE3A4(list[i], groupId))
+ gUnknown_20399BC->unk3984[totalWords++] = EC_WORD(groupId, list[i]);
}
return totalWords;
@@ -4648,102 +670,74 @@ u16 sub_811F5C4(u16 groupId)
for (i = 0, totalWords = 0; i < numWords; i++)
{
u16 alphabeticalOrder = wordInfo[i].alphabeticalOrder;
- if (sub_811F764(alphabeticalOrder, groupId))
- sUnknown_0203A120->unk3984[totalWords++] = EC_WORD(groupId, alphabeticalOrder);
+ if (sub_80BE3A4(alphabeticalOrder, groupId))
+ gUnknown_20399BC->unk3984[totalWords++] = EC_WORD(groupId, alphabeticalOrder);
}
return totalWords;
}
}
-u16 sub_811F6B8(u16 alphabeticalGroup)
+static u16 sub_80BE2F8(u16 alphabeticalGroup)
{
u16 i;
u16 totalWords;
- for (i = 0, totalWords = 0; i < sUnknown_0203A120->unk2E[alphabeticalGroup]; i++)
- sUnknown_0203A120->unk3984[totalWords++] = sUnknown_0203A120->unk64[alphabeticalGroup][i];
+ for (i = 0, totalWords = 0; i < gUnknown_20399BC->unk2E[alphabeticalGroup]; i++)
+ gUnknown_20399BC->unk3984[totalWords++] = gUnknown_20399BC->unk64[alphabeticalGroup][i];
return totalWords;
}
-bool8 sub_811F72C(u8 arg0)
+static bool8 sub_80BE36C(u8 arg0)
{
int i;
- for (i = 0; i < sUnknown_0203A120->unk0; i++)
+ for (i = 0; i < gUnknown_20399BC->unk0; i++)
{
- if (sUnknown_0203A120->unk2[i] == arg0)
+ if (gUnknown_20399BC->unk2[i] == arg0)
return TRUE;
}
return FALSE;
}
-bool8 sub_811F764(u16 wordIndex, u8 groupId)
+static bool8 sub_80BE3A4(u16 wordIndex, u8 groupId)
{
switch (groupId)
{
case EC_GROUP_POKEMON:
return GetSetPokedexFlag(SpeciesToNationalPokedexNum(wordIndex), FLAG_GET_SEEN);
case EC_GROUP_POKEMON_2:
- if (sub_811F838(wordIndex))
- GetSetPokedexFlag(SpeciesToNationalPokedexNum(wordIndex), FLAG_GET_SEEN);
+ if (sub_80BE418(wordIndex))
+ return GetSetPokedexFlag(SpeciesToNationalPokedexNum(wordIndex), FLAG_GET_SEEN);
return TRUE;
case EC_GROUP_MOVE_1:
case EC_GROUP_MOVE_2:
return TRUE;
- case EC_GROUP_TRENDY_SAYING:
- return sub_811EF98(wordIndex);
default:
return gEasyChatGroups[groupId].wordData.words[wordIndex].enabled;
}
}
-int sub_811F838(u16 species)
+static int sub_80BE418(u16 species)
{
u32 i;
- for (i = 0; i < ARRAY_COUNT(sUnknown_0859E658); i++)
+ for (i = 0; i < ARRAY_COUNT(gUnknown_83EE004); i++)
{
- if (sUnknown_0859E658[i] == species)
+ if (gUnknown_83EE004[i] == species)
return TRUE;
}
return FALSE;
}
-u8 sub_811F860(u16 easyChatWord)
+static u8 sub_80BE440(u16 easyChatWord)
{
u8 groupId = EC_GROUP(easyChatWord);
u32 index = EC_INDEX(easyChatWord);
- if (!sub_811F72C(groupId))
+ if (!sub_80BE36C(groupId))
return FALSE;
else
- return sub_811F764(index, groupId);
-}
-
-void InitializeEasyChatWordArray(u16 *words, u16 length)
-{
- u16 i;
- for (i = length - 1; i != 0xFFFF; i--)
- *(words++) = 0xFFFF;
-}
-
-void sub_811F8BC(void)
-{
- int i;
- u16 *words = sub_801B058();
- for (i = 0; i < 4; i++)
- words[i] = 0xFFFF;
+ return sub_80BE3A4(index, groupId);
}
-bool32 sub_811F8D8(int easyChatWord)
-{
- int groupId = EC_GROUP(easyChatWord);
- int mask = 0x7F;
- int index = EC_INDEX(easyChatWord);
- if (!sub_811EA28(groupId & mask))
- return FALSE;
- else
- return sub_811F764(index, groupId & mask);
-}
-*/
diff --git a/src/mail.c b/src/mail.c
index a9cb66683..7d5e33944 100644
--- a/src/mail.c
+++ b/src/mail.c
@@ -70,8 +70,8 @@ struct MailViewResources {
u8 monIconSpriteId;
u8 unused;
u8 mailArrangementType;
- void (*copyEasyChatWord)(u8 *dest, u16 word);
- void (*convertEasyChatWordsToString)(u8 *dest, const u16 *src, u16 length1, u16 length2);
+ u8 *(*copyEasyChatWord)(u8 *dest, u16 word);
+ u8 *(*convertEasyChatWordsToString)(u8 *dest, const u16 *src, u16 length1, u16 length2);
const struct MailAttrStruct * messageLayout;
u16 bg1TilemapBuffer[BG_SCREEN_SIZE];
u16 bg2TilemapBuffer[BG_SCREEN_SIZE];
diff --git a/src/mevent.c b/src/mevent.c
index dc8df05d0..903166e7e 100644
--- a/src/mevent.c
+++ b/src/mevent.c
@@ -772,7 +772,7 @@ void sub_81442CC(struct MEventStruct_Unk1442CC * data)
CopyTrainerId(data->unk_4C, gSaveBlock2Ptr->playerTrainerId);
StringCopy(data->unk_45, gSaveBlock2Ptr->playerName);
for (i = 0; i < 6; i++)
- data->unk_50[i] = gSaveBlock1Ptr->unk2CA0[i];
+ data->unk_50[i] = gSaveBlock1Ptr->easyChatProfile[i];
memcpy(data->unk_5C, RomHeaderGameCode, 4);
data->unk_60 = RomHeaderSoftwareVersion;
}
diff --git a/src/trade_scene.c b/src/trade_scene.c
index 94fdadd5d..7b738aa52 100644
--- a/src/trade_scene.c
+++ b/src/trade_scene.c
@@ -22,6 +22,7 @@
#include "script.h"
#include "event_data.h"
#include "string_util.h"
+#include "mail.h"
#include "mail_data.h"
#include "pokeball.h"
#include "evolution_scene.h"
@@ -2484,7 +2485,7 @@ static void CreateInGameTradePokemonInternal(u8 playerSlot, u8 inGameTradeIdx)
static void GetInGameTradeMail(struct MailStruct * mail, const struct InGameTrade * inGameTrade)
{
int i;
- for (i = 0; i < 9; i++)
+ for (i = 0; i < MAIL_WORDS_COUNT; i++)
mail->words[i] = sInGameTradeMailMessages[inGameTrade->mailNum][i];
StringCopy(mail->playerName, inGameTrade->otName);
mail->trainerId[0] = inGameTrade->otId >> 24;
diff --git a/sym_bss.txt b/sym_bss.txt
index 1f9f5b3d8..06502497e 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -68,26 +68,8 @@ gUnknown_3000FC8: @ 3000FC8
gUnknown_3000FE8: @ 3000FE8
.space 0x184
-gUnknown_300116C: @ 300116C
- .space 0x4
-
-gUnknown_3001170: @ 3001170
- .space 0x4
-
-gUnknown_3001174: @ 3001174
- .space 0x4
-
-gUnknown_3001178: @ 3001178
- .space 0x4
-
-gUnknown_300117C: @ 300117C
- .space 0x4
-
-gUnknown_3001180: @ 3001180
- .space 0x4
-
-gUnknown_3001184: @ 3001184
- .space 0x4
+ .align 2
+ .include "src/easy_chat.o"
gUnknown_3001188: @ 3001188
.space 0x8
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 51501e162..5d5cbaaeb 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -362,17 +362,16 @@ gUnknown_203998C: @ 203998C
gUnknown_203999C: @ 203999C
.space 0x8
+ .align 2
.include "src/dragon.o"
+ .align 2
.include "src/battle_anim_utility_funcs.o"
+ .align 2
.include "src/battle_intro.o"
-
.align 2
-gUnknown_20399BC: @ 20399BC
- .space 0x4
-
-gUnknown_20399C0: @ 20399C0
- .space 0x4
-
+ .include "src/easy_chat.o"
+ .align 2
+ .include "asm/mon_markings.o" @ TODO: Move to src
.align 2
.include "src/mail.o"
.align 2