diff options
author | camthesaxman <cameronghall@cox.net> | 2018-01-02 19:22:51 -0600 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2018-01-02 19:22:51 -0600 |
commit | a2e854bb7cda3d4de0b4f2d1fc9e7bd88a471980 (patch) | |
tree | 66e01bd43d5b1784d54e33455830f19335c1022e | |
parent | 8a14021bf25ffd7bf0d6a1ce808f29d3528bf111 (diff) |
decompile sub_80E7324 - sub_80E7AD4
-rw-r--r-- | asm/easy_chat.s | 1084 | ||||
-rw-r--r-- | include/easy_chat.h | 2 | ||||
-rw-r--r-- | src/easy_chat_before.c | 418 |
3 files changed, 396 insertions, 1108 deletions
diff --git a/asm/easy_chat.s b/asm/easy_chat.s index b019ab00a..708881567 100644 --- a/asm/easy_chat.s +++ b/asm/easy_chat.s @@ -5,1090 +5,6 @@ .text - thumb_func_start sub_80E7324 -sub_80E7324: @ 80E7324 - push {lr} - ldr r0, _080E733C @ =gSharedMem + 0x1000 - ldrh r1, [r0, 0x24] - adds r2, r0, 0 - cmp r1, 0x4 - bhi _080E73C6 - lsls r0, r1, 2 - ldr r1, _080E7340 @ =_080E7344 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E733C: .4byte gSharedMem + 0x1000 -_080E7340: .4byte _080E7344 - .align 2, 0 -_080E7344: - .4byte _080E7358 - .4byte _080E737C - .4byte _080E7384 - .4byte _080E738A - .4byte _080E73A4 -_080E7358: - bl sub_80E7DD0 - lsls r0, 24 - cmp r0, 0 - bne _080E7370 - ldr r0, _080E736C @ =sub_80E7294 - bl sub_80E682C - b _080E73C6 - .align 2, 0 -_080E736C: .4byte sub_80E7294 -_080E7370: - bl sub_80E88F0 - movs r0, 0 - bl sub_80E87CC - b _080E7394 -_080E737C: - ldrh r0, [r2, 0x24] - adds r0, 0x1 - strh r0, [r2, 0x24] - b _080E73C6 -_080E7384: - bl sub_80E9E98 - b _080E7394 -_080E738A: - bl sub_80EA184 - lsls r0, 24 - cmp r0, 0 - beq _080E73C6 -_080E7394: - ldr r1, _080E73A0 @ =gSharedMem + 0x1000 - ldrh r0, [r1, 0x24] - adds r0, 0x1 - strh r0, [r1, 0x24] - b _080E73C6 - .align 2, 0 -_080E73A0: .4byte gSharedMem + 0x1000 -_080E73A4: - ldrb r0, [r2, 0x8] - cmp r0, 0x6 - bne _080E73C0 - bl sub_80E7FA8 - lsls r0, 24 - cmp r0, 0 - beq _080E73C0 - ldr r0, _080E73BC @ =sub_80E6D7C - bl sub_80E682C - b _080E73C6 - .align 2, 0 -_080E73BC: .4byte sub_80E6D7C -_080E73C0: - ldr r0, _080E73CC @ =sub_80E6AC4 - bl sub_80E682C -_080E73C6: - pop {r0} - bx r0 - .align 2, 0 -_080E73CC: .4byte sub_80E6AC4 - thumb_func_end sub_80E7324 - - thumb_func_start sub_80E73D0 -sub_80E73D0: @ 80E73D0 - push {lr} - ldr r0, _080E73E4 @ =gSharedMem + 0x1000 - ldrh r0, [r0, 0x24] - cmp r0, 0x4 - bhi _080E744E - lsls r0, 2 - ldr r1, _080E73E8 @ =_080E73EC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E73E4: .4byte gSharedMem + 0x1000 -_080E73E8: .4byte _080E73EC - .align 2, 0 -_080E73EC: - .4byte _080E7400 - .4byte _080E740C - .4byte _080E7416 - .4byte _080E742C - .4byte _080E7444 -_080E7400: - movs r0, 0 - bl sub_80E87CC - bl sub_80E88F0 - b _080E7436 -_080E740C: - bl sub_80E9AD4 - bl sub_80E9E98 - b _080E7436 -_080E7416: - bl sub_80EA0E4 - lsls r0, 24 - cmp r0, 0 - beq _080E744E - movs r0, 0x1 - bl sub_80E8D8C - bl sub_80E9A14 - b _080E7436 -_080E742C: - bl sub_80E8420 - movs r0, 0 - bl sub_80E8958 -_080E7436: - ldr r1, _080E7440 @ =gSharedMem + 0x1000 - ldrh r0, [r1, 0x24] - adds r0, 0x1 - strh r0, [r1, 0x24] - b _080E744E - .align 2, 0 -_080E7440: .4byte gSharedMem + 0x1000 -_080E7444: - bl sub_80E9974 - ldr r0, _080E7454 @ =sub_80E6FC8 - bl sub_80E682C -_080E744E: - pop {r0} - bx r0 - .align 2, 0 -_080E7454: .4byte sub_80E6FC8 - thumb_func_end sub_80E73D0 - - thumb_func_start sub_80E7458 -sub_80E7458: @ 80E7458 - push {r4,r5,lr} - ldr r4, _080E7468 @ =gSharedMem + 0x1000 - ldrh r5, [r4, 0x24] - cmp r5, 0 - beq _080E746C - cmp r5, 0x1 - beq _080E74A4 - b _080E7518 - .align 2, 0 -_080E7468: .4byte gSharedMem + 0x1000 -_080E746C: - movs r1, 0xE2 - lsls r1, 1 - adds r0, r4, r1 - ldr r1, [r0] - ldr r0, _080E7480 @ =sub_80E6FC8 - cmp r1, r0 - bne _080E7484 - bl sub_80E9D7C - b _080E7488 - .align 2, 0 -_080E7480: .4byte sub_80E6FC8 -_080E7484: - bl sub_80E9D00 -_080E7488: - ldr r4, _080E74A0 @ =gSharedMem + 0x1000 - movs r2, 0xDF - lsls r2, 1 - adds r0, r4, r2 - ldrb r0, [r0] - bl sub_80E9E08 - ldrh r0, [r4, 0x24] - adds r0, 0x1 - strh r0, [r4, 0x24] - b _080E7518 - .align 2, 0 -_080E74A0: .4byte gSharedMem + 0x1000 -_080E74A4: - bl sub_80E9E54 - lsls r0, 24 - cmp r0, 0 - beq _080E7518 - movs r1, 0xE2 - lsls r1, 1 - adds r0, r4, r1 - ldr r1, [r0] - ldr r0, _080E74DC @ =sub_80E6FC8 - cmp r1, r0 - bne _080E74E4 - bl sub_80E9D7C - ldr r2, _080E74E0 @ =0x000001b5 - adds r1, r4, r2 - adds r2, 0xB - adds r0, r4, r2 - ldrb r0, [r0] - ldrb r2, [r1] - adds r0, r2 - strb r0, [r1] - bl sub_80E7A98 - adds r0, r4, 0 - adds r0, 0x96 - b _080E74FE - .align 2, 0 -_080E74DC: .4byte sub_80E6FC8 -_080E74E0: .4byte 0x000001b5 -_080E74E4: - ldr r0, _080E7520 @ =0x00009a29 - adds r1, r4, r0 - movs r2, 0xE0 - lsls r2, 1 - adds r0, r4, r2 - ldrb r0, [r0] - ldrb r2, [r1] - adds r0, r2 - strb r0, [r1] - bl sub_80E7D30 - ldr r1, _080E7524 @ =0x000001b9 - adds r0, r4, r1 -_080E74FE: - strb r5, [r0] - ldr r1, _080E7528 @ =gSharedMem + 0x1000 - movs r0, 0xDF - lsls r0, 1 - adds r2, r1, r0 - movs r0, 0x2 - strb r0, [r2] - movs r2, 0xE2 - lsls r2, 1 - adds r0, r1, r2 - ldr r0, [r0] - bl sub_80E682C -_080E7518: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E7520: .4byte 0x00009a29 -_080E7524: .4byte 0x000001b9 -_080E7528: .4byte gSharedMem + 0x1000 - thumb_func_end sub_80E7458 - - thumb_func_start sub_80E752C -sub_80E752C: @ 80E752C - push {r4,lr} - sub sp, 0x4 - ldr r4, _080E7540 @ =gSharedMem + 0x1000 - ldrh r1, [r4, 0x24] - cmp r1, 0 - beq _080E7544 - cmp r1, 0x1 - beq _080E755C - b _080E756C - .align 2, 0 -_080E7540: .4byte gSharedMem + 0x1000 -_080E7544: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldrh r0, [r4, 0x24] - adds r0, 0x1 - strh r0, [r4, 0x24] - b _080E756C -_080E755C: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _080E756C - ldr r0, [r4] - bl SetMainCallback2 -_080E756C: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E752C - - thumb_func_start sub_80E7574 -sub_80E7574: @ 80E7574 - push {r4,r5,lr} - ldr r4, _080E75B8 @ =gSharedMem + 0x1000 - ldrb r5, [r4, 0x8] - cmp r5, 0x1 - bne _080E75BC - adds r0, r4, 0 - adds r0, 0x86 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r1, r4, 0 - adds r1, 0x7E - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x2 - bne _080E75BC - adds r0, r4, 0 - adds r0, 0x27 - ldrb r0, [r0] - lsls r0, 1 - subs r1, 0x72 - adds r0, r1 - ldrh r0, [r0] - bl sub_80EB2D4 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7 - beq _080E75BC - adds r0, r4, 0 - adds r0, 0x7D - strb r5, [r0] - adds r1, r4, 0 - b _080E75C6 - .align 2, 0 -_080E75B8: .4byte gSharedMem + 0x1000 -_080E75BC: - ldr r1, _080E75D4 @ =gSharedMem + 0x1000 - adds r2, r1, 0 - adds r2, 0x7D - movs r0, 0 - strb r0, [r2] -_080E75C6: - adds r1, 0x7D - movs r0, 0 - strb r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E75D4: .4byte gSharedMem + 0x1000 - thumb_func_end sub_80E7574 - - thumb_func_start sub_80E75D8 -sub_80E75D8: @ 80E75D8 - push {r4-r6,lr} - movs r4, 0 - ldr r2, _080E75FC @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080E7604 - ldr r1, _080E7600 @ =gSharedMem + 0x1000 - adds r0, r1, 0 - adds r0, 0x84 - ldrb r0, [r0] - adds r2, r1, 0 - adds r2, 0x86 - strb r0, [r2] - adds r1, 0x85 - movs r0, 0x2 - b _080E768E - .align 2, 0 -_080E75FC: .4byte gMain -_080E7600: .4byte gSharedMem + 0x1000 -_080E7604: - ldrh r1, [r2, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080E7630 - ldr r2, _080E762C @ =gSharedMem + 0x1000 - adds r1, r2, 0 - adds r1, 0x86 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bge _080E765C - adds r0, r2, 0 - adds r0, 0x84 - ldrb r0, [r0] - strb r0, [r1] - b _080E765C - .align 2, 0 -_080E762C: .4byte gSharedMem + 0x1000 -_080E7630: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080E7658 - ldr r0, _080E7684 @ =gSharedMem + 0x1000 - adds r3, r0, 0 - adds r3, 0x86 - ldrb r1, [r3] - adds r1, 0x1 - strb r1, [r3] - adds r0, 0x84 - lsls r1, 24 - asrs r1, 24 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r1, r0 - ble _080E7656 - strb r4, [r3] -_080E7656: - movs r4, 0x1 -_080E7658: - cmp r4, 0 - beq _080E76EA -_080E765C: - ldr r2, _080E7684 @ =gSharedMem + 0x1000 - ldrb r3, [r2, 0x9] - cmp r3, 0x2 - bne _080E7692 - adds r1, r2, 0 - adds r1, 0x86 - adds r0, r2, 0 - adds r0, 0x84 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r1, r0 - bne _080E7688 - adds r0, r2, 0 - adds r0, 0x85 - strb r3, [r0] - b _080E77BC - .align 2, 0 -_080E7684: .4byte gSharedMem + 0x1000 -_080E7688: - adds r1, r2, 0 - adds r1, 0x85 - movs r0, 0 -_080E768E: - strb r0, [r1] - b _080E77BC -_080E7692: - movs r0, 0x85 - adds r0, r2 - mov r12, r0 - adds r4, r2, 0 - adds r4, 0x83 - movs r1, 0 - ldrsb r1, [r0, r1] - ldrb r3, [r4] - movs r0, 0 - ldrsb r0, [r4, r0] - cmp r1, r0 - blt _080E76B0 - subs r0, r3, 0x1 - mov r1, r12 - strb r0, [r1] -_080E76B0: - adds r1, r2, 0 - adds r1, 0x86 - adds r0, r2, 0 - adds r0, 0x84 - ldrb r3, [r1] - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r1, r0 - beq _080E77BC - ldrb r0, [r4] - adds r4, r0, 0 - muls r4, r3 - adds r0, r4, 0 - mov r5, r12 - ldrb r5, [r5] - adds r0, r5 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r2, 0xA] - cmp r0, r1 - bcc _080E77BC - subs r0, r1 - mov r6, r12 - strb r0, [r6] - b _080E77BC -_080E76EA: - ldrh r2, [r2, 0x30] - movs r0, 0x20 - ands r0, r2 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _080E7744 - ldr r2, _080E7728 @ =gSharedMem + 0x1000 - adds r3, r2, 0 - adds r3, 0x85 - ldrb r0, [r3] - subs r0, 0x1 - strb r0, [r3] - lsls r0, 24 - cmp r0, 0 - bge _080E77BC - adds r1, r2, 0 - adds r1, 0x86 - adds r0, r2, 0 - adds r0, 0x84 - ldrb r4, [r1] - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r1, r0 - bne _080E772C - movs r0, 0x2 - b _080E77BA - .align 2, 0 -_080E7728: .4byte gSharedMem + 0x1000 -_080E772C: - adds r0, r2, 0 - adds r0, 0x83 - ldrb r0, [r0] - subs r1, r0, 0x1 - strb r1, [r3] - adds r5, r4, 0 - muls r5, r0 - adds r0, r5, 0 - adds r1, r0 - lsls r1, 24 - lsrs r0, r1, 24 - b _080E77B2 -_080E7744: - movs r0, 0x10 - ands r0, r2 - cmp r0, 0 - beq _080E77C0 - ldr r2, _080E777C @ =gSharedMem + 0x1000 - adds r5, r2, 0 - adds r5, 0x86 - adds r0, r2, 0 - adds r0, 0x84 - movs r1, 0 - ldrsb r1, [r5, r1] - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r1, r0 - bne _080E7780 - adds r1, r2, 0 - adds r1, 0x85 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x2 - ble _080E77BC - strb r4, [r1] - b _080E77BC - .align 2, 0 -_080E777C: .4byte gSharedMem + 0x1000 -_080E7780: - adds r3, r2, 0 - adds r3, 0x85 - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] - movs r6, 0x83 - adds r6, r2 - mov r12, r6 - lsls r0, 24 - asrs r0, 24 - movs r1, 0 - ldrsb r1, [r6, r1] - cmp r0, r1 - blt _080E779E - strb r4, [r3] -_080E779E: - ldrb r1, [r5] - mov r4, r12 - ldrb r0, [r4] - adds r5, r0, 0 - muls r5, r1 - adds r0, r5, 0 - ldrb r6, [r3] - adds r0, r6 - lsls r0, 24 - lsrs r0, 24 -_080E77B2: - ldrb r1, [r2, 0xA] - cmp r0, r1 - bcc _080E77BC - subs r0, r1 -_080E77BA: - strb r0, [r3] -_080E77BC: - movs r0, 0x1 - b _080E77C2 -_080E77C0: - movs r0, 0 -_080E77C2: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80E75D8 - - thumb_func_start sub_80E77C8 -sub_80E77C8: @ 80E77C8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r7, 0 - ldr r1, _080E780C @ =gSharedMem + 0x1000 - ldr r2, _080E7810 @ =0x000001b7 - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r3, r1, 0 - cmp r0, 0 - beq _080E783E - ldr r1, _080E7814 @ =gMain - ldrh r2, [r1, 0x30] - movs r0, 0x40 - ands r0, r2 - adds r6, r1, 0 - cmp r0, 0 - beq _080E7818 - movs r4, 0xD4 - lsls r4, 1 - adds r1, r3, r4 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - ble _080E7806 - b _080E7948 -_080E7806: - movs r0, 0x3 - strb r0, [r1] - b _080E7948 - .align 2, 0 -_080E780C: .4byte gSharedMem + 0x1000 -_080E7810: .4byte 0x000001b7 -_080E7814: .4byte gMain -_080E7818: - movs r0, 0x80 - ands r0, r2 - cmp r0, 0 - bne _080E7822 - b _080E7950 -_080E7822: - movs r5, 0xD4 - lsls r5, 1 - adds r1, r3, r5 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x3 - bgt _080E7838 - b _080E7948 -_080E7838: - movs r0, 0x1 - strb r0, [r1] - b _080E7948 -_080E783E: - adds r0, r3, 0 - adds r0, 0x26 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080E789A - movs r4, 0 - ldr r1, _080E7870 @ =gMain - ldrh r2, [r1, 0x30] - movs r0, 0x40 - ands r0, r2 - adds r6, r1, 0 - cmp r0, 0 - beq _080E7874 - movs r6, 0xD4 - lsls r6, 1 - adds r1, r3, r6 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bge _080E7944 - movs r0, 0x3 - strb r0, [r1] - b _080E7944 - .align 2, 0 -_080E7870: .4byte gMain -_080E7874: - movs r0, 0x80 - ands r0, r2 - cmp r0, 0 - beq _080E7894 - movs r0, 0xD4 - lsls r0, 1 - adds r1, r3, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x3 - ble _080E7892 - strb r7, [r1] -_080E7892: - movs r4, 0x1 -_080E7894: - cmp r4, 0 - beq _080E7950 - b _080E7944 -_080E789A: - movs r4, 0 - movs r1, 0xE0 - lsls r1, 1 - adds r5, r3, r1 - strb r7, [r5] - ldr r1, _080E78E0 @ =gMain - ldrh r2, [r1, 0x30] - movs r0, 0x40 - ands r0, r2 - adds r6, r1, 0 - cmp r0, 0 - beq _080E78E8 - movs r2, 0xD4 - lsls r2, 1 - adds r1, r3, r2 - ldrb r2, [r1] - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, 0 - bne _080E78C4 - b _080E7A88 -_080E78C4: - subs r0, r2, 0x1 - strb r0, [r1] - ldr r4, _080E78E4 @ =0x000001b5 - adds r1, r3, r4 - lsls r0, 24 - asrs r0, 24 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - cmp r0, r1 - bge _080E7932 - movs r0, 0xFF - strb r0, [r5] - b _080E7932 - .align 2, 0 -_080E78E0: .4byte gMain -_080E78E4: .4byte 0x000001b5 -_080E78E8: - movs r0, 0x80 - ands r0, r2 - cmp r0, 0 - beq _080E792E - movs r0, 0xD4 - lsls r0, 1 - adds r2, r3, r0 - movs r1, 0 - ldrsb r1, [r2, r1] - movs r4, 0xDB - lsls r4, 1 - adds r0, r3, r4 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - subs r0, 0x1 - cmp r1, r0 - blt _080E790E - b _080E7A88 -_080E790E: - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - movs r1, 0 - ldrsb r1, [r2, r1] - ldr r2, _080E794C @ =0x000001b5 - adds r0, r3, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, 0x3 - cmp r1, r0 - ble _080E792C - movs r0, 0x1 - strb r0, [r5] -_080E792C: - movs r4, 0x1 -_080E792E: - cmp r4, 0 - beq _080E7950 -_080E7932: - movs r4, 0xE0 - lsls r4, 1 - adds r0, r3, r4 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - beq _080E7944 - b _080E7A88 -_080E7944: - bl sub_80E7A98 -_080E7948: - movs r0, 0x1 - b _080E7A8A - .align 2, 0 -_080E794C: .4byte 0x000001b5 -_080E7950: - ldrh r1, [r6, 0x30] - movs r0, 0x20 - ands r0, r1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0 - beq _080E7992 - ldr r5, _080E7974 @ =0x000001a9 - adds r2, r3, r5 - ldrb r1, [r2] - movs r0, 0 - ldrsb r0, [r2, r0] - cmp r0, 0 - beq _080E7978 - subs r0, r1, 0x1 - strb r0, [r2] - b _080E79E6 - .align 2, 0 -_080E7974: .4byte 0x000001a9 -_080E7978: - movs r6, 0xD4 - lsls r6, 1 - adds r0, r3, r6 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - movs r4, 0xD5 - lsls r4, 1 - adds r1, r3, r4 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - b _080E79E6 -_080E7992: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080E79E2 - ldr r5, _080E79D4 @ =0x000001b7 - adds r0, r3, r5 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _080E79CC - ldr r0, _080E79D8 @ =0x000001a9 - adds r4, r3, r0 - movs r1, 0xD4 - lsls r1, 1 - adds r0, r3, r1 - movs r1, 0 - ldrsb r1, [r0, r1] - movs r2, 0xD5 - lsls r2, 1 - adds r0, r3, r2 - adds r1, r0 - ldrb r5, [r4] - movs r2, 0 - ldrsb r2, [r4, r2] - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r2, r0 - bne _080E79DC -_080E79CC: - ldr r4, _080E79D8 @ =0x000001a9 - adds r0, r3, r4 - strb r6, [r0] - b _080E79E0 - .align 2, 0 -_080E79D4: .4byte 0x000001b7 -_080E79D8: .4byte 0x000001a9 -_080E79DC: - adds r0, r5, 0x1 - strb r0, [r4] -_080E79E0: - movs r7, 0x1 -_080E79E2: - cmp r7, 0 - beq _080E7A88 -_080E79E6: - adds r2, r3, 0 - ldr r5, _080E7A48 @ =0x000001b7 - adds r7, r2, r5 - ldrb r6, [r7] - mov r9, r6 - movs r1, 0 - ldr r0, _080E7A4C @ =0x000001a9 - adds r0, r2 - mov r12, r0 - subs r5, 0xF - adds r4, r2, r5 - movs r0, 0 - ldrsb r0, [r4, r0] - movs r6, 0xD5 - lsls r6, 1 - adds r6, r2 - mov r8, r6 - add r0, r8 - mov r6, r12 - movs r5, 0 - ldrsb r5, [r6, r5] - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r5, r0 - bne _080E7A1C - movs r1, 0x1 -_080E7A1C: - strb r1, [r7] - cmp r1, 0 - beq _080E7A58 - ldr r0, _080E7A50 @ =0x000001b5 - adds r1, r2, r0 - ldrb r0, [r4] - ldrb r1, [r1] - subs r0, r1 - strb r0, [r4] - lsls r0, 24 - cmp r0, 0 - beq _080E7A36 - b _080E7948 -_080E7A36: - movs r0, 0x1 - strb r0, [r4] - ldr r1, _080E7A54 @ =0x000001ab - adds r0, r2, r1 - ldrb r0, [r0] - mov r2, r12 - strb r0, [r2] - b _080E7948 - .align 2, 0 -_080E7A48: .4byte 0x000001b7 -_080E7A4C: .4byte 0x000001a9 -_080E7A50: .4byte 0x000001b5 -_080E7A54: .4byte 0x000001ab -_080E7A58: - mov r6, r9 - cmp r6, 0 - bne _080E7A60 - b _080E7948 -_080E7A60: - ldr r1, _080E7A84 @ =0x000001b5 - adds r0, r3, r1 - ldrb r0, [r0] - ldrb r2, [r4] - adds r0, r2 - strb r0, [r4] - cmp r5, 0 - bne _080E7A72 - b _080E7948 -_080E7A72: - movs r0, 0 - ldrsb r0, [r4, r0] - add r0, r8 - ldrb r0, [r0] - subs r0, 0x1 - mov r4, r12 - strb r0, [r4] - b _080E7948 - .align 2, 0 -_080E7A84: .4byte 0x000001b5 -_080E7A88: - movs r0, 0 -_080E7A8A: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80E77C8 - - thumb_func_start sub_80E7A98 -sub_80E7A98: @ 80E7A98 - push {lr} - ldr r1, _080E7ACC @ =gSharedMem + 0x1000 - ldr r0, _080E7AD0 @ =0x000001a9 - adds r3, r1, r0 - movs r2, 0xD4 - lsls r2, 1 - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r2, 0x2 - adds r1, r2 - adds r0, r1 - movs r1, 0 - ldrsb r1, [r3, r1] - ldrb r2, [r0] - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r1, r0 - blt _080E7AC6 - subs r0, r2, 0x1 - strb r0, [r3] -_080E7AC6: - pop {r0} - bx r0 - .align 2, 0 -_080E7ACC: .4byte gSharedMem + 0x1000 -_080E7AD0: .4byte 0x000001a9 - thumb_func_end sub_80E7A98 - - thumb_func_start sub_80E7AD4 -sub_80E7AD4: @ 80E7AD4 - push {lr} - ldr r3, _080E7B08 @ =gSharedMem + 0x1000 - adds r0, r3, 0 - adds r0, 0x26 - ldrb r0, [r0] - cmp r0, 0 - bne _080E7B10 - ldr r1, _080E7B0C @ =0x000001a9 - adds r0, r3, r1 - movs r1, 0 - ldrsb r1, [r0, r1] - movs r2, 0xD4 - lsls r2, 1 - adds r0, r3, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 1 - adds r1, r0 - adds r0, r3, 0 - adds r0, 0x2A - adds r1, r0 - ldrb r1, [r1] - adds r2, 0x10 - b _080E7B34 - .align 2, 0 -_080E7B08: .4byte gSharedMem + 0x1000 -_080E7B0C: .4byte 0x000001a9 -_080E7B10: - ldr r1, _080E7B3C @ =0x000001a9 - adds r0, r3, r1 - movs r2, 0 - ldrsb r2, [r0, r2] - subs r1, 0x1 - adds r0, r3, r1 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 1 - adds r2, r0 - adds r0, r3, 0 - adds r0, 0x40 - adds r2, r0 - ldrb r1, [r2] - movs r2, 0xDC - lsls r2, 1 -_080E7B34: - adds r0, r3, r2 - strb r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_080E7B3C: .4byte 0x000001a9 - thumb_func_end sub_80E7AD4 - thumb_func_start sub_80E7B40 sub_80E7B40: @ 80E7B40 push {r4-r7,lr} diff --git a/include/easy_chat.h b/include/easy_chat.h index 541a697be..a752720a6 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -3,7 +3,7 @@ extern u8 gUnknown_020388AC; -void sub_80E62A0(u8 arg0, u16 *arg1, void *arg2, u8 arg3); +void sub_80E62A0(u8 arg0, u16 *arg1, void (*arg2)(void), u8 arg3); u16 sub_80EB72C(u16 group); void sub_80EB6FC(u16 *, u16); void InitEasyChatPhrases(void); diff --git a/src/easy_chat_before.c b/src/easy_chat_before.c index d71fad303..9d6989612 100644 --- a/src/easy_chat_before.c +++ b/src/easy_chat_before.c @@ -21,15 +21,13 @@ extern void sub_80546B8(void); struct Shared1000 { - void *unk0; // callback + void (*unk0)(void); // main cb 2 u16 *unk4; u8 unk8; u8 unk9; u8 unkA; u8 unkB; - u16 unkC; - u16 unkE; - u8 filler10[0x20-0x10]; + u16 unkC[(0x20-0xC)/2]; // unknown length void (*unk20)(void); u16 unk24; u8 unk26; @@ -37,12 +35,15 @@ struct Shared1000 u16 unk28; u8 unk2A[11][2]; // unknown length u8 unk40[4][14]; - u8 unk78[0x83-0x78]; // unknown length - u8 unk83; + u8 unk78[0x7D - 0x78]; // unknown length + u8 unk7D; + u8 unk7E[0x83-0x7E]; + s8 unk83; // s8? + //u8 unk83; // s8? s8 unk84; s8 unk85; s8 unk86; - u8 unk87; + bool8 unk87; u16 unk88; u16 unk8A; u8 filler8C[0x96-0x8C]; @@ -50,8 +51,8 @@ struct Shared1000 u8 filler97[0x1A8-0x97]; s8 unk1A8; s8 unk1A9; - u8 unk1AA[0xB5-0xAA]; // unknown length - u8 unk1B5; + s8 unk1AA[0xB5-0xAA]; // unknown length + s8 unk1B5; s8 unk1B6; s8 unk1B7; u8 unk1B8; @@ -89,7 +90,7 @@ struct Shared1000 #define static_assert(cond) \ typedef char test_[(cond) ? 1 : -1] -//static_assert(offsetof(struct Shared1000, unk4142) == 0x4142); +static_assert(offsetof(struct Shared1000, unk20) == 0x20); #define shared1000 (*(struct Shared1000 *)(gSharedMem + 0x1000)) @@ -204,12 +205,15 @@ void sub_80E73D0(void); void sub_80E7458(void); void sub_80E752C(void); void sub_80E7574(void); -u8 sub_80E75D8(void); -u8 sub_80E77C8(void); +bool8 sub_80E75D8(void); +bool8 sub_80E77C8(void); +void sub_80E7A98(void); void sub_80E7AD4(void); u8 sub_80E7B40(void); +void sub_80E7D30(void); void sub_80E7D6C(void); void sub_80E7D9C(void); +u8 sub_80E7DD0(void); void sub_80E7E50(void); void sub_80E7F00(); u8 sub_80E7FA8(void); @@ -236,20 +240,28 @@ void sub_80E95A4(void); void sub_80E9744(void); void sub_80E98C4(void); void sub_80E9974(void); +void sub_80E9A14(void); void sub_80E9A4C(void); void sub_80E9AD4(void); +void sub_80E9D00(void); +void sub_80E9D7C(void); +void sub_80E9E08(); +u8 sub_80E9E54(void); void sub_80E9E98(void); u8 sub_80E9EA8(void); u8 sub_80E9F50(void); u8 sub_80E9FD4(void); u8 sub_80EA014(void); u8 sub_80EA050(void); +u8 sub_80EA0E4(void); +u8 sub_80EA184(void); void sub_80EAC5C(void); void sub_80EAD08(void); u8 sub_80EAD7C(u8); void sub_80EAECC(void); void sub_80EB040(void); void sub_80EB0B0(void); +u16 sub_80EB2D4(); bool8 sub_80EB680(u16 *, u16, u16, u16); void sub_80E9C94(void); @@ -331,7 +343,7 @@ void sub_80E60D8(void) sub_80E62A0(gSpecialVar_0x8004, r1, sub_80546B8, r4); } -void sub_80E62A0(u8 a, u16 *b, void *c, u8 d) +void sub_80E62A0(u8 a, u16 *b, void (*c)(void), u8 d) { shared1000.unk0 = c; shared1000.unk4 = b; @@ -766,14 +778,11 @@ void sub_80E6AC4(void) void sub_80E6AE4(void) { shared1000.unk87 = sub_80E75D8(); - if (shared1000.unk87 != 0) + if (shared1000.unk87) PlaySE(SE_SELECT); if (gMain.newKeys & A_BUTTON) { - u8 r2; - PlaySE(SE_SELECT); - r2 = shared1000.unk86; if (shared1000.unk86 == shared1000.unk84) { switch (shared1000.unk85) @@ -791,7 +800,7 @@ void sub_80E6AE4(void) } else { - shared1000.unk27 = shared1000.unk83 * r2 + shared1000.unk85; + shared1000.unk27 = shared1000.unk86 * shared1000.unk83 + shared1000.unk85; sub_80E7574(); sub_80E682C(sub_80E6F68); return; @@ -805,8 +814,6 @@ void sub_80E6AE4(void) void sub_80E6BC0(void) { - //s8 selection; - switch (shared1000.unk24) { case 0: @@ -928,7 +935,7 @@ void sub_80E6D7C(void) shared1000.unk24 = 10; break; } - if (shared1000.unkC == 0xFFFF || shared1000.unkE == 0xFFFF) + if (shared1000.unkC[0] == 0xFFFF || shared1000.unkC[1] == 0xFFFF) { sub_80E91D4(9); shared1000.unk24 = 10; @@ -963,7 +970,7 @@ void sub_80E6D7C(void) } if (shared1000.unk8 == 13) { - if (shared1000.unkC == 0xFFFF || shared1000.unkE == 0xFFFF) + if (shared1000.unkC[0] == 0xFFFF || shared1000.unkC[1] == 0xFFFF) gSpecialVar_Result = 0; gSpecialVar_0x8004 = sub_80E810C(); } @@ -1040,7 +1047,7 @@ void sub_80E6FC8(void) } else { - if (shared1000.unk96 != 0) + if (shared1000.unk96) PlaySE(SE_SELECT); if (gMain.newKeys & A_BUTTON) { @@ -1205,4 +1212,369 @@ void sub_80E7294(void) } } +void sub_80E7324(void) +{ + switch (shared1000.unk24) + { + case 0: + if (sub_80E7DD0() == 0) + { + sub_80E682C(sub_80E7294); + } + else + { + sub_80E88F0(); + sub_80E87CC(0); + shared1000.unk24++; + } + break; + case 1: + shared1000.unk24++; + break; + case 2: + sub_80E9E98(); + shared1000.unk24++; + break; + case 3: + if (sub_80EA184() != 0) + shared1000.unk24++; + break; + case 4: + if (shared1000.unk8 == 6 && sub_80E7FA8() != 0) + sub_80E682C(sub_80E6D7C); + else + sub_80E682C(sub_80E6AC4); + break; + } +} + +void sub_80E73D0(void) +{ + switch (shared1000.unk24) + { + case 0: + sub_80E87CC(0); + sub_80E88F0(); + shared1000.unk24++; + break; + case 1: + sub_80E9AD4(); + sub_80E9E98(); + shared1000.unk24++; + break; + case 2: + if (sub_80EA0E4() != 0) + { + sub_80E8D8C(1); + sub_80E9A14(); + shared1000.unk24++; + } + break; + case 3: + sub_80E8420(); + sub_80E8958(0); + shared1000.unk24++; + break; + case 4: + sub_80E9974(); + sub_80E682C(sub_80E6FC8); + break; + } +} + +void sub_80E7458(void) +{ + switch (shared1000.unk24) + { + case 0: + if (shared1000.unk1C4 == sub_80E6FC8) + sub_80E9D7C(); + else + sub_80E9D00(); + sub_80E9E08(shared1000.unk1BE); + shared1000.unk24++; + break; + case 1: + if (sub_80E9E54() != 0) + { + if (shared1000.unk1C4 == sub_80E6FC8) + { + sub_80E9D7C(); + shared1000.unk1B5 += shared1000.unk1C0; + sub_80E7A98(); + shared1000.unk96 = TRUE; + } + else + { + shared1000.unk9A29 += shared1000.unk1C0; + sub_80E7D30(); + shared1000.unk1B9 = 1; + } + shared1000.unk1BE = 2; + sub_80E682C(shared1000.unk1C4); + } + break; + } +} + +void sub_80E752C(void) +{ + switch (shared1000.unk24) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + shared1000.unk24++; + break; + case 1: + if (!UpdatePaletteFade()) + SetMainCallback2(shared1000.unk0); + break; + } +} + +void sub_80E7574(void) +{ + if (shared1000.unk8 == 1 + && shared1000.unk7E[shared1000.unk86] == 2 + && sub_80EB2D4(shared1000.unkC[shared1000.unk27]) != 7) + shared1000.unk7D = 1; + else + shared1000.unk7D = 0; + shared1000.unk7D = 0; // What the hell? +} + +bool8 sub_80E75D8(void) +{ + bool8 pressedUpDown = FALSE; + u8 r0; + + if (gMain.newKeys & START_BUTTON) + { + shared1000.unk86 = shared1000.unk84; + shared1000.unk85 = 2; + return TRUE; + } + + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + shared1000.unk86--; + if (shared1000.unk86 < 0) + shared1000.unk86 = shared1000.unk84; + pressedUpDown = TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + shared1000.unk86++; + if (shared1000.unk86 > shared1000.unk84) + shared1000.unk86 = 0; + pressedUpDown = TRUE; + } + + if (pressedUpDown) + { + if (shared1000.unk9 == 2) + { + if (shared1000.unk86 == shared1000.unk84) + shared1000.unk85 = 2; + else + shared1000.unk85 = 0; + return TRUE; + } + else + { + if (shared1000.unk85 >= shared1000.unk83) + shared1000.unk85 = shared1000.unk83 - 1; + if (shared1000.unk86 != shared1000.unk84) + { + r0 = shared1000.unk86 * shared1000.unk83 + shared1000.unk85; + if (r0 >= shared1000.unkA) + shared1000.unk85 = r0 - shared1000.unkA; + } + return TRUE; + } + } + else + { + if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + if (--shared1000.unk85 < 0) + { + if (shared1000.unk86 == shared1000.unk84) + { + shared1000.unk85 = 2; + } + else + { + shared1000.unk85 = shared1000.unk83 - 1; + r0 = shared1000.unk86 * shared1000.unk83 + shared1000.unk85; + if (r0 >= shared1000.unkA) + shared1000.unk85 = r0 - shared1000.unkA; + } + } + return TRUE; + } + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + if (shared1000.unk86 == shared1000.unk84) + { + if (++shared1000.unk85 > 2) + shared1000.unk85 = 0; + } + else + { + if (++shared1000.unk85 >= shared1000.unk83) + shared1000.unk85 = 0; + r0 = shared1000.unk86 * shared1000.unk83 + shared1000.unk85; + if (r0 >= shared1000.unkA) + shared1000.unk85 = r0 - shared1000.unkA; + } + return TRUE; + } + } + return FALSE; +} + +bool8 sub_80E77C8(void) +{ + bool8 pressedLeftRight = FALSE; + bool8 pressedUpDown; + + if (shared1000.unk1B7 != 0) + { + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + shared1000.unk1A8--; + if (shared1000.unk1A8 < 1) + shared1000.unk1A8 = 3; + return TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + shared1000.unk1A8++; + if (shared1000.unk1A8 > 3) + shared1000.unk1A8 = 1; + return TRUE; + } + } + else + { + if (shared1000.unk26 == 1) + { + pressedUpDown = FALSE; + + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + shared1000.unk1A8--; + if (shared1000.unk1A8 < 0) + shared1000.unk1A8 = 3; + pressedUpDown = TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + shared1000.unk1A8++; + if (shared1000.unk1A8 > 3) + shared1000.unk1A8 = 0; + pressedUpDown = TRUE; + } + + if (pressedUpDown) + { + sub_80E7A98(); + return TRUE; + } + } + else + { + pressedUpDown = FALSE; + shared1000.unk1C0 = 0; + + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (shared1000.unk1A8 == 0) + return FALSE; + shared1000.unk1A8--; + if (shared1000.unk1A8 < shared1000.unk1B5) + shared1000.unk1C0 = -1; + pressedUpDown = TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (shared1000.unk1A8 >= shared1000.unk1B6 - 1) + return FALSE; + shared1000.unk1A8++; + if (shared1000.unk1A8 > shared1000.unk1B5 + 3) + shared1000.unk1C0 = 1; + pressedUpDown = TRUE; + } + + if (pressedUpDown) + { + if (shared1000.unk1C0 == 0) + { + sub_80E7A98(); + return TRUE; + } + return FALSE; + } + } + } + + if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + if (shared1000.unk1A9 != 0) + shared1000.unk1A9--; + else + shared1000.unk1A9 = shared1000.unk1AA[shared1000.unk1A8]; + pressedLeftRight = TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + if (shared1000.unk1B7 != 0 + || shared1000.unk1A9 == shared1000.unk1AA[shared1000.unk1A8]) + shared1000.unk1A9 = 0; + else + shared1000.unk1A9++; + pressedLeftRight = TRUE; + } + + if (pressedLeftRight) + { + s8 r9 = shared1000.unk1B7; + + shared1000.unk1B7 = (shared1000.unk1A9 == shared1000.unk1AA[shared1000.unk1A8]); + if (shared1000.unk1B7 != 0) + { + shared1000.unk1A8 -= shared1000.unk1B5; + if (shared1000.unk1A8 == 0) + { + shared1000.unk1A8 = 1; + shared1000.unk1A9 = shared1000.unk1AA[shared1000.unk1A8]; + } + } + else if (r9 != 0) + { + shared1000.unk1A8 += shared1000.unk1B5; + if (shared1000.unk1A9 != 0) + shared1000.unk1A9 = shared1000.unk1AA[shared1000.unk1A8] - 1; + } + return TRUE; + } + + return FALSE; +} + +void sub_80E7A98(void) +{ + if (shared1000.unk1A9 >= shared1000.unk1AA[shared1000.unk1A8]) + shared1000.unk1A9 = shared1000.unk1AA[shared1000.unk1A8] - 1; +} + +void sub_80E7AD4(void) +{ + if (shared1000.unk26 == 0) + shared1000.unk1B8 = shared1000.unk2A[shared1000.unk1A8][shared1000.unk1A9]; + else + shared1000.unk1B8 = shared1000.unk40[shared1000.unk1A8][shared1000.unk1A9]; +} + #endif |