/16 -> >>4 ne devrait rien changer au code - ou alors, le compilo a besoin d'une amélioration


//Retourne si oui ou non la coordonnée spécifiée est dans la zone décompressée
int coordValide(int coordX, int coordY) {
if (coordX>=((advMapOffsetX+3)<<9) || coordY>=((advMapOffsetY+3)<<9) || coordX<((advMapOffsetX-1)<<9) || coordY<((advMapOffsetY-1)<<9))
return 0;
else
return 1;
}


Brunni (./88) :
Si je remplace les & 15 du moteur de collisions de mon Sonic par des % 16 ou pire les >> 4 par des / 16 je peux te jurer qu'il tourne *carrément* moins bien niveau vitesse, même si le résultat est exactement le même visuellement parce que je ne tombe jamais dans les cas limite...Y'a des fois où t'as pas le choix...

Sasume (./84) :
-> D'où l'intérêt de laisser le compilateur réaliser lui-même les bonnes optimisations (puisque tu te trompes et que ton code est moins lisible)
Brunni (./96) :Bah non, pour un entier non signé « / 8 » devrait être remplacé par « >> 3 ». Mais c'est vrai que pour la manipulation de mots de bits, je préfère la notation avec les « << » et « >> » qui a plus de sens.
tu dois utiliser *8 dans un sens et >>3 dans l'autre parce que sinon tu perds 160 cycles
d'exceptions) je retourne souvent -1 pour signaler une erreur par exemple. Même mes variables de boucle sont signées alors que c'est vrai que ça n'a pas de sens. En plus t'as des milliers de warnings dès que tu commences à mélanger (et les casts rendent le tout illisible). En plus je me rappelle qu'avec mon compilo en mettant unsigned c'est parfois plus lent, va savoir pourquoi :/