La Place des Développeurs Comment détecter le type de VDP ?
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
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
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.
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)
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
À 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
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+
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+
Fabf
Membre non connecté
Conseiller Municipal
Dans la rom il y a une zone qui indique la version 1-2-2+ et le pays
Par contre je sais plus ou
Par contre je sais plus ou
Fabf
Membre non connecté
Conseiller Municipal
oui mais ils n'accèdent qu'en partie aux capacités de ces processeurs.
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
Par contre je sais plus ou
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)
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.
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
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.
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
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)
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 ...
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 ...
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 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
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 :
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. ?
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. ?
On est toujours ignorant avant de savoir.
TurboSEB
Membre non connecté
Conseiller Municipal
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
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
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,
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
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