Je suis en train de developper un petit programme en langage LUA pour convertir une image .ppm en un fichier binaire identique a ce qui devrait être écrit dans la mémoire écran du cpc (en mode 0).
Pour chaque couple de pixel de l'image, j'arrive à générer en hexadécimal le numero de stylo à utiliser (ce que certain appelle aussi le numéro d'encre). Le problème c'est que, un octet de la mémoire écran du CPC en mode 0, se crée en entremêlant les valeurs binaires des 2 numéros de stylo.
Je connais la manière dont sont combinés les deux valeurs de stylo pour constituer un octet de memoire (c'est bien décrit dans plusieurs articles sur CPCRulez). Par contre, je ne vois pas comment coder le programme (en langage C ou LUA ou python mais pas ASM) qui, à partir des 2 valeurs de stylo va générer le chiffre binaire ou hexadecimal qui correspond à la valeur de l'octet à mettre dans la mémoire du CPC.
Merci pour cette info, mais je ne vois pas en quoi un simple décalage de bit permettra de réaliser l'entrelacement de bits du mode 0 (sans mauvais jeux de mots).
Je pense que j'ai mal exprimé ma question. Je vais passer par un exemple.
Dans une image initiale (faite avec un logiciel actuel type PC MAC), j'ai, à un endroit, deux pixels qui se suivent horizontalement: un jaune (pixel de gauche) puis un rouge (pixel de droite).
Sur CPC la couleur jaune = 12 = 1100 (en binaire sur un demi octet) = La valeur A Sur CPC la couleur rouge = 3 = 0011 (en binaire sur un demi octet) = La valeur B
Dans l'octet de la mémoire écran du CPC, pour voir un pixel jaune puis un rouge, il faudra écrire : octet = 10100101 = La valeur C
Ma question est : Comment calculer la valeur C à partir des valeurs A et B ?
D'après ce que j'ai compris, selon vous, la valeur C = B + (A<<1) = 00000011 + 00011000 = 00011011 Ce qui est différent de C.
Est ce plus explicite ainsi ? Est ce que j'ai rien compris ?
Je pense qu'il te manque une étape alors : convertir la couleur CPC en octet de mémoire écran. Exemple : un pixel de couleur 3 en mode 0, si il est placé à gauche, aura en mémoire la valeur 136 (#88 en Hexa), alors que si il est placé à droite, il aura la valeur 68 (#44 en Hexa).
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 6 invité(s)
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas insérer de pièces jointes dans ce forum