1

Je sais, ya plein de thread a ce sujet mais c jamais ce qu'il me faut
apres un bon moment de googlage et de bidouille, jme decide a poser ma question :x

bon jveux ouvrir un fichier (sur ma 89)(de type PIC mais c pas important pour l'instant)
en googlant g trouvé ca

[email]
-----------------------------------------------------------------------------------
I) Normal files such as Program file (*.92?)
--------------------------------------------

The following is a table of the bytes that make up the header of a *.92?
file:

Adress What It Contains
---------------------------------------------------------------
0x00-0x07 0-7 **TI92** or **TI92P*
0x08-0x09 8-9 0x01 0x00
0x0A-0x11 10-17 folder name (8 chars)
0x12-0x39 18-57 comment (40 chars)
0x3A-0x3B 58-59 0x01 0x00 (number of vars: 1)
0x3C-0x3F 60-63 0x52 0x00 0x00 0x00 (1)
0x40-0x47 64-71 varname (8 chars)
0x48-0x49 72-73 vartype 0x00
0x4A-0x4B 74-75 0x00 0x00
0x4C-0x4F 76-79 (2)
0x50-0x51 80-81 0xA5 0x5A
0x52-0x.. 82-(n-1) data (raw data part)
0x..-0x.. n-(n+1) checksum (raw data part)
------------------------------------------------------------------------------------[/email]


pour le moment jveux juste recup l'header , donc jme suis fait une petite structure :

typedef struct
{
char CalcType[8]; // 0x00-0x07 0-7 **TI92** or **TI92P*
short Reserved1; // 0x08-0x09 8-9 0x01 0x00
char Folder[8]; // 0x0A-0x11 10-17 folder name (8 chars)
char Comment[40]; // 0x12-0x39 18-57 comment (40 chars)
short Reserved2; // 0x3A-0x3B 58-59 0x01 0x00
long DataOffset; // 0x3C-0x3F 60-63 0x52 0x00 0x00 0x00
char VarName[8]; // 0x40-0x47 64-71 varname (8 chars)
short VarType; // 0x48-0x49 72-73 vartype 0x00
short Reserved4; // 0x4A-0x4B 74-75 0x00 0x00
long CheckOffset; // 0x4C-0x4F 76-79
short Reserved5; // 0x50-0x51 80-81 0xA5 0x5A
} headerTIFile;


ensuite g fait une func de test ds ce style :

headerTIFile tiFile;

...

fread(buffer, sizeof(char), 1024*2, file);
memcpy(&tiFile, buffer, sizeof(tiFile));
printf_xy(0, 10, "0 %s", tiFile.CalcType);
printf_xy(0, 20, "1 %x", tiFile.Reserved1);
printf_xy(0, 30, "2 %s", tiFile.Folder);
printf_xy(0, 40, "3 %s", tiFile.Comment);
printf_xy(0, 50, "4 %x", tiFile.DataOffset);
printf_xy(0, 60, "5 %s", tiFile.VarName);
printf_xy(0, 70, "6 %x", tiFile.VarType);
printf_xy(0, 80, "7 %x", tiFile.CheckOffset);
printf_xy(0, 90, "8 %x", tiFile.Reserved5);


et j'obtiens des valeurs completement incoherente (je n'obtient meme pas le type de TI)
ca doit surement etre un truc tout simple encore mais j'commence a etre fatigué la
jmy remet demain smile

++ merci ++
Jah Live !
And Never Die !!

2

je n'obtient meme pas le type de TI

peut-etre parce que CalcType ne se termine pas par un caractère nul?
(j'ai pas regardé le reste..)

3

Je ne comprends pas ce que tu veux faire exactement trifus
Au début, tu parles d'ouvrir un fichier PIC (sur TI), puis tu nous sors le header d'un fichier *.92x (sur PC !).
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

4

mmh attends, j'y suis peut-être.
Tu cherches peut-être à ouvrir un fichier *.92i sur ton PC.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

5

Ah non :
DonPichol
: bon jveux ouvrir un fichier (sur ma 89)
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

6

il veut peut etre convertir un binaire en format .92i
enfin je sais pas..

7

moi je pense qu'il veut ouvrir une var de type pic sur 89 mais il a pas trouvé les bon renseignements (le format sur ti et non sur pc)

voila le format (tiré de la doc du SDK de ti)

   Description .....................................Bytes

- Data Length of PIC..........................2
- Number of Rows in image ................2
- Number of Columns in image ...........2
- Bitmap data (8 pixels per byte with
the data bits going from most
significant to least significant which
correspond to left to right pixels
on the screen) ...................................variable
- PIC_VAR_TAG..................................1


Table 14.12: Data Object for a PIC
avatar

8

hahah trop fort :>>>>

en fait ce que g trouvé c l'header des fichiers sur PC ? :]
hahaah ;>, g mal regardé le txt

merci azerty83 smile
Jah Live !
And Never Die !!

9

rahh
g un pb avec la func fread de la lib standard tigcc
elle "zap" a chaque fois les 2 premiers octets donc adieu a la taille du fichier ....

SUPAIR \o/
Jah Live !
And Never Die !!

10

fread obéit à sa définition. Elle marche comme sur PC.
Sur PC, les deux premiers octets renvoyés par fread n'indiquent pas non-plus la taille du fichier, mais correspondent bien aux données contenues par celui-ci.
avatar
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.

11

je me suis mal exprimé

g regardé vite fait ds la doc SDK ti, et l'on retrouve ds tous les fichiers
2 premier octets -> "nb de données"

Description Bytes
Data length of xx 2

g fait des tests avec des fichiers PIC :
Description Bytes
Data Length of PIC 2
Number of Rows in image 2
les 2 premiers octets sont "zappés" et j'obtient directement le nombre de ligne

sinon g fait des test avec quasi tout les type de fichier
un fread de char (sur un fichier ouvert en "rb") lit FileSize-2 octets (FileSize étant celle affiché sous VarLink)
en "r" -> FileSize-5octets :xxx

pouvez vous eclairer ma lanterne ? smile

merci
Jah Live !
And Never Die !!

12

Les fonctions de stdio.h gèrent automatiquement les 2 octets de taille. Tu ne les verras que si tu utilises vat.h.
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

ok merci

sinon, ya un autre truc bizarre

si on considere que la plus grande image possible sur TI89 est de 1547 octets
cad une image de 77 lignes par 159 colonnes en sachant que un pixel equivaut à 1bit

77 * 159 = 12243 / 8 = 1530.xxx d'ou au moins 1531 octets necessaire

j'en lis 1545, il y a donc 4 octets au debut (rows et columns) et 1 dernier a la fin (PIC_VAR_TAG)

d'ou 1545 - 5 = 1540 octets restant pour l'image seule or 1531 necessaires

9 octets ? heu, ca sert a quoi ?

sur windows, dans une image bitmap, le nombre d'octets d'utilisé par ligne est forcement entier -> dans notres cas, pour 159 colonnes -> 20 octets sont necessaires

20 * 77 = 1540 !!!!!!!! HAAAAAAA

mais aussi, tjr sur win, le nombre d'octets doit etre multiple de 4 (archi 32bits, ...)
on a 20 -> divisivble par 4 -> la moule
est ce que cela marche aussi sur TI ? (multiple de 2 :P)

merci

Jah Live !
And Never Die !!

14

Mauvais calcul, tu divise le résultat width*height par 8. Il faut faire int((width + 7)/8)*height, puisqu'une ligne ne peut pas commencer à cheval sur un octet.

Donc : 2 (taille) + 4 (dimentions) + int((159 + 7)/8) * 77 (données) + 1 (tag) = 2 + 4 + 1540 + 1 = 1547 (et on retrouve bien cette taille en sauvant tout l'écran GRAPH) smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

15

voui, ben ca revient au meme quoi smile
g pas fait d'erreur
mais je veux savoir si le nombre d'octet par ligne doit etre multiple d'une valeur
par ex 4 sur win
Jah Live !
And Never Die !!

16

Heu non ça revient pas au même. Si t'as une image de 2*10 avec ta méthode ça fait 3 octets, avec la vraie 10 octets. C'est pas tout à fait la même chose roll

Sinon pour le multiple, non, pas la peine.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

17

grin
... dans notres cas, pour 159 colonnes -> 20 octets sont necessaires

20 * 77 = 1540 !!!!!!!! HAAAAAAA ...

merci pour le multiple
Jah Live !
And Never Die !!

18

La ligne peut commencer à une adresse impaire. On remplit juste l'octet, pas le mot (short) ou le 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é

19

Ok, merci beaucoup, ca marche niquel maintenant smile
Jah Live !
And Never Die !!