diff --git a/asm/non_matching/v1EyeLaser/sub_080AB758.inc b/asm/non_matching/v1EyeLaser/sub_080AB758.inc deleted file mode 100644 index 6e3699a1..00000000 --- a/asm/non_matching/v1EyeLaser/sub_080AB758.inc +++ /dev/null @@ -1,123 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - sub sp, #4 - adds r5, r0, #0 - movs r6, #6 - movs r7, #0 - movs r4, #0 - movs r0, #0x32 - ldrsh r2, [r5, r0] - ldr r1, _080AB818 @ =gRoomControls - ldrh r0, [r1, #8] - adds r0, #0xd4 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - mov r8, r1 - cmp r2, r0 - bhi _080AB7B4 - movs r3, #7 -_080AB77E: - adds r0, r4, #0 - ands r0, r3 - cmp r0, #7 - bne _080AB798 - adds r0, r5, #0 - movs r1, #4 - adds r2, r6, #0 - str r3, [sp] - bl sub_080AB844 - adds r6, #0x3e - adds r7, #0x3e - ldr r3, [sp] -_080AB798: - adds r4, #1 - ands r4, r3 - movs r1, #0x32 - ldrsh r0, [r5, r1] - adds r0, r0, r7 - lsls r1, r4, #3 - adds r2, r0, r1 - ldr r0, _080AB818 @ =gRoomControls - ldrh r0, [r0, #8] - adds r0, #0xd4 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r2, r0 - bls _080AB77E -_080AB7B4: - movs r4, #0 - movs r1, #0x32 - ldrsh r0, [r5, r1] - adds r2, r0, r7 - mov r1, r8 - ldrh r0, [r1, #8] - adds r0, #0xd4 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r2, r0 - bhi _080AB802 - movs r3, #3 -_080AB7CC: - adds r0, r4, #0 - ands r0, r3 - cmp r0, #3 - bne _080AB7E6 - adds r0, r5, #0 - movs r1, #3 - adds r2, r6, #0 - str r3, [sp] - bl sub_080AB844 - adds r6, #0x1e - adds r7, #0x1e - ldr r3, [sp] -_080AB7E6: - adds r4, #1 - ands r4, r3 - movs r1, #0x32 - ldrsh r0, [r5, r1] - adds r0, r0, r7 - lsls r1, r4, #3 - adds r2, r0, r1 - ldr r0, _080AB818 @ =gRoomControls - ldrh r0, [r0, #8] - adds r0, #0xd4 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r2, r0 - bls _080AB7CC -_080AB802: - movs r0, #2 - ands r0, r4 - cmp r0, #0 - beq _080AB81C - adds r0, r5, #0 - movs r1, #2 - adds r2, r6, #0 - bl sub_080AB844 - adds r6, #0xe - b _080AB830 - .align 2, 0 -_080AB818: .4byte gRoomControls -_080AB81C: - movs r0, #1 - ands r4, r0 - cmp r4, #0 - beq _080AB830 - adds r0, r5, #0 - movs r1, #1 - adds r2, r6, #0 - bl sub_080AB844 - adds r6, #6 -_080AB830: - adds r0, r5, #0 - movs r1, #6 - adds r2, r6, #0 - bl sub_080AB844 - add sp, #4 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - .syntax divided diff --git a/src/projectile/v1EyeLaser.c b/src/projectile/v1EyeLaser.c index 52115d4f..af8ec1bd 100644 --- a/src/projectile/v1EyeLaser.c +++ b/src/projectile/v1EyeLaser.c @@ -51,32 +51,29 @@ void V1EyeLaser_Action2(Entity* this) { } } -NONMATCH("asm/non_matching/v1EyeLaser/sub_080AB758.inc", void sub_080AB758(Entity* this)) { +void sub_080AB758(Entity* this) { s32 r6 = 6; u32 r7 = 0; u32 index = 0; - if (((u32)this->y.HALF.HI) <= (u16)(gRoomControls.origin_y + 0xd4)) { - u32 tmp = 7; - do { - if ((index & tmp) == 7) { - sub_080AB844(this, 4, r6); - r6 += 0x3e; - r7 += 0x3e; - } - index = (index + 1) & tmp; - } while (this->y.HALF.HI + r7 + (index << 3) <= (u16)(gRoomControls.origin_y + 0xd4)); + u32 tmp = this->y.HALF.HI + r7 + (index << 3); + for (; tmp <= (u16)(gRoomControls.origin_y + 0xd4); + index = (index + 1) & 7, tmp = this->y.HALF.HI + r7 + (index << 3)) { + if ((index & 7) == 7) { + sub_080AB844(this, 4, r6); + r6 += 0x3e; + r7 += 0x3e; + } } + index = 0; - if (this->y.HALF.HI + r7 <= (u16)(gRoomControls.origin_y + 0xd4)) { - u32 tmp = 3; - do { - if ((index & tmp) == 3) { - sub_080AB844(this, 3, r6); - r6 += 0x1e; - r7 += 0x1e; - } - index = (index + 1) & tmp; - } while (this->y.HALF.HI + r7 + (index << 3) <= (u16)(gRoomControls.origin_y + 0xd4)); + tmp = this->y.HALF.HI + r7 + (index << 3); + for (; tmp <= (u16)(gRoomControls.origin_y + 0xd4); + index = (index + 1) & 3, tmp = this->y.HALF.HI + r7 + (index << 3)) { + if ((index & 3) == 3) { + sub_080AB844(this, 3, r6); + r6 += 0x1e; + r7 += 0x1e; + } } if (index & 0x2) { @@ -89,7 +86,6 @@ NONMATCH("asm/non_matching/v1EyeLaser/sub_080AB758.inc", void sub_080AB758(Entit sub_080AB844(this, 6, r6); } -END_NONMATCH void sub_080AB844(Entity* this, s32 param_1, s32 param_2) { Entity* entity;