diff --git a/asm/easy_chat.s b/asm/easy_chat.s index 271d1bce1c..caf096f092 100644 --- a/asm/easy_chat.s +++ b/asm/easy_chat.s @@ -5,1805 +5,6 @@ .text - thumb_func_start sub_811BFA4 -sub_811BFA4: @ 811BFA4 - push {r4,lr} - sub sp, 0x8 - ldr r0, =gUnknown_0203A11C - ldr r0, [r0] - ldrh r0, [r0] - cmp r0, 0x5 - bls _0811BFB4 - b _0811C120 -_0811BFB4: - lsls r0, 2 - ldr r1, =_0811BFC8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0811BFC8: - .4byte _0811BFE0 - .4byte _0811C044 - .4byte _0811C090 - .4byte _0811C0AC - .4byte _0811C0BE - .4byte _0811C0D4 -_0811BFE0: - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, =gUnknown_08597C54 - movs r0, 0 - movs r2, 0x4 - bl InitBgsFromTemplates - ldr r4, =gUnknown_0203A11C - ldr r1, [r4] - movs r0, 0xB0 - lsls r0, 4 - adds r1, r0 - movs r0, 0x3 - bl SetBgTilemapBuffer - ldr r1, [r4] - movs r0, 0xC0 - lsls r0, 2 - adds r1, r0 - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r0, =gUnknown_08597C64 - bl InitWindows - bl DeactivateAllTextPrinters - bl sub_811CF64 - bl sub_811CF04 - movs r0, 0 - str r0, [sp, 0x4] - movs r1, 0xE0 - lsls r1, 19 - ldr r2, =0x01000100 - add r0, sp, 0x4 - bl CpuFastSet - b _0811C124 - .pool -_0811C044: - ldr r1, =gEasyChatWindow_Gfx - movs r0, 0 - str r0, [sp] - movs r0, 0x3 - movs r2, 0 - movs r3, 0 - bl DecompressAndLoadBgGfxUsingHeap - ldr r1, =gEasyChatWindow_Tilemap - movs r0, 0x3 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - bl sub_811D60C - ldr r0, =gUnknown_0203A11C - ldr r0, [r0] - movs r1, 0xC0 - lsls r1, 2 - adds r0, r1 - bl sub_811D424 - bl sub_811D230 - bl sub_811E948 - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - b _0811C124 - .pool -_0811C090: - ldr r1, =gUnknown_08597B54 - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl DecompressAndLoadBgGfxUsingHeap - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - b _0811C124 - .pool -_0811C0AC: - bl sub_811CFCC - bl sub_811D0BC - bl sub_811D2C8 - bl sub_811D684 - b _0811C124 -_0811C0BE: - bl sub_811DE90 - bl sub_811BA5C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x10 - beq _0811C124 - bl sub_811DEC4 - b _0811C124 -_0811C0D4: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0811C12E - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_811DE5C - movs r0, 0x48 - movs r1, 0x3F - bl SetGpuReg - movs r0, 0x4A - movs r1, 0x3B - bl SetGpuReg - movs r0, 0x3 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0 - bl ShowBg - bl sub_811E5D4 - bl sub_811E720 - bl sub_811E828 - b _0811C124 -_0811C120: - movs r0, 0 - b _0811C130 -_0811C124: - ldr r0, =gUnknown_0203A11C - ldr r1, [r0] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0811C12E: - movs r0, 0x1 -_0811C130: - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_811BFA4 - - thumb_func_start sub_811C13C -sub_811C13C: @ 811C13C - push {r4,lr} - ldr r4, =gUnknown_0203A11C - ldr r0, [r4] - cmp r0, 0 - beq _0811C14E - bl Free - movs r0, 0 - str r0, [r4] -_0811C14E: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_811C13C - - thumb_func_start sub_811C158 -sub_811C158: @ 811C158 - push {lr} - ldr r1, =gUnknown_0203A11C - ldr r1, [r1] - movs r2, 0 - strh r0, [r1, 0x4] - strh r2, [r1] - bl sub_811C170 - pop {r0} - bx r0 - .pool - thumb_func_end sub_811C158 - - thumb_func_start sub_811C170 -sub_811C170: @ 811C170 - push {lr} - ldr r0, =gUnknown_0203A11C - ldr r0, [r0] - ldrh r0, [r0, 0x4] - cmp r0, 0x22 - bls _0811C17E - b _0811C2CE -_0811C17E: - lsls r0, 2 - ldr r1, =_0811C190 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0811C190: - .4byte _0811C2CE - .4byte _0811C21C - .4byte _0811C222 - .4byte _0811C228 - .4byte _0811C22E - .4byte _0811C234 - .4byte _0811C23A - .4byte _0811C240 - .4byte _0811C246 - .4byte _0811C24C - .4byte _0811C252 - .4byte _0811C258 - .4byte _0811C25E - .4byte _0811C264 - .4byte _0811C26A - .4byte _0811C270 - .4byte _0811C276 - .4byte _0811C27C - .4byte _0811C282 - .4byte _0811C288 - .4byte _0811C28E - .4byte _0811C294 - .4byte _0811C29A - .4byte _0811C2A0 - .4byte _0811C2CE - .4byte _0811C2CE - .4byte _0811C2CE - .4byte _0811C2CE - .4byte _0811C2CE - .4byte _0811C2A6 - .4byte _0811C2AC - .4byte _0811C2B2 - .4byte _0811C2B8 - .4byte _0811C2BE - .4byte _0811C2C4 -_0811C21C: - bl sub_811C2D4 - b _0811C2C8 -_0811C222: - bl sub_811C30C - b _0811C2C8 -_0811C228: - bl sub_811C3E4 - b _0811C2C8 -_0811C22E: - bl sub_811C48C - b _0811C2C8 -_0811C234: - bl sub_811C404 - b _0811C2C8 -_0811C23A: - bl sub_811C448 - b _0811C2C8 -_0811C240: - bl sub_811C4D0 - b _0811C2C8 -_0811C246: - bl sub_811C518 - b _0811C2C8 -_0811C24C: - bl sub_811C554 - b _0811C2C8 -_0811C252: - bl sub_811C620 - b _0811C2C8 -_0811C258: - bl sub_811C830 - b _0811C2C8 -_0811C25E: - bl sub_811C8F0 - b _0811C2C8 -_0811C264: - bl sub_811C99C - b _0811C2C8 -_0811C26A: - bl sub_811CA5C - b _0811C2C8 -_0811C270: - bl sub_811C780 - b _0811C2C8 -_0811C276: - bl sub_811C78C - b _0811C2C8 -_0811C27C: - bl sub_811C7D4 - b _0811C2C8 -_0811C282: - bl sub_811CB18 - b _0811C2C8 -_0811C288: - bl sub_811CB98 - b _0811C2C8 -_0811C28E: - bl sub_811CB24 - b _0811C2C8 -_0811C294: - bl sub_811CC90 - b _0811C2C8 -_0811C29A: - bl sub_811CC08 - b _0811C2C8 -_0811C2A0: - bl sub_811C6C0 - b _0811C2C8 -_0811C2A6: - bl sub_811CD14 - b _0811C2C8 -_0811C2AC: - bl sub_811CD54 - b _0811C2C8 -_0811C2B2: - bl sub_811CD94 - b _0811C2C8 -_0811C2B8: - bl sub_811CDD4 - b _0811C2C8 -_0811C2BE: - bl sub_811CE14 - b _0811C2C8 -_0811C2C4: - bl sub_811CE54 -_0811C2C8: - lsls r0, 24 - lsrs r0, 24 - b _0811C2D0 -_0811C2CE: - movs r0, 0 -_0811C2D0: - pop {r1} - bx r1 - thumb_func_end sub_811C170 - - thumb_func_start sub_811C2D4 -sub_811C2D4: @ 811C2D4 - push {r4,lr} - ldr r4, =gUnknown_0203A11C - ldr r0, [r4] - ldrh r0, [r0] - cmp r0, 0 - beq _0811C2EC - cmp r0, 0x1 - beq _0811C2FA - b _0811C304 - .pool -_0811C2EC: - bl sub_811D2C8 - ldr r1, [r4] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811C304 -_0811C2FA: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _0811C306 -_0811C304: - movs r0, 0x1 -_0811C306: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811C2D4 - - thumb_func_start sub_811C30C -sub_811C30C: @ 811C30C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x40 - bl sub_811BA94 - adds r4, r0, 0 - bl sub_811BA68 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - bl sub_811BAB8 - lsls r0, 24 - lsrs r7, r0, 24 - bl sub_811BAC4 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - bl sub_811BAAC - lsls r0, 24 - lsrs r0, 24 - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - lsls r0, 1 - adds r4, r0 - ldr r1, =gUnknown_08597C30 - mov r2, r10 - lsls r0, r2, 2 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 27 - lsrs r0, 8 - movs r1, 0xD0 - lsls r1, 12 - adds r0, r1 - lsrs r6, r0, 16 - movs r5, 0 - cmp r5, r7 - bcs _0811C3AA - ldr r2, =0x0000ffff - mov r8, r2 -_0811C36C: - ldrh r0, [r4] - cmp r0, r8 - bne _0811C380 - movs r0, 0x48 - b _0811C392 - .pool -_0811C380: - ldrh r1, [r4] - mov r0, sp - bl CopyEasyChatWord - movs r0, 0x1 - mov r1, sp - movs r2, 0 - bl GetStringWidth -_0811C392: - adds r0, 0x11 - lsls r1, r6, 16 - asrs r1, 16 - adds r1, r0 - lsls r1, 16 - lsrs r6, r1, 16 - adds r4, 0x2 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, r7 - bcc _0811C36C -_0811C3AA: - ldr r1, =gUnknown_08597C30 - mov r2, r10 - lsls r0, r2, 2 - adds r0, r1 - ldrb r1, [r0] - lsrs r1, 5 - mov r2, r9 - lsls r0, r2, 1 - adds r1, r0 - lsls r1, 27 - lsls r0, r6, 24 - lsrs r0, 24 - movs r2, 0x80 - lsls r2, 20 - adds r1, r2 - lsrs r1, 24 - bl sub_811DF60 - movs r0, 0 - add sp, 0x40 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_811C30C - - thumb_func_start sub_811C3E4 -sub_811C3E4: @ 811C3E4 - push {lr} - bl sub_811BAB8 - lsls r0, 24 - lsrs r0, 24 - bl sub_811E920 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x60 - bl sub_811DF60 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_811C3E4 - - thumb_func_start sub_811C404 -sub_811C404: @ 811C404 - push {r4,lr} - ldr r4, =gUnknown_0203A11C - ldr r0, [r4] - ldrh r0, [r0] - cmp r0, 0 - beq _0811C41C - cmp r0, 0x1 - beq _0811C436 - b _0811C440 - .pool -_0811C41C: - bl sub_811DF90 - movs r0, 0x2 - bl sub_811D104 - movs r0, 0x1 - bl sub_811D214 - ldr r1, [r4] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811C440 -_0811C436: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _0811C442 -_0811C440: - movs r0, 0x1 -_0811C442: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811C404 - - thumb_func_start sub_811C448 -sub_811C448: @ 811C448 - push {r4,lr} - ldr r4, =gUnknown_0203A11C - ldr r0, [r4] - ldrh r0, [r0] - cmp r0, 0 - beq _0811C460 - cmp r0, 0x1 - beq _0811C47A - b _0811C484 - .pool -_0811C460: - bl sub_811DF90 - movs r0, 0x3 - bl sub_811D104 - movs r0, 0 - bl sub_811D214 - ldr r1, [r4] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811C484 -_0811C47A: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _0811C486 -_0811C484: - movs r0, 0x1 -_0811C486: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811C448 - - thumb_func_start sub_811C48C -sub_811C48C: @ 811C48C - push {r4,lr} - ldr r4, =gUnknown_0203A11C - ldr r0, [r4] - ldrh r0, [r0] - cmp r0, 0 - beq _0811C4A4 - cmp r0, 0x1 - beq _0811C4BE - b _0811C4C8 - .pool -_0811C4A4: - bl sub_811DF90 - movs r0, 0x1 - bl sub_811D104 - movs r0, 0x1 - bl sub_811D214 - ldr r1, [r4] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811C4C8 -_0811C4BE: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _0811C4CA -_0811C4C8: - movs r0, 0x1 -_0811C4CA: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811C48C - - thumb_func_start sub_811C4D0 -sub_811C4D0: @ 811C4D0 - push {r4,lr} - ldr r4, =gUnknown_0203A11C - ldr r0, [r4] - ldrh r0, [r0] - cmp r0, 0 - beq _0811C4E8 - cmp r0, 0x1 - beq _0811C506 - b _0811C510 - .pool -_0811C4E8: - bl sub_811DFB0 - movs r0, 0 - bl sub_811D104 - bl sub_811D2C8 - movs r0, 0 - bl ShowBg - ldr r1, [r4] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811C510 -_0811C506: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _0811C512 -_0811C510: - movs r0, 0x1 -_0811C512: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811C4D0 - - thumb_func_start sub_811C518 -sub_811C518: @ 811C518 - push {r4,lr} - ldr r4, =gUnknown_0203A11C - ldr r0, [r4] - ldrh r0, [r0] - cmp r0, 0 - beq _0811C530 - cmp r0, 0x1 - beq _0811C546 - movs r0, 0x1 - b _0811C54E - .pool -_0811C530: - bl sub_811DFB0 - movs r0, 0 - bl sub_811D104 - bl sub_811D2C8 - ldr r1, [r4] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0811C546: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 -_0811C54E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811C518 - - thumb_func_start sub_811C554 -sub_811C554: @ 811C554 - push {lr} - ldr r0, =gUnknown_0203A11C - ldr r0, [r0] - ldrh r0, [r0] - cmp r0, 0x4 - bhi _0811C60E - lsls r0, 2 - ldr r1, =_0811C574 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0811C574: - .4byte _0811C588 - .4byte _0811C5A4 - .4byte _0811C5B6 - .4byte _0811C5CC - .4byte _0811C5EC -_0811C588: - bl sub_811DF90 - movs r0, 0 - bl HideBg - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_811DE5C - bl sub_811D6D4 - b _0811C5DA -_0811C5A4: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0811C618 - movs r0, 0 - bl sub_811D9CC - b _0811C5DA -_0811C5B6: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0811C618 - bl sub_811DAA4 - lsls r0, 24 - cmp r0, 0 - bne _0811C618 - b _0811C5DA -_0811C5CC: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0811C618 - bl sub_811E3AC -_0811C5DA: - ldr r0, =gUnknown_0203A11C - ldr r1, [r0] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811C618 - .pool -_0811C5EC: - bl sub_811E418 - lsls r0, 24 - cmp r0, 0 - bne _0811C618 - bl sub_811DFC8 - movs r0, 0 - bl sub_811E6E0 - bl sub_811E64C - ldr r0, =gUnknown_0203A11C - ldr r1, [r0] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0811C60E: - movs r0, 0 - b _0811C61A - .pool -_0811C618: - movs r0, 0x1 -_0811C61A: - pop {r1} - bx r1 - thumb_func_end sub_811C554 - - thumb_func_start sub_811C620 -sub_811C620: @ 811C620 - push {lr} - ldr r0, =gUnknown_0203A11C - ldr r0, [r0] - ldrh r0, [r0] - cmp r0, 0x4 - bhi _0811C6B8 - lsls r0, 2 - ldr r1, =_0811C640 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0811C640: - .4byte _0811C654 - .4byte _0811C662 - .4byte _0811C67E - .4byte _0811C690 - .4byte _0811C6B4 -_0811C654: - bl sub_811E050 - bl sub_811E4AC - bl sub_811E6B0 - b _0811C6A4 -_0811C662: - bl sub_811E4D0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0811C6B8 - movs r0, 0x1 - bl sub_811D9CC - ldr r0, =gUnknown_0203A11C - ldr r1, [r0] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0811C67E: - bl sub_811DAA4 - lsls r0, 24 - cmp r0, 0 - bne _0811C6B8 - b _0811C6A4 - .pool -_0811C690: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0811C6B8 - bl sub_811DFB0 - movs r0, 0 - bl ShowBg -_0811C6A4: - ldr r0, =gUnknown_0203A11C - ldr r1, [r0] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811C6B8 - .pool -_0811C6B4: - movs r0, 0 - b _0811C6BA -_0811C6B8: - movs r0, 0x1 -_0811C6BA: - pop {r1} - bx r1 - thumb_func_end sub_811C620 - - thumb_func_start sub_811C6C0 -sub_811C6C0: @ 811C6C0 - push {lr} - ldr r0, =gUnknown_0203A11C - ldr r0, [r0] - ldrh r0, [r0] - cmp r0, 0x4 - bhi _0811C778 - lsls r0, 2 - ldr r1, =_0811C6E0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0811C6E0: - .4byte _0811C6F4 - .4byte _0811C708 - .4byte _0811C722 - .4byte _0811C748 - .4byte _0811C76E -_0811C6F4: - bl sub_811E050 - bl sub_811E6B0 - bl sub_811E55C - movs r0, 0x5 - bl sub_811D9CC - b _0811C736 -_0811C708: - bl sub_811DAA4 - lsls r0, 24 - cmp r0, 0 - bne _0811C778 - bl sub_811E5B8 - lsls r0, 24 - cmp r0, 0 - bne _0811C778 - bl sub_811D6D4 - b _0811C736 -_0811C722: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0811C778 - movs r0, 0x6 - bl sub_811D9CC - bl sub_811E578 -_0811C736: - ldr r0, =gUnknown_0203A11C - ldr r1, [r0] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811C778 - .pool -_0811C748: - bl sub_811DAA4 - lsls r0, 24 - cmp r0, 0 - bne _0811C778 - bl sub_811E5B8 - lsls r0, 24 - cmp r0, 0 - bne _0811C778 - bl sub_811E64C - bl sub_811DFC8 - ldr r0, =gUnknown_0203A11C - ldr r1, [r0] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0811C76E: - movs r0, 0 - b _0811C77A - .pool -_0811C778: - movs r0, 0x1 -_0811C77A: - pop {r1} - bx r1 - thumb_func_end sub_811C6C0 - - thumb_func_start sub_811C780 -sub_811C780: @ 811C780 - push {lr} - bl sub_811E088 - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_811C780 - - thumb_func_start sub_811C78C -sub_811C78C: @ 811C78C - push {r4,lr} - ldr r4, =gUnknown_0203A11C - ldr r0, [r4] - ldrh r0, [r0] - cmp r0, 0 - beq _0811C7A4 - cmp r0, 0x1 - beq _0811C7B4 - b _0811C7CA - .pool -_0811C7A4: - movs r0, 0x1 - movs r1, 0x4 - bl sub_811DDAC - ldr r1, [r4] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0811C7B4: - bl sub_811DE10 - lsls r0, 24 - cmp r0, 0 - bne _0811C7CA - bl sub_811E088 - bl sub_811E64C - movs r0, 0 - b _0811C7CC -_0811C7CA: - movs r0, 0x1 -_0811C7CC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811C78C - - thumb_func_start sub_811C7D4 -sub_811C7D4: @ 811C7D4 - push {r4,lr} - ldr r4, =gUnknown_0203A11C - ldr r0, [r4] - ldrh r0, [r0] - cmp r0, 0x1 - beq _0811C808 - cmp r0, 0x1 - bgt _0811C7F0 - cmp r0, 0 - beq _0811C7F6 - b _0811C828 - .pool -_0811C7F0: - cmp r0, 0x2 - beq _0811C820 - b _0811C828 -_0811C7F6: - movs r0, 0x1 - negs r0, r0 - movs r1, 0x4 - bl sub_811DDAC - ldr r1, [r4] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0811C808: - bl sub_811DE10 - lsls r0, 24 - cmp r0, 0 - bne _0811C828 - bl sub_811E64C - ldr r0, =gUnknown_0203A11C - ldr r1, [r0] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0811C820: - movs r0, 0 - b _0811C82A - .pool -_0811C828: - movs r0, 0x1 -_0811C82A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811C7D4 - - thumb_func_start sub_811C830 -sub_811C830: @ 811C830 - push {lr} - ldr r0, =gUnknown_0203A11C - ldr r0, [r0] - ldrh r0, [r0] - cmp r0, 0x5 - bhi _0811C8E8 - lsls r0, 2 - ldr r1, =_0811C850 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0811C850: - .4byte _0811C868 - .4byte _0811C876 - .4byte _0811C886 - .4byte _0811C898 - .4byte _0811C8B8 - .4byte _0811C8DE -_0811C868: - bl sub_811E050 - bl sub_811E4AC - bl sub_811E6B0 - b _0811C8A8 -_0811C876: - bl sub_811E4D0 - lsls r0, 24 - cmp r0, 0 - bne _0811C8E8 - bl sub_811D9B4 - b _0811C8A8 -_0811C886: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0811C8E8 - movs r0, 0x2 - bl sub_811D9CC - b _0811C8A8 -_0811C898: - bl sub_811DAA4 - lsls r0, 24 - cmp r0, 0 - bne _0811C8E8 - movs r0, 0x2 - bl sub_811D698 -_0811C8A8: - ldr r0, =gUnknown_0203A11C - ldr r1, [r0] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811C8E8 - .pool -_0811C8B8: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0811C8E8 - bl sub_811E288 - movs r0, 0x1 - bl sub_811E6E0 - bl sub_811E64C - bl sub_811E794 - ldr r0, =gUnknown_0203A11C - ldr r1, [r0] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0811C8DE: - movs r0, 0 - b _0811C8EA - .pool -_0811C8E8: - movs r0, 0x1 -_0811C8EA: - pop {r1} - bx r1 - thumb_func_end sub_811C830 - - thumb_func_start sub_811C8F0 -sub_811C8F0: @ 811C8F0 - push {lr} - ldr r0, =gUnknown_0203A11C - ldr r0, [r0] - ldrh r0, [r0] - cmp r0, 0x5 - bhi _0811C994 - lsls r0, 2 - ldr r1, =_0811C910 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0811C910: - .4byte _0811C928 - .4byte _0811C92E - .4byte _0811C940 - .4byte _0811C952 - .4byte _0811C974 - .4byte _0811C98C -_0811C928: - bl sub_811D2C8 - b _0811C962 -_0811C92E: - bl sub_811E380 - bl sub_811E6B0 - bl sub_811E7F8 - bl sub_811D9B4 - b _0811C962 -_0811C940: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0811C994 - movs r0, 0x3 - bl sub_811D9CC - b _0811C962 -_0811C952: - bl sub_811DAA4 - lsls r0, 24 - cmp r0, 0 - bne _0811C994 - movs r0, 0 - bl ShowBg -_0811C962: - ldr r0, =gUnknown_0203A11C - ldr r1, [r0] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811C994 - .pool -_0811C974: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0811C994 - bl sub_811DFB0 - ldr r0, =gUnknown_0203A11C - ldr r1, [r0] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0811C98C: - movs r0, 0 - b _0811C996 - .pool -_0811C994: - movs r0, 0x1 -_0811C996: - pop {r1} - bx r1 - thumb_func_end sub_811C8F0 - - thumb_func_start sub_811C99C -sub_811C99C: @ 811C99C - push {lr} - ldr r0, =gUnknown_0203A11C - ldr r0, [r0] - ldrh r0, [r0] - cmp r0, 0x6 - bhi _0811CA54 - lsls r0, 2 - ldr r1, =_0811C9BC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0811C9BC: - .4byte _0811C9D8 - .4byte _0811C9DE - .4byte _0811C9F0 - .4byte _0811CA02 - .4byte _0811CA14 - .4byte _0811CA34 - .4byte _0811CA4C -_0811C9D8: - bl sub_811D2C8 - b _0811CA24 -_0811C9DE: - bl sub_811E380 - bl sub_811E6B0 - bl sub_811E7F8 - bl sub_811D9B4 - b _0811CA24 -_0811C9F0: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0811CA54 - movs r0, 0x3 - bl sub_811D9CC - b _0811CA24 -_0811CA02: - bl sub_811DAA4 - lsls r0, 24 - cmp r0, 0 - bne _0811CA54 - movs r0, 0x3 - bl sub_811D104 - b _0811CA24 -_0811CA14: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0811CA54 - movs r0, 0 - bl ShowBg -_0811CA24: - ldr r0, =gUnknown_0203A11C - ldr r1, [r0] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811CA54 - .pool -_0811CA34: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0811CA54 - bl sub_811DFB0 - ldr r0, =gUnknown_0203A11C - ldr r1, [r0] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0811CA4C: - movs r0, 0 - b _0811CA56 - .pool -_0811CA54: - movs r0, 0x1 -_0811CA56: - pop {r1} - bx r1 - thumb_func_end sub_811C99C - - thumb_func_start sub_811CA5C -sub_811CA5C: @ 811CA5C - push {lr} - ldr r0, =gUnknown_0203A11C - ldr r0, [r0] - ldrh r0, [r0] - cmp r0, 0x4 - bhi _0811CB10 - lsls r0, 2 - ldr r1, =_0811CA7C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0811CA7C: - .4byte _0811CA90 - .4byte _0811CAA2 - .4byte _0811CAB4 - .4byte _0811CAC4 - .4byte _0811CAE4 -_0811CA90: - bl sub_811E380 - bl sub_811E6B0 - bl sub_811E7F8 - bl sub_811D9B4 - b _0811CAD2 -_0811CAA2: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0811CB10 - movs r0, 0x4 - bl sub_811D9CC - b _0811CAD2 -_0811CAB4: - bl sub_811DAA4 - lsls r0, 24 - cmp r0, 0 - bne _0811CB10 - bl sub_811D6D4 - b _0811CAD2 -_0811CAC4: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0811CB10 - bl sub_811E3AC -_0811CAD2: - ldr r0, =gUnknown_0203A11C - ldr r1, [r0] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811CB10 - .pool -_0811CAE4: - bl sub_811E418 - lsls r0, 24 - cmp r0, 0 - bne _0811CB10 - bl sub_811DFC8 - movs r0, 0 - bl sub_811E6E0 - bl sub_811E64C - ldr r0, =gUnknown_0203A11C - ldr r1, [r0] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0 - b _0811CB12 - .pool -_0811CB10: - movs r0, 0x1 -_0811CB12: - pop {r1} - bx r1 - thumb_func_end sub_811CA5C - - thumb_func_start sub_811CB18 -sub_811CB18: @ 811CB18 - push {lr} - bl sub_811E30C - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_811CB18 - - thumb_func_start sub_811CB24 -sub_811CB24: @ 811CB24 - push {r4,lr} - ldr r4, =gUnknown_0203A11C - ldr r0, [r4] - ldrh r0, [r0] - cmp r0, 0x1 - beq _0811CB50 - cmp r0, 0x1 - bgt _0811CB40 - cmp r0, 0 - beq _0811CB4A - b _0811CB8E - .pool -_0811CB40: - cmp r0, 0x2 - beq _0811CB6C - cmp r0, 0x3 - beq _0811CB8A - b _0811CB8E -_0811CB4A: - bl sub_811D7A4 - b _0811CB62 -_0811CB50: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0811CB8E - movs r0, 0x1 - movs r1, 0x4 - bl sub_811DDAC -_0811CB62: - ldr r1, [r4] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811CB8E -_0811CB6C: - bl sub_811DE10 - lsls r0, 24 - cmp r0, 0 - bne _0811CB8E - bl sub_811E30C - bl sub_811E64C - bl sub_811E794 - ldr r1, [r4] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0811CB8A: - movs r0, 0 - b _0811CB90 -_0811CB8E: - movs r0, 0x1 -_0811CB90: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811CB24 - - thumb_func_start sub_811CB98 -sub_811CB98: @ 811CB98 - push {r4,lr} - ldr r4, =gUnknown_0203A11C - ldr r0, [r4] - ldrh r0, [r0] - cmp r0, 0x1 - beq _0811CBC4 - cmp r0, 0x1 - bgt _0811CBB4 - cmp r0, 0 - beq _0811CBBE - b _0811CC00 - .pool -_0811CBB4: - cmp r0, 0x2 - beq _0811CBE2 - cmp r0, 0x3 - beq _0811CBFC - b _0811CC00 -_0811CBBE: - bl sub_811D7C8 - b _0811CBD8 -_0811CBC4: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0811CC00 - movs r0, 0x1 - negs r0, r0 - movs r1, 0x4 - bl sub_811DDAC -_0811CBD8: - ldr r1, [r4] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811CC00 -_0811CBE2: - bl sub_811DE10 - lsls r0, 24 - cmp r0, 0 - bne _0811CC00 - bl sub_811E64C - bl sub_811E794 - ldr r1, [r4] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0811CBFC: - movs r0, 0 - b _0811CC02 -_0811CC00: - movs r0, 0x1 -_0811CC02: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811CB98 - - thumb_func_start sub_811CC08 -sub_811CC08: @ 811CC08 - push {r4,r5,lr} - ldr r5, =gUnknown_0203A11C - ldr r0, [r5] - ldrh r0, [r0] - cmp r0, 0x1 - beq _0811CC34 - cmp r0, 0x1 - bgt _0811CC24 - cmp r0, 0 - beq _0811CC2E - b _0811CC86 - .pool -_0811CC24: - cmp r0, 0x2 - beq _0811CC64 - cmp r0, 0x3 - beq _0811CC82 - b _0811CC86 -_0811CC2E: - bl sub_811D7EC - b _0811CC5A -_0811CC34: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0811CC86 - bl sub_811BBDC - adds r4, r0, 0 - bl sub_811DE48 - lsls r4, 24 - lsrs r4, 24 - subs r4, r0 - lsls r4, 16 - asrs r4, 16 - adds r0, r4, 0 - movs r1, 0x8 - bl sub_811DDAC -_0811CC5A: - ldr r1, [r5] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811CC86 -_0811CC64: - bl sub_811DE10 - lsls r0, 24 - cmp r0, 0 - bne _0811CC86 - bl sub_811E30C - bl sub_811E64C - bl sub_811E794 - ldr r1, [r5] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0811CC82: - movs r0, 0 - b _0811CC88 -_0811CC86: - movs r0, 0x1 -_0811CC88: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_811CC08 - - thumb_func_start sub_811CC90 -sub_811CC90: @ 811CC90 - push {r4,r5,lr} - ldr r5, =gUnknown_0203A11C - ldr r0, [r5] - ldrh r0, [r0] - cmp r0, 0x1 - beq _0811CCBC - cmp r0, 0x1 - bgt _0811CCAC - cmp r0, 0 - beq _0811CCB6 - b _0811CD0A - .pool -_0811CCAC: - cmp r0, 0x2 - beq _0811CCEC - cmp r0, 0x3 - beq _0811CD06 - b _0811CD0A -_0811CCB6: - bl sub_811D830 - b _0811CCE2 -_0811CCBC: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0811CD0A - bl sub_811BBDC - adds r4, r0, 0 - bl sub_811DE48 - lsls r4, 24 - lsrs r4, 24 - subs r4, r0 - lsls r4, 16 - asrs r4, 16 - adds r0, r4, 0 - movs r1, 0x8 - bl sub_811DDAC -_0811CCE2: - ldr r1, [r5] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811CD0A -_0811CCEC: - bl sub_811DE10 - lsls r0, 24 - cmp r0, 0 - bne _0811CD0A - bl sub_811E64C - bl sub_811E794 - ldr r1, [r5] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0811CD06: - movs r0, 0 - b _0811CD0C -_0811CD0A: - movs r0, 0x1 -_0811CD0C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_811CC90 - - thumb_func_start sub_811CD14 -sub_811CD14: @ 811CD14 - push {r4,lr} - ldr r4, =gUnknown_0203A11C - ldr r0, [r4] - ldrh r0, [r0] - cmp r0, 0 - beq _0811CD2C - cmp r0, 0x1 - beq _0811CD40 - b _0811CD4A - .pool -_0811CD2C: - bl sub_811DF90 - movs r0, 0x4 - bl sub_811D104 - ldr r1, [r4] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811CD4A -_0811CD40: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _0811CD4C -_0811CD4A: - movs r0, 0x1 -_0811CD4C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811CD14 - - thumb_func_start sub_811CD54 -sub_811CD54: @ 811CD54 - push {r4,lr} - ldr r4, =gUnknown_0203A11C - ldr r0, [r4] - ldrh r0, [r0] - cmp r0, 0 - beq _0811CD6C - cmp r0, 0x1 - beq _0811CD80 - b _0811CD8A - .pool -_0811CD6C: - bl sub_811DF90 - movs r0, 0x5 - bl sub_811D104 - ldr r1, [r4] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811CD8A -_0811CD80: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _0811CD8C -_0811CD8A: - movs r0, 0x1 -_0811CD8C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811CD54 - - thumb_func_start sub_811CD94 -sub_811CD94: @ 811CD94 - push {r4,lr} - ldr r4, =gUnknown_0203A11C - ldr r0, [r4] - ldrh r0, [r0] - cmp r0, 0 - beq _0811CDAC - cmp r0, 0x1 - beq _0811CDC0 - b _0811CDCA - .pool -_0811CDAC: - bl sub_811DF90 - movs r0, 0x6 - bl sub_811D104 - ldr r1, [r4] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811CDCA -_0811CDC0: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _0811CDCC -_0811CDCA: - movs r0, 0x1 -_0811CDCC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811CD94 - - thumb_func_start sub_811CDD4 -sub_811CDD4: @ 811CDD4 - push {r4,lr} - ldr r4, =gUnknown_0203A11C - ldr r0, [r4] - ldrh r0, [r0] - cmp r0, 0 - beq _0811CDEC - cmp r0, 0x1 - beq _0811CE00 - b _0811CE0A - .pool -_0811CDEC: - bl sub_811DF90 - movs r0, 0x7 - bl sub_811D104 - ldr r1, [r4] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811CE0A -_0811CE00: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _0811CE0C -_0811CE0A: - movs r0, 0x1 -_0811CE0C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811CDD4 - - thumb_func_start sub_811CE14 -sub_811CE14: @ 811CE14 - push {r4,lr} - ldr r4, =gUnknown_0203A11C - ldr r0, [r4] - ldrh r0, [r0] - cmp r0, 0 - beq _0811CE2C - cmp r0, 0x1 - beq _0811CE40 - b _0811CE4A - .pool -_0811CE2C: - bl sub_811DF90 - movs r0, 0x8 - bl sub_811D104 - ldr r1, [r4] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811CE4A -_0811CE40: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _0811CE4C -_0811CE4A: - movs r0, 0x1 -_0811CE4C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811CE14 - - thumb_func_start sub_811CE54 -sub_811CE54: @ 811CE54 - push {r4,lr} - ldr r4, =gUnknown_0203A11C - ldr r0, [r4] - ldrh r0, [r0] - cmp r0, 0 - beq _0811CE6C - cmp r0, 0x1 - beq _0811CE80 - b _0811CE8A - .pool -_0811CE6C: - bl sub_811DF90 - movs r0, 0x9 - bl sub_811D104 - ldr r1, [r4] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0811CE8A -_0811CE80: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _0811CE8C -_0811CE8A: - movs r0, 0x1 -_0811CE8C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811CE54 - thumb_func_start sub_811CE94 sub_811CE94: @ 811CE94 push {r4,lr} diff --git a/data/easy_chat.s b/data/easy_chat.s index 4725f15d9d..b8df93d7a2 100644 --- a/data/easy_chat.s +++ b/data/easy_chat.s @@ -268,7 +268,14 @@ gUnknown_08597C24:: @ 8597C24 .incbin "graphics/misc/8597C24.gbapal" gUnknown_08597C30:: @ 8597C30 - .byte 0x83, 0x18, 0x04, 0x00, 0x63, 0x18, 0x06, 0x00, 0x03, 0x18, 0x0a, 0x00, 0xa3, 0x18, 0x02, 0x00, 0xb0, 0x0c, 0x02, 0x00, 0x83, 0x18, 0x04, 0x00, 0x89, 0x0c, 0x02, 0x01, 0x65, 0x14, 0x0a, 0x03 + .byte 0x83, 0x18, 0x04, 0x00 + .byte 0x63, 0x18, 0x06, 0x00 + .byte 0x03, 0x18, 0x0a, 0x00 + .byte 0xa3, 0x18, 0x02, 0x00 + .byte 0xb0, 0x0c, 0x02, 0x00 + .byte 0x83, 0x18, 0x04, 0x00 + .byte 0x89, 0x0c, 0x02, 0x01 + .byte 0x65, 0x14, 0x0a, 0x03 .byte 0x03, 0x18, 0x0a, 0x02 .align 2 diff --git a/include/graphics.h b/include/graphics.h index 48c00943b1..6a1933ddd8 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4889,5 +4889,8 @@ extern const u16 gFrontierPassMedalsGold_Pal[]; extern const u16 gFrontierPassMedalsSilver_Pal[]; extern const u16 gFrontierPassMapCursor_Pal[]; +// Easy Chat Screen +extern const u32 gEasyChatWindow_Gfx[]; +extern const u32 gEasyChatWindow_Tilemap[]; #endif //GUARD_GRAPHICS_H diff --git a/src/easy_chat.c b/src/easy_chat.c index 5f5d20e166..741064c5ba 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -2,11 +2,14 @@ // Includes #include "global.h" #include "alloc.h" +#include "bg.h" #include "dewford_trend.h" #include "dynamic_placeholder_text_util.h" #include "easy_chat.h" #include "event_data.h" #include "field_weather.h" +#include "gpu_regs.h" +#include "graphics.h" #include "international_string_util.h" #include "link.h" #include "main.h" @@ -70,8 +73,27 @@ struct EasyChatScreen /*0x3C*/ u16 ecWordBuffer[9]; }; +struct Unk203A11C +{ + u16 unk0; + u8 filler2[0x2]; + u16 unk4; + u8 filler6[0x2FA]; + u8 unk300[BG_SCREEN_SIZE]; + u8 unkB00[BG_SCREEN_SIZE]; +}; + +struct Unk08597C30 +{ + u8 unk0_0:5; + u8 unk0_5:3; + u8 unk1; + u8 unk2; + u8 unk3; +}; + EWRAM_DATA struct EasyChatScreen *gEasyChatScreen = NULL; -EWRAM_DATA void *gUnknown_0203A11C = 0; +EWRAM_DATA struct Unk203A11C *gUnknown_0203A11C = 0; EWRAM_DATA void *gUnknown_0203A120 = 0; static void sub_811A2C0(u8); @@ -103,10 +125,10 @@ static u8 sub_811BCC8(u8); static void sub_811BDF0(u8 *); void sub_811BF78(void); static bool8 sub_811BF8C(void); -bool8 sub_811BFA4(void); -void sub_811C13C(void); -/*static*/ void sub_811C158(u16); -/*static*/ bool8 sub_811C170(void); +static bool8 sub_811BFA4(void); +static void sub_811C13C(void); +static void sub_811C158(u16); +static bool8 sub_811C170(void); bool8 sub_811F28C(void); void sub_811F2B8(void); u8 sub_811F3AC(void); @@ -153,6 +175,87 @@ static u8 sub_811BA1C(void); static int sub_811BF20(void); static u16 sub_811BF40(void); u8 sub_811CE94(void); +void sub_811CF64(void); +void sub_811CF04(void); +void sub_811D60C(void); +void sub_811D424(u8 *); +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_811DE5C(u8, u8, u8, u8); +void sub_811E5D4(void); +void sub_811E720(void); +void sub_811E828(void); +static bool8 sub_811C2D4(void); +static bool8 sub_811C30C(void); +static bool8 sub_811C3E4(void); +static bool8 sub_811C48C(void); +static bool8 sub_811C404(void); +static bool8 sub_811C448(void); +static bool8 sub_811C4D0(void); +static bool8 sub_811C518(void); +static bool8 sub_811C554(void); +static bool8 sub_811C620(void); +static bool8 sub_811C830(void); +static bool8 sub_811C8F0(void); +static bool8 sub_811C99C(void); +static bool8 sub_811CA5C(void); +static bool8 sub_811C780(void); +static bool8 sub_811C78C(void); +static bool8 sub_811C7D4(void); +static bool8 sub_811CB18(void); +static bool8 sub_811CB98(void); +static bool8 sub_811CB24(void); +static bool8 sub_811CC90(void); +static bool8 sub_811CC08(void); +static bool8 sub_811C6C0(void); +static bool8 sub_811CD14(void); +static bool8 sub_811CD54(void); +static bool8 sub_811CD94(void); +static bool8 sub_811CDD4(void); +static bool8 sub_811CE14(void); +static bool8 sub_811CE54(void); +void sub_811DF60(u8, u8); +int sub_811E920(int); +void sub_811DF90(void); +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(int); +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); u8 *CopyEasyChatWordPadded(u8 *, u16, u16); extern const struct { @@ -164,6 +267,10 @@ extern const struct EasyChatScreenTemplate gEasyChatScreenTemplates[21]; extern const u8 gUnknown_08597748[][7]; extern const u16 gUnknown_08597764[]; extern const u16 gUnknown_0859776C[][2]; +extern const struct BgTemplate gUnknown_08597C54[4]; +extern const struct WindowTemplate gUnknown_08597C64[]; +extern const u32 gUnknown_08597B54[]; +extern const struct Unk08597C30 gUnknown_08597C30[]; void sub_811A20C(u8 kind, u16 *words, MainCallback callback, u8 sizeParam) { @@ -2213,3 +2320,870 @@ static bool8 sub_811BF8C(void) else return 1; } + +static bool8 sub_811BFA4(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_08597C54, ARRAY_COUNT(gUnknown_08597C54)); + SetBgTilemapBuffer(3, gUnknown_0203A11C->unkB00); + SetBgTilemapBuffer(1, gUnknown_0203A11C->unk300); + InitWindows(gUnknown_08597C64); + DeactivateAllTextPrinters(); + sub_811CF64(); + sub_811CF04(); + CpuFastFill(0, (void *)VRAM + 0x1000000, 0x400); + break; + case 1: + DecompressAndLoadBgGfxUsingHeap(3, gEasyChatWindow_Gfx, 0, 0, 0); + CopyToBgTilemapBuffer(3, gEasyChatWindow_Tilemap, 0, 0); + sub_811D60C(); + sub_811D424(gUnknown_0203A11C->unk300); + sub_811D230(); + sub_811E948(); + CopyBgTilemapBufferToVram(3); + break; + case 2: + DecompressAndLoadBgGfxUsingHeap(1, gUnknown_08597B54, 0, 0, 0); + CopyBgTilemapBufferToVram(1); + break; + case 3: + sub_811CFCC(); + sub_811D0BC(); + sub_811D2C8(); + sub_811D684(); + break; + case 4: + sub_811DE90(); + if (sub_811BA5C() != 16) + sub_811DEC4(); + break; + case 5: + if (IsDma3ManagerBusyWithBgCopy()) + { + return TRUE; + } + else + { + sub_811DE5C(0, 0, 0, 0); + SetGpuReg(REG_OFFSET_WININ, WIN_RANGE(0, 63)); + SetGpuReg(REG_OFFSET_WINOUT, WIN_RANGE(0, 59)); + ShowBg(3); + ShowBg(1); + ShowBg(2); + ShowBg(0); + sub_811E5D4(); + sub_811E720(); + sub_811E828(); + } + break; + default: + return FALSE; + } + + gUnknown_0203A11C->unk0++; + return TRUE; +} + +static void sub_811C13C(void) +{ + if (gUnknown_0203A11C) + FREE_AND_SET_NULL(gUnknown_0203A11C); +} + +static void sub_811C158(u16 arg0) +{ + gUnknown_0203A11C->unk4 = arg0; + gUnknown_0203A11C->unk0 = 0; + sub_811C170(); +} + +static bool8 sub_811C170(void) +{ + switch (gUnknown_0203A11C->unk4) + { + case 0: return FALSE; + case 1: return sub_811C2D4(); + case 2: return sub_811C30C(); + case 3: return sub_811C3E4(); + case 4: return sub_811C48C(); + case 5: return sub_811C404(); + case 6: return sub_811C448(); + case 7: return sub_811C4D0(); + case 8: return sub_811C518(); + case 9: return sub_811C554(); + case 10: return sub_811C620(); + case 11: return sub_811C830(); + case 12: return sub_811C8F0(); + case 13: return sub_811C99C(); + case 14: return sub_811CA5C(); + case 15: return sub_811C780(); + case 16: return sub_811C78C(); + case 17: return sub_811C7D4(); + case 18: return sub_811CB18(); + case 19: return sub_811CB98(); + case 20: return sub_811CB24(); + case 21: return sub_811CC90(); + case 22: return sub_811CC08(); + case 23: return sub_811C6C0(); + case 24: return FALSE; + case 25: return FALSE; + case 26: return FALSE; + case 27: return FALSE; + case 28: return FALSE; + case 29: return sub_811CD14(); + case 30: return sub_811CD54(); + case 31: return sub_811CD94(); + case 32: return sub_811CDD4(); + case 33: return sub_811CE14(); + case 34: return sub_811CE54(); + default: return FALSE; + } +} + +static bool8 sub_811C2D4(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811D2C8(); + gUnknown_0203A11C->unk0++; + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +static bool8 sub_811C30C(void) +{ + u8 i; + u16 *ecWordBuffer; + u16 *ecWord; + u8 var0; + u8 cursorColumn, cursorRow, numColumns; + s16 var1; + int stringWidth; + int trueStringWidth; + u8 var2; + u8 sp0[64]; + + ecWordBuffer = sub_811BA94(); + var0 = sub_811BA68(); + cursorColumn = sub_811BAB8(); + cursorRow = sub_811BAC4(); + numColumns = sub_811BAAC(); + ecWord = &ecWordBuffer[cursorRow * numColumns]; + var1 = 8 * gUnknown_08597C30[var0].unk0_0 + 13; + for (i = 0; i < cursorColumn; i++) + { + if (*ecWord == 0xFFFF) + { + stringWidth = 72; + } + else + { + CopyEasyChatWord(sp0, *ecWord); + stringWidth = GetStringWidth(1, sp0, 0); + } + + trueStringWidth = stringWidth + 17; + var1 += trueStringWidth; + ecWord++; + } + + var2 = 8 * (gUnknown_08597C30[var0].unk0_5 + cursorRow * 2); + sub_811DF60(var1, var2 + 8); + return FALSE; +} + +static bool8 sub_811C3E4(void) +{ + u8 var0 = sub_811E920(sub_811BAB8()); + sub_811DF60(var0, 96); + return FALSE; +} + +static bool8 sub_811C404(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811DF90(); + sub_811D104(2); + sub_811D214(1); + gUnknown_0203A11C->unk0++; + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +static bool8 sub_811C448(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811DF90(); + sub_811D104(3); + sub_811D214(0); + gUnknown_0203A11C->unk0++; + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +static bool8 sub_811C48C(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811DF90(); + sub_811D104(1); + sub_811D214(1); + gUnknown_0203A11C->unk0++; + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +static bool8 sub_811C4D0(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811DFB0(); + sub_811D104(0); + sub_811D2C8(); + ShowBg(0); + gUnknown_0203A11C->unk0++; + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +static bool8 sub_811C518(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811DFB0(); + sub_811D104(0); + sub_811D2C8(); + gUnknown_0203A11C->unk0++; + // Fall through + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +static bool8 sub_811C554(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811DF90(); + HideBg(0); + sub_811DE5C(0, 0, 0, 0); + sub_811D6D4(); + gUnknown_0203A11C->unk0++; + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + { + sub_811D9CC(0); + gUnknown_0203A11C->unk0++; + } + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy() && !sub_811DAA4()) + gUnknown_0203A11C->unk0++; + break; + case 3: + if (!IsDma3ManagerBusyWithBgCopy()) + { + sub_811E3AC(); + gUnknown_0203A11C->unk0++; + } + break; + case 4: + if (!sub_811E418()) + { + sub_811DFC8(); + sub_811E6E0(0); + sub_811E64C(); + gUnknown_0203A11C->unk0++; + return FALSE; + } + break; + default: + return FALSE; + } + + return TRUE; +} + +static bool8 sub_811C620(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811E050(); + sub_811E4AC(); + sub_811E6B0(); + gUnknown_0203A11C->unk0++; + break; + case 1: + if (sub_811E4D0() == TRUE) + break; + + sub_811D9CC(1); + gUnknown_0203A11C->unk0++; + // Fall through + case 2: + if (!sub_811DAA4()) + gUnknown_0203A11C->unk0++; + break; + case 3: + if (!IsDma3ManagerBusyWithBgCopy()) + { + sub_811DFB0(); + ShowBg(0); + gUnknown_0203A11C->unk0++; + } + break; + case 4: + return FALSE; + } + + return TRUE; +} + +static bool8 sub_811C6C0(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811E050(); + sub_811E6B0(); + sub_811E55C(); + sub_811D9CC(5); + gUnknown_0203A11C->unk0++; + break; + case 1: + if (!sub_811DAA4() && !sub_811E5B8()) + { + sub_811D6D4(); + gUnknown_0203A11C->unk0++; + } + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy()) + { + sub_811D9CC(6); + sub_811E578(); + gUnknown_0203A11C->unk0++; + } + break; + case 3: + if (!sub_811DAA4() && !sub_811E5B8()) + { + sub_811E64C(); + sub_811DFC8(); + gUnknown_0203A11C->unk0++; + return FALSE; + } + break; + case 4: + return FALSE; + } + + return TRUE; +} + +static bool8 sub_811C780(void) +{ + sub_811E088(); + return FALSE; +} + +static bool8 sub_811C78C(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811DDAC(1, 4); + gUnknown_0203A11C->unk0++; + // Fall through + case 1: + if (!sub_811DE10()) + { + sub_811E088(); + sub_811E64C(); + return FALSE; + } + break; + } + + return TRUE; +} + +static bool8 sub_811C7D4(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811DDAC(-1, 4); + gUnknown_0203A11C->unk0++; + // Fall through + case 1: + if (!sub_811DE10()) + { + sub_811E64C(); + gUnknown_0203A11C->unk0++; + return FALSE; + } + break; + case 2: + return FALSE; + } + + return TRUE; +} + +static bool8 sub_811C830(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811E050(); + sub_811E4AC(); + sub_811E6B0(); + gUnknown_0203A11C->unk0++; + break; + case 1: + if (!sub_811E4D0()) + { + sub_811D9B4(); + gUnknown_0203A11C->unk0++; + } + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy()) + { + sub_811D9CC(2); + gUnknown_0203A11C->unk0++; + } + break; + case 3: + if (!sub_811DAA4()) + { + sub_811D698(2); + gUnknown_0203A11C->unk0++; + } + break; + case 4: + if (!IsDma3ManagerBusyWithBgCopy()) + { + sub_811E288(); + sub_811E6E0(1); + sub_811E64C(); + sub_811E794(); + gUnknown_0203A11C->unk0++; + return FALSE; + } + break; + case 5: + return FALSE; + } + + return TRUE; +} + +static bool8 sub_811C8F0(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811D2C8(); + gUnknown_0203A11C->unk0++; + break; + case 1: + sub_811E380(); + sub_811E6B0(); + sub_811E7F8(); + sub_811D9B4(); + gUnknown_0203A11C->unk0++; + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy()) + { + sub_811D9CC(3); + gUnknown_0203A11C->unk0++; + } + break; + case 3: + if (!sub_811DAA4()) + { + ShowBg(0); + gUnknown_0203A11C->unk0++; + } + break; + case 4: + if (!IsDma3ManagerBusyWithBgCopy()) + { + sub_811DFB0(); + gUnknown_0203A11C->unk0++; + return FALSE; + } + break; + case 5: + return FALSE; + } + + return TRUE; +} + +static bool8 sub_811C99C(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811D2C8(); + gUnknown_0203A11C->unk0++; + break; + case 1: + sub_811E380(); + sub_811E6B0(); + sub_811E7F8(); + sub_811D9B4(); + gUnknown_0203A11C->unk0++; + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy()) + { + sub_811D9CC(3); + gUnknown_0203A11C->unk0++; + } + break; + case 3: + if (!sub_811DAA4()) + { + sub_811D104(3); + gUnknown_0203A11C->unk0++; + } + break; + case 4: + if (!IsDma3ManagerBusyWithBgCopy()) + { + ShowBg(0); + gUnknown_0203A11C->unk0++; + } + break; + case 5: + if (!IsDma3ManagerBusyWithBgCopy()) + { + sub_811DFB0(); + gUnknown_0203A11C->unk0++; + return FALSE; + } + break; + case 6: + return FALSE; + } + + return TRUE; +} + +static bool8 sub_811CA5C(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811E380(); + sub_811E6B0(); + sub_811E7F8(); + sub_811D9B4(); + gUnknown_0203A11C->unk0++; + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + { + sub_811D9CC(4); + gUnknown_0203A11C->unk0++; + } + break; + case 2: + if (!sub_811DAA4()) + { + sub_811D6D4(); + gUnknown_0203A11C->unk0++; + } + break; + case 3: + if (!IsDma3ManagerBusyWithBgCopy()) + { + sub_811E3AC(); + gUnknown_0203A11C->unk0++; + } + break; + case 4: + if (!sub_811E418()) + { + sub_811DFC8(); + sub_811E6E0(0); + sub_811E64C(); + gUnknown_0203A11C->unk0++; + return FALSE; + } + break; + } + + return TRUE; +} + +static bool8 sub_811CB18(void) +{ + sub_811E30C(); + return FALSE; +} + +static bool8 sub_811CB24(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811D7A4(); + gUnknown_0203A11C->unk0++; + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + { + sub_811DDAC(1, 4); + gUnknown_0203A11C->unk0++; + } + break; + case 2: + if (!sub_811DE10()) + { + sub_811E30C(); + sub_811E64C(); + sub_811E794(); + gUnknown_0203A11C->unk0++; + return FALSE; + } + break; + case 3: + return FALSE; + } + + return TRUE; +} + +static bool8 sub_811CB98(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811D7C8(); + gUnknown_0203A11C->unk0++; + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + { + sub_811DDAC(-1, 4); + gUnknown_0203A11C->unk0++; + } + break; + case 2: + if (!sub_811DE10()) + { + sub_811E64C(); + sub_811E794(); + gUnknown_0203A11C->unk0++; + return FALSE; + } + break; + case 3: + return FALSE; + } + + return TRUE; +} + +static bool8 sub_811CC08(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811D7EC(); + gUnknown_0203A11C->unk0++; + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + { + s16 var0 = sub_811BBDC() - sub_811DE48(); + sub_811DDAC(var0, 8); + gUnknown_0203A11C->unk0++; + } + break; + case 2: + if (!sub_811DE10()) + { + sub_811E30C(); + sub_811E64C(); + sub_811E794(); + gUnknown_0203A11C->unk0++; + return FALSE; + } + break; + case 3: + return FALSE; + } + + return TRUE; +} + +static bool8 sub_811CC90(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811D830(); + gUnknown_0203A11C->unk0++; + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + { + s16 var0 = sub_811BBDC() - sub_811DE48(); + sub_811DDAC(var0, 8); + gUnknown_0203A11C->unk0++; + } + break; + case 2: + if (!sub_811DE10()) + { + sub_811E64C(); + sub_811E794(); + gUnknown_0203A11C->unk0++; + return FALSE; + } + break; + case 3: + return FALSE; + } + + return TRUE; +} + +static bool8 sub_811CD14(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811DF90(); + sub_811D104(4); + gUnknown_0203A11C->unk0++; + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +static bool8 sub_811CD54(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811DF90(); + sub_811D104(5); + gUnknown_0203A11C->unk0++; + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +static bool8 sub_811CD94(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811DF90(); + sub_811D104(6); + gUnknown_0203A11C->unk0++; + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +static bool8 sub_811CDD4(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811DF90(); + sub_811D104(7); + gUnknown_0203A11C->unk0++; + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +static bool8 sub_811CE14(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811DF90(); + sub_811D104(8); + gUnknown_0203A11C->unk0++; + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +static bool8 sub_811CE54(void) +{ + switch (gUnknown_0203A11C->unk0) + { + case 0: + sub_811DF90(); + sub_811D104(9); + gUnknown_0203A11C->unk0++; + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +}