[VG5000] Slideshow semi-graphiques...

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Répondre
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13253
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

[VG5000] Slideshow semi-graphiques...

Message par Carl »

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 :wink:
- Data Manager for G7400+C7420
- Notepad ++

slideshow.gif
slideshow.gif (50.07 Kio) Consulté 5076 fois
le fichier K7 pour l'émulateur
SlideshowVDT.7z
(6.71 Kio) Téléchargé 147 fois
Le wav pour un vrai VG5000
Wav_SlideshowVDT.7z
(43.35 Kio) Téléchargé 142 fois
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 :roll:
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3047
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: [VG5000] Slideshow semi-graphiques...

Message par Papy.G »

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.
Avatar de l’utilisateur
Mokona
Messages : 1040
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: [VG5000] Slideshow semi-graphiques...

Message par Mokona »

J'ai essayé avec :

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
Ce qui donne

Code : Tout sélectionner

E5
D5
C5
01 D0 07
21 01 80
11 00 40
C1
D1
E1
C9
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
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13253
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: [VG5000] Slideshow semi-graphiques...

Message par Carl »

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
Avatar de l’utilisateur
Mokona
Messages : 1040
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: [VG5000] Slideshow semi-graphiques...

Message par Mokona »

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.
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13253
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: [VG5000] Slideshow semi-graphiques...

Message par Carl »

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
Avatar de l’utilisateur
Mokona
Messages : 1040
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: [VG5000] Slideshow semi-graphiques...

Message par Mokona »

Ah oui en effet, j'ai loupé une ligne en recopiant.

Vivement la prochaine version.
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13253
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: [VG5000] Slideshow semi-graphiques...

Message par Carl »

La version rapide....
clip0002.gif
clip0002.gif (69.75 Kio) Consulté 4974 fois
SlideshowASM.7z
(6.87 Kio) Téléchargé 171 fois

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
Avatar de l’utilisateur
Mokona
Messages : 1040
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: [VG5000] Slideshow semi-graphiques...

Message par Mokona »

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

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
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.
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13253
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: [VG5000] Slideshow semi-graphiques...

Message par Carl »

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
Avatar de l’utilisateur
Mokona
Messages : 1040
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: [VG5000] Slideshow semi-graphiques...

Message par Mokona »

C'est probablement Wine alors qui a ses limites.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [VG5000] Slideshow semi-graphiques...

Message par 6502man »

Sympa le slideshow sur VG5000, merci Carl et Mokona :D
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Markerror
Messages : 2121
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: [VG5000] Slideshow semi-graphiques...

Message par Markerror »

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".
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13253
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: [VG5000] Slideshow semi-graphiques...

Message par Carl »

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 8)

Pour les images, j'aurai pu faire les retouches, pour certaines c'est le cas...mais j'étais pressé...

Carl
Répondre