Catégorie :
SupportForum :
TI-82 STATSVues : 5298
Réponses : 72
Type : discussion
Etat : réponses autorisées
Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
Packman sur TI 82stats.fr - Page 1 / 2
_ le 13/07/2012 à 13:23
Bonjour,
Je viens de sortir de seconde, et les (brefs) cours sur la programmation qu'on a eut m'ont donné envie. J'ai donc fait quelques jeu (snake, pendu, etc...) sur ma calculatrice, une TI-82Stats.fr.
Grâce aux text-sprite, j'ai décidé de faire un packman, mais je rencontre un problème: si le packman est collé à la paroi de gauche ou du haut, il l'efface en s'affichant.
Avec un pxl-Test( et un Ligne(, j'ai réglé le problème, mais le résultat est moche: la paroi s'efface quand le packman se déplace, puis réapparait.Y aurait-il un moyen de "bloquer" un pxl sur une position ou une autre? Sinon, avez vous une autre solution à me proposer?
Merci d'avance pour vos réponses!
linkakro le 13/07/2012 à 14:28
Tu as parlé de la paroi de gauche alors que c'est habituellement celle de droite qui peut poser problème.
La meilleure solution est de modifier les dimensions de la grille de jeu et la position des sprites à l'intérieur.
Pour t'aider sur ces deux points j'ai besoin du code du sprite que tu as utilisé, de l'écartement entre chaque position du sprite, et d'une position de référence du sprite.tapenad le 13/07/2012 à 16:41
il faut que tu donne le code de ton prgmSamos le 13/07/2012 à 17:39
J'ai peu-être une idée!
Code
If Y<0
Y-1->Y // valeur s'il avance d'une case à chaque fois
c'est la seule chose à laquelle j'ai pensé.
linkakro le 13/07/2012 à 17:41
Cela revient à modifier la zone de déplacement du sprite._ le 13/07/2012 à 18:36
Effectivement, c'est bien la paroi de droite qui gène.
Je recopie mon code et vous le poste dès que j'ai fini(je n'ai pas le câble, ça risque d'être un peu long)
Merci à tous pour vos réponses!_ le 13/07/2012 à 19:49
Et voilà le code (sans les ennemis):
:AxesNAff
:QuadNAff
:GraphOff
:FonctOff
:Effdessin
:0->Ymax
:0->Xmin
:-62->Ymin
:94->Xmax
:EffVar L6
:106->dim(L6
:1->L6(25
:2->L6(26
:3->L6(27
:4->L6(35
:3->V
:1->N
:":i[[( ->Chaine1
:"([Ai( ->Chaine1
:"([[i: ->Chaine1
:"([Q!( ->Chaine1
:While V et N<=1 (Un seul niveau pour le moment)
:if N=1
:Ligne(2,-1,92,-1
:Ligne(2,-61,92,-61
:Ligne(2,-1,2,-61
:Ligne(92,-1,92,-61
:Ligne(8,-13,8,-25
:Ligne(8,-37,8,-49
:Ligne(8,-49,14,-49
:Ligne(8,-13,14,-13
:Ligne(14,-19,14,-43
:Ligne(14,-7,14,-13
:Ligne(14,-49,14,-55
:Ligne(14,-7,38,-7
:Ligne(14,-55,38,-55
:Ligne(26,-19,26,-43
:Ligne(26,-19,38,-19
:Ligne(26,-43,38,-43
:Ligne(26,-13,68,-13
:Ligne(26,-49,68,-49
:Ligne(38,-31,56,-31
:Ligne(50,-19,68,-19
:Ligne(50,-43,68,-43
:Ligne(68,-19,68,-43
:Ligne(56,-7,80,-7
:Ligne(80,-19,80,-43
:Ligne(80,-7,80,-13
:Ligne(80,-49,80,-55
:Ligne(80,-13,86,-13
:Ligne(80,-49,86,-49
:Ligne(86,-13,86,-25
:Ligne(86,-37,86,-49
:Ligne(56,-55,80,-55
:for(I, 1, 15
:for(J, 1, 10
:pt-On(61-1, -6J+2
:End:End
:149->G
:{10, 15->dim([A]
:1->B
:8->A
:End
:Remplir(1, [A]
:0->[A](B, A
:0->D
:For(I,1,longueur(Chaine1)-1
:Texte(6B-5,6A-4+I,sous-Chaîne(Chaîne1,I,1
:End
:Chaine1->Chaine5
:1->P
:codeTouche->K
:While G et P
:codeTouche->K
:if L6(K+1
:Then
:L6(K+1->D
:if D=1
:Chaine1->Chaine1
:if D=2
:Chaine1->Chaine2
:if D=3
:Chaine1->Chaine3
:if D=4
:Chaine1->Chaine4
:end
:if D
:Then
:if D=1 et pxl-Test(6B, 6A-4) ou D=2 et pxl-Test(6B-5, 6A) ou D=3 et pxl-Test(6B, 6A+2) ou D=4 et pxl-Test(6B+1, 6A)
:Then
:0->D
:Else
:Texte(6B-5, 6A-3, " "(6 espaces)
:A+(D=3)-(D=1->A
:B+(D=4)-(D=2->B
:For(I,1,longueur(Chaine5)-1
:Texte(6B-5,6A-4+I,sous-Chaîne(Chaîne5,I,1
:End
:if [A](B, A
:Then
:0->[A](B, A
:G-1->G
:End:End:End:End:End
Merci d'avance!tapenad le 13/07/2012 à 20:46
tu peut mettre une balise code c'est fait pour ça:
Code
:AxesNAff
:QuadNAff
:GraphOff
:FonctOff
:Effdessin
:0->Ymax
:0->Xmin
:-62->Ymin
:94->Xmax
:EffVar L6
:106->dim(L6
:1->L6(25
:2->L6(26
:3->L6(27
:4->L6(35
:3->V
:1->N
:":i[[( ->Chaine1
:"([Ai( ->Chaine1
:"([[i: ->Chaine1
:"([Q!( ->Chaine1
:While V et N<=1 (Un seul niveau pour le moment)
:if N=1
:Ligne(2,-1,92,-1
:Ligne(2,-61,92,-61
:Ligne(2,-1,2,-61
:Ligne(92,-1,92,-61
:Ligne(8,-13,8,-25
:Ligne(8,-37,8,-49
:Ligne(8,-49,14,-49
:Ligne(8,-13,14,-13
:Ligne(14,-19,14,-43
:Ligne(14,-7,14,-13
:Ligne(14,-49,14,-55
:Ligne(14,-7,38,-7
:Ligne(14,-55,38,-55
:Ligne(26,-19,26,-43
:Ligne(26,-19,38,-19
:Ligne(26,-43,38,-43
:Ligne(26,-13,68,-13
:Ligne(26,-49,68,-49
:Ligne(38,-31,56,-31
:Ligne(50,-19,68,-19
:Ligne(50,-43,68,-43
:Ligne(68,-19,68,-43
:Ligne(56,-7,80,-7
:Ligne(80,-19,80,-43
:Ligne(80,-7,80,-13
:Ligne(80,-49,80,-55
:Ligne(80,-13,86,-13
:Ligne(80,-49,86,-49
:Ligne(86,-13,86,-25
:Ligne(86,-37,86,-49
:Ligne(56,-55,80,-55
:for(I, 1, 15
:for(J, 1, 10
:pt-On(61-1, -6J+2
:End:End
:149->G
:{10, 15->dim([A]
:1->B
:8->A
:End
:Remplir(1, [A]
:0->[A](B, A
:0->D
:For(I,1,longueur(Chaine1)-1
:Texte(6B-5,6A-4+I,sous-Chaîne(Chaîne1,I,1
:End
:Chaine1->Chaine5
:1->P
:codeTouche->K
:While G et P
:codeTouche->K
:if L6(K+1
:Then
:L6(K+1->D
:if D=1
:Chaine1->Chaine1
:if D=2
:Chaine1->Chaine2
:if D=3
:Chaine1->Chaine3
:if D=4
:Chaine1->Chaine4
:end
:if D
:Then
:if D=1 et pxl-Test(6B, 6A-4) ou D=2 et pxl-Test(6B-5, 6A) ou D=3 et pxl-Test(6B, 6A+2) ou D=4 et pxl-Test(6B+1, 6A)
:Then
:0->D
:Else
:Texte(6B-5, 6A-3, " "(6 espaces)
:A+(D=3)-(D=1->A
:B+(D=4)-(D=2->B
:For(I,1,longueur(Chaine5)-1
:Texte(6B-5,6A-4+I,sous-Chaîne(Chaîne5,I,1
:End
:if [A](B, A
:Then
:0->[A](B, A
:G-1->G
:End:End:End:End:End
il a l'air sympa continue comme ça

_ le 13/07/2012 à 23:36
Merci a toi!
(Pour la balise, je me suis dit que comme c est du TI Basic, ca ne change pas grand chose, mais je la mettrais la prochaine fois)
Sinon, tu n a pas une solution a mon probleme?
Merci d avance!
linkakro le 14/07/2012 à 00:16
Je cherche.
Pour l'instant je corrige deux problèmes.
Ensuite j'étudierai la grille : j'envisage d'élargir les couloirs et déplacer le sprite par rapport à eux. Ce sera moins beau mais cela empêchera les effacements des murs.linkakro le 15/07/2012 à 19:46
Ceci est faux car :
-le If ne s'applique qu'au premier Ligne()
-La calculatrice reste bloquée dans la zone que je cite
Code
While V et N<=1
if N=1
Ligne(2,-1,92,-1
Ligne(2,-61,92,-61
...
149->G
{10, 15->dim([A]
1->B
8->A
End
A modifier pour que cela ait une utilité :
Code
:"i[[( ->Chaine1
// Chaine1->Chaine2
:"([Ai( ->Chaine1 // ... Chaine3
:"([[i: ->Chaine1 // ... Chaine4
:"([Q!( ->Chaine1 // ... Chaine5
:Chaine1->Chaine1 // Chaine2->Chaine1
:if D=2
:Chaine1->Chaine2 // Chaine3->Chaine1
:if D=3
:Chaine1->Chaine3 // Chaine4->Chaine1
:if D=4
:Chaine1->Chaine4 // Chaine5->Chaine1
=====================
Les pixels en trop à droite sont moches, je propose de modifier les fins des boucles des Text sprites.
Code
:For(I,1,longueur(Chaine1
Le fait est que les fonctions de Text dessinent nécessairement des pixels vierges au dessus et à droite de ceux qui nous intéressent.
Si tu ne veux pas redessiner chaque mur, il faut donc :
-soit utiliser une fonction RappelDessin
-soit en tenir compte dans les dimensions de la grille et dans le positionnement des sprites :
-- élargir les couloirs d'un pixel
-- déplacer le sprite vers le bas et le garder collé sur la gauche des sprites
J'ai essayé de modifier les dimensions mais cela défigure la grille. En fait les grilles d'une dimension seront strictement incompatibles avec celles d'une autre dimension car il n'y aura souvent pas le même nombre de cases.
paramètre les coordonnées des sprites avec : (7B-6,7A-6) et limite A de 1 à 13 et B de 1 à 8
Code
Line(0,0,91,0
Line(0,0,0,ú (
) 56
Line(0,ú (
) 56,91,ú (
) 56
Line(91,ú (
) 56,91,0
Line(14,ú (
) 7,35,ú (
) 7
Line(56,ú (
) 7,77,ú (
) 7
Line(14,ú (
) 7,14,ú (
) 14
Line(77,ú (
) 7,77,ú (
) 14
Line(7,ú (
) 14,14,ú (
) 14
Line(21,ú (
) 14,70,ú (
) 14
Line(77,ú (
) 14,84,ú (
) 14
Line(7,ú (
) 14,7,ú (
) 21
Line(21,ú (
) 14,21,ú (
) 21
Line(70,ú (
) 14,70,ú (
) 21
Line(84,ú (
) 14,84,ú (
) 21
Line(14,ú (
) 21,14,ú (
) 35
Line(28,ú (
) 21,28,ú (
) 28
Line(28,ú (
) 21,42,ú (
) 21
Line(49,ú (
) 21,63,ú (
) 21
Line(63,ú (
) 28,63,ú (
) 35
Line(77,ú (
) 21,77,ú (
) 35
Line(42,ú (
) 28,49,ú (
) 28
Line(28,ú (
) 35,42,ú (
) 35
Line(49,ú (
) 35,63,ú (
) 35
Line(7,ú (
) 35,7,ú (
) 42
Line(21,ú (
) 35,21,ú (
) 42
Line(70,ú (
) 35,70,ú (
) 42
Line(84,ú (
) 35,84,ú (
) 42
Line(7,ú (
) 42,14,ú (
) 42
Line(21,ú (
) 42,70,ú (
) 42
Line(77,ú (
) 42,84,ú (
) 42
Line(14,ú (
) 42,14,ú (
) 49
Line(14,ú (
) 49,35,ú (
) 49
Line(56,ú (
) 49,77,ú (
) 49
Line(77,ú (
) 49,77,ú (
) 42J'ai alors utilisé un RappelDessin gourmand en vitesse.
_ le 15/07/2012 à 20:25
linkakro a écrit :
Ceci est faux car :
-le If ne s'applique qu'au premier Ligne()
-La calculatrice reste bloquée dans la zone que je cite
Oups... simple erreur en recopiant...
linkakro a écrit :
A modifier pour que cela ait une utilité :Code
:"i[[( ->Chaine1
// Chaine1->Chaine2
:"([Ai( ->Chaine1 // ... Chaine3
:"([[i: ->Chaine1 // ... Chaine4
:"([Q!( ->Chaine1 // ... Chaine5
:Chaine1->Chaine1 // Chaine2->Chaine1
:if D=2
:Chaine1->Chaine2 // Chaine3->Chaine1
:if D=3
:Chaine1->Chaine3 // Chaine4->Chaine1
:if D=4
:Chaine1->Chaine4 // Chaine5->Chaine1
Effectivement, c'est plus utile
linkakro a écrit :
Le fait est que les fonctions de Text dessinent nécessairement des pixels vierges au dessus et à droite de ceux qui nous intéressent.
Si tu ne veux pas redessiner chaque mur, il faut donc :
-soit utiliser une fonction RappelDessin
-soit en tenir compte dans les dimensions de la grille et dans le positionnement des sprites :
-- élargir les couloirs d'un pixel
-- déplacer le sprite vers le bas et le garder collé sur la gauche des sprites
J'ai essayé de modifier les dimensions mais cela défigure la grille. En fait les grilles d'une dimension seront strictement incompatibles avec celles d'une autre dimension car il n'y aura souvent pas le même nombre de cases.J'ai alors utilisé un RappelDessin gourmand en vitesse.
Ok, (je suppose que quand tu dis RappelDessin, tu veux parler de RappelImage) c'est vrai que je n'avais pas pensé à ça. En tout cas, merci beaucoup pour ton aide!
PS: Est ce que quelqu'un sait programmer en ASM? Si oui, où me conseillerez vous d'aller pour apprendre? (J'ai trouvé un tuto sur le site du zero, mais il concerne les modèles 83+, 83+ SE, 84+, 84+ SE, et l'auteur déconseille le tuto pour ceux qui auraient la TI 83 qui, d'après ce que j'ai compris, est relativement identique, nv programmation, à la TI 82stats

)
Merci d'avance!
linkakro le 15/07/2012 à 21:57
J'ai "buggué" quand j'ai écrit "RappelDessin" au lieu de "RappelImage".
S'il y a une erreur de copie, j'aimerais bien que tu la corriges, éventuellement même en postant à nouveau le code (et en appliquant les diverses corrections), cela peut aider à avancer, surtout maintenant que je sais que mes propositions me conviennent.
-----
Les rares programmeurs en assembleur 83 ne viennent plus sur le forum.
Matrefeytontias manipule en priorité l'assembleur 83plus, qu'il traduit tant bien que mal en assembleur 83.
La grande différence est l'existence de romcalls intégrées à la 83plus (mais pas à la 83) qu'on ne peut donc pas utiliser dans une 83.
Le reste se gère en fournissant au compilateur des fichiers include différents et en changeant certaines des adresses utilisées.
C'est difficile... mais c'est possible de passer de l'un à l'autre.
Le compilateur en revanche est le même
Il y a des tutoriels mais ils sont difficiles à trouver et parfois trop peu remplis.
Le seul que je connaisse et auquel je pense actuellement est
ASMGURU _ le 15/07/2012 à 22:54
Merci pour ton lien
Je posterais le prgm complet demain et j y rajouterais la gestion des ennemis quand je l aurais finie
Encore merci pour ton aide!

sandro le 15/07/2012 à 23:13
je ne suis pas sur si c'est bien la version anglaise que tu lui as donné (j'arrive pas à ouvrir le fichier d'aide), mais si oui, tu as la traduction en fanaçais ici sous format word :
https://ti83.pages-perso.free.[...]/asmguru_vf.zip _ le 16/07/2012 à 10:39
Merci

(c'est sûr qu'en français, ça sera déjà plus facile niveau compréhension)
Au fait: ce tuto est pour les TI 83, est ce qu'il marchera correctement sur ma TI 82stats.fr? Merci d'avance!
linkakro le 16/07/2012 à 12:37
Oui. La 82stat(fr) est une 83 pour tous les logiciels et programmes._ le 16/07/2012 à 12:53
Ok, merci.
Pour le packman, le RappelImage n'est pas super: le déplacement se fait super lentement, alors avec les ennemis, ça sera super galère. De plus, ça marche bien pour afficher le packman, mais pas pour l'effacer.
J'ai posté également sur un autre site, où on m'a proposé de me faire un affichage du packman en ASM: je pense que c'est la meilleure solution. Lorsque ce sera fait, je vous posterais le code en entier, puis y rajouterais la gestion des ennemis (avec un affichage en ASM également) quand je l'aurais faite.
Bonne journée à tout le monde, et encore merci pour votre aide!

The K le 16/07/2012 à 14:18
Euh un text-sprite c'est bien une sorte de caractère, ici stockés dans les chaînes ?linkakro le 16/07/2012 à 14:27
https://web.archive.org/web/20[...]u-a-ecrire.html
Le but est de superposer (en décalé) des caractères de texte pour dissiner quelque chose.
La méthode la plus utilisée pour les superposer est l'usage d'une boucle For contenant une fonction Text et une sous-chaine.
Et on peut alors jongler avec des chaines de caractère pour changer le dessin à tout moment.
The K le 16/07/2012 à 14:28
Okay je vois merci

_ le 16/07/2012 à 19:17
J'ai un pb: j'ai besoin de télécharger TASM et OBJ 83 pour l'ASM, mais quand j'essaye de les lancer, ça me dit que la version que j'ai téléchargée est incompatible avec la version de windows 64bits.

(je précise que je suis sous windows 7).
Avez vous une solution? Merci d'avance!
The K le 16/07/2012 à 20:09
Euh ... Une fois j'ai voulu m'essayer à l'ASM. J'ai donc ces deux logiciels sur mon win7 et tout marche
Non je ne vois pas désolé.
linkakro le 16/07/2012 à 20:28
The K : pense à préciser ton processeur : 32 ou 64 bits ?
Sinon ta déclaration n'est pas rigoureusement utile.
_ : Je n'ai pas utilisé ces logiciels mais je suis habitué aux incompatibilités au moins partielles.
Dans le pire des cas, tu peux demander à quelqu'un de compiler ton code, voire même suivre le
tutoriel de matrefeytontias pour traduire toi même en hexadécimal.
_ le 17/07/2012 à 13:33
Merci pour ton lien

J'ai un peu regardé, mais le problème, c'est que c'est à partir de la TI 83+...
Finalement, j'ai trouvé d'où venait le problème: ma version de windows est trop récente pour ces logiciels, il faut donc utiliser DOSBox pour les faire fonctionner.
Bon, je ne dirais pas que tout marche: le premier programme, qui consiste à faire un effacer écran doit contenir:
Code
CD5547C9
End
0000
End
mais j'obtient ça (dans mon fichier .OBJ):
Code
:03932700CD5547DA
:00000001FF
Merci d'avance!
linkakro le 17/07/2012 à 14:22
Non, le codage hexadécimal est identique pour les ti83 et ti83plus.
C'est pas pour rien que je te l'ai proposé en dernier recours.
Ce qui change est l'ensemble des adresses que tu peux utiliser, et souvent cela se corrige en changeant de fichier include.
Si le compilateur n'utilise pas de fichier include choisi par l'utilisateur, alors la conversion devient semble-t-il impossible.
Mais puisque tu parviens à le faire marcher avec DosBox, restons-en au compilateur.
Je ne sais pas si les compilateurs génère directement un fichier 83p ou uniquement la partie hexadécimale.
Je compte apprendre moi-même à m'en servir, je t'aiderai si matrefeytontias ne l'a pas déjà fait. (et si je réussi à le faire)_ le 17/07/2012 à 20:43
En fait, le compilateur génère un fichier OBJ, que l'on transforme en 83p à l'aide d'un autre programme (OBJ83).
Pour ce qui ne va pas dans mon code( j'ai fait un copié collé de celui du tuto, et j'ai ensuite fait tout ce qui était demandé), je pense que ça viens du fait que lors de ma première tentative, il y a eut 6 erreur.

Dans mon fichier tokens.inc, il y avait des carrés blanc, que j'ai supprimé. Pouvez vous me donner un lien vers un fichier tokens.inc valide(le pb viens peut etre de là)? Merci d'avance!
linkakro le 17/07/2012 à 21:18
Il ne faut jamais supprimmer quoi que ce soit dans un fichier include (*.inc) même si ton ordinateur ne sait pas le lire.
Cependant tu as supprimmé ces caractères avant ou après avoir observé les 6 erreurs ?
Télécharge encore le logiciel et tu auras un autre fichier include._ le 17/07/2012 à 22:17
Justement, le plus surprennant, c est que j ai eut les erreurs, j ai ete voir aux adresses donnees par TASM, j ai supprime, et les erreurs ont disparues... par contre, le code en hexa n etait pas bon...
J essayerais de trouver ce fichier sur un autre site demain, pour voir si celui que j ai eut n a pas un pb
PS: je me doute bien qu il ne faut pas supprimmer des trucs d un fichier include, mais je me suis dit que de toute facon, il ne marchait pas comme ca alors

... En plus je ne vois pas du tout a quoi peuvent servir ces petits carres

linkakro le 17/07/2012 à 22:23
Qu'y a-t-il dans ton fichier *.OBJ ? Si c'est de l'hexadécimal tu n'as pas besoin de t'emmerder avec obj83, il te faudrait juste un éditeur._ le 17/07/2012 à 23:19
C est effectivement de l hexa

Pour l editeur, TASM marche, c est vraiment le fichier .inc qui pose pb. Mais je vais regarder un peu ce qu il y a dedans: peut etre qu on peu faire sans, en incluant directement dans le fichier source ce dont on a besoin, sans passer par ce fichier?
linkakro le 17/07/2012 à 23:31
Je te demande ce qu'il y a dans ton programme en format obj : regarde si cela correspond à ce que tu devrais obtenir dans le programme en format 83p.
Si c'est le cas (et ce n'est vraiment pas certain :S) tu peux le recopier dans un programme 83p et ajouter End:0000:End._ le 17/07/2012 à 23:39
En fait, le code que j ai mis c est celui contenu dans mon fichier .obj.
Dans le fichier 83p, c est une "traduction" de ce code compatible avec le logiciel Ti et la caltolinkakro le 18/07/2012 à 00:19
Oups j'avais mal suivi.
Si tu regardes bien, le code hexa qui t'intéresse est clairement visible dans le fichier obj, excepté "DA" qu'il faut absoluement remplacer par C9.
C'est extrèmement bourrin mais tu dois pouvoir récupérer le code hexa ainsi en supprimmant tout le reste.
Après en collant ça dans un éditeur (avec End:0000:End) ça peut marcher.
Je pense que le fichier que tu as téléchargé est peut-être corrompu si l'include foire.
Si mes propositions précédentes ne suffisent pas, tu devrais réessayer de récupérer un tokens.inc.The K le 18/07/2012 à 15:52
Euh ...
* mode useless activé *
Essaie d'envoyer un mail à un programmeur confirmé en ASM83 (deso Linka si je ne t''inclus pas dedans ...). Sur ce forum il y avait -coco- (son mail se trouve dans la liste des membres).linkakro le 18/07/2012 à 16:06
Pas de problème, c'est juste la vérité : je n'ai aucune expérience en programmation assembleur TI.
Si tu as le courage recherche aussi le membre Wirekey.m@thieu41 le 18/07/2012 à 20:10
Merci pour vos réponses! (c'est _ je suis devenu membre, et ai changé de pseudo du coup

)
J'ai envoyé un mail à -Coco-, comme vous me l'aviez suggéré, j'attends sa réponse.
J'ai essayé de chercher un autre tokens.inc, mais impossible de le trouver (je l'ai eut sur le site où j'ai téléchargé ti83asm.inc)
Sinon, pour ta méthode que tu m'a proposé (enlever le début du code, remplacer DA par C9, et mettre End:0000:End), je voudrais essayer, mais le code en hexa du 2eme prgm du tuto n'est pas dessus, il faudrait que je teste le mien sur un émulateur. On m'a suggéré wabbitemu, je l'ai donc téléchargé. Ne sachant pas comment le faire marcher, je me suis rendu sur le tuto de l'espace TI (
https://espace-ti.forumactif.c[...]ateur-wabbitemu). Là on me dit qu'il me faut une ROM. J'en ait déniché une, et ai donc lancé wabbitemu avec. Mais seule une fenêtre verte s'affiche, avec 5 onglets: file view calculator debug help. J'ai cliqué sur Calculator options, et là j'ai essayé de mettre ton skin lapin crétin Linkakro, mais il y a une erreur: skin and Keymap are not the same size.
Si vous avez une solution, merci d'avance!
linkakro le 18/07/2012 à 21:51
Télécharge le une nouvelle fois sur la même site pour savoir si c'est le fichier qui est corrompu.
Concernant wabbitemu, tout est dans le tutoriel normalement.
Le skin perso est composé de deux fichiers : une image et une keymap. Il faut donner les deux au logiciel pour que cela marche.
Cependant les roms de SilverEdition font bugguer les skins persos...
Le plus simple :
-désactive toutes les options de calculator\option\skin
-coche l'option view\enable_skin
Cela permet d'utiliser les skins par défaut.m@thieu41 le 19/07/2012 à 09:59
J'ai fait ce que tu m'a dis, et mon émulateur fonctionne.
Je lui ai envoyé mon programme, mais il fait planter l'émulateur
Quand je lance le prgm (avec send(9 bien sûr ), l'écran s'éteint. Je le ralume, et là il y a marqué: n@eseq(R[sto]P0(
linkakro le 19/07/2012 à 13:31
Quel modèle de rom as-tu utilisé ?
S'il te plait passe moi les codes source, obj et 83p pour que je teste.
(y compris le nom que tu aurais voulu donner au programme, je crois que cela se retrouve dans le obj)m@thieu41 le 19/07/2012 à 18:38
Voilà mon code source:
Code
.NOLIST
#define end .end
#define END .end
#define equ .equ
#define EQU .equ
#include "ti83asm.inc"
#include "tokens.inc"
.LIST
call _clrLCDFull
ld hl,0003
ld (currow)
ld hl,mem
call _PUTS
ret
mem:
.db " Mem Cleared",0
.end
Mon fichier obj:
Code
:15000000CD5547CD0D472020204D656D20436C65617265640012
:00000001FF
Et mon 83p
Code
**TI83**
Comment: assembly programm................D 5 ZMEM 5 3 CD5547CD0D472020204D656D20436C656172656400?Ô?0000?Ô
Mes fichiers se nomaient MEM.*extension*, et mon prgm: ZMEM
J'ai pris une rom de TI83.
Merci d'avance!
PS: J'ai retéléchargé le fichier tokens.inc, avec le même résultat
EDIT: j'ai une petite question: j'ai vu sur le site du zero qu'il est possible de faire des jeux multi joueurs via un cable... avec l'axe Parser. Est ce que c'est possible en basic? Et sinon, en ASM? Si oui, comment? Merci d'avance!
The K le 19/07/2012 à 19:29
Si wabbitemu plante C'est que ton programme est pas bon. Mais il devrait t'afficher "RAm cleared" ou un truc similaire ...
Ou ton assembleur à fait très mal à la calculatrice
Par rapport aux jeux multi il existe en basic la fonction CaptVar( [variable] qui permet de capter une variable (variable chiffre, liste, etc ..) d'une autre calculatrice. Elle est cependant relativement lente, a ce qu'on m'a dit. À voir, donc.
Et je pense que si c'est possible en basic ça doit l'être en AsM ...
En tous cas bienvenue sur le forum

En espérant que tu restes avec nous le plus longtemps possible !
m@thieu41 le 19/07/2012 à 20:19
The K a écrit :
En tous cas bienvenue sur le forum 
En espérant que tu restes avec nous le plus longtemps possible !
Merci à toi, je compte bien rester sur ce forum, car je trouve l'ambiance sympa!
Merci pour la fonction CaptVar. J'éspère qu'elle n'est pas si lente que ça, je comptait faire comme un petit jeu de ping-pong... Il faudrait que je fasse des tests, mais je n'ai malheureusement pas 2 caltos sous la main
Pour le code ASM, on m'a conseillé SPASM comme compilateur au lieu de TASM. A priori, mon pb ne viendrait plus du fichier tokens, mais de ti83asm.inc (décidément, j'ai un pb avec les includes!

)
Si ça intéresse quelqu'un:
http://web.archive.org/web/201[...]ases/view/45088
Il y a aussi une interface graphique, pour simplifier l'utilisation
https://tiplanet.org/forum/por[...]oir.php?id=4477 linkakro le 20/07/2012 à 13:54
En basic la fonction CaptVar ne fonctionne que lorsque la seconde calculatrice est en Pause, puis la Pause est désactivée, ce qui oblige dans ce cas à utiliser une pause pour chaque variable.
Je pense que le Basic multijoueur n'est pas viable.
L'assembleur multijoueur est parfaitement possible puisque cela existe. Seulement c'est loin d'être facile et je n'ai aucune maîtrise.
Lorsque j'ai demandé le 83p, je voulais voir ce que la calculatrice lit de ton programme dans le menu Edit, pas le contenu lu par le notepad windows...
J'ai essayé de constituer un 83p à partir du texte mais cela ne marche pas alors j'aurai besoin de savoir ce que lit la calculatrice en éditant...
Ce serait dommage de galérer à cause de la syntaxe.m@thieu41 le 20/07/2012 à 14:09
Elle lit:
Code
:CD5547CD0D472020204D656D20436C656172656400
:End
:0000
:End
(désolé, j'avais mal compris

)
Pour la fonction CaptVar, j'ai peut-être une idée de jeu, malgré la Pause... je vais essayer, si ça marche, je le mettrais sûrement sur le forum.

linkakro le 20/07/2012 à 17:52
Tokens.inc ne sert à rien dans ce programme.
La casse de ton code source ne correspond pas à ton ti83asm.inc.
Tu dois respecter les majuscules/minuscules.
Il manque probablement un C9 quelque part.
Il devrait se trouver juste après CD5547CD0D47.
Il manque probablement .org 9327h
Tu devrais utiliser une chaine de 16 caractères pour être sûr qu'elle se stocke correctement dans HL. (comme ni toi ni moi n'avons suffisamment d'expérience...)
Pour cela ajoute 2 espaces après Mem Cleared.
J'utilise spasmgui mais il ne comprend pas "ld".m@thieu41 le 20/07/2012 à 18:37
Un programmeur en ASM 83+ a finalement trouvé où se situait le pb:
mon code n'était pas indenté!
Ainsi,
Code
.NOLIST
#define end .end
#define END .end
#define equ .equ
#define EQU .equ
#include "ti83asm.inc"
#include "tokens.inc"
.LIST
call _clrLCDFull
ld hl,0003
ld (currow)
ld hl,mem
call _PUTS
ret
mem:
.db " Mem Cleared",0
.end
devient:
Code
.NOLIST
#define end .end
#define END .end
#define equ .equ
#define EQU .equ
#include "ti83asm.inc"
#include "tokens.inc"
.LIST
call _clrLCDFull
ld hl,0003
ld (currow),hl
ld hl,mem
call _PUTS
ret
mem:
.db " Mem Cleared",0
.end
Merci pour votre aide!
(Au fait, tu dis que tokens ne sert à rien ici... mais il sert à quoi en fait?)
The K le 20/07/2012 à 19:26
Non c'est une blague ça venait uniquement de retours à la ligne ?!!!!!!
Wtf du poney j'en reviens pas ...m@thieu41 le 20/07/2012 à 19:32
En fait, c'est pas vraiment un retour à la ligne, mais plutôt une tabulation

Du coup, TASM prenait ça pour une directive de compilation...et ca ne marche pas

matrefeytontias le 24/07/2012 à 23:36
Alors j'explique tout d'un coup :
Toutes les commandes assembleurs doivent commencer par un espace ou tab pour ne pas être prises pour des commandes de préprocesseur.
L'hexa 82 stats et 83+ est le même, le z80, mais les adresses et romcall changent, donc attention à avoir la bonne référence.
Il ne faut JAMAIS oublier de donner le .org à l'assembleur, ici .org $9237, pour qu'il puisse donner la bonne adresse à tes labels. L'absence de calcul automatique pousse d'ailleurs les programmeurs hexa à faire sans labels.
Le programme résiduel de OBJ83 est un programme hexa fonctionnel à éditer sur la calto ; sur un éditeur hexa PC on voit le code hexa des tokens hexadécimaux.
La meilleure manière de programmer en ASM 83 tout en sachant ce que ton code fait et où est de programmer en hexa, donc je peux que t'encourager en ce sens, mais le crayon et le papier sont tes amis : je pense en ASM avant de coder l'hexa.
Donc avec tout ça, si tu pouvais reposer la question de base ça m'aiderait ^^'
EDIT : euuuuh ...
Dafuq ? Ça existe pas ça ... Essaye ça à la place :
Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.