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


III - Toutes les bidouilles

Afin de pouvoir devenir le Roco des CAT, je vous propose quelques bidouilles, certaines indispensable, et d'autre plus farfelues, pouvant vous donner des idées. Mais tout d'abord les bases sur ce qu'il convient de faire avec le système pour qu'il ne nous embête plus.

1 - Le système m'invente des trucs :
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.

Ce point qui me gêne...
A 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...

Change 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.

Une autre 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. Mettez-vous en mode transparent (&16, &01), puis arrangez-vous pour avoir le papier d'une couleur et le crayon d'une autre. Ca vous permet de stocker en magasin une couleur (celle du papier) qui n'est pas affichée, et qui vous 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. Utilisation transversale ? 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.

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.


2 - Cheatmodes...
Les techniques sont malheureusement presque toutes identifiables tant le nombre de commandes est réduit. Toutefois, avec un peu d'astuce on peut se diversifier.

Je n'aborderai pas ici les techniques qui viseraient à insulter le Système à coup de POKE, tant je trouve barbare cette solution. De toutes façons, mes connaissances en la matière étant limitées, je n'ai rien à en dire. Pour ma part, je trouverais un peu hors sujet de changer le système pour que le CAT devienne différent, dans la mesure où ce n'est pas le registre d'exécution du CAT. Par exemple, on pourrait imaginer un CAT ne prenant plus 2k, mais 5k, si on considérait une ROM différente (PARADOS ou autres pour lecteurs 5'1/4). Le matériel est différent, le jeu aussi.

Tout d'abord, il y a la cachette ùUSER. C'est ce qui apparait lorsque vous tapez ùUSER,n où n est un chiffre compris entre 0 et 255. Par défaut, on est sur le USER 0. Mais il est possible de mettre des fichiers sur le USER 57 par exemple. Le truc, c'est que les fichiers d'un USER sont invisibles depuis les autres USER, on ne peut consulter qu'un USER à la fois. Bon, moi, j'avoue trouver cette bidouille pas terrible non plus, parce qu'après tout, c'est un catalogue différent, ça se passe ailleurs...

Autre technique du même acabit : cacher un CAT sur une autre piste de la disquette. Voir la rubriques "Les pires bidouilles"pour plus d'infos.

INK
Et enfin, il y a les vraies bidouilles, propres aux instructions des catalogues. Pour faire simple, on peut déjà écrire quelque chose avec une encre de la même couleur que le fond. C'est ce que font les catalogues de la protection Hexagon ou Alcatraz. Lorsque vous faites CAT, une grande zone bleue en haut apparait vide. Si vous tapez INK 1,0, alors vous voyez apparaitre leur sigle.

PEN & PAPER
Et puis il y a les bidouilles avec PEN et PAPER. Par exemple, tout le monde se met par défaut sur PAPER 0 et PEN 1, comme au démarrage du système. Imaginez que vous écriviez sur PAPER 1 sans changer PEN ou avec PEN 0 sans changer PAPER, alors il sera impossible de voir quoi que ce soit, sauf si avant de faire CAT, vous changez le PAPER ou le PEN.

SYMBOL
Imaginez un petit charabia à l'écran... utilisant des caractères pas très utiles, ou un petit texte. Imaginez que le CAT soit rempli de &19 inefficaces. Il vous suffirait alors de taper SYMBOL AFTER pour que tout ce petit monde se transforme en un texte ou un joli dessin...

06 19 (chr$) 01 02 03 04 05 (point) 07 08 15
en vert vif, les 9 paramètres de la commande &19 :
choix du caractère, puis les 8 octets définissant chaque ligne du chr$

Attention toutefois, à ne pas oublier que la commande SYMBOL AFTER n'est pas un Sésame sans limite : &19 réclamme 9 paramètres (qui seront au mieux interrompus par le point du système), et les 8ème bit est toujours filtré, mettant à 0 tous les pixels de la colonne de gauche du caractère redéfini. Bidouille utilisée dans l'AE05 (et bien cachée).

En gris, les pixels qu'il est encore possible de définir. En noir et blanc, les valeurs attribuées d'office par les contraintes.
               
 
 
 
 
 
 
 

&05
La plus inutile de toutes les commandes pourrait servir à quelque chose ? Allons donc. Vous ne choisirez certainement pas la couleur, mais il vous sera possible d'afficher un texte juste en dehors de l'écran à une ligne près (que je vous laisse le soin d'effacer pour plus de discrétion). Pour faire apparaitre ce message, il suffit de positionner le curseur graphique à l'aide de MOVE, par exemple MOVE 100,100 avant de taper CAT. En revanche, faites bien attention à ne pas utiliser la commande MODE (&04) dans votre CAT, car elle initialise la position de ce curseur. Contentez-vous de choisir le mode en début de CAT, et d'effacer par la suite avec CLS (&0C) si besoin. Bidouille aussi utilisée dans l'AE05.

La philanthropie de l'ouvrier charpentier...
Il reste encore l'art le plus sublime et le plus extreme du CAT'art, la contrepétrie ! Et oui, car si on considère après quelques kilomètres d'explications que les catalogues, c'est compliqué parce que les instructions sont sujettes au mauvais temps et aux humeurs d'un système pas toujours parfaitement identique, alors il suffit d'ordonner les instructions pour qu'elles donnent un résultat différent selon l'ordre dans lequel elles sont lues...

Par exemple (en vert vif, le texte, car c'est plus clair que de l'hexadécimal) :

06 IL_FAI 17 T_ 15
13 06
BEAU 15
11 06
_ET_ 15
12 06
CHAUD 15

Si vous êtes en mode 1, vous tapez ùDIR, il vous dira "IL FAIT BEAU ET CHAUD", mais si vous faites CAT, il vous dira "IL FAIT CHAUD ET BEAU". Simple comme bonjour !

Après il suffit simplement de faire pareil avec des instructions... par exemple si 2 textes écrits au même endroit sont écrit l'un après l'autre dans le temps, alors on peut s'arranger pour que le second efface le premier... ou l'inverse, selon l'ordre de lecture des instructions... c'est encore une fois l'astuce principale qui a permis de cacher un cheatCAT dans l'AE05...


3 - Les pires bidouilles :

Attendez !
Bon, qu'est ce que j'ai d'autre comme petit truc ? Les tempo ! Ce que j'appelle une tempo, c'est par exemple quand vous avez envie de perdre du temps exprès. Si vous n'avez que ça à foutre par exemple, c'est sympa de perdre du temps. Pour ralentir un affichage, avoir le temps de voir un truc que vous effacez derrière. Il y a plusieurs solutions. CLS est très bien, et il peut être isolé dans une fenêtre. Par contre, si vous devez afficher un truc derrière, il est plus prudent de ne pas avoir à redéfinir une fenêtre à chaque fois, donc un petite LOCATE (&1F) suivi d'un &14 fera très bien l'affaire. Et si vous avez beaucoup de temps à perdre, le mieux est sans doute le définir une grande WINDOW, de vous mettre en haut, et de faire monter le curseur, c'est ce qui prend le plus de temps par rapport aux octets dépensés.

Si vous souhaitez avoir une tempo à peu près équivalente à 1VBL, il faudra faire une fenêtre d'environ 100 caractères mode 1 de surface. Mais on reste dans l'aproximatif...

Plus viiite !
Si au contraire, vous souhaitez accélérer les choses, il faut savoir que c'est l'affichage qui prend du temps, et non pas la lecture des données. Par exemple, ce point du système prendra plus de temps à être affiché que si vous le précédez d'un &17 pour qu'il soit utilisé comme commande. Il va de même pour les infos du système qui suivent le nom du fichier. Une commande &15/&06 ou &19 vous feront gagner du temps à l'affichage.

464 VS 6128
Il faut croire que le ciel n'est pas clément, puisque les inventeur de CPC nous ont caché des petites différences de compatibilité entre mes 464 et les 6128... en fait, assez peu de CATalogues fonctionnent également sur 464. La principale raison est que l'instruction &15 qui sert à interdire tout affichage ne parvient pas à interdire le retour chariot du curseur en fin de ligne sur le 464. Il est donc particulièrement délicat de faire un CAT en mode séquentiel dans ces conditions, puisqu'on ne sait plus à quelle instruction se vouer. Voir notamment la détection de CPC 464 / 6128 du CAT de la ClimaxG

Autre différence, mineure cette fois : si vous activez le mode transparent en cours de CAT, le système ne remettra pas le mode opaque comme le fait le 6128, au moment du retour au basic.

Ouvrir la fenêtre en partant
Vous n'avez malheureusement pas la place de positionner le Ready au bon endroit et mettre une instruction &15 pour éviter l'affichage de "26K free", ou encore, vous ne voulez pas que le système affiche "Ready" ? Qu'à cela ne tienne, il vous suffit de faire une fenêtre de 1 de haut. Les informations systèmes seront affichées et instantanément balayées par l'affichage de Ready, qui sera à son tour poussé hors de la fenêtre par l'apparition du curseur. C'est d'ailleurs un rare moyen de ne pas afficher ce damné curseur après un CAT. Utilisé dans Citadel et dans ClimaxG.

Scrolltext du pauvre
Beaucoup de demomakers font ça pour raconter les problèmes qu'ils ont eu lors de la création du CAT, pour annoncer des messages cachés (cheatmodes parfois) ou simplement pour raconter leur vie... il est possible d'afficher du texte en clair dans le catalogue. Les entrées de catalogue utilisées pour ces micro intros ne sont en réalité que des fichiers fictifs. Les informations destinées au système sur la taille et la position des fichiers sur le disque sont donc inutiles. On peut donc utiliser tous ces octets pour écrire ce que l'on veut. Les catalogues étant assez réduits en mémoire, on est obligé au silence pendant qu'il se déroule. C'est pourquoi on trouve assez souvent des commentaires des auteurs, ce qui permet de les rendre plus sympatiques.

Personnellement, avant de ne mettre ce genre de commentaires, j'utilise cet espace pour mettre des remarques ou des repères de travail. Parce qu'un CAT en mode mixte universel avec des fonctions croisées et des cheatmodes de partout... c'est vite le bordel à débugger...

Se cacher de l'ùDIR
Il est possible de ne pas être embêté par la fonction ùDIR. Si par exemple, vous avez bien bidouillé votre CAT et que vous découvrez que la commande ùDIR révèle une entropie trop forte à votre goût, alors il est possible simplement de rendre le CATalogue invisible à ùDIR. Pour ce faire, il faut remplacer les 4 octets suivant les 12 premiers octets de chaque entrée du CATalogue par la valeur &E5 qui correspond à un emplacement formaté (en fait, sous disco, ça correspond à terminer la ligne des 11 octets d'instruction). Le CAT semble lire et interpréter cette fonction, tandis que le ùDIR l'ignore simplement. Si alors vous faite ùDIR, le seul affichage sera composé des fichiers visibles s'il y en a, suivi de la place disponible sur la disquette.

CATalogue bien renseigné
Une idée intéressante de la part de ces chers NWC a été de mettre à jour le Catalogue en fonction de certaines informations. Par exemple, le CAT informe que ma copie est la 7ème génération de disquette à partir de l'original et que j'ai lancé la démo 159 fois. Le problème, c'est qu'il faut garder la disquette déprotégée pour cette actualisation, et que les auteurs susceptibles menacent de formater la disquette à la moindre encartade. L'idée est intéressante et pourrait être développée. On pourrait continuer sur cette lancer en proposant de personnaliser le CAT (couleurs par exemple) dans un menu de la démo, ou d'y afficher son nom : "Cette disquette appartient à machin" lors de son premier lancement. Ou pourquoi pas avoir un CAT différent à chaque lancement...

SOS besoin de place pour un CATalogue fichiers...
Vous êtes bien embêté, vous aviez prévu de faire une belle démo en fichiers, et votre CAT'art prend presque toutes les entrées. Rassurez-vous, il existe une solution. Pourvu que vous puissiez commencer votre démo à partir d'un unique fichier de lancement, celui-ci pourra modifier le numéro de la piste contenant le CATalogue lu par le système. La commande à taper pour changer cette piste est (merci Grimmy) :
POKE &A8A8,255:POKE &A89D,piste

Crypter les CATalogues...
Lorsque vous êtes fier comme un pape de votre CAT'art et que vous refusez que quelqu'un comprenne de quoi il est fait, que vous refusez de montrer la sainte tripe d'octet à un débutant, pour cacher un message devant apparaitre en cheatpart, ou simplement pour corser le perçage de mystère de votre CAT, vous souhaitez entourer son code d'un brouillard. C'est possible ! Sachant que le bit de poids fort de chaque octet est purement et simplement filtré lors de l'affichage, il suffit de l'activer à votre gré pour qu'un &65 ou "A" devienne un &E5 (caractère graphique). Naturellement, ce cryptage est simple à percer puisqu'il suffit de faire l'opération inverse et filtrer ce bit pour voir apparaitre la vraie valeur de l'octet affiché. A noter cependant que cet octet est réellement utilisé par le système à 2 endroits correspondant aux 2 premiers des 3 caractères de l'extension du fichier. Le premier est utilisé pour indiquer si le fichier est protégé en écriture, le second pour indiquer si le fichier est caché. Vous pourrez utiliser le premier, si vous n'avez pas trop utilisé les espaces qui suivent cette extension, car il faut savoir qu'alors un"*" remplacera un espace. En revanche, utiliser le second reviendrait à supprimer l'entrée de CATalogue correspondante.


4 - Petit mot de fin
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 flagrand... 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. Ca 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...