Fix overflow calcolo probabilita' caduta (int 8-bit su GB)

Il calcolo (60 - stamina) * 255 overflow su 8-bit (int del Game Boy).
Cast a uint16_t per il calcolo corretto. Ora il rischio di caduta
funziona: 30 stamina = 50% caduta, 0 stamina = 100% caduta.
This commit is contained in:
2026-06-26 13:04:28 +02:00
parent 30111d6316
commit 14eb7893f7
+3 -1
View File
@@ -164,7 +164,9 @@ void update_player_movement(uint8_t keys, uint8_t prev_keys) {
// (es: 30 stamina -> 50% caduta; 0 stamina -> 100% caduta)
uint8_t fall_chance = 0;
if (stamina < 60) {
fall_chance = (uint8_t)(((60 - stamina) * 255) / 60);
// Probabilita' di caduta proporzionale allo stamina mancante.
// Cast a uint16_t per evitare overflow (int e' 8-bit su GB).
fall_chance = (uint8_t)(((uint16_t)(60 - stamina) * 255) / 60);
}
uint8_t roll = (uint8_t)rand();
uint8_t will_fall = (roll < fall_chance);