Match diagonal move functions

This commit is contained in:
Tal Hayon
2022-05-13 02:49:58 +03:00
parent 6654cc3ffc
commit 4cd8aa9ab6
5 changed files with 73 additions and 579 deletions
-129
View File
@@ -1,129 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r4, r0, #0
adds r5, r1, #0
mov r8, r2
mov sb, r3
movs r7, #0
movs r6, #0
ldrh r0, [r4, #0x2a]
movs r1, #0xe
ands r1, r0
mov ip, r1
movs r2, #0xe0
lsls r2, r2, #8
ands r2, r0
adds r3, r2, #0
cmp r1, #0
beq _080AE904
cmp r2, #0
bne _080AE99E
_080AE904:
orrs r1, r2
cmp r1, #0
bne _080AE928
ldr r1, _080AE924 @ =gSineTable
mov r0, r8
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r1
movs r2, #0
ldrsh r0, [r0, r2]
adds r7, r0, #0
muls r7, r5, r7
ldr r0, [r4, #0x30]
subs r0, r0, r7
str r0, [r4, #0x30]
b _080AE98A
.align 2, 0
_080AE924: .4byte gSineTable
_080AE928:
mov r2, ip
cmp r2, #2
bne _080AE942
lsls r7, r5, #8
ldr r0, [r4, #0x2c]
adds r0, r0, r7
str r0, [r4, #0x2c]
adds r0, r4, #0
movs r1, #4
mov r2, sb
bl CalculateEntityTileCollisions
b _080AE95C
_080AE942:
movs r0, #0x80
lsls r0, r0, #7
cmp r3, r0
bne _080AE95C
lsls r7, r5, #8
ldr r0, [r4, #0x30]
subs r0, r0, r7
str r0, [r4, #0x30]
adds r0, r4, #0
movs r1, #4
mov r2, sb
bl CalculateEntityTileCollisions
_080AE95C:
ldrh r2, [r4, #0x2a]
movs r0, #0xe
ands r0, r2
cmp r0, #0
bne _080AE97E
ldr r1, _080AE9B4 @ =gSineTable
mov r0, r8
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r1
movs r1, #0
ldrsh r0, [r0, r1]
adds r6, r0, #0
muls r6, r5, r6
ldr r0, [r4, #0x30]
subs r0, r0, r6
str r0, [r4, #0x30]
_080AE97E:
movs r0, #0xe0
lsls r0, r0, #8
ands r0, r2
cmp r0, #0
bne _080AE99E
ldr r1, _080AE9B4 @ =gSineTable
_080AE98A:
mov r2, r8
lsls r0, r2, #1
adds r0, r0, r1
movs r1, #0
ldrsh r0, [r0, r1]
adds r6, r0, #0
muls r6, r5, r6
ldr r0, [r4, #0x2c]
adds r0, r0, r6
str r0, [r4, #0x2c]
_080AE99E:
ldr r2, _080AE9B8 @ =0x00003333
adds r0, r7, r2
ldr r1, _080AE9BC @ =0x00006665
cmp r0, r1
bhi _080AE9C0
ldr r2, _080AE9B8 @ =0x00003333
adds r0, r6, r2
cmp r0, r1
bhi _080AE9C0
movs r0, #0
b _080AE9C2
.align 2, 0
_080AE9B4: .4byte gSineTable
_080AE9B8: .4byte 0x00003333
_080AE9BC: .4byte 0x00006665
_080AE9C0:
movs r0, #1
_080AE9C2:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided
-129
View File
@@ -1,129 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r4, r0, #0
adds r5, r1, #0
mov r8, r2
mov sb, r3
movs r7, #0
movs r6, #0
ldrh r0, [r4, #0x2a]
movs r1, #0xe
ands r1, r0
mov ip, r1
movs r2, #0xe0
lsls r2, r2, #4
ands r2, r0
adds r3, r2, #0
cmp r1, #0
beq _080AEEC0
cmp r2, #0
bne _080AEF5A
_080AEEC0:
orrs r1, r2
cmp r1, #0
bne _080AEEE4
ldr r1, _080AEEE0 @ =gSineTable
mov r0, r8
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r1
movs r2, #0
ldrsh r0, [r0, r2]
adds r7, r0, #0
muls r7, r5, r7
ldr r0, [r4, #0x30]
subs r0, r0, r7
str r0, [r4, #0x30]
b _080AEF46
.align 2, 0
_080AEEE0: .4byte gSineTable
_080AEEE4:
mov r2, ip
cmp r2, #4
bne _080AEEFE
lsls r7, r5, #8
ldr r0, [r4, #0x2c]
subs r0, r0, r7
str r0, [r4, #0x2c]
adds r0, r4, #0
movs r1, #0x1c
mov r2, sb
bl CalculateEntityTileCollisions
b _080AEF18
_080AEEFE:
movs r0, #0x80
lsls r0, r0, #3
cmp r3, r0
bne _080AEF18
lsls r7, r5, #8
ldr r0, [r4, #0x30]
subs r0, r0, r7
str r0, [r4, #0x30]
adds r0, r4, #0
movs r1, #0x1c
mov r2, sb
bl CalculateEntityTileCollisions
_080AEF18:
ldrh r2, [r4, #0x2a]
movs r0, #0xe
ands r0, r2
cmp r0, #0
bne _080AEF3A
ldr r1, _080AEF70 @ =gSineTable
mov r0, r8
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r1
movs r1, #0
ldrsh r0, [r0, r1]
adds r6, r0, #0
muls r6, r5, r6
ldr r0, [r4, #0x30]
subs r0, r0, r6
str r0, [r4, #0x30]
_080AEF3A:
movs r0, #0xe0
lsls r0, r0, #4
ands r0, r2
cmp r0, #0
bne _080AEF5A
ldr r1, _080AEF70 @ =gSineTable
_080AEF46:
mov r2, r8
lsls r0, r2, #1
adds r0, r0, r1
movs r1, #0
ldrsh r0, [r0, r1]
adds r6, r0, #0
muls r6, r5, r6
ldr r0, [r4, #0x2c]
adds r0, r0, r6
str r0, [r4, #0x2c]
_080AEF5A:
ldr r2, _080AEF74 @ =0x00003333
adds r0, r7, r2
ldr r1, _080AEF78 @ =0x00006665
cmp r0, r1
bhi _080AEF7C
ldr r2, _080AEF74 @ =0x00003333
adds r0, r6, r2
cmp r0, r1
bhi _080AEF7C
movs r0, #0
b _080AEF7E
.align 2, 0
_080AEF70: .4byte gSineTable
_080AEF74: .4byte 0x00003333
_080AEF78: .4byte 0x00006665
_080AEF7C:
movs r0, #1
_080AEF7E:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided
-129
View File
@@ -1,129 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r4, r0, #0
adds r5, r1, #0
mov r8, r2
mov sb, r3
movs r7, #0
movs r6, #0
ldrh r0, [r4, #0x2a]
movs r1, #0xe0
ands r1, r0
mov ip, r1
movs r2, #0xe0
lsls r2, r2, #8
ands r2, r0
adds r3, r2, #0
cmp r1, #0
beq _080AEAEC
cmp r2, #0
bne _080AEB86
_080AEAEC:
orrs r1, r2
cmp r1, #0
bne _080AEB10
ldr r1, _080AEB0C @ =gSineTable
mov r0, r8
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r1
movs r2, #0
ldrsh r0, [r0, r2]
adds r7, r0, #0
muls r7, r5, r7
ldr r0, [r4, #0x30]
subs r0, r0, r7
str r0, [r4, #0x30]
b _080AEB72
.align 2, 0
_080AEB0C: .4byte gSineTable
_080AEB10:
mov r2, ip
cmp r2, #0x20
bne _080AEB2A
lsls r7, r5, #8
ldr r0, [r4, #0x2c]
adds r0, r0, r7
str r0, [r4, #0x2c]
adds r0, r4, #0
movs r1, #0xc
mov r2, sb
bl CalculateEntityTileCollisions
b _080AEB44
_080AEB2A:
movs r0, #0x80
lsls r0, r0, #6
cmp r3, r0
bne _080AEB44
lsls r7, r5, #8
ldr r0, [r4, #0x30]
adds r0, r0, r7
str r0, [r4, #0x30]
adds r0, r4, #0
movs r1, #0xc
mov r2, sb
bl CalculateEntityTileCollisions
_080AEB44:
ldrh r2, [r4, #0x2a]
movs r0, #0xe0
ands r0, r2
cmp r0, #0
bne _080AEB66
ldr r1, _080AEB9C @ =gSineTable
mov r0, r8
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r1
movs r1, #0
ldrsh r0, [r0, r1]
adds r6, r0, #0
muls r6, r5, r6
ldr r0, [r4, #0x30]
subs r0, r0, r6
str r0, [r4, #0x30]
_080AEB66:
movs r0, #0xe0
lsls r0, r0, #8
ands r0, r2
cmp r0, #0
bne _080AEB86
ldr r1, _080AEB9C @ =gSineTable
_080AEB72:
mov r2, r8
lsls r0, r2, #1
adds r0, r0, r1
movs r1, #0
ldrsh r0, [r0, r1]
adds r6, r0, #0
muls r6, r5, r6
ldr r0, [r4, #0x2c]
adds r0, r0, r6
str r0, [r4, #0x2c]
_080AEB86:
ldr r2, _080AEBA0 @ =0x00003333
adds r0, r7, r2
ldr r1, _080AEBA4 @ =0x00006665
cmp r0, r1
bhi _080AEBA8
ldr r2, _080AEBA0 @ =0x00003333
adds r0, r6, r2
cmp r0, r1
bhi _080AEBA8
movs r0, #0
b _080AEBAA
.align 2, 0
_080AEB9C: .4byte gSineTable
_080AEBA0: .4byte 0x00003333
_080AEBA4: .4byte 0x00006665
_080AEBA8:
movs r0, #1
_080AEBAA:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided
-129
View File
@@ -1,129 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r4, r0, #0
adds r5, r1, #0
mov r8, r2
mov sb, r3
movs r7, #0
movs r6, #0
ldrh r0, [r4, #0x2a]
movs r1, #0xe0
ands r1, r0
mov ip, r1
movs r2, #0xe0
lsls r2, r2, #4
ands r2, r0
adds r3, r2, #0
cmp r1, #0
beq _080AECD8
cmp r2, #0
bne _080AED72
_080AECD8:
orrs r1, r2
cmp r1, #0
bne _080AECFC
ldr r1, _080AECF8 @ =gSineTable
mov r0, r8
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r1
movs r2, #0
ldrsh r0, [r0, r2]
adds r7, r0, #0
muls r7, r5, r7
ldr r0, [r4, #0x30]
subs r0, r0, r7
str r0, [r4, #0x30]
b _080AED5E
.align 2, 0
_080AECF8: .4byte gSineTable
_080AECFC:
mov r2, ip
cmp r2, #0x40
bne _080AED16
lsls r7, r5, #8
ldr r0, [r4, #0x2c]
subs r0, r0, r7
str r0, [r4, #0x2c]
adds r0, r4, #0
movs r1, #0x14
mov r2, sb
bl CalculateEntityTileCollisions
b _080AED30
_080AED16:
movs r0, #0x80
lsls r0, r0, #2
cmp r3, r0
bne _080AED30
lsls r7, r5, #8
ldr r0, [r4, #0x30]
adds r0, r0, r7
str r0, [r4, #0x30]
adds r0, r4, #0
movs r1, #0x14
mov r2, sb
bl CalculateEntityTileCollisions
_080AED30:
ldrh r2, [r4, #0x2a]
movs r0, #0xe0
ands r0, r2
cmp r0, #0
bne _080AED52
ldr r1, _080AED88 @ =gSineTable
mov r0, r8
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r1
movs r1, #0
ldrsh r0, [r0, r1]
adds r6, r0, #0
muls r6, r5, r6
ldr r0, [r4, #0x30]
subs r0, r0, r6
str r0, [r4, #0x30]
_080AED52:
movs r0, #0xe0
lsls r0, r0, #4
ands r0, r2
cmp r0, #0
bne _080AED72
ldr r1, _080AED88 @ =gSineTable
_080AED5E:
mov r2, r8
lsls r0, r2, #1
adds r0, r0, r1
movs r1, #0
ldrsh r0, [r0, r1]
adds r6, r0, #0
muls r6, r5, r6
ldr r0, [r4, #0x2c]
adds r0, r0, r6
str r0, [r4, #0x2c]
_080AED72:
ldr r2, _080AED8C @ =0x00003333
adds r0, r7, r2
ldr r1, _080AED90 @ =0x00006665
cmp r0, r1
bhi _080AED94
ldr r2, _080AED8C @ =0x00003333
adds r0, r6, r2
cmp r0, r1
bhi _080AED94
movs r0, #0
b _080AED96
.align 2, 0
_080AED88: .4byte gSineTable
_080AED8C: .4byte 0x00003333
_080AED90: .4byte 0x00006665
_080AED94:
movs r0, #1
_080AED96:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided
+73 -63
View File
@@ -1775,25 +1775,26 @@ bool32 MoveNorth(Entity* this, s32 radius, s32 angle, u32 collisionType) {
}
}
ASM_FUNC("asm/non_matching/movement/MoveNorthEast.inc",
bool32 MoveNorthEast(Entity* this, s32 radius, s32 angle, u32 collisionType))
/*NONMATCH("asm/non_matching/movement/MoveNorthEast.inc",
bool32 MoveNorthEast(Entity* this, s32 radius, s32 angle, u32 collisionType)) {
bool32 MoveNorthEast(Entity* this, s32 radius, s32 angle, u32 collisionType) {
s32 moveA = 0;
s32 moveB = 0;
if (((this->collisions & COL_NORTH_ANY) == COL_NONE) || ((this->collisions & COL_EAST_ANY) == COL_NONE)) {
if ((this->collisions & (COL_NORTH_ANY | COL_EAST_ANY)) == COL_NONE) {
moveA = radius * gSineTable[angle + 0x40];
s32 northCollision = (this->collisions & COL_NORTH_ANY);
u32 northCollision2 = northCollision;
s32 eastCollision = (this->collisions & COL_EAST_ANY);
u32 eastCollision2 = eastCollision;
if ((northCollision == COL_NONE) || (eastCollision == COL_NONE)) {
if ((northCollision | eastCollision) == COL_NONE) {
moveA = gSineTable[angle + 0x40] * radius;
this->y.WORD -= moveA;
moveB = radius * gSineTable[angle];
moveB = gSineTable[angle] * radius;
this->x.WORD += moveB;
} else {
if ((this->collisions & COL_NORTH_ANY) == COL_NORTH_WEST) {
if (northCollision2 == COL_NORTH_WEST) {
moveA = radius * 0x100;
this->x.WORD += moveA;
CalculateEntityTileCollisions(this, DirectionNorthEast, collisionType);
} else {
if ((this->collisions & COL_EAST_ANY) == COL_EAST_NORTH) {
if (eastCollision2 == COL_EAST_NORTH) {
moveA = radius * 0x100;
this->y.WORD -= moveA;
CalculateEntityTileCollisions(this, DirectionNorthEast, collisionType);
@@ -1809,13 +1810,14 @@ ASM_FUNC("asm/non_matching/movement/MoveNorthEast.inc",
}
}
}
if (((moveA >= -0x3333) && (moveA < 0x3333)) && ((moveB >= -0x3333) && (moveB < 0x3333))) {
return FALSE;
} else {
if (((moveA < -0x3333) || (moveA >= 0x3333))) {
return TRUE;
} else if ((moveB < -0x3333) || (moveB >= 0x3333)) {
return TRUE;
} else {
return FALSE;
}
}
END_NONMATCH*/
bool32 MoveEast(Entity* this, s32 radius, s32 angle, u32 collisionType) {
s32 moveA = 0;
@@ -1855,24 +1857,25 @@ bool32 MoveEast(Entity* this, s32 radius, s32 angle, u32 collisionType) {
}
}
ASM_FUNC("asm/non_matching/movement/MoveSouthEast.inc",
bool32 MoveSouthEast(Entity* this, s32 radius, s32 angle, u32 collisionType))
/*NONMATCH("asm/non_matching/movement/MoveSouthEast.inc",
bool32 MoveSouthEast(Entity* this, s32 radius, s32 angle, u32 collisionType)) {
bool32 MoveSouthEast(Entity* this, s32 radius, s32 angle, u32 collisionType) {
s32 moveA = 0;
s32 moveB = 0;
if (((this->collisions & COL_SOUTH_ANY) == COL_NONE) || ((this->collisions & COL_EAST_ANY) == COL_NONE)) {
if ((this->collisions & (COL_SOUTH_ANY | COL_EAST_ANY)) == COL_NONE) {
s32 anySouth = this->collisions & COL_SOUTH_ANY;
s32 anySouth2 = anySouth;
s32 anyEast = this->collisions & COL_EAST_ANY;
s32 anyEast2 = anyEast;
if ((anySouth == COL_NONE) || (anyEast == COL_NONE)) {
if ((anySouth | anyEast) == COL_NONE) {
moveA = gSineTable[angle + 0x40] * radius;
this->y.WORD -= moveA;
moveB = gSineTable[angle] * radius;
this->x.WORD += moveB;
} else {
if ((this->collisions & COL_SOUTH_ANY) == COL_SOUTH_WEST) {
if (anySouth2 == COL_SOUTH_WEST) {
moveA = radius * 0x100;
this->x.WORD += moveA;
CalculateEntityTileCollisions(this, DirectionSouthEast, collisionType);
} else if ((this->collisions & COL_EAST_ANY) == COL_EAST_SOUTH) {
} else if (anyEast2 == COL_EAST_SOUTH) {
moveA = radius * 0x100;
this->y.WORD += moveA;
CalculateEntityTileCollisions(this, DirectionSouthEast, collisionType);
@@ -1887,13 +1890,16 @@ ASM_FUNC("asm/non_matching/movement/MoveSouthEast.inc",
}
}
}
if (((moveA >= -0x3333) && (moveA < 0x3333)) && ((moveB >= -0x3333) && (moveB < 0x3333))) {
return FALSE;
} else {
if (moveA < -0x3333 || moveA >= 0x3333) {
return TRUE;
}
if (moveB < -0x3333 || moveB >= 0x3333) {
return TRUE;
}
return FALSE;
}
END_NONMATCH*/
bool32 MoveSouth(Entity* this, s32 radius, s32 angle, u32 collisionType) {
s32 moveA = 0;
@@ -1934,47 +1940,49 @@ bool32 MoveSouth(Entity* this, s32 radius, s32 angle, u32 collisionType) {
}
}
ASM_FUNC("asm/non_matching/movement/MoveSouthWest.inc",
bool32 MoveSouthWest(Entity* this, s32 radius, s32 angle, u32 collisionType))
/*NONMATCH("asm/non_matching/movement/MoveSouthWest.inc",
bool32 MoveSouthWest(Entity* this, s32 radius, s32 angle, u32 collisionType)) {
bool32 MoveSouthWest(Entity* this, s32 radius, s32 angle, u32 collisionType) {
s32 moveA = 0;
s32 moveB = 0;
if (((this->collisions & COL_SOUTH_ANY) == COL_NONE) || ((this->collisions & COL_WEST_ANY) == COL_NONE)) {
if ((this->collisions & (COL_SOUTH_ANY | COL_WEST_ANY)) == COL_NONE) {
moveB = gSineTable[angle + 0x40] * radius;
this->y.WORD -= moveB;
moveA = gSineTable[angle] * radius;
this->x.WORD += moveA;
s32 anySouth = this->collisions & COL_SOUTH_ANY;
s32 anySouth2 = anySouth;
s32 anyWest = this->collisions & COL_WEST_ANY;
s32 anyWest2 = anyWest;
if ((anySouth == COL_NONE) || (anyWest == COL_NONE)) {
if ((anySouth | anyWest) == COL_NONE) {
moveA = gSineTable[angle + 0x40] * radius;
this->y.WORD -= moveA;
moveB = gSineTable[angle] * radius;
this->x.WORD += moveB;
} else {
if ((this->collisions & COL_SOUTH_ANY) == COL_SOUTH_EAST) {
moveB = radius * 0x100;
this->x.WORD -= moveB;
if (anySouth2 == COL_SOUTH_EAST) {
moveA = radius * 0x100;
this->x.WORD -= moveA;
CalculateEntityTileCollisions(this, DirectionSouthWest, collisionType);
} else if (anyWest2 == COL_WEST_SOUTH) {
moveA = radius * 0x100;
this->y.WORD += moveA;
CalculateEntityTileCollisions(this, DirectionSouthWest, collisionType);
} else {
if ((this->collisions & COL_WEST_ANY) == COL_WEST_SOUTH) {
moveB = radius * 0x100;
this->y.WORD += moveB;
CalculateEntityTileCollisions(this, DirectionSouthWest, collisionType);
}
}
if ((this->collisions & COL_SOUTH_ANY) == COL_NONE) {
moveA = gSineTable[angle + 0x40] * radius;
this->y.WORD -= moveA;
moveB = gSineTable[angle + 0x40] * radius;
this->y.WORD -= moveB;
}
if ((this->collisions & COL_WEST_ANY) == COL_NONE) {
moveA = gSineTable[angle] * radius;
this->x.WORD += moveA;
moveB = gSineTable[angle] * radius;
this->x.WORD += moveB;
}
}
}
if (((moveA >= -0x3333) && (moveA < 0x3333)) && ((moveB >= -0x3333) && (moveB < 0x3333))) {
return FALSE;
} else {
if (moveA < -0x3333 || moveA >= 0x3333) {
return TRUE;
}
if (moveB < -0x3333 || moveB >= 0x3333) {
return TRUE;
}
return FALSE;
}
END_NONMATCH*/
bool32 MoveWest(Entity* this, s32 radius, s32 angle, u32 collisionType) {
s32 moveA = 0;
@@ -2018,14 +2026,13 @@ bool32 MoveWest(Entity* this, s32 radius, s32 angle, u32 collisionType) {
}
}
ASM_FUNC("asm/non_matching/movement/MoveNorthWest.inc",
bool32 MoveNorthWest(Entity* this, s32 radius, s32 angle, u32 collisionType))
/*NONMATCH("asm/non_matching/movement/MoveNorthWest.inc",
bool32 MoveNorthWest(Entity* this, s32 radius, s32 angle, u32 collisionType)) {
bool32 MoveNorthWest(Entity* this, s32 radius, s32 angle, u32 collisionType) {
s32 moveA = 0;
s32 moveB = 0;
u32 colNorthAny = (this->collisions & COL_NORTH_ANY);
u32 colNorthAny2 = colNorthAny;
u32 colWestAny = (this->collisions & COL_WEST_ANY);
u32 colWestAny2 = colWestAny;
if ((colNorthAny == COL_NONE) || (colWestAny == COL_NONE)) {
if ((colNorthAny | colWestAny) == COL_NONE) {
moveA = gSineTable[angle + 0x40] * radius;
@@ -2033,12 +2040,12 @@ ASM_FUNC("asm/non_matching/movement/MoveNorthWest.inc",
moveB = gSineTable[angle] * radius;
this->x.WORD += moveB;
} else {
if (colNorthAny == COL_NORTH_EAST) {
if (colNorthAny2 == COL_NORTH_EAST) {
moveA = radius * 0x100;
this->x.WORD -= moveA;
CalculateEntityTileCollisions(this, DirectionNorthWest, collisionType);
} else {
if (colWestAny == COL_WEST_NORTH) {
if (colWestAny2 == COL_WEST_NORTH) {
moveA = radius * 0x100;
this->y.WORD -= moveA;
CalculateEntityTileCollisions(this, DirectionNorthWest, collisionType);
@@ -2054,13 +2061,16 @@ ASM_FUNC("asm/non_matching/movement/MoveNorthWest.inc",
}
}
}
if (((moveA >= -0x3333) && (moveA < 0x3333)) && ((moveB >= -0x3333) && (moveB < 0x3333))) {
return FALSE;
} else {
if (moveA < -0x3333 || moveA >= 0x3333) {
return TRUE;
}
if (moveB < -0x3333 || moveB >= 0x3333) {
return TRUE;
}
return FALSE;
}
END_NONMATCH*/
bool32 ProcessMovement0(Entity* this) {
bool32 result;