Divers :
  Softs à utiliser
  Le son

Cat'arts :
  Introduction
  Ordre d'éxécution
  Bidouilles

Graphisme CPC :
  Introduction
  Le pixel
  Les limites
  Hinting
  Antialiasing (1)
  Antialiasing (2)
  Antialiasing (3)
  Luminosité
  Subpixel
  Gestalttheorie
  Les couleurs
  L'écran

  Mode 0
  Mode 1
  Mode 2

  Utiliser la couleur
  Trames

  Rasters
  Fondus
  Flippings
  Cross-dev

Tout savoir sur la création des CAT'arts


II - Ordre d'exécution des catalogues : Comment s'en servir

Si vous lisez les fichiers d'un catalogue de fichiers de la gauche vers la droite (tel qu'ils sont affichés à l'écran), vous remarquerez que cet ordre change en fonction du mode graphique dans lequel vous êtes ou de l'instruction utilisée : CAT ou ùDIR.


1 - Comment s'affiche un CAT
Il est utile de mieux détailler les différences dans l'affichage d'un catalogue pour vous aider à en tirer parti lorsque cela est nécessaire. L'idée étant avant tout que vous sachiez dès maintenant que les instructions utilisables ne sont pas focément exécutées dans l'ordre qu'on voudrait. Je vous propose de détailler un peu plus loin ce qu'on pourra faire de cette misère.

Nombre de colonnes :
Tout d'abord, il faut bien comprendre que le nombre de colonne dépend de la place dont dispose le système pour afficher son CAT à l'écran. Cela dépend notamment du mode, mais aussi et surtout, en fait, de la taille de fenêtre courante. Par exemple, si vous êtes en mode 0, il est clair que l'affichage se fera en une seule colonne. Mais si vous êtes en mode 1 et que faites une window de 20 de large, ça sera pareil ! Et si vous êtes en mode 2 et que vous faites ùDIR, votre CAT sera sur 5 colonnes ! A savoir que les demi-colonnes n'existent pas. Il n'est donc possible d'afficher que 1, 2, 3, 4 ou 5 colonnes avec ùDIR et 1,2,3 ou 4 colonnes avec CAT.

Tri des fichiers :
Comme dit plus haut, il faut savoir que le système opère un tri alphabétique avant d'afficher les noms de fichiers... quand on tape CAT ! Parce que si vous tapez ùDIR, ces fichiers seront affichés dans l'ordre de lecture sur la disquette. On peut donc être en mode 1, et avoir les fichiers dans un certain ordre si vous tapez CAT mais un ordre différent si vous tapez ùDIR !

Avec ùDIR, l'ordre sera de gauche à droite puis de haut en bas, au fur et à mesure que les fichiers seront lus sur la disquette. Avec CAT, l'ordre sera alphabétique par colonne. On peut en fait considérer une grande liste verticale, avec les noms affichés dans l'ordre aphabétique de haut en bas, puis arrivé en bas, cette liste continue sur la colonne suivante et ainsi de suite.

Nombre de fichiers :
La fin de cette liste n'est pas la même en CAT et en ùDIR. ùDIR affiche les fichiers de gauche à droite. Si par exemple il manque 2 fichiers pour former un carré parfait, la liste s'arrêtera en cours d'une ligne. La dernière ligne seulement pourra donc se trouver incomplète, et contenir moins de fichiers. En revanche, en mode CAT, c'est verticalement que les fichiers sont ordonnés. Selon le nombre de fichiers à afficher, il se pourra que la dernière colonne soit plus petite de 3 fichiers en mode 2 par exemple.

Il faut savoir qu'une entrée de catalogue ne correspond pas forcément à un fichier affiché. Par exemple, les fichiers cachés n'apparaissent pas. Il faut aussi savoir que si un fichier dépasse 16k, il consommera autant d'entrées au catalogue que sa taille utilisera de blocs de 16k. Par exemple un fichier de 33k utilisera 16+16+1 = 3 entrées de catalogue, ces 3 entrées n'apparaitront qu'en une fois sur le catalogue, naturellement.

En conclusion...
Il faut savoir que si cet assortiment des fichiers à un côté rébarbatif et libraire, il est la clé de voûte d'une importante série d'astuces. Par exemple, cela pourra avoir un impact chaque fois que vous souhaiterez être compatibles entre différents modes d'affichage (modes écrans et/ou commande CAT/ùDIR), ou inclure un certain nombre de fichiers dans votre catalogue, parallèlement à une tentative de décoration.

Exemple avec CAT (sur 4 colonnes)

FILENAMA FILENAME FILENAMI FILENAMM
FILENAMB FILENAMF FILENAMJ (vide)
FILENAMC FILENAMG FILENAMK (vide)
FILENAMD FILENAMH FILENAML (vide)


Exemple avec ùDIR (sur 4 colonnes)

FILENAMG FILENAMB FILENAMJ FILENAMD
FILENAMK FILENAMM FILENAMC FILENAML
FILENAMA FILENAMF FILENAMI FILENAME
FILENAMH (vide) (vide) (vide)



2 - Mode global ou séquentiel ?
Déjà, il est important de savoir si on tient à ce que le catalogue puisse fonctionner aussi bien dans chaque mode graphique ou si partir du mode 1 nous convient. Le choix est généralement purement arbitraire.

Mode global : pas d'échelle de temps
Les détracteur de ce premier cas de figure seront généralement des personnes utilisant le CPC en mode 2 au boot, ce sont souvent des programmeurs qui codent sur leur CPC. On verra aussi certaines personnes utilisant Parados, qui peuvent parfois associer l'intruction CAT à un raccourci clavier qui le précède de l'intruction MODE 2.

Dans ce premier cas, il faut savoir qu'il n'y a pas de secret. Si on veut être superpolyvalent, il faut que le catalogue puisse s'éxécuter sans faille même dans le désordre. L'intérêt, c'est qu'on économise des octets d'indexage dont on n'a plus besoin (voir mode séquentiel), puisqu'on ne tiendra pas compte du tri alphabétique effectué par le système. L'inconvénient, c'est qu'on risque de manquer vite de place, vu qu'on est obligé de mettre un LOCATE avant chaque texte affiché, pour chaque entrée de catalogue. Et surtout, il faut savoir que ce mode interdit tout effet visuel de type animation. On devra uniquement gérer un écran statique, sachant qu'il s'affichera dans un ordre différent en fonction de la résolution, mais que le but est qu'à la fin, ce soit toujours le même truc qu'on voit à l'écran. Dans cet ordre d'idée, la Ultimate Megademo de Face Hugger est probablement le plus bel exemple. Il n'y a pas de fioritures inutiles, le catalogue s'affiche de gauche à droite (c'en est même joli), c'est en mode 2, et ça marche dans tous les cas. Un petit oubli, toutefois messieurs, le "\" n'existe pas sur les claviers français, il est remplacé par le "ç"...

Mode séquentiel : avec échelle de temps
La majorité des utilisateurs préféreront ce cas de figure qui permet des CAT plus attrayants, et parfois animés. Ce sont les personnes qui considèrents qu'un CPC démarre normalement en mode 1, et qu'il est stupide de lancer un CAT dans un autre mode. On citera essentiellement les gamers et tous ceux qui n'utilisent pas leur CPC comme machine de travail.

Ce cas de figure pose la lourde contrainte d'ordonner les lignes d'intruction (les entrées du catalogues) en les précédant "d'octets d'indexage", en s'arrangeant pour que les caractères d'indexage n'apparaissent pas, etc. C'est un peu lourd, mais d'un autre côté, c'est sans doute là qu'on peut se permettre la plus grande finesse. Comme on sait ce qui était affiché "avant", on peut optimiser ce qui sera affiché "après", et ainsi gagner des octets, avoir un meilleur détail de ce qu'on fait, voire même pourquoi pas animer son catalogue ? Le point de départ de ce type d'affichage est de considérer que les utilisateurs utilisent généralement CAT et très rarement ùDIR, qu'il font un CAT dans l'état d'allumage de la machine à savoir en mode 1, sans WINDOW de définie, et bien souvent en partant d'un PAPER 0 et PEN 1. Certains diront cependant que de plus en plus de CPC équipés de RAMcard bootent en mode 2.


3 - CATalogues en mode global
Etudions plus en détail les possibilités offertes par les catalogues dans ce mode global. Comme vous savez, les entrées lues par ce CATalogue n'étant pas triées alphabétiquement, un CAT les éxécutera anarchiquement. On peut toutefois voir que ce CATalogue est à égalité avec le CAT séquentiel devant la commande ùDIR, puisque le tri par "ordre d'apparition" des instructions est le même dans les 2 cas.

Dans les explications qui suivent, on considérera que les fichiers portent comme nom les 16 premières lettres de l'alphabet. Elle seront donc affichées de la façon suivante si on tape CAT en mode 2 :

A E I M
B F J N
C G K O
D H L P

Ordre des instructions
Déjà, il faut admettre que seul importe le résultat affiché, peu importe l'ordre dans lequel il sera affiché. Ensuite il faut se réjouir, car on sait toujours quelle est la première ligne éxécutée, puisque la première place d'un ordre alphabétique est toujours le même quelque soit le nombre de colonnes... et si on s'arrange bien pour avoir un nompbre d'entrées multiple de 4, alors on sait aussi quelle sera la dernière entrée lue quelque soit le mode. Si on reprend notre exemple précédent, on a donc : A - (B à O dans le désordre) - P

L'entrée A permettra généralement de commencer à mettre des instructions prioritaires comme le mode par exemple (qui est toujours en premier de la liste alphabétique, puisque c'est &04), parfois le PAPER et PEN s'il est utilisé par la suite, éventuellement l'activation du mode transparent, et à la rigueur si on décide de réduire la fenêtre du CAT, un Window pour des fonctions économiques avancées (naturellement par manque de place, on ne mettra pas tout, mais seulement ce qui peut tenir). Certains farfadets malicieux essaieront de masquer l'affichage désordonné en mettant 2 commandes de couleurs sur la même ligne pour cacher l'affichage, et rétablir des couleurs visible en fin de CAT.

La sortie, P, devra servir à rétablir les fonctions vitales à une sortie propre du CAT. Par exemple remettre le PEN ou PAPER à des valeurs exploitables, rétablir une couleur visible si vous êtes un farfadet, retirer la transparence pour les 464, et surtout positionner le curseur (ou le ready) à une position de choix, (Face Hugger a oublié ce détail, ce qui oblige à taper ùCPM à la main, alors que la touche copy nous aurait permis d'être fénéant).

Instructions en désordre
Donc nous voilà au coeur de ce CAT qui apparaitra dans un désordre quasi aléatoire. Naturellement, on évitera les commandes MODE, CLS, WINDOW, qui ont un impact sur ce qui a été ou va être affiché, alors qu'on ne sait ce qui a déjà ou ce qui sera encore à afficher.

Les instruction BORDER et INK s'y prêtent tout à fait, pour le reste, cela concernera de l'affichage pur et dur. Dans ce cas, il faut penser que chaque entrée du CATalogue sera autonome en entrée et en sortie. En entrée, parce que s'il est question de positionner un texte, on ne pourra pas se baser sur une positions existante. En sortie parce que s'il est question d'écrire avec une encre différente du reste du texte, il est préférable de rétablir la valeur de PEN à la valeur standard du reste du texte. Les instructions auront finalement toujours le même format, mais je vous propose 2 options possibles.

Option homogène :
Ce type d'entrée du catalogue ne privilégiera aucune couleur d'affichage. C'est la méthode la plus standard, quoique jamais utilisée telle quelle. Elle permet d'afficher 3 caractères (représentés ici en vert vif) par entrée de catalogue. Sans doute la plus rentable en mode 0.

06 1F xx xx 0F xx 01 17 (point) 02 03 15

Option hétérogène :
Cette variante permet d'avoir d'avantage d'affichage sur une couleur, "normal" sur une autre, et très faible sur les autres. Il faut considérer une couleur de base qui sera la norme de votre CATalogue, et qui sera utilisée presque partout. On affichera de cette façon :

06 1F xx xx 01 02 03 17 (point) 04 05 15

On pourra dans cette couleur afficher 5 caractères par entrée. Une seconde couleur sera disponible par la technique citée plus loin du &18. Elle consiste à se mettre ne mode transparent et définir un PAPER qui ne sera jamais utilisé, et qui servira de stockage pour un PEN rapidement accessible. En revanche, il faudra rétablir la couleur standard après utilisation :

06 1F xx xx 18 01 02 17 (point) 03 18 15

On a accès à 3 caractères pour cette couleur. En revanche, toute autre couleur sera difficile d'accès, car il faudra déclarer manuellement la couleur, et restituer ensuite la couleur standard :

06 1F xx xx 0F xx 01 17 (point) 0F xx 15

On n'a plus droit qu'à 1 caractère par entrée. Cette technique utilisée dans la compil Halloween est particulièrement intéressante en mode 1.


4 - Les CATalogues Séquentiels

A quoi ça ressemble ?
De façon bien concrète, regardons comment il est classique d'utiliser une entrée de CAT prévue pour fonctionner en mode séquetiel :

AA 06 -- -- -- -- -- 17 (point) -- -- 15

Le premier octet AA sera en fait l'index de l'entrée. Cet index ne sera pas affiché s'il est précédé d'une ligne identique à celle-ci. L'index sera suivi de &06 pour autoriser l'affichage des octets suivants. Le &17 (négociable selon les cas de figures avec d'autres bidouilles) sert à éviter l'affichage du point par le système. Il reste encore 2 octets affichés, et enfin l'octet &15 qui interdit l'affichage par le système des informations de taille de fichier, et de ce précieux octet d'index qui commencera l'entrée suivante. La première entrée du CAT peut se présenter comme suit :

04 xx -- -- -- -- -- 17 (point) -- -- 15

Si on est certain que &04 est le plus petit chiffre du CAT, afin qu'il soit au début (il est souvent utile de commencer par choisir un mode).

00 -- -- -- -- -- -- 17 (point) -- -- 15

Si on ne souhaite pas changer le mode, le &00 n'affichera rien, et l'entrée aura un octet libéré.

Dans ce mode séquentiel, on peut compter une moyenne de 7 octets par entrée, à savoir 7x64=448 octets utilisables dans tout le CAT au maximum. C'est peu, mais espérons que ce soit une forme de stimulation !

Mettons qu'à cette structure de base très statique, peuvent se greffer de nombreuses astuces que je présenterai plus loin dans cet article. C'est probablement dans ce mode séquentiel que les astuces permettent le plus librement de contourner les fonctions de base des caractères de contrôle.


5 - Les CATalogues Universels (attention : mode avancé, donc compiqué)
Afin déviter qu'Arkos et OVL se fasse éternellement la guerre, les premiers considérant qu'un CPC démarre toujours en mode 1, et les autres (utilisant une ROM en mode 2) qui considèrent que seule l'universalité de fonctionnement peut être noble, j'aimerais vous montrer comment il est possible de faire un catalogue animé qui fonctionne dans tous les modes et ainsi concilier les intérêts de chacun et calmer les ardeurs.

Tout d'abord, regardons les points communs de ces différents accès au CATalogue :

ùDIR et CAT séquentiel :
Il existe un cas particulier où ces 2 instructions vont s'exécuter dans le même ordre. Il suffit pour cela que l'ordre d'affichage soit le même que l'ordre d'apparition des fichiers sur la disquette. Simple mais il fallait y penser. En revanche, il reste l'incompatibilité des modes à gérer... c'est surtout critique pour le CAT, compte tenu que le ùDIR lit les instructions dans le même ordre quel que soit le mode d'affichage. Juste à noter que les octets affichés en fin de ligne ne sont cependant pas toujours les mêmes.

CAT séquentiel en MODE 0+1+2
Dans la mesure où le classement est vertical selon une liste, et l'affichage est horizontal, la seule chose qui puisse concilier les modes est une parte verticale qui existerait dans tous les modes. En fait, la seule différence est l'endroit où est coupée cette liste. Si par exemple on met des instructions vides dans les parties de liste différentes, et des vraies instructions dans les parties communes, alors on pourra avoir un catalogue qui fonctionne dans tous les modes. Par exemple, si on suppose un catalogue contenant 16 entrées de A à P, la ligne A sera toujours lue avant la ligne B, qui sera toujours lue avant la ligne C qui sera toujours lue avant la ligne D... mais on en reste là. Après, on voit que la ligne P est toujours affichée en dernier, donc après D. Et en fouillant vraiment bien, bien, bien, y'aurait bien un truc qui est toujours entre D et P, ça serait H ou L, au choix, mais l'une par rapport à l'autre ne sont pas toujours lues dans le même ordre.

A E I M
B F J N
C G K O
D H L P

Histoire de se mettre d'accord et simplifier l'explication, on va choisir arbitrairement ABCDLP (en rouge) comme universel. Mais ce n'est pas la seule solution, par exemple, symétriquement, (en gras italique), on a la série AEMNOP, et beaucoup d'autres. Ce ne sont pas les combianaisons qui manquent et on s'aperçoit ici que sur un CAT complet de 64 entrées, on n'aurait plus droit qu'à 18 entrées. C'est peu, mais en économisant bien, on peut toujours faire des petites choses... et puis avec des CATalogues mixtes (voir plus loin), on devrait gagner encore un peu de terrain :) Mais on peut très bien se contenter des possibilités les plus probables, comme par exemple le mode 2 + mode 1... dans ce cas, je vous épargne le schémas, on a 33 entrées ordonnées possibles.

Ne pas oublier que dans ce cas, les entrées restantes sont perdues et ne doivent pas comporter d'affichage, rien ! Elle doivent être déclarées avec une lettre bidon qui servira simplement à ordonner et classer es autres instruction, celle qui nous serviront.

ùDIR et CAT séquentiel mode n :
Admettons que cet intitulé est barbare... vous voulez que votre CAT se déroule systématiquement dans le même ordre quel que soit votre mode d'affichage et la commande utilisée ? Il est donc tout à fait compatible d'utiliser par exemple ABCDLP en s'arrangeant pour que ces entrées apparaissent dans cet ordre sur la disquette... naturellement on n'oubliera pas de mettre sur la disquette les entrées mortes. Mais selon votre technique d'affichage, si vous utlisez sur toutes vos instructions CAT des "barrières" avec &06 et &15, alors vous pouvez très bien utiliser des vrais noms de fichiers à la place de vos entrées mortes. Attention cependant à avoir bien le nombre de fichiers, car c'est lui qui comptera et non pas le nombre d'entrées utilisées par eux, par exemple dans le cas de gros fichiers. C'est la technique utilisée dans le CAT de ClimaxG. Cette démo en basic nécessitait de camoufler les fichiers sans qu'on puisse se permettre de perdre des entrée, pour qu'il puisse fonctionner en mode 1 et en mode 2.


6 - CATalogues mode mixte : mode super avancé pour une voie royale !
Il est possible de combiner tout ça pour en faire la soupe du siècle ! Reprenons l'exemple du CATalogue séquentiel universel précédent. On s'apeçoit que les entrées E et I sont toujours exécutées entre A et M, mais qu'en revanche, on ne sait pas laquelle des 2 sera éxécutée en premier. Ce n'est pas toujours un problème. S'il est question de définir des couleurs, on pourra le faire sans se soucier de l'ordre d'affichage des instructions. Toujours sur le même exemple, on sait que B sera toujours exécuté avant O. On ne sait pas combien de temps avant, mais on sait que ce sera dans cet ordre, et séparé par un nombre variable d'instructions. Rien n'empêche dans ce cas, de définir par exemple un arrière plan en B et un premier plan en O. Ce genre de CAT propose d'innombrables combinaisons de ce type, et il est prudent de vérifier leur compatibilité entre elles avant de se lancer dans des projets plus complexes. Par exemple, D vient toujours après B, mais pas toujours après O...

Mélanger ces 2 modes peut se faire de façon très simple. Par exemple, on peut considérer les entrées ABEFIJMN comme étant en mode global, sachant que OP suivront toujours dans cet ordre si CDGHKL ne sont pas utilisés. Dans ce cas, on aura la séquence suivante :
A - (BEFIJM dans un ordre aléatoire) - N - O - P

Et si on a des besoin précis, on peut revenir intégrer de cette petite cuisine précédente dans la partie globale en considérant par exemple que B est toujours avant J.

Si on considère que les entrée mortes peuvent contenir des fichiers, on arrive finalement à ne pas trop perdre de place. Cette technique a encore été utilisée dans ClimaxG.