Developed by Gaijin entertainment, it uses their in house "Dagor" engine.
According to its wikipedia page(Russian) there are at least 19 games using the engine.
However, I am only interested in WarThunder.
This topic has already been somewhat discussed for a different game(Blades of Time) here: viewtopic.php?f=10&t=8794&hilit=vromfs
The WarThunder game files contain a few different types of archive files.
I have had varying levels of success trying to decipher them.
The main archive types within the game are:
- vromfs.bin
- dxp.bin
- grp
- blk
Header Bytes: 56 52 46 73 00 00 50 43(VRFs PC)
Description:
VROMFS archives are fairly basic.
They consist of 6 parts. All lengths and addresses are Little Endian.
A 16 byte header with the file type and the location of the footer and optionally the length of the decompressed data.
A 32 byte subheader with the location of the file name locations, the file locations and the number of files.
A section describing the location of the file names(Length=8 x filecount).
A section containing the file names. File names are null terminated.
A section describing the locations and lengths of the files(Length=8 x filecount, First 4 bytes is location, next 4 is length).
A section containing the file data.
A 110 byte footer of unknown content(probably some sort of checksum or signature)
vromfs files may optionally be zlib deflated.
If compressed the compression will start at 0x10, also the decompressed file length will be in the header.
I wrote a basic tool to extract files from these archives.
You can download it from github.(Requires Java 1.7)
dxp.bin
Header Bytes: 44 78 50 32 02 00 00 00 (DxP2)
Description:
These archives appear to contain textures is DDS format.
These files appear similar in layout to the vromfs files, however they seem to contain an extra section for DDS headers.
I could probably extract these and if I knew anything about DDS files/headers I might be able to do something useful with them.
At the moment they aren't my top priority.
grp
Header Bytes: 47 52 50 32 (GRP2)
Description:
I dont really know what these files contain. Probably 3d models. Based on the names.
Its fairly simple to get a file listing, but I haven't been able to get much further than that.
I am hesitant to put much effort into these as I don't know if there is any useful data inside.
blk
Header Bytes:00 42 42 46 02 00 00 00 (BBF)
Description:
These are the files I am most interested in the the moment.
These files appear to be compiled markup.
The vromfs archives are full of these.
There is one example of a user editable uncompiled blk file in the root directory of the game (config.blk).
The uncompiled file is JSON like, it has nested key values with explicit types.
I would like to be able to convert the compiled blk's back to the plaintext version.
Here is a shortened example of the plaintext version:
Code: Select all
forcedLauncher:i=0
cloudsQuality:t="high"
doShowDriversOutdated:b=yes
graphicsQuality:t="user"
renderer2:t="auto"
video{
mode:t="fullscreen"
postfx_antialiasing:t="high_fxaa"
vsync:b=no
resolution:t="2560 x 1440"
}
graphics{
shadowQuality:t="medium"
texquality:t="high"
anisotropy:i=8
numCloudLayers:i=80
fxTexScale:r=0.25
lastClipSize:i=8192
fxDensityMul:r=0.9
}
render{
selfReflection:b=yes
motionBlur:b=no
ssaoQuality:i=0
}
So there are a few thing I would like some help with:
First of all, if anyone knows of any tools that work with these files, or knows where I can get dagor engine dev kits, then that would be appreciated.
Otherwise, I would like some help decompiling the blk files. Maybe someone can help decipher them for me.
Some hints on what to do with the DDS files would be helpful too.
If anyone needs sample files let me know, otherwise WarThunder is free to play and it can be downloaded quite easily.
You can then use my above tool to extract the vromfs files.