natto Le 13/05/2002 à 10:40 fp=fopen(GFX[id_gfx],"rb");
if (fp=NULL) {gl_put_large_string(DARK_SCREEN(DScr[0]),0,12,(const char *)"ERROR : GFX not found"); gl_wait_a_key(); return 1;}
T=fgetc(fp);
S=fgetc(fp);
///Tiles1=malloc(T*sizeof(SPRITE_16));
///Tiles2=malloc(S*sizeof(SPRITE_16));
Tiles1=malloc(10000);
Tiles2=malloc(10000);
if (S==0 || T==0){gl_put_large_string(DARK_SCREEN(DScr[ts]), 0,12,(const char *) "ERROR : not enough RAM"); return 1;}
gl_put_large_string(DARK_SCREEN(DScr[ts]), 0,60,(const char *) "Tiles allocated"); gl_wait_a_key();
fread (Tiles1,1, sizeof(SPRITE_16)*T, fp);
fread (Tiles2,1, sizeof(SPRITE_16)*S, fp);
fclose(fp);
bien voila la jolie source de ma fonction
je crée un fichier externe comme ça :
fp = fopen("GFX000","wb")
fputc(33,fp);// nbre T1 //arriere plan
fputc(41,fp);//nbre T2 // sprites
//on y met la premiere image:
if(!fwrite(Tiles1,1,sizeof(SPRITE_16)*33*2,fp)) printf("ERROR3 n")
//la 2eme
if(!fwrite(Tiles2,1,sizeof(SPRITE_16)*41*2,fp)) printf("ERROR4 n")
//ngetchx();
//on met une extension speciale:
fputc(0,fp);
fputs("SGFX",fp);
fputc(0,fp);
fputc(OTH_TAG,fp);
//on ferme le fichier
fclose(fp);
et donc je veux extraire les tableaux Tiles1 et Tiles2 qui sont des grands tableaux de sprite_16 (tableau à un indice)
et il semble que ceci :
fread (Tiles1,1, sizeof(SPRITE_16)*T, fp);
fread (Tiles2,1, sizeof(SPRITE_16)*S, fp);
extrait de la source de dessus fasse planter la calc, et je ne sais pas pourquoi

納 豆パワー!
I becamed a natto!!!1!one!
PpHd Le 13/05/2002 à 10:58 Verifie que tiles1 et tiles2 soient bien allouer.
natto Le 15/05/2002 à 09:04 ok mais je pensais que fwrite suffisait a creer un fichier et fread pour l'extraire voire symfindptr pour avoir un pointeur

納 豆パワー!
I becamed a natto!!!1!one!
Déjà, tu n'as mis aucun test pour voir si les fonctions n'échouent pas!
Par exemple, tu remplaces:
sym = DerefSym (SymAdd (SYMSTR("MAP21")));
par:
HSym hsym1=SymAdd (SYMSTR("MAP21"));
if (!*(long *)&hsym1) /*teste si hsym1 est 0*/ {ST_helpMsg("SymAdd(SYMSTR(\"MAP21\")) failed")exit(0);}
sym = DerefSym(hsym1);
Si tu fais ça partout, non seulement ça ne plantera probablement plus, mais tu verras aussi très bien où est le problème.
Au fait, pour la plupart des variables, if (!var) suffit pour tester si elles sont nulles. Ce n'est que pour les variables de type HSym que c'est lourd, parce que HSym est une structure.
guilc Le 17/05/2002 à 18:20 juste un truc, pourquoi apres tes "&", il y a un ";" ?????
C'est un bogue de la coloration syntaxique du forum.
Un type personnalisé est structuré come ça : {0, 'G', 'F', 'X', 0, OTH_TAG}
Il faut additionner taille du fichier + 1 à l'adresse du handle pour pointer sur OTH_TAG.

Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 :
www.ti-fr.com.
Quelques idées personnelles
ici.
Petite remarque : ne jamais utiliser HeapDeref, mais plutôt HLock et HeapUnlock...
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
Systèmes multitâches je suppose. Donc demande à ignorer. (AMS n'est pas un système multitâche.)
g une centaine de sprite16 qui trainent sur mon DD en format C niv gris 4, tu veux pim ?
warau kado niha fuku kitaru.
#trifouet#!!!
hwti Le 07/08/2002 à 10:47 memcpy(begin_file, &taille, sizeof(int)) c'est pas génial, pour copier simplement un int, c'est mieux de faire *(int *)begin_file = taille sachant que tu est certain que begin_file est pair (car HeapAlloc alloue un bloc débutant à une adresse paire)
arg !! non !! ne dis pas ça ! donne moi ce format xlib vite fait
warau kado niha fuku kitaru.
#trifouet#!!!