APPLICATIONSCREATION GRAPHIQUE ★ AUTOMATE CELLULAIRE ★

Automate Cellulaire|CPC Infos)Applications Creation Graphique

Créez de multiples graphismes synthétiques avec un automate cellulaire.

LE PRINCIPAL DE L'AUTOMATE

Au départ

Il faut amorcer l'automate. Pour cela on lui fournit :

  • une formule, supposons : 1013312.
  • une ligne de début :
On prend une liste de nombres (supposons aléatoires). On associe une couleur à la valeur de chaque nombre (si 1 : rouge, 2 : vert, etc).

On trace une ligne dont la couleur de chaque point correspond à la valeur de chaque nombre. On place 0 en début et en fin de ligne.

Ligne début:

01234
0
noir
2
vert
3
bleur
1
rouge
2
vert

-> x

Le fonctionnement

Mettons-nous à la place de l'automate et suivons son tricotage maille à maille.

Prenons le point après le 0, appelons-le x(1).

On prend sa valeur : 2=x(1). On lui ajoute la valeur du point précédent : 2=0+2=x(0)+x(1). On lui ajoute la valeur du point suivant : 5=0+2+3=x(0)+x(1)+x(2). On dispose d'une somme : 5=x(0)+ x(1)+x(2).

Utilisons la formule :

la somme=5, on prend le chiffre de la formule de rang 5, on obtient 1 :

1=formule (somme).

Somme=3
Rang : 0123456
Formule: 1013312
Obtenu: 1

Sous le point x(1), on trace un point de la couleur correspondant au chiffre couleur rouge.

 01234
Ligne début:02312
Ligne suivante: 1
Rouge
   

On se décale sur le point suivant x(2), on recommence le processus, x(1)+x(2)+x(3)=6, formule (6)=2, on trace sous x(2) un point de couleur 2. On fait cela jusqu'au bout de la ligne, on place 0 en début et en fin de ligne : une 2ème ligne a été tracée sous la 1ère.

On se déplace sur la ligne suivante, on recommence, cela jusqu'à former une image complète.


Figure 1

L'ALGORITHME

Au lieu de points, on parle de cellules. La cuisine ci-dessus peut s'écrire, façon BASIC (voir figure 1).

En BASIC, remplir un écran en mode 1 prend 12 minutes, contre 2 secondes en assembleur.

LES POSSIBILITES MULTIPLES

Modifier la ligne de début modifiera l'aspect du graphisme créé. Changer la formule changera la structure du graphisme. La formule est composée d'un maximum de 28 chiffres, chaque chiffre entre 0 et 9 : les combinaisons possibles sont considérables, libre à vous de les explorer.

LE PROGRAMME

Lancer d'abord ACDATA qui créera le fichier AC.BIN, puis lancer le programme BASIC.

Les formules

Pour choisir une formule, lister le BASIC, supprimer la formule valide (EDIT puis REM), puis valider la formule choisie (EDIT puis supprimer REM).

Le menu

L'option Début détermine la ligne de départ :

  • Aléatoire.
  • Symétrique : (le mieux pour tester une formule) : la 1 ère moitié de la ligne aléatoire, la 2ème moitié symétrique à la 1ère.
  • Milieu : tous les points valent 0 (noir), sauf le milieu qui vaut 1.
  • Précis : indiquer, à la suite de la formule, la valeur des points voulus : t(x)=v, v entre 0 et 9, x entre 0 et 320 si mode 1, entre 80 et 240 si mode 0.

On peut choisir le Mode 0 ou 1, (pour tester une formule, essayer d'abord mode 1), et afficher l'image façon Scan (balayage écran) ou Scroll.

Back vous ramènera un écran en arrière.

Run pour lancer l'automate. En fonctionnement, appuyer sur espace pour retourner au menu.

LA STRUCTURE DU PROGRAMME

BASIC

SSPRGM INITIAL ASSEMBLEUR
création tableau adresses lignes
RAM écran 1 (#C000)
création tableau adresses 8 lignes
RAM écran 2 (#4000)
copie encres mode 1 dans tableau
encres mode 1

RETOUR AU BASIC
choix et écrire formule dans tableau formule
choix et écrire ligne début dans tableau cellules
choix et écrire type affichage (scan, scroll, mode 0,1) dans swltch data

SSPRGM ENTREE ASSEMBLEUR
fin interruptions
sauver 2ème Jeu de registres sur pile (2ème Jeu de registres utilisé par DOS lors des interruptions)
sauver pointeur de pile dans buffer pointeur de pile pointe au bas du tableau adresses lignes écran 1 (utile pour scroller en dépilant adresse lignes dans les registres voulus)

PSG et port données prêt à entrer ligne 6 clavier (touche espace) (PSG : Programmable Son Générateur, qui peut aussi lire le clavier)
ssprgm restituer haut écran (efface le menu en BASIC) Initialiser compteur (de lignes image ou de groupe lignes) si data en switch data =1 : aller à scroll mode 0 =2 : aller à scan mode 0 =3 : aller à scroll mode 1 aller à scan mode 1

SCROLL MODE 0
(mode 0 : lignes écran sont doublées (pour obtenir des points carrés),
(permet un scrolling en 2 passes, plus souple)

copie lignes paires 4 à 200 vers lignes paires 2 à 198 copie lignes impaires 3 à 199 vers lignes impaires 1 à 197 charger adresse ligne 199 ssprgm automate cellulaire mode 0 (trace ligne 199, recopie sur ligne 200, décrémente compteur lignes) si touche espace non appuyée boucler en revenant à "copie lignes paires" aller à FIN

SCAN MODE 0
charger adresse ligne 1 ssprgm automate cellulaire mode 0 (trace ligne, recopie sur ligne suivante, décrémente compteur lignes)
si écran non terminé calcul et charger adresse prochaine ligne
boucler en revenant à "ssprgm automate cellulaire mode 0" si touche espace non appuyée boucler en revenant à "charger adresse ligne 1 " aller à FIN

SSPRGM AUTOMATE CELLULAIRE MODE 0
automate cellulaire trace ligne (cf algorithme dans listing assembleur)
copie ligne vers ligne suivante décrémente compteur lignes Image
(100 lignes image formant 200 lignes écran)
si écran terminé
ssprgm sauve tableau cellule dans buffers (pour commande menu "Back") RETOUR

SCROLL MODE 1
(utilise 2 RAM écran : affichage saccadé, mais sans ondulations) copie écran 1 (ligne 3 à 200) vers écran 2 (ligne 1 à 198) charger adresse ligne 199 écran 2 charger nombre lignes à tracer
ssprgm automate cellulaire mode 1 (trace lignes 199 et 200 écran 2, décrémente compteur groupes lignes)

attendre synchro verticale moniteur RAM écran 2 on

copie écran 2 (ligne 3 à 200) vers écran 1 (ligne 1 à 198) charger adresse ligne 199 écran 1 charger nombre lignes à tracer ssprgm automate cellulaire mode 1 (trace lignes 199 et 200 écran 1, décrémente compteur groupes lignes)
attendre synchro verticale moniteur

RAM écran 1 on
si touche espace non appuyée
boucler en revenant à "copie écran
1 vers 2"
aller à FIN

SCAN MODE 1
Initialiser compteur de groupe lignes modifier valeur initialisation compteur de groupe lignes dans code ssprgm sauve tableau cellule dans buffers charger adresse ligne 1 charger nombre lignes à tracer ssprgm automate cellulaire mode 1
(trace 8 lignes, décrémente compteur groupes lignes) si écran non terminé calcul et charger adresse prochaine ligne
boucler en revenant à "charger nombre lignes à tracer* si touche espace non appuyée boucler en revenant à "charger adresse ligne 1 "
rétablir valeur Initialisation compteur de groupe lignes
dans code ssprgm sauve tableau cellule dans buffers aller à FIN

SSPRGM AUTOMATE CELLULAIRE MODE 1
automate cellulaire trace ligne décrémente compteur lignes à tracer
si compteur lignes à tracer > 0 calcul et charger adresse ligne suivante
revenir à "automate cellulaire trace ligne"
(avec scroll : 2 lignes tracées, avec scan : 8 lignes tracées) décrémente compteur groupe lignes
si écran terminé
ssprgm sauve tableau cellule dans buffers (pour commande menu "Back") RETOUR

SSPRGM SAUVE TABLEAU CELLULE DANS BUFFERS
(pour commande menu "Back")
copie : buffer2 -> buffer3, buffer1 buffer2, tableau
cellule -> buffer1 flag écran terminé on (pour scan)
initialiser compteur (groupe) lignes
(à 100 : cas général : 200 lignes
écran / 2 lignes écran par boucle)
(à 25 : cas de scan mode 1 : 200
lignes écran / 8 lignes par boucle)
RETOUR

FIN
sauver 8 lignes haut écran vers buffer
(sur ces 8 lignes s'écrira le menu en BASIC)
rétablir port données en sortie rétablir pointeur de pile d'origine
rétablir 2ème jeu de registres d'origine
rétablir interruptions
RETOUR AU BASIC

CPCINFOS n°33

★ EDITEUR: CPCINFOS
★ ANNÉE: 1991
★ CONFIG: ??? (Valable pour CPC 664-6128: ROM Basic v1.1 UNIQUEMENT)
★ LANGAGE:
★ LICENCE: LISTING
★ AUTEUR: Jérôme RATIER

★ AMSTRAD CPC ★ DOWNLOAD ★

Je participe au site:
» Newfile(s) upload/Envoye de fichier(s)
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Melange de Couleurs (CPC Revue)
» Applications » Fractal Landscape Generator (Amstrad Computer User)
» Applications » The Program - Kompressor
» Applications » Picadro (Tilt)
» Applications » Imagic (AM-Mag)
» Applications » Transpen - Transfert d'Image Ecran (CPC Revue)

QUE DIT LA LOI FRANÇAISE:

L'alinéa 8 de l'article L122-5 du Code de la propriété intellectuelle explique que « Lorsque l'œuvre a été divulguée, l'auteur ne peut interdire la reproduction d'une œuvre et sa représentation effectuées à des fins de conservation ou destinées à préserver les conditions de sa consultation à des fins de recherche ou détudes privées par des particuliers, dans les locaux de l'établissement et sur des terminaux dédiés par des bibliothèques accessibles au public, par des musées ou par des services d'archives, sous réserve que ceux-ci ne recherchent aucun avantage économique ou commercial ». Pas de problème donc pour nous!

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 108 millisecondes et consultée 766 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.