CPC-POWER : CPC-SOFTS - CPCArchives 
Options de Recherche :
 
 
 

ARTICLES

3 / 74

Modes et Couleurs

Pour les CPC CPC 464, 664 et 6128.



Les modes écrans :



    * Mode 0 :


      160 × 200 pixels,
      20 colonnes x  25 lignes,
      16 couleurs (ink 0,couleur a ink 15,couleur)
      1 couleur pour le border

 

    * Mode 1 :


      320 × 200 pixels,
      40 colonnes x  25 lignes,
      4 couleurs (ink 0,couleur a ink 3,couleur)
      1 couleur pour le border

 

    * Mode 2 :


      640 × 200 pixels,
      80 colonnes x  25 lignes,
      2 couleurs (ink 0,couleur et ink 1,couleur)
      1 couleur pour le border



    * Mode 3 :

 

      Accessible uniquement en assembleur


Les couleurs :


    Une palette de 27 couleurs (les couleurs 27 a 31 sont utilisables mais ce sont des couleurs en double, a noter que leurs valeur dans le Gate Array sont différentes)

INK GATE ARRAY Couleurs
Decimal Hexa Decimal Hexa
0 &00  20 &14 Noir   #000000
1 &01  4 &04 Bleu   #000055
2 &02  21 &15 Bleu vif   #0000FF 
3 &03  28 &1C Rouge   #6D0000 
4 &04  24 &18 Magenta   #6D0055 
5 &05  29 &1D Mauve   #6D00FF 
6 &06  12 &0C Rouge vif   #FF0000 
7 &07  5 &05 Pourpre   #FF0055 
8 &08  13 &0D Magenta vif   #FF00FF 
9 &09  22 &16 Vert   #006D00 
10 &0A  6 &06 Turquoise   #006D55 
11 &0B  23 &17 Bleu ciel   #006DFF 
12 &0C  30 &1E Jaune   #6D6D00 
13 &0D  0 &00 Blanc   #6D6D55 
14 &0E  31 &1F Bleu pastel   #6D6DFF 
15 &0F  14 &0E Orange   #FF6D00 
16 &10  7 &07 Rose   #FF6D55 
17 &11  15 &0F Magenta pastel   #FF6DFF 
18 &12  18 &12 Vert vif   #00FF00 
19 &13  2 &02 Vert marin   #00FF55 
20 &14  19 &13 Turquoise vif   #00FFFF 
21 &15  26 &1A Vert citron   #6DFF00 
22 &16  25 &19 Vert pastel   #6DFF55 
23 &17  27 &1B Turquoise pastel   #6DFFFF 
24 &18  10 &0A Jaune vif   #FFFF00 
25 &19  3 &03 Jaune pastel   #FFFF55 
26 &1A  11 &0B Blanc brilliant   #FFFFFF 
27 &1B 1 &01     #6D6D55 
28 &1C 8 &08     #FF0055 
29 &1D 9 &09     #FFFF55 
30 &1E 16 &10     #000055 
31 &1F 17 &11     #00FF55 

 

 


Les encres :
 

ink encre,couleur1,couleur2

Si on ne précise pas la couleur2, elle sera considérée comme identique a la couleur1. (Si les 2 couleurs sont différentes, les couleurs clignoterons a l'écran).

 

 

La bordure :
 

border couleur1,couleur2

Si on ne précise pas la couleur2, elle sera considérée comme identique a la couleur1. (Si les 2 couleurs sont différentes, les couleurs clignoterons a l'écran).

 

 

Le clignotement des couleurs :

speed ink temps1 (0 a 255), temps2 (0 a 255)

Le temps est défini en 1/50e de seconde.

Exemple (couleur1=1s couleur2=2s) : speek ink 100,200

 

 

 

Décodage des encres :

On a vu comment changer la couleur pour le BORDER ou pour un INK, mais qu'en est t'il de la méthode pour récupérer les couleurs existantes ? On a beau lire le guide de l'utilisateur de notre amstrad, aucune information a ce sujet. (En tout cas dans mon guide pour le CPC 464, je n'ai rien trouvé)

 

Il doit bien entendu exister plusieurs solutions pour arriver a nos fins, mais en ce qui me concerne je vais vous en présenter une en Basic.

 

Les CPC 464 (Basic 1.0) et les CPC 664/6128 (Basic 1.1) ne sont pas égaux concernant l'adresse de stockage des couleurs, vous devez savoir que le stockage s'étend sur 34 adresses (et oui chaque encre a 2 couleurs et le border aussi) et que la valeur de la couleur est celle que vous retrouverez inscrite dans la colonne GATE ARRAY du tableau au dessus, ce qui va nous obliger a décoder les valeurs pour obtenir la valeur directement utilisable en basic.

 

Sur CPC 464, vous retrouverez les couleurs stockées a partir de #B1D9 : BORDER couleur2, encre couleur 2 INK 0 a 15, BORDER couleur1, encre couleur 1 INK 0 a 15

 

Sur CPC 664 et 6128, vous retrouverez les couleurs stockées a partir de #B7D4 : BORDER couleur2, encre couleur 2 INK 0 a 15, BORDER couleur1, encre couleur 1 INK 0 a 15

 

 

1 'DECODE LES COULEURS
10 DIM gatearray(32)
15 FOR i=0 TO 31:READ A$:gatearray(VAL("&"+a$))=i:NEXT
20 DATA 14,04,15,1C,18,1D,0C,05,0D,16,06,17,1E,00,1F,0E
25 DATA 07,0F,12,02,13,1A,19,1B,0A,03,0B,01,08,09,10,11
30 REM BASIC 1.0 = &B1D9 ; BASIC 1.1 = &B7D4
35 IF PEEK(6)=128 THEN cou1 = &B1D9 ELSE cou1 = &B7D4
40 cou2 = cou1 + &11
45 PRINT "BORDER ";gatearray(PEEK(cou2));",";gatearray(PEEK(cou1))
50 FOR i=0 TO 15
55 PRINT "INK";i;",";gatearray(PEEK(cou2+i+1));
60 PRINT ",";gatearray(PEEK(cou1+i+1))
65 NEXT

 

Registres de sélection d'encre du Gate Array

OUT ENCRE
&7F00 0
&7F01 1
&7F02 2
&7F03 3
&7F04 4
&7F05 5
&7F06 6
&7F07 7
&7F08 8
&7F09 9
&7F0A 10
&7F0B 11
&7F0C 12
&7F0D 13
&7F0E 14
&7F0F 15
&7F10    BORDER



10 DATA 01,10,7F       //LD BC,&7F10 (Border)
20 DATA ED,49          //OUT (C),C
30 DATA 3E,14         //LD A,&14 (Noir)
40 DATA F6,40          //OR &40
50 DATA ED,79          //OUT (C),A
60 DATA C9
70 FOR i=&BE80 TO &BE8B:READ A$:POKE i,VAL("&"+A$):NEXT:CALL &BE80

 

Article créé le : Mardi 10 Février 2009 à 00 h 00
Dernière mise à jour le : Vendredi 23 Novembre 2012 à 10 h 20
 
 

CPC-POWER/CPCArchives, projet maintenu par Fredouille.
Programmation par Kukulcan © 2007-2024 tous droits réservés.
Reproduction sans autorisation interdite. Tous les titres utilisées appartiennent à leurs propriétaires respectifs.