CPC Rulez https://cpcrulez.fr/forum/ |
|
Encodage des couleurs pixels, je suis confus https://cpcrulez.fr/forum/viewtopic.php?f=4&t=5896 |
Page 1 sur 1 |
Auteur : | avtcoco [ 01 Mars 2017, 14:50 ] |
Sujet du message : | Encodage des couleurs pixels, je suis confus |
Salut à tous, Je me remets à la programmation sur CPC après 30 ans de break. J'ai commencé en 1986 et uniquement en Basic, et j'ai décidé de me relancer à la programmation en assembleur... Même pas peur, je suis rompu à l'assembleur x86, et le z80 n'est pas trop difficile. Bref, ce n'est pas le sujet J'ai lu et relu les pages suivantes pour bien comprendre comment la mémoire écran est faite: http://cpcrulez.fr/coding_ANTIBUG-01-struct_memoire_ecran.htm et http://cpcrulez.fr/coding_ecran_du_cpc1.htm Ma question est simple: - Je suis en Mode 1 - Je n'ai pas changé les inks (donc par défaut ink 0=bleu, ink 1=jaune, ink 2=cyan, et ink 3=rouge) - Je tape : poke &c000, &x00110101 Puisque (en mode 1), les 4 pixels sont codés comme suit: couleur pixel0 = bits 7 et 3, soit %00 couleur pixel1 = bits 6 et 2, soit %01 couleur pixel2 = bits 5 et 1, soit %10 couleur pixel3 = bits 4 et 0, soit %11 je m'attends à voir les 4 pixels suivantes : bleu-jaune-cyan-rouge Et pourtant... non! Ca affiche bleu-cyan-jaune-rouge ! Ce qui me chicote, c'est ce qui est indiqué dans la page : "Encore une petite particularité: la valeur binaire de la couleur doit être "retournée" avant d'être placée dans l'octet." Y'a que là que je trouve allusion à ce genre de manip. Et effectivement, si je fais le miroir binaire de chacune des couleurs, ça "marche"... sauf que je ne comprends pas pourquoi! Qu'est-ce que j'ai raté, ou mal compris? Merci pour vos éclaircissements avtcoco |
Auteur : | Tronic [ 01 Mars 2017, 23:59 ] |
Sujet du message : | Re: Encodage des couleurs pixels, je suis confus |
Bonsoir, Les "valeurs des encres" exprimées en bits doivent-être tout simplement "inversées" lorsque placées dans l'octet. Mode 1 = 4 inks : "valeur" 2 bits ink 0 = 00 "valeur" 2 bits ink 1 = 01 "valeur" 2 bits ink 2 = 10 "valeur" 2 bits ink 3 = 11 Un octet en mode 1 se décompose, en réalité, de la sorte : Bit 7 de l'octet : bit 0 (et non 1) de ink0 Bit 6 de l'octet : bit 0 (et non 1) de ink1 Bit 5 de l'octet : bit 0 (et non 1) de ink2 Bit 4 de l'octet : bit 0 (et non 1) de ink3 Bit 3 de l'octet : bit 1 (et non 0) de ink0 Bit 2 de l'octet : bit 1 (et non 0) de ink1 Bit 1 de l'octet : bit 1 (et non 0) de ink2 Bit 0 de l'octet : bit 1 (et non 0) de ink3 Donc, si on veut les 4 pixels : ink0+ink1+ink2+ink3 dans un octet, en mode 1, dans l'ordre, ça nous donne : bit7 de l'octet =bit0 de ink0 (00), soit 0 (bon dans votre essai) bit6 de l'octet =bit0 de ink1 (01), soit 1 (pas bon dans votre essai) bit5 de l'octet =bit0 de ink2 (10), soit 0 (pas bon non plus) bit4 de l'octet =bit0 de ink3 (11), soit 1 (bon dans votre essai) bit3 de l'octet =bit1 de ink0 (00), soit 0 (bon encore) bit2 de l'octet =bit1 de ink1 (01), soit 0 (pas bon) bit1 de l'octet =bit1 de ink2 (10), soit 1 (pas bon) bit0 de l'octet =bit1 de ink3 (11), soit 1 (bon) Et donc : 01010011 = poke &c000,&x01010011 = le quarté gagnant, dans l'ordre A+ Tronic/GPA |
Auteur : | avtcoco [ 02 Mars 2017, 09:20 ] |
Sujet du message : | Re: Encodage des couleurs pixels, je suis confus |
Merci pour votre réponse, ça confirme bien mes investigations. Maintenant je sais à quoi m'en tenir J'en profite pour remercier les administrateurs de cpcrulez.fr, votre site est une mine d'or! avtcoco |
Auteur : | hERMOL [ 02 Mars 2017, 11:37 ] |
Sujet du message : | Re: Encodage des couleurs pixels, je suis confus |
avtcoco a écrit : J'en profite pour remercier les administrateurs de cpcrulez.fr, votre site est une mine d'or! et les utilisateurs du site des pépites
|
Page 1 sur 1 | Le fuseau horaire est UTC+1 heure |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |