diff --git a/asm/code_0801C85C.s b/asm/code_0801C85C.s index bd6022ca..6cfeac01 100644 --- a/asm/code_0801C85C.s +++ b/asm/code_0801C85C.s @@ -866,982 +866,4 @@ _0801CEB4: pop {r4, pc} .align 2, 0 _0801CEB8: .4byte gUnk_0200AF00 -_0801CEBC: .4byte gTextBox - - thumb_func_start sub_0801CEC0 -sub_0801CEC0: @ 0x0801CEC0 - push {lr} - ldr r2, _0801CED4 @ =gUnk_080C904C - ldrb r1, [r0, #4] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0801CED4: .4byte gUnk_080C904C - - thumb_func_start sub_0801CED8 -sub_0801CED8: @ 0x0801CED8 - push {r4, lr} - adds r3, r0, #0 - ldr r0, _0801CF10 @ =gUnk_0200AF00 - adds r1, r0, #0 - adds r1, #0x24 - ldrb r4, [r1] - cmp r4, #1 - bne _0801CF0E - movs r2, #2 - movs r0, #2 - strb r0, [r1] - movs r1, #0 - movs r0, #0x10 - strh r0, [r3, #0xc] - movs r0, #0x90 - strh r0, [r3, #0xe] - strb r1, [r3, #6] - movs r0, #7 - strb r0, [r3, #1] - strb r4, [r3, #4] - ldrb r0, [r3] - orrs r0, r2 - strb r0, [r3] - ldr r1, _0801CF14 @ =gUnk_080C9094 - adds r0, r3, #0 - bl sub_0801CAB8 -_0801CF0E: - pop {r4, pc} - .align 2, 0 -_0801CF10: .4byte gUnk_0200AF00 -_0801CF14: .4byte gUnk_080C9094 - - thumb_func_start sub_0801CF18 -sub_0801CF18: @ 0x0801CF18 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r2, _0801CF54 @ =gUnk_080C9058 - ldrb r0, [r5, #6] - adds r1, r0, #1 - strb r1, [r5, #6] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x17 - adds r0, r0, r2 - ldrh r4, [r0] - movs r0, #0 - adds r1, r4, #0 - adds r2, r4, #0 - movs r3, #0 - bl sub_0805ECEC - cmp r4, #0 - bne _0801CF52 - movs r0, #2 - strb r0, [r5, #4] - movs r0, #8 - strb r0, [r5, #1] - ldr r0, _0801CF58 @ =gUnk_0200AF00 - adds r0, #0x24 - movs r1, #3 - strb r1, [r0] - ldr r0, _0801CF5C @ =0x00000173 - bl PlaySFX -_0801CF52: - pop {r4, r5, pc} - .align 2, 0 -_0801CF54: .4byte gUnk_080C9058 -_0801CF58: .4byte gUnk_0200AF00 -_0801CF5C: .4byte 0x00000173 - - thumb_func_start sub_0801CF60 -sub_0801CF60: @ 0x0801CF60 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r0, _0801CF8C @ =gUnk_0200AF00 - adds r5, r0, #0 - adds r5, #0x24 - ldrb r0, [r5] - cmp r0, #4 - bhi _0801CF7C - ldr r0, _0801CF90 @ =gTextBox - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #0 - beq _0801CF94 -_0801CF7C: - movs r0, #0 - strb r0, [r4, #4] - ldrb r1, [r4] - subs r0, #3 - ands r0, r1 - strb r0, [r4] - b _0801CFA4 - .align 2, 0 -_0801CF8C: .4byte gUnk_0200AF00 -_0801CF90: .4byte gTextBox -_0801CF94: - adds r0, r4, #0 - bl sub_0801CAD0 - ldrb r0, [r4, #0x13] - cmp r0, #1 - bne _0801CFA4 - movs r0, #4 - strb r0, [r5] -_0801CFA4: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0801CFA8 -sub_0801CFA8: @ 0x0801CFA8 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r0, _0801CFCC @ =gUnk_02001A00 - movs r1, #0x40 - bl _DmaZero - movs r4, #0 -_0801CFB6: - adds r0, r4, #0 - bl sub_0801CFD0 - adds r4, #1 - cmp r4, #5 - bls _0801CFB6 - adds r0, r5, #0 - bl sub_0801D000 - pop {r4, r5, pc} - .align 2, 0 -_0801CFCC: .4byte gUnk_02001A00 - - thumb_func_start sub_0801CFD0 -sub_0801CFD0: @ 0x0801CFD0 - lsls r0, r0, #2 - ldr r1, _0801CFF8 @ =gUnk_02001A00 - adds r0, r0, r1 - ldrb r2, [r0] - movs r1, #0x10 - rsbs r1, r1, #0 - ands r1, r2 - movs r2, #4 - orrs r1, r2 - movs r2, #0xf - ands r1, r2 - movs r2, #0x10 - orrs r1, r2 - strb r1, [r0] - movs r1, #0x80 - strb r1, [r0, #1] - ldr r1, _0801CFFC @ =0x0000FFFF - strh r1, [r0, #2] - bx lr - .align 2, 0 -_0801CFF8: .4byte gUnk_02001A00 -_0801CFFC: .4byte 0x0000FFFF - - thumb_func_start sub_0801D000 -sub_0801D000: @ 0x0801D000 - push {lr} - adds r2, r0, #0 - ldr r0, _0801D024 @ =gScreenTransition - movs r1, #0 - cmp r2, #0 - beq _0801D00E - movs r1, #0xf -_0801D00E: - adds r0, #0x2f - strb r1, [r0] - cmp r2, #0 - beq _0801D028 - bl sub_0801D34C - movs r0, #0xf - bl sub_0801CFD0 - b _0801D03A - .align 2, 0 -_0801D024: .4byte gScreenTransition -_0801D028: - ldr r3, _0801D03C @ =gUnk_02001A3C - ldrb r1, [r3] - movs r0, #0xf - ands r0, r1 - cmp r0, #4 - bne _0801D03A - strb r2, [r3] - strb r2, [r3, #1] - strh r2, [r3, #2] -_0801D03A: - pop {pc} - .align 2, 0 -_0801D03C: .4byte gUnk_02001A3C - - thumb_func_start sub_0801D040 -sub_0801D040: @ 0x0801D040 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #4 - str r0, [sp] - adds r6, r1, #0 - adds r0, r6, #0 - bl sub_0801D108 - adds r5, r0, #0 - cmp r5, #0 - bge _0801D0E8 - cmp r6, #0x15 - bhi _0801D064 - movs r4, #1 - b _0801D074 -_0801D064: - ldr r0, _0801D100 @ =gUnk_08133368 - adds r1, r6, #0 - subs r1, #0x16 - lsls r1, r1, #2 - adds r1, r1, r0 - ldrb r4, [r1, #3] - movs r0, #0xf - ands r4, r0 -_0801D074: - adds r0, r4, #0 - bl sub_0801D134 - adds r5, r0, #0 - cmp r5, #0 - bge _0801D090 - bl sub_0801D34C - adds r0, r4, #0 - bl sub_0801D134 - adds r5, r0, #0 - cmp r5, #0 - blt _0801D0E8 -_0801D090: - lsls r1, r5, #2 - ldr r0, _0801D104 @ =gUnk_02001A00 - adds r3, r1, r0 - movs r0, #0 - strh r6, [r3, #2] - strb r0, [r3, #1] - movs r2, #0x10 - rsbs r2, r2, #0 - lsls r0, r4, #4 - movs r1, #3 - orrs r0, r1 - strb r0, [r3] - subs r4, #1 - cmp r4, #0 - beq _0801D0E0 - movs r0, #0 - mov sl, r0 - movs r1, #0 - mov r8, r1 - movs r0, #0xf - mov sb, r0 - mov ip, r2 - movs r7, #2 -_0801D0BE: - adds r3, #4 - mov r1, r8 - strh r1, [r3, #2] - mov r0, sl - strb r0, [r3, #1] - lsls r2, r4, #4 - ldrb r1, [r3] - mov r0, sb - ands r0, r1 - orrs r0, r2 - mov r1, ip - ands r0, r1 - orrs r0, r7 - strb r0, [r3] - subs r4, #1 - cmp r4, #0 - bne _0801D0BE -_0801D0E0: - adds r0, r6, #0 - adds r1, r5, #0 - bl sub_0801D2C8 -_0801D0E8: - ldr r0, [sp] - adds r1, r5, #0 - bl sub_0801D19C - adds r0, r5, #0 - add sp, #4 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0801D100: .4byte gUnk_08133368 -_0801D104: .4byte gUnk_02001A00 - - thumb_func_start sub_0801D108 -sub_0801D108: @ 0x0801D108 - push {lr} - adds r2, r0, #0 - cmp r2, #5 - bhi _0801D116 - b _0801D12E -_0801D112: - adds r0, r1, #0 - b _0801D12E -_0801D116: - movs r1, #6 - ldr r0, _0801D130 @ =gUnk_02001A00 - adds r0, #0x18 -_0801D11C: - ldrh r3, [r0, #2] - cmp r2, r3 - beq _0801D112 - adds r0, #4 - adds r1, #1 - cmp r1, #0xf - bls _0801D11C - movs r0, #1 - rsbs r0, r0, #0 -_0801D12E: - pop {pc} - .align 2, 0 -_0801D130: .4byte gUnk_02001A00 - - thumb_func_start sub_0801D134 -sub_0801D134: @ 0x0801D134 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0 - movs r2, #6 - ldr r0, _0801D154 @ =gUnk_02001A00 - adds r3, r0, #0 - adds r3, #0x18 -_0801D142: - ldrb r0, [r3] - lsls r0, r0, #0x1c - cmp r0, #0 - bne _0801D158 - adds r1, #1 - cmp r4, r1 - bhi _0801D15A - b _0801D180 - .align 2, 0 -_0801D154: .4byte gUnk_02001A00 -_0801D158: - movs r1, #0 -_0801D15A: - adds r3, #4 - adds r2, #1 - cmp r2, #0xf - bls _0801D142 - movs r1, #0 - movs r2, #6 - ldr r0, _0801D188 @ =gUnk_02001A00 - adds r3, r0, #0 - adds r3, #0x18 -_0801D16C: - ldrb r0, [r3] - lsls r0, r0, #0x1c - lsrs r0, r0, #0x1c - cmp r0, #1 - bgt _0801D18C - cmp r0, #0 - blt _0801D18C - adds r1, #1 - cmp r4, r1 - bhi _0801D18E -_0801D180: - subs r0, r1, #1 - subs r0, r2, r0 - b _0801D19A - .align 2, 0 -_0801D188: .4byte gUnk_02001A00 -_0801D18C: - movs r1, #0 -_0801D18E: - adds r3, #4 - adds r2, #1 - cmp r2, #0xf - bls _0801D16C - movs r0, #1 - rsbs r0, r0, #0 -_0801D19A: - pop {r4, pc} - - thumb_func_start sub_0801D19C -sub_0801D19C: @ 0x0801D19C - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - adds r3, r1, #0 - cmp r3, #0 - bge _0801D1A8 - movs r3, #0 -_0801D1A8: - adds r0, r4, #0 - adds r0, #0x28 - ldrb r0, [r0] - subs r0, #1 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0x7e - bls _0801D1BE - adds r0, r4, #0 - adds r0, #0x27 - strb r3, [r0] -_0801D1BE: - movs r0, #0xf - adds r1, r3, #0 - ands r1, r0 - ldrb r2, [r4, #0x1a] - movs r5, #0x10 - rsbs r5, r5, #0 - adds r0, r5, #0 - ands r0, r2 - orrs r0, r1 - movs r2, #0xf - adds r1, r3, #0 - ands r1, r2 - lsls r1, r1, #4 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x1a] - lsls r1, r3, #2 - ldr r0, _0801D22C @ =gUnk_02001A00 - adds r4, r1, r0 - ldr r0, [r4] - lsls r0, r0, #0x1c - lsrs r0, r0, #0x1c - cmp r0, #4 - beq _0801D22A - ldrb r0, [r4, #1] - adds r0, #1 - strb r0, [r4, #1] - ldr r0, [r4] - lsls r0, r0, #0x18 - lsrs r3, r0, #0x1c - ldrb r1, [r4] - adds r0, r5, #0 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r4] - subs r3, #1 - cmp r3, #0 - beq _0801D22A - movs r7, #0xf - adds r6, r5, #0 - movs r5, #2 -_0801D212: - adds r4, #4 - lsls r2, r3, #4 - ldrb r1, [r4] - adds r0, r7, #0 - ands r0, r1 - orrs r0, r2 - ands r0, r6 - orrs r0, r5 - strb r0, [r4] - subs r3, #1 - cmp r3, #0 - bne _0801D212 -_0801D22A: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0801D22C: .4byte gUnk_02001A00 - - thumb_func_start sub_0801D230 -sub_0801D230: @ 0x0801D230 - push {lr} - adds r0, #0x27 - ldrb r2, [r0] - movs r1, #0 - strb r1, [r0] - adds r0, r2, #0 - bl sub_0801D244 - pop {pc} - .align 2, 0 - - thumb_func_start sub_0801D244 -sub_0801D244: @ 0x0801D244 - push {r4, r5, r6, lr} - lsls r0, r0, #2 - ldr r1, _0801D288 @ =gUnk_02001A00 - adds r2, r0, r1 - ldr r0, [r2] - lsls r0, r0, #0x1c - lsrs r0, r0, #0x1c - cmp r0, #3 - bne _0801D284 - ldrb r0, [r2, #1] - subs r0, #1 - strb r0, [r2, #1] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0801D284 - ldr r0, [r2] - lsls r0, r0, #0x18 - lsrs r3, r0, #0x1c - movs r5, #0 - movs r6, #0x10 - rsbs r6, r6, #0 - movs r4, #1 -_0801D270: - strb r5, [r2, #1] - ldrb r1, [r2] - adds r0, r6, #0 - ands r0, r1 - orrs r0, r4 - strb r0, [r2] - adds r2, #4 - subs r3, #1 - cmp r3, #0 - bne _0801D270 -_0801D284: - pop {r4, r5, r6, pc} - .align 2, 0 -_0801D288: .4byte gUnk_02001A00 - - thumb_func_start sub_0801D28C -sub_0801D28C: @ 0x0801D28C - push {lr} - adds r3, r1, #0 - adds r0, #0x27 - ldrb r2, [r0] - ldr r1, _0801D2B0 @ =gUnk_02001A00 - lsls r0, r2, #2 - adds r1, r0, r1 - ldrb r0, [r1] - lsls r0, r0, #0x1c - lsrs r0, r0, #0x1c - cmp r0, #3 - bne _0801D2AE - strh r3, [r1, #2] - adds r0, r3, #0 - adds r1, r2, #0 - bl sub_0801D2C8 -_0801D2AE: - pop {pc} - .align 2, 0 -_0801D2B0: .4byte gUnk_02001A00 - - thumb_func_start sub_0801D2B4 -sub_0801D2B4: @ 0x0801D2B4 - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - bl sub_0801D230 - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_0801D040 - pop {r4, r5, pc} - - thumb_func_start sub_0801D2C8 -sub_0801D2C8: @ 0x0801D2C8 - push {r4, lr} - adds r3, r0, #0 - ldr r2, _0801D2F8 @ =gUnk_0200B644 - adds r4, r1, #0 - adds r4, #0x10 - movs r1, #1 - lsls r1, r4 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - cmp r3, #5 - bls _0801D33C - cmp r3, #0x15 - bne _0801D300 - ldr r2, _0801D2FC @ =gUnk_020176A0 - adds r0, r2, #0 - adds r0, #0x78 - ldrh r0, [r0] - lsls r1, r4, #5 - adds r1, r1, r2 - movs r2, #0x20 - bl _DmaFill16 - b _0801D33C - .align 2, 0 -_0801D2F8: .4byte gUnk_0200B644 -_0801D2FC: .4byte gUnk_020176A0 -_0801D300: - cmp r3, #0x14 - bhi _0801D31C - subs r0, r3, #6 - lsls r0, r0, #5 - ldr r1, _0801D318 @ =gUnk_020176A0 - adds r0, r0, r1 - adds r1, r4, #0 - movs r2, #1 - bl sub_0801D754 - b _0801D33C - .align 2, 0 -_0801D318: .4byte gUnk_020176A0 -_0801D31C: - ldr r1, _0801D340 @ =gUnk_08133368 - adds r0, r3, #0 - subs r0, #0x16 - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r0, [r0] - lsrs r2, r0, #0x18 - movs r1, #0xf - ands r2, r1 - ldr r1, _0801D344 @ =0x00FFFFFF - ands r0, r1 - ldr r1, _0801D348 @ =gUnk_085A2E80 - adds r0, r0, r1 - adds r1, r4, #0 - bl sub_0801D754 -_0801D33C: - pop {r4, pc} - .align 2, 0 -_0801D340: .4byte gUnk_08133368 -_0801D344: .4byte 0x00FFFFFF -_0801D348: .4byte gUnk_085A2E80 - - thumb_func_start sub_0801D34C -sub_0801D34C: @ 0x0801D34C - push {r4, r5, r6, r7, lr} - sub sp, #0x10 - movs r2, #0 - movs r3, #0 - ldr r1, _0801D37C @ =gUnk_02001A00 -_0801D356: - mov r4, sp - adds r0, r4, r2 - strb r2, [r0] - ldrb r0, [r1] - lsls r0, r0, #0x1c - lsrs r0, r0, #0x1c - cmp r0, #1 - bgt _0801D370 - cmp r0, #0 - blt _0801D370 - strb r3, [r1] - strb r3, [r1, #1] - strh r3, [r1, #2] -_0801D370: - adds r1, #4 - adds r2, #1 - cmp r2, #0xf - bls _0801D356 - movs r4, #6 - b _0801D390 - .align 2, 0 -_0801D37C: .4byte gUnk_02001A00 -_0801D380: - cmp r4, r1 - ble _0801D390 - mov r2, sp - adds r0, r2, r4 - strb r1, [r0] - adds r0, r4, #0 - bl sub_0801D48C -_0801D390: - adds r0, r4, #1 - bl sub_0801D458 - adds r4, r0, #0 - cmp r4, #0 - beq _0801D3AC - movs r0, #1 - bl sub_0801D134 - adds r1, r0, #0 - movs r0, #1 - rsbs r0, r0, #0 - cmp r1, r0 - bne _0801D380 -_0801D3AC: - movs r1, #0 - ldr r4, _0801D450 @ =gUnk_03003D70 - mov ip, r4 -_0801D3B2: - lsls r0, r1, #3 - mov r2, ip - adds r3, r0, r2 - adds r0, r3, #0 - ldr r3, [r3, #4] - adds r5, r1, #1 - cmp r0, r3 - beq _0801D444 - movs r7, #0x10 - rsbs r7, r7, #0 - adds r4, r0, #0 - ldr r6, _0801D454 @ =gUnk_020000C0 -_0801D3CA: - ldrb r0, [r3, #8] - cmp r0, #9 - beq _0801D43E - adds r1, r3, #0 - adds r1, #0x28 - ldrb r0, [r1] - subs r0, #1 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0x7e - bhi _0801D40C - ldrb r1, [r1] - lsls r1, r1, #6 - adds r1, r1, r6 - ldrb r0, [r1, #5] - add r0, sp - ldrb r0, [r0] - strb r0, [r1, #5] - ldrb r0, [r1, #0x15] - add r0, sp - ldrb r0, [r0] - strb r0, [r1, #0x15] - adds r2, r1, #0 - adds r2, #0x25 - ldrb r0, [r2] - add r0, sp - ldrb r0, [r0] - strb r0, [r2] - adds r1, #0x35 - ldrb r0, [r1] - add r0, sp - ldrb r0, [r0] - strb r0, [r1] -_0801D40C: - adds r1, r3, #0 - adds r1, #0x27 - ldrb r0, [r1] - add r0, sp - ldrb r0, [r0] - strb r0, [r1] - ldrb r2, [r3, #0x1a] - lsls r0, r2, #0x1c - lsrs r0, r0, #0x1c - add r0, sp - ldrb r1, [r0] - movs r0, #0xf - ands r1, r0 - adds r0, r7, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #0x1a] - lsrs r1, r0, #4 - add r1, sp - ldrb r2, [r1] - lsls r2, r2, #4 - movs r1, #0xf - ands r0, r1 - orrs r0, r2 - strb r0, [r3, #0x1a] -_0801D43E: - ldr r3, [r3, #4] - cmp r4, r3 - bne _0801D3CA -_0801D444: - adds r1, r5, #0 - cmp r1, #8 - bls _0801D3B2 - add sp, #0x10 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0801D450: .4byte gUnk_03003D70 -_0801D454: .4byte gUnk_020000C0 - - thumb_func_start sub_0801D458 -sub_0801D458: @ 0x0801D458 - push {lr} - adds r2, r0, #0 - cmp r2, #0xf - bhi _0801D488 - ldr r1, _0801D47C @ =gUnk_02001A00 - lsls r0, r2, #2 - adds r1, r0, r1 -_0801D466: - ldrb r0, [r1] - lsls r0, r0, #0x1c - lsrs r0, r0, #0x1c - cmp r0, #0 - blt _0801D478 - cmp r0, #1 - ble _0801D480 - cmp r0, #4 - beq _0801D480 -_0801D478: - adds r0, r2, #0 - b _0801D48A - .align 2, 0 -_0801D47C: .4byte gUnk_02001A00 -_0801D480: - adds r1, #4 - adds r2, #1 - cmp r2, #0xf - bls _0801D466 -_0801D488: - movs r0, #0 -_0801D48A: - pop {pc} - - thumb_func_start sub_0801D48C -sub_0801D48C: @ 0x0801D48C - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - sub sp, #4 - adds r6, r0, #0 - adds r3, r1, #0 - ldr r0, _0801D50C @ =gUnk_02001A00 - mov r8, r0 - lsls r0, r6, #2 - mov r1, r8 - adds r4, r0, r1 - ldrb r0, [r4] - lsrs r5, r0, #4 - subs r5, #1 - movs r0, #1 - rsbs r0, r0, #0 - cmp r5, r0 - beq _0801D4F8 - ldr r2, _0801D510 @ =gUnk_020176A0 - lsls r0, r3, #5 - movs r1, #0x80 - lsls r1, r1, #2 - adds r0, r0, r1 - adds r7, r0, r2 - lsls r0, r3, #2 - add r8, r0 - lsls r0, r6, #5 - adds r0, r0, r1 - adds r6, r0, r2 - movs r3, #0 -_0801D4C8: - ldr r0, [r4] - mov r1, r8 - adds r1, #4 - mov r8, r1 - subs r1, #4 - stm r1!, {r0} - strb r3, [r4] - strb r3, [r4, #1] - strh r3, [r4, #2] - adds r0, r6, #0 - adds r1, r7, #0 - movs r2, #0x20 - str r3, [sp] - bl sub_0801D66C - adds r6, #0x20 - adds r4, #4 - adds r7, #0x20 - subs r5, #1 - movs r0, #1 - rsbs r0, r0, #0 - ldr r3, [sp] - cmp r5, r0 - bne _0801D4C8 -_0801D4F8: - ldr r0, _0801D514 @ =gUnk_0200B644 - ldr r1, [r0] - ldr r2, _0801D518 @ =0xFFFF0000 - orrs r1, r2 - str r1, [r0] - add sp, #4 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0801D50C: .4byte gUnk_02001A00 -_0801D510: .4byte gUnk_020176A0 -_0801D514: .4byte gUnk_0200B644 -_0801D518: .4byte 0xFFFF0000 - - thumb_func_start sub_0801D51C -sub_0801D51C: @ 0x0801D51C - push {r4, lr} - adds r2, r0, #0 - ldr r0, _0801D58C @ =0x05F5E0FF - cmp r2, r0 - bhi _0801D5A0 - ldr r1, _0801D590 @ =0x00989680 - adds r0, r2, #0 - bl Div - adds r4, r0, #0 - lsls r4, r4, #0x1c - ldr r2, _0801D594 @ =0x000F4240 - adds r0, r1, #0 - adds r1, r2, #0 - bl Div - lsls r0, r0, #0x18 - adds r4, r4, r0 - ldr r2, _0801D598 @ =0x000186A0 - adds r0, r1, #0 - adds r1, r2, #0 - bl Div - lsls r0, r0, #0x14 - adds r4, r4, r0 - ldr r2, _0801D59C @ =0x00002710 - adds r0, r1, #0 - adds r1, r2, #0 - bl Div - lsls r0, r0, #0x10 - adds r4, r4, r0 - movs r2, #0xfa - lsls r2, r2, #2 - adds r0, r1, #0 - adds r1, r2, #0 - bl Div - lsls r0, r0, #0xc - adds r4, r4, r0 - adds r0, r1, #0 - movs r1, #0x64 - bl Div - lsls r0, r0, #8 - adds r4, r4, r0 - adds r0, r1, #0 - movs r1, #0xa - bl Div - lsls r0, r0, #4 - adds r4, r4, r0 - adds r4, r4, r1 - adds r0, r4, #0 - b _0801D5A2 - .align 2, 0 -_0801D58C: .4byte 0x05F5E0FF -_0801D590: .4byte 0x00989680 -_0801D594: .4byte 0x000F4240 -_0801D598: .4byte 0x000186A0 -_0801D59C: .4byte 0x00002710 -_0801D5A0: - ldr r0, _0801D5A4 @ =0x99999999 -_0801D5A2: - pop {r4, pc} - .align 2, 0 -_0801D5A4: .4byte 0x99999999 - - thumb_func_start ReadBit -ReadBit: @ 0x0801D5A8 - lsrs r2, r1, #3 - adds r0, r0, r2 - ldrb r0, [r0] - movs r2, #7 - ands r2, r1 - asrs r0, r2 - movs r1, #1 - ands r0, r1 - bx lr - .align 2, 0 - - thumb_func_start WriteBit -WriteBit: @ 0x0801D5BC - lsrs r2, r1, #3 - adds r3, r0, r2 - movs r2, #7 - ands r1, r2 - movs r2, #1 - lsls r2, r1 - ldrb r0, [r3] - adds r1, r0, #0 - orrs r1, r2 - strb r1, [r3] - ands r0, r2 - bx lr - - thumb_func_start ClearBit -ClearBit: @ 0x0801D5D4 - lsrs r2, r1, #3 - adds r3, r0, r2 - movs r2, #7 - ands r1, r2 - movs r2, #1 - lsls r2, r1 - ldrb r0, [r3] - adds r1, r0, #0 - bics r1, r2 - strb r1, [r3] - ands r0, r2 - bx lr \ No newline at end of file +_0801CEBC: .4byte gTextBox \ No newline at end of file diff --git a/asm/code_0801CEC0.s b/asm/code_0801CEC0.s new file mode 100644 index 00000000..17e396e3 --- /dev/null +++ b/asm/code_0801CEC0.s @@ -0,0 +1,863 @@ + .include "asm/macros.inc" + + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_0801CFA8 +sub_0801CFA8: @ 0x0801CFA8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0801CFCC @ =gUnk_02001A00 + movs r1, #0x40 + bl _DmaZero + movs r4, #0 +_0801CFB6: + adds r0, r4, #0 + bl sub_0801CFD0 + adds r4, #1 + cmp r4, #5 + bls _0801CFB6 + adds r0, r5, #0 + bl sub_0801D000 + pop {r4, r5, pc} + .align 2, 0 +_0801CFCC: .4byte gUnk_02001A00 + + thumb_func_start sub_0801CFD0 +sub_0801CFD0: @ 0x0801CFD0 + lsls r0, r0, #2 + ldr r1, _0801CFF8 @ =gUnk_02001A00 + adds r0, r0, r1 + ldrb r2, [r0] + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #4 + orrs r1, r2 + movs r2, #0xf + ands r1, r2 + movs r2, #0x10 + orrs r1, r2 + strb r1, [r0] + movs r1, #0x80 + strb r1, [r0, #1] + ldr r1, _0801CFFC @ =0x0000FFFF + strh r1, [r0, #2] + bx lr + .align 2, 0 +_0801CFF8: .4byte gUnk_02001A00 +_0801CFFC: .4byte 0x0000FFFF + + thumb_func_start sub_0801D000 +sub_0801D000: @ 0x0801D000 + push {lr} + adds r2, r0, #0 + ldr r0, _0801D024 @ =gScreenTransition + movs r1, #0 + cmp r2, #0 + beq _0801D00E + movs r1, #0xf +_0801D00E: + adds r0, #0x2f + strb r1, [r0] + cmp r2, #0 + beq _0801D028 + bl sub_0801D34C + movs r0, #0xf + bl sub_0801CFD0 + b _0801D03A + .align 2, 0 +_0801D024: .4byte gScreenTransition +_0801D028: + ldr r3, _0801D03C @ =gUnk_02001A3C + ldrb r1, [r3] + movs r0, #0xf + ands r0, r1 + cmp r0, #4 + bne _0801D03A + strb r2, [r3] + strb r2, [r3, #1] + strh r2, [r3, #2] +_0801D03A: + pop {pc} + .align 2, 0 +_0801D03C: .4byte gUnk_02001A3C + + thumb_func_start sub_0801D040 +sub_0801D040: @ 0x0801D040 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + str r0, [sp] + adds r6, r1, #0 + adds r0, r6, #0 + bl sub_0801D108 + adds r5, r0, #0 + cmp r5, #0 + bge _0801D0E8 + cmp r6, #0x15 + bhi _0801D064 + movs r4, #1 + b _0801D074 +_0801D064: + ldr r0, _0801D100 @ =gUnk_08133368 + adds r1, r6, #0 + subs r1, #0x16 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r4, [r1, #3] + movs r0, #0xf + ands r4, r0 +_0801D074: + adds r0, r4, #0 + bl sub_0801D134 + adds r5, r0, #0 + cmp r5, #0 + bge _0801D090 + bl sub_0801D34C + adds r0, r4, #0 + bl sub_0801D134 + adds r5, r0, #0 + cmp r5, #0 + blt _0801D0E8 +_0801D090: + lsls r1, r5, #2 + ldr r0, _0801D104 @ =gUnk_02001A00 + adds r3, r1, r0 + movs r0, #0 + strh r6, [r3, #2] + strb r0, [r3, #1] + movs r2, #0x10 + rsbs r2, r2, #0 + lsls r0, r4, #4 + movs r1, #3 + orrs r0, r1 + strb r0, [r3] + subs r4, #1 + cmp r4, #0 + beq _0801D0E0 + movs r0, #0 + mov sl, r0 + movs r1, #0 + mov r8, r1 + movs r0, #0xf + mov sb, r0 + mov ip, r2 + movs r7, #2 +_0801D0BE: + adds r3, #4 + mov r1, r8 + strh r1, [r3, #2] + mov r0, sl + strb r0, [r3, #1] + lsls r2, r4, #4 + ldrb r1, [r3] + mov r0, sb + ands r0, r1 + orrs r0, r2 + mov r1, ip + ands r0, r1 + orrs r0, r7 + strb r0, [r3] + subs r4, #1 + cmp r4, #0 + bne _0801D0BE +_0801D0E0: + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0801D2C8 +_0801D0E8: + ldr r0, [sp] + adds r1, r5, #0 + bl sub_0801D19C + adds r0, r5, #0 + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0801D100: .4byte gUnk_08133368 +_0801D104: .4byte gUnk_02001A00 + + thumb_func_start sub_0801D108 +sub_0801D108: @ 0x0801D108 + push {lr} + adds r2, r0, #0 + cmp r2, #5 + bhi _0801D116 + b _0801D12E +_0801D112: + adds r0, r1, #0 + b _0801D12E +_0801D116: + movs r1, #6 + ldr r0, _0801D130 @ =gUnk_02001A00 + adds r0, #0x18 +_0801D11C: + ldrh r3, [r0, #2] + cmp r2, r3 + beq _0801D112 + adds r0, #4 + adds r1, #1 + cmp r1, #0xf + bls _0801D11C + movs r0, #1 + rsbs r0, r0, #0 +_0801D12E: + pop {pc} + .align 2, 0 +_0801D130: .4byte gUnk_02001A00 + + thumb_func_start sub_0801D134 +sub_0801D134: @ 0x0801D134 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r2, #6 + ldr r0, _0801D154 @ =gUnk_02001A00 + adds r3, r0, #0 + adds r3, #0x18 +_0801D142: + ldrb r0, [r3] + lsls r0, r0, #0x1c + cmp r0, #0 + bne _0801D158 + adds r1, #1 + cmp r4, r1 + bhi _0801D15A + b _0801D180 + .align 2, 0 +_0801D154: .4byte gUnk_02001A00 +_0801D158: + movs r1, #0 +_0801D15A: + adds r3, #4 + adds r2, #1 + cmp r2, #0xf + bls _0801D142 + movs r1, #0 + movs r2, #6 + ldr r0, _0801D188 @ =gUnk_02001A00 + adds r3, r0, #0 + adds r3, #0x18 +_0801D16C: + ldrb r0, [r3] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #1 + bgt _0801D18C + cmp r0, #0 + blt _0801D18C + adds r1, #1 + cmp r4, r1 + bhi _0801D18E +_0801D180: + subs r0, r1, #1 + subs r0, r2, r0 + b _0801D19A + .align 2, 0 +_0801D188: .4byte gUnk_02001A00 +_0801D18C: + movs r1, #0 +_0801D18E: + adds r3, #4 + adds r2, #1 + cmp r2, #0xf + bls _0801D16C + movs r0, #1 + rsbs r0, r0, #0 +_0801D19A: + pop {r4, pc} + + thumb_func_start sub_0801D19C +sub_0801D19C: @ 0x0801D19C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r3, r1, #0 + cmp r3, #0 + bge _0801D1A8 + movs r3, #0 +_0801D1A8: + adds r0, r4, #0 + adds r0, #0x28 + ldrb r0, [r0] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x7e + bls _0801D1BE + adds r0, r4, #0 + adds r0, #0x27 + strb r3, [r0] +_0801D1BE: + movs r0, #0xf + adds r1, r3, #0 + ands r1, r0 + ldrb r2, [r4, #0x1a] + movs r5, #0x10 + rsbs r5, r5, #0 + adds r0, r5, #0 + ands r0, r2 + orrs r0, r1 + movs r2, #0xf + adds r1, r3, #0 + ands r1, r2 + lsls r1, r1, #4 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1a] + lsls r1, r3, #2 + ldr r0, _0801D22C @ =gUnk_02001A00 + adds r4, r1, r0 + ldr r0, [r4] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #4 + beq _0801D22A + ldrb r0, [r4, #1] + adds r0, #1 + strb r0, [r4, #1] + ldr r0, [r4] + lsls r0, r0, #0x18 + lsrs r3, r0, #0x1c + ldrb r1, [r4] + adds r0, r5, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r4] + subs r3, #1 + cmp r3, #0 + beq _0801D22A + movs r7, #0xf + adds r6, r5, #0 + movs r5, #2 +_0801D212: + adds r4, #4 + lsls r2, r3, #4 + ldrb r1, [r4] + adds r0, r7, #0 + ands r0, r1 + orrs r0, r2 + ands r0, r6 + orrs r0, r5 + strb r0, [r4] + subs r3, #1 + cmp r3, #0 + bne _0801D212 +_0801D22A: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0801D22C: .4byte gUnk_02001A00 + + thumb_func_start sub_0801D230 +sub_0801D230: @ 0x0801D230 + push {lr} + adds r0, #0x27 + ldrb r2, [r0] + movs r1, #0 + strb r1, [r0] + adds r0, r2, #0 + bl sub_0801D244 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0801D244 +sub_0801D244: @ 0x0801D244 + push {r4, r5, r6, lr} + lsls r0, r0, #2 + ldr r1, _0801D288 @ =gUnk_02001A00 + adds r2, r0, r1 + ldr r0, [r2] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #3 + bne _0801D284 + ldrb r0, [r2, #1] + subs r0, #1 + strb r0, [r2, #1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801D284 + ldr r0, [r2] + lsls r0, r0, #0x18 + lsrs r3, r0, #0x1c + movs r5, #0 + movs r6, #0x10 + rsbs r6, r6, #0 + movs r4, #1 +_0801D270: + strb r5, [r2, #1] + ldrb r1, [r2] + adds r0, r6, #0 + ands r0, r1 + orrs r0, r4 + strb r0, [r2] + adds r2, #4 + subs r3, #1 + cmp r3, #0 + bne _0801D270 +_0801D284: + pop {r4, r5, r6, pc} + .align 2, 0 +_0801D288: .4byte gUnk_02001A00 + + thumb_func_start sub_0801D28C +sub_0801D28C: @ 0x0801D28C + push {lr} + adds r3, r1, #0 + adds r0, #0x27 + ldrb r2, [r0] + ldr r1, _0801D2B0 @ =gUnk_02001A00 + lsls r0, r2, #2 + adds r1, r0, r1 + ldrb r0, [r1] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #3 + bne _0801D2AE + strh r3, [r1, #2] + adds r0, r3, #0 + adds r1, r2, #0 + bl sub_0801D2C8 +_0801D2AE: + pop {pc} + .align 2, 0 +_0801D2B0: .4byte gUnk_02001A00 + + thumb_func_start sub_0801D2B4 +sub_0801D2B4: @ 0x0801D2B4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_0801D230 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0801D040 + pop {r4, r5, pc} + + thumb_func_start sub_0801D2C8 +sub_0801D2C8: @ 0x0801D2C8 + push {r4, lr} + adds r3, r0, #0 + ldr r2, _0801D2F8 @ =gUnk_0200B644 + adds r4, r1, #0 + adds r4, #0x10 + movs r1, #1 + lsls r1, r4 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + cmp r3, #5 + bls _0801D33C + cmp r3, #0x15 + bne _0801D300 + ldr r2, _0801D2FC @ =gUnk_020176A0 + adds r0, r2, #0 + adds r0, #0x78 + ldrh r0, [r0] + lsls r1, r4, #5 + adds r1, r1, r2 + movs r2, #0x20 + bl _DmaFill16 + b _0801D33C + .align 2, 0 +_0801D2F8: .4byte gUnk_0200B644 +_0801D2FC: .4byte gUnk_020176A0 +_0801D300: + cmp r3, #0x14 + bhi _0801D31C + subs r0, r3, #6 + lsls r0, r0, #5 + ldr r1, _0801D318 @ =gUnk_020176A0 + adds r0, r0, r1 + adds r1, r4, #0 + movs r2, #1 + bl sub_0801D754 + b _0801D33C + .align 2, 0 +_0801D318: .4byte gUnk_020176A0 +_0801D31C: + ldr r1, _0801D340 @ =gUnk_08133368 + adds r0, r3, #0 + subs r0, #0x16 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + lsrs r2, r0, #0x18 + movs r1, #0xf + ands r2, r1 + ldr r1, _0801D344 @ =0x00FFFFFF + ands r0, r1 + ldr r1, _0801D348 @ =gUnk_085A2E80 + adds r0, r0, r1 + adds r1, r4, #0 + bl sub_0801D754 +_0801D33C: + pop {r4, pc} + .align 2, 0 +_0801D340: .4byte gUnk_08133368 +_0801D344: .4byte 0x00FFFFFF +_0801D348: .4byte gUnk_085A2E80 + + thumb_func_start sub_0801D34C +sub_0801D34C: @ 0x0801D34C + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + movs r2, #0 + movs r3, #0 + ldr r1, _0801D37C @ =gUnk_02001A00 +_0801D356: + mov r4, sp + adds r0, r4, r2 + strb r2, [r0] + ldrb r0, [r1] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #1 + bgt _0801D370 + cmp r0, #0 + blt _0801D370 + strb r3, [r1] + strb r3, [r1, #1] + strh r3, [r1, #2] +_0801D370: + adds r1, #4 + adds r2, #1 + cmp r2, #0xf + bls _0801D356 + movs r4, #6 + b _0801D390 + .align 2, 0 +_0801D37C: .4byte gUnk_02001A00 +_0801D380: + cmp r4, r1 + ble _0801D390 + mov r2, sp + adds r0, r2, r4 + strb r1, [r0] + adds r0, r4, #0 + bl sub_0801D48C +_0801D390: + adds r0, r4, #1 + bl sub_0801D458 + adds r4, r0, #0 + cmp r4, #0 + beq _0801D3AC + movs r0, #1 + bl sub_0801D134 + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _0801D380 +_0801D3AC: + movs r1, #0 + ldr r4, _0801D450 @ =gUnk_03003D70 + mov ip, r4 +_0801D3B2: + lsls r0, r1, #3 + mov r2, ip + adds r3, r0, r2 + adds r0, r3, #0 + ldr r3, [r3, #4] + adds r5, r1, #1 + cmp r0, r3 + beq _0801D444 + movs r7, #0x10 + rsbs r7, r7, #0 + adds r4, r0, #0 + ldr r6, _0801D454 @ =gUnk_020000C0 +_0801D3CA: + ldrb r0, [r3, #8] + cmp r0, #9 + beq _0801D43E + adds r1, r3, #0 + adds r1, #0x28 + ldrb r0, [r1] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x7e + bhi _0801D40C + ldrb r1, [r1] + lsls r1, r1, #6 + adds r1, r1, r6 + ldrb r0, [r1, #5] + add r0, sp + ldrb r0, [r0] + strb r0, [r1, #5] + ldrb r0, [r1, #0x15] + add r0, sp + ldrb r0, [r0] + strb r0, [r1, #0x15] + adds r2, r1, #0 + adds r2, #0x25 + ldrb r0, [r2] + add r0, sp + ldrb r0, [r0] + strb r0, [r2] + adds r1, #0x35 + ldrb r0, [r1] + add r0, sp + ldrb r0, [r0] + strb r0, [r1] +_0801D40C: + adds r1, r3, #0 + adds r1, #0x27 + ldrb r0, [r1] + add r0, sp + ldrb r0, [r0] + strb r0, [r1] + ldrb r2, [r3, #0x1a] + lsls r0, r2, #0x1c + lsrs r0, r0, #0x1c + add r0, sp + ldrb r1, [r0] + movs r0, #0xf + ands r1, r0 + adds r0, r7, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x1a] + lsrs r1, r0, #4 + add r1, sp + ldrb r2, [r1] + lsls r2, r2, #4 + movs r1, #0xf + ands r0, r1 + orrs r0, r2 + strb r0, [r3, #0x1a] +_0801D43E: + ldr r3, [r3, #4] + cmp r4, r3 + bne _0801D3CA +_0801D444: + adds r1, r5, #0 + cmp r1, #8 + bls _0801D3B2 + add sp, #0x10 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0801D450: .4byte gUnk_03003D70 +_0801D454: .4byte gUnk_020000C0 + + thumb_func_start sub_0801D458 +sub_0801D458: @ 0x0801D458 + push {lr} + adds r2, r0, #0 + cmp r2, #0xf + bhi _0801D488 + ldr r1, _0801D47C @ =gUnk_02001A00 + lsls r0, r2, #2 + adds r1, r0, r1 +_0801D466: + ldrb r0, [r1] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #0 + blt _0801D478 + cmp r0, #1 + ble _0801D480 + cmp r0, #4 + beq _0801D480 +_0801D478: + adds r0, r2, #0 + b _0801D48A + .align 2, 0 +_0801D47C: .4byte gUnk_02001A00 +_0801D480: + adds r1, #4 + adds r2, #1 + cmp r2, #0xf + bls _0801D466 +_0801D488: + movs r0, #0 +_0801D48A: + pop {pc} + + thumb_func_start sub_0801D48C +sub_0801D48C: @ 0x0801D48C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r6, r0, #0 + adds r3, r1, #0 + ldr r0, _0801D50C @ =gUnk_02001A00 + mov r8, r0 + lsls r0, r6, #2 + mov r1, r8 + adds r4, r0, r1 + ldrb r0, [r4] + lsrs r5, r0, #4 + subs r5, #1 + movs r0, #1 + rsbs r0, r0, #0 + cmp r5, r0 + beq _0801D4F8 + ldr r2, _0801D510 @ =gUnk_020176A0 + lsls r0, r3, #5 + movs r1, #0x80 + lsls r1, r1, #2 + adds r0, r0, r1 + adds r7, r0, r2 + lsls r0, r3, #2 + add r8, r0 + lsls r0, r6, #5 + adds r0, r0, r1 + adds r6, r0, r2 + movs r3, #0 +_0801D4C8: + ldr r0, [r4] + mov r1, r8 + adds r1, #4 + mov r8, r1 + subs r1, #4 + stm r1!, {r0} + strb r3, [r4] + strb r3, [r4, #1] + strh r3, [r4, #2] + adds r0, r6, #0 + adds r1, r7, #0 + movs r2, #0x20 + str r3, [sp] + bl sub_0801D66C + adds r6, #0x20 + adds r4, #4 + adds r7, #0x20 + subs r5, #1 + movs r0, #1 + rsbs r0, r0, #0 + ldr r3, [sp] + cmp r5, r0 + bne _0801D4C8 +_0801D4F8: + ldr r0, _0801D514 @ =gUnk_0200B644 + ldr r1, [r0] + ldr r2, _0801D518 @ =0xFFFF0000 + orrs r1, r2 + str r1, [r0] + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0801D50C: .4byte gUnk_02001A00 +_0801D510: .4byte gUnk_020176A0 +_0801D514: .4byte gUnk_0200B644 +_0801D518: .4byte 0xFFFF0000 + + thumb_func_start sub_0801D51C +sub_0801D51C: @ 0x0801D51C + push {r4, lr} + adds r2, r0, #0 + ldr r0, _0801D58C @ =0x05F5E0FF + cmp r2, r0 + bhi _0801D5A0 + ldr r1, _0801D590 @ =0x00989680 + adds r0, r2, #0 + bl Div + adds r4, r0, #0 + lsls r4, r4, #0x1c + ldr r2, _0801D594 @ =0x000F4240 + adds r0, r1, #0 + adds r1, r2, #0 + bl Div + lsls r0, r0, #0x18 + adds r4, r4, r0 + ldr r2, _0801D598 @ =0x000186A0 + adds r0, r1, #0 + adds r1, r2, #0 + bl Div + lsls r0, r0, #0x14 + adds r4, r4, r0 + ldr r2, _0801D59C @ =0x00002710 + adds r0, r1, #0 + adds r1, r2, #0 + bl Div + lsls r0, r0, #0x10 + adds r4, r4, r0 + movs r2, #0xfa + lsls r2, r2, #2 + adds r0, r1, #0 + adds r1, r2, #0 + bl Div + lsls r0, r0, #0xc + adds r4, r4, r0 + adds r0, r1, #0 + movs r1, #0x64 + bl Div + lsls r0, r0, #8 + adds r4, r4, r0 + adds r0, r1, #0 + movs r1, #0xa + bl Div + lsls r0, r0, #4 + adds r4, r4, r0 + adds r4, r4, r1 + adds r0, r4, #0 + b _0801D5A2 + .align 2, 0 +_0801D58C: .4byte 0x05F5E0FF +_0801D590: .4byte 0x00989680 +_0801D594: .4byte 0x000F4240 +_0801D598: .4byte 0x000186A0 +_0801D59C: .4byte 0x00002710 +_0801D5A0: + ldr r0, _0801D5A4 @ =0x99999999 +_0801D5A2: + pop {r4, pc} + .align 2, 0 +_0801D5A4: .4byte 0x99999999 + + thumb_func_start ReadBit +ReadBit: @ 0x0801D5A8 + lsrs r2, r1, #3 + adds r0, r0, r2 + ldrb r0, [r0] + movs r2, #7 + ands r2, r1 + asrs r0, r2 + movs r1, #1 + ands r0, r1 + bx lr + .align 2, 0 + + thumb_func_start WriteBit +WriteBit: @ 0x0801D5BC + lsrs r2, r1, #3 + adds r3, r0, r2 + movs r2, #7 + ands r1, r2 + movs r2, #1 + lsls r2, r1 + ldrb r0, [r3] + adds r1, r0, #0 + orrs r1, r2 + strb r1, [r3] + ands r0, r2 + bx lr + + thumb_func_start ClearBit +ClearBit: @ 0x0801D5D4 + lsrs r2, r1, #3 + adds r3, r0, r2 + movs r2, #7 + ands r1, r2 + movs r2, #1 + lsls r2, r1 + ldrb r0, [r3] + adds r1, r0, #0 + bics r1, r2 + strb r1, [r3] + ands r0, r2 + bx lr \ No newline at end of file diff --git a/asm/code_08070698.s b/asm/code_08070698.s index 762cec47..3d9d7eac 100644 --- a/asm/code_08070698.s +++ b/asm/code_08070698.s @@ -6,121 +6,6 @@ .text - thumb_func_start sub_08070698 -sub_08070698: @ 0x08070698 - push {r4, r5, r6, lr} - sub sp, #4 - adds r4, r0, #0 - ldr r6, _08070788 @ =gPlayerState - movs r0, #0xff - strb r0, [r6] - ldr r1, _0807078C @ =gPlayerEntity - ldrh r0, [r1, #0x2e] - strh r0, [r6, #0x16] - ldrh r0, [r1, #0x32] - strh r0, [r6, #0x18] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #4 - orrs r0, r1 - movs r1, #0x39 - rsbs r1, r1, #0 - ands r0, r1 - movs r1, #8 - orrs r0, r1 - strb r0, [r2] - ldrb r1, [r4, #0x18] - movs r0, #0x31 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #0x10 - orrs r0, r1 - strb r0, [r4, #0x18] - movs r0, #0x20 - strb r0, [r4, #0x16] - adds r1, r4, #0 - adds r1, #0x3b - movs r0, #8 - strb r0, [r1] - adds r1, #4 - movs r0, #0x79 - strb r0, [r1] - ldr r0, _08070790 @ =gUnk_08114F88 - str r0, [r4, #0x48] - movs r0, #1 - strh r0, [r4, #0x12] - adds r0, #0xff - strh r0, [r6, #8] - adds r0, r4, #0 - bl sub_0806FDA0 - adds r0, r4, #0 - movs r1, #1 - movs r2, #2 - bl sub_080AE008 - adds r0, r4, #0 - movs r1, #2 - bl InitAnimationForceUpdate - adds r0, r4, #0 - adds r0, #0x38 - ldrb r0, [r0] - cmp r0, #0 - bne _08070726 - adds r0, r4, #0 - bl sub_08016A30 -_08070726: - movs r0, #0x10 - bl IsItemEquipped - cmp r0, #2 - beq _08070734 - bl sub_08077728 -_08070734: - bl sub_0807A108 - bl sub_0807AEE4 - bl sub_08078EFC - adds r5, r0, #0 - cmp r5, #0 - bne _08070784 - bl sub_0807921C - bl sub_0807A1B8 - adds r1, r6, #0 - adds r1, #0x26 - ldrb r0, [r1] - cmp r0, #0 - beq _08070784 - movs r0, #1 - strb r0, [r1] - bl sub_08079938 - adds r1, r6, #0 - adds r1, #0xa8 - movs r0, #7 - strb r0, [r1] - adds r0, r4, #0 - bl sub_0807ACCC - str r5, [sp] - movs r0, #6 - movs r1, #0xf - movs r2, #6 - movs r3, #0xb - bl sub_0805EB2C - cmp r0, #0 - beq _08070784 - bl DeleteEntity -_08070784: - add sp, #4 - pop {r4, r5, r6, pc} - .align 2, 0 -_08070788: .4byte gPlayerState -_0807078C: .4byte gPlayerEntity -_08070790: .4byte gUnk_08114F88 - thumb_func_start sub_08070794 sub_08070794: @ 0x08070794 push {r4, r5, r6, r7, lr} diff --git a/include/entity.h b/include/entity.h index 0b76eaa5..04e09d94 100644 --- a/include/entity.h +++ b/include/entity.h @@ -39,7 +39,7 @@ typedef struct Entity { /*0x12*/ s16 spriteIndex; /*0x14*/ u8 animationState; /*0x15*/ u8 direction; - /*0x16*/ u8 possibleBool; + /*0x16*/ u8 field_0x16; /*0x17*/ u8 field_0x17; /*0x18*/ union { /* */ u8 raw; @@ -47,8 +47,7 @@ typedef struct Entity { /* */ u8 draw : 2; // 1-2 /* */ u8 ss2 : 1; // 4 /* */ u8 ss3 : 1; // 8 - /* */ u8 bigShadow : 1; //0x10 - /* */ u8 giantShadow : 1; //0x20 + /* */ u8 shadow : 2; //0x10-0x20 /* */ u8 flipX : 1; //0x40 /* */ u8 flipY : 1; //0x80 /* */ } PACKED b; diff --git a/include/functions.h b/include/functions.h index 98282908..f2d59d59 100644 --- a/include/functions.h +++ b/include/functions.h @@ -231,4 +231,15 @@ extern void sub_08033744(Entity*); extern void sub_0800417E(Entity*, u32); extern void sub_080784C8(); extern void sub_08017640(); +extern void sub_0806FDA0(Entity*); +extern void sub_080AE008(Entity*, u32, u32); +extern void sub_08016A30(Entity*); +extern u32 IsItemEquipped(u32); +extern void sub_08077728(); +extern void sub_0807AEE4(); +extern u32 sub_08078EFC(); +extern void sub_0807921C(); +extern void sub_0807A1B8(); +extern void sub_08079938(); +extern void sub_0807ACCC(Entity*); #endif \ No newline at end of file diff --git a/linker.ld b/linker.ld index 6fbf3374..f701aa1a 100644 --- a/linker.ld +++ b/linker.ld @@ -315,6 +315,8 @@ SECTIONS { asm/drawHealth.o(.text); asm/sub_0801C824.o(.text); asm/code_0801C85C.o(.text); + src/ezloReminder.o(.text); + asm/code_0801CEC0.o(.text); src/dma.o(.text); asm/sub_0801D66C.o(.text); src/input.o(.text); diff --git a/src/ezloReminder.c b/src/ezloReminder.c new file mode 100644 index 00000000..d82cfb75 --- /dev/null +++ b/src/ezloReminder.c @@ -0,0 +1,123 @@ +#include "global.h" +#include "entity.h" +#include "functions.h" +#include "textbox.h" + +typedef struct { + s8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + u8 unk4; + u8 unk5; + u8 unk6; + u8 unk7; + u8 unk8; + u8 unk9; + u8 unkA; + u8 unkB; + u16 unkC; + u16 unkE; + u16 unk10; + u8 unk12; + u8 unk13; +} Element; + +typedef struct { + u8 unk0[0x24]; + u8 ezloNagFuncIndex; +} struct_0200AF00; + +extern struct_0200AF00 gUnk_0200AF00; + +/////////////////////////////////////////////////////////////// + +extern void sub_0805ECEC(u32, u32, u32, u32); +extern void sub_0801CAD0(Element*); + +extern void (*const gUnk_080C904C[])(Element*); + +extern u16 gUnk_080C9058[]; + +void EzloReminder(Element* arg0) { + gUnk_080C904C[arg0->unk4](arg0); +} + +#ifdef NON_MATCHING // REG SWAP +extern u32 gUnk_080C9094; + +void sub_0801CED8(Element* arg0) { + if (gUnk_0200AF00.ezloNagFuncIndex == 1) { + gUnk_0200AF00.ezloNagFuncIndex = 2; + arg0->unkC = 0x10; + arg0->unkE = 0x90; + arg0->unk6 = 0; + arg0->unk1 = 7; + arg0->unk4 = 1; + arg0->unk0 |= 2; + sub_0801CAB8(arg0, &gUnk_080C9094); + } +} +#else +NAKED +void sub_0801CED8(Element* arg0) { + asm_unified("\ + push {r4, lr}\n\ + adds r3, r0, #0\n\ + ldr r0, _0801CF10 @ =gUnk_0200AF00\n\ + adds r1, r0, #0\n\ + adds r1, #0x24\n\ + ldrb r4, [r1]\n\ + cmp r4, #1\n\ + bne _0801CF0E\n\ + movs r2, #2\n\ + movs r0, #2\n\ + strb r0, [r1]\n\ + movs r1, #0\n\ + movs r0, #0x10\n\ + strh r0, [r3, #0xc]\n\ + movs r0, #0x90\n\ + strh r0, [r3, #0xe]\n\ + strb r1, [r3, #6]\n\ + movs r0, #7\n\ + strb r0, [r3, #1]\n\ + strb r4, [r3, #4]\n\ + ldrb r0, [r3]\n\ + orrs r0, r2\n\ + strb r0, [r3]\n\ + ldr r1, _0801CF14 @ =gUnk_080C9094\n\ + adds r0, r3, #0\n\ + bl sub_0801CAB8\n\ + _0801CF0E:\n\ + pop {r4, pc}\n\ + .align 2, 0\n\ + _0801CF10: .4byte gUnk_0200AF00\n\ + _0801CF14: .4byte gUnk_080C9094"); +} +#endif + +void sub_0801CF18(Element* arg0) { + u32 temp; + + temp = gUnk_080C9058[arg0->unk6++]; + sub_0805ECEC(0, temp, temp, 0); + if (temp == 0) { + arg0->unk4 = 2; + arg0->unk1 = 8; + gUnk_0200AF00.ezloNagFuncIndex = 3; + PlaySFX(0x173); + } +} + +void sub_0801CF60(Element* arg0) { + + if ((gUnk_0200AF00.ezloNagFuncIndex >= 5) || (gTextBox.doTextBox & 0x7f)) { + arg0->unk4 = 0; + arg0->unk0 &= -3; + return; + } + sub_0801CAD0(arg0); + if (arg0->unk13 == 1) { + gUnk_0200AF00.ezloNagFuncIndex = 4; + } +} \ No newline at end of file diff --git a/src/object/object48.c b/src/object/object48.c index c2a25071..57d772a9 100755 --- a/src/object/object48.c +++ b/src/object/object48.c @@ -9,7 +9,6 @@ #include "readKeyInput.h" #include "structures.h" -extern bool32 sub_080AE008(Entity*, int, int); extern int sub_0807A094(int); extern u32 sub_0801D754(const u8*, u8, u8); extern u32 sub_080041EC(int, int); diff --git a/src/sub_08070680.c b/src/sub_08070680.c index d5b5b517..642167df 100644 --- a/src/sub_08070680.c +++ b/src/sub_08070680.c @@ -1,9 +1,62 @@ #include "global.h" #include "entity.h" +#include "player.h" +#include "functions.h" extern void (*gUnk_0811B9E0[])(Entity*); +extern BoundingBox gUnk_08114F88; + // inject void sub_08070680(Entity* this) { gUnk_0811B9E0[this->action](this); } + + +void sub_08070698(Entity *this) +{ + u32 uVar1; + int iVar2; + Entity *ent; + + gPlayerState.field_0x0[0] = 0xff; + gPlayerState.field_0x14[1] = gPlayerEntity.x.HALF.HI; + gPlayerState.field_0x14[2] = gPlayerEntity.y.HALF.HI; + this->flags = this->flags | 0x80; + this->spritePriority.b0 = 0xc; + this->spritePriority.b1 = 1; + this->spriteSettings.b.shadow = 1; + this->field_0x16 = 0x20; + this->flags2 = 8; + this->damageType = 0x79; + this->boundingBox = &gUnk_08114F88; + this->spriteIndex = 1; + gPlayerState.field_0x8 = 0x100; + sub_0806FDA0(this); + sub_080AE008(this, 1, 2); + InitAnimationForceUpdate(this, 2); + if (this->collisionLayer == 0) { + sub_08016A30(this); + } + uVar1 = IsItemEquipped(0x10); + if (uVar1 != 2) { + sub_08077728(); + } + sub_0807A108(); + sub_0807AEE4(); + iVar2 = sub_08078EFC(); + if (iVar2 == 0) { + sub_0807921C(); + sub_0807A1B8(); + if (gPlayerState.swimState != 0) { + gPlayerState.swimState = 1; + sub_08079938(); + gPlayerState.field_0xa8[0] = 7; + sub_0807ACCC(this); + ent = sub_0805EB2C(0x6, 0xf, 0x6, 0xb, 0x0); + if (ent != NULL) { + DeleteEntity(ent); + } + } + } +} \ No newline at end of file