Nouveau jeu VG5000 : MABOOL

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

jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: Nouveau jeu VG5000 : MABOOL

Message par jasz »

Dans mes souvenirs ce qui suit le REM sur tous les BASIC n'est pas interprété.

Donc que fait ce petit bout de code en ligne 291 :?:
REM THEN EGU8,2
Markerror
Messages : 2121
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: Nouveau jeu VG5000 : MABOOL

Message par Markerror »

Le bout de code ne fait effectivement absolument rien. Je l'ai laissé pour savoir ce que faisant la ligne 291 avant correction.
Dans une version "propre", elle ne devrait pas être là car ça utilise évidemment inutilement de la mémoire.

Je viens de trouver une micro amélioration de la routine. Les commandes gérant les couleurs des modes texte et graphique peuvent ne pas admettre de paramètre. Dans ce cas, on se retrouve pour le mode texte avec des caractères blancs, et pour le mode graphique avec des caractères blancs sur fond noir.

Ca tombe bien, l'affichage du pourcentage d'avancement de l'affichage du tableau utilise cette couleur ! Du coup, on peut retirer changer ET7 en ET en ligne 450. Un octet de gagné et un peu de temps machine préservé !
Au passage, on vire deux parenthèses inutiles, la résolution du calcul étant dans ce cas de figure séquentiel (division puis multiplication).
Au final on a une belle ligne comme ceci :

450 MX=MX+2:P=P+1:ET:CURSORX27:CURSORY24:PRINT INT(100/160*P)" %";
Baptiste
Messages : 121
Inscription : 11 mars 2013 15:17
Localisation : Vernouillet (78)

Re: Nouveau jeu VG5000 : MABOOL

Message par Baptiste »

Bonjour à tous,

J'ai posté une version 2 (R2) sur le github qui reprend quelques optimisations que vous avez indiqué :
- Remplacé les Chr$ par le caractère dès que possible
- noms des variables plus courts

J'ai également "bricolé" un processus de test de présence du joystick 1. C'est pas fiable à 100%, ce sera à tester sur une vraie machine avec et sans joystick branché.

Voili, voilou...
Rien ne sert de courir, en plus tu risques de tomber.
Markerror
Messages : 2121
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: Nouveau jeu VG5000 : MABOOL

Message par Markerror »

Bonjour,

Le principe du test de la présence de la manette est bon. Après, je suis pas sûr que la valeur de H soit bonne, car la remontée d'une valeur différente de zéro n'est pas systématique (à tester sur un vrai VG 5000). A mon avis, 5 devrait être suffisant.

La version avec les caractères remplaçant les CHR$() semble un peu plus rapide, mais ça reste lent par rapport à l'usage de la commande ON xx GOTO.

Petite amélioration visuelle possible, mettre un TX 0 avant de charger le deuxième fichier. On ne verra ainsi pas le texte de chargement qui détonne un peu par rapport à ton message utilisant une autre fonte.
Baptiste
Messages : 121
Inscription : 11 mars 2013 15:17
Localisation : Vernouillet (78)

Re: Nouveau jeu VG5000 : MABOOL

Message par Baptiste »

Bonjour,

Voici ma dernière modification. J'ai tenté d'intégrer On ... Goto.

Code : Tout sélectionner

30Z0=S(R):EgK,0,0:CursorXP:CursorYQ
31IfZ0=0then48
32OnZ0Goto34,35,36,37,38,39,40,41,42,43,44,45,46,47
33Goto48
34?" !"+N$+"FG":Goto48
35?Chr$(34)+Chr$(34)+N$+Chr$(34)+Chr$(34):Goto48
36?"#$"+N$+"HI":Goto48
37?"%&"+N$+"JK":E(C)=P:E(C+1)=Q:E(C+2)=R:C=C+3:Goto48
38?"'("+N$+"LM":Goto48
39?")*"+N$+"NO":X=P:Y=Q:B=R:Goto48
40?"-."+N$+"RS":Goto48
41?"23"+N$+"XY":T=P:U=Q:A=R:S(A)=2:Goto48
42?"<="+N$+"bc":F=F+1:Goto48
43?"@A"+N$+"fg":O=O+1:Goto48
44?"DE"+N$+"jk":Goto48
45?"lm"+N$+"lm":G=G+1:J(G)=R:H(G)=P:I(G)=Q:Goto48
46?"nn"+N$+"rr":G=G+1:J(G)=R:H(G)=P:I(G)=Q:Goto48
47?"pq"+N$+"tu"
48P=P+2:R=R+1:Et7,0,0:CursorX10:CursorY24:?"LOADING STAGE..."+Str$(Int((100/160)*R))+" %";:H8=H8+1
49IfH8=17ThenQ=Q+2:P=4:H8=1
50IfR<160then30
Malheureusement, il semblerait que cela ne fonctionne pas. Est-ce que la variable Z0 passée à On ... Goto doit forcément être ordonnée (1,2,3,4...) ou est-ce que l'on peut l'ordonner comme on veut de manière croissante (4 (appel du premier saut),8 (appel du second),17(appel du 3ème)...) ?

Bon, quelque soit la manière dont Z0 est ordonnée, le On Goto ne passe pas dans mes lignes. J'ai dû mal faire un truc.
Rien ne sert de courir, en plus tu risques de tomber.
Markerror
Messages : 2121
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: Nouveau jeu VG5000 : MABOOL

Message par Markerror »

Bonjour Baptiste,

Le ON z0 GOSUB part du principe que le premier saut correspond à une valeur de la variable z0 à 1 et que les sauts suivants son incrémentés de 1.

Comme les valeurs de z0 que tu utilises ne se suivent pas toutes, il faut rajouter des sauts qui ne servent à rien (voir mon bout de code : la ligne 390 par exemple est utilisée 4 fois, pour les valeurs 12 à 16).

291 IFMV=0 THEN 450: REM THEN EGU8,2:PRINT"oo"I4$"oo":GOTO 450
292 ON MV GOTO 310,320,330,340,350,360,370,370,380,380,380,390,390,390,390,390,400,400,410,410,420,430
293 GOTO 440

Ces sauts bidons n'ont aucune importance car de toute manière, ils ne seront pas utilisés par ton programme.

Reste le cas particulier de la valeur z0=0 qu'on doit traiter par un IF avant le ON Z0 GOTO (ce que tu as fait dans ton code).
Le dernier test (z0=41) est lui aussi traité par un IF car le nombre de sauts bidons à rajouter serait trop important.
Avatar de l’utilisateur
hlide
Messages : 3456
Inscription : 29 nov. 2017 10:23

Re: Nouveau jeu VG5000 : MABOOL

Message par hlide »

Parmi les optimisations, c'est prévu de se débarrasser des '+' ?
comme transformer

Code : Tout sélectionner

36?"#$"+N$+"HI":Goto48
en

Code : Tout sélectionner

36?"#$"N$"HI":Goto48
ou ça ne fonctionne pas ?
Baptiste
Messages : 121
Inscription : 11 mars 2013 15:17
Localisation : Vernouillet (78)

Re: Nouveau jeu VG5000 : MABOOL

Message par Baptiste »

Mmm... C'est étrange car si je fixe ma variable Z0 à 1, le On.. Goto ne passe même pas dans le premier saut.
Rien ne sert de courir, en plus tu risques de tomber.
Baptiste
Messages : 121
Inscription : 11 mars 2013 15:17
Localisation : Vernouillet (78)

Re: Nouveau jeu VG5000 : MABOOL

Message par Baptiste »

hlide a écrit : 31 juil. 2022 12:17 Parmi les optimisations, c'est prévu de se débarrasser des '+' ?
comme transformer

Code : Tout sélectionner

36?"#$"+N$+"HI":Goto48
en

Code : Tout sélectionner

36?"#$"N$"HI":Goto48
ou ça ne fonctionne pas ?
Cela fonctionne avec la commande Print, mais pas avec la définition de variable

Code : Tout sélectionner

Print C$","D$ => fonctionne
A$=C$","D$ => Provoque une erreur
Rien ne sert de courir, en plus tu risques de tomber.
Markerror
Messages : 2121
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: Nouveau jeu VG5000 : MABOOL

Message par Markerror »

Bon, je ne comprends pas trop tes problèmes avec ON .. GOTO.
Ce petit exemple montre bien le fonctionnement. Si ça ne fait pas le boulot correctement, c'est qu'il doit y avoir un
facteur externe qui modifie la valeur de Z0 avant le test.

10 Z0=1
20 ON Z0 GOTO 100,200,300,400
21 PRINT "Aucune valeur prise en compte":END
100 PRINT "1 Youpi":END
200 PRINT "2 Youpi":END
300 PRINT "3 Youpi":END
400 PRINT "4 Youpi":END

L'optimisation consistant à supprimer les + ne fonctionne effectivement qu'avec la commande PRINT.

J'ai l'impression que tu as trouvé un bug dans le Basic, car si je recopie la ligne 32 directement dans Dcvg5k, j'ai un message : OPERANDE MANQUANTE.

32 ON Z0 GOTO 34,35,36,37,38,39,40,41,42,43,44,45,46,47,48

Si je change l'indentation des lignes, ça passe...

32 ON Z0 GOTO 340,350,360,370,380,390,400,410,420,430,440,450,460,470
Baptiste
Messages : 121
Inscription : 11 mars 2013 15:17
Localisation : Vernouillet (78)

Re: Nouveau jeu VG5000 : MABOOL

Message par Baptiste »

Markerror tu as raison !

J'ai changé mes numéros de lignes en les descendant beaucoup plus loin dans mon code, et ça fonctionne!
Rien ne sert de courir, en plus tu risques de tomber.
Avatar de l’utilisateur
hlide
Messages : 3456
Inscription : 29 nov. 2017 10:23

Re: Nouveau jeu VG5000 : MABOOL

Message par hlide »

Euh, "?" ce n'est pas un "PRINT" ? où vous voyez que je parlais de définition de variable ???

Si je relis le lien donné :

on a

Code : Tout sélectionner

PRINT"texte"A$;B$;C$
que l'on peut écrire en

Code : Tout sélectionner

PRINT"texte"A$B$C$
.

Ma question est si je fais

Code : Tout sélectionner

PRINT"texte"+A$+B$+C$
, est-ce différent de la version avec ";" au lieu de "+" et donc sans ";" ? est-ce qu'il y a un intérêt à concaténer des chaînes pour faire un seul PRINT ?
Markerror
Messages : 2121
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: Nouveau jeu VG5000 : MABOOL

Message par Markerror »

Les trois syntaxes sont valides pour un PRINT. La dernière est clairement moins lisible mais plus économe et en théorie plus rapide (pas d'analyse du séparateur à faire par l'interpréteur Basic. Je ne sais pas s'il y a une différence de vitesse entre les lignes avec des ; par rapport à celles avec des +.
Il faudrait savoir si l'interpréteur test le ; avant le + ou pas. Pour le savoir il faudrait fouiller dans la ROM Basic (Mokona à l'aide !) ou à défaut bricoler un exemple prenant beaucoup de temps machine.

1 A$="A":b$="B":c$="C"
10 PRINT "texte";a$;b$;c$
20 PRINT "texte"+a$+b$+c$
30 PRINT "texte"a$b$c$
Baptiste
Messages : 121
Inscription : 11 mars 2013 15:17
Localisation : Vernouillet (78)

Re: Nouveau jeu VG5000 : MABOOL

Message par Baptiste »

hlide a écrit : 31 juil. 2022 18:35 Euh, "?" ce n'est pas un "PRINT" ? où vous voyez que je parlais de définition de variable ???
J'avais bien compris votre message. C'était uniquement un supplément d'information en passant...
Dans la logique, moins l'interpréteur BASIC à de choses à gérer, plus l'exécution du code devrait être améliorée. Après, cela reste de l'interprétation de code, donc tout est relatif. Cela peut ne rien accélérer du tout...
Rien ne sert de courir, en plus tu risques de tomber.
Baptiste
Messages : 121
Inscription : 11 mars 2013 15:17
Localisation : Vernouillet (78)

Re: Nouveau jeu VG5000 : MABOOL

Message par Baptiste »

Une nouvelle version (R3) est disponible sur le github.

- Suppression de l'affichage de "main trouvé" lors du CLOAD après le titre
- Suppression des "+" inutiles dans les PRINT
- Modification de la boucle de constructions des tableaux avec un On .. Goto
- L'affichage des tableaux est accéléré

https://github.com/FreeTalent-BB/mabool-vg5000

On est très proche d'une version finale ;)

Bon test.
Rien ne sert de courir, en plus tu risques de tomber.
Répondre