You've already forked Microtransactions64
mirror of
https://github.com/Print-and-Panic/Microtransactions64.git
synced 2026-01-21 10:17:19 -08:00
Add ground turn circle fix
This commit is contained in:
@@ -76,6 +76,8 @@
|
||||
#define HANGING_SPEED 12.f
|
||||
// Makes Mario face the direction of the analog stick directly while hanging from a ceiling, without doing "semicircles"
|
||||
#define TIGHTER_HANGING_CONTROLS
|
||||
// Fixes Mario's turn radius by making it dependent on forward speed.
|
||||
#define FIX_GROUND_TURN_RADIUS
|
||||
// Makes Mario turn around instantly when moving on the ground
|
||||
//#define SUPER_RESPONSIVE_CONTROLS
|
||||
// Disables fall damage
|
||||
|
||||
@@ -434,6 +434,11 @@ s32 update_decelerating_speed(struct MarioState *m) {
|
||||
return stopped;
|
||||
}
|
||||
|
||||
s32 analog_stick_held_back(struct MarioState *m) {
|
||||
s16 intendedDYaw = m->intendedYaw - m->faceAngle[1];
|
||||
return intendedDYaw < -0x471C || intendedDYaw > 0x471C;
|
||||
}
|
||||
|
||||
void update_walking_speed(struct MarioState *m) {
|
||||
f32 maxTargetSpeed;
|
||||
f32 targetSpeed;
|
||||
@@ -461,9 +466,30 @@ void update_walking_speed(struct MarioState *m) {
|
||||
if (m->forwardVel > 48.0f) {
|
||||
m->forwardVel = 48.0f;
|
||||
}
|
||||
|
||||
#ifdef SUPER_RESPONSIVE_CONTROLS
|
||||
m->faceAngle[1] = m->intendedYaw;
|
||||
|
||||
#ifdef FIX_GROUND_TURN_RADIUS
|
||||
if ((m->forwardVel < 0.0f) && (m->heldObj == NULL) && !(m->action & ACT_FLAG_SHORT_HITBOX)) {
|
||||
m->faceAngle[1] += 0x8000;
|
||||
m->forwardVel *= -1.0f;
|
||||
}
|
||||
if (analog_stick_held_back(m) && (m->heldObj == NULL) && !(m->action & ACT_FLAG_SHORT_HITBOX)) {
|
||||
set_mario_action(m, ACT_TURNING_AROUND, 0);
|
||||
if (m->forwardVel < 10.0f) {
|
||||
m->faceAngle[1] = m->intendedYaw;
|
||||
}
|
||||
} else {
|
||||
s16 turnRange = (0xFFF - (m->forwardVel * 0x20));
|
||||
if (turnRange < 0x800) {
|
||||
turnRange = 0x800;
|
||||
set_mario_action(m, ACT_TURNING_AROUND, 0);
|
||||
} else if (turnRange > 0xFFF) {
|
||||
turnRange = 0xFFF;
|
||||
}
|
||||
m->faceAngle[1] =
|
||||
m->intendedYaw - approach_s32((s16)(m->intendedYaw - m->faceAngle[1]), 0, 0x800, 0x800);
|
||||
}
|
||||
#elif SUPER_RESPONSIVE_CONTROLS
|
||||
m->faceAngle[1] = m->intendedYaw;
|
||||
#else
|
||||
m->faceAngle[1] =
|
||||
m->intendedYaw - approach_s32((s16)(m->intendedYaw - m->faceAngle[1]), 0, 0x800, 0x800);
|
||||
@@ -484,11 +510,6 @@ s32 should_begin_sliding(struct MarioState *m) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s32 analog_stick_held_back(struct MarioState *m) {
|
||||
s16 intendedDYaw = m->intendedYaw - m->faceAngle[1];
|
||||
return intendedDYaw < -0x471C || intendedDYaw > 0x471C;
|
||||
}
|
||||
|
||||
s32 check_ground_dive_or_punch(struct MarioState *m) {
|
||||
UNUSED s32 unused;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user