Comment obtenez-vous 1024 couleurs en CGA? Et y en a-t-il vraiment 1024?

Lancée en 2015, la traduction «Nouveau mode graphique: CGA en 1024 couleurs» m'a beaucoup impressionné, mais je ne comprenais toujours pas comment cette astuce fonctionne, car l'article a été écrit par un professionnel dans le domaine du graphisme rétro-informatique, et suggère que le lecteur a déjà quelques connaissances dans ce domaine. Bien que mon premier ordinateur ( "Search" était un clone soviétique d'IBM PC / XT) avait CGA, je n'ai pas trouvé de moniteurs avec une entrée composite, j'ai donc dû le rechercher sur Google et comprendre comment fonctionnait la vidéo composite. Pour ceux qui sont également intéressés par les technologies «internes» de 1981, dans lesquelles des opportunités inattendues sans papiers ont été découvertes en 2015, j'ai rassemblé le matériel que j'ai trouvé.

1. Fonctionnalités CGA natives


Pour un profane, CGA est généralement associé à des graphiques 320x200 et à une palette de quatre couleurs avec des couleurs acidulées, comme dans les jeux de 1983 Alley Cat , J-bird , Lode Runner et Tapper :




Mais la limite de 320x200x2bpp n'est imposée que par la quantité de mémoire vidéo disponible sur l'adaptateur (16 Ko) , en fait, il est capable de produire une image de 640x200x4bpp - avec des pixels fortement allongés verticalement.Ceci est utilisé, par exemple, en mode texte 80x25 avec des caractères 16 couleurs et un arrière-plan, et une matrice de caractères de 8x8 pixels. (On peut calculer que la mémoire tampon d'écran dans ce cas ne prend que 80x25x2 = 4000 octets.) Mais si les graphiques sont sortis dans cette 640x200 "haute résolution", alors 16 Ko de mémoire vidéo sont suffisants pour une image en noir et blanc. Un tel mode graphique a été pris en charge, par exemple, par Windows jusqu'à la version 3.0 incluse:



En sortie, le CGA a produit un signal numérique pour lequel l'interface RGBI a été spécialement inventée: deux lignes de synchronisation signalent le début de la trame et le début de la ligne de balayage, et quatre lignes du signal vidéo transmettent la couleur à quatre bits du pixel actuel. Mais les moniteurs capables de recevoir un signal numérique RGBI à l'entrée étaient rares en 1981; IBM lui-même a commencé à produire de tels moniteurs numériques seulement en 1983. Pour les utilisateurs à domicile, CGA avait une deuxième conclusion - le signal vidéo très composite avec lequel les maîtres de la scène de démonstration ont évoqué. Il pouvait être connecté via un modulateur RF à l'entrée d'antenne d'un téléviseur américain classique, et certains téléviseurs avaient une entrée composite spéciale (pour connecter, par exemple, un magnétoscope) qui vous permettait d'entrer un signal vidéo contournant le tuner et d'éviter une modulation / démodulation inutile.



La partie du cerclage de l'adaptateur vidéo, qui forme le signal NTSC composite de la sortie numérique (c'est la norme américaine pour la télévision couleur), était destinée uniquement à la phase de transition jusqu'à ce que tous les utilisateurs de PC aient des moniteurs numériques. La prochaine carte vidéo d'IBM - EGA (1984) - ne supportait que la sortie numérique (déjà six bits), en utilisant une paire de contacts précédemment inutilisés dans l'interface RGBI. De plus, les modes «haute résolution» n'étaient pas recommandés pour une utilisation avec une sortie vidéo composite, car 640 pixels dans la ligne de balayage dépassaient les capacités du NTSC. La section suivante explique pourquoi; et Wikipedia illustre comment le texte était flou en mode CGA à 80 colonnes sur un moniteur d'entrée composite:




2. Caractéristiques du téléviseur


La télévision en noir et blanc a été arrangée de manière très simple: un faisceau d'électrons contourne l'écran ligne par ligne, et le niveau du signal vidéo contrôle directement la puissance du faisceau. Pendant le retour entre les lignes et entre les trames, le faisceau est désactivé et le signal vidéo transmet des impulsions de synchronisation. Le signal étant entièrement analogique, sa résolution horizontale n'est pas définie: la luminosité peut varier en douceur sur toute la ligne. D'un autre côté, la résolution verticale est déterminée par la fréquence de balayage horizontal (243 lignes pour NTSC).

L'illustration, soigneusement dessinée dans MS Paint, montre à quoi ressemble le signal vidéo pour une image composée de deux bandes verticales: large sombre et étroite lumineuse. En haut, un signal pour une ligne est représenté schématiquement, en bas, un signal pour une séquence de lignes. Une impulsion de synchronisation «plus noire que noire» est transmise avant chaque ligne . Lorsque la télévision couleur a été créée, il était important que les téléviseurs noir et blanc existants acceptent la vidéo couleur acceptable. Les Américains ont trouvé l'astuce suivante: les informations de couleur sont transmises par un signal harmonique de sous - porteuse



ajouté au signal de luminance. Ensuite, un téléviseur en noir et blanc qui ne sait pas isoler et analyser l'harmonique de la sous-porteuse mettra en évidence chaque pixel avec une luminosité correspondant à la valeur moyenne du signal pendant le temps de transmission des pixels. Si la fréquence de la sous-porteuse est suffisamment grande, le signal supplémentaire n'affectera pas la valeur moyenne, c'est-à-dire sur la luminosité affichée. Nous convenons maintenant que le déphasage de la sous-porteuse correspond à la teinte de la couleur, et son amplitude correspond à la saturation; la division de la couleur en luminosité, teinte et saturation correspond au modèle de couleur YIQ .

La deuxième illustration montre schématiquement le signal vidéo pour une ligne de l'image, constituée de bandes verticales colorées. Une salve de couleur supplémentaire est transmise entre l'horloge et le début de la ligne., qui règle le récepteur sur la phase à partir de laquelle les décalages de la sous-porteuse seront mesurés. Maintenant, les sections plates du signal (c'est-à-dire avec une amplitude nulle de la sous-porteuse) correspondront aux barres grises (saturation nulle); les zones où la sous-porteuse correspond en phase de salve de couleur à des bandes jaunes avec deux valeurs de saturation différentes en fonction de l'amplitude de la sous-porteuse; tracer où la sous-porteuse est en antiphase par rapport à l'éclat de couleur - la barre bleue. Étant donné que le niveau de signal moyen est le même dans toutes les régions, un récepteur de télévision en noir et blanc affiche toutes les bandes avec la même nuance de gris. Le NTSC exige que le signal auxiliaire soit sinusoïdal, mais ce n'est pas si important: l'onde carrée montrée sur l'illustration ( méandre


) se compose d'harmoniques avec la fréquence et la phase souhaitées, ainsi que d'additifs de fréquence plus élevée ignorés par le récepteur de télévision. L'amplitude de cette harmonique est supérieure à l'amplitude du méandre dans fois, mais comme le téléviseur utilise l'amplitude de la sous-porteuse non pas en valeur absolue, mais par rapport à l'amplitude extraite du burst de couleur, l'affichage couleur n'est pas affecté par le remplacement d'un additif sinusoïdal par un additif rectangulaire. Le CGA et d'autres appareils numériques primitifs génèrent exactement des ondes carrées.4/π

Afin de simplifier la séparation du signal principal (luminosité) et du signal supplémentaire (couleur), le NTSC a normalisé la fréquence de la sous-porteuse, 227,5 fois plus élevée que la fréquence horizontale - c'est-à-dire pour chaque ligne, ainsi que l'espacement entre les lignes, il y a 227,5 périodes de sous-porteuses. Ainsi, le téléviseur couleur américain a une certaine résolution horizontale: la luminosité peut toujours changer en douceur sur toute la ligne, mais la fréquence de la teinte couleur est limitée par la fréquence de la sous-porteuse. Si le téléviseur reçoit un signal vidéo avec une résolution horizontale de 640 pixels, alors environ un tiers de la période de sous-porteuse correspond à chaque pixel, et un filtre matériel primitif n'a pas le temps d'identifier correctement le déphasage et l'amplitude de la sous-porteuse à partir du signal pour chaque pixel. Cela conduit à des résultats inattendus - de flou,comme indiqué dans l'exemple ci-dessus, avant de créerCouleurs "artefact" , inaccessibles par le biais de l'adaptateur vidéo. (Je n'aime vraiment pas le nom de "couleurs parasites" utiliséSLY_Gen traduction d'un article sur 1024 couleurs; La signification principale du mot anglais artefact - «artificiel, créé artificiellement» - contraste ces couleurs avec «naturel» pour CGA, et n'a rien à voir avec le parasitisme.)

Exactement avec la résolution horizontale, un bug matériel en CGA a été connecté: en modes 640x200 (c.-à-d. h. dans un texte de 80 colonnes) l'image sur le moniteur composite s'est avérée être en noir et blanc. La solution de contournement pour ce bogue était bien connue: vous devez définir un cadre brun autour de l'image. Le fait est que le cerclage qui forme les signaux d'horloge règle leur durée en cycles d'horloge de l'adaptateur vidéo; dans les modes 640x200, ces horloges sont deux fois moins longues que dans les modes 320x200, de sorte que l'horloge entre les lignes du cadre est également deux fois plus courte que NTSC l'exige. Par conséquent, la salve de couleur n'a tout simplement pas le temps d'être transmise. Mais s'il y a un cadre marron autour de l'image (le marron a un déphasage presque nul, une faible luminosité et la saturation correspond à une amplitude approximative pour la couleur en rafale), alors le moniteur prend le côté gauche du cadre en couleur, ne le dessine pas sur l'écran et est correctement réglé sur phase de sous-porteuse de couleur.



3. Dispositif de signal composite CGA


Bien que le signal vidéo numérique produit par CGA puisse avoir une résolution horizontale allant jusqu'à 640 pixels (c'est-à-dire 640 changements dans les niveaux de signaux numériques sur une seule ligne), un signal vidéo composite peut être considéré comme ayant une résolution de 1280 «sous-pixels» quel que soit le mode vidéo utilisé, c'est-à-dire pour chaque pixel en modes 640x200, il y a deux sous-pixels, en modes 320x200 - quatre. Le niveau de signal (en volts) émis par l'adaptateur vidéo pour le sous-pixel actuel est calculé par la formuleU=0.41+I0.3+C0,75 , où le bitI(intensité) est tiré directement de la couleur du pixel actuel et le signalC(chrominance) est sélectionné par le multiplexeur en fonction des trois autres bits de couleur (R, G, B):
RgBCCouleur
00000000000…le noir
00100001111…bleu (~ 180 °)
01011100001…vert (~ 45 °)
01111000011…turquoise (~ 90 °)
10000111100…rouge (~ 270 °)
10100011110…magenta (~ 225 °)
11011110000…jaune (~ 0 °)
11111111111…blanc
Les couleurs chromatiques correspondent à un signal de chrominance avec une période de huit sous-pixels et avec un déphasage proche d'un multiple de 45 °, soit à un nombre entier de sous-pixels. Grâce aux ingénieux schémas de retard en CGA, les déphasages des couleurs sont légèrement (à ± 10 °) différents des multiples de 45 ° pour être plus proches des couleurs NTSC standard .

Ainsi, sur 227,5 périodes de sous-porteuses dans une ligne, 160 sont dans l'image de sortie et les autres sont dans l'intervalle entre les lignes (horloge, rafale de couleur et trame autour de l'image). Il est important qu'un nombre non entier de périodes de sous-porteuses passe de l'éclat de couleur au premier pixel de la ligne: le premier pixel commence à être transmis à 45 °, donc si la ligne commence par quatre pixels jaunes, le signal de chrominance prendra des valeurs lors de la transmission des huit sous-pixels correspondants 11100001.

Luminosité des pixels (luma), c.-à-d. la valeur moyenne du niveau du signal pour la période de la sous-porteuse, obtenezL=0.72Cavg+0.28I , où : 0,5 pour les couleurs chromatiques, 0 pour le noir et 1 pour le blanc. Cela signifie que sur un moniteur composite noir et blanc, le premier modèle CGA (1981) ne pouvait afficher que six nuances de gris. Dans les modèles CGA ultérieurs (depuis 1983), l'ajout non périodique à la sous-porteuse a commencé à dépendre des quatre bits de couleur, de sorte que la luminosité correspondait à une formule plus complexeCavg=RGB+RGB2 , ce qui nous a permis d'afficher notre propre nuance de gris sur un moniteur noir et blanc pour chacune des 16 valeurs de couleur. En raison de ce raffinement, les couleurs qui diffèrent en luminosité et sont plus proches de celles affichées sur le numérique ont également commencé à s'afficher sur le moniteur composite couleur: les bogues et les défauts matériels dans le faisceau formant le signal composite à partir de la sortie numérique indiquent que les développeurs CGA n'étaient pas trop inquiets de son utilisation. avec un moniteur composite, et encore moins inquiet de la façon dont les modes «haute résolution» seraient affichés sur le moniteur composite. Cependant, c'est cette combinaison non prise en charge qui a permis aux maîtres de la demoscene de presser l'inimaginable du CGA!L=0.29Cavg+0.1R+0.22G+0.07B+0.32je






4. Fonctionnalités CGA inattendues ...


4a) ... en modes graphiques


Comme expliqué ci-dessus, la partie de la ligne, ombrée d'une couleur, dans le signal vidéo composite se transforme en un méandre avec une période de huit sous-pixels. L'inverse est également vrai: tout signal composite se répétant avec une période de huit sous-pixels sera affiché comme une partie monochrome de la ligne, car la sous-porteuse harmonique extraite de celle-ci aura un déphasage constant et une amplitude constante. Il est plus difficile de prévoir exactement quel décalage de phase sera utilisé; L'article sur 1024 couleurs montre le résultat sans aucune explication: la colonne Nybble montre une séquence répétée de quatre pixels en mode 640x200x1bpp, c'est-à-dire de huit sous-pixels. Deux de ces séquences ( et



01011010) correspondent à des méandres avec une période de quatre sous-pixels: il n'y a pas de sous-porteuse harmonique dans une telle onde, donc la couleur résultante est grise. Quatre autres séquences ( 0011, 0110, 1001, 1100) correspondent à des ondes de sous-porteuses pures - avec un décalage de 135 °, 225 °, 45 ° et 315 °, respectivement. Deux de ces vagues fixent les couleurs standard violet et vert, les deux autres - bleu et orange, inaccessibles par des moyens réguliers de CGA. Remplissage du signal à 75% (séquence0111, 1011, 1101, 1110) correspond à un décalage de sous-porteuse de phase d'un demi-pixel, c'est-à-dire sur un sous-pixel; mais le résultat ne correspond pas exactement à la phase des couleurs standard - en raison des schémas de retard qui «tirent» les couleurs CGA standard vers les couleurs NTSC standard. Ainsi, des nuances légèrement décalées sont obtenues: bleu turquoise, turquoise verdâtre, brun rougeâtre, rouge violet. Un remplissage de 75% augmente le niveau moyen du signal, c'est-à-dire luminosité des couleurs; mais n'affecte pas la saturation, car les «bords» plus larges du méandre sont créés par des harmoniques haute fréquence ignorés par le récepteur de télévision. Enfin, un signal avec un remplissage de 25% correspond aux mêmes teintes que pour 75%, mais moins de luminosité.

Il est encore plus difficile de prédire quelle couleur se révélera lorsque la séquence sera répétée non pas à partir de pixels noirs et blancs, mais à partir de pixels couleur. En mode 640x200x1bpp, la couleur d'arrière-plan est toujours noire, mais la deuxième couleur peut être sélectionnée parmi n'importe laquelle des 16 couleurs standard. En mode 320x200x2bpp, au contraire, la couleur d'arrière-plan peut être sélectionnée parmi les 16 couleurs standard, et les trois autres couleurs sont déterminées par la palette sélectionnée parmi quatre options. L'article sur 1024 couleurs montre deux de ces combinaisons, encore une fois sans explication. J'ai demandé des commentaires directement à reenigne , responsable de la partie technique de la sortie vidéo en 8088 MPH, ainsi que de l'implémentation de l'émulation CGA dans DOSBox; et il m'a conseillé cgaart- émulateur CGA autonome écrit par lui, capable de travailler en mode batch. En ajoutant une simple liaison Python à cgaart, j'ai généré un tableau à partir de tous les jeux de 16 couleurs possibles de «couleurs d'artefact»:

Table complète

Le code de chaque ensemble comprend le numéro du mode graphique ( 1Apour 640x200x1bpp, 0Apour 320x200x2bpp), le numéro de la palette ( 0–3) et le nombre de couleurs librement sélectionnables ( 0–F). Chaque ligne du tableau se compose de 16 carrés correspondant à une séquence répétée de pixels; chaque carré se compose de cinq bandes - sortie numérique, niveau du signal composite et sortie sur le moniteur composite avec le premier modèle CGA, sortie sur le moniteur composite et niveau du signal composite avec le modèle CGA corrigé. Le niveau du signal composite est affiché comme la moyenne pour deux sous-pixels - cgaart le calcule uniquement avec une telle précision. Considérons plus en détail les lignes correspondant aux deux ensembles présentés dans l'article sur 1024 couleurs - ce sont des ensembles 1A0Cet0A01; mais avant cela, considérons un ensemble plus simple 1A04:



un ensemble 1A04- pixels rouges sur fond noir - correspond à un signal avec un remplissage à 50% et un décalage de 270 °, modulé par une séquence périodique de quatre pixels. Le niveau élevé du signal se situe dans les trois premières séquences de pixels, c'est donc le quatrième bit qui n'affecte pas la couleur résultante: par exemple, 000xet se 001xtransforme en noir pur, et 111x- en rouge pur. Les séquences mises à zéro du premier pixel ( 010xet 011x) correspondent au déphasage d'un sous-pixel, c'est-à-dire -45 ° à magenta; Deuxième pixel réinitialisable ( 100xet 101x) - décalage de 45 ° à l'orange.

Ensemble1A0C- pixels rouges clairs sur fond noir - correspond au même signal, mais avec un ajout non périodique, de sorte que son niveau bas est désormais supérieur au noir. A la suite de cette séquence 0001, 0010, 0011sont convertis en les mêmes couleurs (vert, turquoise, bleu bleu et biryuzovato) comme dans le cas des pixels blancs, mais maintenant avec une luminosité beaucoup plus faible, car une source de signal faible de niveau joue un rôle d'un niveau élevé de la résultante. Les séquences restantes maintiennent un niveau élevé du signal d'origine, et les nuances de couleurs correspondantes sont obtenues près de l'ensemble 1A04, bien que la luminosité soit maintenant plus élevée en raison d'un niveau moyen plus élevé.

Enfin réglé0A01- un fond bleu, une palette vert-rouge-brun, quatre sous-pixels dans chaque pixel, deux pixels dans une séquence répétée - contient quatre couleurs standard (les séquences 00, 11, 22, 33ne provoquent pas d'artefacts) et leurs mélanges par paire: si vous ajoutez deux méandres, la sous-porteuse harmonique se déplace dans le signal résultant sera au milieu entre les changements de termes. Néanmoins, la luminosité et la saturation du résultat dépendent de l'ordre des termes: par exemple, le rouge a un niveau élevé de sous-pixels 1–4, le vert a 6–1, de sorte que la séquence 12coupe complètement le niveau élevé du terme rouge et le demi-vert ; alors que la séquence21conserve pleinement un niveau élevé du terme rouge, et demi-vert. La teinte dans les deux cas devient jaune, mais pour la séquence 12- saturée et très sombre, tandis que pour 21- insaturée et très claire.

Ainsi, il y a 80 jeux de 16 couleurs disponibles simultanément. Quelle est la résolution réelle? La couleur ne peut être modifiée qu'entre des blocs de 8 sous-pixels, c'est-à-dire 160 fois par ligne; mais la luminosité est définie pour chaque pixel indépendamment. Un article sur 1024 couleurs prévient que ces modes ne peuvent pas être appelés «16 couleurs 160x200», car «la résolution horizontale est une question ouverte, elle dépend de l'échantillonnage et du filtrage du signal, et varie selon les formes du signal couleur que vous utilisez» ( transfertSLY_G) Néanmoins, il est facile de s'assurer que même avec une tonalité de couleur constante, le moniteur composite n'affiche pas les fluctuations de luminosité dans les 8 blocs de sous-pixels: faites attention, par exemple, à l'ensemble 0A0Adans le tableau complet, et aux séquences 01et 10correspondant aux pixels verts à éclairer fond vert. La luminosité et la teinte de la couleur sont analysées bloc par bloc avec le moniteur composite.Ainsi, au lieu d'alterner des pixels verts de deux niveaux de luminosité, des pixels monotones avec un niveau de luminosité moyen sont obtenus. Pour une séquence, le 10résultat est moins saturé que les termes, car cette séquence coupe le bas niveau du terme vert foncé. Par conséquent, à mon avis, lors de l'utilisation de couleurs d'artefact, il y a tout lieu de considérer 160x200 comme une résolution réelle.

4a) ... en modes texte


Comme mentionné au tout début, CGA prend en charge un mode texte 80x25 16 couleurs avec une matrice de caractères 8x8 pixels, et seulement un quart de la mémoire vidéo est utilisé dans ce mode. Les artisans ont trouvé un moyen non documentébasculer la sortie vers une nouvelle ligne de texte toutes les deux lignes de pixels, c'est-à-dire sortie de chaque caractère uniquement les deux premières lignes de pixels. Dans le mode «demi-texte» de 100 lignes qui en résulte, les 16 Ko de mémoire vidéo sont utilisés et l'image est en 16 couleurs avec une résolution de 640x200 pixels. Mais par rapport aux modes graphiques, dans le semi-texte il y a des restrictions assez strictes: premièrement, dans chaque familiarité de 8x2 pixels, seules deux couleurs différentes peuvent être utilisées; deuxièmement, la séquence de pixels «principaux» et «d'arrière-plan» dans chaque familiarité doit correspondre aux deux lignes supérieures d'un des 256 caractères, flashées dans la ROM CGA. Même avec ces limitations, combinant les inconvénients du pixel art et des pseudo-graphiques de texte, les assistants parviennent à créer d'incroyables dessins en 16 couleurs:



(Dans l'article sur 1024 couleurs, seul un quart de cette image est montré, mais sa version complète a été publiée séparément - directement sous la forme d'un vidage de la mémoire vidéo.)

Sans un hack de 100 lignes - c'est-à-dire si la matrice de chaque caractère était complètement rendue, la partie centrale de l'image ressemblerait à ceci: à



droite se trouve un tableau de caractères cousu en ROM, où les deux lignes supérieures de chaque caractère, disponibles pour une utilisation en mode semi-texte, sont surlignées en jaune.

Pour la première fois, Macrocom a décidé de combiner un hack de 100 lignes et des pseudo-graphiques de texte, libérant le jeu "ICON: The Quest for the Ring" en 1984 avec une résolution de 320x200x4bpp qui semblait incroyable pour CGA. Cependant, même les économiseurs d'écran statiquesMacrocom était bien pire que VileR; et pendant le jeu, les graphismes étaient encore plus primitifs.




(Le paradoxe est que bien qu'il s'agisse d'un mode texte, l'affichage du texte est très simple: vous devez collecter chaque caractère à partir des «morceaux» du micrologiciel en ROM.)

Une autre limitation importante du mode semi-texte est que l'image sur le moniteur composite est floue pour une apparence plutôt moche . Par exemple, un dessin VileR ressemblerait à ceci:



Mais vous pouvez bénéficier de ce flou - pour générer un grand nombre de couleurs d'artefacts en mode semi-texte! Comme expliqué dans la section précédente, toute séquence répétée de pixels avec une période de 8 sous-pixels se transforme en une couleur d'artefact solide la moitié de la largeur des caractères en mode 80 colonnes. Cela signifie qu'en mode semi-texte - lorsque les couleurs principale et d'arrière-plan de chaque caractère peuvent être sélectionnées arbitrairement parmi 16 couleurs standard - pour créer des couleurs d'artefact, vous avez besoin de caractères qui ont

  1. les deux premières rangées de pixels sont identiques;
  2. les moitiés gauche et droite de ces deux lignes sont identiques.

CGA ROM a trouvé des caractères adaptés à deux séquences périodiques - 1100et 0110. La première séquence vous permet d'obtenir des couleurs d'artefact correspondant à deux pixels répétitifs en mode 320x200, c'est-à-dire toutes les couleurs des lignes 0Axxdu tableau complet; le second est les couleurs des carrés n ° 6 et n ° 9 dans les lignes 1A0x, lorsque la séquence 0110est affichée avec des symboles colorés sur fond noir ou des symboles noirs sur fond coloré, respectivement. Dans ce cas, la résolution réelle est de 80x100: la zone minimale pour laquelle vous pouvez définir la couleur correspond à la familiarité "rognée".

Alors, combien de couleurs d'artefact peuvent être affichées en mode semi-texte en même temps? Toutes les combinaisons de 16 couleurs primaires, 16 couleurs d'arrière-plan et deux caractères correspondants sont disponibles, donc l'auteur de cette astuce s'exclame: «512 couleurs! Bien sûr, il y en a moins, il y a des doublons et des nuances très légèrement différentes. » Lorsque les couleurs principale et d'arrière-plan coïncident, il est évident qu'avec n'importe quel symbole, le résultat sera le même.Par conséquent, à la sortie numérique, nous avons 496 séquences périodiques différentes de huit pixels. La conversion de cette sortie en composite conduit au fait que certaines séquences se transforment en le même signal vidéo; par exemple, 0110gris sur noir, gris sur violet et vert clair sur violet - transformez-vous en la même teinte lilas foncé:



Par rapport au tableau complet, ici les carrés sont doublés pour plus de clarté, ce qui nous a permis de signer la valeur de chaque bande à l'intérieur des carrés directement sur le diagramme. On peut voir que la séquence 0110coupe complètement le niveau élevé du fond magenta, de sorte que le fond ne se distingue pas du noir. La couleur verte diffère en phase du magenta de 180 °, donc cette séquence coupe un niveau élevé de caractères verts de la même manière, et les caractères vert clair deviennent indiscernables des gris. Sur le nuancierDans l'article sur 1024 couleurs, vous pouvez voir que les lignes n ° 0 et n ° 5, correspondant au fond noir et violet, sont presque indiscernables; les colonnes 8 et 10, correspondant aux symboles gris et vert clair, sont également presque indiscernables. Selon les calculs du cgaart, les nuances de lilas foncées correspondant aux trois combinaisons nommées de paramètres coïncident complètement; avec le modèle CGA corrigé, comme on peut le voir au bas des carrés sur le diagramme, ces trois teintes sont différentes.

En plus de ces trois combinaisons, le premier modèle CGA affiche également la séquence en 0110noir en magenta clair et gris; le gris magenta clair donne le gris standard et le noir magenta donne le noir standard. Enfin, comme indiqué sur le côté droit du diagramme, la séquence1100le gris sur le rouge clair donne la même nuance de gris - presque standard - que la séquence est 0110vert clair en violet clair. Au total, avec le premier modèle CGA, 490 couleurs différentes sont disponibles, mais avec celle corrigée - toutes les 496.

Le point culminant de l'article sur 1024 couleurs est la manière inventée de reenigne d'afficher en mode semi-texte une seule ligne supérieure de pixels pour chaque caractère, mais répétez cette ligne deux fois. Il est difficile d'appeler un «nouveau mode graphique», Car il nécessite une modification constante - au début de chaque ligne de numérisation - des paramètres CGA, qui occupe complètement le processeur 8088, et ne laisse aucune possibilité de faire autre chose en parallèle avec l'affichage d'une image 1024 couleurs, par exemple, pour préparer une animation. Mais grâce à cette astuce, il devient possible d'utiliser des séquences 0010et 0101en plus des deux ci-dessus. En utilisant quatre symboles différents, il est possible d'obtenir 976 séquences périodiques différentes de huit pixels à la sortie numérique. Et combien de couleurs différentes seront obtenues après la conversion en un signal vidéo composite? J'en ai compté 950 avec le premier CGA, et 973 avec un fixe.

En conclusion, je donne un tableau de toutes les couleurs qui peuvent être obtenues en mode semi-texte. VileR a une table similaire, mais regroupés par type de moniteur et non par séquence de pixels de sortie, comme le mien. Sa table est pratique pour un artiste travaillant avec un appareil spécifique; le mien est pour le théoricien qui veut comprendre comment telle ou telle couleur apparaît sur le moniteur.

Table complète

All Articles