[VG5000] Slideshow semi-graphiques...
Modérateurs : Papy.G, fneck, Carl
- Carl
- Modérateur
- Messages : 13297
- Inscription : 08 avr. 2007 13:21
- Localisation : http://www.doledujura.fr
- Contact :
[VG5000] Slideshow semi-graphiques...
Voici une demo en basic avec un slideshow de 10 images semi-graphiques.
Cela n'aurait pas été possible sans :
- DCVG5K et son simulateur de clavier
- Data Manager for G7400+C7420
- Notepad ++
le fichier K7 pour l'émulateur Le wav pour un vrai VG5000 ps : il faudra que je regarde comment faire pour utiliser le LM pour faire la recopie des datas en mémoire écran, histoire que ce soit plus rapide
Cela n'aurait pas été possible sans :
- DCVG5K et son simulateur de clavier
- Data Manager for G7400+C7420
- Notepad ++
le fichier K7 pour l'émulateur Le wav pour un vrai VG5000 ps : il faudra que je regarde comment faire pour utiliser le LM pour faire la recopie des datas en mémoire écran, histoire que ce soit plus rapide
- Papy.G
- Modérateur
- Messages : 3054
- Inscription : 10 juin 2014 13:40
- Localisation : Haute-Garonne/Gers
Re: [VG5000] Slideshow semi-graphiques...
Avec 8ko de Vram, tu ne peux précharger que quatre pages écran en semi-graphiques, si la machine supporte le mode 16 bits fixe (càd si le basic ne fout pas tout en l'air).
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Demandez-en plus, ou faites-le vous-même.
- Mokona
- Messages : 1042
- Inscription : 17 déc. 2016 22:01
- Localisation : Nord Est des Yvelines
- Contact :
Re: [VG5000] Slideshow semi-graphiques...
J'ai essayé avec :
Ce qui donne
J'ai placé ça en 0x7000 puis call 0x7000... l'affichage est instantané pour la première image.
Reste à adapter pour aller chercher une autre valeur que 8001 et une autre taille que 07D0
Code : Tout sélectionner
push hl
push de
push bc
ld bc, #0x7d0
ld hl, #0x8001
ld de, #0x4000
ldir
pop bc
pop de
pop hl
ret
Code : Tout sélectionner
E5
D5
C5
01 D0 07
21 01 80
11 00 40
C1
D1
E1
C9
Reste à adapter pour aller chercher une autre valeur que 8001 et une autre taille que 07D0
- Carl
- Modérateur
- Messages : 13297
- Inscription : 08 avr. 2007 13:21
- Localisation : http://www.doledujura.fr
- Contact :
Re: [VG5000] Slideshow semi-graphiques...
Merci mokona, je vais tenter de comprendre ton code car je n'y connais pas grand chose mais j'ai bien envie d'apprendre...
Carl
Carl
- Mokona
- Messages : 1042
- Inscription : 17 déc. 2016 22:01
- Localisation : Nord Est des Yvelines
- Contact :
Re: [VG5000] Slideshow semi-graphiques...
L'instruction "ldir" est pratique car elle s'occupe de copier des morceaux de mémoire.
L'adresse du début de la source de copie est stockée dans le registre HL.
L'adresse du début de la destination de copie est stockée dans le registre DE.
Et la taille à copier est stockée dans le registre BC.
Les push et pop sont là pour préserver ce qu'il y avait avant le call (je ne suis pas certain que ça soit entièrement nécessaire, cela dépent de l'implémentation de CALL dans le Basic VG5000, mais ça ne fait pas de mal).
Et RET termine la procédure.
L'adresse du début de la source de copie est stockée dans le registre HL.
L'adresse du début de la destination de copie est stockée dans le registre DE.
Et la taille à copier est stockée dans le registre BC.
Les push et pop sont là pour préserver ce qu'il y avait avant le call (je ne suis pas certain que ça soit entièrement nécessaire, cela dépent de l'implémentation de CALL dans le Basic VG5000, mais ça ne fait pas de mal).
Et RET termine la procédure.
- Carl
- Modérateur
- Messages : 13297
- Inscription : 08 avr. 2007 13:21
- Localisation : http://www.doledujura.fr
- Contact :
Re: [VG5000] Slideshow semi-graphiques...
Merci pour le tuto !, en suivant ton code et tes commentaires, il manque EDBO (LDIR)...
Je l'ai testé en C000 soit CALL -&"4000", oui c'est super rapide !
Je vais adapté ta routine car les images n'ont pas systématiquement une taille de 2000 octets.
Carl
Je l'ai testé en C000 soit CALL -&"4000", oui c'est super rapide !
Je vais adapté ta routine car les images n'ont pas systématiquement une taille de 2000 octets.
Carl
- Mokona
- Messages : 1042
- Inscription : 17 déc. 2016 22:01
- Localisation : Nord Est des Yvelines
- Contact :
Re: [VG5000] Slideshow semi-graphiques...
Ah oui en effet, j'ai loupé une ligne en recopiant.
Vivement la prochaine version.
Vivement la prochaine version.
- Carl
- Modérateur
- Messages : 13297
- Inscription : 08 avr. 2007 13:21
- Localisation : http://www.doledujura.fr
- Contact :
Re: [VG5000] Slideshow semi-graphiques...
La version rapide....
Code : Tout sélectionner
1 INIT 0,0
10 CLEAR 180,&"6FFF"
15 DATA E5,D5,C5,01,31,07,21,01,80,11,00,40,ED,B0,C1,D1,E1,C9
16 DATA E5,D5,C5,01,30,07,21,32,87,11,00,40,ED,B0,C1,D1,E1,C9
17 DATA E5,D5,C5,01,30,07,21,63,8E,11,00,40,ED,B0,C1,D1,E1,C9
18 DATA E5,D5,C5,01,30,07,21,94,95,11,00,40,ED,B0,C1,D1,E1,C9
19 DATA E5,D5,C5,01,30,07,21,C5,9C,11,00,40,ED,B0,C1,D1,E1,C9
20 DATA E5,D5,C5,01,30,07,21,F6,A3,11,00,40,ED,B0,C1,D1,E1,C9
21 DATA E5,D5,C5,01,30,07,21,27,AB,11,00,40,ED,B0,C1,D1,E1,C9
22 DATA E5,D5,C5,01,30,07,21,58,B2,11,00,40,ED,B0,C1,D1,E1,C9
23 DATA E5,D5,C5,01,30,07,21,89,B9,11,00,40,ED,B0,C1,D1,E1,C9
24 DATA E5,D5,C5,01,30,07,21,BA,C0,11,00,40,ED,B0,C1,D1,E1,C9
30 FOR T=0 TO 179
35 READ A$:A$="&"+CHR$(34)+A$+CHR$(34):A=VAL(A$)
40 POKE 28672+T,A
45 NEXT T
8000 CALL &"7000"
8001 DISPLAY :FOR Y=0 TO 2000 : NEXT Y
8002 CALL &"7012"
8003 DISPLAY :FOR Y=0 TO 2000 : NEXT Y
8004 CALL &"7024"
8005 DISPLAY :FOR Y=0 TO 2000 : NEXT Y
8006 CALL &"7036"
8007 DISPLAY :FOR Y=0 TO 2000 : NEXT Y
8008 CALL &"7048"
8009 DISPLAY :FOR Y=0 TO 2000 : NEXT Y
8010 CALL &"705A"
8011 DISPLAY :FOR Y=0 TO 2000 : NEXT Y
8012 CALL &"706C"
8013 DISPLAY :FOR Y=0 TO 2000 : NEXT Y
8014 CALL &"707E"
8015 DISPLAY :FOR Y=0 TO 2000 : NEXT Y
8016 CALL &"7090"
8017 DISPLAY :FOR Y=0 TO 2000 : NEXT Y
8018 CALL &"70A2"
8019 DISPLAY :FOR Y=0 TO 2000 : NEXT Y
9000 GOTO 8000
- Mokona
- Messages : 1042
- Inscription : 17 déc. 2016 22:01
- Localisation : Nord Est des Yvelines
- Contact :
Re: [VG5000] Slideshow semi-graphiques...
Beaucoup plus rapide !
Du coup, j'ai joué un peu avec le programme et voici une autre version (sans le préambule de chargement de pics et de présentation) :
Les différences sont :
- le code assembleur n'est là qu'une seule fois
- la lecture des données s'arrête au mot FIN, cela évite de compter la taille du programme ASM et de se tromper
- j'ai ajouté un couple EI/DI autour de la routine assembleur, j'avais en effet l'impression (sous émulateur) que le rafraîchissement avait lieu parfois pendant l'affichage
- les données des images sont injectées dans le programme en assembleur
Cependant, j'ai deux soucis, peut-être liés, sur l'émulateur. Je n'ai pas essayé sur la vraie machine.
- la boucle d'attente en 8210 n'a pas l'air de faire quoi que ce soit. Le slideshow avance a grande vitesse
- au bout des quelques secondes de ce tournoiement vertigineux, l'émulateur se bloque et ne réagit plus, je suis obligé de forcer sa fermeture.
À noter que de manière générale, lorsque je démarre l'émulateur, il tourne trop vite. La musique de démarrage est trop rapide. Puis, au bout d'un moment, ça se stabilise. D'ailleurs, dans la version initiale du slideshow, malgré une boucle d'attente qui a l'air d'être prise en compte, les images défilent moins vite au bout de quelques temps.
Peut-être est-ce parce que je lance l'émulateur à travers Wine. Aucune idée.
Du coup, j'ai joué un peu avec le programme et voici une autre version (sans le préambule de chargement de pics et de présentation) :
Code : Tout sélectionner
15 DATA F3,E5,D5,C5,01,31,07,21,01,80,11,00,40,ED,B0,C1,D1,E1,FB,C9
16 DATA FIN
20 DATA 31,07,01,80,30,07,32,87,30,07,63,8E,30,07,94,95
21 DATA 30,07,C5,9C,30,07,F6,A3,30,07,27,AB,30,07,58,B2
22 DATA 30,07,89,B9,30,07,BA,C0
23 DATA FIN
30 RESTORE 15
35 ASM=28672
40 GOSUB 9000:IF A=-1 THEN 100
65 POKE ASM,A:ASM=ASM+1
70 GOTO 40
100 REM ASM OK
8000 RESTORE 20
8010 GOSUB 9000:IF A=-1 THEN 8000
8020 ASM=28672:POKE ASM+5,A
8030 GOSUB 9000:POKE ASM+6,A
8040 GOSUB 9000:POKE ASM+8,A
8050 GOSUB 9000:POKE ASM+9,A
8200 CALL &"7000"
8210 DISPLAY :FOR Y=0 TO 2000:NEXT Y
8220 GOTO 8010
9000 READ A$:IF A$="FIN" THEN A=-1:RETURN
9010 A$="&"+CHR$(34)+A$+CHR$(34):A=VAL(A$)
9020 RETURN
- le code assembleur n'est là qu'une seule fois
- la lecture des données s'arrête au mot FIN, cela évite de compter la taille du programme ASM et de se tromper
- j'ai ajouté un couple EI/DI autour de la routine assembleur, j'avais en effet l'impression (sous émulateur) que le rafraîchissement avait lieu parfois pendant l'affichage
- les données des images sont injectées dans le programme en assembleur
Cependant, j'ai deux soucis, peut-être liés, sur l'émulateur. Je n'ai pas essayé sur la vraie machine.
- la boucle d'attente en 8210 n'a pas l'air de faire quoi que ce soit. Le slideshow avance a grande vitesse
- au bout des quelques secondes de ce tournoiement vertigineux, l'émulateur se bloque et ne réagit plus, je suis obligé de forcer sa fermeture.
À noter que de manière générale, lorsque je démarre l'émulateur, il tourne trop vite. La musique de démarrage est trop rapide. Puis, au bout d'un moment, ça se stabilise. D'ailleurs, dans la version initiale du slideshow, malgré une boucle d'attente qui a l'air d'être prise en compte, les images défilent moins vite au bout de quelques temps.
Peut-être est-ce parce que je lance l'émulateur à travers Wine. Aucune idée.
- Carl
- Modérateur
- Messages : 13297
- Inscription : 08 avr. 2007 13:21
- Localisation : http://www.doledujura.fr
- Contact :
Re: [VG5000] Slideshow semi-graphiques...
merci Mokona pour cette autre version.
Je n'ai pas de soucis avec l'émulateur sous Windows, la boucle d'attente est opérationnelle...
Carl
Je n'ai pas de soucis avec l'émulateur sous Windows, la boucle d'attente est opérationnelle...
Carl
- Mokona
- Messages : 1042
- Inscription : 17 déc. 2016 22:01
- Localisation : Nord Est des Yvelines
- Contact :
Re: [VG5000] Slideshow semi-graphiques...
C'est probablement Wine alors qui a ses limites.
Re: [VG5000] Slideshow semi-graphiques...
Sympa le slideshow sur VG5000, merci Carl et Mokona
Re: [VG5000] Slideshow semi-graphiques...
Carl qui se met à l'assembleur Z80, l'année commence bien . Bricoler l'affichage d'images est un bon moyen d'appréhender les fondamentaux de l'assembleur avec quelque chose au résultat bien concret. On part d'une simple recopie d'une zone mémoire (ldir) pour ensuite passer à des affichage plus complexes (effets de lignes par exemple), il y a de quoi s'amuser .
Bravo pour le slide, les images sont plutôt réussies, même si par endroit, il y a de petits artefacts. Je suppose que l'outil que tu as utilisé ne permet pas de faire des retouches une fois la conversion faite ?
Sinon, il faudrait quand même rajouter un petit bout de code dans le loader : la détection des 32ko supplémentaires. Sur un VG5000 "stock", je suppose que le chargement doit se planter sur le fichier "PICS".
Bravo pour le slide, les images sont plutôt réussies, même si par endroit, il y a de petits artefacts. Je suppose que l'outil que tu as utilisé ne permet pas de faire des retouches une fois la conversion faite ?
Sinon, il faudrait quand même rajouter un petit bout de code dans le loader : la détection des 32ko supplémentaires. Sur un VG5000 "stock", je suppose que le chargement doit se planter sur le fichier "PICS".
- Carl
- Modérateur
- Messages : 13297
- Inscription : 08 avr. 2007 13:21
- Localisation : http://www.doledujura.fr
- Contact :
Re: [VG5000] Slideshow semi-graphiques...
Salut Hervé,
Je débute dans ce domaine et cela m'interresse mais il y a du boulot...
j'ai déjà lu les sources de tes programmes et l'aide de Mokona sont le bienvenue
Pour les images, j'aurai pu faire les retouches, pour certaines c'est le cas...mais j'étais pressé...
Carl
Je débute dans ce domaine et cela m'interresse mais il y a du boulot...
j'ai déjà lu les sources de tes programmes et l'aide de Mokona sont le bienvenue
Pour les images, j'aurai pu faire les retouches, pour certaines c'est le cas...mais j'étais pressé...
Carl