IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

Palette 256 couleurs


Sujet :

Assembleur

  1. #1
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut Palette 256 couleurs
    Bonjour,

    je suis en train de coder des petites fonctions de conversion de couleur selon les modes pour mon OS ; pas de souci de ce côté-là sauf que je bute un peu sur le fait que la palette peut théoriquement changer d'une carte à l'autre, donc je pensais imposer une palette prédéfinie au démarrage

    Sauf que : quelle palette choisir ??

    On peut voir sur le wiki qu'il existe quantité de palettes existantes de 256 couleurs : https://en.wikipedia.org/wiki/List_of_color_palettes.
    Je me demande s'il y a une palette standard qui est employée dans la majorité des cas ; rien ne ressort dans ce que j'ai trouvé.

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 136
    Points
    10 136
    Par défaut
    Pourquoi pas tout simplement faire une moyenne ?
    Avec un dérivé de 6x6x6 on a 216 mais je crois que nous somme plus sensible au vert donc un 6x7x6 = 252 (+ 2 pour le blanc et le noir) on gros ça donne ça :

    0 0 0

    0 0 42
    0 0 84
    0 0 126
    0 0 168
    0 0 210
    0 0 252


    0 42 42
    ... 252


    0 82 42
    ... 252

    ainsi de suis
    Tu peux t'inspirer peut être de certaine consoles
    La NES a je crois 54 couleurs possible , la master system 64 , et la mega drive 512.
    La SNES a bien 256 couleur possible en même temps mais ces couleurs sont en 15 bits.

  3. #3
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    J'avais pensé à un codage 3 bits rouge, 3 bits vert et 2 bits bleu (car on est moins sensible au bleu semble-t-il) .
    Pourquoi s'arrêter à 252 ? Le maximum n'est-il pas 255 ? Ça ne risque pas de faire des couleurs un peu plus ternes ? D'ailleurs, je dois réussir à bosser avec un codage des palettes sur 6 bits car (selon la documentation) certaines cartes utilisent un codage restreint.

    Du point de vue des palettes, il y en as tellement... Je suis tonbé sur un sytème qui optimisait même en 6x7x5, reste a trouver la solution idéale.

  4. #4
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    Étrange ça...
    Depuis très longtemps, j'utilise la palette standard VGA, et je n'ai jamais eu de problème de couleurs.
    De plus, même si elle paraît un peu moisie (la palette VGA), c'est celle qui donne, en général, les meilleurs résultats en conversion d'images de types photos.
    Avec des formules comme vous avez indiqué ( x bits pour chaque composante), généralement, il manque au moins un dégradé de noir à blanc.

  5. #5
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    mon problème c'est que je ne fait pas confiance (et j'ai peut être un peu tort) aux fabriquants de carte video pour que ceux ci implémente exactement tous la même palette dans leur carte donc je recherche des info sur la palette la plus standard qui soit pour la recharger dans la carte a chaque démarrage de mon système, et aussi pour avoir une table pour convertir les image 256 couleur en 24bit

    si selon toi Forthman, la palette vga est le standard des cartes je vais partir la dessus. mais en attendant (et parce que écrire une palette apartir d'une image c'est fastidieux) d'avoir les données de la palette vga je m'était créer un générateur de palette suivant la façon de Kannagi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    ;palette graphique pour les modes 256 couleurs
     
    niv0b equ 0
    niv1b equ 42
    niv2b equ 84
    niv3b equ 126
    niv4b equ 168
    niv5b equ 210
    niv6b equ 252
    niv7b equ 255
     
    niv0g equ 42
    niv1g equ 84
    niv2g equ 126
    niv3g equ 168
    niv4g equ 210
    niv5g equ 252
    niv6g equ 255
    niv7g equ 255
     
    niv0r equ 42
    niv1r equ 84
    niv2r equ 126
    niv3r equ 168
    niv4r equ 210
    niv5r equ 252
    niv6r equ 255
    niv7r equ 255
     
     
    macro palred nivblue,nivgreen   ;macro qui fait varier la composante rouge
         {
    db nivblue,nivgreen,niv0r
    db 0
    db nivblue,nivgreen,niv1r
    db 0
    db nivblue,nivgreen,niv2r
    db 0
    db nivblue,nivgreen,niv3r
    db 0
    db nivblue,nivgreen,niv4r
    db 0
    db nivblue,nivgreen,niv5r
    db 0
    ;db nivblue,nivgreen,niv6r
    ;db 0
    ;db nivblue,nivgreen,niv7r
    ;db 0
         }
     
    macro palgreen nivblue      ;macro qui fait varier la composante verte
         {
    palred nivblue,niv0g
    palred nivblue,niv1g
    palred nivblue,niv2g
    palred nivblue,niv3g
    palred nivblue,niv4g
    palred nivblue,niv5g
    palred nivblue,niv6g
    ;palred nivblue,niv7g
         }
     
     
    db 0,0,0  ;noir
    db 0
     
    palgreen niv0b       ;variation de la composante bleu
    palgreen niv1b
    palgreen niv2b
    palgreen niv3b
    palgreen niv4b
    palgreen niv5b
    ;palgreen niv6b
    ;palgreen niv7b
     
    db 255,255,255  ;blanc
    db 0
     
    dd 0,0   ;deux couleur noir (pour le moment) pour completer la palette
    avec la possibilité d'essyer plusieurs variation de niveaux

  6. #6
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    je vois que tu as codé tes composantes sur 8 bits comme beaucoup de formats d'images 8 bits le font,
    mais les registres VGA sont sur 6 bits.

    Autre question : pourquoi utilise un octet à 0 pour faire occuper 4 octets par composante au lieu de 3 ?
    Dans le post sur Tetris, on a parlé de palette de couleurs, et l'instruction OUTSB permet d'envoyer une série
    d'octets sur un même port. si ta palette fait 768 octet ( et non 1024) elle peut être envoyée à la carte
    en totalité par un simple

  7. #7
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 136
    Points
    10 136
    Par défaut
    Pour la palette si tu veux avoir les 256 couleurs que j'ai dite , faut mieux le coder en C ou python parce que si tu met manuellement les 256 couleurs bon courage

    Pour te répondre pourquoi 252 ?
    ben 6x7x6 = 252

    Mais me suis trompé un peu dans les valeurs excuse moi voici donc les 252 couleurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    db 0,0,0
    db 0,0,51
    db 0,0,102
    db 0,0,153
    db 0,0,204
    db 0,0,255
    db 0,42,0
    db 0,42,51
    db 0,42,102
    db 0,42,153
    db 0,42,204
    db 0,42,255
    db 0,84,0
    db 0,84,51
    db 0,84,102
    db 0,84,153
    db 0,84,204
    db 0,84,255
    db 0,126,0
    db 0,126,51
    db 0,126,102
    db 0,126,153
    db 0,126,204
    db 0,126,255
    db 0,168,0
    db 0,168,51
    db 0,168,102
    db 0,168,153
    db 0,168,204
    db 0,168,255
    db 0,210,0
    db 0,210,51
    db 0,210,102
    db 0,210,153
    db 0,210,204
    db 0,210,255
    db 0,252,0
    db 0,252,51
    db 0,252,102
    db 0,252,153
    db 0,252,204
    db 0,252,255
    db 51,0,0
    db 51,0,51
    db 51,0,102
    db 51,0,153
    db 51,0,204
    db 51,0,255
    db 51,42,0
    db 51,42,51
    db 51,42,102
    db 51,42,153
    db 51,42,204
    db 51,42,255
    db 51,84,0
    db 51,84,51
    db 51,84,102
    db 51,84,153
    db 51,84,204
    db 51,84,255
    db 51,126,0
    db 51,126,51
    db 51,126,102
    db 51,126,153
    db 51,126,204
    db 51,126,255
    db 51,168,0
    db 51,168,51
    db 51,168,102
    db 51,168,153
    db 51,168,204
    db 51,168,255
    db 51,210,0
    db 51,210,51
    db 51,210,102
    db 51,210,153
    db 51,210,204
    db 51,210,255
    db 51,252,0
    db 51,252,51
    db 51,252,102
    db 51,252,153
    db 51,252,204
    db 51,252,255
    db 102,0,0
    db 102,0,51
    db 102,0,102
    db 102,0,153
    db 102,0,204
    db 102,0,255
    db 102,42,0
    db 102,42,51
    db 102,42,102
    db 102,42,153
    db 102,42,204
    db 102,42,255
    db 102,84,0
    db 102,84,51
    db 102,84,102
    db 102,84,153
    db 102,84,204
    db 102,84,255
    db 102,126,0
    db 102,126,51
    db 102,126,102
    db 102,126,153
    db 102,126,204
    db 102,126,255
    db 102,168,0
    db 102,168,51
    db 102,168,102
    db 102,168,153
    db 102,168,204
    db 102,168,255
    db 102,210,0
    db 102,210,51
    db 102,210,102
    db 102,210,153
    db 102,210,204
    db 102,210,255
    db 102,252,0
    db 102,252,51
    db 102,252,102
    db 102,252,153
    db 102,252,204
    db 102,252,255
    db 153,0,0
    db 153,0,51
    db 153,0,102
    db 153,0,153
    db 153,0,204
    db 153,0,255
    db 153,42,0
    db 153,42,51
    db 153,42,102
    db 153,42,153
    db 153,42,204
    db 153,42,255
    db 153,84,0
    db 153,84,51
    db 153,84,102
    db 153,84,153
    db 153,84,204
    db 153,84,255
    db 153,126,0
    db 153,126,51
    db 153,126,102
    db 153,126,153
    db 153,126,204
    db 153,126,255
    db 153,168,0
    db 153,168,51
    db 153,168,102
    db 153,168,153
    db 153,168,204
    db 153,168,255
    db 153,210,0
    db 153,210,51
    db 153,210,102
    db 153,210,153
    db 153,210,204
    db 153,210,255
    db 153,252,0
    db 153,252,51
    db 153,252,102
    db 153,252,153
    db 153,252,204
    db 153,252,255
    db 204,0,0
    db 204,0,51
    db 204,0,102
    db 204,0,153
    db 204,0,204
    db 204,0,255
    db 204,42,0
    db 204,42,51
    db 204,42,102
    db 204,42,153
    db 204,42,204
    db 204,42,255
    db 204,84,0
    db 204,84,51
    db 204,84,102
    db 204,84,153
    db 204,84,204
    db 204,84,255
    db 204,126,0
    db 204,126,51
    db 204,126,102
    db 204,126,153
    db 204,126,204
    db 204,126,255
    db 204,168,0
    db 204,168,51
    db 204,168,102
    db 204,168,153
    db 204,168,204
    db 204,168,255
    db 204,210,0
    db 204,210,51
    db 204,210,102
    db 204,210,153
    db 204,210,204
    db 204,210,255
    db 204,252,0
    db 204,252,51
    db 204,252,102
    db 204,252,153
    db 204,252,204
    db 204,252,255
    db 255,0,0
    db 255,0,51
    db 255,0,102
    db 255,0,153
    db 255,0,204
    db 255,0,255
    db 255,42,0
    db 255,42,51
    db 255,42,102
    db 255,42,153
    db 255,42,204
    db 255,42,255
    db 255,84,0
    db 255,84,51
    db 255,84,102
    db 255,84,153
    db 255,84,204
    db 255,84,255
    db 255,126,0
    db 255,126,51
    db 255,126,102
    db 255,126,153
    db 255,126,204
    db 255,126,255
    db 255,168,0
    db 255,168,51
    db 255,168,102
    db 255,168,153
    db 255,168,204
    db 255,168,255
    db 255,210,0
    db 255,210,51
    db 255,210,102
    db 255,210,153
    db 255,210,204
    db 255,210,255
    db 255,252,0
    db 255,252,51
    db 255,252,102
    db 255,252,153
    db 255,252,204
    db 255,252,255
    Le code C :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #include <stdio.h>
    #include <stdlib.h>
     
     
    int main()
    {
        int i,r,v,b;
        for(i = 0;i < 252;i++)
        {
            r = 255/5;
            v = 255/6;
            b = 255/5;
     
     
    		b = b * (i%6);
     
    		v = v * ( (i/6) % 7);
     
    		r = r *(i/42);
                    printf("db %d,%d,%d\n",r,v,b);
     
        }
     
     
     
     
    	return 0;
    }

  8. #8
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    a forthman: si jutilise ce format pour ma palette c'est parce que je l'envoie a la carte par les fonction vesa du bios
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    ;mov ax,4F08h       ;configure la palette en mode 8 bit
    mov bl,0
    mov bh,8
    int 10h
    cmp ax,004Fh
    je paletteok
     
    mov ebx,palgraf       ;convertit la palette en mode 6 bit (si le 8 bit n'est pas supporté
    boucle_conv_plagraf:
    shr byte[ebx],2
    inc ebx
    cmp ebx,palgraf+1024
    jne boucle_conv_plagraf
     
    paletteok:
    mov ax,4F09h
    mov bl,0
    mov cx,256
    mov dx,0
    mov di,palgraf
    int 10h
    en plus je me sert de la palette pour converir les image 4/8bit vers du 15/16/24/32bit dans mes fonctiond'affichage (la conversion inverse est aussi en projet)

    a kannagi: merci, ça me rapelle qu'il faut absolument que je me mette au C et au python

  9. #9
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 136
    Points
    10 136
    Par défaut
    ok , j'ai modifié mon code et les db pour mettre les virgules

    Pourquoi tu utilise quel langage principalement ( autre que l'assembleur) ?

    Sinon aussi apparemment le vert est la couleur qu'on perçoit le mieux : http://cyberzoide.developpez.com/pou...php3?page=oeil
    ou http://www.guide-gestion-des-couleur...-couleurs.html
    Enfaite si tu faisait un peu de prog graphique sur d'autre machine , le vert est celle qui a le plus de nuance en général par exemple sur la plupart des consoles qui propose des couleur 16 bits elle les reparties comme cela 5/6/5 en RGB).

  10. #10
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    je connait un peu le html,php,et javascript parce que je m'était fabriqué un jour un petit site web mais comme mon principal centre d'interet c'est la programmation système, je ne connais vraiment bien que l'assembleur et comme je travaille a la maintenance de machine de production, je ne touche pratiquement jamais a un ordinateur

    le mode de couleur 15 et 16 bit pouvant se rencontrer aussi sur les ordinateurs j'avait déja travaillé dessus, mais pour la conversion, une série de masque et décalage suffisent a faire les conversion vers le 24bits

    bon a prioris selon la carte il n'est pas possible de changer la palette je vais devoir absolument passer par la palette standard VGA. la probabilité que la carte ne soit pas en couleur standard vga ET que la palette ne soit pas modifiable étant très mince je vais pas me cailler le lait sur le sujet plus longtemps, ça n'est que du 256 couleurs!

Discussions similaires

  1. [XL-2007] Afficher palette 256 couleurs
    Par eliot.raymond dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/01/2012, 14h12
  2. Palette de 256 couleurs
    Par benjiprog dans le forum C
    Réponses: 5
    Dernier message: 29/05/2006, 16h16
  3. Palette 256 couleurs
    Par kivan666 dans le forum Graphisme
    Réponses: 9
    Dernier message: 02/04/2006, 00h39
  4. Vitesse de transfert en mode VESA 800*600 256 couleurs
    Par chep dans le forum Assembleur
    Réponses: 9
    Dernier message: 28/05/2004, 12h53
  5. DirectDraw: Créer des surfaces 256 couleurs
    Par Magus (Dave) dans le forum DirectX
    Réponses: 5
    Dernier message: 14/10/2002, 23h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo