djey47 / tdumt2

TDU Modding Tools 2 - Toolset for modding Test Drive Unlimited 2 game
MIT License
6 stars 4 forks source link

Bnk file structure #1

Open CamilleTamm opened 5 years ago

CamilleTamm commented 5 years ago

Bonjour Djey, est il possible d'obtenir la structure des fichiers bnk de tdu 2 ?

Je ne comprends pas comment lire le header ou sont ecris les noms des fichiers/dossiers a la suite. Notament l'ordre des fichiers, et les values avant chaque folder (sur 1 ou 2 bits...)

Merci bien !

djey47 commented 5 years ago

Bonjour!

Je ne me souviens pas bien de la structure (faudrait que je remette la main sur mes notes).

Cette section du BNK (Tree Section) est un peu complexe, à la base, tu vas trouver le chemin complet des fichiers dans l'arborescence des PC des développeurs (!). Je n'en garde qu'une partie lors de l'extraction.

L'ordre des fichiers et des dossiers est le suivant : du moins profond au plus profond, c'est récursif. C.a.d que tu vas trouver d'abord le nom d'un répertoire, puis tu auras tous les fichiers qui le composent, ainsi que d'autres répertoires.

La value numérique avant chaque folder est de 2x8 bits.

Voici le code de lecture de ces valeurs: https://github.com/djey47/tdumt2/blob/1fdcdd23c1ad182ef2bff1cf4b082de14a266da3/tdumodlib_2.0/ModdingLib/fileformats/banks/Bnk.cs#L691

C'est une des parties les mieux décodées du format BNK, il reste encore des zones d'ombre dans le fichier. Ce qui a pour conséquence que certains BNK ne peuvent pas être réécrits par l'outil sous peine de faire planter le jeu.

Bon courage!

CamilleTamm commented 5 years ago
Sans titre

merci beaucoup ! marche nickel ! par contre mapping section c'est inutile non ?

et le crc32 j'ai test de le bousiller ça fait pas crash (crc32 du header bnk et du header de chaque section)

djey47 commented 5 years ago

ok :)

La mapping section est pas vitale pour le jeu à priori, certains BNK en ont une, d'autres pas.

Pour éviter tout souci, elle est remise (je ne sais pas si elle est mise à jour en cas de nouveaux fichiers). A tester si on peut la dégager pour se simplifier la tâche.

L'importance du CRC32 vient de TDU1, le jeu plantait si on ne le mettait pas à jour. Comme la gestion BNK de TDU2 est héritée, et que cet lib était censée les 2 jeux, je n'y ai pas touché.

Si tu souhaites rendre la lib propre à TDU2 et optimisée, c'est une bonne occasion de le faire 👍 TDU1 dispose de ses propres outils, la rétro compatibilité n'est plus nécessaire.

Pour la petite histoire, mon objectif était de re-coder les fonctions de base TDU1 en Javascript et les faire tourner sous Node. Mais je ne pense pas être en mesure de le faire pour cause de priorités de vie :-)

CamilleTamm commented 5 years ago

ah daccord merci pour ces précisions :)

Enfait le mapping est important ca fait crash le jeu même quand les offset sont remis en place et tout ... :\ Je continue d'explorer des pistes

Au début je pensais que cetait dut à l alignement des sections qui n'était pas en modulo 16 mais non rien à voir...