Modes vidéo chelous de l'Apple II

Suite à mon article sur les cartes Chat Mauve sur Apple II, Grouik/FT et moi avons fait des tests sur nos Apple II respectifs afin de coincer les émulateurs qui ne gèreraient pas correctement certains modes.

Du coup, j’ai fait de nouveau des recherches notamment en relisant l’excellent Understanding the Apple IIe de Jim Sather.

Ce bouquin contient absolument tout, et notamment sur la génération du signal vidéo il y a des dizaines de détails lâchés au gré des pages qui, une fois compris, permettent de comprendre les timings des différents signaux. C’est par exemple en partie grâce à ce qu’on a trouvé dans ce livre que Grouik a pu réaliser les démos Mad Effect, Mad Effect #2 ou Mad Effect #3.

Voici les quelques petites choses amusantes qu’on a pu retrouver dans ce livre. La plupart ne sont pas nouvelles, mais finalement très peu connues.

Mixer texte en 80 colonnes et GR/HGR

Normalement, le texte en 80 colonnes n’est sensé fonctionner que lorsque la double résolution est active, ce qui active les modes DGR ou DHGR.

Enfin c’est ce que je croyais, mais en réalité il n’en est rien, la double résolution texte est séparée de la double résolution graphique. Cependant si on active uniquement la double résolution texte, l’accès à la mémoire AUX n’est pas actif et donc seule une colonne sur deux est utilisée.

LDA $C050   !TEXT
LDA $C053   MIXED
LDA $C056   !HR
LDA $C05F   AN3 (single-res graphics timing)
STA $C00D   80COL (double-res text)
https://cdn.discordapp.com/attachments/676734763427561480/679789750441607188/unknown.png
C’est pas utile mais c’est possible.

À noter qu’il est (apparemment ?) possible de mixer du GR et du texte 80 colonnes, en tout cas la disquette de démonstration Video-7 semble activer un mode semblable.

Le mode GR chelou

En basse définition GR, lorsqu’on désactive le softswitch AN3, un délai est introduit dans le décodage vidéo ce qui génère des blocs de pixels de taille différente en fonction de leur valeur. Le nombre de couleurs est également réduit.

 LDA $C05E   !AN3 
https://cdn.discordapp.com/attachments/676734763427561480/679798631926071322/unknown.png
GR Normal
https://cdn.discordapp.com/attachments/676734763427561480/679798719343886352/unknown.png
GR Chelou

Les features cachées du HGR

Le même softswitch AN3 permet de changer l’interprétation du HGR.

Par défaut AN3 est activé et les couleurs sont interprétées normalement.

En désactivant AN3 lorsqu’on est en HGR, le rendu va être différent en fonction de la configuration de l’Apple II.

En composite : l’interprétation du bit 7 passe à 1. Comme c’est le bit qui définit le groupe de couleurs des 7 bits restants, cela inverse tous les groupes de couleurs sur l’écran.

En RGB : le mode HGR passe en 280×192 monochrome.

LDA $C05E   !AN3

Cette astuce a été utilisée dans Digidream, ce qui permet d’avoir 4 couleurs différentes de logo sur Apple IIe juste avec deux versions de la même image (en HGR1 et HGR2 + activation régulière du switch AN3).

Le CPU étant utilisé à ~100% pour la musique, les changements de couleurs sont activés uniquement par des switchs.

Les modes DHGR des cartes RGB Apple Video-7 & Chat Mauve EVE/Féline/IIc

On ne trouve pour ainsi dire quasiment aucune documentation sur la façon d’activer correctement les modes DHGR des cartes RGB Video-7, EVE, Féline et IIc.

Là aussi j’ai longtemps cru que seul un ou deux modes étaient disponibles, mais en réalité il existe trois modes : noir et blanc, couleur et mixte.

Ces modes existent aussi sur les cartes RGB Apple vendues aux USA (donc la carte Video-7 dont il existe une disquette de démonstration, très pratique pour tester plein de modes alternatifs). Les rares bribes de documentation que l’on trouve ne sont pas très explicites sur la façon de les activer.

Si j’ai bien compris, autant pour la carte EVE il est possible de la programmer directement via des registres intégrés à la carte, autant pour les autres cela n’était pas possible car elles n’ont pas de registre propre.

Il existe cependant une routine dans l’API Arlequin (du Chat Mauve) qui permet de programmer correctement tous les modes DHGR – y compris sur la EVE, pour les modes supportés. (trouvé sur le site de Deckard) :

http://boutillon.free.fr/Underground/Anim_Et_Graph/Extasie_Chat_Mauve_Reloaded/Scans/Manuel_Arlequin_p225.jpg
http://boutillon.free.fr/Underground/Anim_Et_Graph/Extasie_Chat_Mauve_Reloaded/Scans/Manuel_Arlequin_p226.jpg

En déroulant le code pour les cartes Féline et IIc, on se rend compte qu’ils utilisent le soft-switch AN3 et 80COL pour programmer le mode de la carte. Ces cartes ont un registre sur 2 bits qui se met à jour en fonction de la valeur de 80COL qu’on envoie grâce au softswitch AN3.

Comme je pense qu’il s’agit d’un registre qui se remplit en FIFO, ça veut dire qu’il faut systématiquement programmer correctement les 2 bits dans le bon ordre. Il est peut être possible de simplifier la programmation mais dans mes tests ça ne marchait plus systématiquement ensuite.

La routine ci-dessus est générale (et très bonne), mais voici une version compactée pour les 3 modes DHGR, utilisée dans le slideshow du logiciel EXTASIE. Tout fonctionne également sous AppleWin en mode monochrome et semble compatible Apple RGB.

DHGR BW560 (560×192 monochrome)

LDA $C050   !TEXT
LDA $C057   HR
LDA $C052   !MIXED
STA $C00C   Choix d'une valeur pour 80COL
STA $C05E 
STA $C05F   Enregistrement de /80COL
STA $C00C   Choix d'une valeur pour 80COL 
STA $C05E 
STA $C05F   Enregistrement de /80COL
STA $C05E   Activation DHGR
STA $C00D   Activation 80COL
DHGR 560BW (Apple IIc)

DHGR COL140 (140×192 couleur)

LDA $C050   !TEXT
LDA $C057   HR
LDA $C052   !MIXED
STA $C00D   Choix d'une valeur pour 80COL
STA $C05E 
STA $C05F   Enregistrement de /80COL
STA $C00D   Choix d'une valeur pour 80COL 
STA $C05E 
STA $C05F   Enregistrement de /80COL
STA $C05E   Activation DHGR
STA $C00D   Activation 80COL  (inutile en réalité)
DHGR COL140 (Apple IIc)

DHGR COL140 mixed (140×192 couleur et 560×192 monochrome)

LDA $C050   !TEXT
LDA $C057   HR
LDA $C052   !MIXED
STA $C00C   Choix d'une valeur pour 80COL
STA $C05E 
STA $C05F   Enregistrement de /80COL
STA $C00D   Choix d'une valeur pour 80COL 
STA $C05E 
STA $C05F   Enregistrement de /80COL
STA $C05E   Activation DHGR
STA $C00D   Activation 80COL  (inutile en réalité) 
DHGR COL140 mixte (Apple IIc)

Les modes de la carte EVE

Quasiment tous les modes de la carte EVE (décrits ici) ne sont pas documentés.

Le Chat Mauve proposait en effet une API qui permettait de les configurer indirectement. Malheureusement je n’ai ni Apple IIe ni EVE pour faire des tests, donc peut-être un jour ?

La EVE dispose d’un charset reconfigurable en plus d’un mode HGR 280×192 « colorisé ».

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.