|
|
| Citer : Posté le 05/05/2009 12:59 |
|
| Ouai enfin c'est pas nouveau ton truc là...
|
----------------------------------
|
|
|
|
| Citer : Posté le 05/05/2009 13:08 |
|
Screen plz
|
----------------------------------Collectionneur de figurines d'animés. - WoW c'est le mal mais j'ai choisi le côté obscur
Calculatrices : G85 SD, G100+, Classpad 330 (temp), FX-CG 10
Linux, c'est le seul endroit où tu peux taper ls.
|
|
|
|
| Citer : Posté le 05/05/2009 13:32 |
|
Désolé on peut pas faire de screen. Normal c'est pas un programme en Basic mais une commande en langage machine.
Sinon Matronix je sais que c'est pas nouveau à part que la je suis en train de faire une liste des matrices et des nombres avec lesquels il faut les remplir pour pouvoir faire par la suite des programmes n'utilisant que ca avec une vitesse d'execution et une rapidite bien supérieure à ce qui existe aujourd'hui.
|
----------------------------------
|
|
|
|
| Citer : Posté le 05/05/2009 15:36 |
|
| Heu ? cad ?
|
----------------------------------
|
|
|
|
| Citer : Posté le 05/05/2009 15:40 |
|
| L'idée n'est pas nouvelle mais la méthode si. L'ancienne méthode utilisait les dynagraph.
|
----------------------------------Manager de foot en ligne sympa !
|
|
|
|
| Citer : Posté le 05/05/2009 16:21 |
|
| Ha oui t'as raison, j'ai la mémoire courte !
|
----------------------------------
|
|
|
|
| Citer : Posté le 05/05/2009 17:54 |
|
Oui, c'est le bug qui affiche le contenu de la mémoire dans l'éditeur de programme. Mais c'est n'importe quoi quand tu parle de langage machine, ça n'a rien à voir.
Et puis qu'est ce que tu veux dire par "Ce code permet d'afficher un défilement très fluides de sprites animés" ? Faut pas raconter n'importe quoi.
|
| ----------------------------------Gravity Duck <> Orton <> Hard Game <> Ball Game <> Falldown <> IndestructoTank <> Aspirine
|
|
|
|
| Citer : Posté le 05/05/2009 19:14 |
|
| A quoi ca sert exactement?
|
|
|
|
| Citer : Posté le 06/05/2009 17:33 |
|
| Heu,peut-être à rien(je dis bien peut-être,car moi pas avoir G35^^)
|
---------------------------------- Par ici on peut se défouler...Banzaï!!
----------------------------------
Le seul morpion avec IA sur 25:Morp 1j vs IA.Phase de test en cours...donnez-moi votre avis!
----------------------------------
Proverbe:C'est en programmant qu'on devient programmeur...à méditer^^
|
|
|
|
| Citer : Posté le 07/05/2009 17:37 |
|
Ca m'avance bine ça...
|
|
|
|
| Citer : Posté le 08/05/2009 14:34 |
|
Oui, vous pouvez être plus précis svp, parce que tout le monde n'a pas de G35+
|
---------------------------------- PRGM 2 // Tout savoir sur sa Casio
Master 1 Aménagement du territoire - Mobilités Spatiales - (spécialité) Transports
Je ne réponds PAS aux messages privés concernant des problèmes avec la calculatrice. Merci de poser vos questions sur le forum !
|
|
|
|
| Citer : Posté le 10/05/2009 10:36 |
|
Bon,
- pour tout ceux qui ont une graph 35 et qui ne comprennent pas de quoi je parle ... vous prennez votre machine vous faites un backup puis un petit reset et vous testez ce que j'ai fait, vous comprendrez de quoi je parle : vous verrez des petits sprites carrés (je sais plus la dimension 8x8 je crois) défiler de façon super-fluide sur l'écran.
- pour tout ceux qui n'ont pas de graph 35, essayez sur la machine d'un pote, il sera ravi
Ensuite,
Oui, c'est le bug qui affiche le contenu de la mémoire dans l'éditeur de programme. Mais c'est n'importe quoi quand tu parle de langage machine, ça n'a rien à voir.
Bien sur que si ca a un lien avec le langage machine. Dans l'editeur de programmes ce que tu vois affiché est comme tu l'as dis le contenu de la mémoire. En fait ce que tu vois est en quelque sorte un retranscription de la mémoire utilisant un code similaire à l'ASCII que nous avons sur nos PC. Chaque caractère qui s'affiche à l'écran correspond a un code hexa 8 bits dans la mémoire de la machine. (Je développerais ceci à la fin de cette réponse pour ceux que ça intéresse).
Ensuite lorsque tu exécute un programme qui ouvert dans l'editeur affiche le contenu de la RAM des sprites apparaissent à l'écran et se mettent a défiler. Mais ce qui est intéressant c'est si l'on modifie le contenu de la mémoire !
En fait quand la calculatrice affiche les sprites , elle les lit a partir du contenu de la mémoire et parcourt toute la mémoire (EOM) en transformant le contenu en sprites (pourquoi ? bonne question).
Enfin bref ... tout ça pour dire qu'en modifiant le contenu de la mémoire les sprites qui vont s'afficher ne seront pas les mêmes. (La aussi je vous donnerais la preuve en fin de message).
Quand on fait Fill(truc, une matrice qui n'existe pas) que fait la machine ? c'est simple elle croit que la matrice existe mais comme elle n'est pas définit il n'y a aucun caractère de fin d'allocation de mémoire par conséquent toute la Ram de la machine va prendre la valeur #truc#. C'est un buffer overflow. On écrit sur une zone de mémoire non prévue à cette effet. Par conséquent les sprites vont s'afficher et défiler jusqu'a ce que le programme atteigne la fin de la mémoire RAM ou l'on a souvent droit a un joli sys error.
J'espère avoir été clair.
Maintenant je vais détailler deux points cité précédemment :
1) Codage des caractères dans la mémoire de la machine.
Les caractères sont codés selon un code similaires à l'ASCII comme je l'ai déja dit. A la seule différence que certains caractères présent dans l'ASCII étendu 255 caractères la calculatrice ne gère pas les accents et certains caractères comme le 'ç' le '|' et pleins d'autres. En revanche les CASIO possèdent des caractères spéciaux qui sont des caractères dans le sens ou un code hexa 8 bits leur correspond et donc qu'il sont codés sur 1 octet mais qui dans l'éditeur de programmes tiennent plus de place qu'un caractère normal. Vous m'aurez compris je parle bien sur de : sin , cos , tan , Ans , ...
Si vous ne me croyez pas je vais vous montrer deux preuves.
- Créez un programme vide (17 octets) et mettez dedans juste 'sin ' , quittez l'éditeur et regardez la taille du programme : 18 octets, cela veut bien dire que sin est codé sur 1 octet seulement. Notez que l'on aurait pu utiliser aussi bien pleins d'autres choses à la place de 'sin '.
- Autre preuve : avec la FxInterface. Lorsque vous tapez des caractères qui n'existe pas sur la calculatrice et que vous envoyez le programme sur votre machine puis que vous ouvrez le programme dans l'éditeur de la machine vous voyez que vos caractères spéciaux ont été remplacés par 'cos ', 'log ', 'Int ' ... Explication : sous windows le caractère '|' sera codé par 2A en hexa (euh... c'est pas vrai je mets n'importe quoi juste pour l'exemple) qui a pour équivalent 00101010 en binaire (ca c'est vrai), quand vous transmettez le programme la calculatrice elle recoit le code binaire, le transforme en hexa donc 2A. Mais dans son codage à elle 2A correspond au caractère 'cos ' (par exemple, j'en sais rien non plus).
Maintenant vous savez comment sont codés les caractères sur votre petite CASIO.
2) Des sprites différents selon la mémoire ?
Et oui ! tout simplement parce que le contenu de la mémoire que vous voyez dans l'éditeur correspond dans la machine a une suite de 0 et de 1. Les sprites dépendent de cette suite de 0 et de 1 (il y a très probablement 64 bits pour faire un sprite 8x8 (je doute qu'il y ait un quelconque système de compression à aussi bas niveau)). Or quand les caractères dans l'éditeur sont modifiés dans la mémoire, il y a aussi une modification de la séquence binaire. Par conséquent les sprites qui apparaissent ne sont pas les mêmes.
Vous pouvez le vérifier en faisant cette manip sur une machine resetée :
recommencez ce que je vous ai proposé au début (simuler la création d'un matrice et de la remplir ensuite). mais remplacez 123456789 par autre chose.
résultat : les sprites ne sont plus les memes. Cela vient du fait que Fill() va remplir toute la mémoire avec une valeur. Comme les sprites vont être lus à partir du contenu de la mémoire, ils vont dépendre de la valeur donnée dans le Fill().
Enfin pour finir une autre remarque. La taille donnée dans la matrice lors de sa pseudo-création à aussi une influence. Toutefois je ne sais pas du tout laquelle. Il est certain que si la dimension indiquée est strictement inférieure à 24 rien ne se passe. Après il semble que selon les valeurs les sprites vont s'afficher directement ou il faudra relancer le programme ...
Une dernière petite chose pour finir de vous embêter avec ce message un peu long, il semblerait que c'est ce système que casio utiliserait pour coder ses sprites (le menu de démarrage par exemple). j'ai fait cette supposition suite a un programme bugué qui décalait l'écran de démarrage de 8 pixels horizontalement et verticalement ou en affichant des carrés noirs dans différents menus.
Maintenant je vous laissez régir.
|
----------------------------------
|
|
|
|
| Citer : Posté le 10/05/2009 11:37 |
|
Là c'est plus clair et c'est assez intéressant j'avoue. Faudrait voir si tu peux faire passer tout ça du stade de constat de bug à un outil pour faire des petits progs
|
----------------------------------Manager de foot en ligne sympa !
|
|
|
|
| Citer : Posté le 11/05/2009 09:15 |
|
ouais, bon, j'ai pas tout compris.
Mais après avoir fait la manipe, un reset remettra tout en place comme avant?
|
|
|
|
| Citer : Posté le 11/05/2009 14:37 |
|
| Oui
|
----------------------------------
|
|
|
|
| Citer : Posté le 11/05/2009 16:12 |
|
oui le reset réinitialise tout
ce matin j'ai réussi à créer un prog assez stable qui ne modifie que très peu le comportement de la calculatrice après execution (le menu run fonctionne).
après j'ai meme réussi à créer un prog comme ceci :
Prog W:
Lbl 0
Goto 0
Ce code peut paraître stupide mais il permet d'afficher un sprite 8x8 à un endroit fixe de l'écran (la position n'est pas contrôlable).
En revanche le sprite varie selon le nom du programme.
Autre perspective intéressante :
faire une boucle lbl - goto dans lequel on met le fill.
après avoir testé j'ai obtenu une calculatrice normale (après quelques affichages de sprites) mais qui affiche une grande série de sprites qui défilent très vite dès que l'on appuye sur la touche [AC].
|
----------------------------------
|
|
|
|
| Citer : Posté le 11/05/2009 16:43 |
|
Euh au fait tu pourrais pas nous mettre une ptit vidéo, histoire de voir à quoi ca ressemble
|
|
|
|
| Citer : Posté le 11/05/2009 20:53 |
|
| C'est marrant quand même
|
----------------------------------
|
|
|
|
| Citer : Posté le 12/05/2009 09:27 |
|
Une vidéo ?
euh possible j'en ferais une par contre au niveau qualité ca risque d'être moche.
sinon c'est vrai que c'est marrant mais plus que ca c'est génial, si on arrive à maitriser cette faille on pourra bliter des sprites a 30 fps, imagine les jeux que ca fait ...
|
----------------------------------
|
|
|
|
| Citer : Posté le 12/05/2009 15:00 |
|
| Ca ferait que des "vidéos", pas de jeux non ?
|
----------------------------------
|
|