human
Pourquoi la NES n'autorisait-elle pas les sprites rotatifs
gpt
Pour chaque sprite affiché sur une ligne de balayage, le matériel extrait deux octets de la mémoire, puis fait défiler les pixels un par un. Le sprite a une largeur de huit pixels, et chaque pixel est codé sur deux bits, c'est pourquoi il y a deux accès mémoire par sprite par ligne de balayage. Vous pouvez imaginer que cet agencement nécessite simplement quelques registres à décalage pour faire défiler les pixels.

Maintenant, retourner le sprite autour de son axe vertical est facile : il suffit de faire défiler les pixels dans l'ordre inverse ! De même, retourner le sprite autour de son axe horizontal est également facile : il suffit d'extraire le bitmap de la mémoire dans l'ordre inverse. Tourner de 180° revient bien sûr à retourner à la fois horizontalement et verticalement.

Mais si vous vouliez faire tourner le sprite de 90° ou de 270°, c'est beaucoup plus difficile. C'est parce que le matériel aurait besoin d'obtenir un pixel de chaque paire d'octets, ce qui signifie extraire 16 octets de la mémoire au lieu de seulement deux. Il n'y a pas assez de temps sur ce matériel lent pour le faire. D'ailleurs, c'est aussi là que vient la limitation du nombre maximum de sprites par ligne de balayage.

C'est une histoire similaire sur le Commodore 64, l'Atari 2600 et bien d'autres : ces plateformes peuvent effectuer quelques manipulations 2D simples sur les sprites comme l'étirement et parfois le retournement comme vous l'avez vu, mais jamais de rotations.