Tu as l'air de maitriser le sujet mais il n'est pas encore clair pour moi.
"
//Resource_Entries
Resource locator______________1048576
* The IE resource manager uses 32-bit values as a 'resource index',
* which codifies the source of the resource as well as which source it refers to. The layout of this value is below.
* bits 31-20: source index (the ordinal value giving the index of the corresponding BIF entry)
* bits 19-14: tileset index
* bits 13- 0: non-tileset file index (any 12 bit value, so long as it matches the value used in the BIF file)
"
Tu dis '1048576' = '100000000000000000000' en binaire
=> Ok
Le 1 est en 20ième position donc on est dans le cas 'bits 31-20: source index (the ordinal value giving the index of the corresponding BIF entry)'.
=> Ok, on a un index pour un fichier Biff. La valeur correspond à l'un des index de la section 'Bif Entries'. C'est donc le 1ier fichier Biff.
"
//1ier index de biff entries
"
-Length of BIF file_____________5847739
-Offset from start of file___________2208
to ASCIIZ BIF filename
-Length, including terminating NUL,____17
of ASCIIZ BIF filename
-The 16 bits of this field are used______1
individually to mark the location
of the relevant file.
*(MSB) xxxx xxxx ABCD EFGH (LSB)
* Bits marked A to F determine on which CD the file is stored (A = CD6, F = CD1)
* Bit G determines if the file is in the \cache directory
* Bit H determines if the file is in the \data directory
"
"
="data\Default.bif"
Le fichier "AROW01" d'extension type '1005' est donc contenu sous "data\Default.bif".
Je prends un autre cas pr bien comprendre:
Section Resource entries / Resource locator = 1048949
nom du fichier "MISC1H" d'extension type '1005'
En décimal on a donc: "1048949"
En binaire ca correspond a: "100000000000101110101" soit 21 bits => c'est un index pour identifier le fichier bif.
En hexa ca correspond a: "0x100175". Le fichier bif est donc le 175ième de la liste.
//Bif Entries
-Length of BIF file_____________20509572
-Offset from start of file____________5306
to ASCIIZ BIF filename
-Length, including terminating NUL,____18
of ASCIIZ BIF filename
-The 16 bits of this field are used______64 soit en binaire '1000000'
individually to mark the location
of the relevant file.
*(MSB) xxxx xxxx ABCD EFGH (LSB)
* Bits marked A to F determine on which CD the file is stored (A = CD6, F = CD1)
* Bit G determines if the file is in the \cache directory
* Bit H determines if the file is in the \data directory
= "data\AREA610A.bif".
Le fichier n'est pas dans le répertoire data du jeu. Je suppose qu'il est donc sur un cd?
Je passe pour le moment, la partie sur les Cd etc... J'ai pas compris comment le .ini va me sauver.
Pour le cas ci dessus, j'ai le nom du fichier Bif et le nom du fichier qu'il contient. Maintenant il faut pouvoir aller chercher ce fameux fichier dans le contenu du fichier bif.
"
Ces deux valeurs, "tileset index" et "non-tileset file index" servent à faire la recherche de la structure dans les tables du fichier BIF, soit "BIFF V1 Tileset Entries", soit "BIFF V1 File Entries", qui correspond à ce que tu souhaites (on y retrouve cet index, qu'il faudra comparer). Un fois trouvé la structure de même valeur d'index dans le fichier BIF, cela permettra de savoir où commencent les données du fichier à extraire et leur taille dans le fichier BIF.
"
L'indice est de 175 et désigne un fichier Bif.
Structure de la section File Entries d'un fichier Bif
"
//File Entries
0x0000 4 (dword) Resource locator
* NB: On disk, only bits 0-13 are matched. They are matched against the file index in the "resource locator" field from
* the KEY file resource entries which claim to exist in this BIFF.
0x0004 4 (dword) Offset (from start of file) to resource data
0x0008 4 (dword) Size of this resource
0x000c 2 (word) Type of this resource
0x000e 2 (word) Unknown
"
dc là mon resource locator doit être égal à '1048949'. Je me positionne sur cet index et j'obtiens les infos pour extraire le fichier (localisation, taille, type).
Isaya peux tu corriger les conneries que j'ai pu dire?

.
27/03
la création de la liste dure environ 10-15 secondes. Le tableau constitué en base de données contient:
- Nom du fichier du jeu Ex: SPIN756
- l'extension Ex: SPL
- resource locator Ex: 18875209
- index dans le fichier Bif si resource locator en Binaire est sur plus de 20 bits.
- le chemin du fichiet bif
Ex: data\AREA0600.bif
J'ai essayé d'appliquer le raisonnement que tu as expliqué et que j'ai interprété:
"
Quand tu as la valeur 1048576, en hexadécimal 0x100000, le 1 correspond au bit 20, donc il s'agit du fichier BIF qui est à l'index 1, et la ressource indiquée est à l'index 0.
"
Ressource locator
en valeur décimale: 1048576
en binaire:10000000000000000000 (20 bits => on a index Bif)
en héxa:0x100000
Ressource locator
en valeur décimale: 18875209
en binaire:1001000000000001101001001 (25 bits => on a index Bif)
en héxa:0x1200349
bit de 25 à 20
100100
bit de 0 à 13
0001101001001
100100 (binaire) = 36 (decimal). 18ieme index bif entries du fichier Key?
soit data\AREA0400.bif (pour moi ce n'est pas le bon Bif pour un fichier SPL)
1101001001= 841. 841ieme index dans le fichier bif cible
Pour les fichiers de type IDS ou 2DA doit on trouver un fichier bif?
Coco
Coco