L'école [RESOLU] New Vision Technology Tentative d'affichage d'images en relief N.I.T
Reprise du message précédent
Ah !!!! Donc ça marche sur un vrai MSX (contrairement à ce que disait GDX ce matin) !C'est donc l'émulation qui pose un problème.
Le clignotement en SCREEN0 est normal, c'est l'action sur le registre 9 qui le met en route. La commande pour l'arrêter est : VDP(10)=VDP(10)AND251
La valeur du registre 13 spécifie la durée d'affichage de chaque page : VDP(14)= Temps page 0 x 16 + Temps page 1
Sauf erreur de ma part, il n'y a que 2 pages disponibles en VRAM pour le SCREEN12.
Ton schéma d'alternance va donc être difficile à réaliser.
EDIT : essaie un peu en enlevant carrément la commande VDP(10) du programme. Car je ne suis pas sur qu'elle soit nécessaire. Edité par Metalion Le 14/11/2013 à 09h21
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)
igal :
@Métalion: Afin d'afficher alternativement avec un temps identique pour chaque image, j'ai remplacé:
40 VDP(2)=VDP(2)OR32:VDP(14)=255:VDP(10)=VDP(10)OR4
40 VDP(2)=VDP(2)OR32:VDP(14)=17:VDP(10)=VDP(10)OR4
40 VDP(2)=VDP(2)OR32:VDP(14)=255:VDP(10)=VDP(10)OR4
40 VDP(2)=VDP(2)OR32:VDP(14)=17:VDP(10)=VDP(10)OR4
Je viens d'essayer mais ça n'affiche pas alternativement avec un temps identique pour chaque image.
J'ai un clignotement de pages paire/impaire très rapide, une très brève pause et ainsi de suite...
EDIT :
Sur OpenMSX, ça semble faire comme décrit dans la doc mais très désynchronisé.
Sur CocoaMSX, même clignotement de page très rapide mais sans la brève pause cyclique.
Metalion :
essaie un peu en enlevant carrément la commande VDP(10) du programme. Car je ne suis pas sur qu'elle soit nécessaire.
VDP(10)=VDP(10)OR4 est indispensable. C'est le VDP(2) qui n'est pas nécessaire. Un SETPAGE1 suffit.
igal :
Le retour au SCREEN 0 a des airs de noël. Pour éteindre les guirlandes, j'ai fixé avec:
40 VDP(2)=VDP(2)OR32:VDP(14)=15:VDP(10)=VDP(10)OR4
40 VDP(2)=VDP(2)OR32:VDP(14)=15:VDP(10)=VDP(10)OR4
C'est VDP(14)=0 qu'il faut.
Code TEXT :
Edité par
GDX
Le 14/11/2013 à 00h56
10 COLOR15,0,0 20 SCREEN 12 30 BLOAD"001.scc",S 40 SET PAGE,1 50 BLOAD"002.scc",S 55 SET PAGE1 60 VDP(14)=17:VDP(10)=VDP(10)OR4 90 IF INKEY$="" THEN 90 110 VDP(14)=0
igal
Membre non connecté
Conseiller Municipal
Voici un exemple qui ressemble assez pas mal à ce que je voudrais obtenir.
Le point positif:
L'enchainement des images semble etre un peu plus rapide par tranche de 3.
Les points négatifs:
Il semble que la durée d'affichage à l"écran n'est pas identique pour chacune des 3 images.
L'apparition des chaque image n'est pas instantanée mais se déroule à l'écran ce qui n'est pas très agréable à voir.En fait il semble que ce soit une image sur trois qui ne s'affiche pas instantanément, mais progressivement.
http://youtu.be/l6HvLa5kKps
Voici la source:
http://www.youtube.com/watch?v=YaYTbD_1m7M
Ca peut être une piste Edité par igal Le 14/11/2013 à 07h55
Le point positif:
L'enchainement des images semble etre un peu plus rapide par tranche de 3.
Les points négatifs:
Il semble que la durée d'affichage à l"écran n'est pas identique pour chacune des 3 images.
L'apparition des chaque image n'est pas instantanée mais se déroule à l'écran ce qui n'est pas très agréable à voir.En fait il semble que ce soit une image sur trois qui ne s'affiche pas instantanément, mais progressivement.
http://youtu.be/l6HvLa5kKps
Voici la source:
http://www.youtube.com/watch?v=YaYTbD_1m7M
Ca peut être une piste Edité par igal Le 14/11/2013 à 07h55
Pour en avoir le coeur net, j'ai approfondi mes tests sur un VRAI MSX :
Pas besoin du VDP(2). Le registre 2 est modifié avec SETPAGE X.
Le bit 2 du registre 9 sert à activer l'affichage de 2 pages en alternance pendant un laps de temps cyclique. Mettre ce bit à 1 pour activer. En basic : "VDP(10)=VDP(10)OR4" pour activer et "VDP(10)=VDP(10)and251" pour désactiver.
Le registre 13, en mode graphique, permet de régler le temps d'affichage 2 pages en alternance et de non alternance.
Le quartet de poids faible correspond au temps d'affichage de 2 pages en alternance.
Le quartet de poids fort correspond au temps d'affichage d'une page sans alternance. Cette page doit-être impaire et visible pour que l'alternance se fasse.
Chaque quartet contiennent donc une valeur de 0 à 15 (0H à FH en hexa). Ces valeurs correspondent aux temps compris entre 0 et 3 secondes (en augmentant de 0,2s) en 50 Hz.
Voici un exemple en screen 5 :
Pour simplifier, j'ai mis la valeur du registre 13 en hexadécimale.
VDP(14)=&H25 défini un clignotement de la page impaire affichée avec la page paire en dessous pendant 0,4 seconde (ici page 0 puisque la page affichée est la page 1, voir ligne 80) puis, plus de clignotement pendant 1 seconde (page 0 affichée) puis reclignotement pendant 0,4s et ainsi de suite.
Ce programme basic affiche les pages noires et blanche une frame sur deux pendant 1s (5x0,2s) puis la page noire pendant 0,4s (2x0,2s) et recommence ainsi de suite sans fin.
Si il y a SET PAGE3,3 en ligne 80, le clignotement se fera avec les pages 2 et 3.
Conclusion : Ça ne fonctionne pas comme indiqué dans les doc. Sur la vidéo d'Igal, on pourrait croire que ça marche parce que le temps de clignotement est réglé sur 0,2s. Ça passe inaperçu sur la vidéo sans doute à cause d'un nombre de frame réduit et un effet de transition.
C'est mieux : VDP(14)=0:VDP(10)=VDP(10)AND251
En Fait, ça marche aussi sur openMSX mais comme c'est désynchronisé, c'est difficile de voir ce qui ce passe. Ça ne marche pas sur CocoaMSX (clignotement une page sur 2 continuellement).
Pas besoin du VDP(2). Le registre 2 est modifié avec SETPAGE X.
Le bit 2 du registre 9 sert à activer l'affichage de 2 pages en alternance pendant un laps de temps cyclique. Mettre ce bit à 1 pour activer. En basic : "VDP(10)=VDP(10)OR4" pour activer et "VDP(10)=VDP(10)and251" pour désactiver.
Le registre 13, en mode graphique, permet de régler le temps d'affichage 2 pages en alternance et de non alternance.
Le quartet de poids faible correspond au temps d'affichage de 2 pages en alternance.
Le quartet de poids fort correspond au temps d'affichage d'une page sans alternance. Cette page doit-être impaire et visible pour que l'alternance se fasse.
Chaque quartet contiennent donc une valeur de 0 à 15 (0H à FH en hexa). Ces valeurs correspondent aux temps compris entre 0 et 3 secondes (en augmentant de 0,2s) en 50 Hz.
Voici un exemple en screen 5 :
Code TEXT :
10 COLOR,0,0 20 SCREEN 5 30 COLOR,1,0:CLS ' Page 0 noire 40 SET PAGE,1 50 COLOR,15,0:CLS' Page 1 blanche 60 SET PAGE,2 70 COLOR,4,0:CLS ' Page 2 bleue 80 SET PAGE1,3 'Mettre une page visible impaire. 1 pour clignotement des pages 0 et 1. 90 COLOR,6,0:CLS ' Page 3 rouge 100 VDP(14)=&H25:VDP(10)=VDP(10)OR4 110 IF INKEY$=""THEN110 120 COLOR15,4,4:VDP(14)=0:VDP(10)=VDP(10)AND251 ' rétabli les couleurs par défaut et stoppe le clignotement
Pour simplifier, j'ai mis la valeur du registre 13 en hexadécimale.
VDP(14)=&H25 défini un clignotement de la page impaire affichée avec la page paire en dessous pendant 0,4 seconde (ici page 0 puisque la page affichée est la page 1, voir ligne 80) puis, plus de clignotement pendant 1 seconde (page 0 affichée) puis reclignotement pendant 0,4s et ainsi de suite.
Ce programme basic affiche les pages noires et blanche une frame sur deux pendant 1s (5x0,2s) puis la page noire pendant 0,4s (2x0,2s) et recommence ainsi de suite sans fin.
Si il y a SET PAGE3,3 en ligne 80, le clignotement se fera avec les pages 2 et 3.
Conclusion : Ça ne fonctionne pas comme indiqué dans les doc. Sur la vidéo d'Igal, on pourrait croire que ça marche parce que le temps de clignotement est réglé sur 0,2s. Ça passe inaperçu sur la vidéo sans doute à cause d'un nombre de frame réduit et un effet de transition.
gdx :
C'est VDP(14)=0 qu'il faut.
igal :
Le retour au SCREEN 0 a des airs de noël. Pour éteindre les guirlandes, j'ai fixé avec:
40 VDP(2)=VDP(2)OR32:VDP(14)=15:VDP(10)=VDP(10)OR4
40 VDP(2)=VDP(2)OR32:VDP(14)=15:VDP(10)=VDP(10)OR4
C'est VDP(14)=0 qu'il faut.
C'est mieux : VDP(14)=0:VDP(10)=VDP(10)AND251
gdx :
Sur OpenMSX, ça semble faire comme décrit dans la doc mais très désynchronisé.
Sur CocoaMSX, même clignotement de page très rapide mais sans la brève pause cyclique.
Sur CocoaMSX, même clignotement de page très rapide mais sans la brève pause cyclique.
En Fait, ça marche aussi sur openMSX mais comme c'est désynchronisé, c'est difficile de voir ce qui ce passe. Ça ne marche pas sur CocoaMSX (clignotement une page sur 2 continuellement).
GDX :
C'est mieux : VDP(14)=0:VDP(10)=VDP(10)AND251
La commande VDP(14)=0 est inutile, elle ne met que la temporisation à zéro.
Le véritable interrupteur de l'alternance est la commande VDP(10).
Mon interrogation sur la nécessité de modifier le R#9 vient de la lecture approfondie de la doc du VDP V9938.
Ils distinguent une activation de l'alternance avec une temporisation définie par le R#13 (chapitre 6.1) et une alternance brute à 60Hz (chapitre 6.2). Il n'y a que dans le 2e cas que le registre R#9 est utilisé.
Yamaha :
Edité par
Metalion
Le 14/11/2013 à 09h19
6.1. Alternate display of two graphic screen pages
Two graphics screen pages may be alternatively displayed in G4 to G7 modes automatically. In G4 and G5 modes, the following pages can be displayed alternatively: page 0 and page 1, and page 2 and page3. In G6 and G7 modes, pages 0 and 1 will be alternatively displayed.
Display time period of between 166 ms and 2053 ms may be specified for each page. See section 3.2.6 for information about available time periods.
- Specify the odd page address in the pattern layout table register R#2
- Specify ON (even page) and OFF (odd page display) intervals in register R#13
6.2. Displaying two graphics screens at 60Hz
Bit 2 "EO" of register R#9 can be used for displaying two graphics screens alternately at 60Hz. Set the odd page pattern layout table in register R#2. Then set bit 2 of register R#9 to 1
Two graphics screen pages may be alternatively displayed in G4 to G7 modes automatically. In G4 and G5 modes, the following pages can be displayed alternatively: page 0 and page 1, and page 2 and page3. In G6 and G7 modes, pages 0 and 1 will be alternatively displayed.
Display time period of between 166 ms and 2053 ms may be specified for each page. See section 3.2.6 for information about available time periods.
- Specify the odd page address in the pattern layout table register R#2
- Specify ON (even page) and OFF (odd page display) intervals in register R#13
6.2. Displaying two graphics screens at 60Hz
Bit 2 "EO" of register R#9 can be used for displaying two graphics screens alternately at 60Hz. Set the odd page pattern layout table in register R#2. Then set bit 2 of register R#9 to 1
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)
Les temps que j'ai indiqués proviennent du livre "Pratique du MSX 2". Le livre sous entend que les temps dépendent du mode d'affichage 50 ou 60Hz. Je n'ai pas chronométré pour vérifier. Ils sont peut-être faux vue que l'explication est fausse.
Que ce soit l'un ou l'autre, ça stoppe le clignotement donc peu importe mais je trouve que c'est préférable de remettre les 2 à leur valeur initiale pour éviter les surprises. Si on avait à choisir entre les deux, VDP(14)=0 est plus simple et VDP(10)=VDP(10)AND251 est plus logique en effet. Edité par GDX Le 14/11/2013 à 10h07
Metalion :
La commande VDP(14)=0 est inutile, elle ne met que la temporisation à zéro.
Le véritable interrupteur de l'alternance est la commande VDP(10).
GDX :
C'est mieux : VDP(14)=0:VDP(10)=VDP(10)AND251
La commande VDP(14)=0 est inutile, elle ne met que la temporisation à zéro.
Le véritable interrupteur de l'alternance est la commande VDP(10).
Que ce soit l'un ou l'autre, ça stoppe le clignotement donc peu importe mais je trouve que c'est préférable de remettre les 2 à leur valeur initiale pour éviter les surprises. Si on avait à choisir entre les deux, VDP(14)=0 est plus simple et VDP(10)=VDP(10)AND251 est plus logique en effet. Edité par GDX Le 14/11/2013 à 10h07
igal
Membre non connecté
Conseiller Municipal
Merci à tous pour vos explications.
J'ai testé les commande proposées par Métalion et voici ce que j'en ai tiré.
Il est possible d'indiquer le temps d'affichage d'une page avec [VDP(14)=XX]
VDP(14)=&B00010001 spécifie le temps d'affichage d'une image Paire et Impaire
Nb: Pour incrémenter le temps d'affichage, il suffit d'augmenter la valeur (à crescendo) des Bits 4Bits de Droite pour l'image Paire ainsi que des 4 Bits de Gauche pour l'image Impaire.
Si VDP(14) Permet d'indiquer le temps entre l'alternance sur 2 images, ce dernier ne permute pas les pages.
Métalion propose la méthode suivante pour 2 images.
10 COLOR 15,0,0 (fond d'écran noir)
20 SCREEN 12 (Mode écran 12)
30 SET PAGE 0,0 (Page cible 0,0)
40 BLOAD"IMAGE000.SCC",S (Charge l'image dans la page cible 0,0)
50 SET PAGE 0,1 (Page cible 0,1)
60 BLOAD"IMAGE001.SCC",S (Charge l'image dans la page cible 0,1)
70 VDP(2)=VDP(2)OR32 (Provoque l'alternance entre deux pages)
80 VDP(14)=&B00010001 (indique le temps d'affichage "minimum" des pages Paire ET Impaires)
90 VDP(10)=VDP(10)OR4 (Empêche l'affichage d'une ligne sur deux seulement)
100 GOTO100 (permet le maintient en mode graphique 12 en empêchant le retour en SCREEN0)
Dans la pratique, afin d'atteindre une vitesse d'alternance la plus rapide possible, on peut procéder comme suit:
10 VDP(14)=&B00000001 (valorisé à 1 en lisant les 4 bits de Droite)
20 VDP(2)=VDP(2)OR32
30 VDP(14)=&B00010000 (valorisé à 1 en lisant les 4 bits de Gauche)
40 GOTO 10
Nb: VDP(2)=VDP(2)OR32 provoque l'alternance entre les pages.
Je pense qu'en substance j'ai tout ce dont j'ai besoin
Il me reste à assembler le lecteur avec lequel j'arrive à enfin lire en continu un "fondu d'image sur image".
Il suffit d'appuyer sur une touche pour basculer vers un sous programme qui affichera en alternance l'image déjà visible avec une image identique mais sous un autre angle de sorte à obtenir le rendu [New Vision Technology] avec un effet identique au dinosaure Edité par igal Le 15/11/2013 à 19h36
J'ai testé les commande proposées par Métalion et voici ce que j'en ai tiré.
Il est possible d'indiquer le temps d'affichage d'une page avec [VDP(14)=XX]
VDP(14)=&B00010001 spécifie le temps d'affichage d'une image Paire et Impaire
Nb: Pour incrémenter le temps d'affichage, il suffit d'augmenter la valeur (à crescendo) des Bits 4Bits de Droite pour l'image Paire ainsi que des 4 Bits de Gauche pour l'image Impaire.
Si VDP(14) Permet d'indiquer le temps entre l'alternance sur 2 images, ce dernier ne permute pas les pages.
Métalion propose la méthode suivante pour 2 images.
10 COLOR 15,0,0 (fond d'écran noir)
20 SCREEN 12 (Mode écran 12)
30 SET PAGE 0,0 (Page cible 0,0)
40 BLOAD"IMAGE000.SCC",S (Charge l'image dans la page cible 0,0)
50 SET PAGE 0,1 (Page cible 0,1)
60 BLOAD"IMAGE001.SCC",S (Charge l'image dans la page cible 0,1)
70 VDP(2)=VDP(2)OR32 (Provoque l'alternance entre deux pages)
80 VDP(14)=&B00010001 (indique le temps d'affichage "minimum" des pages Paire ET Impaires)
90 VDP(10)=VDP(10)OR4 (Empêche l'affichage d'une ligne sur deux seulement)
100 GOTO100 (permet le maintient en mode graphique 12 en empêchant le retour en SCREEN0)
Dans la pratique, afin d'atteindre une vitesse d'alternance la plus rapide possible, on peut procéder comme suit:
10 VDP(14)=&B00000001 (valorisé à 1 en lisant les 4 bits de Droite)
20 VDP(2)=VDP(2)OR32
30 VDP(14)=&B00010000 (valorisé à 1 en lisant les 4 bits de Gauche)
40 GOTO 10
Nb: VDP(2)=VDP(2)OR32 provoque l'alternance entre les pages.
Je pense qu'en substance j'ai tout ce dont j'ai besoin
Il me reste à assembler le lecteur avec lequel j'arrive à enfin lire en continu un "fondu d'image sur image".
Il suffit d'appuyer sur une touche pour basculer vers un sous programme qui affichera en alternance l'image déjà visible avec une image identique mais sous un autre angle de sorte à obtenir le rendu [New Vision Technology] avec un effet identique au dinosaure Edité par igal Le 15/11/2013 à 19h36
Dans la pratique seul le Registre VDP(14) est utilise. VDP(10) n'a apparement pas vraiment d'influence sur les resultats: Voir exemple dino2.bas sur:
dino.dsk
Ca fonctionne sur OPENMSX, mais pas sur BlueMSX (qui apparement n'emule le clignotement qu'en mode texte). Je me demande bien a quoi peut servir le bit E0 car a 0 ou a 1 le resultat est exactement pareil.
Le Registre vdp(2) doit etre en modifier, mais SETPAGE 1,1 se charge de faire ces changements donc inutile de le faire soit meme. Edité par Maggoo Le 15/11/2013 à 22h20
dino.dsk
Ca fonctionne sur OPENMSX, mais pas sur BlueMSX (qui apparement n'emule le clignotement qu'en mode texte). Je me demande bien a quoi peut servir le bit E0 car a 0 ou a 1 le resultat est exactement pareil.
Le Registre vdp(2) doit etre en modifier, mais SETPAGE 1,1 se charge de faire ces changements donc inutile de le faire soit meme. Edité par Maggoo Le 15/11/2013 à 22h20
igal :
VDP(14)=&B00010001 spécifie le temps d'affichage d'une image Paire et Impaire
C'est ce qui est dit depuis le début mais je persiste : C'est faux.
VDP(14)=&Hxx (écriture au registre 13)
Le quartet de poids fort défini le temps d'affichage de la page impaire en cours (sans clignotement avec la page paire).
Le quartet de poids faible défini le temps de d'affichage alterné de la page impaire avec la page paire inférieure.
J'espère d'être assez clair cette fois. J'ai même vérifié dans le "MSX-Datapack vol.1" d'ASCII qui lui explique la même chose. Il n'y a plus donc plus de doute.
J'ai mis une petite explication sur MRC :
www.msx.org/forum/msx-talk/general-discussion/incorrect-alternate-display-pages-using-r13
Les timings indiqués dans le Datapack sont différents de ceux du livre "Pratique du MSX2" (parce que 50hz)
EDIT : J'ai ajouté 2 programmes Basic d'explication sur MRC.
Magoo :
Ca fonctionne sur OPENMSX,
Oui mais je n'arrive pas à obtenir quelque chose d'aussi propre que sur mon Turbo R. Peut-être à cause de la fréquence du moniteur.
Magoo :
mais pas sur BlueMSX (qui apparemment n'émule le clignotement qu'en mode texte).
Oui. CocoaMSX est basé sur BlueMSX donc ce n'est pas étonnant. J'ai remarqué quelques fois que BlueMSX n'émule pas comme il le faudrait tous les bits des registres des VDP. Edité par GDX Le 17/11/2013 à 23h34
Salut iGal,
Le registre 13 était plus élaboré que ce qu'on pensait. Essaie le petit programme suivant et tu comprendras.
Le programme teste les touches suivantes :
"1" = Affiche page 0 pendant une courte période puis alterne page 1 et 0 pendant une courte période et recommence ainsi de suite.
"2" = Alterne page 1 et 0 et ainsi de suite.
"3" = Affiche la page 0.
"4" = Alterne page 1 et 0 et ainsi de suite.
"5" = Affiche page 0 pendant une courte période puis affiche page 1 pendant une courte période et recommence ainsi de suite.
"6" = Affiche la page 1.
"7" = Affiche la page 0.
"8" = Affiche la page 1. (paramètres par défaut)
Finalement, tu peux faire aussi ce que tu voulais avec les mêmes paramètres de la ligne 140 (tu peux le voir en pressant la touche "5".)
Mon explication plus haut est trop partielle car il faut tenir compte des 2 quartets du registre 23 et de l'état du bit 2 du registre 9.
Le VDP de ligne 80 est équivalent à SET PAGE 1. je l'ai mis en remarque parce que c'est déjà la page 1 qui est affichée.
PS : Programme à essayer sur un vrai MSX si on ne veut avoir une mauvaise surprise. Edité par GDX Le 18/01/2014 à 14h38
Le registre 13 était plus élaboré que ce qu'on pensait. Essaie le petit programme suivant et tu comprendras.
Code TEXT :
10 COLOR 10,0,0:SCREEN 5 20 ON STOP GOSUB 190:STOP ON 30 PI=3.141592654# 40 CIRCLE(100,100),50,7,PI/2,2*PI 50 LINE(50,100)-(150,100),7:LINE(100,50)-(100,150),7:PAINT(98,98),10,7:PAINT(102,102),6,7:PAINT(98,102),12,7 60 SET PAGE 1,1:CLS 70 CIRCLE(100,100),50,7,PI/4,2*PI-PI/4:LINE(65,65)-(135,135),7:LINE(65,135)-(135,65),7:PAINT (100,98),10,7:PAINT(100,102),6,7:PAINT(98,100),12,7 80 'VDP(2)=&H3F 90 A$=INKEY$ 100 IF A$="1" THEN VDP(14)=&H33:VDP(10)=VDP(10) OR 4 110 IF A$="2" THEN VDP(14)=&H3:VDP(10)=VDP(10) OR 4 120 IF A$="3" THEN VDP(14)=&H30:VDP(10)=VDP(10) OR 4 130 IF A$="4" THEN VDP(14)=&H0:VDP(10)=VDP(10) OR 4 140 IF A$="5" THEN VDP(14)=&H33:VDP(10)=VDP(10) AND 251 150 IF A$="6" THEN VDP(14)=&H3:VDP(10)=VDP(10) AND 251 160 IF A$="7" THEN VDP(14)=&H30:VDP(10)=VDP(10) AND 251 170 IF A$="8" THEN VDP(14)=&H0:VDP(10)=VDP(10) AND 251 180 GOTO 90 190 STOP OFF:VDP(14)=0:VDP(10)=VDP(10) AND 251:END
Le programme teste les touches suivantes :
"1" = Affiche page 0 pendant une courte période puis alterne page 1 et 0 pendant une courte période et recommence ainsi de suite.
"2" = Alterne page 1 et 0 et ainsi de suite.
"3" = Affiche la page 0.
"4" = Alterne page 1 et 0 et ainsi de suite.
"5" = Affiche page 0 pendant une courte période puis affiche page 1 pendant une courte période et recommence ainsi de suite.
"6" = Affiche la page 1.
"7" = Affiche la page 0.
"8" = Affiche la page 1. (paramètres par défaut)
Finalement, tu peux faire aussi ce que tu voulais avec les mêmes paramètres de la ligne 140 (tu peux le voir en pressant la touche "5".)
Mon explication plus haut est trop partielle car il faut tenir compte des 2 quartets du registre 23 et de l'état du bit 2 du registre 9.
Le VDP de ligne 80 est équivalent à SET PAGE 1. je l'ai mis en remarque parce que c'est déjà la page 1 qui est affichée.
PS : Programme à essayer sur un vrai MSX si on ne veut avoir une mauvaise surprise. Edité par GDX Le 18/01/2014 à 14h38
le code basic se compile très bien en .COM avec Vbasic, tout de suite c'est plus convivial
http://www.msx.org/downloads/solid-vbasic
reste à lui passer le nom de fichier en argument pour le transformer en lecteur autonome
oeil gauche fichier.NVT, oeil droit fichier.SCC plus besoin de concaténer
multimente > touche entrée sur le .NVT > on lance le rendu
au lieu de figer les fichiers directement dans le code, une solution à mon avis non
on doit pouvoir remplacer le .SCC par du .MIF moins gourmand en espace disque,
mais ça risque d'être long à charger avec un Z80 (bien 5s par image)
http://www.msx.org/downloads/solid-vbasic
reste à lui passer le nom de fichier en argument pour le transformer en lecteur autonome
oeil gauche fichier.NVT, oeil droit fichier.SCC plus besoin de concaténer
multimente > touche entrée sur le .NVT > on lance le rendu
au lieu de figer les fichiers directement dans le code, une solution à mon avis non
on doit pouvoir remplacer le .SCC par du .MIF moins gourmand en espace disque,
mais ça risque d'être long à charger avec un Z80 (bien 5s par image)
igal
Membre non connecté
Conseiller Municipal
BibiZen :
Très intéressant tout ça
à votre avis c'est possible de concaténer les 2 images screen12 en un fichier .NVT
et d'utiliser un exécutable msxdos configuré avec multimente pour visionner
passer par le chargeur basic à chaque image 3D c'est laborieux
à votre avis c'est possible de concaténer les 2 images screen12 en un fichier .NVT
et d'utiliser un exécutable msxdos configuré avec multimente pour visionner
passer par le chargeur basic à chaque image 3D c'est laborieux
Hello Bibizen: Logiquement, pour faire cela il suffirait de charger les deux sur la page 0 et 1 puis de basculer l'affichage en mode "Entrelacé" et enfin sauvegarder tel que [BSAVE"3D-DYNO.SCC",0,&h????,S pour obtenir une image entrelacée qui donnerait l'illusion d'une image en relief.
J'ai pas testé mais ca devrait le faire je pense
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie