Poster un nouveau sujet Poster une réponse Page: 1,      >>
Snake en ASM
Auteur Message
Guiguititan



Autorisation : Membre
Nb de messages : 9
Inscrit le : Sam 27 Fév 2010, 12:59
Posté le : Mar 16 Nov 2010, 21:52   Citer 

Et oui j'ai créé snake en C.
C'est mon 2eme programme en C pour TI82 stat FR (fichier en .83p).
Il est très rapide et fluide! happy.gif
Attention il faut ION pour le faire marcher !
J'ai utilisé pour le créer un programme sur ordinateur qui convertit le C en asm.
Mon snake est super stable mais à la fin, après l'affichage des scores, quand on appuie sur [mode] pour quitter, il y a un petit temps de réaction avant de retourner à ION. Si pendant ce temps on appuie sur une autre touche que [mode] celà fait un "effacer mémoire". Alors faites attention !
Si vous arrivez à 75 en score il faut arreter le programe (suicide !) sinon crash mais normalement j'ai mis une protection.
Je suis en train d'étudier ce mystérieux bug. maxiangry.gif
Le point faible du programme : 5000 octets
Sinon il y a 4 vitesses : normal, difficile, très difficile et impossible frozen.gif .
À vos marques ! Prêts ! Jouez !

http://www.mediafire.com/?4jkkptjh3wnthm1 voila godgrace.gif

----------------------
que faire en math... tout sauf des maths ^^
 Adresse email Haut de page Bas de page 
 
fatal error



Autorisation : Membre
Nb de messages : 33
Inscrit le : Sam 10 Avr 2010, 17:36
Posté le : Mer 17 Nov 2010, 15:30   Citer 

sympa ton snake bigmouth.gif
sinon c'est quoi ton logiciel pour programmer en C ?

----------------------
Bill Gates voulait créer un logiciel pour l'agriculture. C'est fait! Windows Plante!
 Adresse email Haut de page Bas de page 
 
Guiguititan



Autorisation : Membre
Nb de messages : 9
Inscrit le : Sam 27 Fév 2010, 12:59
Posté le : Mer 17 Nov 2010, 18:50   Citer 

Le compilateur C est le cross compilateur zcc du Z88dk que tu peux obtenir ici :
http://www.z88dk.org/forum/
Il y a quelques ruses au moment de l'installation, donc si tu as des problèmes n'hésites pas happy.gif

Les commandes utilisées pour compiler sont :
zcc +ti83 -lm -startup=9 mon_prog.c
bin2var a.bin mon_prog.83p

----------------------
que faire en math... tout sauf des maths ^^
 Adresse email Haut de page Bas de page 
 
fatal error



Autorisation : Membre
Nb de messages : 33
Inscrit le : Sam 10 Avr 2010, 17:36
Posté le : Mer 17 Nov 2010, 19:11   Citer 

merci beaucoup. Sinon pour ton bugs des 75 points ça doit être du au stockage de la liste, qui est assez mal fichu sur ti (problème similaire avec axe parser sur ti 83 plus).

Edit: comment on le lance?

----------------------
Bill Gates voulait créer un logiciel pour l'agriculture. C'est fait! Windows Plante!
 Adresse email Haut de page Bas de page 
 
Guiguititan



Autorisation : Membre
Nb de messages : 9
Inscrit le : Sam 27 Fév 2010, 12:59
Posté le : Mer 17 Nov 2010, 19:56   Citer 

Le programme n'utilise pas les listes de la TI, mais un tableau déclaré en C.
Comment on lance quoi ?

----------------------
que faire en math... tout sauf des maths ^^
 Adresse email Haut de page Bas de page 
 
fatal error



Autorisation : Membre
Nb de messages : 33
Inscrit le : Sam 10 Avr 2010, 17:36
Posté le : Jeu 18 Nov 2010, 13:23   Citer 

le compilateur happy.gif
Et puis sinon je parle pas des listes basic mais de celles en assembleur. La liste (1ère valeur) démarre à un pointeur et pour obtenir les autres valeurs il choisit les emplacements suivant cette adresse. Et en général ça finit par accéder à n'importe quoi et la calculatrice plante. En asm classique ça plante pas mais les shells font n'importe quoi et la calculatrice crash.

----------------------
Bill Gates voulait créer un logiciel pour l'agriculture. C'est fait! Windows Plante!
 Adresse email Haut de page Bas de page 
 
metallica



Autorisation : Membre
Nb de messages : 108
Inscrit le : Lun 28 Jui 2010, 11:14
Posté le : Jeu 18 Nov 2010, 18:17   Citer 

N'y a-t-il pas un moyen de remettre le pointeurs à zéro au début du programme ?

----------------------

Tutoriel sur l'Axe Parser !
 Adresse email Haut de page Bas de page 
 
fatal error



Autorisation : Membre
Nb de messages : 33
Inscrit le : Sam 10 Avr 2010, 17:36
Posté le : Jeu 18 Nov 2010, 18:38   Citer 

c'est pas le problème de remettre le pointeur à 0, c'est que la liste s’étend sur des adresses mémoires déjà prises. ( avec 2 listes sur axe parser les valeurs X et Y de mon snake finissaient par se mélanger... ). Sinon essaye de voir si tu peut initialiser le tableau avec 100 valeurs par exemple.

----------------------
Bill Gates voulait créer un logiciel pour l'agriculture. C'est fait! Windows Plante!
 Adresse email Haut de page Bas de page 
 
metallica



Autorisation : Membre
Nb de messages : 108
Inscrit le : Lun 28 Jui 2010, 11:14
Posté le : Jeu 18 Nov 2010, 18:43   Citer 

Tu es sûr. Il me semble qu'il y a plus de 65000 adresses disponibles pour le pointeurs.

----------------------

Tutoriel sur l'Axe Parser !
 Adresse email Haut de page Bas de page 
 
Rézus



Autorisation : Membre
Nb de messages : 853
Inscrit le : Sam 20 Jui 2009, 20:35
Posté le : Jeu 18 Nov 2010, 19:12   Citer 

Faudra que je me mettes à l'asm.

 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
fatal error



Autorisation : Membre
Nb de messages : 33
Inscrit le : Sam 10 Avr 2010, 17:36
Posté le : Jeu 18 Nov 2010, 19:16   Citer 

je sais, mais la ti met les listes bout à bout ce qui fait que les deux prennent les valeurs de l'autre si on les agrandi, et ça finit par planter... Enfin c'est comme ça avec l'axe parser, avec son logiciel j'en sais rien...

----------------------
Bill Gates voulait créer un logiciel pour l'agriculture. C'est fait! Windows Plante!
 Adresse email Haut de page Bas de page 
 
metallica



Autorisation : Membre
Nb de messages : 108
Inscrit le : Lun 28 Jui 2010, 11:14
Posté le : Jeu 18 Nov 2010, 19:21   Citer 

Et en paramétrant la taille de la liste avec Getcalc, il y a pas moyen ?

Dans la documentation de Axe Parser c'est écrit:
Creates an application variable in RAM, with the name pointed to, and makes it Size bytes. Returns a pointer to the start of data, or zero if there was not enough RAM. Overwrites existing appvar, even if it was in archive.

----------------------

Tutoriel sur l'Axe Parser !
 Adresse email Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Jeu 18 Nov 2010, 19:38   Citer 

si seulement j'étais fort en Anglais.

je me méfie des traducteurs web.surtout en progra.

 Adresse email Haut de page Bas de page 
 
fatal error



Autorisation : Membre
Nb de messages : 33
Inscrit le : Sam 10 Avr 2010, 17:36
Posté le : Jeu 18 Nov 2010, 20:08   Citer 

Avec l'axe parser j'ai utilisé Lx, qui bénéficie d'emplacements beaucoup plus gros, ce qui évite donc le mélange des listes, contrairement à GBDx, qui lui me crashait la calculatrice si j'étendait la liste.

PS: Tu utilise des appvars pour les listes toi?

----------------------
Bill Gates voulait créer un logiciel pour l'agriculture. C'est fait! Windows Plante!
 Adresse email Haut de page Bas de page 
 
Guiguititan



Autorisation : Membre
Nb de messages : 9
Inscrit le : Sam 27 Fév 2010, 12:59
Posté le : Jeu 18 Nov 2010, 20:26   Citer 

Bon, je vais essayer de répondre aux deux problèmes dans l'ordre : comment lancer le compilo et le problème des tableaux.
Si tout va bien le compilateur a du s'installer dans le répertoire par défaut c:\program files\z88dk. Mon expérience est qu'il ne faut pas tenter de l'installer ailleurs car après c'est galère.
Le compilateur est un programme DOS, et le mieux, pour compiler, est de créer un petit fichier batch. Le mien est le suivant (je l'ai appelé make.bat) :

Code
zcc +ti83 -lm -startup=9 %1.c
bin2var a.bin %1.83p


Ainsi en lançant make mon_prog il compile mon_prog.c et fabrique un fichier mon_prog.83p.
Il faut également terminer un peu l'installation car en général il manque un bout. Pour cela il faut aller dans les variables d'environnement. Sur ma machine XP c'est click-droit et "propriété" sur l'icône "Poste de travail"; sélectionner l'onglet "avancé" puis "variables d'environnement".
Sur mon Windows 7 c'est "Ordinateur" "Propriétés" puis "Paramètres système avancés" et "variables d'environnement".
Dans "variables système" vérifier que la variable "Path" contient bien le chemin d'accès au répertoire du compilateur (C:\Program Files\z88dk\bin). Sinon le rajouter.
En y étant, vérifier dans la partie "Variables utilisateur" que les variables suivantes existent et ont les bonnes valeurs :
    Z80_OZFILES = C:\Program Files\z88dk\lib
    ZCCCFG = C:\Program Files\z88dk\lib\config\

A ce stade tu devrais pouvoir compiler ton premier programme. Lors de l'installation un répertoire avec des exemples a été créé. Tu peux déjà essayer de les compiler.
Je sais qu'il y a également un bug dans ti83_crt0.asm. C'est facile à trouver et à corriger : la compil plante sur une ligne de commentaire (vers la ligne 440) qui n'est pas précédée d'un point-virgule comme il se doit en assembleur.

Personnellement pour me faciliter la vie j'utilise PSPad comme éditeur et je l'ai configuré pour qu'il me lance le fichier batch et m'affiche les erreurs.

Maintenant le second point : les tableaux.
Il faut que je continue à creuser, mais le programme suivant qui alloue pourtant 2 fois 400 octets fonctionne très bien (sur VTI du moins, car j'ai pas eu le temps de le transférer sur la calculatrice) :

Code


#include <stdio.h>
#pragma string name Hello World

int px[200];
int py[200];

main()
{
   int i;
   int err;


   for (i=0; i<200; i++) px[i]=i+1;
   for (i=0; i<200; i++) py[i]=i+1000;

   err=0;
   for (i=0; i<200; i++)
   {
      if (px[i]!=i+1) err++;
   }
   for (i=0; i<200; i++)
   {
      if (py[i]!=i+1000) err++;
   }
   printf ("Erreurs : %u\n",err);
}



A suivre...

----------------------
que faire en math... tout sauf des maths ^^
 Adresse email Haut de page Bas de page 
 
fatal error



Autorisation : Membre
Nb de messages : 33
Inscrit le : Sam 10 Avr 2010, 17:36
Posté le : Jeu 18 Nov 2010, 20:38   Citer 

Tu as utilisé ma technique?
Sinon est-ce que t'es obligé d'attribuer des valeurs à ton tableau ou tu peut le le laisser non initialisé pour attribuer les valeurs plus tard, lorsque le snake s’agrandit? (je t'avoue que je m'y connait 100x plus en C++ qu'en C)

----------------------
Bill Gates voulait créer un logiciel pour l'agriculture. C'est fait! Windows Plante!
 Adresse email Haut de page Bas de page 
 
Guiguititan



Autorisation : Membre
Nb de messages : 9
Inscrit le : Sam 27 Fév 2010, 12:59
Posté le : Jeu 18 Nov 2010, 21:37   Citer 

Non, bien sur que tu n'es pas obligé de remplir le tableau au départ ! Mais j'ai rempli les deux tableaux avec des valeurs différentes pour être sur qu'ils ne s'écrasaient pas l'un l'autre.
Par contre j'ai eu un peu de mal à suivre votre discussion, en particulier je ne connais pas Axe Parser.

----------------------
que faire en math... tout sauf des maths ^^
 Adresse email Haut de page Bas de page 
 
fatal error



Autorisation : Membre
Nb de messages : 33
Inscrit le : Sam 10 Avr 2010, 17:36
Posté le : Ven 19 Nov 2010, 10:09   Citer 

l'axe parser c'est tout d'abord sur ti 83+/ti 84+ (normal que tu connaisse pas), et tout comme le C/C++, c'est un mix entre le basic et l'assembleur. Sinon j'espère qu'en remplissant les tableaux avec 200 valeurs chacun ça devrait marcher (plus longtemps).

----------------------
Bill Gates voulait créer un logiciel pour l'agriculture. C'est fait! Windows Plante!
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
-Coco-



Autorisation : Membre
Nb de messages : 149
Inscrit le : Sam 28 Nov 2009, 16:09
Posté le : Sam 20 Nov 2010, 13:35   Citer 

Moi j'utilise la technique bourrin, je code directement en ASM.
Au début c'était dur, puis j'ai enfin réussi à comprendre, puis à faire moi même un programme qui disait "Hello Wolrd" bigmouth.gif
Ensuite, j'ai commencé à m'améliorer petit à petit et j'ai su faire des affichages de sprites, et déplacement.
Le gros problème du compilateur de Guiguititan, c'est probablement le fait qu'un programme qui affiche un sprite tout simple fait 3500 octets, alors qu'avec la méthode psychopathe qui consiste à coder en assembleur, celui ci fait 60 octets.
Par contre, son truc est beaucoup, beaucoup plus simple, et si vous avez de la RAM de libre je vous conseille fortement de commencer l'ASM par là.

 Adresse email Haut de page Bas de page 
 
fatal error



Autorisation : Membre
Nb de messages : 33
Inscrit le : Sam 10 Avr 2010, 17:36
Posté le : Mar 23 Nov 2010, 19:09   Citer 

J'ai cerné le problème ! : ion

J'ai tout simplement eu le même bug que toi ( avec mon snake développé grâce à l'axe parser encore une fois ) lorsque la liste a dépassé les 80 valeurs. En le compilant pour ion et en le démarrant avec mirageOS, ça m'as surpris, en freezant la calulatrice et affichant un code bizarre à la place du score...
En le compilant ensuite sans shell, ça a marché nickel.

Si tu souhaite éliminer ce fâcheux bug, compile le sans shell ( devoir le démarrer avec Envoi(9) ).

----------------------
Bill Gates voulait créer un logiciel pour l'agriculture. C'est fait! Windows Plante!
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse Page: 1,      >>





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2024 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink