Forums Casio - Projets de programmation

Index du Forum | Projets de programmation | PRGM2 v1.05
Purobaz
Hors ligne
Membre d'honneur
Niveau: Aucun
Points: 2690
Défis: 110
Message
Posté le 02/01/2012 17:01

PRGM2 v1.05 :



Voici la version 1.05 de PRGM2, dopée par de nouvelles fonctions.
J'espère que vous en ferez bon usage, les fonctions bmp et multigetkey sont désormais accessibles en basic, ce qui ouvre de nombreuses perspectives pour des jeux de plateformes, d'actions ou de tirs...

>>> Consulter la doc ! <<<




Le fichier joint contient PRGM2.g1a, les sources, des exemples et de jeux.



A la fin de certains programmes, la calculatrice s'éteint brutalement, et se rééteint dès que vous l'allumez. Ne vous inquiétez pas, c'est seulement le timer d'extinction qui est modifié. Ce bug a une probabilité d'environ 2%.
Pour le corriger il faut, entre deux allumages, aller dans le menu System [G], puis faire [F2] et enfin [F1].

Parfois la calculatrice plante, elle ne réagi plus lorsque vous pressez les touches et l'image reste fixe. Ce bug a une probabilité de 20%.
Pour le corriger il faut appuyer sur le bouton RESTART au dos de votre calculatrice, cela n'abime en aucun cas votre calculatrice.

Evitez d'utiliser les labels !

Faites donc des sauvegardes régulières de vos programmes et signalez moi les bugs.
D'une manière générale, il faut éteindre la calculatrice pour sauvegarder les modifications apportées aux programmes.

Fichier joint



Pages: 1, 2, 3, 4, 5, 6, ... 8 | Suivante

Pierrotll
Hors ligne
Ancien administrateur
Niveau: Élite
Points: 5488
Défis: 41
Message
Citer : Posté le 02/01/2012 18:25 | #

Ton explication de l'utilisation des sprites est bien trop sommaire. D'ailleurs, j'aurais largement préférer utiliser les Listes pour ça, plutôt que des fichiers (ta méthode rallonge beaucoup le temps d'accès). Pourquoi utiliser R? Je l'avais plutôt réserver aux valeur de Retour.
Dans les sources, rajouter un fichier "purobaz" ne fait pas très propre d'un point de vue sémantique. A propos de tes sources, c'est quoi la macro "eight", ça veut dire huit Et ça peut être mieux écrit :
real_width=(width-1>>3<<3)+8
A propos, ton fichier "purobaz.h" commence par "#ifndef _MENU" ...

J'aime bien l'initiative, et au niveau du code je vois que tu t'améliores très vite, mais comme tu le dis, il vaut mieux éviter de multiplier les versions.
----------------------------------
Purobaz
Hors ligne
Membre d'honneur
Niveau: Aucun
Points: 2690
Défis: 110
Message
Citer : Posté le 02/01/2012 18:40 | #
Pour les sprites, c'est la seule méthode que j'ai trouvé. D'ailleurs il y a toujours des erreurs dimensions quand on utilise les listes. Pour les temps d'accés, ils sont quand même "relativement courts" comparés au basic.
Je vais améliorer l'explication.

Pour l'utilisation de R, j'avais pas envie de "condamner" trop de variables. Si vous en voulez une autre, y'a pas de problème.

Pour le fichier "purobaz" si c'est juste le nom qui gène... Je voulais pas trop dénaturer le code.
Le "#ifndef _MENU", c'est une boulette due à un mauvais copier-coller

Enfin pour "eight", au début je voulais faire un macro 'intg" à peu près équivalent à la fonction basic. J'avais un petit bug, donc j'ai bricolé ça, pour calculer la longueur de la chaine de caractère en fonction des dimensions du sprite.
----------------------------------
Eiyeron
Hors ligne
Modérateur
Niveau: Élite
Points: 5513
Défis: 57
Message
Citer : Posté le 02/01/2012 19:27 | #
WTF, tes sprties, on n'a droit qu'à 10?

Ajouté le 02/01/2012 à 19:28 :
TU peux pas faire une fonction pour relancer le timer?

Ajouté le 02/01/2012 à 19:33 :
L\'exemple sprite ne marche paas!
Pierrotll
Hors ligne
Ancien administrateur
Niveau: Élite
Points: 5488
Défis: 41
Message
Citer : Posté le 02/01/2012 21:40 | #
Tu peux pas faire une fonction pour relancer le timer?

Si le timer est arrêté, comment le programme pourrait faire quoi que ce soit?
----------------------------------
Purobaz
Hors ligne
Membre d'honneur
Niveau: Aucun
Points: 2690
Défis: 110
Message
Citer : Posté le 03/01/2012 17:38 | #
L'exemple sprite ne marche pas!

Est-ce que d'autres ont rencontré cette erreur ?
Chez moi ça fonctionne, ça dépend peut-être du modèle utilisé.

Je pourrais aussi rajouter d'autres sprites, mais faut que ça soit utile !
----------------------------------
Dj_omnimaga
Hors ligne
Membre
Niveau: Aucun
Points: 149
Défis: 0
Message
Citer : Posté le 04/01/2012 06:18 | #
Des jeux comme The Reign of Legends 3 utilisent une centaine de sprites, sinon plus. (C'est sur TI-84 Plus en passant) Il y a même des jeux qui en utilisent près de 300 si on prends en compte que une image 16x16 c'est 4 sprites 8x8.

Sinon juste 10 sprites ça va être limité pas mal pour les graphismes de jeu.

Les sprites de ROL3 sont dans cette image en bas à gauche et en bas à droite:
(Les autres viennent de Reuben Quest 1 et 2)

Disons que si seulement 10 sprites étaient disponible pour de tel jeux, la qualité en aurait souffert grandement. :/
----------------------------------

Bandcamp|FB|Youtube|Twitter
Retired [url="http://www.omnimaga.org/"]Omnimaga[/url] admin (2001-11) and editor (2012-14)
Siapran
Hors ligne
Membre
Niveau: Vétéran
Points: 3248
Défis: 17
Message
Citer : Posté le 07/01/2012 09:20 | #
* Siapran vient de tomber dans les pommes *
----------------------------------
Eiyeron
Hors ligne
Modérateur
Niveau: Élite
Points: 5513
Défis: 57
Message
Citer : Posté le 07/01/2012 11:58 | #
/me sort les claques...
Pigeonv
Hors ligne
Membre
Niveau: Débutant
Points: 105
Défis: 8
Message
Citer : Posté le 08/01/2012 00:34 | #
//dans void run_prgm();
//plus clair qu'un for(), non ?
while (n--) KBD_PutKey(KEY_CTRL_DOWN, 0);


Une façon de faire serait de voir où PRGM (l'appli officielle) stocke la position dans la liste et de la modifier disons 2 dixièmes de seconde après l'avoir lancé (via un autre timer). Ou encore d'appeler l'interpréteur directement, sans passer par le menu [là, pas le choix, faut chercher le point d'entrée de la fonction ...]. On pourrait agir en fonction de la version de l'OS pour que ça marche partout ...

Pour trouver l'adresse des variables décrivant la position dans la liste, soit on désasm (et ça risque d'être long et pénible, de l'ASM RISC ce n'est pas vraiment aussi facile à lire que de l'ASM x86*), soit on analyse les différences entre dumps mémoire (plus simple je pense ...).

(*) En fait, ces deux ASM sont aussi simples à lire, mais comprendre le code C qui se trouve derrière c'est plus dur ...
Pierrotll
Hors ligne
Ancien administrateur
Niveau: Élite
Points: 5488
Défis: 41
Message
Citer : Posté le 08/01/2012 01:25 | #
Et après tu seras bon pour devoir ré-écrire ton programme pour chaque future version de l'OS...
----------------------------------
Pigeonv
Hors ligne
Membre
Niveau: Débutant
Points: 105
Défis: 8
Message
Citer : Posté le 08/01/2012 01:53 | #
Ils ne changent pas de version tous les deux jours non plus : tu stockes les adresses dans un tableau selon la version et ça passera. Ici ça ne fonctionne pas du tout quand on a "beaucoup" de programmes, alors ...
Purobaz
Hors ligne
Membre d'honneur
Niveau: Aucun
Points: 2690
Défis: 110
Message
Citer : Posté le 08/01/2012 19:40 | #
Ça signifie combien le beaucoup ?
J'ai déjà fait pas mal de tests et j'ai encore jamais rencontré ce problème.

Mais c'est beaucoup plus agréable si le programme est au début de la liste. Met un espace au début du nom pour le faire remonter dans la liste.

Je vais bientôt ajouter la description pour les sprites. J'ai aussi remarqué que les sprites ne marchent pas si on appuie sur AC avant de séléctionner le programmme.

Je suis actuellement en train de faire un Mario, avec le multi-getkey c'est assez réaliste.
----------------------------------
Pigeonv
Hors ligne
Membre
Niveau: Débutant
Points: 105
Défis: 8
Message
Citer : Posté le 08/01/2012 20:50 | #
Beaucoup ? J'en ai 65 et celui que je veux lancer est le 37è. La solution avec les espaces marchera mais elle limite le nom. J'ai quand même réussi à le crasher ce matin, j'essaierai de reproduire ça demain ...

Dommage aussi que ça crashe quand on utilise des matrices/labels ...

Si j'appuie sur [AC], PRGM2 me dit clairement que son timer a été stoppé. Normal en fait ...
(Ce n'est pas la façon idéale de détecter que l'exécution du programme est terminée, mais on n'a rien de mieux pour l'instant)
Pierrotll
Hors ligne
Ancien administrateur
Niveau: Élite
Points: 5488
Défis: 41
Message
Citer : Posté le 08/01/2012 20:56 | #
Ça c'est un ajout de Purobaz, que je ne trouve pas pratique.
----------------------------------
Pigeonv
Hors ligne
Membre
Niveau: Débutant
Points: 105
Défis: 8
Message
Citer : Posté le 08/01/2012 21:16 | #
devoir ré-écrire ton programme pour chaque future version de l'OS...

Nos addins sont de toute façon incompatibles avec la version 2.02 de l'OS vu qu'il est fait pour un SH-4A qui n'a pas le même set d'instructions qu'un SH-3. Tout ce qu'on a à gérer ce sont les versions précédentes et ça peut se faire avec un bête tableau.
Binary_man
Hors ligne
Rédacteur
Niveau: Confirmé
Points: 1344
Défis: 19
Message
Citer : Posté le 08/01/2012 21:27 | #
Casio ne laisse pas à l'abandon les graph 75/85/95 qui ont un SH3, si jamais un gros bug est détecté, alors ils feront une maj avec un nouvel OS.
----------------------------------
Calculettes : Graph 75, Graph 95, classpad 330 et FX-CG20 !!
Purobaz
Hors ligne
Membre d'honneur
Niveau: Aucun
Points: 2690
Défis: 110
Message
Citer : Posté le 09/01/2012 08:26 | #
Les crashs interviennent surtout quand le programme est quitté rapidement.
En utilisant l'ancienne version de PRGM2, je me suis rendu compte que ça plantait souvent en appuyant sur AC.
J'ai amélioré ce bug comme j'ai pu, mais c'est évidemment pas la meilleur solution.

A mon avis, la meilleur façon pour éviter les bugs, c'est de quitter le programme avec la fonction 22 suivit d'un Stop.


Edit
Je crois que j'ai trouvé pourquoi certaines fonctions (listes, matrices, Goto/Lbl) ne marchent pas.
C'est parce que le timer interrompt la fonction au cours de son exécution.


Edit 2
@Pigeonv : Fait une sauvegarde sur la mémoire de stockage ou sur la carte SD pour virer des programmes. Au niveau de l'adresse, si tu veux t'en occuper, y'a pas de soucis. Perso je ne vois pas comment les récupérer.
Si tu as d'autres améliorations, n'hésites pas.
----------------------------------
Dark storm
Hors ligne
Administrateur
Niveau: Aucun
Points: 9320
Défis: 169
Message
Citer : Posté le 09/01/2012 18:46 | #
Vu que PRGM2 commence à se développer, je propose que l'on fasse comme le W3C fait pour le web: instaurer une base commune.
Que ce soit la version de PLL (que j'appelle "PRGM2 v1") ou celle de Puro ("PRGM2 v2") qui prenne le dessus, c'est à vous de choisir (et nous de donner notre avis ).

Je dit cela car j'ai pris 1/2 heure à savoir sur quelle version de PRGM2 il fallait que je lance un truc, les deux étant totalement identique à l'écran.
De plus, Puro ayant repris tes exemples Pierrotll, il y a dans son zip deux types de programmes. On nage donc entre 3 types de programmes, dont deux ne sont reconnaissables que selon le numéro des fonctions qui sont censées faire la même chose...
Alors quand on a comme moi une calto bien remplie, je vous dit pas le bazar pour s'y retrouver .

Je demande donc à la communauté Casio de se regrouper et de participer à un projet unique de PRGM2.

Ah, au fait, je voulais vous proposer d'appeler ce BASIC amélioré le B#. Donnez moi votre avis
----------------------------------
Soutenez-les !





#YAPHPH
Purobaz
Hors ligne
Membre d'honneur
Niveau: Aucun
Points: 2690
Défis: 110
Message
Citer : Posté le 09/01/2012 19:22 | #
2 fois le même message

On peut pas réellement parler de 2 versions distinctes, puisque c'est Pierrot qui a tous codé dans les 2 versions.
J'ai juste ajouté 2-3 petits trucs. Mais appart ça tout est identique.

J'espère qu'à terme il y aura une version unique la plus performante possible.

Pour le nom, je préfère PRGM2.

Au faite je viens de réaliser, que l'exemple SERIAL n'est plus à jour, puisque j'ai modifié les numéros de fonctions.
----------------------------------
Deimos
Hors ligne
Membre
Niveau: Intermédiaire
Points: 89
Défis: 0
Message
Citer : Posté le 09/02/2012 18:48 | #
Bonjour ! Je me suis mis à bricoler des petits programmes avec PRGM2 depuis quelques jours.
Je suis sur une G35+ usb avec un OS de G75

J'ai essayé d'utiliser la fonction multigetkey, sans résultat. Comment faut il l'utiliser ?
J'étais un peu septique sur la façon de l'utiliser. J'ai essayé comme ca :
Getkey → G
21 → F
While F:WhileEnd
...


J'ai testé ce système en appuyant sur deux touches à la fois (dont une citée dans la présentation du multigetkey), mais je me retrouve soit avec G ou R égal à zéro

J'ai ensuite essayé la fonction Bmp, (sprite réalisé avec ton programme Purobaz, merci!), mais j'ai également des problèmes. J'ai fait quelques recherches, mais je n'ai rien trouvé de concluant.

Comment est ce que je dois m'y prendre ?
Merci d'avance pour vos réponses !

Pages: 1, 2, 3, 4, 5, 6, ... 8 | Suivante

Index du Forum | Projets de programmation | PRGM2 v1.05
Publicité et partenaires
Casio Education
Casio éducation

TI-Planet
Casiopeia
Casiopeia
CasioFan, la communauté ClassPad
CasioFan
CodeWalrus
CodeWalrus

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2015 | Il y a 41 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Rugby Manager | Jeu de basket | Jeu de handball | Jeu de tennis | Nova Raider | Réparation téléphone | Soccer Rush | Tasty Tale

Planète Casio est un site communautaire indépendant, géré bénévolement et n'est donc pas affilié à Casio | Toute reproduction de Planète Casio, même partielle, est interdite
Les fichiers, programmes et autres publications présents sur Planète Casio restent la propriété de leurs auteurs respectifs et peuvent être soumis à des licences ou des copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd