mirror of https://github.com/zeldaret/tmc.git
Decompiled some coord.c functions
This commit is contained in:
parent
3a2172db8d
commit
ed98ab4b76
|
@ -1,30 +0,0 @@
|
|||
.syntax unified
|
||||
push {r4, r5, lr}
|
||||
adds r2, r0, #0
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r2, r1]
|
||||
ldr r4, [r2, #0x48]
|
||||
movs r1, #0
|
||||
ldrsb r1, [r4, r1]
|
||||
adds r0, r0, r1
|
||||
ldr r3, _0806F7CC @ =gRoomControls
|
||||
ldrh r1, [r3, #6]
|
||||
subs r0, r0, r1
|
||||
movs r5, #0x32
|
||||
ldrsh r1, [r2, r5]
|
||||
movs r2, #1
|
||||
ldrsb r2, [r4, r2]
|
||||
adds r1, r1, r2
|
||||
ldrh r2, [r3, #8]
|
||||
subs r1, r1, r2
|
||||
movs r2, #0x3f
|
||||
lsrs r0, r0, #4
|
||||
ands r0, r2
|
||||
lsrs r1, r1, #4
|
||||
ands r1, r2
|
||||
lsls r1, r1, #6
|
||||
adds r0, r0, r1
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0806F7CC: .4byte gRoomControls
|
||||
.syntax divided
|
|
@ -1,25 +0,0 @@
|
|||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
mov r6, r8
|
||||
push {r6}
|
||||
adds r4, r2, #0
|
||||
adds r5, r3, #0
|
||||
movs r2, #0x2e
|
||||
ldrsh r6, [r0, r2]
|
||||
movs r2, #0x32
|
||||
ldrsh r3, [r0, r2]
|
||||
mov r8, r3
|
||||
movs r3, #0x2e
|
||||
ldrsh r2, [r1, r3]
|
||||
adds r2, r2, r4
|
||||
movs r0, #0x32
|
||||
ldrsh r3, [r1, r0]
|
||||
adds r3, r3, r5
|
||||
adds r0, r6, #0
|
||||
mov r1, r8
|
||||
bl sub_080045D4
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
30
src/coord.c
30
src/coord.c
|
@ -194,7 +194,12 @@ u32 sub_0806F730(Entity* ent) {
|
|||
return ((x >> 4) & tmp) + (((y >> 4) & tmp) << 6);
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/sub_0806F798.inc", u32 sub_0806F798(Entity* ent));
|
||||
u32 sub_0806F798(Entity* ent) {
|
||||
u32 hitboxX = ent->x.HALF.HI + ent->hitbox->offset_x - gRoomControls.roomOriginX;
|
||||
u32 hitboxY = ent->y.HALF.HI + ent->hitbox->offset_y - gRoomControls.roomOriginY;
|
||||
u32 mask = 0x3f;
|
||||
return (mask & (hitboxX >> 4)) + ((mask & (hitboxY >> 4)) << 6);
|
||||
}
|
||||
|
||||
u32 sub_0806F7D0(Entity* ent) {
|
||||
return gUnk_02025EB0._2004[sub_0806F730(ent)];
|
||||
|
@ -209,7 +214,9 @@ u32 sub_0806F804(u32 x, u32 y) {
|
|||
return gUnk_02025EB0._4[idx];
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/sub_0806F824.inc", void sub_0806F824(Entity* a, Entity* b, u32 x, u32 y));
|
||||
void sub_0806F824(Entity* a, Entity* b, s32 x, s32 y) {
|
||||
sub_080045D4(a->x.HALF.HI, a->y.HALF.HI, b->x.HALF.HI + x, b->y.HALF.HI + y);
|
||||
}
|
||||
|
||||
u32 sub_0806F854(Entity* ent, s32 x, s32 y) {
|
||||
if (ent->z.WORD == 0 || (ent->collisionLayer & 2))
|
||||
|
@ -253,7 +260,24 @@ u32 sub_0806F948(Entity* ent) {
|
|||
return ent->animationState;
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/sub_0806F998.inc", u32 sub_0806F998(Entity* ent));
|
||||
NONMATCH("asm/non_matching/sub_0806F998.inc", u32 sub_0806F998(Entity* ent)) {
|
||||
u8 animationState = ent->animationState;
|
||||
|
||||
if ((ent->direction & 0x80) == 0) {
|
||||
u8 tmp = ((ent->direction & 0x1c) >> 2);
|
||||
if ((tmp & 0x1) == 0 || ((tmp - animationState + 1) & 0x4)) {
|
||||
animationState = ent->animationState = (animationState >> 2) & 0x7e;
|
||||
if (ent->animationState <= 4) {
|
||||
ent->spriteSettings.flipX = 0;
|
||||
} else {
|
||||
ent->spriteSettings.flipX = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return animationState;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
s16 FixedMul(s16 r0, s16 r1) {
|
||||
s32 temp = r0 * r1;
|
||||
|
|
Loading…
Reference in New Issue