diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-03-06 17:07:36 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-03-06 17:07:36 -0500 |
commit | ecf7cf9835ca2f50b4c483c9ee4156d2057e5406 (patch) | |
tree | 40dff951b984dd3c32a541be198d431b016e85ba | |
parent | 85ca62e823e563ebec97e9e340fdde0af42d9221 (diff) |
through sub_80FFF80
-rw-r--r-- | asm/easy_chat_2.s | 2869 | ||||
-rw-r--r-- | data/easy_chat_2.s | 74 | ||||
-rw-r--r-- | include/constants/easy_chat.h | 4 | ||||
-rw-r--r-- | include/easy_chat.h | 1 | ||||
-rw-r--r-- | include/overworld.h | 1 | ||||
-rw-r--r-- | include/strings.h | 36 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/clear_save_data_screen.c | 4 | ||||
-rw-r--r-- | src/easy_chat_2.c | 1380 | ||||
-rw-r--r-- | sym_ewram.txt | 2 |
10 files changed, 1444 insertions, 2929 deletions
diff --git a/asm/easy_chat_2.s b/asm/easy_chat_2.s index 40b0eeb1f..1f742ebd6 100644 --- a/asm/easy_chat_2.s +++ b/asm/easy_chat_2.s @@ -5,2841 +5,6 @@ .text - thumb_func_start DoEasyChatScreen -DoEasyChatScreen: @ 80FEBAC - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r5, r0, 0 - adds r6, r1, 0 - mov r8, r2 - lsls r5, 24 - lsrs r5, 24 - bl ResetTasks - ldr r0, _080FEC00 @ =sub_80FEC54 - movs r1, 0 - bl CreateTask - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080FEC04 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - strh r5, [r0, 0xA] - adds r0, r4, 0 - movs r1, 0x2 - adds r2, r6, 0 - bl SetWordTaskArg - adds r0, r4, 0 - movs r1, 0x4 - mov r2, r8 - bl SetWordTaskArg - ldr r0, _080FEC08 @ =sub_80FEC0C - bl SetMainCallback2 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080FEC00: .4byte sub_80FEC54 -_080FEC04: .4byte gTasks -_080FEC08: .4byte sub_80FEC0C - thumb_func_end DoEasyChatScreen - - thumb_func_start sub_80FEC0C -sub_80FEC0C: @ 80FEC0C - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_80FEC0C - - thumb_func_start sub_80FEC24 -sub_80FEC24: @ 80FEC24 - push {lr} - bl TransferPlttBuffer - bl LoadOam - bl ProcessSpriteCopyRequests - pop {r0} - bx r0 - thumb_func_end sub_80FEC24 - - thumb_func_start sub_80FEC38 -sub_80FEC38: @ 80FEC38 - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080FEC50 @ =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r2, r3 - str r1, [r2] - movs r0, 0 - strh r0, [r2, 0x8] - bx lr - .align 2, 0 -_080FEC50: .4byte gTasks - thumb_func_end sub_80FEC38 - - thumb_func_start sub_80FEC54 -sub_80FEC54: @ 80FEC54 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsUpdateLinkStateCBActive - cmp r0, 0 - bne _080FEC70 -_080FEC62: - adds r0, r4, 0 - bl sub_80FED80 - lsls r0, 24 - cmp r0, 0 - bne _080FEC62 - b _080FEC7E -_080FEC70: - adds r0, r4, 0 - bl sub_80FED80 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080FEC86 -_080FEC7E: - ldr r1, _080FEC8C @ =sub_80FEC90 - adds r0, r4, 0 - bl sub_80FEC38 -_080FEC86: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FEC8C: .4byte sub_80FEC90 - thumb_func_end sub_80FEC54 - - thumb_func_start sub_80FEC90 -sub_80FEC90: @ 80FEC90 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080FECB4 @ =gTasks+0x8 - adds r6, r0, r1 - movs r0, 0 - ldrsh r5, [r6, r0] - cmp r5, 0x1 - beq _080FECEC - cmp r5, 0x1 - bgt _080FECB8 - cmp r5, 0 - beq _080FECC2 - b _080FED6E - .align 2, 0 -_080FECB4: .4byte gTasks+0x8 -_080FECB8: - cmp r5, 0x2 - beq _080FED28 - cmp r5, 0x3 - beq _080FED38 - b _080FED6E -_080FECC2: - ldr r0, _080FECE8 @ =sub_80FEC24 - bl SetVBlankCallback - movs r4, 0x1 - negs r4, r4 - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - str r5, [sp] - adds r0, r4, 0 - adds r1, r4, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _080FED20 - .align 2, 0 -_080FECE8: .4byte sub_80FEC24 -_080FECEC: - bl sub_80FF028 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x17 - bne _080FED10 - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - movs r0, 0x3 - strh r0, [r6] - b _080FED6E -_080FED10: - cmp r4, 0 - beq _080FED6E - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_8100134 -_080FED20: - ldrh r0, [r6] - adds r0, 0x1 - strh r0, [r6] - b _080FED6E -_080FED28: - bl sub_810014C - lsls r0, 24 - cmp r0, 0 - bne _080FED6E - movs r0, 0x1 - strh r0, [r6] - b _080FED6E -_080FED38: - ldr r0, _080FED78 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080FED6E - movs r1, 0x2 - ldrsh r0, [r6, r1] - cmp r0, 0xE - bne _080FED50 - bl sub_80FEF4C -_080FED50: - movs r1, 0x2 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _080FED62 - ldr r0, _080FED7C @ =0x0000082d - bl FlagSet - bl sub_80FEF2C -_080FED62: - adds r0, r4, 0 - movs r1, 0x4 - bl GetWordTaskArg - bl sub_80FEE24 -_080FED6E: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080FED78: .4byte gPaletteFade -_080FED7C: .4byte 0x0000082d - thumb_func_end sub_80FEC90 - - thumb_func_start sub_80FED80 -sub_80FED80: @ 80FED80 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080FEDA4 @ =gTasks+0x8 - adds r6, r0, r1 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0x4 - bhi _080FEE12 - lsls r0, 2 - ldr r1, _080FEDA8 @ =_080FEDAC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FEDA4: .4byte gTasks+0x8 -_080FEDA8: .4byte _080FEDAC - .align 2, 0 -_080FEDAC: - .4byte _080FEDC0 - .4byte _080FEDD4 - .4byte _080FEDDA - .4byte _080FEDEE - .4byte _080FEE06 -_080FEDC0: - movs r0, 0 - bl SetVBlankCallback - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetPaletteFade - b _080FEE16 -_080FEDD4: - bl InitEasyChatSelection - b _080FEDF2 -_080FEDDA: - ldrb r4, [r6, 0x2] - adds r0, r5, 0 - movs r1, 0x2 - bl GetWordTaskArg - adds r1, r0, 0 - adds r0, r4, 0 - bl sub_80FEF6C - b _080FEDF2 -_080FEDEE: - bl sub_80FFF80 -_080FEDF2: - lsls r0, 24 - cmp r0, 0 - bne _080FEE16 - adds r0, r5, 0 - movs r1, 0x4 - bl GetWordTaskArg - bl sub_80FEE24 - b _080FEE16 -_080FEE06: - bl sub_80FFF98 - lsls r0, 24 - cmp r0, 0 - beq _080FEE16 - b _080FEE1C -_080FEE12: - movs r0, 0 - b _080FEE1E -_080FEE16: - ldrh r0, [r6] - adds r0, 0x1 - strh r0, [r6] -_080FEE1C: - movs r0, 0x1 -_080FEE1E: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80FED80 - - thumb_func_start sub_80FEE24 -sub_80FEE24: @ 80FEE24 - push {r4,lr} - adds r4, r0, 0 - bl DestroyEasyChatSelectionData - bl sub_80FF010 - bl sub_810011C - bl FreeAllWindowBuffers - adds r0, r4, 0 - bl SetMainCallback2 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FEE24 - - thumb_func_start ShowEasyChatScreen -ShowEasyChatScreen: @ 80FEE44 - push {lr} - ldr r0, _080FEE58 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0xE - bhi _080FEF12 - lsls r0, 2 - ldr r1, _080FEE5C @ =_080FEE60 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FEE58: .4byte gSpecialVar_0x8004 -_080FEE5C: .4byte _080FEE60 - .align 2, 0 -_080FEE60: - .4byte _080FEE9C - .4byte _080FEEB0 - .4byte _080FEEC4 - .4byte _080FEED8 - .4byte _080FEEF4 - .4byte _080FEF12 - .4byte _080FEF12 - .4byte _080FEF12 - .4byte _080FEF12 - .4byte _080FEF12 - .4byte _080FEF12 - .4byte _080FEF12 - .4byte _080FEF12 - .4byte _080FEF12 - .4byte _080FEEEC -_080FEE9C: - ldr r0, _080FEEA8 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r2, _080FEEAC @ =0x00002ca0 - adds r1, r0, r2 - b _080FEF08 - .align 2, 0 -_080FEEA8: .4byte gSaveBlock1Ptr -_080FEEAC: .4byte 0x00002ca0 -_080FEEB0: - ldr r0, _080FEEBC @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r2, _080FEEC0 @ =0x00002cac - adds r1, r0, r2 - b _080FEF08 - .align 2, 0 -_080FEEBC: .4byte gSaveBlock1Ptr -_080FEEC0: .4byte 0x00002cac -_080FEEC4: - ldr r0, _080FEED0 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r2, _080FEED4 @ =0x00002cb8 - adds r1, r0, r2 - b _080FEF08 - .align 2, 0 -_080FEED0: .4byte gSaveBlock1Ptr -_080FEED4: .4byte 0x00002cb8 -_080FEED8: - ldr r0, _080FEEE4 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r2, _080FEEE8 @ =0x00002cc4 - adds r1, r0, r2 - b _080FEF08 - .align 2, 0 -_080FEEE4: .4byte gSaveBlock1Ptr -_080FEEE8: .4byte 0x00002cc4 -_080FEEEC: - bl GetMEventProfileECWordsMaybe - adds r1, r0, 0 - b _080FEF08 -_080FEEF4: - ldr r2, _080FEF18 @ =gSaveBlock1Ptr - ldr r0, _080FEF1C @ =gSpecialVar_0x8005 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080FEF20 @ =0x00002cd0 - adds r0, r1 - ldr r1, [r2] - adds r1, r0 -_080FEF08: - ldr r0, _080FEF24 @ =gSpecialVar_0x8004 - ldrb r0, [r0] - ldr r2, _080FEF28 @ =sub_80568C4 - bl DoEasyChatScreen -_080FEF12: - pop {r0} - bx r0 - .align 2, 0 -_080FEF18: .4byte gSaveBlock1Ptr -_080FEF1C: .4byte gSpecialVar_0x8005 -_080FEF20: .4byte 0x00002cd0 -_080FEF24: .4byte gSpecialVar_0x8004 -_080FEF28: .4byte sub_80568C4 - thumb_func_end ShowEasyChatScreen - - thumb_func_start sub_80FEF2C -sub_80FEF2C: @ 80FEF2C - push {r4,lr} - ldr r4, _080FEF44 @ =gSpecialVar_0x8004 - ldr r0, _080FEF48 @ =gUnknown_843F29C - movs r1, 0x4 - bl sub_80FFEDC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FEF44: .4byte gSpecialVar_0x8004 -_080FEF48: .4byte gUnknown_843F29C - thumb_func_end sub_80FEF2C - - thumb_func_start sub_80FEF4C -sub_80FEF4C: @ 80FEF4C - push {r4,lr} - ldr r4, _080FEF64 @ =gSpecialVar_0x8004 - ldr r0, _080FEF68 @ =gUnknown_843F2A4 - movs r1, 0x4 - bl sub_80FFEDC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FEF64: .4byte gSpecialVar_0x8004 -_080FEF68: .4byte gUnknown_843F2A4 - thumb_func_end sub_80FEF4C - - thumb_func_start sub_80FEF6C -sub_80FEF6C: @ 80FEF6C - push {r4-r6,lr} - adds r6, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _080FEF88 @ =gUnknown_203ACE8 - movs r0, 0x2C - bl Alloc - str r0, [r4] - cmp r0, 0 - bne _080FEF8C - movs r0, 0 - b _080FF006 - .align 2, 0 -_080FEF88: .4byte gUnknown_203ACE8 -_080FEF8C: - movs r1, 0 - strb r5, [r0] - ldr r0, [r4] - str r6, [r0, 0x14] - strb r1, [r0, 0x4] - ldr r0, [r4] - strb r1, [r0, 0x5] - ldr r0, [r4] - strb r1, [r0, 0x6] - ldr r0, [r4] - strb r1, [r0, 0x9] - adds r0, r5, 0 - bl sub_80FFF1C - lsls r0, 24 - lsrs r0, 24 - ldr r3, [r4] - ldr r2, _080FF00C @ =gUnknown_843F2AC - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrb r2, [r1, 0x1] - strb r2, [r3, 0x2] - ldr r2, [r4] - ldrb r1, [r1, 0x2] - strb r1, [r2, 0x3] - ldr r1, [r4] - ldrb r3, [r1, 0x2] - ldrb r2, [r1, 0x3] - adds r5, r3, 0 - muls r5, r2 - adds r2, r5, 0 - strb r2, [r1, 0x7] - ldr r1, [r4] - strb r0, [r1, 0x1] - ldr r1, [r4] - ldrb r0, [r1, 0x7] - cmp r0, 0x9 - bls _080FEFE0 - movs r0, 0x9 - strb r0, [r1, 0x7] -_080FEFE0: - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x18 - ldrb r2, [r0, 0x7] - adds r0, r6, 0 - bl CpuSet - bl GetNumDisplayableGroups - ldr r2, [r4] - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, 0x1 - strb r0, [r2, 0xD] - movs r0, 0x1 -_080FF006: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080FF00C: .4byte gUnknown_843F2AC - thumb_func_end sub_80FEF6C - - thumb_func_start sub_80FF010 -sub_80FF010: @ 80FF010 - push {lr} - ldr r0, _080FF024 @ =gUnknown_203ACE8 - ldr r0, [r0] - cmp r0, 0 - beq _080FF01E - bl Free -_080FF01E: - pop {r0} - bx r0 - .align 2, 0 -_080FF024: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FF010 - - thumb_func_start sub_80FF028 -sub_80FF028: @ 80FF028 - push {lr} - ldr r0, _080FF040 @ =gUnknown_203ACE8 - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r0, 0x6 - bhi _080FF092 - lsls r0, 2 - ldr r1, _080FF044 @ =_080FF048 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FF040: .4byte gUnknown_203ACE8 -_080FF044: .4byte _080FF048 - .align 2, 0 -_080FF048: - .4byte _080FF064 - .4byte _080FF06A - .4byte _080FF070 - .4byte _080FF076 - .4byte _080FF07C - .4byte _080FF082 - .4byte _080FF088 -_080FF064: - bl sub_80FF098 - b _080FF08C -_080FF06A: - bl sub_80FF20C - b _080FF08C -_080FF070: - bl sub_80FF360 - b _080FF08C -_080FF076: - bl sub_80FF41C - b _080FF08C -_080FF07C: - bl sub_80FF4A8 - b _080FF08C -_080FF082: - bl sub_80FF544 - b _080FF08C -_080FF088: - bl sub_80FF4F0 -_080FF08C: - lsls r0, 16 - lsrs r0, 16 - b _080FF094 -_080FF092: - movs r0, 0 -_080FF094: - pop {r1} - bx r1 - thumb_func_end sub_80FF028 - - thumb_func_start sub_80FF098 -sub_80FF098: @ 80FF098 - push {r4-r7,lr} - ldr r0, _080FF0C0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080FF0E4 - ldr r1, _080FF0C4 @ =gUnknown_203ACE8 - ldr r3, [r1] - movs r2, 0 - movs r0, 0x2 - strb r0, [r3, 0x4] - ldr r0, [r1] - strb r2, [r0, 0xA] - ldr r0, [r1] - strb r2, [r0, 0xB] - ldr r0, [r1] - strb r2, [r0, 0xC] - movs r0, 0x9 - b _080FF1FC - .align 2, 0 -_080FF0C0: .4byte gMain -_080FF0C4: .4byte gUnknown_203ACE8 -_080FF0C8: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _080FF194 - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080FF184 - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _080FF174 - movs r0, 0 - b _080FF1FC -_080FF0E4: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080FF1A4 - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _080FF1AA - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080FF0C8 - ldr r2, _080FF16C @ =gUnknown_203ACE8 - ldr r1, [r2] - ldrb r0, [r1, 0x6] - subs r0, 0x1 -_080FF104: - strb r0, [r1, 0x6] -_080FF106: - adds r7, r2, 0 - adds r4, r7, 0 - ldr r2, [r4] - movs r0, 0x6 - ldrsb r0, [r2, r0] - ldr r6, _080FF170 @ =gUnknown_843F2AC - cmp r0, 0 - bge _080FF124 - ldrb r0, [r2, 0x1] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, r6 - ldrb r0, [r1, 0x2] - strb r0, [r2, 0x6] -_080FF124: - ldr r3, [r4] - movs r2, 0x6 - ldrsb r2, [r3, r2] - adds r5, r6, 0 - ldrb r1, [r3, 0x1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - ldrb r0, [r0, 0x2] - cmp r2, r0 - ble _080FF140 - movs r0, 0 - strb r0, [r3, 0x6] -_080FF140: - ldr r3, [r4] - movs r2, 0x6 - ldrsb r2, [r3, r2] - ldrb r1, [r3, 0x1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r1, r0, r5 - ldrb r0, [r1, 0x2] - cmp r2, r0 - bne _080FF1B4 - movs r0, 0x5 - ldrsb r0, [r3, r0] - cmp r0, 0x2 - ble _080FF162 - movs r0, 0x2 - strb r0, [r3, 0x5] -_080FF162: - ldr r1, [r4] - movs r0, 0x1 - strb r0, [r1, 0x4] - movs r0, 0x3 - b _080FF1FC - .align 2, 0 -_080FF16C: .4byte gUnknown_203ACE8 -_080FF170: .4byte gUnknown_843F2AC -_080FF174: - ldr r2, _080FF180 @ =gUnknown_203ACE8 - ldr r1, [r2] - ldrb r0, [r1, 0x5] - adds r0, 0x1 - strb r0, [r1, 0x5] - b _080FF106 - .align 2, 0 -_080FF180: .4byte gUnknown_203ACE8 -_080FF184: - ldr r2, _080FF190 @ =gUnknown_203ACE8 - ldr r1, [r2] - ldrb r0, [r1, 0x6] - adds r0, 0x1 - b _080FF104 - .align 2, 0 -_080FF190: .4byte gUnknown_203ACE8 -_080FF194: - ldr r2, _080FF1A0 @ =gUnknown_203ACE8 - ldr r1, [r2] - ldrb r0, [r1, 0x5] - subs r0, 0x1 - strb r0, [r1, 0x5] - b _080FF106 - .align 2, 0 -_080FF1A0: .4byte gUnknown_203ACE8 -_080FF1A4: - bl sub_80FF590 - b _080FF1AE -_080FF1AA: - bl sub_80FF5C0 -_080FF1AE: - lsls r0, 16 - lsrs r0, 16 - b _080FF1FC -_080FF1B4: - movs r0, 0x5 - ldrsb r0, [r3, r0] - cmp r0, 0 - bge _080FF1C2 - ldrb r0, [r1, 0x1] - subs r0, 0x1 - strb r0, [r3, 0x5] -_080FF1C2: - ldr r3, [r4] - movs r2, 0x5 - ldrsb r2, [r3, r2] - ldrb r1, [r3, 0x1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r0, r6 - ldrb r0, [r0, 0x1] - cmp r2, r0 - blt _080FF1DC - movs r0, 0 - strb r0, [r3, 0x5] -_080FF1DC: - bl sub_80FFCE0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080FF1FA - ldr r2, [r7] - ldr r0, [r2, 0x4] - ldr r1, _080FF204 @ =0x00ffff00 - ands r0, r1 - ldr r1, _080FF208 @ =0x00040100 - cmp r0, r1 - bne _080FF1FA - movs r0, 0 - strb r0, [r2, 0x5] -_080FF1FA: - movs r0, 0x2 -_080FF1FC: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080FF204: .4byte 0x00ffff00 -_080FF208: .4byte 0x00040100 - thumb_func_end sub_80FF098 - - thumb_func_start sub_80FF20C -sub_80FF20C: @ 80FF20C - push {r4-r6,lr} - ldr r2, _080FF22C @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080FF270 - ldr r0, _080FF230 @ =gUnknown_203ACE8 - ldr r0, [r0] - ldrb r0, [r0, 0x5] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - beq _080FF26A - b _080FF254 - .align 2, 0 -_080FF22C: .4byte gMain -_080FF230: .4byte gUnknown_203ACE8 -_080FF234: - movs r0, 0x20 - ands r0, r2 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0 - bne _080FF2F8 - movs r0, 0x80 - ands r0, r2 - cmp r0, 0 - bne _080FF2E8 - movs r0, 0x10 - ands r0, r2 - cmp r0, 0 - bne _080FF2D8 - movs r0, 0 - b _080FF34E -_080FF254: - cmp r0, 0x1 - bgt _080FF25E - cmp r0, 0 - beq _080FF264 - b _080FF270 -_080FF25E: - cmp r0, 0x2 - beq _080FF30E - b _080FF270 -_080FF264: - bl sub_80FF5A8 - b _080FF312 -_080FF26A: - bl sub_80FF590 - b _080FF312 -_080FF270: - ldrh r2, [r2, 0x2E] - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - bne _080FF308 - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - bne _080FF30E - movs r0, 0x40 - ands r0, r2 - cmp r0, 0 - beq _080FF234 - ldr r2, _080FF2D0 @ =gUnknown_203ACE8 - ldr r1, [r2] - ldrb r0, [r1, 0x6] - subs r0, 0x1 - strb r0, [r1, 0x6] -_080FF294: - adds r6, r2, 0 -_080FF296: - adds r5, r6, 0 - ldr r4, [r5] - movs r3, 0x6 - ldrsb r3, [r4, r3] - ldr r2, _080FF2D4 @ =gUnknown_843F2AC - ldrb r1, [r4, 0x1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r1, r0, r2 - ldrb r0, [r1, 0x2] - cmp r3, r0 - bne _080FF318 - movs r0, 0x5 - ldrsb r0, [r4, r0] - cmp r0, 0 - bge _080FF2BC - movs r0, 0x2 - strb r0, [r4, 0x5] -_080FF2BC: - ldr r1, [r5] - movs r0, 0x5 - ldrsb r0, [r1, r0] - cmp r0, 0x2 - ble _080FF2CA - movs r0, 0 - strb r0, [r1, 0x5] -_080FF2CA: - movs r0, 0x3 - b _080FF34E - .align 2, 0 -_080FF2D0: .4byte gUnknown_203ACE8 -_080FF2D4: .4byte gUnknown_843F2AC -_080FF2D8: - ldr r2, _080FF2E4 @ =gUnknown_203ACE8 - ldr r1, [r2] - ldrb r0, [r1, 0x5] - adds r0, 0x1 - strb r0, [r1, 0x5] - b _080FF294 - .align 2, 0 -_080FF2E4: .4byte gUnknown_203ACE8 -_080FF2E8: - ldr r1, _080FF2F4 @ =gUnknown_203ACE8 - ldr r0, [r1] - strb r3, [r0, 0x6] - adds r6, r1, 0 - b _080FF296 - .align 2, 0 -_080FF2F4: .4byte gUnknown_203ACE8 -_080FF2F8: - ldr r2, _080FF304 @ =gUnknown_203ACE8 - ldr r1, [r2] - ldrb r0, [r1, 0x5] - subs r0, 0x1 - strb r0, [r1, 0x5] - b _080FF294 - .align 2, 0 -_080FF304: .4byte gUnknown_203ACE8 -_080FF308: - bl sub_80FF590 - b _080FF312 -_080FF30E: - bl sub_80FF5C0 -_080FF312: - lsls r0, 16 - lsrs r0, 16 - b _080FF34E -_080FF318: - movs r0, 0x5 - ldrsb r0, [r4, r0] - ldrb r1, [r1, 0x1] - cmp r0, r1 - blt _080FF326 - subs r0, r1, 0x1 - strb r0, [r4, 0x5] -_080FF326: - bl sub_80FFCE0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080FF344 - ldr r2, [r6] - ldr r0, [r2, 0x4] - ldr r1, _080FF354 @ =0x00ffff00 - ands r0, r1 - ldr r1, _080FF358 @ =0x00040100 - cmp r0, r1 - bne _080FF344 - movs r0, 0 - strb r0, [r2, 0x5] -_080FF344: - ldr r0, _080FF35C @ =gUnknown_203ACE8 - ldr r1, [r0] - movs r0, 0 - strb r0, [r1, 0x4] - movs r0, 0x2 -_080FF34E: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080FF354: .4byte 0x00ffff00 -_080FF358: .4byte 0x00040100 -_080FF35C: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FF20C - - thumb_func_start sub_80FF360 -sub_80FF360: @ 80FF360 - push {lr} - ldr r1, _080FF378 @ =gMain - ldrh r2, [r1, 0x2E] - movs r0, 0x2 - ands r0, r2 - adds r3, r1, 0 - cmp r0, 0 - beq _080FF37C - bl sub_80FF678 - b _080FF412 - .align 2, 0 -_080FF378: .4byte gMain -_080FF37C: - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _080FF3CA - ldr r0, _080FF39C @ =gUnknown_203ACE8 - ldr r2, [r0] - movs r1, 0xA - ldrsb r1, [r2, r1] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080FF3A0 - bl sub_80FF5FC - b _080FF412 - .align 2, 0 -_080FF39C: .4byte gUnknown_203ACE8 -_080FF3A0: - movs r0, 0xB - ldrsb r0, [r2, r0] - cmp r0, 0x1 - beq _080FF3BE - cmp r0, 0x1 - bgt _080FF3B2 - cmp r0, 0 - beq _080FF3B8 - b _080FF3CA -_080FF3B2: - cmp r0, 0x2 - beq _080FF3C4 - b _080FF3CA -_080FF3B8: - bl sub_80FF688 - b _080FF412 -_080FF3BE: - bl sub_80FF6B4 - b _080FF412 -_080FF3C4: - bl sub_80FF678 - b _080FF412 -_080FF3CA: - ldrh r1, [r3, 0x2E] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080FF3DA - bl sub_80FF688 - b _080FF412 -_080FF3DA: - ldrh r1, [r3, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080FF3E8 - movs r0, 0x2 - b _080FF40E -_080FF3E8: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080FF3F4 - movs r0, 0x3 - b _080FF40E -_080FF3F4: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080FF400 - movs r0, 0x1 - b _080FF40E -_080FF400: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _080FF40C - movs r0, 0 - b _080FF416 -_080FF40C: - movs r0, 0 -_080FF40E: - bl sub_80FF7CC -_080FF412: - lsls r0, 16 - lsrs r0, 16 -_080FF416: - pop {r1} - bx r1 - thumb_func_end sub_80FF360 - - thumb_func_start sub_80FF41C -sub_80FF41C: @ 80FF41C - push {lr} - ldr r2, _080FF438 @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080FF440 - ldr r0, _080FF43C @ =gUnknown_203ACE8 - ldr r1, [r0] - movs r0, 0x2 - strb r0, [r1, 0x4] - movs r0, 0xD - b _080FF4A2 - .align 2, 0 -_080FF438: .4byte gMain -_080FF43C: .4byte gUnknown_203ACE8 -_080FF440: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080FF44E - bl sub_80FF6C8 - b _080FF49E -_080FF44E: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080FF45A - movs r0, 0x4 - b _080FF49A -_080FF45A: - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080FF466 - movs r0, 0x5 - b _080FF49A -_080FF466: - ldrh r1, [r2, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080FF474 - movs r0, 0x2 - b _080FF49A -_080FF474: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080FF480 - movs r0, 0x3 - b _080FF49A -_080FF480: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080FF48C - movs r0, 0x1 - b _080FF49A -_080FF48C: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _080FF498 - movs r0, 0 - b _080FF4A2 -_080FF498: - movs r0, 0 -_080FF49A: - bl sub_80FFA38 -_080FF49E: - lsls r0, 16 - lsrs r0, 16 -_080FF4A2: - pop {r1} - bx r1 - thumb_func_end sub_80FF41C - - thumb_func_start sub_80FF4A8 -sub_80FF4A8: @ 80FF4A8 - push {lr} - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _080FF4DC - cmp r1, 0 - bgt _080FF4C4 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080FF4C8 - b _080FF4E8 -_080FF4C4: - cmp r1, 0x1 - bne _080FF4E8 -_080FF4C8: - bl sub_80FF5F0 - ldr r1, _080FF4D8 @ =gUnknown_203ACE8 - ldr r1, [r1] - strb r0, [r1, 0x4] - movs r0, 0x7 - b _080FF4EA - .align 2, 0 -_080FF4D8: .4byte gUnknown_203ACE8 -_080FF4DC: - ldr r0, _080FF4E4 @ =gSpecialVar_Result - strh r1, [r0] - movs r0, 0x17 - b _080FF4EA - .align 2, 0 -_080FF4E4: .4byte gSpecialVar_Result -_080FF4E8: - movs r0, 0 -_080FF4EA: - pop {r1} - bx r1 - thumb_func_end sub_80FF4A8 - - thumb_func_start sub_80FF4F0 -sub_80FF4F0: @ 80FF4F0 - push {r4,lr} - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _080FF524 - cmp r1, 0 - bgt _080FF50C - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080FF510 - b _080FF53C -_080FF50C: - cmp r1, 0x1 - bne _080FF53C -_080FF510: - bl sub_80FF5F0 - ldr r1, _080FF520 @ =gUnknown_203ACE8 - ldr r1, [r1] - strb r0, [r1, 0x4] - movs r0, 0x7 - b _080FF53E - .align 2, 0 -_080FF520: .4byte gUnknown_203ACE8 -_080FF524: - ldr r4, _080FF538 @ =gSpecialVar_Result - bl sub_80FF78C - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - bl sub_80FF6F0 - movs r0, 0x17 - b _080FF53E - .align 2, 0 -_080FF538: .4byte gSpecialVar_Result -_080FF53C: - movs r0, 0 -_080FF53E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80FF4F0 - - thumb_func_start sub_80FF544 -sub_80FF544: @ 80FF544 - push {lr} - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _080FF574 - cmp r1, 0 - bgt _080FF560 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080FF564 - b _080FF588 -_080FF560: - cmp r1, 0x1 - bne _080FF588 -_080FF564: - ldr r0, _080FF570 @ =gUnknown_203ACE8 - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0x4] - movs r0, 0x7 - b _080FF58A - .align 2, 0 -_080FF570: .4byte gUnknown_203ACE8 -_080FF574: - bl sub_80FF728 - ldr r0, _080FF584 @ =gUnknown_203ACE8 - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0x4] - movs r0, 0x8 - b _080FF58A - .align 2, 0 -_080FF584: .4byte gUnknown_203ACE8 -_080FF588: - movs r0, 0 -_080FF58A: - pop {r1} - bx r1 - thumb_func_end sub_80FF544 - - thumb_func_start sub_80FF590 -sub_80FF590: @ 80FF590 - ldr r2, _080FF5A4 @ =gUnknown_203ACE8 - ldr r1, [r2] - ldrb r0, [r1, 0x4] - strb r0, [r1, 0x8] - ldr r1, [r2] - movs r0, 0x4 - strb r0, [r1, 0x4] - movs r0, 0x5 - bx lr - .align 2, 0 -_080FF5A4: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FF590 - - thumb_func_start sub_80FF5A8 -sub_80FF5A8: @ 80FF5A8 - ldr r2, _080FF5BC @ =gUnknown_203ACE8 - ldr r1, [r2] - ldrb r0, [r1, 0x4] - strb r0, [r1, 0x8] - ldr r1, [r2] - movs r0, 0x5 - strb r0, [r1, 0x4] - movs r0, 0x4 - bx lr - .align 2, 0 -_080FF5BC: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FF5A8 - - thumb_func_start sub_80FF5C0 -sub_80FF5C0: @ 80FF5C0 - push {r4,lr} - ldr r4, _080FF5DC @ =gUnknown_203ACE8 - ldr r0, [r4] - ldrb r1, [r0, 0x4] - strb r1, [r0, 0x8] - bl sub_80FFF48 - cmp r0, 0 - bne _080FF5E0 - ldr r1, [r4] - movs r0, 0x6 - strb r0, [r1, 0x4] - b _080FF5E8 - .align 2, 0 -_080FF5DC: .4byte gUnknown_203ACE8 -_080FF5E0: - ldr r1, [r4] - movs r0, 0x4 - strb r0, [r1, 0x4] - movs r0, 0x5 -_080FF5E8: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80FF5C0 - - thumb_func_start sub_80FF5F0 -sub_80FF5F0: @ 80FF5F0 - ldr r0, _080FF5F8 @ =gUnknown_203ACE8 - ldr r0, [r0] - ldrb r0, [r0, 0x8] - bx lr - .align 2, 0 -_080FF5F8: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FF5F0 - - thumb_func_start sub_80FF5FC -sub_80FF5FC: @ 80FF5FC - push {lr} - ldr r0, _080FF624 @ =gUnknown_203ACE8 - ldr r0, [r0] - ldrb r0, [r0, 0x9] - cmp r0, 0 - bne _080FF628 - bl sub_80FFB8C - lsls r0, 24 - lsrs r0, 24 - bl GetSelectedGroupByIndex - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0 - bl GetUnlockedECWords - b _080FF638 - .align 2, 0 -_080FF624: .4byte gUnknown_203ACE8 -_080FF628: - bl sub_80FFBAC - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x1 - bl GetUnlockedECWords -_080FF638: - bl GetNumDisplayedWords - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _080FF670 - ldr r2, _080FF66C @ =gUnknown_203ACE8 - ldr r3, [r2] - subs r0, 0x1 - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - movs r1, 0 - strb r0, [r3, 0xF] - ldr r0, [r2] - strb r1, [r0, 0xE] - ldr r0, [r2] - strb r1, [r0, 0x10] - ldr r0, [r2] - strb r1, [r0, 0x11] - ldr r1, [r2] - movs r0, 0x3 - strb r0, [r1, 0x4] - movs r0, 0xB - b _080FF672 - .align 2, 0 -_080FF66C: .4byte gUnknown_203ACE8 -_080FF670: - movs r0, 0 -_080FF672: - pop {r1} - bx r1 - thumb_func_end sub_80FF5FC - - thumb_func_start sub_80FF678 -sub_80FF678: @ 80FF678 - ldr r0, _080FF684 @ =gUnknown_203ACE8 - ldr r1, [r0] - movs r0, 0 - strb r0, [r1, 0x4] - movs r0, 0xA - bx lr - .align 2, 0 -_080FF684: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FF678 - - thumb_func_start sub_80FF688 -sub_80FF688: @ 80FF688 - push {lr} - ldr r1, _080FF6A8 @ =gUnknown_203ACE8 - ldr r0, [r1] - movs r2, 0 - strb r2, [r0, 0xA] - ldr r0, [r1] - strb r2, [r0, 0xB] - ldr r0, [r1] - strb r2, [r0, 0xC] - ldr r1, [r1] - ldrb r0, [r1, 0x9] - cmp r0, 0 - bne _080FF6AC - movs r0, 0x1 - strb r0, [r1, 0x9] - b _080FF6AE - .align 2, 0 -_080FF6A8: .4byte gUnknown_203ACE8 -_080FF6AC: - strb r2, [r1, 0x9] -_080FF6AE: - movs r0, 0x16 - pop {r1} - bx r1 - thumb_func_end sub_80FF688 - - thumb_func_start sub_80FF6B4 -sub_80FF6B4: @ 80FF6B4 - push {lr} - ldr r0, _080FF6C4 @ =0x0000ffff - bl sub_80FF768 - movs r0, 0x1 - pop {r1} - bx r1 - .align 2, 0 -_080FF6C4: .4byte 0x0000ffff - thumb_func_end sub_80FF6B4 - - thumb_func_start sub_80FF6C8 -sub_80FF6C8: @ 80FF6C8 - push {lr} - bl sub_80FFBE4 - lsls r0, 16 - lsrs r0, 16 - bl GetDisplayedWordByIndex - lsls r0, 16 - lsrs r0, 16 - bl sub_80FF768 - ldr r0, _080FF6EC @ =gUnknown_203ACE8 - ldr r1, [r0] - movs r0, 0 - strb r0, [r1, 0x4] - movs r0, 0xC - pop {r1} - bx r1 - .align 2, 0 -_080FF6EC: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FF6C8 - - thumb_func_start sub_80FF6F0 -sub_80FF6F0: @ 80FF6F0 - push {r4,r5,lr} - movs r4, 0 - ldr r3, _080FF724 @ =gUnknown_203ACE8 - ldr r0, [r3] - ldrb r0, [r0, 0x7] - cmp r4, r0 - bcs _080FF71E - adds r5, r3, 0 -_080FF700: - ldr r3, [r5] - ldr r1, [r3, 0x14] - lsls r2, r4, 1 - adds r1, r2, r1 - adds r0, r3, 0 - adds r0, 0x18 - adds r0, r2 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - ldrb r3, [r3, 0x7] - cmp r4, r3 - bcc _080FF700 -_080FF71E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FF724: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FF6F0 - - thumb_func_start sub_80FF728 -sub_80FF728: @ 80FF728 - push {r4,r5,lr} - movs r3, 0 - ldr r2, _080FF760 @ =gUnknown_203ACE8 - ldr r0, [r2] - ldrb r0, [r0, 0x7] - cmp r3, r0 - bcs _080FF758 - adds r5, r2, 0 - ldr r0, _080FF764 @ =0x0000ffff - adds r4, r0, 0 -_080FF73C: - ldr r2, [r5] - lsls r0, r3, 1 - adds r1, r2, 0 - adds r1, 0x18 - adds r1, r0 - ldrh r0, [r1] - orrs r0, r4 - strh r0, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - ldrb r2, [r2, 0x7] - cmp r3, r2 - bcc _080FF73C -_080FF758: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FF760: .4byte gUnknown_203ACE8 -_080FF764: .4byte 0x0000ffff - thumb_func_end sub_80FF728 - - thumb_func_start sub_80FF768 -sub_80FF768: @ 80FF768 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - bl sub_80FFB6C - lsls r0, 16 - ldr r1, _080FF788 @ =gUnknown_203ACE8 - ldr r1, [r1] - lsrs r0, 15 - adds r1, 0x18 - adds r1, r0 - strh r4, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FF788: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FF768 - - thumb_func_start sub_80FF78C -sub_80FF78C: @ 80FF78C - push {r4,r5,lr} - movs r2, 0 - ldr r0, _080FF7B4 @ =gUnknown_203ACE8 - ldr r0, [r0] - ldrb r1, [r0, 0x7] - cmp r2, r1 - bcs _080FF7C2 - adds r5, r1, 0 - adds r4, r0, 0 - adds r4, 0x18 - ldr r3, [r0, 0x14] -_080FF7A2: - lsls r0, r2, 1 - adds r1, r4, r0 - adds r0, r3 - ldrh r1, [r1] - ldrh r0, [r0] - cmp r1, r0 - beq _080FF7B8 - movs r0, 0x1 - b _080FF7C4 - .align 2, 0 -_080FF7B4: .4byte gUnknown_203ACE8 -_080FF7B8: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, r5 - bcc _080FF7A2 -_080FF7C2: - movs r0, 0 -_080FF7C4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80FF78C - - thumb_func_start sub_80FF7CC -sub_80FF7CC: @ 80FF7CC - push {lr} - adds r2, r0, 0 - ldr r0, _080FF7F0 @ =gUnknown_203ACE8 - ldr r3, [r0] - movs r1, 0xA - ldrsb r1, [r3, r1] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080FF7FC - ldrb r0, [r3, 0x9] - cmp r0, 0 - bne _080FF7F4 - adds r0, r2, 0 - bl sub_80FF80C - b _080FF802 - .align 2, 0 -_080FF7F0: .4byte gUnknown_203ACE8 -_080FF7F4: - adds r0, r2, 0 - bl sub_80FF8D8 - b _080FF802 -_080FF7FC: - adds r0, r2, 0 - bl sub_80FF968 -_080FF802: - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_80FF7CC - - thumb_func_start sub_80FF80C -sub_80FF80C: @ 80FF80C - push {r4,lr} - cmp r0, 0x1 - beq _080FF882 - cmp r0, 0x1 - bcc _080FF8A2 - cmp r0, 0x2 - beq _080FF820 - cmp r0, 0x3 - beq _080FF848 - b _080FF8CE -_080FF820: - ldr r0, _080FF83C @ =gUnknown_203ACE8 - ldr r1, [r0] - movs r0, 0xB - ldrsb r0, [r1, r0] - ldrb r3, [r1, 0xC] - cmn r0, r3 - beq _080FF8CE - ldrb r2, [r1, 0xB] - cmp r0, 0 - beq _080FF840 - subs r0, r2, 0x1 - strb r0, [r1, 0xB] -_080FF838: - movs r0, 0xE - b _080FF8D0 - .align 2, 0 -_080FF83C: .4byte gUnknown_203ACE8 -_080FF840: - subs r0, r3, 0x1 - strb r0, [r1, 0xC] - movs r0, 0x10 - b _080FF8D0 -_080FF848: - ldr r0, _080FF870 @ =gUnknown_203ACE8 - ldr r2, [r0] - movs r1, 0xB - ldrsb r1, [r2, r1] - ldrb r3, [r2, 0xC] - adds r1, r3 - ldrb r0, [r2, 0xD] - subs r0, 0x1 - cmp r1, r0 - bge _080FF8CE - ldrb r1, [r2, 0xB] - movs r0, 0xB - ldrsb r0, [r2, r0] - cmp r0, 0x2 - bgt _080FF874 - adds r0, r1, 0x1 - strb r0, [r2, 0xB] - movs r4, 0xE - b _080FF87A - .align 2, 0 -_080FF870: .4byte gUnknown_203ACE8 -_080FF874: - adds r0, r3, 0x1 - strb r0, [r2, 0xC] - movs r4, 0xF -_080FF87A: - bl sub_80FFC1C - adds r0, r4, 0 - b _080FF8D0 -_080FF882: - ldr r0, _080FF898 @ =gUnknown_203ACE8 - ldr r1, [r0] - ldrb r2, [r1, 0xA] - movs r0, 0xA - ldrsb r0, [r1, r0] - cmp r0, 0 - beq _080FF89C - subs r0, r2, 0x1 - strb r0, [r1, 0xA] - b _080FF838 - .align 2, 0 -_080FF898: .4byte gUnknown_203ACE8 -_080FF89C: - bl sub_80FF9E8 - b _080FF838 -_080FF8A2: - ldr r0, _080FF8C4 @ =gUnknown_203ACE8 - ldr r1, [r0] - ldrb r2, [r1, 0xA] - movs r0, 0xA - ldrsb r0, [r1, r0] - cmp r0, 0 - bgt _080FF8C8 - adds r0, r2, 0x1 - strb r0, [r1, 0xA] - bl sub_80FFC6C - lsls r0, 24 - cmp r0, 0 - beq _080FF838 - bl sub_80FF9E8 - b _080FF838 - .align 2, 0 -_080FF8C4: .4byte gUnknown_203ACE8 -_080FF8C8: - bl sub_80FF9E8 - b _080FF838 -_080FF8CE: - movs r0, 0 -_080FF8D0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80FF80C - - thumb_func_start sub_80FF8D8 -sub_80FF8D8: @ 80FF8D8 - push {lr} - cmp r0, 0x1 - beq _080FF944 - cmp r0, 0x1 - bcc _080FF928 - cmp r0, 0x2 - beq _080FF8EE - cmp r0, 0x3 - beq _080FF90E - movs r0, 0 - b _080FF960 -_080FF8EE: - ldr r0, _080FF900 @ =gUnknown_203ACE8 - ldr r1, [r0] - ldrb r2, [r1, 0xB] - movs r0, 0xB - ldrsb r0, [r1, r0] - cmp r0, 0 - ble _080FF904 - subs r0, r2, 0x1 - b _080FF906 - .align 2, 0 -_080FF900: .4byte gUnknown_203ACE8 -_080FF904: - movs r0, 0x3 -_080FF906: - strb r0, [r1, 0xB] - bl sub_80FFC1C - b _080FF95E -_080FF90E: - ldr r0, _080FF920 @ =gUnknown_203ACE8 - ldr r1, [r0] - ldrb r2, [r1, 0xB] - movs r0, 0xB - ldrsb r0, [r1, r0] - cmp r0, 0x2 - bgt _080FF924 - adds r0, r2, 0x1 - b _080FF906 - .align 2, 0 -_080FF920: .4byte gUnknown_203ACE8 -_080FF924: - movs r0, 0 - b _080FF906 -_080FF928: - ldr r0, _080FF940 @ =gUnknown_203ACE8 - ldr r1, [r0] - ldrb r0, [r1, 0xA] - adds r0, 0x1 - strb r0, [r1, 0xA] - bl sub_80FFC6C - lsls r0, 24 - cmp r0, 0 - beq _080FF95E - b _080FF95A - .align 2, 0 -_080FF940: .4byte gUnknown_203ACE8 -_080FF944: - ldr r2, _080FF964 @ =gUnknown_203ACE8 - ldr r1, [r2] - ldrb r0, [r1, 0xA] - subs r0, 0x1 - strb r0, [r1, 0xA] - ldr r0, [r2] - ldrb r0, [r0, 0xA] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bge _080FF95E -_080FF95A: - bl sub_80FF9E8 -_080FF95E: - movs r0, 0xE -_080FF960: - pop {r1} - bx r1 - .align 2, 0 -_080FF964: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FF8D8 - - thumb_func_start sub_80FF968 -sub_80FF968: @ 80FF968 - push {lr} - adds r2, r0, 0 - cmp r2, 0x1 - beq _080FF9B8 - cmp r2, 0x1 - bcc _080FF9CC - cmp r2, 0x2 - beq _080FF980 - cmp r2, 0x3 - beq _080FF99C - movs r0, 0 - b _080FF9DE -_080FF980: - ldr r0, _080FF994 @ =gUnknown_203ACE8 - ldr r1, [r0] - ldrb r3, [r1, 0xB] - movs r0, 0xB - ldrsb r0, [r1, r0] - cmp r0, 0 - beq _080FF998 - subs r0, r3, 0x1 - b _080FF9DA - .align 2, 0 -_080FF994: .4byte gUnknown_203ACE8 -_080FF998: - strb r2, [r1, 0xB] - b _080FF9DC -_080FF99C: - ldr r0, _080FF9B0 @ =gUnknown_203ACE8 - ldr r1, [r0] - ldrb r2, [r1, 0xB] - movs r0, 0xB - ldrsb r0, [r1, r0] - cmp r0, 0x1 - bgt _080FF9B4 - adds r0, r2, 0x1 - b _080FF9DA - .align 2, 0 -_080FF9B0: .4byte gUnknown_203ACE8 -_080FF9B4: - movs r0, 0 - b _080FF9DA -_080FF9B8: - ldr r0, _080FF9C8 @ =gUnknown_203ACE8 - ldr r1, [r0] - ldrb r0, [r1, 0xB] - adds r0, 0x1 - strb r0, [r1, 0xB] - bl sub_80FFA0C - b _080FF9DC - .align 2, 0 -_080FF9C8: .4byte gUnknown_203ACE8 -_080FF9CC: - ldr r2, _080FF9E4 @ =gUnknown_203ACE8 - ldr r1, [r2] - movs r0, 0 - strb r0, [r1, 0xA] - ldr r1, [r2] - ldrb r0, [r1, 0xB] - adds r0, 0x1 -_080FF9DA: - strb r0, [r1, 0xB] -_080FF9DC: - movs r0, 0xE -_080FF9DE: - pop {r1} - bx r1 - .align 2, 0 -_080FF9E4: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FF968 - - thumb_func_start sub_80FF9E8 -sub_80FF9E8: @ 80FF9E8 - push {lr} - ldr r2, _080FFA08 @ =gUnknown_203ACE8 - ldr r1, [r2] - movs r0, 0xFF - strb r0, [r1, 0xA] - ldr r2, [r2] - ldrb r1, [r2, 0xB] - movs r0, 0xB - ldrsb r0, [r2, r0] - cmp r0, 0 - beq _080FFA02 - subs r0, r1, 0x1 - strb r0, [r2, 0xB] -_080FFA02: - pop {r0} - bx r0 - .align 2, 0 -_080FFA08: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FF9E8 - - thumb_func_start sub_80FFA0C -sub_80FFA0C: @ 80FFA0C - push {r4,lr} - ldr r4, _080FFA24 @ =gUnknown_203ACE8 - ldr r1, [r4] - ldrb r0, [r1, 0x9] - cmp r0, 0 - bne _080FFA28 - movs r0, 0x1 - strb r0, [r1, 0xA] - bl sub_80FFC1C - b _080FFA32 - .align 2, 0 -_080FFA24: .4byte gUnknown_203ACE8 -_080FFA28: - ldrb r0, [r1, 0xB] - bl sub_80FFC04 - ldr r1, [r4] - strb r0, [r1, 0xA] -_080FFA32: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FFA0C - - thumb_func_start sub_80FFA38 -sub_80FFA38: @ 80FFA38 - push {r4,lr} - cmp r0, 0x5 - bls _080FFA40 - b _080FFB64 -_080FFA40: - lsls r0, 2 - ldr r1, _080FFA4C @ =_080FFA50 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FFA4C: .4byte _080FFA50 - .align 2, 0 -_080FFA50: - .4byte _080FFAEC - .4byte _080FFACA - .4byte _080FFA68 - .4byte _080FFA94 - .4byte _080FFB14 - .4byte _080FFB34 -_080FFA68: - ldr r0, _080FFA88 @ =gUnknown_203ACE8 - ldr r1, [r0] - movs r0, 0x11 - ldrsb r0, [r1, r0] - ldrb r3, [r1, 0xE] - adds r0, r3 - cmp r0, 0 - bgt _080FFA7A - b _080FFB64 -_080FFA7A: - ldrb r2, [r1, 0x11] - movs r0, 0x11 - ldrsb r0, [r1, r0] - cmp r0, 0 - ble _080FFA8C - subs r0, r2, 0x1 - b _080FFAB2 - .align 2, 0 -_080FFA88: .4byte gUnknown_203ACE8 -_080FFA8C: - subs r0, r3, 0x1 - strb r0, [r1, 0xE] - movs r4, 0x12 - b _080FFAC2 -_080FFA94: - ldr r0, _080FFAB8 @ =gUnknown_203ACE8 - ldr r1, [r0] - movs r0, 0x11 - ldrsb r0, [r1, r0] - ldrb r3, [r1, 0xE] - adds r0, r3 - ldrb r2, [r1, 0xF] - cmp r0, r2 - bge _080FFB64 - ldrb r2, [r1, 0x11] - movs r0, 0x11 - ldrsb r0, [r1, r0] - cmp r0, 0x2 - bgt _080FFABC - adds r0, r2, 0x1 -_080FFAB2: - strb r0, [r1, 0x11] - movs r4, 0x11 - b _080FFAC2 - .align 2, 0 -_080FFAB8: .4byte gUnknown_203ACE8 -_080FFABC: - adds r0, r3, 0x1 - strb r0, [r1, 0xE] - movs r4, 0x13 -_080FFAC2: - bl sub_80FFC44 - adds r0, r4, 0 - b _080FFB66 -_080FFACA: - ldr r0, _080FFADC @ =gUnknown_203ACE8 - ldr r1, [r0] - ldrb r2, [r1, 0x10] - movs r0, 0x10 - ldrsb r0, [r1, r0] - cmp r0, 0 - ble _080FFAE0 - subs r0, r2, 0x1 - b _080FFAE2 - .align 2, 0 -_080FFADC: .4byte gUnknown_203ACE8 -_080FFAE0: - movs r0, 0x1 -_080FFAE2: - strb r0, [r1, 0x10] - bl sub_80FFC44 -_080FFAE8: - movs r0, 0x11 - b _080FFB66 -_080FFAEC: - ldr r4, _080FFB10 @ =gUnknown_203ACE8 - ldr r1, [r4] - ldrb r2, [r1, 0x10] - movs r0, 0x10 - ldrsb r0, [r1, r0] - cmp r0, 0 - bgt _080FFB0A - adds r0, r2, 0x1 - strb r0, [r1, 0x10] - bl sub_80FFCC0 - lsls r0, 24 - cmp r0, 0 - beq _080FFAE8 - ldr r1, [r4] -_080FFB0A: - movs r0, 0 - strb r0, [r1, 0x10] - b _080FFAE8 - .align 2, 0 -_080FFB10: .4byte gUnknown_203ACE8 -_080FFB14: - ldr r0, _080FFB28 @ =gUnknown_203ACE8 - ldr r2, [r0] - ldrb r0, [r2, 0xE] - adds r1, r0, 0 - cmp r1, 0 - beq _080FFB64 - cmp r1, 0x3 - bls _080FFB2C - subs r0, 0x4 - b _080FFB2E - .align 2, 0 -_080FFB28: .4byte gUnknown_203ACE8 -_080FFB2C: - movs r0, 0 -_080FFB2E: - strb r0, [r2, 0xE] - movs r0, 0x14 - b _080FFB66 -_080FFB34: - ldr r3, _080FFB60 @ =gUnknown_203ACE8 - ldr r1, [r3] - ldrb r2, [r1, 0xE] - ldrb r0, [r1, 0xF] - subs r0, 0x4 - cmp r2, r0 - bgt _080FFB64 - adds r0, r2, 0x4 - strb r0, [r1, 0xE] - ldr r2, [r3] - ldrb r1, [r2, 0xE] - ldrb r3, [r2, 0xF] - subs r0, r3, 0x3 - cmp r1, r0 - ble _080FFB58 - adds r0, r3, 0 - adds r0, 0xFD - strb r0, [r2, 0xE] -_080FFB58: - bl sub_80FFC44 - movs r0, 0x15 - b _080FFB66 - .align 2, 0 -_080FFB60: .4byte gUnknown_203ACE8 -_080FFB64: - movs r0, 0 -_080FFB66: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80FFA38 - - thumb_func_start sub_80FFB6C -sub_80FFB6C: @ 80FFB6C - ldr r0, _080FFB88 @ =gUnknown_203ACE8 - ldr r0, [r0] - movs r2, 0x6 - ldrsb r2, [r0, r2] - ldrb r1, [r0, 0x2] - muls r1, r2 - ldrb r0, [r0, 0x5] - lsls r0, 24 - asrs r0, 24 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - bx lr - .align 2, 0 -_080FFB88: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FFB6C - - thumb_func_start sub_80FFB8C -sub_80FFB8C: @ 80FFB8C - ldr r0, _080FFBA8 @ =gUnknown_203ACE8 - ldr r0, [r0] - movs r1, 0xB - ldrsb r1, [r0, r1] - ldrb r2, [r0, 0xC] - adds r1, r2 - lsls r1, 1 - ldrb r0, [r0, 0xA] - lsls r0, 24 - asrs r0, 24 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - bx lr - .align 2, 0 -_080FFBA8: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FFB8C - - thumb_func_start sub_80FFBAC -sub_80FFBAC: @ 80FFBAC - push {lr} - ldr r0, _080FFBDC @ =gUnknown_203ACE8 - ldr r1, [r0] - ldrb r0, [r1, 0xA] - movs r3, 0 - cmp r0, 0x6 - bhi _080FFBBE - movs r3, 0xA - ldrsb r3, [r1, r3] -_080FFBBE: - ldrb r0, [r1, 0xB] - movs r2, 0 - cmp r0, 0x3 - bhi _080FFBCA - movs r2, 0xB - ldrsb r2, [r1, r2] -_080FFBCA: - ldr r0, _080FFBE0 @ =gUnknown_843F39C - lsls r1, r2, 3 - subs r1, r2 - adds r1, r3, r1 - adds r1, r0 - ldrb r0, [r1] - pop {r1} - bx r1 - .align 2, 0 -_080FFBDC: .4byte gUnknown_203ACE8 -_080FFBE0: .4byte gUnknown_843F39C - thumb_func_end sub_80FFBAC - - thumb_func_start sub_80FFBE4 -sub_80FFBE4: @ 80FFBE4 - ldr r0, _080FFC00 @ =gUnknown_203ACE8 - ldr r0, [r0] - movs r1, 0x11 - ldrsb r1, [r0, r1] - ldrb r2, [r0, 0xE] - adds r1, r2 - lsls r1, 1 - ldrb r0, [r0, 0x10] - lsls r0, 24 - asrs r0, 24 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - bx lr - .align 2, 0 -_080FFC00: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FFBE4 - - thumb_func_start sub_80FFC04 -sub_80FFC04: @ 80FFC04 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _080FFC12 - cmp r0, 0x1 - beq _080FFC16 -_080FFC12: - movs r0, 0x6 - b _080FFC18 -_080FFC16: - movs r0, 0x5 -_080FFC18: - pop {r1} - bx r1 - thumb_func_end sub_80FFC04 - - thumb_func_start sub_80FFC1C -sub_80FFC1C: @ 80FFC1C - push {lr} - b _080FFC32 -_080FFC20: - ldr r0, _080FFC40 @ =gUnknown_203ACE8 - ldr r1, [r0] - ldrb r2, [r1, 0xA] - movs r0, 0xA - ldrsb r0, [r1, r0] - cmp r0, 0 - beq _080FFC3C - subs r0, r2, 0x1 - strb r0, [r1, 0xA] -_080FFC32: - bl sub_80FFC6C - lsls r0, 24 - cmp r0, 0 - bne _080FFC20 -_080FFC3C: - pop {r0} - bx r0 - .align 2, 0 -_080FFC40: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FFC1C - - thumb_func_start sub_80FFC44 -sub_80FFC44: @ 80FFC44 - push {lr} - b _080FFC5A -_080FFC48: - ldr r0, _080FFC68 @ =gUnknown_203ACE8 - ldr r1, [r0] - ldrb r2, [r1, 0x10] - movs r0, 0x10 - ldrsb r0, [r1, r0] - cmp r0, 0 - beq _080FFC64 - subs r0, r2, 0x1 - strb r0, [r1, 0x10] -_080FFC5A: - bl sub_80FFCC0 - lsls r0, 24 - cmp r0, 0 - bne _080FFC48 -_080FFC64: - pop {r0} - bx r0 - .align 2, 0 -_080FFC68: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FFC44 - - thumb_func_start sub_80FFC6C -sub_80FFC6C: @ 80FFC6C - push {r4,lr} - ldr r4, _080FFC98 @ =gUnknown_203ACE8 - ldr r1, [r4] - ldrb r0, [r1, 0x9] - cmp r0, 0 - bne _080FFC9C - bl sub_80FFB8C - adds r4, r0, 0 - bl GetNumDisplayableGroups - movs r1, 0 - lsls r0, 24 - lsls r4, 16 - lsrs r4, 16 - lsrs r0, 24 - cmp r4, r0 - bcc _080FFC92 - movs r1, 0x1 -_080FFC92: - adds r0, r1, 0 - b _080FFCB8 - .align 2, 0 -_080FFC98: .4byte gUnknown_203ACE8 -_080FFC9C: - ldrb r0, [r1, 0xB] - bl sub_80FFC04 - movs r2, 0 - ldr r1, [r4] - ldrb r1, [r1, 0xA] - lsls r1, 24 - asrs r1, 24 - lsls r0, 24 - lsrs r0, 24 - cmp r1, r0 - ble _080FFCB6 - movs r2, 0x1 -_080FFCB6: - adds r0, r2, 0 -_080FFCB8: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80FFC6C - - thumb_func_start sub_80FFCC0 -sub_80FFCC0: @ 80FFCC0 - push {r4,lr} - bl sub_80FFBE4 - adds r4, r0, 0 - bl GetNumDisplayedWords - movs r1, 0 - lsls r4, 16 - lsls r0, 16 - cmp r4, r0 - bcc _080FFCD8 - movs r1, 0x1 -_080FFCD8: - adds r0, r1, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80FFCC0 - - thumb_func_start sub_80FFCE0 -sub_80FFCE0: @ 80FFCE0 - ldr r2, _080FFCF4 @ =gUnknown_843F2AC - ldr r0, _080FFCF8 @ =gUnknown_203ACE8 - ldr r0, [r0] - ldrb r1, [r0, 0x1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x3] - bx lr - .align 2, 0 -_080FFCF4: .4byte gUnknown_843F2AC -_080FFCF8: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FFCE0 - - thumb_func_start sub_80FFCFC -sub_80FFCFC: @ 80FFCFC - ldr r2, _080FFD14 @ =gUnknown_843F2AC - ldr r0, _080FFD18 @ =gUnknown_203ACE8 - ldr r0, [r0] - ldrb r1, [r0, 0x1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r2, 0x4 - adds r0, r2 - ldr r0, [r0] - bx lr - .align 2, 0 -_080FFD14: .4byte gUnknown_843F2AC -_080FFD18: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FFCFC - - thumb_func_start sub_80FFD1C -sub_80FFD1C: @ 80FFD1C - ldr r0, _080FFD24 @ =gUnknown_203ACE8 - ldr r0, [r0] - adds r0, 0x18 - bx lr - .align 2, 0 -_080FFD24: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FFD1C - - thumb_func_start sub_80FFD28 -sub_80FFD28: @ 80FFD28 - ldr r0, _080FFD30 @ =gUnknown_203ACE8 - ldr r0, [r0] - ldrb r0, [r0, 0x3] - bx lr - .align 2, 0 -_080FFD30: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FFD28 - - thumb_func_start sub_80FFD34 -sub_80FFD34: @ 80FFD34 - ldr r0, _080FFD3C @ =gUnknown_203ACE8 - ldr r0, [r0] - ldrb r0, [r0, 0x2] - bx lr - .align 2, 0 -_080FFD3C: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FFD34 - - thumb_func_start sub_80FFD40 -sub_80FFD40: @ 80FFD40 - ldr r0, _080FFD48 @ =gUnknown_203ACE8 - ldr r0, [r0] - ldrb r0, [r0, 0x5] - bx lr - .align 2, 0 -_080FFD48: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FFD40 - - thumb_func_start sub_80FFD4C -sub_80FFD4C: @ 80FFD4C - ldr r0, _080FFD54 @ =gUnknown_203ACE8 - ldr r0, [r0] - ldrb r0, [r0, 0x6] - bx lr - .align 2, 0 -_080FFD54: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FFD4C - - thumb_func_start sub_80FFD58 -sub_80FFD58: @ 80FFD58 - push {r4,r5,lr} - ldr r4, _080FFD88 @ =gUnknown_843F2AC - ldr r2, _080FFD8C @ =gUnknown_203ACE8 - ldr r5, [r2] - ldrb r3, [r5, 0x1] - lsls r2, r3, 1 - adds r2, r3 - lsls r2, 3 - adds r3, r4, 0 - adds r3, 0x8 - adds r2, r3 - ldr r2, [r2] - str r2, [r0] - ldrb r2, [r5, 0x1] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 3 - adds r4, 0xC - adds r0, r4 - ldr r0, [r0] - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FFD88: .4byte gUnknown_843F2AC -_080FFD8C: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FFD58 - - thumb_func_start sub_80FFD90 -sub_80FFD90: @ 80FFD90 - push {r4,r5,lr} - ldr r4, _080FFDC0 @ =gUnknown_843F2AC - ldr r2, _080FFDC4 @ =gUnknown_203ACE8 - ldr r5, [r2] - ldrb r3, [r5, 0x1] - lsls r2, r3, 1 - adds r2, r3 - lsls r2, 3 - adds r3, r4, 0 - adds r3, 0x10 - adds r2, r3 - ldr r2, [r2] - str r2, [r0] - ldrb r2, [r5, 0x1] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 3 - adds r4, 0x14 - adds r0, r4 - ldr r0, [r0] - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FFDC0: .4byte gUnknown_843F2AC -_080FFDC4: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FFD90 - - thumb_func_start sub_80FFDC8 -sub_80FFDC8: @ 80FFDC8 - push {lr} - adds r2, r0, 0 - ldr r0, _080FFDDC @ =gUnknown_203ACE8 - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x4 - bne _080FFDE4 - ldr r0, _080FFDE0 @ =gUnknown_84189EE - b _080FFDE6 - .align 2, 0 -_080FFDDC: .4byte gUnknown_203ACE8 -_080FFDE0: .4byte gUnknown_84189EE -_080FFDE4: - ldr r0, _080FFDF0 @ =gUnknown_84189E0 -_080FFDE6: - str r0, [r2] - movs r0, 0 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080FFDF0: .4byte gUnknown_84189E0 - thumb_func_end sub_80FFDC8 - - thumb_func_start sub_80FFDF4 -sub_80FFDF4: @ 80FFDF4 - ldr r2, _080FFE00 @ =gUnknown_8418937 - str r2, [r0] - ldr r0, _080FFE04 @ =gUnknown_8418956 - str r0, [r1] - bx lr - .align 2, 0 -_080FFE00: .4byte gUnknown_8418937 -_080FFE04: .4byte gUnknown_8418956 - thumb_func_end sub_80FFDF4 - - thumb_func_start sub_80FFE08 -sub_80FFE08: @ 80FFE08 - ldr r2, _080FFE18 @ =gUnknown_203ACE8 - ldr r3, [r2] - ldrb r2, [r3, 0xA] - strb r2, [r0] - ldrb r0, [r3, 0xB] - strb r0, [r1] - bx lr - .align 2, 0 -_080FFE18: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FFE08 - - thumb_func_start sub_80FFE1C -sub_80FFE1C: @ 80FFE1C - ldr r0, _080FFE24 @ =gUnknown_203ACE8 - ldr r0, [r0] - ldrb r0, [r0, 0x9] - bx lr - .align 2, 0 -_080FFE24: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FFE1C - - thumb_func_start sub_80FFE28 -sub_80FFE28: @ 80FFE28 - ldr r0, _080FFE30 @ =gUnknown_203ACE8 - ldr r0, [r0] - ldrb r0, [r0, 0xC] - bx lr - .align 2, 0 -_080FFE30: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FFE28 - - thumb_func_start sub_80FFE34 -sub_80FFE34: @ 80FFE34 - ldr r2, _080FFE44 @ =gUnknown_203ACE8 - ldr r3, [r2] - ldrb r2, [r3, 0x10] - strb r2, [r0] - ldrb r0, [r3, 0x11] - strb r0, [r1] - bx lr - .align 2, 0 -_080FFE44: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FFE34 - - thumb_func_start sub_80FFE48 -sub_80FFE48: @ 80FFE48 - ldr r0, _080FFE50 @ =gUnknown_203ACE8 - ldr r0, [r0] - ldrb r0, [r0, 0xE] - bx lr - .align 2, 0 -_080FFE50: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FFE48 - - thumb_func_start sub_80FFE54 -sub_80FFE54: @ 80FFE54 - ldr r0, _080FFE5C @ =gUnknown_203ACE8 - ldr r0, [r0] - ldrb r0, [r0, 0xF] - bx lr - .align 2, 0 -_080FFE5C: .4byte gUnknown_203ACE8 - thumb_func_end sub_80FFE54 - - thumb_func_start sub_80FFE60 -sub_80FFE60: @ 80FFE60 - movs r0, 0 - bx lr - thumb_func_end sub_80FFE60 - - thumb_func_start sub_80FFE64 -sub_80FFE64: @ 80FFE64 - push {lr} - ldr r0, _080FFE78 @ =gUnknown_203ACE8 - ldr r1, [r0] - ldrb r0, [r1, 0x4] - cmp r0, 0x2 - beq _080FFE7C - cmp r0, 0x3 - beq _080FFE86 - b _080FFE90 - .align 2, 0 -_080FFE78: .4byte gUnknown_203ACE8 -_080FFE7C: - ldrb r0, [r1, 0x9] - cmp r0, 0 - bne _080FFE90 - ldrb r0, [r1, 0xC] - b _080FFE88 -_080FFE86: - ldrb r0, [r1, 0xE] -_080FFE88: - cmp r0, 0 - beq _080FFE90 - movs r0, 0x1 - b _080FFE92 -_080FFE90: - movs r0, 0 -_080FFE92: - pop {r1} - bx r1 - thumb_func_end sub_80FFE64 - - thumb_func_start sub_80FFE98 -sub_80FFE98: @ 80FFE98 - push {lr} - ldr r0, _080FFEAC @ =gUnknown_203ACE8 - ldr r2, [r0] - ldrb r0, [r2, 0x4] - cmp r0, 0x2 - beq _080FFEB0 - cmp r0, 0x3 - beq _080FFEC6 - b _080FFED4 - .align 2, 0 -_080FFEAC: .4byte gUnknown_203ACE8 -_080FFEB0: - ldrb r0, [r2, 0x9] - cmp r0, 0 - bne _080FFED4 - ldrb r1, [r2, 0xC] - adds r1, 0x4 - ldrb r0, [r2, 0xD] - subs r0, 0x1 - cmp r1, r0 - bgt _080FFED4 - movs r0, 0x1 - b _080FFED6 -_080FFEC6: - ldrb r0, [r2, 0xE] - adds r0, 0x4 - ldrb r2, [r2, 0xF] - cmp r0, r2 - bgt _080FFED4 - movs r0, 0x1 - b _080FFED6 -_080FFED4: - movs r0, 0 -_080FFED6: - pop {r1} - bx r1 - thumb_func_end sub_80FFE98 - - thumb_func_start sub_80FFEDC -sub_80FFEDC: @ 80FFEDC - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - lsrs r3, r1, 24 - movs r2, 0 - cmp r2, r3 - bcs _080FFF12 - ldr r0, _080FFF04 @ =gUnknown_203ACE8 - ldr r0, [r0] - adds r4, r0, 0 - adds r4, 0x18 -_080FFEF2: - lsls r0, r2, 1 - adds r1, r0, r5 - adds r0, r4, r0 - ldrh r1, [r1] - ldrh r0, [r0] - cmp r1, r0 - beq _080FFF08 - movs r0, 0x1 - b _080FFF14 - .align 2, 0 -_080FFF04: .4byte gUnknown_203ACE8 -_080FFF08: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, r3 - bcc _080FFEF2 -_080FFF12: - movs r0, 0 -_080FFF14: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80FFEDC - - thumb_func_start sub_80FFF1C -sub_80FFF1C: @ 80FFF1C - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - movs r1, 0 - ldr r2, _080FFF34 @ =gUnknown_843F2AC -_080FFF26: - ldrb r0, [r2] - cmp r0, r3 - bne _080FFF38 - lsls r0, r1, 24 - lsrs r0, 24 - b _080FFF42 - .align 2, 0 -_080FFF34: .4byte gUnknown_843F2AC -_080FFF38: - adds r2, 0x18 - adds r1, 0x1 - cmp r1, 0x9 - bls _080FFF26 - movs r0, 0 -_080FFF42: - pop {r1} - bx r1 - thumb_func_end sub_80FFF1C - - thumb_func_start sub_80FFF48 -sub_80FFF48: @ 80FFF48 - push {r4,lr} - movs r2, 0 - ldr r0, _080FFF68 @ =gUnknown_203ACE8 - ldr r0, [r0] - ldrb r1, [r0, 0x7] - cmp r2, r1 - bge _080FFF78 - ldr r4, _080FFF6C @ =0x0000ffff - adds r3, r1, 0 - adds r1, r0, 0 - adds r1, 0x18 -_080FFF5E: - ldrh r0, [r1] - cmp r0, r4 - beq _080FFF70 - movs r0, 0 - b _080FFF7A - .align 2, 0 -_080FFF68: .4byte gUnknown_203ACE8 -_080FFF6C: .4byte 0x0000ffff -_080FFF70: - adds r1, 0x2 - adds r2, 0x1 - cmp r2, r3 - blt _080FFF5E -_080FFF78: - movs r0, 0x1 -_080FFF7A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80FFF48 - - thumb_func_start sub_80FFF80 -sub_80FFF80: @ 80FFF80 - push {lr} - bl sub_8100BF4 - lsls r0, 24 - cmp r0, 0 - beq _080FFF90 - movs r0, 0x1 - b _080FFF92 -_080FFF90: - movs r0, 0 -_080FFF92: - pop {r1} - bx r1 - thumb_func_end sub_80FFF80 - thumb_func_start sub_80FFF98 sub_80FFF98: @ 80FFF98 push {r4,lr} @@ -3191,20 +356,20 @@ sub_8100290: @ 8100290 mov r5, r8 push {r5-r7} sub sp, 0x40 - bl sub_80FFD1C + bl GetEasyChatWordBuffer adds r4, r0, 0 - bl sub_80FFCE0 + bl GetEasyChatScreenFrameId lsls r0, 24 lsrs r0, 24 mov r9, r0 - bl sub_80FFD40 + bl GetMainCursorColumn lsls r0, 24 lsrs r7, r0, 24 - bl sub_80FFD4C + bl GetMainCursorRow lsls r0, 24 lsrs r0, 24 mov r8, r0 - bl sub_80FFD34 + bl GetNumColumns lsls r0, 24 lsrs r0, 24 mov r1, r8 @@ -3296,7 +461,7 @@ _08100370: .4byte gUnknown_843F888 thumb_func_start sub_8100374 sub_8100374: @ 8100374 push {lr} - bl sub_80FFD40 + bl GetMainCursorColumn lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -4528,7 +1693,7 @@ _08100D20: .4byte gUnknown_843F87C sub_8100D24: @ 8100D24 push {r4,r5,lr} sub sp, 0x14 - bl sub_80FFCFC + bl GetTitleText adds r5, r0, 0 cmp r5, 0 beq _08100D7A @@ -4726,7 +1891,7 @@ _08100E9A: _08100EA4: add r1, sp, 0x10 add r0, sp, 0xC - bl sub_80FFD58 + bl GetEasyChatInstructionsText b _08100ECA _08100EAE: add r1, sp, 0x10 @@ -4736,12 +1901,12 @@ _08100EAE: _08100EB8: add r1, sp, 0x10 add r0, sp, 0xC - bl sub_80FFD90 + bl GetEasyChatConfirmText b _08100ECA _08100EC2: add r1, sp, 0x10 add r0, sp, 0xC - bl sub_80FFDF4 + bl GetEasyChatConfirmDeletionText _08100ECA: movs r0, 0x1 movs r1, 0x11 @@ -4809,7 +1974,7 @@ _08100F40: .4byte gUnknown_843F8D0 sub_8100F44: @ 8100F44 push {r4,r5,lr} sub sp, 0x8 - bl sub_80FFCE0 + bl GetEasyChatScreenFrameId lsls r0, 24 ldr r5, _08100FC0 @ =0xffffff00 ldr r3, [sp] @@ -4883,17 +2048,17 @@ sub_8100FDC: @ 8100FDC mov r5, r8 push {r5-r7} sub sp, 0x14 - bl sub_80FFD1C + bl GetEasyChatWordBuffer adds r4, r0, 0 - bl sub_80FFD34 + bl GetNumColumns lsls r0, 24 lsrs r0, 24 mov r8, r0 - bl sub_80FFD28 + bl GetNumRows lsls r0, 24 lsrs r0, 24 str r0, [sp, 0xC] - bl sub_80FFCE0 + bl GetEasyChatScreenFrameId lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x10] @@ -5026,7 +2191,7 @@ sub_8101100: @ 8101100 push {r5-r7} sub sp, 0x4 mov r8, r0 - bl sub_80FFCE0 + bl GetEasyChatScreenFrameId lsls r0, 24 lsrs r5, r0, 24 movs r0, 0 @@ -6315,7 +3480,7 @@ _08101AC0: .4byte gUnknown_843F938 thumb_func_start sub_8101AC4 sub_8101AC4: @ 8101AC4 push {lr} - bl sub_80FFCE0 + bl GetEasyChatScreenFrameId lsls r0, 24 ldr r1, _08101B10 @ =gUnknown_843F888 lsrs r0, 22 diff --git a/data/easy_chat_2.s b/data/easy_chat_2.s index 79be01714..4cf0bcfb3 100644 --- a/data/easy_chat_2.s +++ b/data/easy_chat_2.s @@ -7,80 +7,6 @@ .section .rodata .align 2 -gUnknown_843F29C:: @ 843F29C - .2byte 0x143a, 0x1817, 0x100b, 0x200f - -gUnknown_843F2A4:: @ 843F2A4 - .2byte 0x0209, 0x140b, 0x1030, 0x102a - -gUnknown_843F2AC:: @ 843F2AC - .byte 0, 2, 2, 0 - .4byte gUnknown_8418A2B - .4byte gUnknown_84186D1 - .4byte gUnknown_84186EF - .4byte gUnknown_841880E - .4byte gUnknown_8418902 - .byte 1, 2, 3, 1 - .4byte gUnknown_8418A33 - .4byte gUnknown_8418706 - .4byte gUnknown_8418725 - .4byte gUnknown_841881B - .4byte gUnknown_8418902 - .byte 2, 2, 3, 1 - .4byte gUnknown_8418A4A - .4byte gUnknown_8418706 - .4byte gUnknown_8418725 - .4byte gUnknown_841883E - .4byte gUnknown_8418902 - .byte 3, 2, 3, 1 - .4byte gUnknown_8418A61 - .4byte gUnknown_8418706 - .4byte gUnknown_8418725 - .4byte gUnknown_841885F - .4byte gUnknown_8418902 - .byte 4, 2, 5, 2 - .4byte NULL - .4byte gUnknown_8418780 - .4byte gUnknown_841879E - .4byte gUnknown_841888C - .4byte gUnknown_8418902 - .byte 5, 2, 2, 0 - .4byte NULL - .4byte gUnknown_8418780 - .4byte gUnknown_841879E - .4byte NULL - .4byte NULL - .byte 6, 2, 3, 1 - .4byte gUnknown_8418A77 - .4byte gUnknown_84187B2 - .4byte gUnknown_84187D1 - .4byte gUnknown_84188AC - .4byte gUnknown_8418902 - .byte 7, 2, 3, 1 - .4byte gUnknown_8418AA1 - .4byte gUnknown_8418745 - .4byte gUnknown_8418763 - .4byte gUnknown_8418881 - .4byte gUnknown_8418902 - .byte 9, 2, 1, 3 - .4byte gUnknown_8418A87 - .4byte gUnknown_84188B9 - .4byte gUnknown_84188D6 - .4byte gUnknown_84188F0 - .4byte gUnknown_8418902 - .byte 14, 2, 2, 0 - .4byte gUnknown_8418AB2 - .4byte gUnknown_84186D1 - .4byte gUnknown_84187EE - .4byte gUnknown_8418881 - .4byte gUnknown_8418902 - -gUnknown_843F39C:: @ 843F39C data8 4x7 - .byte 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x00 - .byte 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x00 - .byte 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13 - .byte 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a - gUnknown_843F3B8:: @ 843F3B8 gbapal .incbin "graphics/link_rfu/unk_843F3F8.gbapal" diff --git a/include/constants/easy_chat.h b/include/constants/easy_chat.h index 7261365c2..b43e93da2 100644 --- a/include/constants/easy_chat.h +++ b/include/constants/easy_chat.h @@ -6,6 +6,10 @@ #define EASY_CHAT_TYPE_BATTLE_WON 2 #define EASY_CHAT_TYPE_BATTLE_LOST 3 #define EASY_CHAT_TYPE_MAIL 4 +#define EASY_CHAT_TYPE_MAIL_NO_CONFIRM 5 +#define EASY_CHAT_TYPE_BARD_SONG 6 +#define EASY_CHAT_TYPE_INTERVIEW 7 +#define EASY_CHAT_TYPE_TRENDY_PHRASE 9 #define EASY_CHAT_TYPE_QUESTIONNAIRE 14 #define EC_GROUP_POKEMON_2 0x0 diff --git a/include/easy_chat.h b/include/easy_chat.h index e7ec52fd1..67d14290c 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -46,5 +46,6 @@ u16 GetNumDisplayedWords(void); const u8 *GetEasyChatWordGroupName(u8); u8 *CopyEasyChatWordPadded(u8 *, u16, u16); void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback); +u8 GetNumDisplayableGroups(void); #endif // GUARD_EASY_CHAT_H diff --git a/include/overworld.h b/include/overworld.h index a67c7cd88..daaa5e6e8 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -191,6 +191,7 @@ void sub_8057F70(void); void sub_8057F48(void); void SetMainCallback1(MainCallback cb); void CB1_Overworld(void); +void sub_80568C4(void); extern u16 gHeldKeyCodeToSend; diff --git a/include/strings.h b/include/strings.h index d5c6f4b58..2c1ed13b0 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1313,4 +1313,40 @@ extern const u8 gText_QuestLog_CeruleanCave[]; extern const u8 gUnknown_841B69E[]; extern const u8 gUnknown_841B6B9[]; +// easy_chat_2 +extern const u8 gUnknown_84186D1[]; +extern const u8 gUnknown_84186EF[]; +extern const u8 gUnknown_8418706[]; +extern const u8 gUnknown_8418725[]; +extern const u8 gUnknown_8418745[]; +extern const u8 gUnknown_8418763[]; +extern const u8 gUnknown_8418780[]; +extern const u8 gUnknown_841879E[]; +extern const u8 gUnknown_84187B2[]; +extern const u8 gUnknown_84187D1[]; +extern const u8 gUnknown_84187EE[]; +extern const u8 gUnknown_841880E[]; +extern const u8 gUnknown_841881B[]; +extern const u8 gUnknown_841883E[]; +extern const u8 gUnknown_841885F[]; +extern const u8 gUnknown_8418881[]; +extern const u8 gUnknown_841888C[]; +extern const u8 gUnknown_84188AC[]; +extern const u8 gUnknown_84188B9[]; +extern const u8 gUnknown_84188D6[]; +extern const u8 gUnknown_84188F0[]; +extern const u8 gUnknown_8418902[]; +extern const u8 gUnknown_8418937[]; +extern const u8 gUnknown_8418956[]; +extern const u8 gUnknown_84189E0[]; +extern const u8 gUnknown_84189EE[]; +extern const u8 gUnknown_8418A2B[]; +extern const u8 gUnknown_8418A33[]; +extern const u8 gUnknown_8418A4A[]; +extern const u8 gUnknown_8418A61[]; +extern const u8 gUnknown_8418A77[]; +extern const u8 gUnknown_8418A87[]; +extern const u8 gUnknown_8418AA1[]; +extern const u8 gUnknown_8418AB2[]; + #endif //GUARD_STRINGS_H diff --git a/ld_script.txt b/ld_script.txt index 1de01ca5f..0de8b654e 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -226,6 +226,7 @@ SECTIONS { src/link_rfu_2.o(.text); src/link_rfu_3.o(.text); src/AgbRfu_LinkManager.o(.text); + src/easy_chat_2.o(.text); asm/easy_chat_2.o(.text); src/pokedex_screen.o(.text); asm/pokedex_screen.o(.text); @@ -517,6 +518,7 @@ SECTIONS { src/map_preview_screen.o(.rodata); src/link_rfu_2.o(.rodata); src/link_rfu_3.o(.rodata); + src/easy_chat_2.o(.rodata); data/easy_chat_2.o(.rodata); src/pokedex_screen.o(.rodata); data/pokedex_screen.o(.rodata); diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c index 5485e8da9..b6f8b83e9 100644 --- a/src/clear_save_data_screen.c +++ b/src/clear_save_data_screen.c @@ -131,7 +131,7 @@ static void Task_HandleYesNoMenu(u8 taskId) { switch (Menu_ProcessInputNoWrapClearOnChoose()) { - case -1: + case MENU_B_PRESSED: case 1: PlaySE(SE_SELECT); break; @@ -142,7 +142,7 @@ static void Task_HandleYesNoMenu(u8 taskId) CopyWindowToVram(1, 3); ClearSaveData(); break; - case -2: + case MENU_NOTHING_CHOSEN: default: return; } diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c new file mode 100644 index 000000000..9e018feaf --- /dev/null +++ b/src/easy_chat_2.c @@ -0,0 +1,1380 @@ +#include "global.h" +#include "gflib.h" +#include "easy_chat.h" +#include "event_data.h" +#include "menu.h" +#include "mevent.h" +#include "overworld.h" +#include "strings.h" +#include "task.h" +#include "constants/songs.h" +#include "constants/flags.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 + +struct EasyChatScreenTemplate +{ + u8 type; + u8 numColumns; + u8 numRows; + u8 frameId; + const u8 *titleText; + const u8 *instructionsText1; + const u8 *instructionsText2; + const u8 *confirmText1; + const u8 *confirmText2; +}; + +struct EasyChatScreen +{ + /*0x00*/ u8 type; + /*0x01*/ u8 templateId; + /*0x02*/ u8 numColumns; + /*0x03*/ u8 numRows; + /*0x04*/ u8 state; + /*0x05*/ s8 mainCursorColumn; + /*0x06*/ s8 mainCursorRow; + /*0x07*/ u8 unk_07; + /*0x08*/ u8 stateBackup; + /*0x09*/ u8 unk_09; + /*0x0A*/ s8 unk_0a; + /*0x0B*/ s8 unk_0b; + /*0x0C*/ u8 unk_0c; + /*0x0D*/ u8 unk_0d; + /*0x0E*/ u8 unk_0e; + /*0x0F*/ u8 unk_0f; + /*0x10*/ s8 unk_10; + /*0x11*/ s8 unk_11; + /*0x12*/ u8 unk_12; + /*0x14*/ u16 *words; + /*0x18*/ u16 ecWordBuffer[9]; +}; + +EWRAM_DATA struct EasyChatScreen *sEasyChatScreen = NULL; + +void sub_80FEC0C(void); +void sub_80FEC54(u8 taskId); +void sub_80FEC90(u8 taskId); +bool8 sub_80FED80(u8 taskId); +void sub_80FEE24(MainCallback cb); +void sub_80FEF2C(void); +void sub_80FEF4C(void); +bool8 EasyChat_AllocateResources(u8 type, u16 *words); +void EasyChat_FreeResources(void); +u16 sub_80FF028(void); +u16 sub_80FF098(void); +u16 sub_80FF20C(void); +u16 sub_80FF360(void); +u16 sub_80FF41C(void); +u16 sub_80FF4A8(void); +u16 sub_80FF4F0(void); +u16 sub_80FF544(void); +u16 sub_80FF590(void); +u16 sub_80FF5A8(void); +u16 sub_80FF5C0(void); +u8 sub_80FF5F0(void); +int sub_80FF5FC(void); +int sub_80FF678(void); +int sub_80FF688(void); +int sub_80FF6B4(void); +int sub_80FF6C8(void); +void sub_80FF6F0(void); +void sub_80FF728(void); +void sub_80FF768(u16 word); +bool8 sub_80FF78C(void); +u16 sub_80FF7CC(u32 action); +int sub_80FF80C(u32 action); +int sub_80FF8D8(u32 action); +int sub_80FF968(u32 action); +void sub_80FF9E8(void); +void sub_80FFA0C(void); +u16 sub_80FFA38(u32 action); +u16 sub_80FFB6C(void); +u16 sub_80FFB8C(void); +int sub_80FFBAC(void); +u16 sub_80FFBE4(void); +u8 sub_80FFC04(u8 unkB); +void sub_80FFC1C(void); +void sub_80FFC44(void); +bool8 sub_80FFC6C(void); +bool8 sub_80FFCC0(void); +bool8 GetEasyChatScreenFrameId(void); +bool8 IsPhraseDifferentThanPlayerInput(const u16 *wordsToCompare, u8 numWords); +u8 GetEasyChatScreenTemplateId(u8 type); +bool32 IsEcWordBufferUninitialized(void); +bool8 sub_80FFF80(void); +bool8 sub_80FFF98(void); +void sub_810011C(void); +void sub_8100134(u16 v0); +bool8 sub_810014C(void); +bool8 sub_8100BF4(void); + +void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback) +{ + u8 taskId; + ResetTasks(); + taskId = CreateTask(sub_80FEC54, 0); + gTasks[taskId].data[EZCHAT_TASK_TYPE] = type; + SetWordTaskArg(taskId, EZCHAT_TASK_WORDS, (uintptr_t)words); + SetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK, (uintptr_t)callback); + SetMainCallback2(sub_80FEC0C); +} + +void sub_80FEC0C(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void VBlankCallback_EasyChatScreen(void) +{ + TransferPlttBuffer(); + LoadOam(); + ProcessSpriteCopyRequests(); +} + +void sub_80FEC38(u8 taskId, TaskFunc func) +{ + gTasks[taskId].func = func; + gTasks[taskId].data[EZCHAT_TASK_STATE] = 0; +} + +void sub_80FEC54(u8 taskId) +{ + if (!IsUpdateLinkStateCBActive()) + { + while (sub_80FED80(taskId)) + ; + } + else + { + if (sub_80FED80(taskId) == TRUE) + return; + } + sub_80FEC38(taskId, sub_80FEC90); +} + +void sub_80FEC90(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]++; + break; + case 1: + v0 = sub_80FF028(); + if (v0 == 23) + { + BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK); + data[EZCHAT_TASK_STATE] = 3; + } + else if (v0 != 0) + { + PlaySE(SE_SELECT); + sub_8100134(v0); + data[EZCHAT_TASK_STATE]++; + } + break; + case 2: + if (!sub_810014C()) + data[EZCHAT_TASK_STATE] = 1; + break; + case 3: + if (!gPaletteFade.active) + { + if (data[EZCHAT_TASK_TYPE] == 14) + sub_80FEF4C(); + if (data[EZCHAT_TASK_TYPE] == 0) + { + FlagSet(FLAG_SYS_SET_TRAINER_CARD_PROFILE); + sub_80FEF2C(); + } + sub_80FEE24((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK)); + } + break; + } +} + +bool8 sub_80FED80(u8 taskId) +{ + s16 *data; + + data = gTasks[taskId].data; + switch (data[EZCHAT_TASK_STATE]) + { + case 0: + SetVBlankCallback(NULL); + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetPaletteFade(); + break; + case 1: + if (!InitEasyChatSelection()) + { + sub_80FEE24((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK)); + } + break; + case 2: + if (!EasyChat_AllocateResources(data[EZCHAT_TASK_TYPE], (u16 *)GetWordTaskArg(taskId, EZCHAT_TASK_WORDS))) + { + sub_80FEE24((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK)); + } + break; + case 3: + if (!sub_80FFF80()) + { + sub_80FEE24((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK)); + } + break; + case 4: + if (sub_80FFF98()) + { + return TRUE; + } + break; + default: + return FALSE; + } + data[EZCHAT_TASK_STATE]++; + return TRUE; +} + +void sub_80FEE24(MainCallback callback) +{ + DestroyEasyChatSelectionData(); + EasyChat_FreeResources(); + sub_810011C(); + FreeAllWindowBuffers(); + SetMainCallback2(callback); +} + +void ShowEasyChatScreen(void) +{ + u16 *words; + 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_QUESTIONNAIRE: + words = GetMEventProfileECWordsMaybe(); + break; + case EASY_CHAT_TYPE_MAIL: + words = gSaveBlock1Ptr->mail[gSpecialVar_0x8005].words; + break; + default: + return; + } + DoEasyChatScreen(gSpecialVar_0x8004, words, sub_80568C4); +} + +static const u16 gUnknown_843F29C[] = { + EC_WORD_MYSTERY, + EC_WORD_EVENT, + EC_WORD_IS, + EC_WORD_EXCITING +}; + +void sub_80FEF2C(void) +{ + gSpecialVar_0x8004 = IsPhraseDifferentThanPlayerInput(gUnknown_843F29C, NELEMS(gUnknown_843F29C)); +} + +static const u16 gUnknown_843F2A4[] = { + EC_WORD_LINK, + EC_WORD_TOGETHER, + EC_WORD_WITH, + EC_WORD_ALL +}; + +void sub_80FEF4C(void) +{ + gSpecialVar_0x8004 = IsPhraseDifferentThanPlayerInput(gUnknown_843F2A4, NELEMS(gUnknown_843F2A4)); +} + +const struct EasyChatScreenTemplate sEasyChatScreenTemplates[] = { + { + .type = EASY_CHAT_TYPE_PROFILE, + .numColumns = 2, + .numRows = 2, + .frameId = 0, + .titleText = gUnknown_8418A2B, + .instructionsText1 = gUnknown_84186D1, + .instructionsText2 = gUnknown_84186EF, + .confirmText1 = gUnknown_841880E, + .confirmText2 = gUnknown_8418902 + }, { + .type = EASY_CHAT_TYPE_BATTLE_START, + .numColumns = 2, + .numRows = 3, + .frameId = 1, + .titleText = gUnknown_8418A33, + .instructionsText1 = gUnknown_8418706, + .instructionsText2 = gUnknown_8418725, + .confirmText1 = gUnknown_841881B, + .confirmText2 = gUnknown_8418902 + }, { + .type = EASY_CHAT_TYPE_BATTLE_WON, + .numColumns = 2, + .numRows = 3, + .frameId = 1, + .titleText = gUnknown_8418A4A, + .instructionsText1 = gUnknown_8418706, + .instructionsText2 = gUnknown_8418725, + .confirmText1 = gUnknown_841883E, + .confirmText2 = gUnknown_8418902 + }, { + .type = EASY_CHAT_TYPE_BATTLE_LOST, + .numColumns = 2, + .numRows = 3, + .frameId = 1, + .titleText = gUnknown_8418A61, + .instructionsText1 = gUnknown_8418706, + .instructionsText2 = gUnknown_8418725, + .confirmText1 = gUnknown_841885F, + .confirmText2 = gUnknown_8418902 + }, { + .type = EASY_CHAT_TYPE_MAIL, + .numColumns = 2, + .numRows = 5, + .frameId = 2, + .titleText = NULL, + .instructionsText1 = gUnknown_8418780, + .instructionsText2 = gUnknown_841879E, + .confirmText1 = gUnknown_841888C, + .confirmText2 = gUnknown_8418902 + }, { + .type = EASY_CHAT_TYPE_MAIL_NO_CONFIRM, + .numColumns = 2, + .numRows = 2, + .frameId = 0, + .instructionsText1 = gUnknown_8418780, + .instructionsText2 = gUnknown_841879E, + }, { + .type = EASY_CHAT_TYPE_BARD_SONG, + .numColumns = 2, + .numRows = 3, + .frameId = 1, + .titleText = gUnknown_8418A77, + .instructionsText1 = gUnknown_84187B2, + .instructionsText2 = gUnknown_84187D1, + .confirmText1 = gUnknown_84188AC, + .confirmText2 = gUnknown_8418902 + }, { + .type = EASY_CHAT_TYPE_INTERVIEW, + .numColumns = 2, + .numRows = 3, + .frameId = 1, + .titleText = gUnknown_8418AA1, + .instructionsText1 = gUnknown_8418745, + .instructionsText2 = gUnknown_8418763, + .confirmText1 = gUnknown_8418881, + .confirmText2 = gUnknown_8418902 + }, { + .type = EASY_CHAT_TYPE_TRENDY_PHRASE, + .numColumns = 2, + .numRows = 1, + .frameId = 3, + .titleText = gUnknown_8418A87, + .instructionsText1 = gUnknown_84188B9, + .instructionsText2 = gUnknown_84188D6, + .confirmText1 = gUnknown_84188F0, + .confirmText2 = gUnknown_8418902 + }, { + .type = EASY_CHAT_TYPE_QUESTIONNAIRE, + .numColumns = 2, + .numRows = 2, + .frameId = 0, + .titleText = gUnknown_8418AB2, + .instructionsText1 = gUnknown_84186D1, + .instructionsText2 = gUnknown_84187EE, + .confirmText1 = gUnknown_8418881, + .confirmText2 = gUnknown_8418902 + } +}; + +bool8 EasyChat_AllocateResources(u8 type, u16 *words) +{ + u8 templateId; + int i; + + sEasyChatScreen = malloc(sizeof(*sEasyChatScreen)); + if (sEasyChatScreen == NULL) + return FALSE; + + sEasyChatScreen->type = type; + sEasyChatScreen->words = words; + sEasyChatScreen->state = 0; + sEasyChatScreen->mainCursorColumn = 0; + sEasyChatScreen->mainCursorRow = 0; + sEasyChatScreen->unk_09 = 0; + templateId = GetEasyChatScreenTemplateId(type); + + 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; + + CpuCopy16(words, sEasyChatScreen->ecWordBuffer, sEasyChatScreen->unk_07 * sizeof(u16)); + sEasyChatScreen->unk_0d = (GetNumDisplayableGroups() - 1) / 2 + 1; + return TRUE; +} + +void EasyChat_FreeResources(void) +{ + if (sEasyChatScreen != NULL) + Free(sEasyChatScreen); +} + +u16 sub_80FF028(void) +{ + switch (sEasyChatScreen->state) + { + case 0: + return sub_80FF098(); + case 1: + return sub_80FF20C(); + case 2: + return sub_80FF360(); + case 3: + return sub_80FF41C(); + case 4: + return sub_80FF4A8(); + case 5: + return sub_80FF544(); + case 6: + return sub_80FF4F0(); + } + return 0; +} + +u16 sub_80FF098(void) +{ + do + { + if (JOY_NEW(A_BUTTON)) + { + sEasyChatScreen->state = 2; + sEasyChatScreen->unk_0a = 0; + sEasyChatScreen->unk_0b = 0; + sEasyChatScreen->unk_0c = 0; + return 9; + } + else if (JOY_NEW(B_BUTTON)) + { + return sub_80FF590(); + } + else if (JOY_NEW(START_BUTTON)) + { + return sub_80FF5C0(); + } + else if (JOY_NEW(DPAD_UP)) + { + sEasyChatScreen->mainCursorRow--; + break; + } + else if (JOY_NEW(DPAD_LEFT)) + { + sEasyChatScreen->mainCursorColumn--; + break; + } + else if (JOY_NEW(DPAD_DOWN)) + { + sEasyChatScreen->mainCursorRow++; + break; + } + else if (JOY_NEW(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 (GetEasyChatScreenFrameId() == 2 && sEasyChatScreen->mainCursorColumn == 1 && sEasyChatScreen->mainCursorRow == 4) + sEasyChatScreen->mainCursorColumn = 0; + + return 2; +} + +u16 sub_80FF20C(void) +{ + do + { + if (JOY_NEW(A_BUTTON)) + { + switch (sEasyChatScreen->mainCursorColumn) + { + case 0: + return sub_80FF5A8(); + case 1: + return sub_80FF590(); + case 2: + return sub_80FF5C0(); + } + } + + if (JOY_NEW(B_BUTTON)) + { + return sub_80FF590(); + } + else if (JOY_NEW(START_BUTTON)) + { + return sub_80FF5C0(); + } + else if (JOY_NEW(DPAD_UP)) + { + sEasyChatScreen->mainCursorRow--; + break; + } + else if (JOY_NEW(DPAD_LEFT)) + { + sEasyChatScreen->mainCursorColumn--; + break; + } + else if (JOY_NEW(DPAD_DOWN)) + { + sEasyChatScreen->mainCursorRow = 0; + break; + } + else if (JOY_NEW(DPAD_RIGHT)) + { + sEasyChatScreen->mainCursorColumn++; + break; + } + + return 0; + } while (0); + + if (sEasyChatScreen->mainCursorRow == sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows) + { + if (sEasyChatScreen->mainCursorColumn < 0) + sEasyChatScreen->mainCursorColumn = 2; + + if (sEasyChatScreen->mainCursorColumn >= 3) + sEasyChatScreen->mainCursorColumn = 0; + + return 3; + } + + if (sEasyChatScreen->mainCursorColumn >= sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns) + sEasyChatScreen->mainCursorColumn = sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns - 1; + + if (GetEasyChatScreenFrameId() == 2 && sEasyChatScreen->mainCursorColumn == 1 && sEasyChatScreen->mainCursorRow == 4) + sEasyChatScreen->mainCursorColumn = 0; + + sEasyChatScreen->state = 0; + return 2; +} + +u16 sub_80FF360(void) +{ + if (JOY_NEW(B_BUTTON)) + return sub_80FF678(); + + if (JOY_NEW(A_BUTTON)) + { + if (sEasyChatScreen->unk_0a != -1) + return sub_80FF5FC(); + + switch (sEasyChatScreen->unk_0b) + { + case 0: + return sub_80FF688(); + case 1: + return sub_80FF6B4(); + case 2: + return sub_80FF678(); + } + } + + if (JOY_NEW(SELECT_BUTTON)) + return sub_80FF688(); + + if (JOY_REPT(DPAD_UP)) + return sub_80FF7CC(2); + + if (JOY_REPT(DPAD_DOWN)) + return sub_80FF7CC(3); + + if (JOY_REPT(DPAD_LEFT)) + return sub_80FF7CC(1); + + if (JOY_REPT(DPAD_RIGHT)) + return sub_80FF7CC(0); + + return 0; +} + +u16 sub_80FF41C(void) +{ + if (JOY_NEW(B_BUTTON)) + { + sEasyChatScreen->state = 2; + return 13; + } + + if (JOY_NEW(A_BUTTON)) + return sub_80FF6C8(); + + if (JOY_NEW(START_BUTTON)) + return sub_80FFA38(4); + + if (JOY_NEW(SELECT_BUTTON)) + return sub_80FFA38(5); + + if (JOY_REPT(DPAD_UP)) + return sub_80FFA38(2); + + if (JOY_REPT(DPAD_DOWN)) + return sub_80FFA38(3); + + if (JOY_REPT(DPAD_LEFT)) + return sub_80FFA38(1); + + if (JOY_REPT(DPAD_RIGHT)) + return sub_80FFA38(0); + + return 0; +} + +u16 sub_80FF4A8(void) +{ + u8 var0; + + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case MENU_B_PRESSED: // B Button + case 1: // No + sEasyChatScreen->state = sub_80FF5F0(); + return 7; + case 0: // Yes + gSpecialVar_Result = 0; + + return 23; + default: + return 0; + } +} + +u16 sub_80FF4F0(void) +{ + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case MENU_B_PRESSED: // B Button + case 1: // No + sEasyChatScreen->state = sub_80FF5F0(); + return 7; + case 0: // Yes + gSpecialVar_Result = sub_80FF78C(); + sub_80FF6F0(); + return 23; + default: + return 0; + } +} + +u16 sub_80FF544(void) +{ + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case MENU_B_PRESSED: // B Button + case 1: // No + sEasyChatScreen->state = 1; + return 7; + case 0: // Yes + sub_80FF728(); + sEasyChatScreen->state = 1; + return 8; + default: + return 0; + } +} + +u16 sub_80FF590(void) +{ + sEasyChatScreen->stateBackup = sEasyChatScreen->state; + sEasyChatScreen->state = 4; + return 5; +} + +u16 sub_80FF5A8(void) +{ + sEasyChatScreen->stateBackup = sEasyChatScreen->state; + sEasyChatScreen->state = 5; + return 4; +} + +u16 sub_80FF5C0(void) +{ + sEasyChatScreen->stateBackup = sEasyChatScreen->state; + if (IsEcWordBufferUninitialized()) + { + sEasyChatScreen->state = 4; + return 5; + } + else + { + sEasyChatScreen->state = 6; + return 6; + } +} + +u8 sub_80FF5F0(void) +{ + return sEasyChatScreen->stateBackup; +} + +int sub_80FF5FC(void) +{ + u16 var1; + + if (sEasyChatScreen->unk_09 == 0) + { + u8 groupId = GetSelectedGroupByIndex(sub_80FFB8C()); + GetUnlockedECWords(FALSE, groupId); + } + else + { + GetUnlockedECWords(TRUE, sub_80FFBAC()); + } + + var1 = GetNumDisplayedWords(); + 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_80FF678(void) +{ + sEasyChatScreen->state = 0; + return 10; +} + +int sub_80FF688(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 22; +} + +int sub_80FF6B4(void) +{ + sub_80FF768(0xFFFF); + return 1; +} + +int sub_80FF6C8(void) +{ + u16 easyChatWord = GetDisplayedWordByIndex(sub_80FFBE4()); + sub_80FF768(easyChatWord); + sEasyChatScreen->state = 0; + return 12; +} + +void sub_80FF6F0(void) +{ + u16 i; + for (i = 0; i < sEasyChatScreen->unk_07; i++) + sEasyChatScreen->words[i] = sEasyChatScreen->ecWordBuffer[i]; +} + +void sub_80FF728(void) +{ + u16 i; + for (i = 0; i < sEasyChatScreen->unk_07; i++) + sEasyChatScreen->ecWordBuffer[i] = 0xFFFF; +} + +void sub_80FF768(u16 easyChatWord) +{ + u16 index = sub_80FFB6C(); + sEasyChatScreen->ecWordBuffer[index] = easyChatWord; +} + +bool8 sub_80FF78C(void) +{ + u16 i; + for (i = 0; i < sEasyChatScreen->unk_07; i++) + { + if (sEasyChatScreen->ecWordBuffer[i] != sEasyChatScreen->words[i]) + return TRUE; + } + + return FALSE; +} + +u16 sub_80FF7CC(u32 action) +{ + if (sEasyChatScreen->unk_0a != -1) + { + if (sEasyChatScreen->unk_09 == 0) + return sub_80FF80C(action); + else + return sub_80FF8D8(action); + } + else + { + return sub_80FF968(action); + } +} + +int sub_80FF80C(u32 arg0) +{ + switch (arg0) + { + case 2: + if (sEasyChatScreen->unk_0b != -sEasyChatScreen->unk_0c) + { + if (sEasyChatScreen->unk_0b) + { + sEasyChatScreen->unk_0b--; + return 14; + } + else + { + sEasyChatScreen->unk_0c--; + return 16; + } + } + 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 = 14; + } + else + { + sEasyChatScreen->unk_0c++; + var0 = 15; + } + + sub_80FFC1C(); + return var0; + } + break; + case 1: + if (sEasyChatScreen->unk_0a) + sEasyChatScreen->unk_0a--; + else + sub_80FF9E8(); + + return 14; + case 0: + if (sEasyChatScreen->unk_0a < 1) + { + sEasyChatScreen->unk_0a++; + if (sub_80FFC6C()) + sub_80FF9E8(); + } + else + { + sub_80FF9E8(); + } + return 14; + } + + return 0; +} + +int sub_80FF8D8(u32 arg0) +{ + switch (arg0) + { + case 2: + if (sEasyChatScreen->unk_0b > 0) + sEasyChatScreen->unk_0b--; + else + sEasyChatScreen->unk_0b = 3; + + sub_80FFC1C(); + return 14; + case 3: + if (sEasyChatScreen->unk_0b < 3) + sEasyChatScreen->unk_0b++; + else + sEasyChatScreen->unk_0b = 0; + + sub_80FFC1C(); + return 14; + case 0: + sEasyChatScreen->unk_0a++; + if (sub_80FFC6C()) + sub_80FF9E8(); + + return 14; + case 1: + sEasyChatScreen->unk_0a--; + if (sEasyChatScreen->unk_0a < 0) + sub_80FF9E8(); + + return 14; + } + + return 0; +} + +int sub_80FF968(u32 arg0) +{ + switch (arg0) + { + case 2: + if (sEasyChatScreen->unk_0b) + sEasyChatScreen->unk_0b--; + else + sEasyChatScreen->unk_0b = 2; + + return 14; + case 3: + if (sEasyChatScreen->unk_0b < 2) + sEasyChatScreen->unk_0b++; + else + sEasyChatScreen->unk_0b = 0; + + return 14; + case 1: + sEasyChatScreen->unk_0b++; + sub_80FFA0C(); + return 14; + case 0: + sEasyChatScreen->unk_0a = 0; + sEasyChatScreen->unk_0b++; + return 14; + } + + return 0; +} + +void sub_80FF9E8(void) +{ + sEasyChatScreen->unk_0a = 0xFF; + if (sEasyChatScreen->unk_0b) + sEasyChatScreen->unk_0b--; +} + +void sub_80FFA0C(void) +{ + if (sEasyChatScreen->unk_09 == 0) + { + sEasyChatScreen->unk_0a = 1; + sub_80FFC1C(); + } + else + { + sEasyChatScreen->unk_0a = sub_80FFC04(sEasyChatScreen->unk_0b); + } +} + +u16 sub_80FFA38(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 = 17; + } + else + { + sEasyChatScreen->unk_0e--; + result = 18; + } + + sub_80FFC44(); + return result; + } + break; + case 3: + if (sEasyChatScreen->unk_11 + sEasyChatScreen->unk_0e < sEasyChatScreen->unk_0f) + { + if (sEasyChatScreen->unk_11 < 3) + { + sEasyChatScreen->unk_11++; + result = 17; + } + else + { + sEasyChatScreen->unk_0e++; + result = 19; + } + + sub_80FFC44(); + return result; + } + break; + case 1: + if (sEasyChatScreen->unk_10 > 0) + sEasyChatScreen->unk_10--; + else + sEasyChatScreen->unk_10 = 1; + + sub_80FFC44(); + return 17; + case 0: + if (sEasyChatScreen->unk_10 < 1) + { + sEasyChatScreen->unk_10++; + if (sub_80FFCC0()) + sEasyChatScreen->unk_10 = 0; + } + else + { + sEasyChatScreen->unk_10 = 0; + } + return 17; + case 4: + if (sEasyChatScreen->unk_0e) + { + if (sEasyChatScreen->unk_0e > 3) + sEasyChatScreen->unk_0e -= 4; + else + sEasyChatScreen->unk_0e = 0; + + return 20; + } + 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 + -3u; + + sub_80FFC44(); + return 21; + } + break; + } + + return 0; +} + +u16 sub_80FFB6C(void) +{ + return (sEasyChatScreen->mainCursorRow * sEasyChatScreen->numColumns) + sEasyChatScreen->mainCursorColumn; +} + +u16 sub_80FFB8C(void) +{ + return 2 * (sEasyChatScreen->unk_0b + sEasyChatScreen->unk_0c) + sEasyChatScreen->unk_0a; +} + +const u8 gUnknown_843F39C[][7] = { + {0x01, 0x02, 0x03, 0x04, 0x05, 0x06}, + {0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c}, + {0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13}, + {0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a} +}; + +int sub_80FFBAC(void) +{ + int var0 = sEasyChatScreen->unk_0a < NELEMS(*gUnknown_843F39C) ? sEasyChatScreen->unk_0a : 0; + int var1 = sEasyChatScreen->unk_0b < NELEMS(gUnknown_843F39C) ? sEasyChatScreen->unk_0b : 0; + return gUnknown_843F39C[var1][var0]; +} + +u16 sub_80FFBE4(void) +{ + return 2 * (sEasyChatScreen->unk_11 + sEasyChatScreen->unk_0e) + sEasyChatScreen->unk_10; +} + +u8 sub_80FFC04(u8 arg0) +{ + switch (arg0) + { + case 0: + default: + return 6; + case 1: + return 5; + } +} + +void sub_80FFC1C(void) +{ + while (sub_80FFC6C()) + { + if (sEasyChatScreen->unk_0a) + sEasyChatScreen->unk_0a--; + else + break; + } +} + +void sub_80FFC44(void) +{ + while (sub_80FFCC0()) + { + if (sEasyChatScreen->unk_10) + sEasyChatScreen->unk_10--; + else + break; + } +} + +bool8 sub_80FFC6C(void) +{ + if (sEasyChatScreen->unk_09 == 0) + return sub_80FFB8C() >= GetNumDisplayableGroups() ? TRUE : FALSE; + else + return sEasyChatScreen->unk_0a > sub_80FFC04(sEasyChatScreen->unk_0b) ? TRUE : FALSE; +} + +bool8 sub_80FFCC0(void) +{ + return sub_80FFBE4() >= GetNumDisplayedWords() ? TRUE : FALSE; +} + +u8 GetEasyChatScreenFrameId(void) +{ + return sEasyChatScreenTemplates[sEasyChatScreen->templateId].frameId; +} + +const u8 *GetTitleText(void) +{ + return sEasyChatScreenTemplates[sEasyChatScreen->templateId].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_80FFDC8(const u8 **str1, const u8 **str2) +{ + switch (sEasyChatScreen->type) + { + case EASY_CHAT_TYPE_MAIL: + *str1 = gUnknown_84189EE; + *str2 = NULL; + break; + default: + *str1 = gUnknown_84189E0; + *str2 = NULL; + break; + } + +} + +void GetEasyChatConfirmDeletionText(const u8 **str1, const u8 **str2) +{ + *str1 = gUnknown_8418937; + *str2 = gUnknown_8418956; +} + +void sub_80FFE08(u8 *arg0, u8 *arg1) +{ + *arg0 = sEasyChatScreen->unk_0a; + *arg1 = sEasyChatScreen->unk_0b; +} + +u8 sub_80FFE1C(void) +{ + return sEasyChatScreen->unk_09; +} + +u8 sub_80FFE28(void) +{ + return sEasyChatScreen->unk_0c; +} + +void sub_80FFE34(u8 *arg0, u8 *arg1) +{ + *arg0 = sEasyChatScreen->unk_10; + *arg1 = sEasyChatScreen->unk_11; +} + +u8 sub_80FFE48(void) +{ + return sEasyChatScreen->unk_0e; +} + +u8 sub_80FFE54(void) +{ + return sEasyChatScreen->unk_0f; +} + +u8 unref_sub_80FFE60(void) +{ + return 0; +} + +bool32 sub_80FFE64(void) +{ + switch (sEasyChatScreen->state) + { + case 2: + if (sEasyChatScreen->unk_09 == 0 && sEasyChatScreen->unk_0c) + return TRUE; + break; + case 3: + if (sEasyChatScreen->unk_0e) + return TRUE; + break; + } + + return FALSE; +} + +bool32 sub_80FFE98(void) +{ + switch (sEasyChatScreen->state) + { + case 2: + if (sEasyChatScreen->unk_09 == 0 && sEasyChatScreen->unk_0c + 4 <= sEasyChatScreen->unk_0d - 1) + return TRUE; + break; + case 3: + if (sEasyChatScreen->unk_0e + 4 <= sEasyChatScreen->unk_0f) + return TRUE; + break; + } + + return FALSE; +} + +bool8 IsPhraseDifferentThanPlayerInput(const u16 *phrase, u8 phraseLength) +{ + u8 i; + + for (i = 0; i < phraseLength; i++) + { + if (phrase[i] != sEasyChatScreen->ecWordBuffer[i]) + return TRUE; + } + + return FALSE; +} + +u8 GetEasyChatScreenTemplateId(u8 type) +{ + u32 i; + + for (i = 0; i < NELEMS(sEasyChatScreenTemplates); i++) + { + if (sEasyChatScreenTemplates[i].type == type) + return i; + } + + return 0; +} + +bool32 IsEcWordBufferUninitialized(void) +{ + int i; + + for (i = 0; i < sEasyChatScreen->unk_07; i++) + { + if (sEasyChatScreen->ecWordBuffer[i] != 0xFFFF) + return FALSE; + } + + return TRUE; +} + +bool8 sub_80FFF80(void) +{ + if (!sub_8100BF4()) + return FALSE; + else + return TRUE; +} diff --git a/sym_ewram.txt b/sym_ewram.txt index c6d2d73dd..6464b9b75 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -316,7 +316,7 @@ gUnknown_203998C: @ 203998C .align 2 @ .include "src/easy_chat_2.o" -gUnknown_203ACE8: @ 203ACE8 +sEasyChatScreen: @ 203ACE8 .space 0x4 gUnknown_203ACEC: @ 203ACEC |