La Place des Développeurs Mode graphic MSX 1
Reprise du message précédent
Oui mais c'est comme ça et maintenant il faut faire avec !!dans le plupart des jeux les patterns servent au décor et les sprites pour les objets en mouvement
procure toi l'émulateur Meisei qui contient un viewer de screen , de patterns et de sprites pour avoir une bonne idée de la fabrication de jeux sur MSX1
il ne charge que les jeux en cartouche mais il y a déja de quoi faire
aoineko :
Ça me semble être un énorme gâchis de place mémoire alors qu'on aurait pu avoir un mode 8 couleurs par bloc 8x8 pour bien moins de place !
Il faut être compréhensif et se remettre dans le contexte de l'époque.
La phase de développement d'un processeur graphique à l'époque était de quelques années, et contrairement à la plupart des constructeurs d'ordinateurs à l'époque, qui développait tout leurs processeurs spécifiques en même temps que la machine elle-même, dans le cas du MSX, les concepteurs du standard ont fait leur marché et choisi un processeur qui existait déjà. Cela veut dire, que par rapport à un ordinateur dont tous les composants étaient développés en interne, le MSX avait déjà un train de retard ...
De plus, pour que le nouveau concept ne soit pas trop cher, ils ont choisi un processeur vidéo qui n'était pas tout neuf. Le TMS9918 avait été développé à l'origine pour le TI99/4A, qui a été commercialisé à partir de 1979 ! C'était déjà donc un processeur vidéo qui était sur le marché depuis 4 ans quand il a été choisi pour le MSX !
C'est d'ailleurs toute la philosophie du standard MSX ... Le but n'était pas du tout de créer une machine qui avait des capacités supérieures à celles qui étaient sur le marché, loin de là. Il s'agissait de créer une machine qui serait dans la bonne moyenne de ce qui se faisait à l'époque, mais surtout, de commercialiser un ordinateur moins cher que les concurrents en jouant sur les économies d'échelles, et de forcer par la même le marché à accepter un standard pour les ordinateurs individuels.
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
Ok, merci pour toutes ces infos. Ceci dit, j'suis sur qu'il y a eu une raison, un jour, pour se découpage vertical qui semble si étrange.
Sinon, des infos sur le FillRate (RAM->VRAM et VRAM->VRAM) ? Et sur comment faire pour changer le contenu des différents buffers sans altérer l'affichage courant ?
Sinon, des infos sur le FillRate (RAM->VRAM et VRAM->VRAM) ? Et sur comment faire pour changer le contenu des différents buffers sans altérer l'affichage courant ?
On est toujours ignorant avant de savoir.
extrait du Livre du MSX de Daniel Martin a la page 21
REMARQUES : A) La TNP contenant 768 pointeurs vers la TGP , un probléme se pose : le pointeur étant d'un octet , il ne peut prendre que 256 valeurs possibles .
Or , il faut pointer vers 768 patrons différents .
Pour résoudre le probléme , la TNP est divisée en 3 parties égales de 256 octets chacune , la TGP est elle aussi divisée en 3 parties égales de 2048 octets chacune.
Chaque partie de la TNP est en relation biunivoque avec une partie de la TGP.
D'une maniére générale , on peut considérer que l'écran est divisé en trois parties égales :
le tiers supérieur est géré par les premiéres parties de la TNP et de la TGP , le tiers médian par les deuxiémes et le tiers bas par les troisiémes parties
B) D'un point de vue pratique , il est plus aisé de charger la TNP avec trois fois les nombres consécutifs de 0 à 255 .
De cette façon la TNP n'intervient pas dans la programmation et vous pouvez consiférer la TGP comme la mesure d'écran.
C'est d'ailleurs de cette façon que fonctionne le basic en mode SCREEN 2
il fallait le dire
REMARQUES : A) La TNP contenant 768 pointeurs vers la TGP , un probléme se pose : le pointeur étant d'un octet , il ne peut prendre que 256 valeurs possibles .
Or , il faut pointer vers 768 patrons différents .
Pour résoudre le probléme , la TNP est divisée en 3 parties égales de 256 octets chacune , la TGP est elle aussi divisée en 3 parties égales de 2048 octets chacune.
Chaque partie de la TNP est en relation biunivoque avec une partie de la TGP.
D'une maniére générale , on peut considérer que l'écran est divisé en trois parties égales :
le tiers supérieur est géré par les premiéres parties de la TNP et de la TGP , le tiers médian par les deuxiémes et le tiers bas par les troisiémes parties
B) D'un point de vue pratique , il est plus aisé de charger la TNP avec trois fois les nombres consécutifs de 0 à 255 .
De cette façon la TNP n'intervient pas dans la programmation et vous pouvez consiférer la TGP comme la mesure d'écran.
C'est d'ailleurs de cette façon que fonctionne le basic en mode SCREEN 2
il fallait le dire
aoineko
Membre non connecté
Conseiller Municipal
La copie VRAM vers VRAM (sur l'axe Y) de 768 bytes par frame sur MSX 1, c'est réalisable ?
En fait, j'aimerai faire de l'anti-crénelage en switchant chaque frame entre 2 images.
L'idée, c'est d'avoir 2 versions de mes 256 patterns (disons A et B) avec, par exemple, au début, les 3 tiers de l'écran rempli avec A,B,A, puis, la frame suivante, de switcher pour avoir B,A,B. Et ainsi de suite.
J'vais essayer de trouver la doc du TMS9918.
En fait, j'aimerai faire de l'anti-crénelage en switchant chaque frame entre 2 images.
L'idée, c'est d'avoir 2 versions de mes 256 patterns (disons A et B) avec, par exemple, au début, les 3 tiers de l'écran rempli avec A,B,A, puis, la frame suivante, de switcher pour avoir B,A,B. Et ainsi de suite.
J'vais essayer de trouver la doc du TMS9918.
On est toujours ignorant avant de savoir.
TurboSEB
Membre non connecté
Conseiller Municipal
j'ai trouver ca sur le site de hans Otten, un fichier PDF de 5,63mo dans la section msxdocs, il faut que je mets le lien
voila : http://www.msxarchive.nl/pub/msx/mirrors/hanso/datasheets/chipstms9918.pdf Edité par TurboSEB Le 21/05/2011 à 21h26
voila : http://www.msxarchive.nl/pub/msx/mirrors/hanso/datasheets/chipstms9918.pdf Edité par TurboSEB Le 21/05/2011 à 21h26
MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
aoineko
Membre non connecté
Conseiller Municipal
Merci ; je suis tombé sur le même depuis Wikipédia.
Par contre, si quelqu'un a une version texte (non scan), ça m'intéresse.
(c'est quand même beaucoup plus simple pour chercher des infos)
EDIT : J'ai trouvé ça : tms9918a.txt Edité par aoineko Le 21/05/2011 à 21h39
Par contre, si quelqu'un a une version texte (non scan), ça m'intéresse.
(c'est quand même beaucoup plus simple pour chercher des infos)
EDIT : J'ai trouvé ça : tms9918a.txt Edité par aoineko Le 21/05/2011 à 21h39
On est toujours ignorant avant de savoir.
aoineko
Membre non connecté
Conseiller Municipal
Oups, c'est en fait 6 Ko de copie VRAM à VRAM dont j'aurai besoin pour faire mon système de color-mixing (pour l'anti-crénelage) ; je suppose que c'est trop pour une frame à 60 Hz.
On est toujours ignorant avant de savoir.
aoineko :
Oups, c'est en fait 6 Ko de copie VRAM à VRAM dont j'aurai besoin pour faire mon système de color-mixing (pour l'anti-crénelage) ; je suppose que c'est trop pour une frame à 60 Hz.
6Ko, c'est déjà à peine réalisable en une frame sur MSX2 avec les macro-instructions du VDP (voir les mesures de vitesse ici).
Alors, avec le VDP du MSX1, sans aucune macro-instruction, n'y pense même pas !!!
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
Dans les démos MSX 1, comment font-ils du color-mixing !? Pour émuler un grand nombre de couleurs, ils doivent bien switcher le contenu affiché d'une frame à l'autre. S'ils ne peuvent faire la copie de la VRAM chaque frame, c'est qu'ils doivent avoir toutes les infos déjà en VRAM et doivent avoir un moyen de sélectionner la zone qui sert à l'affichage. Je vais explorer cette idée.
On est toujours ignorant avant de savoir.
aoineko :
S'ils ne peuvent faire la copie de la VRAM chaque frame, c'est qu'ils doivent avoir toutes les infos déjà en VRAM et doivent avoir un moyen de sélectionner la zone qui sert à l'affichage.
Ben oui, il suffit d'avoir les tables prêtes et de changer le pointeur de la table des patterns à chaque frame ...
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
Metalion :
Ben oui, il suffit d'avoir les tables prêtes et de changer le pointeur de la table des patterns à chaque frame ...
Pour mon cas, ça sera parfait.
Par contre, ça explique pas comment dans les démos, ils peuvent avoir 2 images plein écran en VRAM !
Il faut 3 tables de 256 * 8 bytes (2K) pour les patterns d'une image et autant pour les couleurs : donc 12K pour 1 image.
Comment 2 images pourraient tenir dans 16K de VRAM !?
On est toujours ignorant avant de savoir.
aoineko
Membre non connecté
Conseiller Municipal
Dans la doc du TMS9918, y a une section Vram Memory Address Derivation mais je comprends pas à quoi ça sert. Une idée ?
EDIT : En fait, ça semble pas être une fonctionnalité, mais juste la façon dont l'adresse en VRAM d'un élément est construite. Edité par aoineko Le 24/05/2011 à 12h20
EDIT : En fait, ça semble pas être une fonctionnalité, mais juste la façon dont l'adresse en VRAM d'un élément est construite. Edité par aoineko Le 24/05/2011 à 12h20
On est toujours ignorant avant de savoir.
aoineko
Membre non connecté
Conseiller Municipal
En screen 2, est-ce réaliste de changer la valeur de toute la matrice de patern (32*24) à chaque frame ? Ça fait 768 octets donc ça me semble largement jouable ; me trompe-je ?
On est toujours ignorant avant de savoir.
igal
Membre non connecté
Conseiller Municipal
aoineko :
Y a pas moyen de simuler plus de couleur en inter-changeant les couleurs à chaque frame ? Ça risque de piquer un peu les yeux, mais je me demande ce que ça donnerait.
EDIT : A 50 ou 60 Hz, ça pourrait le faire ! Au moins, pour l'anti-crénelage.
EDIT : A 50 ou 60 Hz, ça pourrait le faire ! Au moins, pour l'anti-crénelage.
Salut Aoineko.
Tu trouveras pas mal d'infos qui devraient t'intéresser je pense => http://nl.msx.org/forumtopic723.html
Plus particulièrement le 3ème post
désolé ce n'est pas adapté a ce que veux Aoineko
l'exemple est pour un VDP MSX2 et porte sur les changements de couleur dans la palette ce qui n'est pas supporté par un MSX1
mais ça reste intéressant a lire
l'exemple est pour un VDP MSX2 et porte sur les changements de couleur dans la palette ce qui n'est pas supporté par un MSX1
mais ça reste intéressant a lire
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie