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: | 0 | 1 | 2 | 3 | 4 | 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. | 0 | 1 | 2 | 3 | 4 | | Ligne début: | 0 | 2 | 3 | 1 | 2 | | 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
| ★ AMSTRAD CPC ★ DOWNLOAD ★ |
|
CPCrulez[Content Management System] v8.732-desktop/c Page créée en 809 millisecondes et consultée 2204 foisL'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. |
|
|