1

Voila
je voudrais creer des niveaux qu'on puisse charger a partir dun jeu sur la TI (dans des fichiers)
les niveaux sont faits dune facon simple : chaque niveau est une matrice avec des nombres allant de 0 a 20 et quelques
mais je voudrais que les packs de niveaux soient faits sur l'ordi avec une appli en C ou VB (ca on sen fout) mais que cette appli crée un fichier et qu'il n'y aura plus qu'a l'envoyer a la ti avec graphlink (ou les autres)

pas besoin de cryptage (tant pis pour ceux qui mettront nimporte quoi dans le fichier)
seulement il faut que je sache comment faire pour que sur la ti on se retrouve avec un fichier avec le nom choisi (lextension nimporte quel nom 'clvl' par exemple) et avec un contenu lisible

sinon jaurais peut-etre aussi besoin d'aide pour la manipulation des chaines (je c pa si il existe autre chose que les char , que je ne sais meme pas utliser correctement)
(oui je suis un newbie sick ...)

merci

2

Alors ce que tu demande demande beaucoup de travail.
Déjà faut identifier le format de tes niveaux (un format le plus petit possible et le pls rapide)
Puis ensuite faut créer une application sur PC avec VB ou autre qui convertie ton format en code binaire pure. Avant ça faut que tu réfléchit à la fonction de lecture des niveaux pour voir si il faut une table d'offsets ou une autre méthode.
Après en C tu fait la fonction qui lit les niveaux. Tu pointe sur ta variable avec un SYM_ENTRY et tu lit le contenu du handle....

Je ne peux pas de donner de réponse plus précise car il faut que ta question soit plus précise. smile
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

3

mais avec la fonction fopen et tout on peut pas ???
ensuite il faudrait connaitre le code pour créer un fichier mais euh enfin voila quoi...
sym_entry ? handle ? c noms me disent quelque chose mais je sais pas du tout ce que c'est...
les formats de niveaux ? ben jaurais vu comme une matrice mais sans les "{ }"

(si tu pouvais dévelloper un peu tes explication svp)

4

Un petit exemple. Tes niveaux se présente sous forme de matrice fixe de 8x8 (c'est un exemple) Chaque octet correspond à un image. Donc en C ça peut donner ça:

matrice[8][8]={{1,5,6,8,4,7,4,5},
{8,5,6,8,4,1,52,41},
{241,33,85,42,41,85,96,32},
{8,5,6,8,4,1,52,41},
{8,5,6,8,4,1,52,41},
{8,5,6,8,4,1,52,41},
{8,5,6,8,4,1,52,41},
{8,5,6,8,4,1,52,41}};

Donc ça c'est la matrice de ton niveau. Comme je le dis chaque octet correspond à une image,exemple 8 c'est un mur...

Il faudrat donc que sur PC en VB ou en C que tu fasse un logiciel qui identifie les images, qui les numérotes. Mais ton fichier qui contiendera ta matrice aura un contenu linéaire:

Dans ton fichier ça donnera:
1,5,6,8,4,7,4,5,8,5,6,8,4,1,52,41,241,33,85,42,41,85,96,32,8,5,6,8,4,1,52,41,8,5,6,8,4,1,52,41,8,5,6,8,4,1,52,41,8,5,6,8,4,1,52,41,8,5,6,8,4,1,52,41

Or il faut que ça soit du pure binaire.

Une fois cette étape crée il faut faire la variable exploitable sur TI qui contiendera ta matrice. Il faut pour ça utiliser les outils de TIGCC. ttextract...

Maintenant reste ta fonction en C qui elle aurat pour but d'ouvrir cette variable et de la lire.
Tu peux utiliser fopen....
A savoir que tu lira le contenu linéairement donc tu serat que tout les 8 octets tu arrive à une autre liste de ta matrice...


avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

5

geogeo :
Mais ton fichier qui contiendera ta matrice aura un contenu linéaire:

Dans ton fichier ça donnera:
1,5,6,8,4,7,4,5,8,5,6,8,4,1,52,41,241,33,85,42,41,85,96,32,8,5,6,8,4,1,52,41,8,5,6,8,4,1,52,41,8,5,6,8,4,1,52,41,8,5,6,8,4,1,52,41,8,5,6,8,4,1,52,41

on peut pas utliser un truc style '\n' ???

sinon pour le soft la création du niveau jusqu'au codage ca devré etre bon (cf http://nitro.120.free.fr/oldd/chipedit.zip)

tu as raison sur le codage du niveau seulement jaurais aimé (mais ce sera plus tard) que la taille des niveraux puisse varier (taille précisé quelque part étant donné quelle ne peut pas etre déduite)

6

Il y a plein de méthode de coadage de ton fichier, vraiment plein. Tu utile combien d'images dans ton programme?

La méthode que je t'ai proprosé est la très rapide mais assez compliqué.

SI tu veut une taille fixe, tu peut créer une table spécial qui renseigne ta matrice avec 2 octets.


Du genre:

octet=Taille de la table (n° d'octets)
octet=Taille de la matrice1 en x
octet=Taille de la matrice1 en y
octet=Taille de la matrice2 en x
octet=Taille de la matrice2 en y
octet=Taille de la matrice3 en x
octet=Taille de la matrice3 en y
...
octet,octet,octet...=La matrice 1
octet,octet,octet...=La matrice 2
...

Dans ce format tu peut mettre plusieurs niveaux dans 1 fichiers et les repérer facilement via la table. Il reste aussi à la traiter avec un programme.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

7

et si tu n'as que 10 sprites en tout pour faire un niveau, teste chaque décimale et écrit que sur un entier pour chaque ligne

8

geogeo >> javais pensé a ce codage (c meme celui que javais lintention dutiliser)
nEUrOO & geogeo >> 28 sprites je crois
(et si jutilisais la base 28 ? ah non merde parce que il faut des lettres quand c > 10)

COMMENT LE DECODER C CA MA QUESTION
NiTrO120 :
seulement il faut que je sache comment faire pour que sur la ti on se retrouve avec un fichier avec le nom choisi (lextension nimporte quel nom 'clvl' par exemple) et avec un contenu lisible

sinon jaurais peut-etre aussi besoin d'aide pour la manipulation des chaines (je c pa si il existe autre chose que les char , que je ne sais meme pas utliser correctement)

9

Dans le cas de plus de 10 sprite, et bas tu ne peux que faire en binaire pure. Ou sinon ça sera trop compliqué. sad

Ah non:
Tu peut utiliser un codage comme tu le dit base 28. smile

0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R ou chaque chiffre et lettre représente une image. smile

Puis en yant fait ton fichier avec que ça tu utilise TOVAR qui trasnforme ça en variable
http://perso.wanadoo.fr/tisofts/divers/TOVAR.EXE

Puis e ligne de commande: tovar -92 niv niveau1.niv niveau1 main

-92 ou -89=Suivant le model de calculatrice
niv=extension
niveau1.niv=ton ficheir qui conteint ta matrice sous le format précédent. smile
niv1=nom dans la calculatrice max 8 caractères.
main=répertoire où ce trouvera niveau1

En C après tu fait une fonction. Alors là c'est autre chose:
Donc pour avoir le sym de ton fichier niveau1 dans la calculatice tu fait:

SYM_ENTY *sym;
sym=SymFind ("niveau1");

Un sym contient plein d'infos, regarde dans la doc de TIGCC pour voir à quoi ça ressemble.

Pour extraire le handle (zone mémoire réservé pour le programme, dans ce cas contient ta matrice.

Donc:

void *ptr;
ptr=HeapDeref(sym->handle);

Et là tu as ton pointeur.
Reste à parourir les données.

for (i=0;i<7,i++)
{
....
if (*(BYTE*)(ptr+i))=='9') {};
else if (*(BYTE*)(ptr+i))=='A') {};
...
}

Ici j'extrait les 8 premier octet et je les testes...
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

10

g pas tout lu mais bon merci je v lire ca ce soir

au fete ton truc : erreur 404 couic
je pourrais faire un batch par contre je connais pas le vb (ni aucun langage dans ce style , je laurais bien fait en mirc scripting mais yen a qui ont pas mIRC et ils vont pas aimer...) alors si une ame charitable peut maider ...
(je naime pas bocoup le vb mais on va laisser passer pour cette fois...)

11

C'est corrigé, tu peux télécharger le programme. smile
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

12

Attention aussi à l'endianness! Le PC stocke tout entier de plus d'un octet à l'envers. Le Motorola 68000 des TI-89/92+/V200 ne fait pas ça. Donc il faut inverser.
Et ne pas toucher à int, parce que la taille diffère entre le PC et la TI-89/92+/V200. Utilise short ou long. Ou long long.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

13

j'aurais plutôt opté pour un éditeur on-calc
Car seuls les cons ne reconnaissent pas leurs erreurs.
=========================================
Avis aux newbies, avant de poster, essayez ça ->[http://databob.free.fr/IFAQ/FAQ]

Membre de la [V4pOR T34m]
EvaSDK's Homepage > et c'est reparti

14

hmm jy ai pensé puis je me suis empréssé doublier mais je v y re-réfléchir

15

geogeo > g essayé le programme TOVAR que tu m'as filé, il marche très bin merci
seulement g un probleme : avec les sym_entry, on ne peut pas savoir l'extension d'un fichier. pourtant ce serait important si je veux que les niveaux créés soient détéctés...

16

L'"extension" n'en est pas une, c'est stocké à la fin (du contenu) du fichier.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

17

donc, tu auras l'exension en regardant la fin du handle + 2 je crois ...

18

g lair lourd mais je sais pas comment on fait pour la lire (les handles ... qu'est-ce que c'est?)

19

avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

20

bah, tu dois quand mm savoir ce qu'est le handle d'un fichier nan ?

21

mais ca ca marche pas   ESQ Var;   SYM_ENTRY *SymPtr = SymFindFirst (SYMSTR("main"), 1);   while(SymPtr)   {    Var = *(HToESI (SymPtr->handle));    printf("%s",(char *) Var);    SymPtr = SymFindNext();    ngetchx();   }

22

Parce que le résultat est un tag (par exemple TEXT_TAG), pas une chaîne de caractères.
Si ton fichier est un fichier de type personnalisé, tu auras OTH_TAG. Ensuite, tu fais:
char *p=HToESI(SymPtr->handle)-1;
while (*--p);
p++;

Et tu auras ta chaîne de caractères en p.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

23

arf, merde, je lui avait dit 2 sur IRC roll excuses

24

putain j'ai réussi à comprendre que les tags de type c'est des ints
et meme comment on fait pour savoir quel tag il a !

merci !

(allez un code pour la route smile
void _main(void)
{
  clrscr();
  char *p;
  SYM_ENTRY *SymPtr = SymFindFirst (SYMSTR("main"), 1);
  while(SymPtr)
  {
   p=HToESI(SymPtr->handle)-1;
   while (*--p);
   p++;
   if((*HToESI(SymPtr->handle))==OTH_TAG){
   	printf("%s",p);
   	ngetchx();
   }
   SymPtr = SymFindNext();
  }
}

CA MARCHE ! )

25

> putain j'ai réussi à comprendre que les tags de type c'est des ints
Non, les tags ne sont pas des ints. Ce sont des ESQ (nom de TIGCC) = unsigned char = Quantum (nom de TIFS), c'est à dire des données sur un octet. Les ints sont des données sur 2 ou 4 octets, 2 par défaut si le switch -mlong n'est pas activé (de toute façon, il crée beaucoup plus d'ennuis qu'il ne résout de problèmes).
En revanche, et je pense que c'est ce que tu voulais dire, les tags ne sont pas des strings.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

26

: p=HToESI(SymPtr->handle)-1; while (*--p); p++; cf IRC ... si des personnes regardent ce code, faut mettre
dans le bloc de test roll

27

nEUrOO :
arf, merde, je lui avait dit 2 sur IRC roll excuses

Il faut commencer à HToESI(SymPtr->handle)-2, mais comme j'ai mis un predecrement (parce que le 68k gère le predecrement, mais pas le postdecrement), c'est bien là que mon code commence à chercher.
nEUrOO :
: p=HToESI(SymPtr->handle)-1; while (*--p); p++; cf IRC ... si des personnes regardent ce code, faut mettre
dans le bloc de test roll

En effet, le if((*HToESI(SymPtr->handle))==OTH_TAG){ est mieux placé avant ces 3 lignes.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

28

oué, chui con, j'ai même pas regardé le code du dessous ... c'est vrai smile

29

a ce propos est ce qu'on peut ecrire dans un fichier ou le modifier sans passer par les fonctions de vat.h? ou bien est on oblige de passer par fopen, fwrite...?

30

tu peux tout à fait ne pas n'utiliser que les symfind/symadd en lisant tout simplement dans la mémoire du Handle de la variable:

La SYM_ENTRY contient un champ handle, puis du fais (en lecture)
char *ptr;
HANDLE h;
h=DerefSym(hSym/*la valeur retournée par symfind*/)->handle
HeapLock(h);
ptr=HeapDeref(h);
//tes fonctions de lecture ici
HeapUnlock(h);

en écriture, c'est plus compliqué, regarde à la fonction SymAdd de TIGCC
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.