Auteur: @upsilandre

Ce contenu est la reproduction de ce thread Twitter.

Mon dernier thread était sur l'overflow et le flickering de sprite des consoles 8-bit. Je viens de one lifer [Double Dragon](https://www.igdb.com/games/double-dragon NES et le cas des Beat Them All est justement un cas intéressant sur cette question 🙂.

#Retrogaming #NES #MasterSystem #DoubleDragon

Dans un BTA il y a une mobilité 3D avec une profondeur Z de la scène. Le sprite du joueur peut être devant ou derrière un ennemi selon la situation. Celà implique que le code du jeu doit classer les sprites selon la profondeur pour les afficher du plus loin au plus proche.

C'est ce que l'on appelle le Z-sorting et ça entre en conflit avec la gestion du flickering et donc la gestion de l'overflow de sprite car pour le GPU c'est l'ordre d'affichage des sprites qui définit aussi l'ordre de priorité vis à vis de l'overflow.

Donc pour un BTA sur console 8-bit c'est problématique car l'overflow de sprite est fréquent. Face à ce fait on observe 3 types de BTA: Le cas Double Dragon Master System (ou Mighty Final Fight NES) qui décide de faire l'impasse complète du Z-sorting.

Ça veut dire qu'il n'y a pas de prise en considération de la profondeur dans l'affichage des sprites ce qui permet un brassage continu de la liste de sprite mais donc un flickering omniprésent dès que 2 sprites se superposent (qu'il y ait de l'overflow ou pas comme ici).

L'autre alternative c'est celle des Double Dragon NES (ou de P.O.W.). Il s'agit cette fois de faire du Z-sorting avec donc une vraie gestion de la profondeur. Le sprite du joueur peut être devant ou derrière l'ennemi...

... mais sans gestion du flickering pour ne pas briser le Z-sorting donc les sprites disparaissent en situation d'overflow comme ici les jambes et le coup de poing de Abobo (le cas Double Dragon est donc un cas intéressant de jeu qui clignote beaucoup moins sur NES que sur SMS).

C'est notamment le choix qu'on ferait en arcade ou même sur console 16-bit (par exemple Paprium pour citer le dernier) car les situations d'overflow sont plus rares ou discrètes (dans le fatras général plus intense) c'est donc un compromis raisonnable dans ce cas.

La 3ème solution est celle des champions. Celle que l'on peut voir chez Konami dans TMNT3 (et Batman Returns), l'un des jeux NES les plus abouti techniquement, et qui consiste à proposer une gestion plus complexe et dynamique de la liste de sprite...

...afin de considérer aussi la position horizontale relative des sprites entre eux pour appliquer un brassage et flickering uniquement entre ceux qui sont distants et non superposés et préserver le Z-sorting (donc sans flickering) sur ceux qui se superposent. Un cas rare.

J'ai relancé DD2 et DD3 et contrairement à mon souvenir je réalise que les DD NES couvrent à eux seuls les 3 méthodes 🙂

  • Z-sorting sans flickering sur DD1
  • Z-sorting + flickering sur DD2 (comme TMNT3 donc la méthode la plus avancé)
  • Flickering sans Z-sorting sur DD3 (comme DD SMS)

Pour voir l'intégralité des threads d'Upsilandre archivés sur ce site, c'est par ici.