ARTICLES
3 / 74 |
Modes et Couleurs
Pour les CPC CPC 464, 664 et 6128.
160 × 200 pixels,
20 colonnes x 25 lignes,
16 couleurs (ink 0,couleur a ink 15,couleur)
1 couleur pour le border
320 × 200 pixels,
40 colonnes x 25 lignes,
4 couleurs (ink 0,couleur a ink 3,couleur)
1 couleur pour le border
640 × 200 pixels,
80 colonnes x 25 lignes,
2 couleurs (ink 0,couleur et ink 1,couleur)
1 couleur pour le border
Accessible uniquement en assembleur
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 |
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).
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).
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
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
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 |