[AXE] Sprite & Tile Maker
5 participants
Page 1 sur 2
Page 1 sur 2 • 1, 2
[AXE] Sprite & Tile Maker
Salut, je suis en train de créer un programme en Axe Parser permettant de créer ses propres sprites directement sur la calculatrice. (Je sais que de nombreux programmes de ce genre existent déjà, mais la plupart sont en TI-BASIC et c'est l'occasion d'utiliser la 2ème partie du tutoriel de kindermoumoute sur les Datas.)
Je posterai ma source quand j'aurai suffisamment avancé.
Je posterai ma source quand j'aurai suffisamment avancé.
Re: [AXE] Sprite & Tile Maker
Cool, un éditeur de sprite en Axe, ça m'intéresse !
J'en implémenterai surement un dans mon jeu de worms, ainsi qu'un éditeur de map.
J'en implémenterai surement un dans mon jeu de worms, ainsi qu'un éditeur de map.
kindermoumoute- Or 4
- Sexe :
Age : 30
Messages : 797
Date d'inscription : 07/10/2010
Points Forum : 21
Points Concours : 1
Langages :- - TI-Basic Z80
- - Axe Parser
- - TI-83+
Re: [AXE] Sprite & Tile Maker
Pour le moment j'ai commencé, mais je pense que je vais bloquer pour l'utilisation de la liste 1 (Qui correspond ici aux chiffres binaires les uns après les autres.) et la conversion en hexadécimal.
Re: [AXE] Sprite & Tile Maker
La deuxième partie de mon tutoriel est sortie, avec un chapitre suer les listes.
Pour la conversion en hexadécimal, tu as la commande EXP▶Hex qui convertit le nombre en chaîne de caractère. Par chance, les caractères ASCII des lettres de l’alphabet, ainsi que des chiffres correspondent à la même valeur pour les token (et seulement ceux là). Je crois que ce sont des tokens à mettre dans les chaine Str de la calculatrice.
Pour la conversion en hexadécimal, tu as la commande EXP▶Hex qui convertit le nombre en chaîne de caractère. Par chance, les caractères ASCII des lettres de l’alphabet, ainsi que des chiffres correspondent à la même valeur pour les token (et seulement ceux là). Je crois que ce sont des tokens à mettre dans les chaine Str de la calculatrice.
kindermoumoute- Or 4
- Sexe :
Age : 30
Messages : 797
Date d'inscription : 07/10/2010
Points Forum : 21
Points Concours : 1
Langages :- - TI-Basic Z80
- - Axe Parser
- - TI-83+
Re: [AXE] Sprite & Tile Maker
J'ai fini ou presque la partie graphique de SPRMAKER, je passe maintenant à la partie la plus difficile: la partie avec les calculs. Et je suis encore pas trop sur d'utiliser la liste 1 pour le calcul des valeurs, je vais voir si je peux créer quelque chose ressemblant à des matrices en TI-BASIC.
Vous pouvez télécharger la version 0.1 ici.
Une petite image:
[Vous devez être inscrit et connecté pour voir cette image]
HS: Au faite pour une fois je fais un programme en Axe Parser, donc adieu le rappel des images.
Edit: Je pense finalement stoker la valeur dans une data. Par contre existe-t-il un moyen de remplir une data sans être obligé de mettre Data(0,0,0,0,0,0,0,0,0... [x64])→GDB1 ?
Dans mon cas je pense faire ça:
Si le pixel est noir: 1→{GDB1+X+8*Y}
Et ensuite pour convertir en hexadécimal je prendrai le nombre binaire de 8 en 8 afin de créer le code final.
(Si vous avez des remarques n'hésitez pas.)
Vous pouvez télécharger la version 0.1 ici.
Une petite image:
[Vous devez être inscrit et connecté pour voir cette image]
HS: Au faite pour une fois je fais un programme en Axe Parser, donc adieu le rappel des images.
Edit: Je pense finalement stoker la valeur dans une data. Par contre existe-t-il un moyen de remplir une data sans être obligé de mettre Data(0,0,0,0,0,0,0,0,0... [x64])→GDB1 ?
Dans mon cas je pense faire ça:
Si le pixel est noir: 1→{GDB1+X+8*Y}
Et ensuite pour convertir en hexadécimal je prendrai le nombre binaire de 8 en 8 afin de créer le code final.
(Si vous avez des remarques n'hésitez pas.)
Re: [AXE] Sprite & Tile Maker
Je pense qu'il faut agir directement sur une sprite, qui tiens donc en 8 octets.
kindermoumoute- Or 4
- Sexe :
Age : 30
Messages : 797
Date d'inscription : 07/10/2010
Points Forum : 21
Points Concours : 1
Langages :- - TI-Basic Z80
- - Axe Parser
- - TI-83+
Re: [AXE] Sprite & Tile Maker
Je dirais même mieux : en temps réel. Ton programme sera assez rapide pour afficher bit par bit les carrés (noir ou blanc) à partir de 8 octets. La petite sprite de droite s'affiche directement avec un Pt-On, mais la grande est une sorte de tilemap ultra-compressée (c'est toujours le même principe).
kindermoumoute- Or 4
- Sexe :
Age : 30
Messages : 797
Date d'inscription : 07/10/2010
Points Forum : 21
Points Concours : 1
Langages :- - TI-Basic Z80
- - Axe Parser
- - TI-83+
Re: [AXE] Sprite & Tile Maker
J'y avais pensé mais renoncé à cause de la vitesse, mais si tu dis qu'elle ne sera presque pas alternée.
Sinon pour créer le code hexadécimal je compte procéder ainsi:
- Avec des "Pxl-Test(" on transcrit ligne par ligne l'octet composé de 8 bits.
- Une fois les 8 lignes transcrites, on les convertit en hexadécimal puis on les met les uns à la suite pour former le code du sprite.
Par contre la question est où stocker les octets et comment les ajouter les uns après les autres pour formé le code du sprite ?
Sinon pour créer le code hexadécimal je compte procéder ainsi:
- Avec des "Pxl-Test(" on transcrit ligne par ligne l'octet composé de 8 bits.
- Une fois les 8 lignes transcrites, on les convertit en hexadécimal puis on les met les uns à la suite pour former le code du sprite.
Par contre la question est où stocker les octets et comment les ajouter les uns après les autres pour formé le code du sprite ?
Re: [AXE] Sprite & Tile Maker
Mais si tu utilise 8 octets qui affichent en temps réel, tu n'as plus qu'à faire :
Pour sauvegarder c'est déjà un peu plus compliqué, mais je pense que ces fonctions pourront t'aider :
- Code:
:For(A,0,7)
:Output(A,0,{L1}>Hex
:End
Pour sauvegarder c'est déjà un peu plus compliqué, mais je pense que ces fonctions pourront t'aider :
- Code:
:"Str0"→Str0
:
:.Fonction qui convertit les 8 premiers octets de la liste 1 dans une vrai Str0 de la calculatrice
:Lbl S2H
:If GetCalc(Str0)
:DelVar Str0
:End
:UnArchive Str0
:If GetCalc(Str0)
:DelVar Str0
:End
:.Sachant qu'un caractère prend la place d'un octet, 8 octets * 2 caractère hexadécimaux = 16
:GetCalc(Str0,16)→P
:P-2→B
:.On répète 8 fois (pour 8 octets)
:For(A,L1,L1+7)
:{sub(O2H,{A})}r→{B+2→B}r
:End
:Archive P
:Return
:
:.Espace utilisé temporairement pour la conversion
:[]→Str0HB
:det(3)
:
:.Convertit un Octet en Hexadécimal
:Lbl O2H
:iPart(°r1*2}sub(N2H)→{Str0HB}r
:iPart(°r1*2+1}sub(N2H)→{Str0HB+1}r
:Str0HB
:Return
:
:.Convertit un Nibble (la moitié d'un octet) en un caractère hexadécimal
:Lbl N2H
:[]→Str0HC
:"0123456789ABCDEF"
:{+Str0HC}
:Return
kindermoumoute- Or 4
- Sexe :
Age : 30
Messages : 797
Date d'inscription : 07/10/2010
Points Forum : 21
Points Concours : 1
Langages :- - TI-Basic Z80
- - Axe Parser
- - TI-83+
Re: [AXE] Sprite & Tile Maker
Sans avoir pour le moment pris compte de ton message je poste la version 0.5 que j'ai fais cet après-midi.
J'ai réussi à stocker le code dans "Pic1" qui est désormais un véritable sprite qui s'affiche à droite de l'écran. (Il est recalculé à chaque fois que la boucle est exécutée à partir du quadrillage, de plus la vitesse n'est presque pas plus faible.)
J'ai aussi ajouté une option pour inverser le sprite en appuyant sur [MODE] et une pour effacer le sprite en appuyant sur [DEL].
Il me manque pour le moment le stockage du code dans la variable "Str1" et l'affichage à l'écran qui me pose problème. C'est exactement ce que tu m'as décris plus haut, et je vais en prendre compte.
(Sinon pour la conversion de binaire à décimal j'ai un peu bidouillé avec l'absence de puissance en Axe Parser. Si tu as une autre méthode que tous les "If " préviens-moi.)
J'ai réussi à stocker le code dans "Pic1" qui est désormais un véritable sprite qui s'affiche à droite de l'écran. (Il est recalculé à chaque fois que la boucle est exécutée à partir du quadrillage, de plus la vitesse n'est presque pas plus faible.)
J'ai aussi ajouté une option pour inverser le sprite en appuyant sur [MODE] et une pour effacer le sprite en appuyant sur [DEL].
Il me manque pour le moment le stockage du code dans la variable "Str1" et l'affichage à l'écran qui me pose problème. C'est exactement ce que tu m'as décris plus haut, et je vais en prendre compte.
(Sinon pour la conversion de binaire à décimal j'ai un peu bidouillé avec l'absence de puissance en Axe Parser. Si tu as une autre méthode que tous les "If " préviens-moi.)
Re: [AXE] Sprite & Tile Maker
Les puissances sont présentes en Axe je crois... (au pire du peux te débrouiller facilement).
Mais ce que je cherche à te faire comprendre, c'est que justement on ne cherche pas à compresser un code à la fin, mais à décompresser un code en temps réel.
Mais ce que je cherche à te faire comprendre, c'est que justement on ne cherche pas à compresser un code à la fin, mais à décompresser un code en temps réel.
kindermoumoute- Or 4
- Sexe :
Age : 30
Messages : 797
Date d'inscription : 07/10/2010
Points Forum : 21
Points Concours : 1
Langages :- - TI-Basic Z80
- - Axe Parser
- - TI-83+
Re: [AXE] Sprite & Tile Maker
J'ai pas très bien compris...
Sinon voici la version 0.9. Grâce au code de kindermoumoute le code hexadécimal est stocké dans "Str1".
Si vous avez des conseils pour améliorer la source prévenez-moi avant que je publie la version 1.0.
Sinon voici la version 0.9. Grâce au code de kindermoumoute le code hexadécimal est stocké dans "Str1".
Si vous avez des conseils pour améliorer la source prévenez-moi avant que je publie la version 1.0.
Re: [AXE] Sprite & Tile Maker
Je n'ai pas lu le code, mais cela me paraît bien. Les routines que je t'ai montrées ont été faite par runer112 : ici.
kindermoumoute- Or 4
- Sexe :
Age : 30
Messages : 797
Date d'inscription : 07/10/2010
Points Forum : 21
Points Concours : 1
Langages :- - TI-Basic Z80
- - Axe Parser
- - TI-83+
Re: [AXE] Sprite & Tile Maker
Bon j'ai réussis à faire afficher le code en temps réel. Voici la version Beta.
Cependant je me suis aperçu que les octets étaient stockés à l'envers dans "Str1", ce qui fait que la partie gauche de l'image se retrouve à droite et vice versa.
Exemple: Le sprite "1234567890ABCDEF" est enregistré en tant que "2143658709BADCFE" dans "Str1"...
Une idée kindermoumoute ?
Cependant je me suis aperçu que les octets étaient stockés à l'envers dans "Str1", ce qui fait que la partie gauche de l'image se retrouve à droite et vice versa.
Exemple: Le sprite "1234567890ABCDEF" est enregistré en tant que "2143658709BADCFE" dans "Str1"...
Une idée kindermoumoute ?
Re: [AXE] Sprite & Tile Maker
J'imagine que ces lignes là :
As tu trouvé une solution ?
- Code:
:iPart(°r1*2}sub(N2H)→{Str0HB}r
:iPart(°r1*2+1}sub(N2H)→{Str0HB+1}r
- Code:
:iPart(°r1*2+1}sub(N2H)→{Str0HB}r
:iPart(°r1*2}sub(N2H)→{Str0HB+1}r
As tu trouvé une solution ?
kindermoumoute- Or 4
- Sexe :
Age : 30
Messages : 797
Date d'inscription : 07/10/2010
Points Forum : 21
Points Concours : 1
Langages :- - TI-Basic Z80
- - Axe Parser
- - TI-83+
Re: [AXE] Sprite & Tile Maker
C'est bon ça marche nickel !
Merci beaucoup je publie la version 1.0 aujourd'hui.
Merci beaucoup je publie la version 1.0 aujourd'hui.
Re: [AXE] Sprite & Tile Maker
Cool, je vais tester ça !
EDIT : pour les grayscales, ça ne devrait pas être très compliqué je pense.
EDIT : pour les grayscales, ça ne devrait pas être très compliqué je pense.
kindermoumoute- Or 4
- Sexe :
Age : 30
Messages : 797
Date d'inscription : 07/10/2010
Points Forum : 21
Points Concours : 1
Langages :- - TI-Basic Z80
- - Axe Parser
- - TI-83+
Re: [AXE] Sprite & Tile Maker
Pour le source, ce serait bien de l'inclure directement dans le fichier de téléchargement, et non pas mettre des liens provisoires bourrés de pubs.
PS : Ce que tu appelle ça est aussi [Vous devez être inscrit et connecté pour voir ce lien].
- Spoiler:
- Un petit truc qui me titille :
- Code:
:rect(3,3,41,41
:rectI(2,2,40,40
- Code:
:rect(3,,41,
:rect(2,,40,
Ce code :- Code:
:For(A,0,8
: Line(2,5*A+2,41,5*A+2
: Line(5*A+2,2,5*A+2,41
:End
- Code:
:For(A,0,8
: Line(2,5*A+2=>r1,41,r1
: Line(r1,2,r1,41
:End
- Code:
:For(A,0,8
:Rect(2,5*A+2=>r1,39,0
:Rect(r1,2,0,39
:End
A partir de ça, revoie tout ton code pour transformer les rectI en rect (même si il faut rajouter une ou deux ligne), et les Line en petits carrés.
Ce code :- Code:
sub(0,15
:Return
- Code:
15=>r1
:Goto 0
Ce calcul : 13+(8*(7-F))
Revient à celui là en Axe : 7-F*8+13
Et réduit de plusieurs octets la taille du programme.
De même que : Pic1+(7-F)
Revient à : Pic1+7-F
Ce code est surement simplifiable :- Code:
!If G
: F+128→F
:End
:If G=1
: F+64→F
:End
:If G=2
: F+32→F
:End
:If G=3
: F+16→F
:End
:If G=4
: F+8→F
:End
:If G=5
: F+4→F
:End
:If G=6
: F+2→F
:End
:If G=7
: F+1→F
:End
PS : Ce que tu appelle ça est aussi [Vous devez être inscrit et connecté pour voir ce lien].
kindermoumoute- Or 4
- Sexe :
Age : 30
Messages : 797
Date d'inscription : 07/10/2010
Points Forum : 21
Points Concours : 1
Langages :- - TI-Basic Z80
- - Axe Parser
- - TI-83+
Re: [AXE] Sprite & Tile Maker
Bonne chance à toi. :D
kindermoumoute- Or 4
- Sexe :
Age : 30
Messages : 797
Date d'inscription : 07/10/2010
Points Forum : 21
Points Concours : 1
Langages :- - TI-Basic Z80
- - Axe Parser
- - TI-83+
Re: [AXE] Sprite & Tile Maker
Ça risque de ne pas être trop dur vous que tu m'as déjà mâché le travail.
Re: [AXE] Sprite & Tile Maker
je vois que le prog a été uploadé sur Ti calc.
persalteas- Platinum 2
- Sexe :
Age : 29
Messages : 2068
Date d'inscription : 30/06/2010
Etudes : PACES (médecine)
Points Forum : 114
Points Concours : 10
Langages :- - TI-Basic Z80
- - xLib
- - Grammer
- - TI-Basic Nspire
- - TI-82 Stats.fr
- - TI-83
- - TI-83+
- - TI-84+ SE
- - TI-86
- - TI-Nspire
- - TI-Nspire CX
- - Casio Collège
- - Casio Graph
Page 1 sur 2 • 1, 2
Sujets similaires
» [AXE] Sprite & Tile Maker
» [PROG]editeur de sprite et tile.
» RPG Maker TI
» [AXE] Problème avec l'utilisation de "Doors CS Header Maker".
» [BASIC] Text Sprite
» [PROG]editeur de sprite et tile.
» RPG Maker TI
» [AXE] Problème avec l'utilisation de "Doors CS Header Maker".
» [BASIC] Text Sprite
Page 1 sur 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum