diff --git a/asm/non_matching/movement/MoveNorthEast.inc b/asm/non_matching/movement/MoveNorthEast.inc deleted file mode 100644 index 65a3ffcc..00000000 --- a/asm/non_matching/movement/MoveNorthEast.inc +++ /dev/null @@ -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 diff --git a/asm/non_matching/movement/MoveNorthWest.inc b/asm/non_matching/movement/MoveNorthWest.inc deleted file mode 100644 index b6ab895b..00000000 --- a/asm/non_matching/movement/MoveNorthWest.inc +++ /dev/null @@ -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 diff --git a/asm/non_matching/movement/MoveSouthEast.inc b/asm/non_matching/movement/MoveSouthEast.inc deleted file mode 100644 index d497d4e9..00000000 --- a/asm/non_matching/movement/MoveSouthEast.inc +++ /dev/null @@ -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 diff --git a/asm/non_matching/movement/MoveSouthWest.inc b/asm/non_matching/movement/MoveSouthWest.inc deleted file mode 100644 index 563fe38c..00000000 --- a/asm/non_matching/movement/MoveSouthWest.inc +++ /dev/null @@ -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 diff --git a/src/movement.c b/src/movement.c index 0c4f0368..3224af88 100644 --- a/src/movement.c +++ b/src/movement.c @@ -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;