La Place des Développeurs Le mystérieux Mode graphique 1,5
aoineko
Membre non connecté
Conseiller Municipal
En lisant le VDP Programmer's Guide de Texas Instruments (sur le TMS9918), je suis tombé sur un chapitre qui m'a stupéfié !
Après avoir présenté le mode graphique 1 et 2 (correspondant au Screen mode 1 et 2 du MSX), les p'tits gras de TI nous présentent tranquillou un nouveau mode graphique hybride avec la Color table du mode graphique 2 (2 couleurs par ligne de pattern) et la Name table du mode graphique 1 (uniquement 256 pattern pour tout l'écran).
Le gros avantage c'est d'avoir un mode de 16 couleurs par pattern (2 par lignes) avec une occupation de la VRAM bien inférieur à celui du mode graphique 2. Ils précisent qu'en contre partie, on ne peut utiliser que 8 sprites sur mes 32 disponibles.
Je suis très étonné d'en avoir jamais entendu parlé avant.
En fait si, j'avais lu un message y a qq temps sur MRC ou quelqu'un faisait allusion à un mode graphique 1.5 mais, à l'époque, je n'avais pas compris de quoi il parlait.
Du coup, j'ai qq questions pour ceux qui pourrait avoir des infos sur ce mode mystère :
- 1) La première chose qui m'a étonné, c'est que dans le bouquin, ils disent qu'on active ce mode en changeant l'adresse des Name et Color tables. Depuis quand un changement d'adresse modifie le comportement d'un mode graphique !? J'étais persuadé que seul les bits du mode graphique pouvait changer les comportement, pas les adresses des tables. Est-ce qu'il y a d'autres exemples de modification de comportement d'un mode en changeant des adresses !?
- Est-ce que toutes les versions du VDP des MSX1 supportent ce mode ? D'ailleurs, il n'y a que des TMS9918 ou bien d'autres VDP compatibles sont parfois utilisés ?
- Est-ce que ce mode 1.5 est supporté par certains émulateur ?
- Est-ce que ce mode reste accessible avec les successeurs du TMS9918 ? (V9938 et V9958)
Du coup, ça me donne très envie de savoir s'il n'y a pas d'autres modes cachés
Après avoir présenté le mode graphique 1 et 2 (correspondant au Screen mode 1 et 2 du MSX), les p'tits gras de TI nous présentent tranquillou un nouveau mode graphique hybride avec la Color table du mode graphique 2 (2 couleurs par ligne de pattern) et la Name table du mode graphique 1 (uniquement 256 pattern pour tout l'écran).
Le gros avantage c'est d'avoir un mode de 16 couleurs par pattern (2 par lignes) avec une occupation de la VRAM bien inférieur à celui du mode graphique 2. Ils précisent qu'en contre partie, on ne peut utiliser que 8 sprites sur mes 32 disponibles.
Je suis très étonné d'en avoir jamais entendu parlé avant.
En fait si, j'avais lu un message y a qq temps sur MRC ou quelqu'un faisait allusion à un mode graphique 1.5 mais, à l'époque, je n'avais pas compris de quoi il parlait.
Du coup, j'ai qq questions pour ceux qui pourrait avoir des infos sur ce mode mystère :
- 1) La première chose qui m'a étonné, c'est que dans le bouquin, ils disent qu'on active ce mode en changeant l'adresse des Name et Color tables. Depuis quand un changement d'adresse modifie le comportement d'un mode graphique !? J'étais persuadé que seul les bits du mode graphique pouvait changer les comportement, pas les adresses des tables. Est-ce qu'il y a d'autres exemples de modification de comportement d'un mode en changeant des adresses !?
- Est-ce que toutes les versions du VDP des MSX1 supportent ce mode ? D'ailleurs, il n'y a que des TMS9918 ou bien d'autres VDP compatibles sont parfois utilisés ?
- Est-ce que ce mode 1.5 est supporté par certains émulateur ?
- Est-ce que ce mode reste accessible avec les successeurs du TMS9918 ? (V9938 et V9958)
Du coup, ça me donne très envie de savoir s'il n'y a pas d'autres modes cachés
On est toujours ignorant avant de savoir.
TurboSEB
Membre non connecté
Conseiller Municipal
aoineko
Membre non connecté
Conseiller Municipal
C'est extrêmement probable vu toutes les combinaisons de bits de modes non utilisées !
A mon avis, la question est plutôt de savoir si ces modes hybrides sont viables et compatibles entre les générations de MSX.
Pour info, la doc que j'ai lu concerne les TMS9918A/28A/29A et les TMS9118/28/29.
Je sais pas si ça couvre tous les MSX1 existant.
A mon avis, la question est plutôt de savoir si ces modes hybrides sont viables et compatibles entre les générations de MSX.
Pour info, la doc que j'ai lu concerne les TMS9918A/28A/29A et les TMS9118/28/29.
Je sais pas si ça couvre tous les MSX1 existant.
On est toujours ignorant avant de savoir.
aoineko
Membre non connecté
Conseiller Municipal
J'ai trouvé des infos sur le Wikipédia anglophone (https://en.wikipedia.org/wiki/Texas_Instruments_TMS9918) :
Par contre, reste les questions :
- Est-ce qu'il y a des MSX1 équipé de VDP autre que les TMS9918(A)/28(A)/29(A) ? Et si oui, supportent-ils ces modes ?
- Est-ce que ça marche toujours avec les MSX2 (V9938) et MSX2+ (V9958) ?
- Est-ce que ça marche avec les émulateurs ?
- Est-ce que les V9938 et V9958 ont aussi des modes cachés !?
Encore plein de mystères à découvrir. La chasse continue
Wikipedia :
Texas Instruments originally only documented the four modes listed above. However the bit that enables mode 2 is more interesting than initially let on. It is best described as a modifier bit for the other modes. Enabling it does three things[1]:
With this in mind, three additional modes are possible. Note that although genuine TMS9918A chips support these modes, clones and emulators may not.
Undocumented
Texas Instruments originally only documented the four modes listed above. However the bit that enables mode 2 is more interesting than initially let on. It is best described as a modifier bit for the other modes. Enabling it does three things[1]:
- Expands the color table size.
- Divides the screen horizontally into thirds.
- Changes two address bits of the pattern and color tables into mask bits, which control if each third of the screen has its own pattern and color table or not.
With this in mind, three additional modes are possible. Note that although genuine TMS9918A chips support these modes, clones and emulators may not.
- Mode 0 (Text) + Mode 2 (Graphic 2): Known as Bitmap Text Mode. This mode allows for two-color bitmap images, with no color table. This saves memory, at the expense of a slightly reduced horizontal resolution (text mode has a horizontal resolution of 240 pixels instead of 256 pixels like the graphic modes do).
- Mode 1 (Graphic 1) + Mode 2 (Graphic 2): Known as Half-Bitmap Mode. Texas Instruments actually documented this "undocumented" screen mode in their manual titled "Video Display Processors Programmers Guide SPPU004". In section 8.4.2, Playing Games with VRAM Addressing, they discuss how this mode combines the memory savings of mode 1 with the color detail of mode 2. However, as they go on to say this mode limits the number of sprites that can be displayed to 8 instead of 32. Therefore, the term "undocumented" used to describe this mode is a misnomer. However, because this manual was not widely known, this mode is generally considered to be one of the undocumented modes. Generally, the only reason to use this mode over Mode 2 is to reduce memory consumption.
- Mode 3 (Multicolor) + Mode 2 (Graphic 2): Known as Bitmap Multicolor Mode. This mode is more of a novelty, as it offers nothing beyond what the standard Multicolor mode can already do.
Par contre, reste les questions :
- Est-ce qu'il y a des MSX1 équipé de VDP autre que les TMS9918(A)/28(A)/29(A) ? Et si oui, supportent-ils ces modes ?
- Est-ce que ça marche toujours avec les MSX2 (V9938) et MSX2+ (V9958) ?
- Est-ce que ça marche avec les émulateurs ?
- Est-ce que les V9938 et V9958 ont aussi des modes cachés !?
Encore plein de mystères à découvrir. La chasse continue
On est toujours ignorant avant de savoir.
TurboSEB
Membre non connecté
Conseiller Municipal
Y'a pas mal d'info ici :
https://www.msx.org/wiki/VDP_Mode_Registers
Et
https://www.msx.org/wiki/VDP_Specific_MSX2%2B_Registers
Vue d'ensemble des capacités officielle du vdp9938 :
https://en.m.wikipedia.org/wiki/Yamaha_V9938
Y'a aussi un screen 9 spécifique aux Msx2 Coréen Daewoo :
https://www.msx.org/wiki/SCREEN
Originalement pour afficher un mode texte avec des caractères Coréen, mais dorénavant accessible à tout Msx avec l'extension du Hangul basic : https://www.msx.org/wiki/Hangul_BASIC
Sans oublier les 4 modes screen textes Kanji spécifiques aux msx2/2+ et TR équipés d'une Kanji Rom et d'un basic spécifique.
https://www.msx.org/wiki/CALL_KANJI
C'est pas ça les modes screen x.5 ? Edité par TurboSEB Le 10/01/2021 à 04h49
https://www.msx.org/wiki/VDP_Mode_Registers
Et
https://www.msx.org/wiki/VDP_Specific_MSX2%2B_Registers
Vue d'ensemble des capacités officielle du vdp9938 :
https://en.m.wikipedia.org/wiki/Yamaha_V9938
Y'a aussi un screen 9 spécifique aux Msx2 Coréen Daewoo :
https://www.msx.org/wiki/SCREEN
Originalement pour afficher un mode texte avec des caractères Coréen, mais dorénavant accessible à tout Msx avec l'extension du Hangul basic : https://www.msx.org/wiki/Hangul_BASIC
Sans oublier les 4 modes screen textes Kanji spécifiques aux msx2/2+ et TR équipés d'une Kanji Rom et d'un basic spécifique.
https://www.msx.org/wiki/CALL_KANJI
C'est pas ça les modes screen x.5 ? Edité par TurboSEB Le 10/01/2021 à 04h49
MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
ericb59
Membre non connecté
Conseiller Municipal
C'est pas le fameux Mode hybride dont tu parles ?
https://www.msx.org/forum/development/msx-development/undocumented-mode-1-2-polldiscussion
https://www.msx.org/forum/development/msx-development/undocumented-mode-1-2-polldiscussion
il y a un vdp qui ne supporte pas ce mode : le Toshiba T6950
https://www.msx.org/wiki/Toshiba_T6950
sinon je l'ai déja utilisé sur un V9958 sans probléme
https://www.msx.org/wiki/Toshiba_T6950
sinon je l'ai déja utilisé sur un V9958 sans probléme
aoineko
Membre non connecté
Conseiller Municipal
OK, du coup si j'ai bien compris, il faut différencier :
- Les modes hybrides (combinaisons de flag mode) qui ne marche pas sur MSX2/2+/TR et sur certains MSX1 (ceux avec un T6950 ; quelque soit la génération ?) ;
- L'utilisation des masques d'adresse du Mode graphique 2 (qui permet de split ou non les tables de pattern et/ou de couleur) qui marche sur tous les MSX sauf certains MSX1 (ceux avec la 1re génération T6950).
Autant pour modes hybrides ça me semble pas valoir le coup (surtout qu'en eux-même, ils n'apportent rien de vraiment intéressant).
Autant pour les masques d'adresse du Mode graphique 2, ça peut être très intéressant dans deux cas :
- Quand on a besoin de beaucoup de VRAM, le gain est important avec un seul table de Pattern et de Couleur) ;
- Quand on a besoin de modifier les patterns/couleurs en temps-réel (on a 1 seule table à modifier au lieu de 3) ; ça peut être nécessaire pour certains effets spéciaux.
- Les modes hybrides (combinaisons de flag mode) qui ne marche pas sur MSX2/2+/TR et sur certains MSX1 (ceux avec un T6950 ; quelque soit la génération ?) ;
- L'utilisation des masques d'adresse du Mode graphique 2 (qui permet de split ou non les tables de pattern et/ou de couleur) qui marche sur tous les MSX sauf certains MSX1 (ceux avec la 1re génération T6950).
Autant pour modes hybrides ça me semble pas valoir le coup (surtout qu'en eux-même, ils n'apportent rien de vraiment intéressant).
Autant pour les masques d'adresse du Mode graphique 2, ça peut être très intéressant dans deux cas :
- Quand on a besoin de beaucoup de VRAM, le gain est important avec un seul table de Pattern et de Couleur) ;
- Quand on a besoin de modifier les patterns/couleurs en temps-réel (on a 1 seule table à modifier au lieu de 3) ; ça peut être nécessaire pour certains effets spéciaux.
On est toujours ignorant avant de savoir.
Non, je pense que les deux modes que tu cite sont en fait le même (Mode 1 avec 1 seule table de patterns).
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)
aoineko
Membre non connecté
Conseiller Municipal
D'après les infos que j'ai trouvé dans les différentes doc, le Mode 2 a un comportement particulier même quand ce flag n'est pas associé à celui des autres modes.
Pour le Mode 2, les registres R#3 et R#4 du VDP ont un comportement particulier :
- Déjà, dans ce mode, dans tous les cas, la valeur des patterns de la table des Name est incrémenté de 256 pour la partie du milieu et de 512 pour la partie du bas de l'écran.
- Ensuite, 2-bits des registres R#3 et R#4 vont être utilisé non pas pour placer les tables de Pattern et de Color en VRAM, mais vont être utiliser comme un AND sur les 2-bits de poids fort des valeurs de la table des Name calculés précédemment.
- Comme par défaut ces deux 2-bits sont à 1 dans le Mode 2, les valeurs des Name ne va pas être modifié et le VDP va aller cherche les patterns et couleurs correspondant sur une plage de 768 patterns (le Mode 2 classique)
- Maintenant, si on met ses deux 2-bits à 0, le AND va nous faire retomber sur nos 256 patterns initiaux. C'est le fameux Mode 1.5, qui n'est en fait que le Mode 2 avec une configuration VRAM différente.
- Même si l'intérêt est limité, on peut aussi mettre ces 2-bits à 10 ou 01 pour avoir 512 patterns et, plus intéressant, on peut utiliser un nombre différent d'emplacements pour la table de Pattern et celle de Color (par ex. 256 emplacements de patterns et 768 de couleurs).
Apparemment, si TI n'a pas documenté en détail ces sous-fonctionnalités du Mode 2, c'est à cause des limitations sur les sprites qu'elles engendrent.
Dommage aussi que la première génération de T6950 ne supporte pas ces sous-fonctionnalités.
Pour ce qui est du mix des flags de mode, j'ai rien trouvé qui soit vraiment exploitable et de toute façon ce n'est compatible qu'avec le TMS9918.
Pour le Mode 2, les registres R#3 et R#4 du VDP ont un comportement particulier :
- Déjà, dans ce mode, dans tous les cas, la valeur des patterns de la table des Name est incrémenté de 256 pour la partie du milieu et de 512 pour la partie du bas de l'écran.
- Ensuite, 2-bits des registres R#3 et R#4 vont être utilisé non pas pour placer les tables de Pattern et de Color en VRAM, mais vont être utiliser comme un AND sur les 2-bits de poids fort des valeurs de la table des Name calculés précédemment.
- Comme par défaut ces deux 2-bits sont à 1 dans le Mode 2, les valeurs des Name ne va pas être modifié et le VDP va aller cherche les patterns et couleurs correspondant sur une plage de 768 patterns (le Mode 2 classique)
- Maintenant, si on met ses deux 2-bits à 0, le AND va nous faire retomber sur nos 256 patterns initiaux. C'est le fameux Mode 1.5, qui n'est en fait que le Mode 2 avec une configuration VRAM différente.
- Même si l'intérêt est limité, on peut aussi mettre ces 2-bits à 10 ou 01 pour avoir 512 patterns et, plus intéressant, on peut utiliser un nombre différent d'emplacements pour la table de Pattern et celle de Color (par ex. 256 emplacements de patterns et 768 de couleurs).
Apparemment, si TI n'a pas documenté en détail ces sous-fonctionnalités du Mode 2, c'est à cause des limitations sur les sprites qu'elles engendrent.
Dommage aussi que la première génération de T6950 ne supporte pas ces sous-fonctionnalités.
Pour ce qui est du mix des flags de mode, j'ai rien trouvé qui soit vraiment exploitable et de toute façon ce n'est compatible qu'avec le TMS9918.
On est toujours ignorant avant de savoir.
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie