Voici les bases sur ce qu'il convient de faire avec le système pour qu'il ne nous embête plus. Le système, comme nous l'avons vu n'a d'autre ambition que de nous tenir au courant du contenu d'une disquette, ce qui à nos yeux peut vite devenir contrariant si on cherche à se distinguer par une belle parure. La forme prime sur la fonction, que diable ! Ce n'est pas une scène de démo qui me contredira.
1 - Virer le point
À la fin des 8 premiers caractères de chaque ligne, la torture c'est bien souvent d'éviter ce point. Surtout qu'après, on n'a que 3 caractères pour faire quelque chose, alors, c'est un peu problématique.
Les premiers - qui étaient aussi les plus idiots - encadraient le point d'un &15 / &06 pour désactiver puis réactiver l'affichage du point (n'écoute pas ça Prodatron, je dis du mal de toi). Du coup, on perdait 2 octets, ça et les 2 octets qu'on met au bord pour éviter les affichages système, et l'octet indexe, il restait pas bézef de place pour faire un chouette truc... regardez le tableau :
(index) 06 01 02 03 04 05 15 (point) 06 06 15
Reste 6 octet par entrée, à savoir 63x6=378 octets. Si ça continue comme ça, je pourrai faire les calculs de tête sans demander à Madram.
Première chose, on peut effacer le point. Il suffit après le point de mettre &08, et de recouvrir le point par un autre caractère. Par contre, ça prend un octet après, et puis ça marche pas toujours en mode transparent. Sinon, on peut aussi éviter de l'afficher. La bidouille est simple : il suffit d'utiliser ce point comme un paramètre quelconque qui ne nous servira surtout à rien. Comme par exemple... le mode de superposition graphique : ça utilise un seul paramètre, et on s'en tamponne le coquillard. Alors si on met un &17 AVANT le point, on perd certes toujours un octet, mais ce coup-ci le point N'est PAS affiché, et ça marche même en mode transparent. C'est toujours bien si on gâche un octet à cause du système d'avoir le choix entre "avant" et "après"...
(index) 06 01 02 03 04 05 06 (point) 08 07 15
(index) 06 01 02 03 04 05 17 (point) 06 07 15
Sinon, quitte à avoir un point dans les pattes, pourquoi ne pas l'afficher ? Parfois, ça peut servir. On a un point gratuit, offert par le système : non seulement il ne faut plus gaspiller un octet pour le virer, mais en plus il est affiché gratuitement, sans rien demander. C'est comme si d'un coup, on gagnait 2 octets. Trop fooort ! Bon, personne ne reste scotché au plafond, là, je le vois bien. Mais je vous assure qu'on a facilement besoin d'afficher un point, qui reste somme toute l'un des plus graphiques de tous les caractères... exemple : les étoiles de la Halloween Demo Contest...
Autre possibilité, sûrement la plus ingénieuse de toutes : utiliser ce point pour de vrai. Comme un vrai de vrai paramètre d'un truc dont on a besoin. C'est pas super subtil, ça ? Bon, par exemple, avec la commande BORDER, ça correspond à 46 MOD 32 = 14. On a droit à un joli bleu clair... C'est sans doute chiant à caser, mais c'est pas rien. On peut le faire aussi avec INK, attention toutefois, car s'il est utilisé comme premier paramètre, vous changerez la couleur 14 (inutile en mode 1 et 2). Et si on le fait avec PEN ou PAPER, ça nous donne 2 en mode 1, 0 en mode 2, et 14 en mode 0. Donc demain, tout le monde fera des catalogues bleu clair écrits avec l'encre 2. Mon génie n'a pas de limite. Pour locate, en mode 0 ou 1, ça donne une position extrême (droite ou bas), pour WINDOW, c'est bien : ça cale la fenêtre à droite ou en bas. &16 positionne en mode opaque et MODE donne 2, pas très utile...
2 - Les merdouilles de fin de ligne
Mais alors si ce point peut servir de paramètre... qu'en est-il de ce qui est au bout de la ligne. Et bien c'est tout simplement de l'or en barres. Pour ma part, j'utilise donc ces caractères de fin de ligne soit pour PEN ou PAPER qui devient 0, BORDER 0, INK 0,0 ou encore LOCATE 32,32 ou des valeurs bizarres pour WINDOW. Par contre, attention, vous ne pouvez pas mettre le &15 avant ces instructions sans quoi elles ne seront pas lues. Et si vous ne les mettez pas, vous risquez de voir le système afficher des trucs qui ne vous intéressent pas. Dans ce cas, il y a une autre bidouille : mettez le PEN de la même valeur que PAPER, de cette façon, personne ne saura ce que le système veut raconter. Et pour plus de sûreté, vous isolez tout ça dans une petite fenêtre bien loin pour être certain que même cet affichage n'écrasera rien d'utile à l'écran.
Le &18
Une bidouille que j'aime bien, et qui peut se révéler très complexe à utiliser si on veut commencer à économiser l'octet ultime qu'aucune autre technique ne permet de gagner est de se mettre en mode transparent (&16, &01), puis s'arranger pour avoir le papier d'une couleur et le crayon d'une autre. Ça permet de stocker en magasin une couleur (celle du papier) qui n'est pas affichée, et qui sera accessible à l'écriture en seulement 1 octet : &18. Car en échangeant PEN et PAPER, comme PAPER n'est pas affiché, vous pourrez dégainer très rapidement l'une ou l'autre couleur. C'est ce que nous avons exploité pour optimiser le mode global (en "mode hétérogène").
Utilisation transversale de tout ça ? Mettez dans PAPER la vraie couleur qui est dans le fond. Si vous remplacez &15 en fin de ligne par &18, non seulement ça ne vous coûte pas plus cher (mais attention, vu que ça écrit toujours, ça déplace le curseur), mais surtout vous pouvez insérer des lignes de commandes non texte sans avoir à "réactiver" l'affichage, comme par exemple, changer la couleur d'une encre, ou du BORDER, voire même en profiter pour changer la couleur du PEN (attention, puisqu'il sont inversés, c'est en fait celle du PAPER qu'il faudra changer), une WINDOW, un MODE, etc. pourvu que ce ne soit pas de l'affichage texte. Pour mettre le feu à votre catalogue, pensez toujours à faire le &18.
Petite optimisation en mode global avec &19
Mais alors sinon, y'a la révolution avec la commande la plus inutile que le CAT ait donné : &19 (SYMBOL). Cette commande ne peut donc pas fonctionner correctement sur un CAT pour plusieurs raison, donc. Déjà il faudrait avoir l'autorisation de changer ces caractères (avec un Symbol after), et aussi cette commande exige 9 paramètre : numéro du caractère à redéfinir, et 8 valeurs pour définir chaque ligne de ce caractère. Bref, si vous mettez cette commande juste après le tri alphabétique, vous arrivez très précisément en fin de l'entrée de catalogue... juste bon pour que le système affiche " 0K". Mais si en revanche, vous utilisez cette commande comme dernière commande exécutée, il va "absorber" tous les caractères que le système balance pour ensuite vous rendre la main... c'est là le problème, car ça dépend. Si cette entrée se retrouve en fin de ligne, vous consommerez le 2 premiers octets de l'entrée suivante. Mais dans les autres cas, vous arriverez pile poil après l'octet de tri alphabétique, à savoir que cette commande gobera le premier octet de l'entrée de CAT. On optimise les gars ! Attention, cette bidouille ne fonctionne pas en mode ùDIR, dans la mesure où il y a moins d'octets affichées entre les fichiers.
Exemple pour un CAT mode 1 :
Environ la moitié des entrées aura la chance de bénéficier de 8 octets exploitables :
(index) 01 02 03 04 05 06 17 (point) 07 08 19
L'autre moitié n'aura que 7 octets exploitable (comme pour l'utilisation du couple &06 / &15)
mais pourra au choix selon la position du &19 distribuer ces octets par groupes de 5+2 ou 6+1 (voire 7+0 en jouant sur le point)
(index) (perdu) 01 02 03 04 05 17 (point) 06 07 19
(index) 01 02 03 04 05 06 17 (point) 07 19 (perdu)
(index) 01 02 03 04 05 06 07 (point) 08 19 (perdu)
...voire parfois 6 pour forcer une disponibilité de 8 octets dans les entrées précédente et suivantes :
(index) (perdu) 01 02 03 04 05 17 (point) 06 19 (perdu)
Etc.
Petite optimisation en mode global avec &1E
Il est un caractère fort utile et qui peut faire gagner 1 octet par entrée dans le mode global pour qui se suffirait à ne pas utliser la première ligne de l'écran. Il s'agit du caractère &1E. Ce caractère sert à envoyer le curseur en première place de la fenêtre en cours, donc en haut à gauche. Si au lieu d'interdire au système d'écrire (&15), on lui demande d'aller écrire ailleurs (&1E), ça permet de ne pas avoir besoin de lui intimer l'ordre d'écrire à nouveau (&06). Et puis cela permet de ne pas subir les inconvénients de &15 (compatibilité 464, impossibilité d'utliser &06 comme paramètre).
L'inconvénient est donc que le système écrira des choses laides en haut de l'écran qu'il faudra effacer ensuite. Soit on supporte de les voir s'afficher temporairement, soit on met des encres invisibles le temps de générer l'écran. Mais la petite combine du &18 risque en revanche de ne pas être rentable si elle est utilisée pour que l'affichage se fasse discret à cet endroit.
Voilà à quoi ressembleraient nos 2 options du "mode global" avec ce fameux &1E :
Option homogène :
1F xx xx 0F xx 01 02 17 (point) 03 04 1E
Option hétérogène :
1F xx xx 01 02 03 04 17 (point) 05 06 1E
1F xx xx 18 01 02 03 17 (point) 04 18 1E
1F xx xx 0F xx 01 02 17 (point) 0F xx 1E
Dans cet exemple, le gain est réellement appréciable, puisque dans le pire des cas, il fait gagner 20% de caractères. Il serait dommage de s'en priver.
Conclusion
Bon, j'espère vous avoir un peu donné envie de faire des catalogues. Je pense personnellement que ce que j'appelle des CAT'arts sont vraiment un moyen d'inventer et de bidouiller. Car il faut voir que très peu de choses ont été faites, malgré des possibilités qui semblent réduites. Et aussi, les contraintes sont assez exotiques. Ces CAT semblent tellement limités qu'en fin de compte, le moindre progrès devient tout de suite flagrant... Il y a de quoi s'émerveiller devant tant d'astuces.
Je regrette que la scene CPC soit aussi réduite aujourd'hui, ce qui n'aidera pas à sortir des productions d'un disk complet régulièrement (on ne va pas mettre un CAT décoré juste pour un simple fichier), mais je pense qu'il serait au moins utile que les CPCistes se demandent ce que c'est, comment ça marche, et si ça n'aiderait pas à boucler la disquette qui va sortir... parce qu'en fait, c'est un élément de finition intéressant : avant, il y avait les intros, et aujourd'hui, pourquoi ne pas faire de ces CAT des "préintros" ?
Je suis souvent surpris que certains puristes du CPC prônent à ce point la diffusion de démos sous forme de fichiers, jusqu'à parfois supprimer le CAT d'un jeu pour enlever sa protection et le rendre plus accessible... alors qu'en 2005, il n'y a plus de protections à secouer. En revanche, ces CAT'art sont une spécificité purement CPC qu'il faudrait conserver, archiver au même titre que les anciens jeux ou les démos préhistoriques, et développer au même titre qu'on a découvert les CRTC...
Si certaines âmes pensent que les CAT'arts sont compliqués à faire, sachez que j'ai écrit tout cet article après avoir seulement réalisé 4 de ces CATalogues (pas encore tous sortis)... je ne connais pas l'assembleur et il n'est pas utile de savoir coder pour en faire un. Il suffit d'être curieux, d'aimer chercher les poux, optimiser à l'octet près, ce qui est facile quand on a peu d'octets, et chercher à faire autre chose avec son CPC. Mes réalisations m'ont pris de 2h à 1 semaine. Ça me semble idéal pour quelqu'un qui ne veut pas passer 2 ans sur une démo trop longue (on a déjà vu 10 ans...).
Cela permet de penser autrement la démo : le graphisme est beaucoup plus dominé par le choix des couleurs (n'est-ce pas, Prodatron ?), l'animation doit prendre très peu de ressources, le temps est compté, et on est dans le monde de la gruge à 100%... La chose la plus compliquée est encore d'avoir des idées.
J'espère que la scène CPC saura montrer qu'elle a encore des idées. Bons catalogues...
|