Fonctionnement du système graphique Sega Mega Drive: processeur d'affichage vidéo


Description du concept VDP


  • Vdp
    • "Processeur d'affichage V ideo D "
    • Puce de contrôleur vidéo traitant des graphiques en mosaïque, des plans de défilement et des sprites Genesis En fait, pas un processeur.
  • VRAM
    • " V ideo RAM "
      • RAM (RAM) utilisée par VDP
      • Contient des tuiles (images 8x8 pixels)
  • Les deux principaux types de consoles
    • Consoles NTSC
      • Sega Genesis, 60 machines Hertz, principalement distribuées aux USA
      • Autorisations
        • Mode H 40 - 320x224 pixels (carreaux 40 x28). Le mode de résolution le plus courant
        • Mode H 32 - 256x224 pixels (tuiles 32 x28). Mode de résolution moins populaire
      • Notre studio Mega Cat sort des jeux NTSC , il utilise donc ces autorisations!
    • Consoles PAL
      • Sega Mega Drive, 50 voitures Hertz vendues dans le monde
      • Autorisation
        • Mode H 40 - 320x240 pixels (carreaux 40 x30). Le mode de résolution le plus courant
        • Mode H 32 - 256x240 pixels (tuiles 32 x30). Mode de résolution moins populaire

Gauche: NTSC Model 2 Sega Genesis, droite: PAL Model 2 Mega Drive (Europe)

3 plans graphiques


2 plans de défilement

Le plan B est le plan d'arrière-plan. Affiche des graphiques de tuiles à l'aide de cartes de tuiles.

Le plan A est le plan de premier plan. Affiche des graphiques de tuiles à l'aide de cartes de tuiles Sous-plan de la fenêtre - un sous-plan pour le plan A, dont les graphiques ne défilent pas avec le reste du plan.

Chaque ligne de tuiles est rendue colonne par colonne. Les tuiles sur chaque plan peuvent avoir la priorité: haute ou basse.


Tuiles pour sprite rendues au format régulier (tuiles 4x4)

1 avion sprite

Dessine des graphiques de tuiles de sprite.

À l'intérieur de la console, les sprites sont rendus dans l'ordre inverse, c'est-à-dire chaque colonne de tuiles est rendue ligne par ligne.

Les sprites sont situés dans l'espace virtuel de 512 x 512 pixels, où les coordonnées (128 128) coïncident avec le coin supérieur gauche de l'écran du téléviseur.

Genesis peut afficher simultanément jusqu'à 80 sprites matériels à l'écran; Genesis peut afficher environ 20 sprites sur une ligne raster, avec un plus grand nombre de problèmes, il y a des problèmes avec les sprites débordants et ils cessent d'être affichés.

Pour les sprites matériels, les tailles sont limitées (lxh), où w est la largeur, h est la hauteur, en prenant des valeurs de 1 à 4 tuiles.

Des sprites plus grands que des sprites matériels peuvent être obtenus avec quelques sprites.

Comme pour les avions, les tuiles pour les sprites peuvent avoir une priorité faible ou élevée. Les sprites de basse priorité sont affichés sous les tuiles de haute priorité des autres couches. (En fait, tout est un peu plus compliqué, mais en général le concept est le suivant).


Les tuiles pour sprite à l'intérieur de la console sont rendues au format sprite (tuiles déplacées et 4x4 en taille)


Représentation visuelle de la priorité des couches planes
Source: Manuel du logiciel Genesis

VDP CRAM (" C olor RAM" - "color RAM")

4 rangées de palettes, chacune avec 16 couleurs

Chaque couleur a une profondeur de 4 bpp (4 bits par pixel)

La première couleur est la couleur transparente des graphiques de tuiles

Les lignes de la palette peuvent être rendues dans des couleurs légèrement plus claires ou plus sombres lorsque les hautes lumières ou les ombres sont activées.


Arrière-plans


Sega Genesis dispose de 2 plans de tuiles: le plan d'arrière-plan («Plan B») et le plan de premier plan («Plan A»). Selon le type de machine (NTSC ou PAL) et le mode vidéo utilisé (H40 ou H32), une carte de tuile plein écran aura une largeur de 32 ou 40 tuiles et une hauteur de 28 ou 30 tuiles. Chaque tuile se compose d'une image 8x8 pixels, et chaque pixel correspond à un indice de couleur (0-15). À proprement parler, un plan de fenêtre est un sous-plan du plan A; ses graphiques ne défileront pas avec le reste du plan A. Les avions peuvent être utilisés de nombreuses façons différentes, par exemple, pour les couches de premier plan et d'arrière-plan en plein écran, ou pour la technique qui fait la renommée de nombreux jeux pour Sega Genesis: le défilement parallaxe . En faisant défiler des lignes individuelles de carreaux sur des plans à différentes vitesses, vous pouvez créer l'illusion de la profondeur. Les tuiles sur les cartes de tuiles de différents plans peuvent avoir un paramètre prioritaire: haut ou bas. Ce paramètre détermine où les sprites (qui ont également une priorité élevée ou faible) doivent être affichés, sous la tuile ou au-dessus.







VSRAM ( V ideo S croll RAM - mémoire vidéo défilante)

Les couches Plan A et Plan B peuvent avoir des cartes de tuiles de plans de défilement de taille (lxh), où w est la largeur en tuiles, h est la hauteur en tuiles. Chacune des tailles ne peut être égale qu'à 32, 64 ou 128 tuiles. Ces plans de défilement "défilent vers l'intérieur / l'extérieur" de la résolution d'écran active (la taille est déterminée par le type de machine et le mode H32 / H40). Les plans de défilement de taille 128x64 / 64x128 et 128x128 ne sont pas autorisés. Par défaut, les parties VRAM aux adresses VRAM standard 0xC000 et 0xE000 sont affichées comme des «tuiles ordures», mais en fait, chaque pixel de ces «tuiles ordures» code une carte de tuiles VSRAM de manière compacte. L'utilisateur ne doit jamais écrire de vraies tuiles sur ces «ordures», sinon des bugs graphiques / plantages étranges, des ralentissements se produiront ou des ordures commenceront à apparaître sur les plans de défilement. Les avions peuvent utiliser 1 des 3 modes de défilement: par ligne raster, par tuile ou par bloc (sections de tuiles 2x2). Chaque avion peut défiler simultanément horizontalement et verticalement.

La couleur


Les tuiles ne peuvent utiliser qu'une ou quatre lignes de palettes à la fois. Chaque ligne de la palette contient 16 couleurs. La première couleur est réservée à une couleur transparente, qui est recommandée pour devenir rose (255,0,255) (RGB). Pour maintenir l'intégrité du style dans le jeu, 1 ou 2 palettes peuvent être sélectionnées pour des éléments individuels. Par exemple, la ligne de palette 1 peut être utilisée pour le personnage d'un joueur et la ligne de palette 2 peut être utilisée pour les éléments de l'interface utilisateur. Vous pouvez utiliser diverses palettes pour dessiner des ennemis, des arrière-plans et d'autres éléments changeants.


Pour une utilisation optimale des couleurs, cette palette utilise deux palettes, une pour chaque couche du plan de carte de tuiles. Les deux premières images sont des calques séparés (plan B et plan A), et la troisième est une image plein écran terminée dans laquelle les deux plans sont combinés. Étant donné que chaque mosaïque peut utiliser des couleurs indexées à partir d'une seule ligne de la palette à la fois, l'utilisation d'un tel schéma d'image avec deux plans vous permet d'assurer le nombre de couleurs inaccessibles à une image avec un seul plan.

Il existe deux techniques populaires pour travailler avec des palettes: le changement cyclique de palettes (cycle de palette) et les effets raster (effets raster) . En changeant la couleur de certains éléments dans une ligne distincte de la palette, vous pouvez implémenter régulièrement quelques effets tels qu'une cascade, un éclairage pulsé, etc.

Un exemple de l'effet du changement cyclique de palettes pour les rayures Berserk vacillantes dans la Zombie Football League




Les effets raster remplacent tout ou partie des couleurs d'une ligne de palette après une ligne raster spécifique. Nous ne considérerons pas cette technique en détail, mais elle consiste essentiellement à remplacer une partie de toutes les couleurs CRAM après avoir traversé le faisceau d'électrons de télévision d'une certaine ligne de balayage horizontal. Cette technique est utile pour implémenter des décalages de palette pour les objets sous l'eau. En particulier, il est utilisé pour les couleurs sous-marines du niveau de la zone du labyrinthe dans Sonic the Hedgehog .


Sprites



Sprite pose Ashley de Coffee Crisis

Les sprites dans Sega Genesis sont définis comme des images avec une taille ( lxh ), où w est la largeur en mosaïques et h est la hauteur en mosaïques, qui peut prendre des valeurs de 1 à 4 mosaïques. Chaque sprite ne peut utiliser qu'une seule ligne de la palette à la fois. Les sprites matériels peuvent avoir une taille maximale de tuiles 4x4. Sega Genesis peut gérer jusqu'à 80 sprites d'écran, 20 sprites par ligne raster, cependant, pour éviter les freins, il est préférable de ne pas atteindre cette limite. Pour contourner la limitation de la taille des sprites matériels, de nombreux jeux utilisent plusieurs sprites, collectant d'eux un personnage / objet. Le principe de la création d'un pixel art classique est de choisir une résolution suffisamment grande pour fournir les détails et la lisibilité nécessaires de l'image, mais suffisamment petite pour qu'elle puisse être facilement animée. Tous les graphiques de tuiles Sega Genesis doivent toujours être divisés par 8 pixels pour s'adapter aux tailles de tuiles. Les sprites peuvent être retournés horizontalement ("hflip") et / ou verticalement ("vflip"), et ont également un indicateur de priorité haute ou basse. Ce paramètre détermine si l'image-objet doit être affichée au-dessous ou au-dessus des tuiles d'autres plans (qui ont également un paramètre de priorité élevée ou faible). Les sprites matériels peuvent également avoir une valeur de lien; Chaque sprite doit avoir sa propre valeur de lien unique. Entre autres choses, cela affecte le rendu: les sprites avec des valeurs de lien faibles sont dessinés sur les sprites avec des valeurs de lien élevées.

L'animation



Courir le joueur de football Minotaure blindé de la Ligue de football Zombie

Dans la plupart des jeux, les graphiques sont animés, plutôt que d'être de simples sprites statiques. En modifiant progressivement les cadres des images-objets, vous pouvez créer l'illusion de mouvement et l'utiliser pour afficher la marche, les attaques, etc. Les concepteurs de jeux pour Sega Genesis devaient se souvenir du nombre de sprites et de tuiles de chaque animation afin qu'un trop grand nombre ne ralentisse pas le jeu. La création d'animations de sprites se transforme souvent en un compromis entre la recherche d'un petit nombre de sprites et la création d'un mouvement fascinant; Cela est particulièrement vrai pour les animations sur Sega Genesis.

Aujourd'hui, parmi les développeurs de hacks ROM Sonic the Hedgehog, une technique appelée " D ynamic P attern L oad C ues" (DPLC) est courante. Il consiste à charger dynamiquement des tuiles pour les sprites dans VRAM à la volée au lieu de stocker toutes les tuiles pour les images de sprites dans VRAM en même temps. Très souvent, les sprites détaillés (par exemple, les sprites du protagoniste) occupent trop de tuiles en VRAM utilisées pour les cadres de sprites. Si vous ne chargez dans la mémoire vidéo que les tuiles nécessaires à l'image de sprite rendue, vous pouvez enregistrer une VRAM limitée et l'occuper avec différents graphiques de tuiles. Malheureusement, les tuiles utilisées pour DPLC doivent être déballées dans la ROM afin que le chargement dans VRAM soit rapide et ne ralentisse pas le jeu. (Le déballage des graphiques compressés consomme des ressources CPU et prend trop de cycles.) Les fonctions du moteur de sprite SGDK (dans le fichier d'en-tête <sprite_eng.h>) utilisent généralement des techniques DPLC pour supprimer les tuiles inutilisées.


Outils de débogage et graphiques recommandés


Trouver un bon logiciel pour créer des graphiques rétro, diviser le pixel art en carreaux et réduire le nombre de couleurs à 4 bpp peut être difficile. Vous trouverez ci-dessous une liste de logiciels recommandés pour créer des graphiques rétro, ainsi que des émulateurs spécialisés qui permettent à l'utilisateur d'examiner le contenu de la VRAM et des avions.

Logiciel graphique:
  • RetroGraphicsToolkit
  • Irfanview
    • Application générale pour visualiser / éditer des images, a des plugins et un large support pour de nombreux types de fichiers image
    • Il peut éditer, exporter et importer des palettes, ainsi qu'augmenter / diminuer le nombre de couleurs d'image et afficher ce nombre. Utile pour préparer des fichiers graphiques pour travailler avec le moteur rescomp SGDK
    • Logiciels libres et open source
    • Possède un plugin PNG pour changer la profondeur des couleurs tout en préservant l'ordre des couleurs dans la palette
    • Liens d'information
  • Pcxpal
    • Logiciel utile qui vous permet de convertir entre plusieurs formats de palette différents.
    • Utile pour la conversion de / vers les palettes Megadrive .bin et le format de palette Irfanview JASC
    • Formats d'importation
      • Images BMP, GIF, PCX
      • Préservation des émulateurs Genesis: GGD, GS *, MSD
      • Fichiers de palette Jasc, Megadrive, MS RIFF, Tile Layer Pro
    • Formats d'exportation
      • Palettes Jasc, Megadrive et Tile Layer Pro
    • Liens d'information

Émulateurs spécialisés recommandés pour le débogage VDP


Jeux pour SEGA GENESIS à explorer



Il existe de nombreux jeux magnifiques pour Sega Genesis, à partir desquels vous pouvez apprendre une variété de techniques et d'effets spéciaux. Y compris:

  • Série Streets of Rage
  • Sonic the Hedgehog Series
    • Effets raster de la palette d'eau
    • Sprite / priorité aux tuiles (en particulier les boucles et un système de fragments à deux couches dans Sonic 2 et Sonic 3 / Knuckles)
    • Moteur de jeu performant, rapide et de très haute qualité
    • Sprite DPLC
    • Conception de haut niveau et styles graphiques (en particulier dans Sonic 3 / Knuckles)
    • Effets du changement cyclique de palette
    • Effets de parallaxe
  • Les aventures de Batman et Robin
    • Un tas d'effets graphiques complexes
  • Lignées de Castlevania
  • Aladdin
  • Earthworm Jim Series
    • Animation fluide
  • Série Phantasy Star
  • Zone rouge
    • Vidéo noir et blanc lisse 1 bit dans l'écran de démarrage
    • Simulation logicielle de rotation des sprites et des cartes de tuiles!
    • Graphiques isométriques / vue de dessus
  • Panorama Cotton (Jap) , Street Racer
    • Graphiques rappelant SNES Mode 7, défilement des lignes et effets graphiques très sophistiqués
  • Hard Drivin ' et Race Drivin'
    • 3D, rendu logiciel de graphiques polygonaux
  • Zero Tolerance et Beyond Zero Tolerance (non publié)
    • Raycaster logiciel ressemblant à DOOM
  • Histoire de jouets
    • Effets de palette raster qui vous permettent de dépasser le nombre de couleurs CRAM dans les images d'écran de veille statiques
    • Niveau à la première personne DOOM Raycaster
    • Effets de parallaxe pour la géométrie de niveau de niveau 1 avec Woody

  • Star Cruiser (Jap)
    • 3D, rendu logiciel de graphiques polygonaux
  • Contra: Hard Corps
    • Le robot mini-boss géant au premier niveau est une carte de tuiles avec rotation simulée des cartes de tuiles / sprites
  • Un énorme RPG fait maison appelé Pier Solar
    • Grands graphismes
    • Quelques années créées par une équipe de fans, gourous et développeurs homebrew Genesis
    • Énorme cartouche de 64 Mo

Remarquez comment différents jeux utilisent les limitations matérielles de Genesis et comment certains jeux tirent le maximum de fer. Dans Streets of Rage et Batman ont très bien montré les zones urbaines difficiles. Dans les jeux Sonic, il existe des couleurs très vives et contrastées qui vous permettent de reconnaître l'environnement même malgré la vitesse élevée de Sonic. Aladdin et Earthworm Jim ont des animations fluides et amusantes qui soulignent le caractère du personnage.

Références et lectures complémentaires


Source: https://habr.com/ru/post/fr471914/


All Articles