Fix DAS and movement transition synchronization to eliminate 2-frame lag between tiles
This commit is contained in:
@@ -225,23 +225,6 @@ void engine_init(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void engine_update(uint8_t keys, uint8_t prev_keys) {
|
void engine_update(uint8_t keys, uint8_t prev_keys) {
|
||||||
uint8_t keys_pressed = keys & ~prev_keys;
|
|
||||||
|
|
||||||
if (keys_pressed) {
|
|
||||||
das_timer = DAS_DELAY;
|
|
||||||
das_active = 1;
|
|
||||||
} else if (keys && das_active) {
|
|
||||||
if (das_timer > 0) {
|
|
||||||
das_timer--;
|
|
||||||
}
|
|
||||||
if (das_timer == 0 && !is_moving) {
|
|
||||||
das_timer = DAS_REPEAT;
|
|
||||||
keys_pressed = keys; // trigger move
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
das_active = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_moving) {
|
if (is_moving) {
|
||||||
move_progress++;
|
move_progress++;
|
||||||
|
|
||||||
@@ -279,6 +262,26 @@ void engine_update(uint8_t keys, uint8_t prev_keys) {
|
|||||||
// Set player to idle stand frame
|
// Set player to idle stand frame
|
||||||
update_player_sprite();
|
update_player_sprite();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t keys_pressed = keys & ~prev_keys;
|
||||||
|
|
||||||
|
if (keys_pressed) {
|
||||||
|
das_timer = DAS_DELAY;
|
||||||
|
das_active = 1;
|
||||||
|
} else if (keys && das_active) {
|
||||||
|
if (das_timer > 0) {
|
||||||
|
das_timer--;
|
||||||
|
}
|
||||||
|
if (das_timer == 0 && !is_moving) {
|
||||||
|
das_timer = DAS_REPEAT;
|
||||||
|
keys_pressed = keys; // trigger move
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
das_active = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_moving) {
|
||||||
return; // Ignore other inputs while moving
|
return; // Ignore other inputs while moving
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user