diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2020-01-25 10:47:17 -0500 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2020-01-25 10:47:17 -0500 |
commit | f249df41e3620c210841b57b7520f53b692fd411 (patch) | |
tree | 2bf4283fe0a709e2814f1c250dd0acb82c0408da | |
parent | c99246fccfc6f04f015d0b5b2850fa7d01914961 (diff) |
union_room_chat_display through sub_812A1B8
-rw-r--r-- | asm/union_room_chat.s | 929 | ||||
-rw-r--r-- | data/union_room_chat.s | 128 | ||||
-rw-r--r-- | include/union_room_chat.h | 7 | ||||
-rw-r--r-- | include/union_room_chat_display.h | 12 | ||||
-rw-r--r-- | include/union_room_chat_objects.h | 16 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/union_room_chat.c | 8 | ||||
-rw-r--r-- | src/union_room_chat_display.c | 656 |
8 files changed, 693 insertions, 1065 deletions
diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s index 422a8786b..7a9d41ef3 100644 --- a/asm/union_room_chat.s +++ b/asm/union_room_chat.s @@ -5,935 +5,6 @@ .text - thumb_func_start sub_8129B14 -sub_8129B14: @ 8129B14 - push {r4,lr} - ldr r4, _08129B60 @ =gUnknown_203B0E4 - ldr r0, _08129B64 @ =0x00002168 - bl Alloc - str r0, [r4] - cmp r0, 0 - beq _08129B70 - bl sub_812AE70 - cmp r0, 0 - beq _08129B70 - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _08129B68 @ =gUnknown_845AA84 - movs r0, 0 - movs r2, 0x4 - bl InitBgsFromTemplates - ldr r0, _08129B6C @ =gUnknown_845AA94 - bl InitWindows - bl ResetTempTileDataBuffers - bl sub_812AD50 - ldr r0, [r4] - bl sub_8129BB8 - bl sub_8129BC4 - movs r0, 0 - movs r1, 0 - bl sub_8129C34 - movs r0, 0x1 - b _08129B72 - .align 2, 0 -_08129B60: .4byte gUnknown_203B0E4 -_08129B64: .4byte 0x00002168 -_08129B68: .4byte gUnknown_845AA84 -_08129B6C: .4byte gUnknown_845AA94 -_08129B70: - movs r0, 0 -_08129B72: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8129B14 - - thumb_func_start sub_8129B78 -sub_8129B78: @ 8129B78 - push {lr} - movs r0, 0 - bl sub_8129C8C - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_8129B78 - - thumb_func_start sub_8129B88 -sub_8129B88: @ 8129B88 - push {r4,lr} - bl sub_812AEB0 - ldr r4, _08129BB0 @ =gUnknown_203B0E4 - ldr r0, [r4] - cmp r0, 0 - beq _08129B9E - bl Free - movs r0, 0 - str r0, [r4] -_08129B9E: - bl FreeAllWindowBuffers - ldr r1, _08129BB4 @ =gScanlineEffect - movs r0, 0x3 - strb r0, [r1, 0x15] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08129BB0: .4byte gUnknown_203B0E4 -_08129BB4: .4byte gScanlineEffect - thumb_func_end sub_8129B88 - - thumb_func_start sub_8129BB8 -sub_8129BB8: @ 8129BB8 - movs r2, 0 - movs r1, 0xFF - strh r1, [r0, 0x18] - strh r1, [r0, 0x1E] - strh r2, [r0, 0x1A] - bx lr - thumb_func_end sub_8129BB8 - - thumb_func_start sub_8129BC4 -sub_8129BC4: @ 8129BC4 - push {r4,r5,lr} - ldr r1, _08129BF4 @ =gUnknown_203B0E4 - ldr r0, [r1] - cmp r0, 0 - beq _08129BEC - movs r2, 0 - adds r4, r1, 0 - ldr r5, _08129BF8 @ =sub_812A420 - movs r3, 0 -_08129BD6: - ldr r0, [r4] - lsls r1, r2, 3 - adds r0, r1 - str r5, [r0] - strb r3, [r0, 0x4] - ldr r0, [r4] - adds r0, r1 - strb r3, [r0, 0x5] - adds r2, 0x1 - cmp r2, 0x2 - ble _08129BD6 -_08129BEC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08129BF4: .4byte gUnknown_203B0E4 -_08129BF8: .4byte sub_812A420 - thumb_func_end sub_8129BC4 - - thumb_func_start sub_8129BFC -sub_8129BFC: @ 8129BFC - push {r4-r6,lr} - ldr r1, _08129C30 @ =gUnknown_203B0E4 - ldr r0, [r1] - cmp r0, 0 - beq _08129C2A - movs r5, 0 - adds r6, r1, 0 -_08129C0A: - ldr r0, [r6] - lsls r4, r5, 3 - adds r1, r0, r4 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _08129C24 - adds r0, r1, 0x5 - ldr r1, [r1] - bl _call_via_r1 - ldr r1, [r6] - adds r1, r4 - strb r0, [r1, 0x4] -_08129C24: - adds r5, 0x1 - cmp r5, 0x2 - ble _08129C0A -_08129C2A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08129C30: .4byte gUnknown_203B0E4 - thumb_func_end sub_8129BFC - - thumb_func_start sub_8129C34 -sub_8129C34: @ 8129C34 - push {r4-r7,lr} - lsls r0, 16 - lsrs r6, r0, 16 - lsls r1, 24 - ldr r3, _08129C70 @ =gUnknown_203B0E4 - ldr r0, [r3] - lsrs r1, 21 - adds r0, r1 - ldr r2, _08129C74 @ =sub_812A420 - str r2, [r0] - movs r4, 0 - adds r5, r3, 0 - adds r3, r1, 0 - mov r12, r4 - ldr r1, _08129C78 @ =gUnknown_845AABC - movs r7, 0x1 - adds r2, r1, 0x4 -_08129C56: - ldrh r0, [r1] - cmp r0, r6 - bne _08129C7C - ldr r1, [r5] - adds r1, r3 - ldr r0, [r2] - str r0, [r1] - strb r7, [r1, 0x4] - ldr r0, [r5] - adds r0, r3 - mov r1, r12 - strb r1, [r0, 0x5] - b _08129C86 - .align 2, 0 -_08129C70: .4byte gUnknown_203B0E4 -_08129C74: .4byte sub_812A420 -_08129C78: .4byte gUnknown_845AABC -_08129C7C: - adds r1, 0x8 - adds r2, 0x8 - adds r4, 0x1 - cmp r4, 0x14 - bls _08129C56 -_08129C86: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8129C34 - - thumb_func_start sub_8129C8C -sub_8129C8C: @ 8129C8C - lsls r0, 24 - ldr r1, _08129C9C @ =gUnknown_203B0E4 - ldr r1, [r1] - lsrs r0, 21 - adds r1, r0 - ldrb r0, [r1, 0x4] - bx lr - .align 2, 0 -_08129C9C: .4byte gUnknown_203B0E4 - thumb_func_end sub_8129C8C - - thumb_func_start sub_8129CA0 -sub_8129CA0: @ 8129CA0 - push {r4,lr} - adds r4, r0, 0 - bl FreeTempTileDataBuffersIfPossible - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08129D36 - ldrb r0, [r4] - cmp r0, 0x6 - bhi _08129D2C - lsls r0, 2 - ldr r1, _08129CC0 @ =_08129CC4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08129CC0: .4byte _08129CC4 - .align 2, 0 -_08129CC4: - .4byte _08129CE0 - .4byte _08129CEA - .4byte _08129CF0 - .4byte _08129CF6 - .4byte _08129CFC - .4byte _08129D02 - .4byte _08129D14 -_08129CE0: - bl sub_812AAD4 - bl sub_812AB8C - b _08129D30 -_08129CEA: - bl sub_812ABD8 - b _08129D30 -_08129CF0: - bl sub_812AC08 - b _08129D30 -_08129CF6: - bl sub_812AC58 - b _08129D30 -_08129CFC: - bl sub_812AC9C - b _08129D30 -_08129D02: - bl sub_812ACC0 - bl sub_812ACEC - bl sub_812AD20 - bl sub_812AD04 - b _08129D30 -_08129D14: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08129D30 - bl sub_812AEC8 - bl sub_812B048 - bl sub_812B100 - b _08129D30 -_08129D2C: - movs r0, 0 - b _08129D38 -_08129D30: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] -_08129D36: - movs r0, 0x1 -_08129D38: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8129CA0 - - thumb_func_start sub_8129D40 -sub_8129D40: @ 8129D40 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _08129D50 - cmp r0, 0x1 - beq _08129D5E - b _08129D68 -_08129D50: - bl sub_812AA10 - movs r0, 0x3 - movs r1, 0x3 - bl CopyWindowToVram - b _08129D68 -_08129D5E: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _08129D70 -_08129D68: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - movs r0, 0x1 -_08129D70: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8129D40 - - thumb_func_start sub_8129D78 -sub_8129D78: @ 8129D78 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _08129D88 - cmp r0, 0x1 - beq _08129D96 - b _08129DA0 -_08129D88: - bl sub_812AA64 - movs r0, 0x3 - movs r1, 0x3 - bl CopyWindowToVram - b _08129DA0 -_08129D96: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _08129DA8 -_08129DA0: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - movs r0, 0x1 -_08129DA8: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8129D78 - - thumb_func_start sub_8129DB0 -sub_8129DB0: @ 8129DB0 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0x1 - beq _08129DE6 - cmp r0, 0x1 - bgt _08129DC4 - cmp r0, 0 - beq _08129DCA - b _08129E0C -_08129DC4: - cmp r0, 0x2 - beq _08129DF2 - b _08129E0C -_08129DCA: - movs r0, 0x1 - bl sub_812AEFC - bl sub_812A980 - cmp r0, 0 - bne _08129E12 - bl sub_812A804 - movs r0, 0x2 - movs r1, 0x2 - bl CopyWindowToVram - b _08129E0C -_08129DE6: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - beq _08129E0C - b _08129E12 -_08129DF2: - bl sub_812A9C8 - cmp r0, 0 - bne _08129E12 - bl sub_812AF1C - movs r0, 0 - bl sub_812AEFC - bl sub_812B160 - movs r0, 0 - b _08129E14 -_08129E0C: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] -_08129E12: - movs r0, 0x1 -_08129E14: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8129DB0 - - thumb_func_start sub_8129E1C -sub_8129E1C: @ 8129E1C - push {lr} - bl sub_812AF1C - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_8129E1C - - thumb_func_start sub_8129E28 -sub_8129E28: @ 8129E28 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _08129E38 - cmp r0, 0x1 - beq _08129E5C - b _08129E66 -_08129E38: - movs r0, 0 - movs r1, 0 - bl sub_812A578 - movs r0, 0x17 - movs r1, 0xB - movs r2, 0x1 - bl sub_812A424 - ldr r0, _08129E58 @ =gUnknown_203B0E4 - ldr r0, [r0] - ldrb r0, [r0, 0x1E] - movs r1, 0x3 - bl CopyWindowToVram - b _08129E66 - .align 2, 0 -_08129E58: .4byte gUnknown_203B0E4 -_08129E5C: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _08129E6E -_08129E66: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - movs r0, 0x1 -_08129E6E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8129E28 - - thumb_func_start sub_8129E74 -sub_8129E74: @ 8129E74 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _08129E84 - cmp r0, 0x1 - beq _08129E94 - b _08129EAA -_08129E84: - bl sub_812A6F4 - bl sub_812A51C - movs r0, 0 - bl CopyBgTilemapBufferToVram - b _08129EAA -_08129E94: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08129EB0 - bl sub_812A728 - bl sub_812A544 - movs r0, 0 - b _08129EB2 -_08129EAA: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] -_08129EB0: - movs r0, 0x1 -_08129EB2: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8129E74 - - thumb_func_start sub_8129EB8 -sub_8129EB8: @ 8129EB8 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _08129ECA - cmp r0, 0x1 - beq _08129F02 - b _08129F14 -_08129ECA: - add r1, sp, 0x8 - add r0, sp, 0x4 - bl sub_8129730 - ldr r0, [sp, 0x4] - lsls r0, 16 - lsrs r0, 16 - ldr r1, [sp, 0x8] - lsls r1, 16 - lsrs r1, 16 - movs r2, 0 - bl sub_812A74C - bl sub_8129714 - adds r1, r0, 0 - movs r0, 0x2 - str r0, [sp] - movs r0, 0 - movs r2, 0x3 - movs r3, 0x1 - bl sub_812A778 - movs r0, 0x1 - movs r1, 0x2 - bl CopyWindowToVram - b _08129F14 -_08129F02: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08129F1A - bl sub_812B160 - movs r0, 0 - b _08129F1C -_08129F14: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] -_08129F1A: - movs r0, 0x1 -_08129F1C: - add sp, 0xC - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8129EB8 - - thumb_func_start sub_8129F24 -sub_8129F24: @ 8129F24 - push {r4-r6,lr} - sub sp, 0x4 - adds r6, r0, 0 - ldrb r0, [r6] - cmp r0, 0x1 - beq _08129F80 - cmp r0, 0x1 - bgt _08129F3A - cmp r0, 0 - beq _08129F44 - b _08129FBA -_08129F3A: - cmp r0, 0x2 - beq _08129FA4 - cmp r0, 0x3 - beq _08129FB6 - b _08129FBA -_08129F44: - bl sub_8129788 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - bl sub_8129758 - adds r5, r0, 0 - bl StringLength_Multibyte - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - movs r2, 0x66 - bl sub_812A74C - movs r0, 0x5 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0 - movs r3, 0x4 - bl sub_812A778 - movs r0, 0x1 - movs r1, 0x2 - bl CopyWindowToVram - b _08129FBA -_08129F80: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08129FC0 - movs r0, 0x1 - movs r1, 0x10 - bl sub_812A578 - ldr r0, _08129FA0 @ =gUnknown_203B0E4 - ldr r0, [r0] - ldrb r0, [r0, 0x1E] - movs r1, 0x3 - bl CopyWindowToVram - b _08129FBA - .align 2, 0 -_08129FA0: .4byte gUnknown_203B0E4 -_08129FA4: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08129FC0 - movs r0, 0x1 - bl sub_812AF8C - b _08129FBA -_08129FB6: - movs r0, 0 - b _08129FC2 -_08129FBA: - ldrb r0, [r6] - adds r0, 0x1 - strb r0, [r6] -_08129FC0: - movs r0, 0x1 -_08129FC2: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8129F24 - - thumb_func_start sub_8129FCC -sub_8129FCC: @ 8129FCC - push {r4-r6,lr} - sub sp, 0x4 - adds r6, r0, 0 - ldrb r0, [r6] - cmp r0, 0x1 - beq _0812A028 - cmp r0, 0x1 - bgt _08129FE2 - cmp r0, 0 - beq _08129FEC - b _0812A062 -_08129FE2: - cmp r0, 0x2 - beq _0812A048 - cmp r0, 0x3 - beq _0812A05E - b _0812A062 -_08129FEC: - bl sub_8129788 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - bl sub_8129758 - adds r5, r0, 0 - bl StringLength_Multibyte - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - movs r2, 0 - bl sub_812A74C - movs r0, 0x2 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - movs r3, 0x1 - bl sub_812A778 - movs r0, 0x1 - movs r1, 0x2 - bl CopyWindowToVram - b _0812A062 -_0812A028: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0812A068 - bl sub_812A6F4 - ldr r0, _0812A044 @ =gUnknown_203B0E4 - ldr r0, [r0] - ldrb r0, [r0, 0x1E] - movs r1, 0x3 - bl CopyWindowToVram - b _0812A062 - .align 2, 0 -_0812A044: .4byte gUnknown_203B0E4 -_0812A048: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0812A068 - movs r0, 0 - bl sub_812AF8C - bl sub_812A728 - b _0812A062 -_0812A05E: - movs r0, 0 - b _0812A06A -_0812A062: - ldrb r0, [r6] - adds r0, 0x1 - strb r0, [r6] -_0812A068: - movs r0, 0x1 -_0812A06A: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8129FCC - - thumb_func_start sub_812A074 -sub_812A074: @ 812A074 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _0812A084 - cmp r0, 0x1 - beq _0812A098 - b _0812A0A6 -_0812A084: - bl sub_812A804 - movs r0, 0x2 - movs r1, 0x2 - bl CopyWindowToVram - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _0812A0A6 -_0812A098: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0812A0A6 - movs r0, 0 - b _0812A0A8 -_0812A0A6: - movs r0, 0x1 -_0812A0A8: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_812A074 - - thumb_func_start sub_812A0B0 -sub_812A0B0: @ 812A0B0 - push {r4-r6,lr} - adds r6, r0, 0 - ldrb r0, [r6] - cmp r0, 0x4 - bhi _0812A182 - lsls r0, 2 - ldr r1, _0812A0C4 @ =_0812A0C8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0812A0C4: .4byte _0812A0C8 - .align 2, 0 -_0812A0C8: - .4byte _0812A0DC - .4byte _0812A108 - .4byte _0812A138 - .4byte _0812A15C - .4byte _0812A126 -_0812A0DC: - ldr r0, _0812A104 @ =gUnknown_203B0E4 - ldr r0, [r0] - ldrh r5, [r0, 0x1A] - bl sub_81297C4 - adds r4, r0, 0 - bl sub_81297D0 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_812AA78 - movs r0, 0 - movs r1, 0x2 - bl CopyWindowToVram - b _0812A17C - .align 2, 0 -_0812A104: .4byte gUnknown_203B0E4 -_0812A108: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - bne _0812A182 - ldr r0, _0812A12C @ =gUnknown_203B0E4 - ldr r1, [r0] - ldrh r0, [r1, 0x1A] - cmp r0, 0x8 - bhi _0812A130 - adds r0, 0x1 - strh r0, [r1, 0x1A] - movs r0, 0x4 - strb r0, [r6] -_0812A126: - movs r0, 0 - b _0812A184 - .align 2, 0 -_0812A12C: .4byte gUnknown_203B0E4 -_0812A130: - strh r2, [r1, 0x1C] - ldrb r0, [r6] - adds r0, 0x1 - strb r0, [r6] -_0812A138: - movs r0, 0 - movs r1, 0 - movs r2, 0x5 - movs r3, 0x11 - bl ScrollWindow - movs r0, 0 - movs r1, 0x2 - bl CopyWindowToVram - ldr r0, _0812A178 @ =gUnknown_203B0E4 - ldr r1, [r0] - ldrh r0, [r1, 0x1C] - adds r0, 0x1 - strh r0, [r1, 0x1C] - ldrb r0, [r6] - adds r0, 0x1 - strb r0, [r6] -_0812A15C: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0812A182 - ldr r0, _0812A178 @ =gUnknown_203B0E4 - ldr r0, [r0] - ldrh r0, [r0, 0x1C] - cmp r0, 0x2 - bhi _0812A17C - ldrb r0, [r6] - subs r0, 0x1 - b _0812A180 - .align 2, 0 -_0812A178: .4byte gUnknown_203B0E4 -_0812A17C: - ldrb r0, [r6] - adds r0, 0x1 -_0812A180: - strb r0, [r6] -_0812A182: - movs r0, 0x1 -_0812A184: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_812A0B0 - - thumb_func_start sub_812A18C -sub_812A18C: @ 812A18C - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _0812A19C - cmp r0, 0x1 - beq _0812A1A8 - b _0812A1AE -_0812A19C: - bl sub_812AFC0 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _0812A1AE -_0812A1A8: - bl sub_812AFFC - b _0812A1B0 -_0812A1AE: - movs r0, 0x1 -_0812A1B0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_812A18C - - thumb_func_start sub_812A1B8 -sub_812A1B8: @ 812A1B8 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _0812A1C8 - cmp r0, 0x1 - beq _0812A1E8 - b _0812A1F2 -_0812A1C8: - movs r0, 0x3 - movs r1, 0x10 - bl sub_812A578 - ldr r0, _0812A1E4 @ =gUnknown_203B0E4 - ldr r0, [r0] - ldrb r0, [r0, 0x1E] - movs r1, 0x3 - bl CopyWindowToVram - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _0812A1F2 - .align 2, 0 -_0812A1E4: .4byte gUnknown_203B0E4 -_0812A1E8: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _0812A1F4 -_0812A1F2: - movs r0, 0x1 -_0812A1F4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_812A1B8 - thumb_func_start sub_812A1FC sub_812A1FC: @ 812A1FC push {r4,lr} diff --git a/data/union_room_chat.s b/data/union_room_chat.s index 0a51e90a4..d79974946 100644 --- a/data/union_room_chat.s +++ b/data/union_room_chat.s @@ -6,134 +6,6 @@ .section .rodata .align 2 -gUnknown_845AA24:: @ 845AA24 - .incbin "graphics/union_room_chat/unk_845AA24.gbapal" - -gUnknown_845AA44:: @ 845AA44 - .incbin "graphics/union_room_chat/unk_845AA44.gbapal" - -gUnknown_845AA64:: @ 845AA64 - .incbin "graphics/union_room_chat/unk_845AA64.gbapal" - -gUnknown_845AA84:: @ 845AA84 - .4byte 0x00000070 - @ { - @ .bg = 0, - @ .charBaseIndex = 0, - @ .mapBaseIndex = 7, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 0, - @ .baseTile = 0x0000 - @ } - .4byte 0x000011fd - @ { - @ .bg = 1, - @ .charBaseIndex = 3, - @ .mapBaseIndex = 31, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 1, - @ .baseTile = 0x0000 - @ } - .4byte 0x0000217a - @ { - @ .bg = 2, - @ .charBaseIndex = 2, - @ .mapBaseIndex = 23, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 2, - @ .baseTile = 0x0000 - @ } - .4byte 0x000070f7 - @ { - @ .bg = 3, - @ .charBaseIndex = 1, - @ .mapBaseIndex = 15, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 3, - @ .baseTile = 0x0001 - @ } - -gUnknown_845AA94:: @ 845AA94 - .byte 3, 8, 1, 21, 19, 15 - .2byte 0x0001 - .byte 1, 9, 18, 15, 2, 12 - .2byte 0x007a - .byte 1, 0, 2, 6, 15, 7 - .2byte 0x0020 - .byte 0, 1, 2, 7, 9, 14 - .2byte 0x0013 - .byte 255, 0, 0, 0, 0, 0 - .2byte 0x0000 - -gUnknown_845AABC:: @ 845AABC - .2byte 0x00 - .align 2 - .4byte sub_8129CA0 - .2byte 0x03 - .align 2 - .4byte sub_8129D40 - .2byte 0x04 - .align 2 - .4byte sub_8129D78 - .2byte 0x05 - .align 2 - .4byte sub_8129DB0 - .2byte 0x01 - .align 2 - .4byte sub_8129E1C - .2byte 0x06 - .align 2 - .4byte sub_8129E28 - .2byte 0x07 - .align 2 - .4byte sub_8129E74 - .2byte 0x08 - .align 2 - .4byte sub_8129EB8 - .2byte 0x09 - .align 2 - .4byte sub_8129F24 - .2byte 0x0a - .align 2 - .4byte sub_8129FCC - .2byte 0x0b - .align 2 - .4byte sub_812A074 - .2byte 0x0c - .align 2 - .4byte sub_812A0B0 - .2byte 0x02 - .align 2 - .4byte sub_812A18C - .2byte 0x0d - .align 2 - .4byte sub_812A1B8 - .2byte 0x12 - .align 2 - .4byte sub_812A1FC - .2byte 0x13 - .align 2 - .4byte sub_812A240 - .2byte 0x0e - .align 2 - .4byte sub_812A294 - .2byte 0x0f - .align 2 - .4byte sub_812A2E4 - .2byte 0x10 - .align 2 - .4byte sub_812A334 - .2byte 0x11 - .align 2 - .4byte sub_812A378 - .2byte 0x14 - .align 2 - .4byte sub_812A3D0 - gUnknown_845AB64:: @ 845AB64 .4byte gUnknown_841B366 .byte 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00 diff --git a/include/union_room_chat.h b/include/union_room_chat.h index 66daac376..3488e71bc 100644 --- a/include/union_room_chat.h +++ b/include/union_room_chat.h @@ -1,8 +1,13 @@ #ifndef GUARD_UNION_ROOM_CHAT_H #define GUARD_UNION_ROOM_CHAT_H -void sub_801DD98(void); void sub_8128420(void); +u8 *sub_8129714(void); +void sub_8129730(u32 *a0, u32 *a1); +u8 *sub_8129758(void); +u16 sub_8129788(void); +u8 *sub_81297C4(void); +u16 sub_81297D0(void); void copy_strings_to_sav1(void); #endif // GUARD_UNION_ROOM_CHAT_H diff --git a/include/union_room_chat_display.h b/include/union_room_chat_display.h new file mode 100644 index 000000000..597296869 --- /dev/null +++ b/include/union_room_chat_display.h @@ -0,0 +1,12 @@ +#ifndef GUARD_UNION_ROOM_CHAT_DISPLAY_H +#define GUARD_UNION_ROOM_CHAT_DISPLAY_H + +bool8 sub_8129B14(void); +bool32 sub_8129B78(void); +void sub_8129B88(void); +void sub_8129BFC(void); +void sub_8129C34(u16 a0, u8 a1); +u8 sub_8129C8C(u8 a0); +s8 sub_812A568(void); + +#endif //GUARD_UNION_ROOM_CHAT_DISPLAY_H diff --git a/include/union_room_chat_objects.h b/include/union_room_chat_objects.h new file mode 100644 index 000000000..41db4d3a4 --- /dev/null +++ b/include/union_room_chat_objects.h @@ -0,0 +1,16 @@ +#ifndef GUARD_UNION_ROOM_CHAT_OBJECTS_H +#define GUARD_UNION_ROOM_CHAT_OBJECTS_H + +bool32 sub_812AE70(void); +void sub_812AEB0(void); +void sub_812AEC8(void); +void sub_812AEFC(bool8 invisible); +void sub_812AF1C(void); +void sub_812AF8C(u32 idx); +void sub_812AFC0(void); +bool32 sub_812AFFC(void); +void sub_812B048(void); +void sub_812B100(void); +void sub_812B160(void); + +#endif //GUARD_UNION_ROOM_CHAT_OBJECTS_H diff --git a/ld_script.txt b/ld_script.txt index c21f61f53..c02fc0f08 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -247,6 +247,7 @@ SECTIONS { asm/pokemon_special_anim.o(.text); src/party_menu.o(.text); src/union_room_chat.o(.text); + src/union_room_chat_display.o(.text); asm/union_room_chat.o(.text); src/help_system_812B1E0.o(.text); src/quest_log_battle.o(.text); @@ -536,6 +537,7 @@ SECTIONS { data/pokemon_special_anim.o(.rodata); src/party_menu.o(.rodata); src/union_room_chat.o(.rodata); + src/union_room_chat_display.o(.rodata); data/union_room_chat.o(.rodata); src/help_system_812B1E0.o(.rodata); src/fame_checker.o(.rodata); diff --git a/src/union_room_chat.c b/src/union_room_chat.c index abd763367..936803f80 100644 --- a/src/union_room_chat.c +++ b/src/union_room_chat.c @@ -13,6 +13,7 @@ #include "scanline_effect.h" #include "strings.h" #include "task.h" +#include "union_room_chat_display.h" #include "data_8479668.h" #include "constants/songs.h" @@ -89,13 +90,6 @@ void sub_81295EC(u8 *ptr); void sub_8129614(u8 *ptr); u8 *sub_8129758(void); void sub_81298F8(u8 taskId); -void sub_8129B14(void); -bool32 sub_8129B78(void); -void sub_8129B88(void); -void sub_8129BFC(void); -void sub_8129C34(u16 a0, u8 a1); -u8 sub_8129C8C(u8 a0); -s8 sub_812A568(void); static void (*const gUnknown_845A880[])(void) = { sub_8128640, diff --git a/src/union_room_chat_display.c b/src/union_room_chat_display.c new file mode 100644 index 000000000..993481d3d --- /dev/null +++ b/src/union_room_chat_display.c @@ -0,0 +1,656 @@ +#include "global.h" +#include "gflib.h" +#include "new_menu_helpers.h" +#include "scanline_effect.h" +#include "union_room_chat.h" +#include "union_room_chat_display.h" +#include "union_room_chat_objects.h" + +struct UnionRoomChat2_Unk0 +{ + bool32 (*unk0)(u8 *); + u8 unk4; + u8 unk5; +}; + +struct UnionRoomChat2 +{ + struct UnionRoomChat2_Unk0 unk0[3]; + u16 unk18; + u16 unk1A; + u16 unk1C; + u16 unk1E; + s16 unk20; + u8 unk22[0x106]; + u8 unk128[BG_SCREEN_SIZE]; + u8 unk928[BG_SCREEN_SIZE]; + u8 unk1128[BG_SCREEN_SIZE]; + u8 unk1928[BG_SCREEN_SIZE]; + u8 unk2128[0x20]; + u8 unk2148[0x20]; +}; + +struct Unk845AABC +{ + u16 unk0; + bool32 (*unk4)(u8 *); +}; + +EWRAM_DATA struct UnionRoomChat2 * gUnknown_203B0E4 = NULL; + +void sub_8129BB8(struct UnionRoomChat2 * ptr); +void sub_8129BC4(void); +bool32 sub_8129CA0(u8 *state); +bool32 sub_8129D40(u8 *state); +bool32 sub_8129D78(u8 *state); +bool32 sub_8129DB0(u8 *state); +bool32 sub_8129E1C(u8 *state); +bool32 sub_8129E28(u8 *state); +bool32 sub_8129E74(u8 *state); +bool32 sub_8129EB8(u8 *state); +bool32 sub_8129F24(u8 *state); +bool32 sub_8129FCC(u8 *state); +bool32 sub_812A074(u8 *state); +bool32 sub_812A0B0(u8 *state); +bool32 sub_812A18C(u8 *state); +bool32 sub_812A1B8(u8 *state); +bool32 sub_812A1FC(u8 *state); +bool32 sub_812A240(u8 *state); +bool32 sub_812A294(u8 *state); +bool32 sub_812A2E4(u8 *state); +bool32 sub_812A334(u8 *state); +bool32 sub_812A378(u8 *state); +bool32 sub_812A3D0(u8 *state); +bool32 sub_812A420(u8 *state); +void sub_812A424(u8 a0, u8 a1, u8 a2); +void sub_812A51C(void); +void sub_812A544(void); +void sub_812A578(int a0, u16 a1); +void sub_812A6F4(void); +void sub_812A728(void); +void sub_812A74C(u16 a0, u16 a1, u8 a2); +void sub_812A778(u16 a0, u8 *a1, u8 a2, u8 a3, u8 a4); +void sub_812A804(void); +bool32 sub_812A980(void); +bool32 sub_812A9C8(void); +void sub_812AA10(void); +void sub_812AA64(void); +void sub_812AA78(u16 a0, u8 *a1, u8 a2); +void sub_812AAD4(void); +void sub_812AB8C(void); +void sub_812ABD8(void); +void sub_812AC08(void); +void sub_812AC58(void); +void sub_812AC9C(void); +void sub_812ACC0(void); +void sub_812ACEC(void); +void sub_812AD04(void); +void sub_812AD20(void); +void sub_812AD50(void); + +const u16 gUnknown_845AA24[] = INCBIN_U16("graphics/union_room_chat/unk_845AA24.gbapal"); +const u16 gUnknown_845AA44[] = INCBIN_U16("graphics/union_room_chat/unk_845AA44.gbapal"); +const u16 gUnknown_845AA64[] = INCBIN_U16("graphics/union_room_chat/unk_845AA64.gbapal"); + +const struct BgTemplate gUnknown_845AA84[] = { + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 7, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x0000 + }, { + .bg = 1, + .charBaseIndex = 3, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0x0000 + }, { + .bg = 2, + .charBaseIndex = 2, + .mapBaseIndex = 23, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0x0000 + }, { + .bg = 3, + .charBaseIndex = 1, + .mapBaseIndex = 15, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0x0001 + } +}; + +const struct WindowTemplate gUnknown_845AA94[] = { + { + .bg = 3, + .tilemapLeft = 8, + .tilemapTop = 1, + .width = 21, + .height = 19, + .paletteNum = 15, + .baseBlock = 0x001 + }, { + .bg = 1, + .tilemapLeft = 9, + .tilemapTop = 18, + .width = 15, + .height = 2, + .paletteNum = 12, + .baseBlock = 0x07a + }, { + .bg = 1, + .tilemapLeft = 0, + .tilemapTop = 2, + .width = 6, + .height = 15, + .paletteNum = 7, + .baseBlock = 0x020 + }, { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 2, + .width = 7, + .height = 9, + .paletteNum = 14, + .baseBlock = 0x013 + }, DUMMY_WIN_TEMPLATE +}; + +const struct Unk845AABC gUnknown_845AABC[] = { + { 0, sub_8129CA0}, + { 3, sub_8129D40}, + { 4, sub_8129D78}, + { 5, sub_8129DB0}, + { 1, sub_8129E1C}, + { 6, sub_8129E28}, + { 7, sub_8129E74}, + { 8, sub_8129EB8}, + { 9, sub_8129F24}, + {10, sub_8129FCC}, + {11, sub_812A074}, + {12, sub_812A0B0}, + { 2, sub_812A18C}, + {13, sub_812A1B8}, + {18, sub_812A1FC}, + {19, sub_812A240}, + {14, sub_812A294}, + {15, sub_812A2E4}, + {16, sub_812A334}, + {17, sub_812A378}, + {20, sub_812A3D0} +}; + +bool8 sub_8129B14(void) +{ + gUnknown_203B0E4 = Alloc(sizeof(*gUnknown_203B0E4)); + if (gUnknown_203B0E4 && sub_812AE70()) + { + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_845AA84, NELEMS(gUnknown_845AA84)); + InitWindows(gUnknown_845AA94); + ResetTempTileDataBuffers(); + sub_812AD50(); + sub_8129BB8(gUnknown_203B0E4); + sub_8129BC4(); + sub_8129C34(0, 0); + return TRUE; + } + else + { + return FALSE; + } +} + +bool32 sub_8129B78(void) +{ + return sub_8129C8C(0); +} + +void sub_8129B88(void) +{ + sub_812AEB0(); + if (gUnknown_203B0E4) + FREE_AND_SET_NULL(gUnknown_203B0E4); + + FreeAllWindowBuffers(); + gScanlineEffect.state = 3; +} + +void sub_8129BB8(struct UnionRoomChat2 *arg0) +{ + arg0->unk18 = 0xFF; + arg0->unk1E = 0xFF; + arg0->unk1A = 0; +} + +void sub_8129BC4(void) +{ + int i; + + if (!gUnknown_203B0E4) + return; + + for (i = 0; i < 3; i++) + { + gUnknown_203B0E4->unk0[i].unk0 = sub_812A420; + gUnknown_203B0E4->unk0[i].unk4 = 0; + gUnknown_203B0E4->unk0[i].unk5 = 0; + } +} + +void sub_8129BFC(void) +{ + int i; + + if (gUnknown_203B0E4 == NULL) + return; + + for (i = 0; i < 3; i++) + { + if (gUnknown_203B0E4->unk0[i].unk4) + gUnknown_203B0E4->unk0[i].unk4 = gUnknown_203B0E4->unk0[i].unk0(&gUnknown_203B0E4->unk0[i].unk5); + } +} + +void sub_8129C34(u16 arg0, u8 arg1) +{ + int i; + + gUnknown_203B0E4->unk0[arg1].unk0 = sub_812A420; + for (i = 0; i < NELEMS(gUnknown_845AABC); i++) + { + if (gUnknown_845AABC[i].unk0 == arg0) + { + gUnknown_203B0E4->unk0[arg1].unk0 = gUnknown_845AABC[i].unk4; + gUnknown_203B0E4->unk0[arg1].unk4 = 1; + gUnknown_203B0E4->unk0[arg1].unk5 = 0; + break; + } + } +} + +bool8 sub_8129C8C(u8 arg0) +{ + return gUnknown_203B0E4->unk0[arg0].unk4; +} + +bool32 sub_8129CA0(u8 *state) +{ + if (FreeTempTileDataBuffersIfPossible() == TRUE) + return TRUE; + + switch (*state) + { + case 0: + sub_812AAD4(); + sub_812AB8C(); + break; + case 1: + sub_812ABD8(); + break; + case 2: + sub_812AC08(); + break; + case 3: + sub_812AC58(); + break; + case 4: + sub_812AC9C(); + break; + case 5: + sub_812ACC0(); + sub_812ACEC(); + sub_812AD20(); + sub_812AD04(); + break; + case 6: + if (!IsDma3ManagerBusyWithBgCopy()) + { + sub_812AEC8(); + sub_812B048(); + sub_812B100(); + } + break; + default: + return FALSE; + } + + (*state)++; + return TRUE; +} + +bool32 sub_8129D40(u8 *state) +{ + switch (*state) + { + case 0: + sub_812AA10(); + CopyWindowToVram(3, 3); + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + (*state)++; + return TRUE; +} + +bool32 sub_8129D78(u8 *state) +{ + switch (*state) + { + case 0: + sub_812AA64(); + CopyWindowToVram(3, 3); + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + (*state)++; + return TRUE; +} + +bool32 sub_8129DB0(u8 *state) +{ + switch (*state) + { + case 0: + sub_812AEFC(TRUE); + if (sub_812A980()) + return TRUE; + + sub_812A804(); + CopyWindowToVram(2, 2); + break; + case 1: + if (IsDma3ManagerBusyWithBgCopy()) + return TRUE; + break; + case 2: + if (sub_812A9C8()) + return TRUE; + + sub_812AF1C(); + sub_812AEFC(FALSE); + sub_812B160(); + return FALSE; + } + + (*state)++; + return TRUE; +} + +bool32 sub_8129E1C(u8 *state) +{ + sub_812AF1C(); + return FALSE; +} + +bool32 sub_8129E28(u8 *state) +{ + switch (*state) + { + case 0: + sub_812A578(0, 0); + sub_812A424(23, 11, 1); + CopyWindowToVram(gUnknown_203B0E4->unk1E, 3); + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + (*state)++; + return TRUE; +} + +bool32 sub_8129E74(u8 *state) +{ + switch (*state) + { + case 0: + sub_812A6F4(); + sub_812A51C(); + CopyBgTilemapBufferToVram(0); + break; + case 1: + if (IsDma3ManagerBusyWithBgCopy()) + return TRUE; + + sub_812A728(); + sub_812A544(); + return FALSE; + } + + (*state)++; + return TRUE; +} + +bool32 sub_8129EB8(u8 *state) +{ + u32 var0, var1; + u8 *str; + + switch (*state) + { + case 0: + sub_8129730(&var0, &var1); + sub_812A74C(var0, var1, 0); + str = sub_8129714(); + sub_812A778(0, str, 3, 1, 2); + CopyWindowToVram(1, 2); + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + { + sub_812B160(); + return FALSE; + } + return TRUE; + } + + (*state)++; + return TRUE; +} + +bool32 sub_8129F24(u8 *state) +{ + u16 var0; + u8 *str; + u16 length; + + switch (*state) + { + case 0: + var0 = sub_8129788(); + str = sub_8129758(); + length = StringLength_Multibyte(str); + sub_812A74C(var0, length, PIXEL_FILL(6)); + sub_812A778(var0, str, 0, 4, 5); + CopyWindowToVram(1, 2); + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + { + sub_812A578(1, 16); + CopyWindowToVram(gUnknown_203B0E4->unk1E, 3); + } + else + { + return TRUE; + } + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy()) + sub_812AF8C(1); + else + return TRUE; + break; + case 3: + return FALSE; + } + + (*state)++; + return TRUE; +} + +bool32 sub_8129FCC(u8 *state) +{ + u16 var0; + u8 *str; + u16 length; + + switch (*state) + { + case 0: + var0 = sub_8129788(); + str = sub_8129758(); + length = StringLength_Multibyte(str); + sub_812A74C(var0, length, PIXEL_FILL(0)); + sub_812A778(var0, str, 3, 1, 2); + CopyWindowToVram(1, 2); + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + { + sub_812A6F4(); + CopyWindowToVram(gUnknown_203B0E4->unk1E, 3); + } + else + { + return TRUE; + } + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy()) + { + sub_812AF8C(0); + sub_812A728(); + } + else + { + return TRUE; + } + break; + case 3: + return FALSE; + } + + (*state)++; + return TRUE; +} + +bool32 sub_812A074(u8 *state) +{ + switch (*state) + { + case 0: + sub_812A804(); + CopyWindowToVram(2, 2); + (*state)++; + break; + case 1: + if (IsDma3ManagerBusyWithBgCopy()) + return TRUE; + else + return FALSE; + } + + return TRUE; +} + +bool32 sub_812A0B0(u8 *state) +{ + u16 var0; + u8 *str; + u8 var1; + + switch (*state) + { + case 0: + var0 = gUnknown_203B0E4->unk1A; + str = sub_81297C4(); + var1 = sub_81297D0(); + sub_812AA78(var0, str, var1); + CopyWindowToVram(0, 2); + break; + case 1: + if (IsDma3ManagerBusyWithBgCopy()) + return TRUE; + + if (gUnknown_203B0E4->unk1A < 9) + { + gUnknown_203B0E4->unk1A++; + *state = 4; + return FALSE; + } + else + { + gUnknown_203B0E4->unk1C = 0; + (*state)++; + } + // fall through + case 2: + ScrollWindow(0, 0, 5, PIXEL_FILL(1)); + CopyWindowToVram(0, 2); + gUnknown_203B0E4->unk1C++; + (*state)++; + // fall through + case 3: + if (IsDma3ManagerBusyWithBgCopy()) + return TRUE; + + if (gUnknown_203B0E4->unk1C < 3) + { + (*state)--; + return TRUE; + } + break; + case 4: + return FALSE; + default: + return TRUE; + } + + (*state)++; + return TRUE; +} + +bool32 sub_812A18C(u8 *state) +{ + switch (*state) + { + case 0: + sub_812AFC0(); + (*state)++; + break; + case 1: + return sub_812AFFC(); + } + + return TRUE; +} + +bool32 sub_812A1B8(u8 *state) +{ + switch (*state) + { + case 0: + sub_812A578(3, 16); + CopyWindowToVram(gUnknown_203B0E4->unk1E, 3); + (*state)++; + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} |