xaymar / hellextractor Goto Github PK
View Code? Open in Web Editor NEWA simple tool to extract things from Helldivers 2 for your 3D printing needs.
License: BSD 3-Clause "New" or "Revised" License
A simple tool to extract things from Helldivers 2 for your 3D printing needs.
License: BSD 3-Clause "New" or "Revised" License
Seems that bitsquid (stingray) partially moved to 64bit offsets and header includes some clues for read buffers
E.g. aligned offsets seems to suggest that during load they allocate full buffer size or smth like that.
Here's file header as I see it:
struct file_header_t {
le hash::hash_name name;
le hash::file_type type;
// aligned to alignment
le u64 offset;
// unaligned raw aux buffer
le u64 stream_offset;
// aligned to gpu_alignment
le u64 gpu_offset;
// aligned to 0x200
// seems to be an offset of read buffer that have size of 0x200 per element
le u64 buffer_offset;
// aligned to 0x600
// seems to be an offset of read buffer that have size of 0x600 per element
le u64 gpu_buffer_offset;
le u32 size;
le u32 stream_size;
le u32 gpu_stream_size;
le u32 alignment;
le u32 gpu_alignment;
le u32 index;
file_t<size> inline_file @ offset;
};
Mostly affects .unit files. Seems like the code believes there's no more data, but there should be 100+mb of additional data.
With 2023178 most of the format of the .texture files was figured out. We know how to read the file and even what it does, and should be able to export it completely without errors.
The header (0xC0 bytes) simply tells us how we could stream mip levels in the texture file, so that we use less memory overall. This is why the header for the texture itself is in the main file, but the data is in the stream file. As for the data in the gpu_resources file, that is simply an exact clone of the data in stream, usually starting at mip level 2 (1/4th resolution).
As far as it seems, all textures are .DDS files. There are references to .TGA files, however I have yet to find an actual tga file. Might be useful to inspect the first 4 bytes and decide based on that.
Width: 4 bytes
The current export format, Wavefront OBJ, is extremely limited:
Ideally we should switch to an easier to work with format. glTF seems to be a reasonable option.
C:\Users\User 1\Hellextractor>hellextractor.exe
'hellextractor.exe' is not recognized as an internal or external command,
operable program or batch file.
Did all Building steps, but receiving this stuff everytime.
And, because of it:
Executing: extract -o ./output "c:\program files (x86)\steam\steamapps\common\Helldivers 2\data"
Start-Process : This command cannot be run due to the error: The system cannot find the file specified.
At C:\Users\User 1\Hellextractor\hellextractor.ps1:113 char:5
Start-Process -FilePath "./hellextractor.exe" -ArgumentList $comm ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
No response
Removes the need for people to manually enter a xorpad.bin for tools like wwiser. Bank headers (BKHD chunks) are "encrypted" from 0x8-0x10 with this key: ACBC1192387010A3
that is xor'd with the data in the bank to get the proper info for tools to work on them.
Example: Init.bnk (9ba626afa44a3aa3: content/audio/Init.bnk) Before: 20BC11921B4AD6F3
After: 8C000000233AC650
Hello can you also make one for Helldivers 1?
Windows Defender identifies hellextractor.exe as Trojan:Win32/Wacatac.B!ml
File: hellextractor.zip->Hellextractor.exe
It would be good to prevent using files or conversions that makes this error happen, as it doesn't make the file seem trustworthy.
Width: 4 bytes
For what it's worth, we've never seen the first 16 bytes change. They probably have no meaning for us at all, so just strip them off.
secrets.GITHUB_TOKEN doesn't have permission to create releases can you check
https://github.com/Xaymar/Hellextractor/settings/actions
Everything about the .unit
file structure.
Width: 8 Bytes
Width: 4 bytes
Width: 4 bytes
As far as files go, it appears as if these files have a mostly common 12 byte header.
uint32_t __unk;
uint32_t __unk;
uint32_t offset;
... seek(offset) ...
uint32_t __unk;
uint32_t __unk;
uint32_t __unk;
With the recent few commits, Hellextractor now works on Linux with seemingly no issues. Might be useful to have a linux binary as well now. Flatpak seems to be a decent option here.
Yeah, see title. unordered_set does not guarantee the order of inserted elements, it just means that it doesn't do the added sorting. So the element order is entirely random, which I guess is faster, but not what we want.
If this is out of scope for the Hellextractor, please remove this request.
I did a very simple test with a bik file (b2b8b34553f957cb.bik) from the extraction using a very basic ffmpeg command line command using ffmpeg essentials build and command ".\ffmpeg.exe -i b2b8b34553f957cb.bik b2b8b34553f957cb.mp4", which resulted in an encoded mp4 with the video and sound from the bik file.
If it is of interest to make the exports from Hellextractor as user friendly as possible it could be interesting to implement ffmpeg into the tool, possibly with a video file format flag (mp4, mkv etc).
Some bik video files are without sound, so not sure if those have sound separated out due to them being played back separately in engine.
Common structure so far
uint32_t __unk;
uint32_t offset;
uint64_t dep_name_hash;
... actual data ...
... seek(offset) ...
uint32_t __unk;
uint32_t __unk;
uint32_t __unk;
uint32_t __unk;
This heavily relies on the completion of #1
This file appears to only contain c-style null terminated strings.
uint32_t __unk;
struct {
uint32_t length;
char text[length];
}; // So far, always only one.
Possibly only used to mark the .wwise_bank as used?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.