1

j'ai un probleme pour l'extraction de mes sprites de mon fichier graphique séparé
je m'explique:
pour ne pas me taper l'allocation et la lecture avec fread de chaque sprite à la main, j'ai décidé de placer mes sprites dans un tablo puis de parcourir le tablo a l'aide d'un for à l'intérieur duquel j'alloue et je lis le sprite de coordonnées tablo[i]
pas d'erreur a la compilation, mais plantage sur la calc sad
voivi comment je m'y prends:

void *Sprite1, *Sprite2, etc...
void *Tablo[n][0][m] = {{{&sprite1, &sprite2, etc.... (m sprites)},{autres données...}},
{{&spritex, &spritey, etc... },{...}},etc.... n fois};

puis j'extrais mes données:

File = fopen ("raygfx","rb")

if (File == NULL)
sortir du prog;

for (i=0;i<=n;i++)
for (j=0;j<=m;j++)
if (Tablo[i][0][j] != 0) {
Tablo[i][0][j] = malloc(2*4*32);
fread(Tablo[i][0][j],1,2*4*32,File);
}


2

lorsque je n'utilise pas de tablo ça fonctionne:

void *Sprite = malloc (2 * 4* 32);
File = fopen ("...","rb")
fread (Sprite, 1, 2 * 4* 32, File);

ne cause pas de plantage

3

Mais pourquoi tu veux les extraire ?
Lis les directement dans le fichier raygfx !

4

nan, quel intéret??
ça m'oblige à revoir tout mon source confus
si je procède à l'extraction puis au stockage de mes sprites au début du prog, c'est 15 fois plus simple

5

Et ça bouffe 15 fois plus de RAM !

6

m'en fous tongue
tu verrais mon source, tu comprendrais à quel point ce serait galère
tous mes sprites sont ordonnés dans des tablos a plusieurs dimensions, bref c trop tendusick
obligé de les extraires avant

7

Tu n'as qu'à créer ton tableau de sprites, mais au lieu de le copier en RAM, puis de stocker leur adresse dans ton tableau, tu copies directement leur adresse à dans le fichier

8

ton extraction, ca revient a recopier le tableau en RAM : il suffit de le stocker en externe et de récuperer le pointeur vers le fichier -> il peut être en ram ou flash, tu peux l'utiliser comme un vrai tableau (sauf si tu veux l'actualiser).
Mon site perso : http://www.xwing.info

9

Oui, tu stockes tes données, tu archives par ex.
Ensuite tu récup l'adresse en RAM/ROM du fichier, et tu lis tout à partir de ça smile

j'avais fait un ex pour liquid, peut-être marche t'il encore, c mal fait, pas très bien codé mais ça marche et ça montre une technique pour le faire.
Ici !!
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

10

merci Pim, je regarde ton exemple smile
mais quoiqu'il en soit, je commence à me rend compte que le jeu aura besoin de bcp de RAM pour pouvoir se lancer ... sad

11

par contre je précise que je n'ai pas de problème pour stocker mes données (je ne stocke que mes sprites)
uniquement pour les lire. c dans mon source principal que je créé mes tableaux de sprites que je tente d'exttraire dans un for

12

au fait, ton tableau fait quelle taille (quelles sont les valeurs de n et m, en fait) ?
Parce que le nb de handles est limité, c p-ê pour ça que ça foire.

Mais de toute façon, abandonne cette idée !
Fais comme on t'a dit, ça évit d'avoir 2 fois plus de place gaspillée par le même fichier.

13

oki je regarde comment on fait avec l'exemple proposé par Pim
mon tableau fait [9][2][8]

14

mais ce n'est pas la taille du tableau qui est à l'origine du plantage, meme avec un tableau [1] ça chie aussi

15

9*2*8=144, ça fait pas mal de handles, tout ça...

16

nan c pas un probleme

17

arf j'y arrive pas....

18

>Tablo[i][0][j] = malloc(2*4*32);

Tu veux vraiment faire un tableau de 6 dimensions???
Il y en a déjà 3 (i, 0, j), et tu as l'air d'en allouer encore 3 (2*4*32)...

Je pense que ce qu'il te faut, c'est Tablo = malloc(2*4*32);.
Et puis, c'est vraiment idiot d'allouer tout et de recopier tout... Obtiens un pointeur sur le fichier avec les routines de vat.h, puis il n'y a plus qu'à faire Tablo = fptr. Rien à allouer, rien à copier.
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é

19

non c'est un tableau à 3 dimensions.
je vais regarder vat.h smile

20

Nerick
a écrit : non c'est un tableau à 3 dimensions.

Ton code est faux alors.
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é

21

pourquoi donc?

22

Non, je pense que Nerick ne s'est pas trompé, si j'ai bien compris.
il alloue pour chaque cellule de son tableau un espace correspondant à 2*4*32 octets, c'est à dire un sprite 32*32 pour chaque plan.
Chaque cellule contient les deux sprites, l'un à la suite de'autre.
M'enfin, ça reste vraiment foireux comme idée...
Fais ce qu'on t'a tous conseillé depuis le post #2.

23

ouais c bien la question
je sais pas comment faire justement

24

Tu crées un projet que tu appelles Gengfx.
Dans ce projet, tu vas écrire un prog qui crée un fichier TIOS (appelé raygfx, par ex) et le rempli avec tes sprites.
Et quand tu quittes le prog, ton fichier de données est sur la TI. Tu n'as qu'à le remettre sur ton PC si tu le veux sur ton PC.

Sinon, tu peux utiliser les outils fournits avec la tigcc tools suite, mais je ne sais absolument pas comment il faut faire. ( http://tict.ticalc.org )

25

lol
j'ai bien compris comment on faisait le fichier séparé
j'ai lu la doc sur ti-fr
j'ai des problemes pour LIRE mes sprites, pour les utiliser dans mon prog principal koa

26

pour aller chercher les sprites dans mon fichier graphique créé sans utiliser 15442121 de fread à la suite

27

Une fois que tu as créé le fichier, il te suffit de pointer vers l'adresse du début du bloc contenant le fichier (+2 octets) et tu auras tes données comme tu les as écrites...

psprites[i]==ptr_fichier, ptr_fichier+=256;
il te suffit de faire une boucle de ce style :for(i=0;i<n;i++)
  tabl_
en gros, quoi.

28

mais cette boucle stocke les sprites dans un tablo, donc n'économise pas de ram finalement
c la methode que je voulais utiliser au post #1

29

Ah non ! ça, ça fait un tableau contenant les ADRESSES vers les différentes sprites, donc bouffe pas de mémoire...
Mon site perso : http://www.xwing.info

30

ok smile
j'ai eu un exemple de jackie chan hier smile
merci bcp