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/asm/managerA.s b/asm/managerA.s deleted file mode 100644 index 68a3204a..00000000 --- a/asm/managerA.s +++ /dev/null @@ -1,309 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_08058380 -sub_08058380: @ 0x08058380 - push {lr} - ldr r2, _08058394 @ =gUnk_081081F4 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08058394: .4byte gUnk_081081F4 - - thumb_func_start sub_08058398 -sub_08058398: @ 0x08058398 - push {r4, lr} - adds r4, r0, #0 - ldrh r0, [r4, #0x3c] - bl CheckFlags - cmp r0, #0 - beq _080583AA - bl DeleteThisEntity -_080583AA: - adds r0, r4, #0 - adds r0, #0x3a - ldrb r1, [r0] - lsls r1, r1, #3 - strh r1, [r4, #0x24] - adds r0, #1 - ldrb r2, [r0] - lsls r2, r2, #3 - strh r2, [r4, #0x26] - subs r0, #3 - ldrb r0, [r0] - lsls r0, r0, #4 - adds r1, r1, r0 - strh r1, [r4, #0x20] - adds r0, r4, #0 - adds r0, #0x39 - ldrb r0, [r0] - lsls r0, r0, #4 - adds r2, r2, r0 - strh r2, [r4, #0x22] - adds r0, r4, #0 - movs r1, #6 - bl sub_0805E3A0 - ldrh r0, [r4, #0x3e] - cmp r0, #0 - bne _080583E4 - movs r0, #2 - b _080583E6 -_080583E4: - movs r0, #1 -_080583E6: - strb r0, [r4, #0xc] - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080583EC -sub_080583EC: @ 0x080583EC - push {r4, lr} - adds r4, r0, #0 - ldrh r0, [r4, #0x3e] - bl CheckFlags - cmp r0, #0 - beq _08058404 - movs r0, #2 - strb r0, [r4, #0xc] - adds r0, r4, #0 - bl sub_08058408 -_08058404: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08058408 -sub_08058408: @ 0x08058408 - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldr r6, _0805843C @ =gPlayerState - ldr r5, [r6, #0x30] - movs r0, #8 - ands r5, r0 - cmp r5, #0 - bne _08058488 - ldrh r0, [r4, #0x20] - ldrh r1, [r4, #0x22] - ldrh r2, [r4, #0x24] - ldrh r3, [r4, #0x26] - bl CheckPlayerInRegion - cmp r0, #0 - beq _08058488 - ldrb r0, [r4, #0xa] - cmp r0, #1 - beq _08058488 - cmp r0, #1 - ble _08058450 - cmp r0, #2 - beq _08058440 - cmp r0, #3 - beq _0805847C - b _08058450 - .align 2, 0 -_0805843C: .4byte gPlayerState -_08058440: - adds r0, r4, #0 - bl sub_080585DC - ldr r0, [r6, #0x30] - movs r1, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08058488 -_08058450: - adds r0, r4, #0 - bl sub_080585DC - adds r0, r4, #0 - bl sub_0805848C - cmp r0, #0 - beq _08058488 - movs r0, #3 - bl sub_08078A90 - bl sub_08078B48 - bl sub_0805E544 - movs r0, #0 - movs r1, #3 - strb r1, [r4, #0xc] - strb r0, [r4, #0xd] - movs r0, #0x1e - strb r0, [r4, #0xe] - b _08058488 -_0805847C: - movs r0, #4 - strb r0, [r4, #0xc] - strb r5, [r4, #0xd] - ldrh r0, [r4, #0x36] - bl sub_080186C0 -_08058488: - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_0805848C -sub_0805848C: @ 0x0805848C - push {lr} - ldr r0, _080584A4 @ =gPlayerState - adds r0, #0xa8 - ldrb r0, [r0] - subs r0, #5 - cmp r0, #0x17 - bhi _08058510 - lsls r0, r0, #2 - ldr r1, _080584A8 @ =_080584AC - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080584A4: .4byte gPlayerState -_080584A8: .4byte _080584AC -_080584AC: @ jump table - .4byte _0805850C @ case 0 - .4byte _08058510 @ case 1 - .4byte _0805850C @ case 2 - .4byte _0805850C @ case 3 - .4byte _08058510 @ case 4 - .4byte _0805850C @ case 5 - .4byte _0805850C @ case 6 - .4byte _0805850C @ case 7 - .4byte _0805850C @ case 8 - .4byte _0805850C @ case 9 - .4byte _0805850C @ case 10 - .4byte _0805850C @ case 11 - .4byte _0805850C @ case 12 - .4byte _0805850C @ case 13 - .4byte _0805850C @ case 14 - .4byte _0805850C @ case 15 - .4byte _0805850C @ case 16 - .4byte _0805850C @ case 17 - .4byte _0805850C @ case 18 - .4byte _0805850C @ case 19 - .4byte _08058510 @ case 20 - .4byte _08058510 @ case 21 - .4byte _0805850C @ case 22 - .4byte _0805850C @ case 23 -_0805850C: - movs r0, #0 - b _08058512 -_08058510: - movs r0, #1 -_08058512: - pop {pc} - - thumb_func_start sub_08058514 -sub_08058514: @ 0x08058514 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xd] - cmp r0, #1 - beq _08058532 - cmp r0, #1 - bgt _08058528 - cmp r0, #0 - beq _08058570 - b _080585A6 -_08058528: - cmp r0, #2 - beq _08058570 - cmp r0, #3 - beq _08058584 - b _080585A6 -_08058532: - ldr r2, _08058564 @ =gPlayerState - ldr r0, [r2, #0x30] - ldr r1, _08058568 @ =0x00001235 - ands r0, r1 - cmp r0, #0 - bne _080585A6 - ldr r0, _0805856C @ =gPlayerEntity - movs r1, #0x36 - ldrsh r0, [r0, r1] - cmp r0, #0 - bne _080585A6 - strb r0, [r2, #2] - ldrh r0, [r4, #0x36] - adds r1, r4, #0 - adds r1, #0x35 - ldrb r1, [r1] - bl sub_08078AA8 - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - movs r0, #0x1e - strb r0, [r4, #0xe] - b _080585A6 - .align 2, 0 -_08058564: .4byte gPlayerState -_08058568: .4byte 0x00001235 -_0805856C: .4byte gPlayerEntity -_08058570: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080585A6 - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - b _080585A6 -_08058584: - ldr r0, _080585A8 @ =gPlayerEntity - ldrb r0, [r0, #0xc] - cmp r0, #1 - beq _08058590 - cmp r0, #9 - bne _080585A6 -_08058590: - ldr r0, _080585AC @ =gPlayerState - adds r0, #0x8b - movs r1, #1 - strb r1, [r0] - bl UnfreezeTime - ldrh r0, [r4, #0x3c] - bl SetFlag - bl DeleteThisEntity -_080585A6: - pop {r4, pc} - .align 2, 0 -_080585A8: .4byte gPlayerEntity -_080585AC: .4byte gPlayerState - - thumb_func_start sub_080585B0 -sub_080585B0: @ 0x080585B0 - push {r4, lr} - adds r4, r0, #0 - ldr r0, _080585D8 @ =gArea - adds r0, #0x28 - ldrb r0, [r0] - cmp r0, #0xff - beq _080585C2 - bl DeleteThisEntity -_080585C2: - ldrh r0, [r4, #0x3c] - bl CheckFlags - cmp r0, #0 - beq _080585D4 - bl sub_0801855C - bl DeleteThisEntity -_080585D4: - pop {r4, pc} - .align 2, 0 -_080585D8: .4byte gArea - - thumb_func_start sub_080585DC -sub_080585DC: @ 0x080585DC - push {lr} - ldrh r0, [r0, #0x3c] - bl CheckFlags - cmp r0, #0 - beq _080585EC - bl DeleteThisEntity -_080585EC: - pop {pc} - .align 2, 0 diff --git a/asm/miniFireballGuy.s b/asm/miniFireballGuy.s deleted file mode 100644 index d72b24f6..00000000 --- a/asm/miniFireballGuy.s +++ /dev/null @@ -1,55 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_08045678 -sub_08045678: @ 0x08045678 - push {r4, r5, lr} - adds r5, r0, #0 - movs r0, #0xe0 - lsls r0, r0, #9 - str r0, [r5, #0x20] - ldrb r0, [r5, #0xe] - cmp r0, #0 - beq _0804568E - subs r0, #1 - strb r0, [r5, #0xe] - b _080456D4 -_0804568E: - bl Random - movs r1, #3 - ands r0, r1 - strb r0, [r5, #0xe] - adds r0, r5, #0 - bl sub_08049FA0 - cmp r0, #0 - bne _080456CA - bl Random - movs r1, #3 - ands r1, r0 - cmp r1, #0 - beq _080456CA - adds r0, r5, #0 - bl sub_08049EE4 - adds r4, r0, #0 - bl Random - movs r1, #8 - ands r0, r1 - adds r0, #0xfc - adds r4, r4, r0 - movs r0, #0x18 - ands r4, r0 - strb r4, [r5, #0x15] - b _080456D4 -_080456CA: - bl Random - movs r1, #0x18 - ands r0, r1 - strb r0, [r5, #0x15] -_080456D4: - pop {r4, r5, pc} - .align 2, 0 diff --git a/include/entity.h b/include/entity.h index bc27562f..cf31480e 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,7 +47,7 @@ typedef struct Entity { /* */ u8 draw : 2; // 1-2 /* */ u8 ss2 : 1; // 4 /* */ u8 ss3 : 1; // 8 - /* */ u8 shadow : 2; //0x10 + /* */ 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 a0231ce8..57ffde62 100644 --- a/include/functions.h +++ b/include/functions.h @@ -232,4 +232,15 @@ extern void sub_0800417E(Entity*, u32); extern void sub_080784C8(); extern void sub_08017640(); extern u32 sub_0808288C(Entity*, u32, u32, u32); +extern void sub_0806FDA0(Entity*); +extern void sub_080AE008(Entity*, u32, u32); +extern u32 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/include/manager.h b/include/manager.h index 66b1c363..dfb5f1ff 100644 --- a/include/manager.h +++ b/include/manager.h @@ -3,6 +3,29 @@ #include "global.h" +typedef struct { + u8 unk_00[0x0a]; + u8 unk_0a; + u8 unk_0b; + u8 unk_0c; + u8 unk_0d; + u8 unk_0e; + u8 unk_0f[0x11]; + u16 unk_20; + u16 unk_22; + u16 unk_24; + u16 unk_26; + u8 unk_28[0x0D]; + u8 unk_35; + u16 unk_36; + u8 unk_38; + u8 unk_39; + u8 unk_3a; + u8 unk_3b; + u16 unk_3c; + u16 unk_3e; +} Manager; + typedef struct { u16 field_0x00; u16 field_0x02; diff --git a/linker.ld b/linker.ld index a9dc83a1..545c8cbc 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/ezloNag.o(.text); + asm/code_0801CEC0.o(.text); src/dma.o(.text); asm/sub_0801D66C.o(.text); src/input.o(.text); @@ -416,7 +418,6 @@ SECTIONS { asm/miniSlime.o(.text); asm/fireballGuy.o(.text); src/enemy/miniFireballGuy.o(.text); - asm/miniFireballGuy.o(.text); asm/enemy5A.o(.text); asm/businessScrubPrologue.o(.text); asm/gyorgFemale.o(.text); @@ -474,7 +475,7 @@ SECTIONS { asm/manager7.o(.text); asm/manager8.o(.text); asm/manager9.o(.text); - asm/managerA.o(.text); + src/manager/managerA.o(.text); asm/managerB.o(.text); asm/managerC.o(.text); asm/managerD.o(.text); diff --git a/src/enemy/miniFireballGuy.c b/src/enemy/miniFireballGuy.c index a4c169d7..9ca6ad24 100644 --- a/src/enemy/miniFireballGuy.c +++ b/src/enemy/miniFireballGuy.c @@ -56,4 +56,21 @@ void sub_08045654(Entity *this) if (sub_08003FC4(this, 0x1800) == 0) { sub_08045678(this); } +} + +void sub_08045678(Entity *this) +{ + + this->field_0x20 = 0x1c000; + if (this->actionDelay != 0) { + this->actionDelay--; + } else { + this->actionDelay = Random() & 3; + if ((sub_08049FA0(this) == 0) && (Random() & 3)) { + this->direction = (sub_08049EE4(this) - 4 + (Random() & 8)) & 0x18; + } + else { + this->direction = Random() & 0x18; + } + } } \ No newline at end of file diff --git a/src/ezloNag.c b/src/ezloNag.c new file mode 100644 index 00000000..bce5c8d5 --- /dev/null +++ b/src/ezloNag.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 EzloNag(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/manager/managerA.c b/src/manager/managerA.c new file mode 100644 index 00000000..699c5634 --- /dev/null +++ b/src/manager/managerA.c @@ -0,0 +1,168 @@ +#include "global.h" +#include "entity.h" +#include "player.h" +#include "manager.h" +#include "flags.h" +#include "area.h" + + +extern void (*gUnk_081081F4[])(Manager*); + +void sub_08058380(Manager* this) { + gUnk_081081F4[this->unk_0c](this); +} + + + +extern void sub_0805E3A0(Manager*, u32); + +void sub_08058398(Manager* this) { + + if (CheckFlags(this->unk_3c) != 0) { + DeleteThisEntity(); + } + this->unk_24 = this->unk_3a<<3; + this->unk_26 = this->unk_3b<<3; + this->unk_20 = this->unk_24 + (this->unk_38<<4); + this->unk_22 = this->unk_26 + (this->unk_39<<4); + sub_0805E3A0(this, 0x06); + if (this->unk_3e == 0) { + this->unk_0c = 2; + } else { + this->unk_0c = 1; + } +} + + +void sub_08058408(Manager*); + +void sub_080583EC(Manager* this) { + if (CheckFlags(this->unk_3e) != 0) { + this->unk_0c = 2; + sub_08058408(this); + } +} + +extern u32 CheckPlayerInRegion(u32, u32, u32, u32); +extern void sub_0805E544(void); +extern void sub_08078A90(u32); +extern void sub_08078AA8(u32, u32); +extern void sub_080186C0(u16); +extern void sub_08078B48(void); + +u32 sub_0805848C(Manager*); +void sub_080585DC(Manager*); + +void sub_08058408(Manager* this){ + u32 tmp2; + tmp2 = (gPlayerState.flags.all & 0x08); + if (tmp2 != 0) return; + if (!CheckPlayerInRegion(this->unk_20, this->unk_22, this->unk_24, this->unk_26)) return; + switch (this->unk_0a) { + case 1: + return; + case 2: + sub_080585DC(this); + if ((gPlayerState.flags.all & 0x80) == 0) return; + case 0: + default: + sub_080585DC(this); + if (sub_0805848C(this) == 0) return; + sub_08078A90(3); + sub_08078B48(); + sub_0805E544(); + this->unk_0c = 3; + this->unk_0d = 0; + this->unk_0e = 0x1e; + return; + case 3: + this->unk_0c = 4; + this->unk_0d = tmp2; + sub_080186C0(this->unk_36); + return; + } +} + + +u32 sub_0805848C(Manager* this) { + switch (gPlayerState.field_0xa8[0]-5) { + case 0: + case 2: + case 3: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + case 22: + case 23: + return 0; + case 1: + case 4: + case 20: + case 21: + default: + return 1; + } +} + + +extern void UnfreezeTime(void); + +void sub_08058514(Manager* this) { + switch (this->unk_0d) { + case 1: + if ((gPlayerState.flags.all & 0x1235) != 0) + return; + if (gPlayerEntity.height.HALF.HI != 0) + return; + gPlayerState.jumpStatus = 0; + sub_08078AA8(this->unk_36, this->unk_35); + this->unk_0d++; + this->unk_0e = 0x1E; + return; + case 0: + case 2: + if (((--this->unk_0e)<<0x18) == 0) { + this->unk_0d++; + } + return; + case 3: + if (gPlayerEntity.action != 1 && gPlayerEntity.action != 9) return; + gPlayerState.field_0x8b = 1; + UnfreezeTime(); + SetFlag(this->unk_3c); + DeleteThisEntity(); + return; + default: + return; + } +} + + +extern void sub_0801855C(void); + +void sub_080585B0(Manager* this) { + if (gArea.filler4[0] != 0xFF) { + DeleteThisEntity(); + } + if (CheckFlags(this->unk_3c)) { + sub_0801855C(); + DeleteThisEntity(); + } +} +void sub_080585DC(Manager* this) { + if (CheckFlags(this->unk_3c)) { + DeleteThisEntity(); + } +} 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/object/pot.c b/src/object/pot.c index 07ee87ec..5ea63ab5 100755 --- a/src/object/pot.c +++ b/src/object/pot.c @@ -38,7 +38,7 @@ void sub_0808222C(Entity* this) { this->boundingBox = &gUnk_080FD338; this->nonPlanarMovement = 0x80; this->y.HALF.HI += 3; - this->possibleBool = 0; + this->field_0x16 = 0; this->flags |= 0x80; this->currentHealth = 1; this->field_0x3c = 7; 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