diff --git a/asm/code_805D8C8.s b/asm/code_805D8C8.s index df77970ff..9308f2ec0 100644 --- a/asm/code_805D8C8.s +++ b/asm/code_805D8C8.s @@ -5,1196 +5,6 @@ .text - thumb_func_start sub_805E2C4 -sub_805E2C4: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - str r0, [sp, 0x10] - ldr r0, _0805E47C - ldr r1, [r0] - ldr r0, _0805E480 - adds r0, r1, r0 - str r0, [sp, 0x14] - ldr r0, _0805E484 - ldrb r0, [r0] - cmp r0, 0 - bne _0805E2E6 - b _0805E4C4 -_0805E2E6: - movs r1, 0 - str r1, [sp, 0x18] - mov r7, sp - ldr r2, _0805E488 - mov r10, r2 -_0805E2F0: - ldrh r0, [r7] - ldr r3, _0805E48C - adds r1, r3, 0 - ands r1, r0 - ldr r0, [sp] - mov r4, r10 - ands r0, r4 - orrs r0, r1 - str r0, [sp] - ldrh r1, [r7] - mov r2, r10 - ands r2, r0 - orrs r2, r1 - str r2, [sp] - ldrh r0, [r7] - ldr r5, _0805E490 - adds r1, r5, 0 - ands r1, r0 - mov r0, r10 - ands r0, r2 - orrs r0, r1 - str r0, [sp] - ldrh r2, [r7] - mov r1, r10 - ands r1, r0 - orrs r1, r2 - str r1, [sp] - ldrh r2, [r7] - ldr r0, _0805E494 - ands r0, r2 - mov r3, r10 - ands r3, r1 - orrs r3, r0 - str r3, [sp] - ldrh r1, [r7] - movs r0, 0x80 - lsls r0, 3 - orrs r0, r1 - movs r6, 0 - orrs r0, r6 - mov r2, r10 - ands r2, r3 - orrs r2, r0 - str r2, [sp] - ldrh r0, [r7] - ldr r3, _0805E498 - adds r1, r3, 0 - ands r1, r0 - mov r0, r10 - ands r0, r2 - orrs r0, r1 - str r0, [sp] - ldrh r1, [r7] - mov r2, r10 - ands r2, r0 - orrs r2, r1 - str r2, [sp] - ldrh r0, [r7] - ldr r4, _0805E49C - adds r1, r4, 0 - ands r1, r0 - mov r0, r10 - ands r0, r2 - orrs r0, r1 - str r0, [sp] - ldrh r1, [r7] - mov r2, r10 - ands r2, r0 - orrs r2, r1 - str r2, [sp] - ldrh r1, [r7] - ldr r0, _0805E4A0 - ands r0, r1 - mov r1, r10 - ands r1, r2 - orrs r1, r0 - str r1, [sp] - ldrh r2, [r7] - mov r0, r10 - ands r0, r1 - orrs r0, r2 - str r0, [sp] - ldr r1, _0805E4A4 - ldr r5, [sp, 0x18] - lsls r0, r5, 3 - adds r0, r1 - mov r12, r0 - ldrb r1, [r0, 0x4] - negs r0, r1 - orrs r0, r1 - asrs r1, r0, 31 - movs r0, 0x8 - ands r1, r0 - mov r6, r12 - ldrb r0, [r6, 0x5] - cmp r0, 0 - beq _0805E3B4 - adds r1, 0x10 -_0805E3B4: - movs r0, 0x1F - ands r1, r0 - lsls r1, 9 - ldrh r3, [r7, 0x2] - ldr r2, _0805E4A8 - adds r0, r2, 0 - ands r3, r0 - orrs r3, r1 - ldr r4, _0805E4A0 - ands r3, r4 - strh r3, [r7, 0x2] - ldr r2, _0805E4AC - ldrh r0, [r7, 0x4] - movs r5, 0xFC - lsls r5, 8 - adds r1, r5, 0 - ands r0, r1 - orrs r0, r2 - movs r6, 0 - orrs r0, r6 - movs r1, 0x80 - lsls r1, 4 - ldr r2, _0805E494 - ands r0, r2 - orrs r0, r1 - orrs r0, r6 - ldr r4, _0805E4B0 - mov r9, r4 - ands r0, r4 - strh r0, [r7, 0x4] - ldrh r4, [r7, 0x6] - ldr r5, _0805E4B4 - adds r0, r5, 0 - ands r4, r0 - ldr r6, _0805E4B8 - adds r0, r6, 0 - ands r4, r0 - strh r4, [r7, 0x6] - mov r0, r12 - movs r1, 0 - ldrsh r5, [r0, r1] - lsls r2, r5, 2 - adds r2, r5 - lsls r2, 1 - ldr r6, _0805E4BC - mov r8, r6 - movs r1, 0 - ldrsh r0, [r6, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - movs r6, 0x7 - ands r0, r6 - muls r0, r5 - adds r0, r2 - adds r0, 0x74 - ldr r1, _0805E4C0 - ands r0, r1 - movs r2, 0xFE - lsls r2, 8 - adds r1, r2, 0 - ands r3, r1 - orrs r3, r0 - strh r3, [r7, 0x2] - mov r5, r12 - movs r0, 0x2 - ldrsh r3, [r5, r0] - lsls r2, r3, 2 - adds r2, r3 - lsls r2, 1 - mov r1, r8 - movs r5, 0 - ldrsh r0, [r1, r5] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - ands r0, r6 - muls r0, r3 - adds r0, r2 - adds r0, 0x52 - mov r6, r9 - ands r0, r6 - lsls r0, 4 - movs r1, 0xF - ands r4, r1 - orrs r4, r0 - strh r4, [r7, 0x6] - mov r0, sp - adds r1, 0xF1 - movs r2, 0 - movs r3, 0 - bl AddSprite - ldr r2, [sp, 0x18] - adds r2, 0x1 - str r2, [sp, 0x18] - cmp r2, 0x3 - bgt _0805E47A - b _0805E2F0 -_0805E47A: - b _0805E6AC - .align 2, 0 -_0805E47C: .4byte gDungeon -_0805E480: .4byte 0x000181e8 -_0805E484: .4byte gUnknown_202F22C -_0805E488: .4byte 0xffff0000 -_0805E48C: .4byte 0x0000feff -_0805E490: .4byte 0x0000fdff -_0805E494: .4byte 0x0000f3ff -_0805E498: .4byte 0x0000efff -_0805E49C: .4byte 0x0000dfff -_0805E4A0: .4byte 0x00003fff -_0805E4A4: .4byte gUnknown_8106AC8 -_0805E4A8: .4byte 0x0000c1ff -_0805E4AC: .4byte 0x00000213 -_0805E4B0: .4byte 0x00000fff -_0805E4B4: .4byte 0x0000fffe -_0805E4B8: .4byte 0x0000fffd -_0805E4BC: .4byte gUnknown_202F22E -_0805E4C0: .4byte 0x000001ff -_0805E4C4: - ldr r3, _0805E6E4 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - bne _0805E4D0 - b _0805E6AC -_0805E4D0: - ldr r4, _0805E6E8 - adds r0, r1, r4 - ldrb r0, [r0] - str r0, [sp, 0x1C] - cmp r0, 0x7 - bls _0805E4DE - b _0805E6AC -_0805E4DE: - ldr r0, _0805E6EC - ldrb r0, [r0] - movs r7, 0x1 - cmp r0, 0 - beq _0805E4F2 - ldr r0, _0805E6F0 - ldrb r0, [r0] - cmp r0, 0 - beq _0805E4F2 - movs r7, 0x3 -_0805E4F2: - ldr r5, _0805E6F4 - mov r12, r5 - ldr r6, [sp, 0x1C] - lsls r5, r6, 1 - adds r3, r5, r6 - lsls r3, 2 - add r3, r12 - movs r0, 0 - ldrsh r4, [r3, r0] - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 1 - ldr r0, _0805E6F8 - movs r6, 0 - ldrsh r2, [r0, r6] - lsrs r0, r2, 31 - adds r2, r0 - asrs r2, 1 - movs r0, 0x7 - ands r2, r0 - adds r0, r4, 0 - muls r0, r2 - adds r0, r1 - adds r0, 0x74 - str r0, [sp, 0x20] - movs r1, 0x2 - ldrsh r0, [r3, r1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 1 - muls r0, r2 - adds r0, r1 - adds r0, 0x52 - mov r10, r0 - str r5, [sp, 0x24] - cmp r7, 0 - bne _0805E53E - b _0805E6AC -_0805E53E: - add r6, sp, 0x8 - ldr r2, _0805E6FC - mov r8, r2 - mov r9, r7 -_0805E546: - ldrh r0, [r6] - ldr r3, _0805E700 - adds r1, r3, 0 - ands r1, r0 - ldr r0, [sp, 0x8] - mov r4, r8 - ands r0, r4 - orrs r0, r1 - str r0, [sp, 0x8] - ldrh r1, [r6] - mov r2, r8 - ands r2, r0 - orrs r2, r1 - str r2, [sp, 0x8] - ldrh r0, [r6] - ldr r5, _0805E704 - adds r1, r5, 0 - ands r1, r0 - mov r0, r8 - ands r0, r2 - orrs r0, r1 - str r0, [sp, 0x8] - ldrh r2, [r6] - mov r1, r8 - ands r1, r0 - orrs r1, r2 - str r1, [sp, 0x8] - ldrh r2, [r6] - ldr r0, _0805E708 - ands r0, r2 - mov r3, r8 - ands r3, r1 - orrs r3, r0 - str r3, [sp, 0x8] - ldrh r1, [r6] - movs r0, 0x80 - lsls r0, 3 - orrs r0, r1 - movs r1, 0 - orrs r0, r1 - mov r2, r8 - ands r2, r3 - orrs r2, r0 - str r2, [sp, 0x8] - ldrh r0, [r6] - ldr r3, _0805E70C - adds r1, r3, 0 - ands r1, r0 - mov r0, r8 - ands r0, r2 - orrs r0, r1 - str r0, [sp, 0x8] - ldrh r1, [r6] - mov r2, r8 - ands r2, r0 - orrs r2, r1 - str r2, [sp, 0x8] - ldrh r0, [r6] - ldr r4, _0805E710 - adds r1, r4, 0 - ands r1, r0 - mov r0, r8 - ands r0, r2 - orrs r0, r1 - str r0, [sp, 0x8] - ldrh r1, [r6] - mov r2, r8 - ands r2, r0 - orrs r2, r1 - str r2, [sp, 0x8] - ldrh r1, [r6] - ldr r0, _0805E714 - ands r0, r1 - mov r1, r8 - ands r1, r2 - orrs r1, r0 - str r1, [sp, 0x8] - ldrh r2, [r6] - mov r0, r8 - ands r0, r1 - orrs r0, r2 - str r0, [sp, 0x8] - ldr r5, [sp, 0x24] - ldr r1, [sp, 0x1C] - adds r0, r5, r1 - lsls r2, r0, 2 - ldr r3, _0805E6F4 - adds r7, r2, r3 - ldrb r1, [r7, 0x8] - negs r0, r1 - orrs r0, r1 - asrs r1, r0, 31 - movs r0, 0x8 - ands r1, r0 - ldrb r0, [r7, 0x9] - cmp r0, 0 - beq _0805E60A - adds r1, 0x10 -_0805E60A: - movs r0, 0x1F - ands r1, r0 - lsls r1, 9 - ldrh r3, [r6, 0x2] - ldr r4, _0805E718 - adds r0, r4, 0 - ands r3, r0 - orrs r3, r1 - ldr r5, _0805E714 - ands r3, r5 - strh r3, [r6, 0x2] - ldr r1, _0805E71C - adds r0, r2, r1 - ldr r2, [r0] - ldr r0, _0805E720 - ands r2, r0 - ldrh r0, [r6, 0x4] - movs r4, 0xFC - lsls r4, 8 - adds r1, r4, 0 - ands r0, r1 - orrs r0, r2 - movs r1, 0x80 - lsls r1, 4 - ldr r5, _0805E708 - ands r0, r5 - orrs r0, r1 - movs r1, 0 - orrs r0, r1 - movs r2, 0xF - mov r12, r2 - ldr r4, _0805E724 - ands r0, r4 - strh r0, [r6, 0x4] - ldrh r1, [r6, 0x6] - ldr r5, _0805E728 - adds r0, r5, 0 - ands r1, r0 - ldr r2, _0805E72C - adds r0, r2, 0 - ands r1, r0 - ldr r0, _0805E730 - ldr r5, [sp, 0x20] - ands r0, r5 - movs r5, 0xFE - lsls r5, 8 - adds r2, r5, 0 - ands r3, r2 - orrs r3, r0 - strh r3, [r6, 0x2] - mov r0, r10 - ands r0, r4 - lsls r0, 4 - mov r2, r12 - ands r1, r2 - orrs r1, r0 - strh r1, [r6, 0x6] - adds r0, r6, 0 - movs r1, 0x80 - lsls r1, 1 - movs r2, 0 - movs r3, 0 - bl AddSprite - movs r3, 0 - ldrsh r0, [r7, r3] - lsls r0, 2 - ldr r4, [sp, 0x20] - adds r4, r0 - str r4, [sp, 0x20] - movs r5, 0x2 - ldrsh r0, [r7, r5] - lsls r0, 2 - add r10, r0 - movs r0, 0x1 - negs r0, r0 - add r9, r0 - mov r1, r9 - cmp r1, 0 - beq _0805E6AC - b _0805E546 -_0805E6AC: - ldr r4, _0805E734 - ldrb r0, [r4] - cmp r0, 0 - beq _0805E6D4 - ldr r2, [sp, 0x14] - adds r2, 0x34 - ldr r3, [sp, 0x14] - adds r3, 0x33 - ldrb r1, [r3] - ldrb r0, [r2] - cmp r0, r1 - beq _0805E6D4 - strb r1, [r2] - ldr r0, [sp, 0x10] - adds r0, 0x4 - ldrb r1, [r3] - ldrb r3, [r4] - movs r2, 0 - bl sub_804A728 -_0805E6D4: - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0805E6E4: .4byte 0x0001821a -_0805E6E8: .4byte 0x0001821b -_0805E6EC: .4byte gUnknown_202F231 -_0805E6F0: .4byte gUnknown_202F230 -_0805E6F4: .4byte gUnknown_8106AE8 -_0805E6F8: .4byte gUnknown_202F22E -_0805E6FC: .4byte 0xffff0000 -_0805E700: .4byte 0x0000feff -_0805E704: .4byte 0x0000fdff -_0805E708: .4byte 0x0000f3ff -_0805E70C: .4byte 0x0000efff -_0805E710: .4byte 0x0000dfff -_0805E714: .4byte 0x00003fff -_0805E718: .4byte 0x0000c1ff -_0805E71C: .4byte gUnknown_8106AEC -_0805E720: .4byte 0x000003ff -_0805E724: .4byte 0x00000fff -_0805E728: .4byte 0x0000fffe -_0805E72C: .4byte 0x0000fffd -_0805E730: .4byte 0x000001ff -_0805E734: .4byte gUnknown_202F22D - thumb_func_end sub_805E2C4 - - thumb_func_start sub_805E738 -sub_805E738: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r6, r0, 0 - ldr r1, [r6, 0x70] - adds r0, r1, 0 - adds r0, 0xE8 - ldrb r0, [r0] - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _0805E7F6 - movs r0, 0 - mov r8, r0 - adds r1, 0x46 - mov r10, r1 -_0805E75E: - movs r1, 0 - mov r9, r1 - mov r3, r10 - ldrb r5, [r3] - adds r5, 0x1 - movs r7, 0x1 -_0805E76A: - movs r0, 0x7 - ands r5, r0 - movs r1, 0x4 - ldrsh r0, [r6, r1] - ldr r1, _0805E7E8 - lsls r2, r5, 2 - adds r2, r1 - movs r3, 0 - ldrsh r1, [r2, r3] - adds r0, r1 - movs r3, 0x6 - ldrsh r1, [r6, r3] - movs r3, 0x2 - ldrsh r2, [r2, r3] - adds r1, r2 - bl GetTile - adds r4, r0, 0 - ldr r0, [r4, 0x10] - cmp r0, 0 - beq _0805E7B8 - bl GetEntityType - cmp r0, 0x1 - bne _0805E7B8 - ldr r1, [r4, 0x10] - ldr r4, [r1, 0x70] - adds r0, r6, 0 - bl CanSeeTarget - lsls r0, 24 - cmp r0, 0 - beq _0805E7B8 - mov r0, r8 - cmp r0, 0 - bne _0805E7C6 - ldrb r0, [r4, 0x6] - cmp r0, 0 - bne _0805E7C6 -_0805E7B8: - adds r7, 0x1 - adds r5, 0x1 - cmp r7, 0x7 - ble _0805E76A - mov r1, r9 - cmp r1, 0 - beq _0805E7EC -_0805E7C6: - ldr r1, [r6, 0x70] - movs r2, 0x7 - adds r0, r5, 0 - ands r0, r2 - adds r1, 0x46 - strb r0, [r1] - adds r0, r6, 0 - bl sub_806CEBC - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - adds r2, r5, 0 - bl sub_806CDD4 - b _0805E7F6 - .align 2, 0 -_0805E7E8: .4byte gAdjacentTileOffsets -_0805E7EC: - movs r3, 0x1 - add r8, r3 - mov r0, r8 - cmp r0, 0 - ble _0805E75E -_0805E7F6: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_805E738 - - thumb_func_start sub_805E804 -sub_805E804: - push {r4,r5,lr} - ldr r2, _0805E864 - ldr r1, [r2] - ldr r5, _0805E868 - adds r3, r1, r5 - ldr r4, _0805E86C - adds r1, r4 - ldrb r0, [r3] - ldrb r1, [r1] - orrs r0, r1 - movs r1, 0 - strb r0, [r3] - ldr r0, [r2] - adds r0, r4 - strb r1, [r0] - ldr r0, [r2] - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0 - beq _0805E85C - ldr r0, _0805E870 - ldrh r1, [r0] - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0805E85C - adds r4, r2, 0 -_0805E83E: - movs r0, 0x54 - bl sub_803E46C - ldr r0, _0805E864 - ldr r0, [r0] - ldr r1, _0805E868 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0805E85C - ldr r0, _0805E870 - ldrh r0, [r0] - ands r0, r4 - cmp r0, 0 - bne _0805E83E -_0805E85C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805E864: .4byte gDungeon -_0805E868: .4byte 0x0000066d -_0805E86C: .4byte 0x0000066c -_0805E870: .4byte gRealInputs - thumb_func_end sub_805E804 - - thumb_func_start sub_805E874 -sub_805E874: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - ldr r0, _0805E90C - ldr r4, [r0] - bl GetLeader - mov r9, r0 - ldr r0, [r0, 0x70] - adds r0, 0x46 - ldrb r0, [r0] - str r0, [sp, 0x18] - mov r0, r9 - movs r1, 0x4 - ldrsh r0, [r0, r1] - mov r10, r0 - mov r2, r9 - movs r3, 0x6 - ldrsh r2, [r2, r3] - str r2, [sp, 0x1C] - adds r1, r2, 0 - bl GetTile - adds r5, r0, 0 - ldr r1, _0805E910 - ldr r2, [sp, 0x18] - lsls r0, r2, 2 - adds r0, r1 - movs r3, 0 - ldrsh r1, [r0, r3] - mov r2, r10 - adds r7, r2, r1 - movs r3, 0x2 - ldrsh r0, [r0, r3] - ldr r1, [sp, 0x1C] - adds r6, r1, r0 - ldr r2, _0805E914 - adds r4, r2 - ldrb r0, [r4] - cmp r0, 0 - beq _0805E906 - ldr r0, [r5, 0x14] - cmp r0, 0 - bne _0805E906 - mov r0, r9 - mov r1, r10 - ldr r2, [sp, 0x1C] - bl sub_805EC2C - lsls r0, 24 - cmp r0, 0 - bne _0805E906 - mov r0, r9 - ldr r1, [sp, 0x18] - bl sub_8070F14 - lsls r0, 24 - cmp r0, 0 - beq _0805E906 - ldrb r3, [r5, 0x9] - str r3, [sp, 0x20] - cmp r3, 0xFF - bne _0805E918 - adds r0, r7, 0 - adds r1, r6, 0 - bl GetTile - ldrb r0, [r0, 0x9] - cmp r0, 0xFF - beq _0805E922 -_0805E906: - movs r0, 0 - b _0805EC1A - .align 2, 0 -_0805E90C: .4byte gDungeon -_0805E910: .4byte gAdjacentTileOffsets -_0805E914: .4byte 0x0000066c -_0805E918: - ldrh r1, [r5] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _0805E906 -_0805E922: - movs r4, 0x1 - negs r4, r4 - ldr r7, _0805EA54 - movs r5, 0x80 - lsls r5, 2 - adds r6, r5, 0 -_0805E92E: - ldr r0, [sp, 0x18] - adds r1, r0, r4 - movs r5, 0x7 - ands r1, r5 - lsls r1, 2 - adds r1, r7 - movs r2, 0 - ldrsh r0, [r1, r2] - add r0, r10 - movs r3, 0x2 - ldrsh r1, [r1, r3] - ldr r2, [sp, 0x1C] - adds r1, r2, r1 - bl GetTile - adds r1, r0, 0 - ldr r0, [r1, 0x10] - cmp r0, 0 - bne _0805E906 - ldrh r0, [r1] - ands r0, r6 - cmp r0, 0 - bne _0805E906 - adds r4, 0x1 - cmp r4, 0x1 - ble _0805E92E - ldr r4, _0805EA54 - ldr r3, [sp, 0x18] - adds r3, 0x3 - ands r3, r5 - lsls r3, 2 - adds r3, r4 - movs r1, 0 - ldrsh r0, [r3, r1] - add r0, r10 - str r0, [sp] - ldr r2, [sp, 0x18] - adds r2, 0x4 - ands r2, r5 - lsls r2, 2 - adds r2, r4 - movs r1, 0 - ldrsh r0, [r2, r1] - add r0, r10 - str r0, [sp, 0x4] - ldr r1, [sp, 0x18] - adds r1, 0x5 - ands r1, r5 - lsls r1, 2 - adds r1, r4 - movs r4, 0 - ldrsh r0, [r1, r4] - add r0, r10 - str r0, [sp, 0x8] - add r4, sp, 0xC - movs r5, 0x2 - ldrsh r0, [r3, r5] - ldr r3, [sp, 0x1C] - adds r0, r3, r0 - str r0, [sp, 0xC] - movs r5, 0x2 - ldrsh r0, [r2, r5] - adds r0, r3, r0 - str r0, [r4, 0x4] - movs r2, 0x2 - ldrsh r0, [r1, r2] - adds r0, r3, r0 - str r0, [r4, 0x8] - movs r3, 0x1 - negs r3, r3 - mov r8, r3 -_0805E9BC: - movs r4, 0x1 - negs r4, r4 - mov r7, r10 - add r7, r8 - ldr r6, [sp, 0x1C] - subs r6, 0x1 -_0805E9C8: - adds r0, r7, 0 - adds r1, r6, 0 - bl GetTile - adds r5, r0, 0 - ldr r0, [r5, 0x14] - cmp r0, 0 - beq _0805EA14 - movs r2, 0 - ldr r0, [sp] - cmp r7, r0 - bne _0805E9E6 - ldr r0, [sp, 0xC] - cmp r6, r0 - beq _0805EA04 -_0805E9E6: - adds r2, 0x1 - cmp r2, 0x2 - bgt _0805EA04 - lsls r1, r2, 2 - mov r3, sp - adds r0, r3, r1 - ldr r0, [r0] - cmp r7, r0 - bne _0805E9E6 - mov r0, sp - adds r0, r1 - adds r0, 0xC - ldr r0, [r0] - cmp r6, r0 - bne _0805E9E6 -_0805EA04: - cmp r2, 0x3 - bne _0805EA14 - ldr r0, [r5, 0x14] - bl GetEntityType - cmp r0, 0x3 - bne _0805EA14 - b _0805E906 -_0805EA14: - movs r0, 0x1 - ldr r1, [sp, 0x18] - ands r0, r1 - cmp r0, 0 - beq _0805EA60 - ldr r0, [r5, 0x14] - cmp r0, 0 - beq _0805EA94 - bl GetEntityType - cmp r0, 0x2 - bne _0805EA94 - ldr r0, [r5, 0x14] - bl GetEntityType - cmp r0, 0x2 - bne _0805EA94 - ldr r0, [r5, 0x14] - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0 - beq _0805EA42 - b _0805E906 -_0805EA42: - ldr r0, _0805EA58 - ldr r0, [r0] - ldr r2, _0805EA5C - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0805EA94 - b _0805E906 - .align 2, 0 -_0805EA54: .4byte gAdjacentTileOffsets -_0805EA58: .4byte gDungeon -_0805EA5C: .4byte 0x0001820f -_0805EA60: - mov r3, r8 - cmp r3, 0 - beq _0805EA6A - cmp r4, 0 - bne _0805EA94 -_0805EA6A: - ldr r0, [r5, 0x14] - cmp r0, 0 - beq _0805EA94 - bl GetEntityType - cmp r0, 0x2 - bne _0805EA94 - ldr r0, [r5, 0x14] - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0 - beq _0805EA84 - b _0805E906 -_0805EA84: - ldr r0, _0805EAA0 - ldr r0, [r0] - ldr r1, _0805EAA4 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0805EA94 - b _0805E906 -_0805EA94: - mov r2, r8 - cmp r2, 0 - beq _0805EAA8 - cmp r4, 0 - bne _0805EAD6 - b _0805EAAC - .align 2, 0 -_0805EAA0: .4byte gDungeon -_0805EAA4: .4byte 0x0001820f -_0805EAA8: - cmp r4, 0 - beq _0805EAD6 -_0805EAAC: - ldr r0, [sp, 0x4] - cmp r0, r7 - bne _0805EAB8 - ldr r0, [sp, 0x10] - cmp r0, r6 - beq _0805EAD6 -_0805EAB8: - mov r0, r9 - adds r1, r7, 0 - adds r2, r6, 0 - bl sub_805EC2C - lsls r0, 24 - cmp r0, 0 - bne _0805EAD6 - ldr r3, [sp, 0x20] - cmp r3, 0xFF - beq _0805EAD6 - ldrb r5, [r5, 0x9] - cmp r3, r5 - beq _0805EAD6 - b _0805E906 -_0805EAD6: - adds r6, 0x1 - adds r4, 0x1 - cmp r4, 0x1 - bgt _0805EAE0 - b _0805E9C8 -_0805EAE0: - movs r4, 0x1 - add r8, r4 - mov r5, r8 - cmp r5, 0x1 - bgt _0805EAEC - b _0805E9BC -_0805EAEC: - movs r0, 0x1 - ldr r1, [sp, 0x18] - ands r0, r1 - cmp r0, 0 - beq _0805EAF8 - b _0805EC18 -_0805EAF8: - cmp r1, 0 - beq _0805EB00 - cmp r1, 0x4 - bne _0805EB8C -_0805EB00: - mov r4, r10 - subs r4, 0x1 - ldr r6, [sp, 0x1C] - subs r6, 0x1 - mov r0, r9 - adds r1, r4, 0 - adds r2, r6, 0 - bl sub_805EC2C - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - mov r0, r9 - adds r1, r4, 0 - ldr r2, [sp, 0x1C] - bl sub_805EC2C - lsls r0, 24 - lsrs r7, r0, 24 - ldr r5, [sp, 0x1C] - adds r5, 0x1 - mov r0, r9 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_805EC2C - lsls r0, 24 - lsrs r0, 24 - adds r2, r6, 0 - cmp r7, 0 - bne _0805EB4C - mov r3, r8 - cmp r3, 0 - beq _0805EB46 - b _0805E906 -_0805EB46: - cmp r7, r0 - beq _0805EB4C - b _0805E906 -_0805EB4C: - mov r4, r10 - adds r4, 0x1 - mov r0, r9 - adds r1, r4, 0 - bl sub_805EC2C - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - mov r0, r9 - adds r1, r4, 0 - ldr r2, [sp, 0x1C] - bl sub_805EC2C - lsls r0, 24 - lsrs r7, r0, 24 - mov r0, r9 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_805EC2C - lsls r0, 24 - lsrs r0, 24 - cmp r7, 0 - bne _0805EC18 - mov r4, r8 - cmp r4, 0 - beq _0805EB86 - b _0805E906 -_0805EB86: - cmp r7, r0 - beq _0805EC18 - b _0805E906 -_0805EB8C: - mov r6, r10 - subs r6, 0x1 - ldr r4, [sp, 0x1C] - subs r4, 0x1 - mov r0, r9 - adds r1, r6, 0 - adds r2, r4, 0 - bl sub_805EC2C - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - mov r0, r9 - mov r1, r10 - adds r2, r4, 0 - bl sub_805EC2C - lsls r0, 24 - lsrs r7, r0, 24 - mov r5, r10 - adds r5, 0x1 - mov r0, r9 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_805EC2C - lsls r0, 24 - lsrs r0, 24 - adds r1, r6, 0 - cmp r7, 0 - bne _0805EBD8 - mov r2, r8 - cmp r2, 0 - beq _0805EBD2 - b _0805E906 -_0805EBD2: - cmp r7, r0 - beq _0805EBD8 - b _0805E906 -_0805EBD8: - ldr r4, [sp, 0x1C] - adds r4, 0x1 - mov r0, r9 - adds r2, r4, 0 - bl sub_805EC2C - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - mov r0, r9 - mov r1, r10 - adds r2, r4, 0 - bl sub_805EC2C - lsls r0, 24 - lsrs r7, r0, 24 - mov r0, r9 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_805EC2C - lsls r0, 24 - lsrs r0, 24 - cmp r7, 0 - bne _0805EC18 - mov r3, r8 - cmp r3, 0 - beq _0805EC12 - b _0805E906 -_0805EC12: - cmp r7, r0 - beq _0805EC18 - b _0805E906 -_0805EC18: - movs r0, 0x1 -_0805EC1A: - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805E874 - thumb_func_start sub_805EC2C sub_805EC2C: push {lr} diff --git a/src/code_805D8C8_1.c b/src/code_805D8C8_1.c index 339ba4339..60ca0a3fe 100644 --- a/src/code_805D8C8_1.c +++ b/src/code_805D8C8_1.c @@ -2,11 +2,15 @@ #include "structs/str_dungeon.h" #include "number_util.h" #include "input.h" +#include "structs/map.h" #include "code_80521D0.h" #include "dungeon_action.h" #include "dungeon_ai_targeting.h" +#include "dungeon_util.h" +#include "dungeon_map_access.h" #include "game_options.h" #include "dungeon_leader.h" +#include "dungeon_visibility.h" #include "bg_control.h" #include "items.h" #include "code_806CD90.h" @@ -31,7 +35,7 @@ void sub_8044C10(u8 a0); u16 sub_805F1AC(void); void sub_80978C8(s16 a0); void sub_8044C50(u16 a0); -void sub_805E2C4(Entity *a0); +void sub_805E2C4(Entity *leader); bool8 sub_8094C48(void); void sub_8052210(u8 a0); void sub_803E46C(s32 a0); @@ -1787,4 +1791,737 @@ NAKED void sub_805D8C8(void) #endif -// +/* Nope +void sub_805E2C4(Entity *leader) +{ + unkDungeonGlobal_unk181E8_sub *unkPtr; + + unkPtr = &gDungeon->unk181e8; + if (gUnknown_202F22C == 0) { + + } +} +*/ + +NAKED void sub_805E2C4(Entity *leader) +{ + asm_unified( "\n" +" push {r4-r7,lr}\n" +" mov r7, r10\n" +" mov r6, r9\n" +" mov r5, r8\n" +" push {r5-r7}\n" +" sub sp, 0x28\n" +" str r0, [sp, 0x10]\n" +" ldr r0, _0805E47C\n" +" ldr r1, [r0]\n" +" ldr r0, _0805E480\n" +" adds r0, r1, r0\n" +" str r0, [sp, 0x14]\n" +" ldr r0, _0805E484\n" +" ldrb r0, [r0]\n" +" cmp r0, 0\n" +" bne _0805E2E6\n" +" b _0805E4C4\n" +"_0805E2E6:\n" +" movs r1, 0\n" +" str r1, [sp, 0x18]\n" +" mov r7, sp\n" +" ldr r2, _0805E488\n" +" mov r10, r2\n" +"_0805E2F0:\n" +" ldrh r0, [r7]\n" +" ldr r3, _0805E48C\n" +" adds r1, r3, 0\n" +" ands r1, r0\n" +" ldr r0, [sp]\n" +" mov r4, r10\n" +" ands r0, r4\n" +" orrs r0, r1\n" +" str r0, [sp]\n" +" ldrh r1, [r7]\n" +" mov r2, r10\n" +" ands r2, r0\n" +" orrs r2, r1\n" +" str r2, [sp]\n" +" ldrh r0, [r7]\n" +" ldr r5, _0805E490\n" +" adds r1, r5, 0\n" +" ands r1, r0\n" +" mov r0, r10\n" +" ands r0, r2\n" +" orrs r0, r1\n" +" str r0, [sp]\n" +" ldrh r2, [r7]\n" +" mov r1, r10\n" +" ands r1, r0\n" +" orrs r1, r2\n" +" str r1, [sp]\n" +" ldrh r2, [r7]\n" +" ldr r0, _0805E494\n" +" ands r0, r2\n" +" mov r3, r10\n" +" ands r3, r1\n" +" orrs r3, r0\n" +" str r3, [sp]\n" +" ldrh r1, [r7]\n" +" movs r0, 0x80\n" +" lsls r0, 3\n" +" orrs r0, r1\n" +" movs r6, 0\n" +" orrs r0, r6\n" +" mov r2, r10\n" +" ands r2, r3\n" +" orrs r2, r0\n" +" str r2, [sp]\n" +" ldrh r0, [r7]\n" +" ldr r3, _0805E498\n" +" adds r1, r3, 0\n" +" ands r1, r0\n" +" mov r0, r10\n" +" ands r0, r2\n" +" orrs r0, r1\n" +" str r0, [sp]\n" +" ldrh r1, [r7]\n" +" mov r2, r10\n" +" ands r2, r0\n" +" orrs r2, r1\n" +" str r2, [sp]\n" +" ldrh r0, [r7]\n" +" ldr r4, _0805E49C\n" +" adds r1, r4, 0\n" +" ands r1, r0\n" +" mov r0, r10\n" +" ands r0, r2\n" +" orrs r0, r1\n" +" str r0, [sp]\n" +" ldrh r1, [r7]\n" +" mov r2, r10\n" +" ands r2, r0\n" +" orrs r2, r1\n" +" str r2, [sp]\n" +" ldrh r1, [r7]\n" +" ldr r0, _0805E4A0\n" +" ands r0, r1\n" +" mov r1, r10\n" +" ands r1, r2\n" +" orrs r1, r0\n" +" str r1, [sp]\n" +" ldrh r2, [r7]\n" +" mov r0, r10\n" +" ands r0, r1\n" +" orrs r0, r2\n" +" str r0, [sp]\n" +" ldr r1, _0805E4A4\n" +" ldr r5, [sp, 0x18]\n" +" lsls r0, r5, 3\n" +" adds r0, r1\n" +" mov r12, r0\n" +" ldrb r1, [r0, 0x4]\n" +" negs r0, r1\n" +" orrs r0, r1\n" +" asrs r1, r0, 31\n" +" movs r0, 0x8\n" +" ands r1, r0\n" +" mov r6, r12\n" +" ldrb r0, [r6, 0x5]\n" +" cmp r0, 0\n" +" beq _0805E3B4\n" +" adds r1, 0x10\n" +"_0805E3B4:\n" +" movs r0, 0x1F\n" +" ands r1, r0\n" +" lsls r1, 9\n" +" ldrh r3, [r7, 0x2]\n" +" ldr r2, _0805E4A8\n" +" adds r0, r2, 0\n" +" ands r3, r0\n" +" orrs r3, r1\n" +" ldr r4, _0805E4A0\n" +" ands r3, r4\n" +" strh r3, [r7, 0x2]\n" +" ldr r2, _0805E4AC\n" +" ldrh r0, [r7, 0x4]\n" +" movs r5, 0xFC\n" +" lsls r5, 8\n" +" adds r1, r5, 0\n" +" ands r0, r1\n" +" orrs r0, r2\n" +" movs r6, 0\n" +" orrs r0, r6\n" +" movs r1, 0x80\n" +" lsls r1, 4\n" +" ldr r2, _0805E494\n" +" ands r0, r2\n" +" orrs r0, r1\n" +" orrs r0, r6\n" +" ldr r4, _0805E4B0\n" +" mov r9, r4\n" +" ands r0, r4\n" +" strh r0, [r7, 0x4]\n" +" ldrh r4, [r7, 0x6]\n" +" ldr r5, _0805E4B4\n" +" adds r0, r5, 0\n" +" ands r4, r0\n" +" ldr r6, _0805E4B8\n" +" adds r0, r6, 0\n" +" ands r4, r0\n" +" strh r4, [r7, 0x6]\n" +" mov r0, r12\n" +" movs r1, 0\n" +" ldrsh r5, [r0, r1]\n" +" lsls r2, r5, 2\n" +" adds r2, r5\n" +" lsls r2, 1\n" +" ldr r6, _0805E4BC\n" +" mov r8, r6\n" +" movs r1, 0\n" +" ldrsh r0, [r6, r1]\n" +" lsrs r1, r0, 31\n" +" adds r0, r1\n" +" asrs r0, 1\n" +" movs r6, 0x7\n" +" ands r0, r6\n" +" muls r0, r5\n" +" adds r0, r2\n" +" adds r0, 0x74\n" +" ldr r1, _0805E4C0\n" +" ands r0, r1\n" +" movs r2, 0xFE\n" +" lsls r2, 8\n" +" adds r1, r2, 0\n" +" ands r3, r1\n" +" orrs r3, r0\n" +" strh r3, [r7, 0x2]\n" +" mov r5, r12\n" +" movs r0, 0x2\n" +" ldrsh r3, [r5, r0]\n" +" lsls r2, r3, 2\n" +" adds r2, r3\n" +" lsls r2, 1\n" +" mov r1, r8\n" +" movs r5, 0\n" +" ldrsh r0, [r1, r5]\n" +" lsrs r1, r0, 31\n" +" adds r0, r1\n" +" asrs r0, 1\n" +" ands r0, r6\n" +" muls r0, r3\n" +" adds r0, r2\n" +" adds r0, 0x52\n" +" mov r6, r9\n" +" ands r0, r6\n" +" lsls r0, 4\n" +" movs r1, 0xF\n" +" ands r4, r1\n" +" orrs r4, r0\n" +" strh r4, [r7, 0x6]\n" +" mov r0, sp\n" +" adds r1, 0xF1\n" +" movs r2, 0\n" +" movs r3, 0\n" +" bl AddSprite\n" +" ldr r2, [sp, 0x18]\n" +" adds r2, 0x1\n" +" str r2, [sp, 0x18]\n" +" cmp r2, 0x3\n" +" bgt _0805E47A\n" +" b _0805E2F0\n" +"_0805E47A:\n" +" b _0805E6AC\n" +" .align 2, 0\n" +"_0805E47C: .4byte gDungeon\n" +"_0805E480: .4byte 0x000181e8\n" +"_0805E484: .4byte gUnknown_202F22C\n" +"_0805E488: .4byte 0xffff0000\n" +"_0805E48C: .4byte 0x0000feff\n" +"_0805E490: .4byte 0x0000fdff\n" +"_0805E494: .4byte 0x0000f3ff\n" +"_0805E498: .4byte 0x0000efff\n" +"_0805E49C: .4byte 0x0000dfff\n" +"_0805E4A0: .4byte 0x00003fff\n" +"_0805E4A4: .4byte gUnknown_8106AC8\n" +"_0805E4A8: .4byte 0x0000c1ff\n" +"_0805E4AC: .4byte 0x00000213\n" +"_0805E4B0: .4byte 0x00000fff\n" +"_0805E4B4: .4byte 0x0000fffe\n" +"_0805E4B8: .4byte 0x0000fffd\n" +"_0805E4BC: .4byte gUnknown_202F22E\n" +"_0805E4C0: .4byte 0x000001ff\n" +"_0805E4C4:\n" +" ldr r3, _0805E6E4\n" +" adds r0, r1, r3\n" +" ldrb r0, [r0]\n" +" cmp r0, 0\n" +" bne _0805E4D0\n" +" b _0805E6AC\n" +"_0805E4D0:\n" +" ldr r4, _0805E6E8\n" +" adds r0, r1, r4\n" +" ldrb r0, [r0]\n" +" str r0, [sp, 0x1C]\n" +" cmp r0, 0x7\n" +" bls _0805E4DE\n" +" b _0805E6AC\n" +"_0805E4DE:\n" +" ldr r0, _0805E6EC\n" +" ldrb r0, [r0]\n" +" movs r7, 0x1\n" +" cmp r0, 0\n" +" beq _0805E4F2\n" +" ldr r0, _0805E6F0\n" +" ldrb r0, [r0]\n" +" cmp r0, 0\n" +" beq _0805E4F2\n" +" movs r7, 0x3\n" +"_0805E4F2:\n" +" ldr r5, _0805E6F4\n" +" mov r12, r5\n" +" ldr r6, [sp, 0x1C]\n" +" lsls r5, r6, 1\n" +" adds r3, r5, r6\n" +" lsls r3, 2\n" +" add r3, r12\n" +" movs r0, 0\n" +" ldrsh r4, [r3, r0]\n" +" lsls r1, r4, 2\n" +" adds r1, r4\n" +" lsls r1, 1\n" +" ldr r0, _0805E6F8\n" +" movs r6, 0\n" +" ldrsh r2, [r0, r6]\n" +" lsrs r0, r2, 31\n" +" adds r2, r0\n" +" asrs r2, 1\n" +" movs r0, 0x7\n" +" ands r2, r0\n" +" adds r0, r4, 0\n" +" muls r0, r2\n" +" adds r0, r1\n" +" adds r0, 0x74\n" +" str r0, [sp, 0x20]\n" +" movs r1, 0x2\n" +" ldrsh r0, [r3, r1]\n" +" lsls r1, r0, 2\n" +" adds r1, r0\n" +" lsls r1, 1\n" +" muls r0, r2\n" +" adds r0, r1\n" +" adds r0, 0x52\n" +" mov r10, r0\n" +" str r5, [sp, 0x24]\n" +" cmp r7, 0\n" +" bne _0805E53E\n" +" b _0805E6AC\n" +"_0805E53E:\n" +" add r6, sp, 0x8\n" +" ldr r2, _0805E6FC\n" +" mov r8, r2\n" +" mov r9, r7\n" +"_0805E546:\n" +" ldrh r0, [r6]\n" +" ldr r3, _0805E700\n" +" adds r1, r3, 0\n" +" ands r1, r0\n" +" ldr r0, [sp, 0x8]\n" +" mov r4, r8\n" +" ands r0, r4\n" +" orrs r0, r1\n" +" str r0, [sp, 0x8]\n" +" ldrh r1, [r6]\n" +" mov r2, r8\n" +" ands r2, r0\n" +" orrs r2, r1\n" +" str r2, [sp, 0x8]\n" +" ldrh r0, [r6]\n" +" ldr r5, _0805E704\n" +" adds r1, r5, 0\n" +" ands r1, r0\n" +" mov r0, r8\n" +" ands r0, r2\n" +" orrs r0, r1\n" +" str r0, [sp, 0x8]\n" +" ldrh r2, [r6]\n" +" mov r1, r8\n" +" ands r1, r0\n" +" orrs r1, r2\n" +" str r1, [sp, 0x8]\n" +" ldrh r2, [r6]\n" +" ldr r0, _0805E708\n" +" ands r0, r2\n" +" mov r3, r8\n" +" ands r3, r1\n" +" orrs r3, r0\n" +" str r3, [sp, 0x8]\n" +" ldrh r1, [r6]\n" +" movs r0, 0x80\n" +" lsls r0, 3\n" +" orrs r0, r1\n" +" movs r1, 0\n" +" orrs r0, r1\n" +" mov r2, r8\n" +" ands r2, r3\n" +" orrs r2, r0\n" +" str r2, [sp, 0x8]\n" +" ldrh r0, [r6]\n" +" ldr r3, _0805E70C\n" +" adds r1, r3, 0\n" +" ands r1, r0\n" +" mov r0, r8\n" +" ands r0, r2\n" +" orrs r0, r1\n" +" str r0, [sp, 0x8]\n" +" ldrh r1, [r6]\n" +" mov r2, r8\n" +" ands r2, r0\n" +" orrs r2, r1\n" +" str r2, [sp, 0x8]\n" +" ldrh r0, [r6]\n" +" ldr r4, _0805E710\n" +" adds r1, r4, 0\n" +" ands r1, r0\n" +" mov r0, r8\n" +" ands r0, r2\n" +" orrs r0, r1\n" +" str r0, [sp, 0x8]\n" +" ldrh r1, [r6]\n" +" mov r2, r8\n" +" ands r2, r0\n" +" orrs r2, r1\n" +" str r2, [sp, 0x8]\n" +" ldrh r1, [r6]\n" +" ldr r0, _0805E714\n" +" ands r0, r1\n" +" mov r1, r8\n" +" ands r1, r2\n" +" orrs r1, r0\n" +" str r1, [sp, 0x8]\n" +" ldrh r2, [r6]\n" +" mov r0, r8\n" +" ands r0, r1\n" +" orrs r0, r2\n" +" str r0, [sp, 0x8]\n" +" ldr r5, [sp, 0x24]\n" +" ldr r1, [sp, 0x1C]\n" +" adds r0, r5, r1\n" +" lsls r2, r0, 2\n" +" ldr r3, _0805E6F4\n" +" adds r7, r2, r3\n" +" ldrb r1, [r7, 0x8]\n" +" negs r0, r1\n" +" orrs r0, r1\n" +" asrs r1, r0, 31\n" +" movs r0, 0x8\n" +" ands r1, r0\n" +" ldrb r0, [r7, 0x9]\n" +" cmp r0, 0\n" +" beq _0805E60A\n" +" adds r1, 0x10\n" +"_0805E60A:\n" +" movs r0, 0x1F\n" +" ands r1, r0\n" +" lsls r1, 9\n" +" ldrh r3, [r6, 0x2]\n" +" ldr r4, _0805E718\n" +" adds r0, r4, 0\n" +" ands r3, r0\n" +" orrs r3, r1\n" +" ldr r5, _0805E714\n" +" ands r3, r5\n" +" strh r3, [r6, 0x2]\n" +" ldr r1, _0805E71C\n" +" adds r0, r2, r1\n" +" ldr r2, [r0]\n" +" ldr r0, _0805E720\n" +" ands r2, r0\n" +" ldrh r0, [r6, 0x4]\n" +" movs r4, 0xFC\n" +" lsls r4, 8\n" +" adds r1, r4, 0\n" +" ands r0, r1\n" +" orrs r0, r2\n" +" movs r1, 0x80\n" +" lsls r1, 4\n" +" ldr r5, _0805E708\n" +" ands r0, r5\n" +" orrs r0, r1\n" +" movs r1, 0\n" +" orrs r0, r1\n" +" movs r2, 0xF\n" +" mov r12, r2\n" +" ldr r4, _0805E724\n" +" ands r0, r4\n" +" strh r0, [r6, 0x4]\n" +" ldrh r1, [r6, 0x6]\n" +" ldr r5, _0805E728\n" +" adds r0, r5, 0\n" +" ands r1, r0\n" +" ldr r2, _0805E72C\n" +" adds r0, r2, 0\n" +" ands r1, r0\n" +" ldr r0, _0805E730\n" +" ldr r5, [sp, 0x20]\n" +" ands r0, r5\n" +" movs r5, 0xFE\n" +" lsls r5, 8\n" +" adds r2, r5, 0\n" +" ands r3, r2\n" +" orrs r3, r0\n" +" strh r3, [r6, 0x2]\n" +" mov r0, r10\n" +" ands r0, r4\n" +" lsls r0, 4\n" +" mov r2, r12\n" +" ands r1, r2\n" +" orrs r1, r0\n" +" strh r1, [r6, 0x6]\n" +" adds r0, r6, 0\n" +" movs r1, 0x80\n" +" lsls r1, 1\n" +" movs r2, 0\n" +" movs r3, 0\n" +" bl AddSprite\n" +" movs r3, 0\n" +" ldrsh r0, [r7, r3]\n" +" lsls r0, 2\n" +" ldr r4, [sp, 0x20]\n" +" adds r4, r0\n" +" str r4, [sp, 0x20]\n" +" movs r5, 0x2\n" +" ldrsh r0, [r7, r5]\n" +" lsls r0, 2\n" +" add r10, r0\n" +" movs r0, 0x1\n" +" negs r0, r0\n" +" add r9, r0\n" +" mov r1, r9\n" +" cmp r1, 0\n" +" beq _0805E6AC\n" +" b _0805E546\n" +"_0805E6AC:\n" +" ldr r4, _0805E734\n" +" ldrb r0, [r4]\n" +" cmp r0, 0\n" +" beq _0805E6D4\n" +" ldr r2, [sp, 0x14]\n" +" adds r2, 0x34\n" +" ldr r3, [sp, 0x14]\n" +" adds r3, 0x33\n" +" ldrb r1, [r3]\n" +" ldrb r0, [r2]\n" +" cmp r0, r1\n" +" beq _0805E6D4\n" +" strb r1, [r2]\n" +" ldr r0, [sp, 0x10]\n" +" adds r0, 0x4\n" +" ldrb r1, [r3]\n" +" ldrb r3, [r4]\n" +" movs r2, 0\n" +" bl sub_804A728\n" +"_0805E6D4:\n" +" add sp, 0x28\n" +" pop {r3-r5}\n" +" mov r8, r3\n" +" mov r9, r4\n" +" mov r10, r5\n" +" pop {r4-r7}\n" +" pop {r0}\n" +" bx r0\n" +" .align 2, 0\n" +"_0805E6E4: .4byte 0x0001821a\n" +"_0805E6E8: .4byte 0x0001821b\n" +"_0805E6EC: .4byte gUnknown_202F231\n" +"_0805E6F0: .4byte gUnknown_202F230\n" +"_0805E6F4: .4byte gUnknown_8106AE8\n" +"_0805E6F8: .4byte gUnknown_202F22E\n" +"_0805E6FC: .4byte 0xffff0000\n" +"_0805E700: .4byte 0x0000feff\n" +"_0805E704: .4byte 0x0000fdff\n" +"_0805E708: .4byte 0x0000f3ff\n" +"_0805E70C: .4byte 0x0000efff\n" +"_0805E710: .4byte 0x0000dfff\n" +"_0805E714: .4byte 0x00003fff\n" +"_0805E718: .4byte 0x0000c1ff\n" +"_0805E71C: .4byte gUnknown_8106AEC\n" +"_0805E720: .4byte 0x000003ff\n" +"_0805E724: .4byte 0x00000fff\n" +"_0805E728: .4byte 0x0000fffe\n" +"_0805E72C: .4byte 0x0000fffd\n" +"_0805E730: .4byte 0x000001ff\n" +"_0805E734: .4byte gUnknown_202F22D" +); +} + +void sub_805E738(Entity *a0) +{ + Tile *tile; + s32 i, j; + EntityInfo *entityInfo = a0->info; + if (entityInfo->eyesightStatus.eyesightStatus != 1 && entityInfo->eyesightStatus.eyesightStatus != 2) { + // What??? + for (i = 0; i < 1; i++) { + bool8 r9 = FALSE; + u32 r5 = entityInfo->action.direction; + r5++; + for (j = 1; j < 8; j++, r5++) { + r5 &= 7; + tile = GetTile(a0->pos.x + gAdjacentTileOffsets[r5].x, a0->pos.y + gAdjacentTileOffsets[r5].y); + if (tile->monster != NULL && GetEntityType(tile->monster) == ENTITY_MONSTER) { + EntityInfo *tileMonsterInfo = tile->monster->info; + if (CanSeeTarget(a0, tile->monster)) { + if (i != 0 || tileMonsterInfo->isNotTeamMember) { + r9 = TRUE; + break; + } + } + } + } + if (r9) { + a0->info->action.direction = r5 & 7; + sub_806CDD4(a0, sub_806CEBC(a0), r5); + break; + } + } + } +} + +void sub_805E804(void) +{ + gDungeon->unk66D |= gDungeon->unk66C; + gDungeon->unk66C = 0; + while (gDungeon->unk66D != 0 && gRealInputs.held & R_BUTTON) { + sub_803E46C(0x54); + } +} + +extern bool8 sub_8070F14(Entity * pokemon, s32 direction); +bool8 sub_805EC2C(Entity *a0, s32 x, s32 y); + +bool8 sub_805E874(void) +{ + u8 r7, r8, r0; + s32 i, j, k; + s32 xArray[3]; + s32 yArray[3]; + Dungeon *dungeon = gDungeon; + Entity *leader = GetLeader(); + s32 direction = leader->info->action.direction; + s32 x = leader->pos.x; + s32 y = leader->pos.y; + Tile *leaderTile = GetTile(x, y); + s32 xAdjacent = x + gAdjacentTileOffsets[direction].x; + s32 yAdjacent = y + gAdjacentTileOffsets[direction].y; + s32 room; + + if (dungeon->unk66C == 0) + return FALSE; + if (leaderTile->object != NULL) + return FALSE; + if (sub_805EC2C(leader, x, y)) + return FALSE; + if (!sub_8070F14(leader, direction)) + return FALSE; + + room = leaderTile->room; + if (room == 0xFF) { + if (GetTile(xAdjacent, yAdjacent)->room != 0xFF) + return FALSE; + } + else { + if (leaderTile->terrainType & TERRAIN_TYPE_NATURAL_JUNCTION) + return FALSE; + } + + for (j = -1; j < 2; j++) { + Tile *tile = GetTile(x + gAdjacentTileOffsets[(direction + j) & 7].x, y + gAdjacentTileOffsets[(direction + j) & 7].y); + if (tile->monster != NULL) + return FALSE; + if (tile->terrainType & TERRAIN_TYPE_STAIRS) + return FALSE; + } + + xArray[0] = x + gAdjacentTileOffsets[(direction + 3) & 7].x; + xArray[1] = x + gAdjacentTileOffsets[(direction + 4) & 7].x; + xArray[2] = x + gAdjacentTileOffsets[(direction + 5) & 7].x; + + yArray[0] = y + gAdjacentTileOffsets[(direction + 3) & 7].y; + yArray[1] = y + gAdjacentTileOffsets[(direction + 4) & 7].y; + yArray[2] = y + gAdjacentTileOffsets[(direction + 5) & 7].y; + + for (i = -1; i < 2; i++) { + for (j = -1; j < 2; j++) { + Tile *tile = GetTile(x + i, y + j); + if (tile->object != NULL) { + for (k = 0; k < 3; k++) { + if (x + i == xArray[k] && y + j == yArray[k]) + break; + } + if (k == 3 && GetEntityType(tile->object) == ENTITY_ITEM) + return FALSE; + } + + if (direction & 1) { + // This doesn't really have to be called two times... + if (tile->object != NULL && GetEntityType(tile->object) == ENTITY_TRAP && GetEntityType(tile->object) == ENTITY_TRAP) { + if (tile->object->isVisible) + return FALSE; + if (gDungeon->unk181e8.unk1820F) + return FALSE; + } + } + else if (i == 0 || j == 0) { + if (tile->object != NULL && GetEntityType(tile->object) == ENTITY_TRAP) { + if (tile->object->isVisible) + return FALSE; + if (gDungeon->unk181e8.unk1820F) + return FALSE; + } + } + + if (i != 0 && j != 0) continue; + if (i == 0 && j == 0) continue; + + if ((xArray[1] != x + i || yArray[1] != y + j) && !sub_805EC2C(leader, x + i, y + j) && room != 0xFF && room != tile->room) + return FALSE; + } + } + + if (!(direction & 1)) { + if (direction == 0 || direction == 4) { + r8 = sub_805EC2C(leader, x - 1, y - 1); + r7 = sub_805EC2C(leader, x - 1, y); + r0 = sub_805EC2C(leader, x - 1, y + 1); + if (r7 == 0) { + if (r8 != 0 || r7 != r0) + return FALSE; + } + + r8 = sub_805EC2C(leader, x + 1, y - 1); + r7 = sub_805EC2C(leader, x + 1, y); + r0 = sub_805EC2C(leader, x + 1, y + 1); + if (r7 == 0) { + if (r8 != 0 || r7 != r0) + return FALSE; + } + } + else { + r8 = sub_805EC2C(leader, x - 1, y - 1); + r7 = sub_805EC2C(leader, x, y - 1); + r0 = sub_805EC2C(leader, x + 1, y - 1); + if (r7 == 0) { + if (r8 != 0 || r7 != r0) + return FALSE; + } + + r8 = sub_805EC2C(leader, x - 1, y + 1); + r7 = sub_805EC2C(leader, x, y + 1); + r0 = sub_805EC2C(leader, x + 1, y + 1); + if (r7 == 0) { + if (r8 != 0 || r7 != r0) + return FALSE; + } + } + } + + return TRUE; +}