MSX Village forum

La Place des Développeurs Le mystérieux Mode graphique 1,5

aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 09/01/2021 à 22h21
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 !? :heink 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.
Github    
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5791

Le 09/01/2021 à 22h39
P'tet même qu'il pourrait exister d'autres modes cachés, genre le 6.5 :oups En définitive, ça serait même tout à fait plausible :tea



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 09/01/2021 à 23h29
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.


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

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 10/01/2021 à 00h49
J'ai trouvé des infos sur le Wikipédia anglophone (https://en.wikipedia.org/wiki/Texas_Instruments_TMS9918) :

Wikipedia :
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.
Github    
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5791

Le 10/01/2021 à 04h02
Y'a pas mal d'info ici : :tea
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

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 10/01/2021 à 07h36


banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10328

Le 10/01/2021 à 08h23
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


:noel
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 10/01/2021 à 13h32
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.


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

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1484

Le 13/01/2021 à 19h59
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

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 14/01/2021 à 10h05
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.


On est toujours ignorant avant de savoir.
Github    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie