| ★ CODING ★ Apprendre pas à pas la programmation en assembleur Z80 par Roudoudou ★ Premiers programmes (briques indispensables) ★ |
| Changer les couleurs, chargement d'une palette |
Changer les couleursOn vient de voir comment changer le mode graphique. C'est bien mais il serait aussi sympathique de changer les couleurs. Alors, comment fait-on? À nouveau c'est le Gate Array qui s'occupe de cette tâche. Le snipet pour changer la couleur d'une encre ; sélectionner l'encre courante |
| n°Basic | n°Hard | Nom normé | Rouge | Vert | Bleu | Couleur ASIC | Couleur |
|---|---|---|---|---|---|---|---|
| 00 | #54 | Noir | 0% | 0% | 0% | #000 | |
| 01 | #44 et #50 | Bleu Marine | 0% | 0% | 50% | #008 | |
| 02 | #55 | Bleu Vif | 0% | 0% | 100% | #00f | |
| 03 | #5C | Marron | 50% | 0% | 0% | #080 | |
| 04 | #58 | Magenta Foncé | 50% | 0% | 50% | #088 | |
| 05 | #5D | Bleu Violet | 50% | 0% | 100% | #08f | |
| 06 | #4C | Rouge Vif | 100% | 0% | 0% | #0f0 | |
| 07 | #45 et #48 | Violet | 100% | 0% | 50% | #0f8 | |
| 08 | #4D | Magenta Vif | 100% | 0% | 100% | #0ff | |
| 09 | #56 | Vert Foncé | 0% | 50% | 0% | #800 | |
| 10 | #46 | Bleu Sarcelle | 0% | 50% | 50% | #808 | |
| 11 | #57 | Bleu Dodger | 0% | 50% | 100% | #80f | |
| 12 | #5E | Jaune Olive | 50% | 50% | 0% | #880 | |
| 13 | #40 et #41 | Gris | 50% | 50% | 50% | #888 | |
| 14 | #5F | Bleu Ardoise Moyen | 50% | 50% | 100% | #88f | |
| 15 | #4E | Orange | 100% | 50% | 0% | #8f0 | |
| 16 | #47 | Rose | 100% | 50% | 50% | #8f8 | |
| 17 | #4F | Violet | 100% | 50% | 100% | #8ff | |
| 18 | #52 | Vert Vif (Citron) | 0% | 100% | 0% | #f00 | |
| 19 | #42 et #51 | Vert Printanier | 0% | 100% | 50% | #f08 | |
| 20 | #53 | Bleu Eau | 0% | 100% | 100% | #f0f | |
| 21 | #5A | Vert Chartreuse | 50% | 100% | 0% | #f80 | |
| 22 | #59 | Vert Clair Pastel | 50% | 100% | 50% | #f88 | |
| 23 | #5B | Bleu Ciel Clair Pastel | 50% | 100% | 100% | #f8f | |
| 24 | #4A | Jaune Vif | 100% | 100% | 0% | #ff0 | |
| 25 | #43 et #49 | Jaune Clair Pastel | 100% | 100% | 50% | #ff8 | |
| 26 | #4B | Blanc de Chine | 100% | 100% | 100% | #fff |
Bon, et si on affichait une image, en mode 0, avec plein de couleurs? Pour pouvoir régler la palette, on va utiliser une boucle et lire les 16 couleurs que l'on va envoyer successivement au Gate Array. Mais d'abord, je vous invite à télécharger le fichier image suivant [ici].
ld bc,#7F80+%1100 : out (c),c ; utiliser le mode 0
ld hl,palette_image ; adresse du tableau des couleurs
ld bc,#7F00 ; on commence sur l'encre zéro
ld e,16 ; on va boucler sur 16 couleurs
setPalette
out (c),c : inc c ; sélectionner l'encre et incrémenter C pour la prochaine itération
; on pré-incrémente B car l'instruction OUTI commence par décrémenter B
; et nous on veut que B conserve sa valeur #7F car c'est le port qu'on veut!
inc b : outi ; envoyer la valeur pointée par HL sur le port
dec e : jr nz,setPalette
out (c),c ; sélectionner le border car C vaut 16 en sortie de boucle
ld a,#54 : out (c),a ; et choisir la couleur 'Noir'
jr $ ; boucle infinie, on ne fait plus rien
palette_image defb #5B,#4B,#54,#40,#46,#5C,#47,#5E,#43,#4E,#44,#57,#4C,#56,#55,#52
ORG #C000 ; mémoire vidéo
incbin 'cafeTronche.bin'Voilà, votre écran est affiché dans la bonne résolution et avec les bonnes couleurs. Je vous laisse la surprise de l'image ;)
Roudoudou
|
Page créée en 047 millisecondes et consultée 25 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. |