MSX Village forum

La Place des Développeurs Comment détecter le type de VDP ?

GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 22/05/2011 à 14h44
Les MSX Yamaha CX5MII, CX5MII/128 et Spectravideo SVI-738 sont des MSX1 qui ont un V9938 au lieu d'un TMS9918.

Les CX5MII ont une SubROM mais pas le SVI-738 donc je cherche le moyen de connaître le VDP. Une solution ?
   
msx45 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 09/12/2009 à 21h08

Messages: 872

Le 22/05/2011 à 14h54
Salut ,
sur MSX avec le logiciel MEGAREP tu peux tout savoir sur ton MSX (dont le type de VDP)



megarep.zip

Avec la fleche du bas tu peux descendre pour consulter le rapport de ta becane (il y a au moins 5 pages)

A+ Edité par msx45 Le 22/05/2011 à 14h57
E-mail    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1489

Le 22/05/2011 à 15h09
Je suppose que GDX veut connaitre un moyen de détecter le type de VDP dans un programme ...
Etant donné qu'on est hors standard, je pense qu'il n'y a pas d'autres moyens que de tester une fonctionnalité ou un registre spécifique du V9938.


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)
   
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 22/05/2011 à 15h20
Je cherche bien moyen de détecter le type de VDP dans un programme.
À partir de l'MSX2, c'est facile, Il suffit de lire le registre d'état 1 mais lorsqu'il s'agit d'un MSX1, ça ne marche pas. Le registre 15 n'existe pas et si on fait comme si il existait, le TMS9918 n'apprécie pas apparemment. Edité par GDX Le 22/05/2011 à 15h23
   
msx45 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 09/12/2009 à 21h08

Messages: 872

Le 22/05/2011 à 16h54
Salut GDX ,
tu veux detecter le type de VDP (MSX1 ou MSX2)
ou tu veux detecter le modele de VDP , pour MSX1 TMS9918A (NTSC) / TMS9928 (PAL) voir T6950 (HB501P)

Pour le type de VDP si tu fais un screen4 sur MSX1 ca te retourne une erreur
en faisant un programme gerant l'erreur tu peux determiner le type de VDP
si erreur VDP MSX1
si pas erreur VDP MSX2

Pour determiner le modele , pas d'idee a part demonter pour voir

A+
E-mail    
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 22/05/2011 à 17h40
Dans la rom il y a une zone qui indique la version 1-2-2+ et le pays
Par contre je sais plus ou :moue
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10405

Le 22/05/2011 à 17h51
oui mais le CX5MII et le SVI 738 sont des MSX1 ayant un processeur Video de MSX2 ce qui complique bien la chose


:noel
Site web    
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 22/05/2011 à 18h25
oui mais ils n'accèdent qu'en partie aux capacités de ces processeurs.
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10405

Le 22/05/2011 à 18h35
ces 2 machines n'ont que 16k de VRAM donc en trouvant un moyen de tester la taille de la VRAM c'est gagné


:noel
Site web    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1489

Le 22/05/2011 à 18h42
Fabf :
Dans la rom il y a une zone qui indique la version 1-2-2+ et le pays

Par contre je sais plus ou :moue


Ca ne marchera pas, puisqu'il s'agit de MSX1 avec un VDP de MSX2 !



Jipe :
ces 2 machines n'ont que 16k de VRAM donc en trouvant un moyen de tester la taille de la VRAM c'est gagné


Ca c'est facile, il suffit d'écrire puis de lire une valeur à une adresse supérieure à 16K.

Mais ça ne dit toujours pas quel type de VDP est dans la machine ...



Comme je l'ai déjà dit, je pense que la seule solution est de tester un registre spécifique et de gérer la réponse.


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)
   
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 23/05/2011 à 02h08
Ce n'est n'est pas si simple. La bidouille est pour Zaxxon. Ce jeu ne fonctionne que sur un MSX équipé d'un TMS9918 (le VDP MSX1). Jipé a patché Zaxxon afin qu'il fonctionne sur les autres MSX.

J'ai décidé de convertir ce jeu en ROM. Une fois fait, j'ai remarqué que cette version ne marche pas sur les MSX1.



J'ai donc mis une condition. Si c'est un MSX1 ça saute la bidouille de Jipé. Le problème, c'est qu'entre temps, j'ai appris qu'il y a des MSX1 équipés d'un V9938 bridé. C'est pour ça que je cherche à détecter le type de VDP.



Les MSX1 Yamaha CX5MII, CX5MII/128 et Spectravideo SVI-738 ont 16Ko de VRAM mais c'est bien un V9938, le VDP MSX2.

Metalion :
Comme je l'ai déjà dit, je pense que la seule solution est de tester un registre spécifique et de gérer la réponse.


Le problème, c'est que le TMS9918 n'a qu'un registre de statut alors que sur MSX2, ce registre est interchangeable à l'aide du registre 15 qui permet de choisir parmi 9 registres de statut internes.



Pendant une interruption, le registre de statut change sur MSX2/2+ et comme Zaxxon lit le registre d'état à ce moment là. Il lit la valeur d'un autre registre. Lorsqu'on essaie d'indiquer le bon registre statut avec le registre 15 sur le TMS9918, il se met à faire n'importe quoi parce que ce registre n'existe pas alors que sur les émulateurs, ça n'a pas d'effet ou presque.



Edit : Pendant une interruption, un MSX lit le registre de statut "par défaut" quelque soit la génération du MSX. Sur un TMS9918/TMS9928/TMS9929, c'est toujours 0 mais sur un V9938/V9958, il y a un registre 15 qui permet de changer le registre de statut par défaut. Edité par GDX Le 25/05/2014 à 14h38
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1489

Le 23/05/2011 à 07h16
GDX :
Pendant une interruption, le registre d'état change sur MSX2/2+ et comme Zaxxon lit le registre d'état à ce moment là. Il lit la valeur d'un autre registre. Lorsqu'on essaie d'indiquer le bon registre d'état avec le registre 15 sur le TMS9918, il se met à faire n'importe quoi parce que ce registre n'existe pas alors que sur les émulateurs, ça n'a pas d'effet ou presque.


Est-ce que ton problème n'est pas lié à la valeur du registre 15 par défaut ?

La routine de gestion des interruptions en $38 attend par défaut une valeur du registre 15 à zéro.

Si on oublie de remettre la valeur à zéro avant de rendre la main, le système plante ...



Maintenant, si le problème est de rendre compatible à 100% une version ROM de Zaxxon, je serais toi, je laisserai tomber ... On n'est plus au temps où il y avait encore des milliers d'utilisateurs avec des machines différentes, et où cela avait encore un sens. Aujourd'hui, il ne reste dans le monde que quelques centaines d'amateurs de MSX, et parmi eux, 80% utilisent un émulateur. D'autant plus que c'est une quête sans fin. Il te faudra ensuite tenir compte des machines MSX1 upgradées par un kit externe en MSX2 (les adresses d'accès du VDP sont différentes), puis des machines à 60Hz, etc ...



La compatibilité à 100% sur tout le parc MSX existant ou ayant existé est utopique.


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)
   
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 23/05/2011 à 07h56
Metalion :


Est-ce que ton problème n'est pas lié à la valeur du registre 15 par défaut ?

La routine de gestion des interruptions en $38 attend par défaut une valeur du registre 15 à zéro.

Si on oublie de remettre la valeur à zéro avant de rendre la main, le système plante ...



Ça marche bien sur un V9938/V9958 avec le patch de jipé qui consiste justement à mettre la valeur du registre 15 à zéro. Sans le patch ça marche sur TMS9918 seulement. Le fait d'accéder au registre 15 fait déconner le TMS9918. Voilà pour le résumé du problème.

Metalion :


Maintenant, si le problème est de rendre compatible à 100% une version ROM de Zaxxon, je serais toi, je laisserai tomber ... On n'est plus au temps où il y avait encore des milliers d'utilisateurs avec des machines différentes, et où cela avait encore un sens. Aujourd'hui, il ne reste dans le monde que quelques centaines d'amateurs de MSX, et parmi eux, 80% utilisent un émulateur. D'autant plus que c'est une quête sans fin. Il te faudra ensuite tenir compte des machines MSX1 upgradées par un kit externe en MSX2 (les adresses d'accès du VDP sont différentes), puis des machines à 60Hz, etc ...


Utiliser encore un MSX de nos jour n'a pas plus de sens. C'est juste un plaisir personnel.

Faire fonctionner les jeux incompatibles me fait plaisir et me permet de connaitre mieux le MSX.

En même temps, autant le partager ici. Le nombre d'utilisateur est secondaire.

Metalion :


La compatibilité à 100% sur tout le parc MSX existant ou ayant existé est utopique.



La plupart du temps, il ne faut pas grand-chose pour rendre un jeu compatible et ça fait encore plaisir à certains de juste le voir enfin tourner sur son MSX. Pour moi, c'est d'avoir réussi à le faire qui me plait.



PS : Je viens de voir que le spectravideo SVI-738 n'a pas de mode d'écran 80 colonnes. En fait, seul son DOS spécifique offre un mode 80 colonnes. C'est pour ça qu'il n'y a pas de SubROM comme le CX5MII. Edité par GDX Le 23/05/2011 à 09h46
   
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2732

Le 10/12/2021 à 00h02
Je squatte ce topic connexe

Je cherchais un moyen de détecter la quantité de VRAM disponible sur un MSX pour créer une fonction pour la nettoyer de fond en comble.
J'ai vu qu'au démarrage, le système initialise l'adresse en RAM 0xFAFC (MODE) avec des infos et notamment 2-bits avec la taille de la VRAM :
Code TEXT :
bits 1-2: VRAM size
    00 for 16kB
    01 for 64kB
    10 for 128kB
    11 for 192kB
 

Est-ce que cette valeur est connue pour être fiable sur tous les MSX ? (ceux que j'ai testé via OpenMSX semblent OK)
Et est-ce que cela signifie qu'il n'existe aucune autre quantité de VRAM possible ?
Je sais que 192K est le max, mais il n'existe pas de MSX avec 32K ou 48K par ex. ? :hum


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: 5813

Le 10/12/2021 à 00h29
Mis à part sur des modèles exotique :
Les MSX1 ont 16ko de VRAM
Les MSX2 ont 128ko de VRAM
Les MSX2+ ont 128kp de VRAM
Les TurboR ont 128ko de VRAM

A partir du MSX2+ , il y a un reset software au boot qui efface la mémoire VRAM.

Mais il y a des exceptions,les fameuses machines exotiques, donc rares, genre :
un MSX 1 avec 128ko de VRAM, Yamaha cx5 il me semble, Nan c'est pas celui-là mais je ne trouve pas
Des MSX2 avec 64ko de VRAM, VG8230 et VG8240, très rares
Je crois un MSX2 avec 192ko de VRAM en natif mais je ne me souviens plus et je n'en suis pas sûre. Il y a des machines modifiés en 192ko de VRAM mais aucun programme ne les exploitent.

Donc a mon avis la solution revient surtout a détecté si tu a affaire a des MSX1 ou des MSX2 qui ont a 99% du parc des machines 16ko et 128ko de VRAM.
Je me souviens sur mon 700 par exemple en Screen 5 (4 pages) ou en Screen 8 (2 pages) des rémanences de données en VRAM sauf sur la page 0 qui était utilisé au boot donc rafraîchi.

Donc en résumé : effacer la VRAM :
Sur 2+ et TurboR, inutile
Sur les 1 et 2, utile, donc il suffit de détecté si onr affaire a un Msx1 ou un Msx2

Comme la page 0 est a priori vierge au démarrage, pourquoi ne pas la recopier sur toutes les autres pages.

Je peu me tromper, Jipe pourra corriger mes propos :tea

J'ai trouvé qque info sur cette discussion : https://www.msx.org/forum/development/msx-development/ram-stays-memory-after-reset
Edité par TurboSEB Le 10/12/2021 à 01h02



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie