Nouveau jeu pour Thomson : 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 pour Thomson : MABOOL

Message par jasz »

J'ai le même avis que monoka, mais un peu de couleur ne serait pas mal.

Pour revenir au programme, un rapide coup d’œil permet de remarquer de nombreuses actions inutiles comme par exemple

Code : Tout sélectionner

149 IFR>160THEN153
150 READH8,Z0:FORI9A=0TOH8-1:S(R+I9A)=Z0:NEXTI9A
151 R=R+H8:IFR>160THEN153
152 GOTO150:GOTO149
153 RETURN
En changeant IF R<160 THEN 150 de la ligne 151, on peut supprimer les lignes 149 et 152 devenues inutiles. C'est un peu de temps de gagné ;)
Zebulon
Messages : 2787
Inscription : 02 nov. 2020 14:03

Re: Nouveau jeu pour Thomson : MABOOL

Message par Zebulon »

Surtout le GOTO 149 qui suit le GOTO 150 doit rarement être exécuté. Mais bon c'est un peu facile de casser du bois. Je préfère saluer la motivation de tous les développeurs qui consacrent leur temps libre à faire revivre nos vieilles machines. Que les productions puissent être améliorées c'est une chose mais elles ont le mérite d'exister.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Nouveau jeu pour Thomson : MABOOL

Message par __sam__ »

Le ”goto 150” suivi par un ”goto 149” qui ne s’exécutera jamais est étrange. Le nom des variables aussi est curieux. On dirait du basic généré (le github confirme), mais les deux goto consécutifs font penser à un bug.

Oui je confirme un bug ou une typo dans le code:
https://github.com/FreeTalent-BB/mabool ... pt#L32-L33
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Nouveau jeu pour Thomson : MABOOL

Message par Daniel »

On dirait que tout a été fait pour favoriser la lenteur d'exécution. L'utilisation de réels (déjà signalée), mais aussi l'appel fréquent de la routine 381. Elle n'a aucun intérêt et se trouve tout en fin de programme, l'accès ne peut pas être plus lent. Elle ralentit considérablement l'exécution.

On peut aussi signaler l'insertion de grosses quantités de DATA en début de code, qui ralentit l'accès aux lignes suivantes. La bonne pratique est de mettre les DATA après les instructions exécutables.

Et cette suite de dix IF en 203-212 qui pourrait être remplacée par ON ... GOTO ...

Et l'utilisation abusive de la modification des chaînes de caractères, qui provoque périodiquement une réorganisation complète de tout l'espace chaînes.

Bref ce programme écrit avec le souci de la performance pourrait être beaucoup, beaucoup plus rapide. Et ne parlons pas de la structure des données, tellement mauvaise que l'affichage d'un tableau est d'une lenteur affligeante. C'est vraiment dommage d'avoir gâché un bon jeu par une si mauvaise programmation. On peut se le permettre avec un processeur 64 bits à quatre cœurs et une fréquence de plusieurs GHz, pas avec un MO5.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: Nouveau jeu pour Thomson : MABOOL

Message par hlide »

Il me semble que c'est du code généré en BASIC Thomson à partir d'une BASIC moderne. Il se peut aussi que la transformation ne soit pas optimale et ait son lot de bug. Baptiste ne sois pas découragé cependant par les commentaires !
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Nouveau jeu pour Thomson : MABOOL

Message par Daniel »

Avec un 6809 à 1 MHz, tous les bons jeux sont programmés en assembleur.
Programmer en BASIC donne, c'est bien connu, des programmes très lents.
Programmer avec un générateur de BASIC est encore pire.

Chercher à rendre un programme BASIC compatible avec un grand nombre de machines est l'assurance que le programme sera le plus mauvais possible pour les machines les plus évoluées. On arrivera aux performances de l'Alice 4K avec le TO9+. C'est un nivellement par le bas. Dommage...

Les méthodes modernes utilisées pour le développement de programmes portables pour les ordinateurs actuels ne sont pas applicables aux huit bits des années 1980. Avec ces derniers la connaissance de la machine est indispensable, on ne peut pas en faire abstraction.
Daniel
L'obstacle augmente mon ardeur.
gotcha
Messages : 2758
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: Nouveau jeu pour Thomson : MABOOL

Message par gotcha »

Mokona a écrit : 04 sept. 2022 20:17
Daniel a écrit : 03 sept. 2022 15:29 Le niveau 8 original (monochrome) :
Le niveau 8 modifié (couleurs) :
C'est là qu'intervient le goût de chacun. Je préfère de beaucoup la version monochrome.
J'ai eu la même impression aussi :-) La version monochrome a un coté sympa.
Amstrad CPC et Goupil power :mrgreen:
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Nouveau jeu pour Thomson : MABOOL

Message par Daniel »

Le fichier .sd pour SDDRIVE (TO et MO):
mabool_motosd.zip
(33.88 Kio) Téléchargé 57 fois
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: Nouveau jeu pour Thomson : MABOOL

Message par hlide »

Daniel a écrit : 05 sept. 2022 11:58 Avec un 6809 à 1 MHz, tous les bons jeux sont programmés en assembleur.
Programmer en BASIC donne, c'est bien connu, des programmes très lents.
Programmer avec un générateur de BASIC est encore pire.
A ce que je sache, Baptiste ne sait pas programmer en assembleur et probablement encore moins en 6809. Et je ne crois pas que le jeu était à l'origine pour Thomson. On fait avec.
jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: Nouveau jeu pour Thomson : MABOOL

Message par jasz »

Daniel a écrit : 05 sept. 2022 11:58 Avec ces derniers la connaissance de la machine est indispensable, on ne peut pas en faire abstraction.
On parle plus des connaissances en BASIC. Souviens toi le magazine TILT publiait un tableau de conversion dans ses numéro HS spécial listing pour adapter certains programmes. Ici on est plus sur des erreurs de programmation (peu importe la raison et la machine). Une GOTO150 suivi d'un GOTO149 donnera le même resultat sur VG5K, CPC ou C64 ;)
hlide a écrit : 05 sept. 2022 15:43 A ce que je sache, Baptiste ne sait pas programmer en assembleur
On n'a jamais parlé d"assembleur ;)
Zebulon a écrit : 05 sept. 2022 09:38 Mais bon c'est un peu facile de casser du bois. (...) Que les productions puissent être améliorées c'est une chose mais elles ont le mérite d'exister.
On met simplement le doigt sur des étourderies qui auraient pu être évitées mais qui ralentissent de façon significative le programme ;)

Et j'en ai relevé d'autres. Je vais juste complété mon premier post avec cet autre exemple

Code : Tout sélectionner

158 IFZ0=0THEN161
159 ON Z0 GOTO 298,299,300,301,302,303,304,305,306,307,308,309,310,311
160 GOTO161
161 P=P+2:R=R+1:J0B=J0B+1
La ligne 158 est inutile car remplacé par le goto161 en ligne 160 qui lui aussi inutile car c'est la ligne qui suit. :lol:
jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: Nouveau jeu pour Thomson : MABOOL

Message par jasz »

__sam__ a écrit : 05 sept. 2022 09:40 Le ”goto 150” suivi par un ”goto 149” qui ne s’exécutera jamais est étrange.
C'est dans son programme source

Code : Tout sélectionner

#label read_data1
	If !MAP_POS > 160 Then Goto @stop_read
	
#label read_data2
	Read !NUM_TILES,!TILE_VALUE/
	For !FOR_VAR = 0 To !NUM_TILES - 1 : !MAP( !MAP_POS + !FOR_VAR ) = !TILE_VALUE : Next !FOR_VAR
	!MAP_POS = !MAP_POS + !NUM_TILES/

	If !MAP_POS > 160 Then Goto @stop_read
	Goto @read_data2/
	Goto @read_data1
On y retrouve les mêmes inutilités genre #label read_data1 et les deux GO TO
Et replacer If !MAP_POS < 160 Then Goto @read_data2
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Nouveau jeu pour Thomson : MABOOL

Message par __sam__ »

jasz a écrit : 05 sept. 2022 16:29
__sam__ a écrit : 05 sept. 2022 09:40 Le ”goto 150” suivi par un ”goto 149” qui ne s’exécutera jamais est étrange.
C'est dans son programme source
Oui c’est ce que j’ai déjà indiqué plus haut à la fin du message que tu cites! Besoin de lunettes ? :shock: :wink:
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: Nouveau jeu pour Thomson : MABOOL

Message par hlide »

jasz a écrit : 05 sept. 2022 15:52On n'a jamais parlé d"assembleur ;)
Je répond à ça : "Avec un 6809 à 1 MHz, tous les bons jeux sont programmés en assembleur." Rien de plus.
jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: Nouveau jeu pour Thomson : MABOOL

Message par jasz »

__sam__ a écrit : 05 sept. 2022 18:06 Besoin de lunettes ? :shock: :wink:
Nop! Tu parles de bug ou de typo. Ce qui n'est pas le cas ;)
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Nouveau jeu pour Thomson : MABOOL

Message par __sam__ »

Oh c’est pareil. Je penche pour un truc qui a sauté entre les 2 lignes à un moment donné du code; bref une typo ayant eu lieu bien avant la mise sous Github qui est très récente (1st commit le 1er Aout dernier) alors que l’original date des années 90.

Parmi les autres typo, le / en fin de label ou nom de variable m’intrigue beaucoup aussi. Un même label/variable peut l’avoir ou pas. Je ne comprends pas bien la logique. Faute de frappe ou truc indispensable?
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Répondre