La Place des Développeurs Créer un image pour les Screen modes 1 et 2 Et les contraintes qui vont avec ! ^^
aoineko
Membre non connecté
Conseiller Municipal
Suite à une discussion en MP avec Gfx, je vais faire un p'tit résumé ici des contraintes pour créer des images pour les Screen modes 1 et 2.
Avant de rentrer dans le détail, il faut déjà préciser que ces deux modes, définies comme « graphique » dans la terminologie MSX, sont en fait de simples Text modes. En effet, la zone mémoire qui sert à l’affichage, ne stocke pas d’informations sur les pixels, mais uniquement des numéros de caractère (ou pattern). Ce sont les patterns qui eux, définissent la forme et les couleurs des pixels.
- Résolution : 32x24 blocs (soit 768)
- Patterns : 256
- Couleurs : 2 par groupe de 8 patterns (soit 32 combinaisons de 2 couleurs)
Chacun des 768 blocs de l’écran utilise l’un des 256 patterns.
Chaque pattern fait 8x8 pixels (donc l’écran fait 256x192 pixels).
Chaque pixel des patterns vaut 0 ou 1.
On peut définir les couleurs par groupe de 8 patterns (pattern n°0~7, n°8~15, n°16~23, etc.).
Pour chaque groupe de 8 patterns, on peut définir l’une des 16 couleurs pour les pixels qui valent 0 et une autre pour les pixels qui valent 1.
Sur MSX1, les 16 couleurs utilisables sont fixes (cf. https://paulwratt.github.io/programmers-palettes/HW-MSX/HW-MSX-palettes.html).
Pour résumer, en Screen 1, on ne peut avoir que 256 patterns uniques (donc 1/3 de l’écran) et seulement 32 combinaisons de 2 couleurs parmi 16. Ces contraintes ne sont pas forcément gênantes si on veut faire une petite image à l’écran. En terme de couleur, ce mode ne permet pas d’avoir plus de 2 couleurs par bloc de 8x8 à l’écran.
- Résolution : 32x8 blocs x 3 (soit 768)
- Patterns : 256 x 3 (soit 768)
- Couleurs : 2 par ligne des 768 patterns
L’écran est divisé en 3 bandes horizontales (haut, milieu, bas).
Chacun de ces bandes fait 32x8 blocs, soit 256 blocs chacune.
Chaque bloc d’une bande utilise l’un des 256 patterns associé à sa bande (les bandes ont chacune leurs propres patterns).
Chaque pattern fait 8x8 pixels.
Chaque bande fait donc 256x64 pixels (et l’écran qui regroupe ces 3 bandes fait 256x192 pixels).
Chaque pixel des patterns vaut 0 ou 1.
Pour chaque ligne de chaque pattern, on peut définir l’une des 16 couleurs pour les pixels qui valent 0 et une autre pour les pixels qui valent 1.
Sur MSX1, les 16 couleurs utilisables sont fixes (cf. https://paulwratt.github.io/programmers-palettes/HW-MSX/HW-MSX-palettes.html).
Pour résumer, en Screen 2 on peut avoir un pattern unique pour chaque bloc de l’écran (ce qui le rapproche d’un mode bitmap). Cependant, pour une utilisation normale, le découpage en 3 bandes rends ce mode plus complexe car on doit savoir sur quelle(s) bande(s) sont utilisés chaque pattern. Pour pallier à ce problème, il n’est pas rare dans les jeux, que les trois bandes contiennent les mêmes patterns et que ce mode ne soit utilisé que pour sa plus grande liberté dans l’utilisation des couleurs que le Screen 1. En Screen 2, la contrainte est de 2 couleurs par ligne d’un bloc. A l’écran, cela se résume à 2 couleurs par groupe de 8 pixels de long sur 1 pixel de haut.
Voilà, si y a des choses pas clair, dite-moi.
Avant de rentrer dans le détail, il faut déjà préciser que ces deux modes, définies comme « graphique » dans la terminologie MSX, sont en fait de simples Text modes. En effet, la zone mémoire qui sert à l’affichage, ne stocke pas d’informations sur les pixels, mais uniquement des numéros de caractère (ou pattern). Ce sont les patterns qui eux, définissent la forme et les couleurs des pixels.
Screen mode 1
- Résolution : 32x24 blocs (soit 768)
- Patterns : 256
- Couleurs : 2 par groupe de 8 patterns (soit 32 combinaisons de 2 couleurs)
Chacun des 768 blocs de l’écran utilise l’un des 256 patterns.
Chaque pattern fait 8x8 pixels (donc l’écran fait 256x192 pixels).
Chaque pixel des patterns vaut 0 ou 1.
On peut définir les couleurs par groupe de 8 patterns (pattern n°0~7, n°8~15, n°16~23, etc.).
Pour chaque groupe de 8 patterns, on peut définir l’une des 16 couleurs pour les pixels qui valent 0 et une autre pour les pixels qui valent 1.
Sur MSX1, les 16 couleurs utilisables sont fixes (cf. https://paulwratt.github.io/programmers-palettes/HW-MSX/HW-MSX-palettes.html).
Pour résumer, en Screen 1, on ne peut avoir que 256 patterns uniques (donc 1/3 de l’écran) et seulement 32 combinaisons de 2 couleurs parmi 16. Ces contraintes ne sont pas forcément gênantes si on veut faire une petite image à l’écran. En terme de couleur, ce mode ne permet pas d’avoir plus de 2 couleurs par bloc de 8x8 à l’écran.
Screen mode 2
- Résolution : 32x8 blocs x 3 (soit 768)
- Patterns : 256 x 3 (soit 768)
- Couleurs : 2 par ligne des 768 patterns
L’écran est divisé en 3 bandes horizontales (haut, milieu, bas).
Chacun de ces bandes fait 32x8 blocs, soit 256 blocs chacune.
Chaque bloc d’une bande utilise l’un des 256 patterns associé à sa bande (les bandes ont chacune leurs propres patterns).
Chaque pattern fait 8x8 pixels.
Chaque bande fait donc 256x64 pixels (et l’écran qui regroupe ces 3 bandes fait 256x192 pixels).
Chaque pixel des patterns vaut 0 ou 1.
Pour chaque ligne de chaque pattern, on peut définir l’une des 16 couleurs pour les pixels qui valent 0 et une autre pour les pixels qui valent 1.
Sur MSX1, les 16 couleurs utilisables sont fixes (cf. https://paulwratt.github.io/programmers-palettes/HW-MSX/HW-MSX-palettes.html).
Pour résumer, en Screen 2 on peut avoir un pattern unique pour chaque bloc de l’écran (ce qui le rapproche d’un mode bitmap). Cependant, pour une utilisation normale, le découpage en 3 bandes rends ce mode plus complexe car on doit savoir sur quelle(s) bande(s) sont utilisés chaque pattern. Pour pallier à ce problème, il n’est pas rare dans les jeux, que les trois bandes contiennent les mêmes patterns et que ce mode ne soit utilisé que pour sa plus grande liberté dans l’utilisation des couleurs que le Screen 1. En Screen 2, la contrainte est de 2 couleurs par ligne d’un bloc. A l’écran, cela se résume à 2 couleurs par groupe de 8 pixels de long sur 1 pixel de haut.
Voilà, si y a des choses pas clair, dite-moi.
On est toujours ignorant avant de savoir.
Merci beaucoup, je pense avoir compris. J'ai essayé de faire une image pour me représenter le truc (je suis assez visuel
Pour le Screen mode 2 tu dis 2 couleurs par groupe de 8pixels horizontaux et 1px vertical. Je pensais qu'une pattern faisait 8x8px et ne s'appliquait qu'a un bloc et que ce bloc ne pouvait contenir que 2 couleurs (Bit 0 & 1) ?
Edité par Gfx Le 02/03/2021 à 09h09
Il faut cultiver notre jardin.
Gfx :
Merci beaucoup, je pense avoir compris.
Pour le Screen mode 2 tu dis 2 couleurs par groupe de 8pixels horizontaux et 1px vertical. Je pensais qu'une pattern faisait 8x8px et ne s'appliquait qu'a un bloc et que ce bloc ne pouvait contenir que 2 couleurs (Bit 0 & 1) ?
Pour le Screen mode 2 tu dis 2 couleurs par groupe de 8pixels horizontaux et 1px vertical. Je pensais qu'une pattern faisait 8x8px et ne s'appliquait qu'a un bloc et que ce bloc ne pouvait contenir que 2 couleurs (Bit 0 & 1) ?
En screen 1 : un pattern 8x8 = 2 couleurs pour tout le pattern
En screen 2 : un pattern 8x8 = 2 couleurs par ligne du pattern
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)
Bravo Gfx,
Je suis aussi visuel, ton schema aidera bcp de personnes
Merci
Je suis aussi visuel, ton schema aidera bcp de personnes
Merci
aoineko
Membre non connecté
Conseiller Municipal
Il est super ton schema !
Ca mérite qu'on mette tout ça sur le Wiki pour la postérité.
Pour Final Smash, je te réponds sur le fil de discussion dédié.
Ca mérite qu'on mette tout ça sur le Wiki pour la postérité.
Pour Final Smash, je te réponds sur le fil de discussion dédié.
On est toujours ignorant avant de savoir.
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie