La Place des Développeurs Capturer le contenu de la mémoire vidéo sur MSX
Bonjour à tous,
Vous souvenez-vous de ce code Basic qu'il fallait charger lorsque l'on désirait enregistrer dans un fichier image le contenu de la mémoire vidéo.
Dans mes souvenirs, il fallait lancer un jeu et au moment ou l'on voulait on faisait un Reset. Sous Basic il fallait alors entrer un code Basic pour afficher une page de la mémoire vidéo et ensuite un autre code pour enregistrer l'image dans un fichier SR5 ou SR8.
Je me souviens que j'ai fait ça de nombreuses fois pour récupérer les graphismes de Space Manbow par exemple et ainsi faire une démo avec un pote.
J'aimerais le faire à nouveau sur un MSX.
Si quelqu’un à ce fameux code !
Un grand merci à vous.
Vous souvenez-vous de ce code Basic qu'il fallait charger lorsque l'on désirait enregistrer dans un fichier image le contenu de la mémoire vidéo.
Dans mes souvenirs, il fallait lancer un jeu et au moment ou l'on voulait on faisait un Reset. Sous Basic il fallait alors entrer un code Basic pour afficher une page de la mémoire vidéo et ensuite un autre code pour enregistrer l'image dans un fichier SR5 ou SR8.
Je me souviens que j'ai fait ça de nombreuses fois pour récupérer les graphismes de Space Manbow par exemple et ainsi faire une démo avec un pote.
J'aimerais le faire à nouveau sur un MSX.
Si quelqu’un à ce fameux code !
Un grand merci à vous.

En gros ça donne un truc comme celui là :
10 screen8 -> mode screen 5/6/7/8
20 copy (0,0)-(256,212),1 to (0,0),0 -> copie page 1 dans la page 0
30 set page 0 -> affiche page 0
40 Bsave "image.sc8",&h0,&hffff,s -> sauvegarde adresse page 0 dans fichier
50 goto 50
Note 1: la page 1 contient en général les données, la page 0 étant la page de "travail" et les autres pages 2 et 3(screen 5 et 7) sont en général vide selon mon expérience
Note 2: on peut tout aussi bien utiliser la fonction copy (0,0)-(256,212),1 to "image.scr"
Édit: après 25 ans de sommeil, je me suis forcément tromper sur un détail, genre adresse memoire, les virgules et le tirets, si qqun peu rectifier
Édit 2: si un "sage" du village pouvait rappeller les adresses de sauvegarde des différentes page dans les différents screen, ça pourrait aider beaucoup
Edité par
TurboSEB
Le 27/03/2015 à 19h12
10 screen8 -> mode screen 5/6/7/8
20 copy (0,0)-(256,212),1 to (0,0),0 -> copie page 1 dans la page 0
30 set page 0 -> affiche page 0
40 Bsave "image.sc8",&h0,&hffff,s -> sauvegarde adresse page 0 dans fichier
50 goto 50
Note 1: la page 1 contient en général les données, la page 0 étant la page de "travail" et les autres pages 2 et 3(screen 5 et 7) sont en général vide selon mon expérience
Note 2: on peut tout aussi bien utiliser la fonction copy (0,0)-(256,212),1 to "image.scr"
Édit: après 25 ans de sommeil, je me suis forcément tromper sur un détail, genre adresse memoire, les virgules et le tirets, si qqun peu rectifier

Édit 2: si un "sage" du village pouvait rappeller les adresses de sauvegarde des différentes page dans les différents screen, ça pourrait aider beaucoup


MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)





pas sur que ça marche bien a partir des 2 plus
les sony faisaient de la rétention de mémoire sur certains RESET
il vaut mieux avoir un jeu qui se lance sur disquette pour reprendre la main aprés le reset
les sony faisaient de la rétention de mémoire sur certains RESET
il vaut mieux avoir un jeu qui se lance sur disquette pour reprendre la main aprés le reset

la mémoire vidéo est en DRAM (Dynamic Ram) et ne garde pas les données uniquement si on coupe l'alimentation
le reset ne coupe pas l'alim
le probléme des 2+ et au dessus c'est qu'il y a un systéme de remise a zéro des octets de la ram et c'est pour ça qu'il rendent la main a tout les coups sur le reset
a valider sur la VRAM
le reset ne coupe pas l'alim
le probléme des 2+ et au dessus c'est qu'il y a un systéme de remise a zéro des octets de la ram et c'est pour ça qu'il rendent la main a tout les coups sur le reset
a valider sur la VRAM
GDX :
C'est possible de récupérer le contenu de la VRAM avec BlueMSX en faisant un Save State.
Le fichier STA créé est en fait un fichier ZIP. Ouvrez-le et récupérez le fichier VDP_00.
Le fichier STA créé est en fait un fichier ZIP. Ouvrez-le et récupérez le fichier VDP_00.
En lançant BlueMSX j'ai vite fait un essai mais le VDP_00 est quel genre de format ?
C'est le contenu de la VRAM but, avec une entête de 02A8H octet. Par exemple, pour récupérer la page 0 du screen5, il faut extraire les 32 premiers Ko apres l'entête avec un éditeur hexa et ajouter l'entête FE 00 00 FF FF 00 00 (soit 7 octets) pour le lire sur MSX avec BLOAD"mon",S.
Edit : J'ai essayé sur CocoaMSX. L'entête faisait 0334H octets. Je me demande si elle est variable selon la configuguration. Edité par GDX Le 29/03/2015 à 08h51
Edit : J'ai essayé sur CocoaMSX. L'entête faisait 0334H octets. Je me demande si elle est variable selon la configuguration. Edité par GDX Le 29/03/2015 à 08h51
TurboSEB :
En gros ça donne un truc comme celui là :
10 screen8 -> mode screen 5/6/7/8
20 copy (0,0)-(256,212),1 to (0,0),0 -> copie page 1 dans la page 0
30 set page 0 -> affiche page 0
40 Bsave "image.sc8",&h0,&hffff,s -> sauvegarde adresse page 0 dans fichier
50 goto 50
10 screen8 -> mode screen 5/6/7/8
20 copy (0,0)-(256,212),1 to (0,0),0 -> copie page 1 dans la page 0
30 set page 0 -> affiche page 0
40 Bsave "image.sc8",&h0,&hffff,s -> sauvegarde adresse page 0 dans fichier
50 goto 50
Bonjour,
J'ai bien essayé ton code mais cela ne semble pas fonctionner.
Essaie avec :
Il faut lancer le jeu MSX2~, faire Reset et lancer le programme basic ci-dessus. N'oublie pas que retirer une cartouche le MSX en marche peut faire des dégats. Edité par GDX Le 30/03/2015 à 16h16
Code TEXT :
10 SCREEN8 'screen 5/6/7/8 possible 20 SETPAGE1,1 '2,2 ou 3,3 possible si screen 5/6 30 BSAVE "IMAGE.SC8",0,&HFFFF,S 'sauvegarde la page indiquée par le setpage
Il faut lancer le jeu MSX2~, faire Reset et lancer le programme basic ci-dessus. N'oublie pas que retirer une cartouche le MSX en marche peut faire des dégats. Edité par GDX Le 30/03/2015 à 16h16
Pareil que GDX : c'est une méthode qui présente beaucoup de risques !
Surtout avec nos machines qui ont maintenant un âge certain.
Beaucoup plus simple de le faire sous émulateur. Et sans risques.
Surtout avec nos machines qui ont maintenant un âge certain.
Beaucoup plus simple de le faire sous émulateur. Et sans risques.
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)
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie