diff --git a/asm/non_matching/fallingBoulder/sub_0802C334.inc b/asm/non_matching/fallingBoulder/sub_0802C334.inc deleted file mode 100644 index 3c67cf6b..00000000 --- a/asm/non_matching/fallingBoulder/sub_0802C334.inc +++ /dev/null @@ -1,193 +0,0 @@ - - .syntax unified - - .text - - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - adds r3, r4, #0 - adds r3, #0x7c - ldrh r0, [r3] - cmp r0, #0 - bne _0802C36A - ldr r0, _0802C3C4 @ =gRoomControls - ldrh r1, [r0, #8] - ldr r2, _0802C3C8 @ =gPlayerEntity - cmp r2, #0 - bne _0802C34E - b _0802C4AA -_0802C34E: - movs r5, #0x32 - ldrsh r0, [r2, r5] - subs r0, r0, r1 - cmp r0, #0x38 - bhi _0802C35A - b _0802C4AA -_0802C35A: - movs r0, #1 - strh r0, [r3] - ldrb r1, [r4, #0x18] - subs r0, #5 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] -_0802C36A: - adds r0, r4, #0 - bl GetNextFrame - movs r0, #0x2e - ldrsh r1, [r4, r0] - ldr r2, _0802C3C4 @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r3, #0x3f - ands r1, r3 - movs r5, #0x32 - ldrsh r0, [r4, r5] - ldrh r2, [r2, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r1, r0 - adds r0, r4, #0 - adds r0, #0x7e - strh r1, [r0] - adds r0, #6 - ldr r1, [r0] - adds r0, r4, #0 - bl sub_080044EC - cmp r0, #1 - bne _0802C3CC - movs r0, #0xa6 - lsls r0, r0, #1 - bl EnqueueSFX - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - adds r1, r4, #0 - adds r1, #0x7a - movs r0, #0xc - strh r0, [r1] - adds r0, r4, #0 - bl sub_0802C4B0 - b _0802C48C - .align 2, 0 -_0802C3C4: .4byte gRoomControls -_0802C3C8: .4byte gPlayerEntity -_0802C3CC: - adds r0, r4, #0 - adds r0, #0x7a - ldrh r1, [r0] - adds r7, r0, #0 - cmp r1, #0 - beq _0802C442 - subs r0, r1, #1 - strh r0, [r7] - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #0 - beq _0802C3EA - cmp r0, #8 - beq _0802C3F4 - b _0802C442 -_0802C3EA: - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - b _0802C442 -_0802C3F4: - ldrb r0, [r4, #0xb] - cmp r0, #0 - beq _0802C442 - adds r0, r4, #0 - bl sub_08049FA0 - cmp r0, #0 - bne _0802C442 - movs r6, #0 - movs r5, #1 -_0802C408: - adds r0, r4, #0 - movs r1, #0x15 - movs r2, #0 - bl CreateFx - adds r2, r0, #0 - cmp r2, #0 - beq _0802C420 - ldrh r0, [r2, #0x2e] - adds r0, #0xc - subs r0, r0, r6 - strh r0, [r2, #0x2e] -_0802C420: - adds r6, #0x18 - subs r5, #1 - cmp r5, #0 - bge _0802C408 - adds r0, r4, #0 - bl sub_0802C62C - bl Random - movs r1, #0xff - ands r0, r1 - movs r2, #0x80 - lsls r2, r2, #1 - adds r1, r2, #0 - orrs r0, r1 - strh r0, [r7] - b _0802C4AA -_0802C442: - ldr r0, _0802C45C @ =gRoomControls - ldrh r1, [r0, #8] - ldrh r0, [r0, #0x20] - adds r1, r1, r0 - movs r5, #0x32 - ldrsh r0, [r4, r5] - subs r5, r1, r0 - cmp r5, #4 - ble _0802C460 - adds r0, r4, #0 - bl ProcessMovement1 - b _0802C48C - .align 2, 0 -_0802C45C: .4byte gRoomControls -_0802C460: - adds r0, r4, #0 - bl LinearMoveUpdate - movs r1, #0x36 - ldrsh r0, [r4, r1] - subs r0, r0, r5 - cmp r0, #0x38 - ble _0802C48C - adds r0, r4, #0 - bl sub_0802C62C - bl Random - movs r1, #0x7f - ands r0, r1 - movs r1, #0x80 - orrs r0, r1 - strh r0, [r7] - ldrb r0, [r4, #0xa] - cmp r0, #3 - bne _0802C48C - strb r0, [r4, #0xc] -_0802C48C: - adds r1, r4, #0 - adds r1, #0x38 - movs r0, #3 - strb r0, [r1] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - subs r0, #0xb - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r2] - adds r0, r4, #0 - bl UpdateSpriteForCollisionLayer -_0802C4AA: - pop {r4, r5, r6, r7, pc} - - .syntax divided diff --git a/src/enemy/fallingBoulder.c b/src/enemy/fallingBoulder.c index 36ebaa39..5f9f5ce2 100644 --- a/src/enemy/fallingBoulder.c +++ b/src/enemy/fallingBoulder.c @@ -64,21 +64,25 @@ void sub_0802C318(Entity* this) { } } -NONMATCH("asm/non_matching/fallingBoulder/sub_0802C334.inc", void sub_0802C334(Entity* this)) { - if ((u16)this->field_0x7c.HALF.LO == 0) { +void sub_0802C334(Entity* this) { + register Entity* ent asm("r2"); + u32 diff; + u16 tmp; + if (this->field_0x7c.HALF_U.LO == 0) { u32 tmp = gRoomControls.origin_y; - if (&gPlayerEntity == NULL) + ent = &gPlayerEntity; + if (ent == NULL) return; - if (gPlayerEntity.y.HALF.HI - tmp <= 0x38) { + if (ent->y.HALF.HI - tmp <= 0x38) { return; } - this->field_0x7c.HALF.LO = 1; + this->field_0x7c.HALF_U.LO = 1; this->spriteSettings.draw = 1; } GetNextFrame(this); this->field_0x7c.HALF.HI = COORD_TO_TILE(this); if (sub_080044EC(this, *(u32*)&this->cutsceneBeh) == 1) { - EnqueueSFX(SFX_14C); + EnqueueSFX(0x14c); COLLISION_ON(this); this->field_0x7a.HWORD = 0xc; sub_0802C4B0(this); @@ -86,20 +90,18 @@ NONMATCH("asm/non_matching/fallingBoulder/sub_0802C334.inc", void sub_0802C334(E s32 y; if (this->field_0x7a.HWORD) { - u16 tmp = --this->field_0x7a.HWORD; + tmp = --this->field_0x7a.HWORD; switch (tmp) { case 0: COLLISION_OFF(this); break; case 8: if (this->type2 != 0 && !sub_08049FA0(this)) { - u32 diff = 0; - s32 i; - for (i = 1; i > -1; i--) { - Entity* ent = CreateFx(this, FX_ROCK2, 0); - if (ent != NULL) { - ent->x.HALF.HI += 12; - ent->x.HALF.HI -= diff; + diff = 0; + for (y = 1; y > -1; y--) { + ent = CreateFx(this, FX_ROCK2, 0); + if (ent) { + ent->x.HALF.HI = ent->x.HALF.HI + 12 - diff; } diff += 0x18; } @@ -111,7 +113,11 @@ NONMATCH("asm/non_matching/fallingBoulder/sub_0802C334.inc", void sub_0802C334(E } } - y = gRoomControls.origin_y + gRoomControls.height - this->y.HALF.HI; + { + FORCE_REGISTER(RoomControls * tmp, r0) = &gRoomControls; + y = tmp->origin_y + tmp->height - this->y.HALF.HI; + } + if (y >= 5) { ProcessMovement1(this); } else { @@ -129,7 +135,6 @@ NONMATCH("asm/non_matching/fallingBoulder/sub_0802C334.inc", void sub_0802C334(E this->spritePriority.b0 = 1; UpdateSpriteForCollisionLayer(this); } -END_NONMATCH void nullsub_148(Entity* this) { /* ... */