MSX Village forum

L'école Pour en voir de toutes les couleurs ! Codes couleurs MSX et correspondance RGB

pegase Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/11/2009 à 21h52

Messages: 974

Le 09/08/2010 à 13h10
Lors de la création du template du site, je me suis penché sur les codes couleurs propres au MSX et avec l'aide de Jipé, j'ai pu en déduire une correspondance au format RGB des PC actuels.

La première chose est de savoir que le MSX1 n'as que 16 couleurs affichable et que la majorité des jeux MSX2 n'en affichent que 16 sur une palette de 512 en SCREEN5 (c'est une généralité).

Un petit tour dans une doc du V9938 nous as permis de trouver que les composantes de couleurs RGB sont codés sur 3 bits chacun (et uniquement 2 pour la Bleu en SCREEN8).
Les couleurs de base sont agencées comme suit :


Ce tableau nous donne donc les informations sur les numéros des couleurs ainsi que la valeurs de chacune des composantes, la couleur #0 étant transparente.

On observe que chaque composante est chiffrée entre 0 et 7.
Chose remarquable : les couleurs autres que #0 n'utilisent pas "0" comme composante ... je n'ai toujours pas compris pourquoi.

Afin de faire un tableau de correspondance de couleurs sur les composantes RGB actuelles d'un PC allant de 0 à 255, il suffirait de faire 256/7 et d'obtenir le pas pour calculer la valeur de chaque couleur :



Cette correspondance nous donnerait donc le résultat présent sur le tableau de droite :



Petite recherche personnelles additives :

Curieux de savoir comment réagissent les émulateurs, j'ai été fouiller dans le rendu visuel de Blue MSX.
Il en ressort un tableau de composantes assez particulier :


Il est étonnant de voir que Blue MSX ne respecte pas le principe de conversion définis plus haut... La raison en est pourtant simple.
Regardons l'augmentation des chiffres :


On se rend vite compte que l'augmentation se fait sur des multiples de 8, les chiffres gardés étant les plus proches.
Les premier et dernier chiffres sont remarquables, car ils ne respectent pas les écarts de 8.
La raison en est qu'une composante à 0 doit être considérée comme transparente dans le cas du premier, et pour le dernier, au fait que la base est 248-1 (256-1).


Voilà donc la conclusion de ma petite recherche rapide. En espérant que cela serve à quelqu'un un jour...

Peg'


Rétro ... mais pas trop !
   
Walter Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 02/10/2009 à 19h33

Messages: 1883

Le 09/08/2010 à 18h12
Très intéressant, ce petit cours pour l'Ecole, pegase ! :top

Sebbeug Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h33

Messages: 2241

Le 09/08/2010 à 20h25
Ouaouh ... Super intéressant :top


Clé de sol

Site web    
MSXosaure Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 03/10/2009 à 00h09

Messages: 775

Le 12/08/2010 à 09h07
Le tableau des codes couleurs de base du MSX apparait dans plusieurs ouvrages liés à la programmation, pour les conversions PC j'aurais raisonné comme toi.

Pour ce qui est du rendu BlueMSX, il varie suivant qu'on fonctionne en mode MSX1 (couleurs palotes) et MSX2 (et+) (couleurs vives).


Et qu'en est il du Screen 8 (256 couleurs) :hum ;)

Edit:
Screen8

Le rouge et le vert ont une variation de de 0 à 7 ( 8 ) et le bleu de 0 à 3 (4) on a bien 8*8*4=256 couleurs.

Le code couleur se calcule comme suit: (Vert *32) + (Rouge*4) + Bleu

Par exemple: 119= 3*32+ 5*4 + 1 -> 3 vert + 5 rouge + 1 bleu.


Le MSXien le plus à l'ouest :fou ... ou presque :D
osaurer
   
pegase Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/11/2009 à 21h52

Messages: 974

Le 12/08/2010 à 11h15
Effectivement, j'avais dénoté des légères variations de couleur pour les différentes versions (sans avoir poussé jusqu'au 2+ et Turbo R).
Je verrais à compléter cet article prochainement avec ces versions.

Cependant, les composantes de 0 à 7 offrent bien 8 couleurs, mais on doit diviser 255/7 pour avoir 7 = 255, sinon on se retrouve avec un tableau de composante allant de 0 à 222, ce qui laisse des couleurs ternes.

Peg'


Rétro ... mais pas trop !
   
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2693

Le 15/01/2011 à 02h59
Pour ceux que ça intéresse, j'ai uploadé la palette des 256 couleurs du mode 8 et des 16 par défaut (mode 5 ?) au format .act : PalettesMSX.zip

Les .act sont juste des listes de 256 * 24 bits (RGB) et peuvent être utilisé sous Photoshop, par exemple, pour convertir vos images. Edité par aoineko Le 15/01/2011 à 03h00


On est toujours ignorant avant de savoir.
Github    
GuillianSeed Membre non connecté

Villageois

Rang

Avatar

Groupe : compte ++

Inscrit le : 16/10/2009 à 18h53

Messages: 683

Le 15/01/2011 à 10h58
Merci pour cette leçon bigrement intéressante !
Ca me rappelle les nuits où cherchais en tâtonnant sous Graphsaurus les bonnes couleurs sur des images Pinksox... :oups

Guil'


MSX1 Sony HB501F / MSX2+ FSA1FX / MSX2+ FSA1WX / MSX2+ FSA1WSX / MSX Turbo-R ST / MSX Turbo-R GT
Moonsound 2.0 & DalSoRi - Interface CF & CF Card Interface - MegaFlash SCC 512Ko & 2x512ko - SRam 512Ko - Megaflashrom SCC + SD
MSX4Ever !!
pegase Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/11/2009 à 21h52

Messages: 974

Le 24/10/2014 à 23h58
Je déterre le sujet pour vous demander une information quand aux capacités d'affichage d'un MSX.

Je sais que (reprenez-moi si je me trompe) :
- le MSX est capable d'afficher 16 couleurs sur une palette de 16
- le MSX2 à une palette de 512 couleurs (3 composantes notées de 0 à 7) et est capable d'en afficher un certain nombre (selon les mode d'écran)

Cependant, je ne connais pas les restrictions matérielles pour les décors et sprites.

- Peut-on afficher toute la palette dans un sprite ?
- Sinon, quelles sont les restrictions ?
- Combien de couleurs max dans le décors ?
... bref, tout ce que vous pourriez m'indiquer pour que je puisse comprendre le truc !

Merci d'avance ;)

Peg'


Rétro ... mais pas trop !
   
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 25/10/2014 à 08h06
une couleur( par ligne?) de sprite, même palette que le décors. tupeux en MSX2 activer le bit OR ce qui ca te donner une troisième couleur si tu superposes deux sprites.
si le premier sprite est en couleur 1 et le second de couleur 2 alors tu veras la couleur 3 s'afficher, si les couleurs sont 8 et 7 alors c'est la couleur 15 qui s'affichera.
par contre si les couleur sont 2 et 2 alors la couleur affiché sera 2.


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
MSXosaure Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 03/10/2009 à 00h09

Messages: 775

Le 25/10/2014 à 10h01
J'avais déjà mis un lien pour quelques possibilités évoluées de gestion des sprites en screen5, en screen8 par contre je n'ai pas trop d'infos...

Le lien


Le MSXien le plus à l'ouest :fou ... ou presque :D
osaurer
   
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 25/10/2014 à 11h10
MSXosaure :
J'avais déjà mis un lien pour quelques possibilités évoluées de gestion des sprites en screen5, en screen8 par contre je n'ai pas trop d'infos...



Le lien




Lien intéressant qui explique assez bien même si pour aller jusqu'au bout il aurait du expliquer comment décomposer les couleurs et composer les pixels allumés ou éteints ainsi que la table d'attribution des couleurs pour chaque ligne de sprite.


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1482

Le 25/10/2014 à 12h27
pegase :
Cependant, je ne connais pas les restrictions matérielles pour les décors et sprites


Des contraintes sur les décors ???

Il n'y a pas de contrainte sur les décors autre que celle qui sont liées à l'affichage du mode graphique sélectionné.



Pour les sprites :

- MSX1 : 1 couleur par sprite, parmi les 16 de la palette standard

- MSX2 : 1 couleur par ligne de sprite, parmi les 16 de la palette en cours, et avec l'option "OR" déjà expliquée précedemment



Dans le cas du seul mode graphique MSX2 ou on peut afficher plus de 16 couleurs (SCREEN8), les sprites ne peuvent prendre que 16 couleurs prédéfinies (voir page 98 du manuel du V9938). Edité par Metalion Le 25/10/2014 à 12h28


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
pegase Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/11/2009 à 21h52

Messages: 974

Le 25/10/2014 à 13h06
Merci pour vos renseignements.

Effectivement, le Screen 8 du MSX 2 me semble avoir le moins de restriction et correspondrait à ce que je cherche à rendre.
Les autres sont bien trop complexes à rendre sur photoshop de façon "humaine" et fluide ;)

Du coup, si je résume bien : Screen 8 = 256 couleurs sur l'écran et 16 par sprites.
Mais sur une palette de combien ?

Peg'


Rétro ... mais pas trop !
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1482

Le 25/10/2014 à 13h23
pegase :
Du coup, si je résume bien : Screen 8 = 256 couleurs sur l'écran et 16 par sprites.

Mais sur une palette de combien ?


Pour le décor, c'est sur une palette de 256, puisqu'il n'y a pas de palette en SCREEN8 : les couleurs sont fixes, et déterminées par 1 octet par pixel, avec 3 bits pour le Rouge, 3 bits pour le Vert et 2 bits pour le bleu.



Pour les sprites, c'est sur une palette de 16, puisqu'il n'y a pas de palette non plus, les couleurs étant prédéfinies. Maintenant, en lisant la page 98 du manuel du V9938, on voit que les valeurs prédéfinies sont constituées de 9 bits, 3 bits pour chaque composante. On peut donc considérer que c'est sur une palette "virtuelle" de 512.


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
pegase Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/11/2009 à 21h52

Messages: 974

Le 25/10/2014 à 13h25
Alors c'est nickel pour moi !

Merci à tous pour les infos, je reviendrais vers vous pour un premier écran "test" de mon remake de Metal Gear ! ;)

Peg'


Rétro ... mais pas trop !
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie