/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