Skip to content
View in the app

A better way to browse. Learn more.

ResHax

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Help us keep the site running.

Helldivers 1 .unit Models Help Wanted (Bitsquid/Stingray)

Featured Replies

  • Supporter
9 minutes ago, DreamingOxxy said:

I did notice with the script is the UVs were upside down

Printf("vt %f %f\n",UnitVector[0].UVPosX,UnitVector[0].UVPosY);

to

Printf("vt %f %f\n",UnitVector[0].UVPosX,-UnitVector[0].UVPosY);

should fix it.

  • Author
  • Localization
16 minutes ago, DKDave said:

 

I notice that some models are made up of multiple parts and even multiple files, and some have different versions of the model in the same file, such as "damaged" models, etc.

 

Yeah, you can blow some body parts off, so there's gore submeshes, and for the armor pieces it looks like there's multiple meshes for each part (cloth, body, armor), the other guy did seem to figure out how to apply the materials to the models correctly, so maybe you can take a look.

13 minutes ago, h3x3r said:

Printf("vt %f %f\n",UnitVector[0].UVPosX,UnitVector[0].UVPosY);

to

Printf("vt %f %f\n",UnitVector[0].UVPosX,-UnitVector[0].UVPosY);

should fix it.

Alright thanks

54 minutes ago, DreamingOxxy said:

Yeah, you can blow some body parts off, so there's gore submeshes, and for the armor pieces it looks like there's multiple meshes for each part (cloth, body, armor), the other guy did seem to figure out how to apply the materials to the models correctly, so maybe you can take a look.

Alright thanks

The submesh info has a "material index" value, but the material files themselves seem to define more materials than there are materials used (or I'm not reading the material files correctly ...)

 

 

  • Author
  • Localization
6 minutes ago, DKDave said:

The submesh info has a "material index" value, but the material files themselves seem to define more materials than there are materials used (or I'm not reading the material files correctly ...)

 

 

 Hm. I see, some models do have reskins, so maybe it's that? Like a skin of sorts. For example some of the armors use the same model for two armor sets, one just uses a different texture.image.png.55a06870affc93bbcd9cad85c3b514c6.pngimage.png.69905db72853ac013969bdc023845b63.png 

Edited by DreamingOxxy

  • Author
  • Localization

Not sure if any of you are still working on this/wanting to, but I wanted to make a quick request about getting skeletons out, I'm not sure if they are actually in the .bones files, but the names of them are in there for sure, and there's some sort of data inside them. I don't understand skeleton finding whatsoever, I've only been able to figure out mesh deconstruction, but it would be helpful to just be able to get the original rigs out, even if there's no weights.

  • Supporter

Here's bms in case tool doesn't work for some reason.

####################################
### Helldivers Resource Unpacker ###
####################################

comType zlib_noerror
get BaseFileName basename
getdstring Dummy 0x6
get Chunks ushort
getdstring Dummy 0x4
math Chunks + 1

for i = 0 < Chunks
	get ZSize uint32
	savepos Offset
	getdstring CData ZSize
	append 0
	clog MEMORY_FILE Offset ZSize ZSize
next i

goto 0 -1
get Resources uint32 -1
getdstring Dummy 0x100 -1
xmath TableSize "Resources * 16" -1
getdstring Dummy TableSize -1

for i = 0 < Resources
	savepos HeaderInfoOffset -1
	get Extension longlong -1
	get CRCName_0 uint32 -1
	get CRCName_1 uint32 -1
	get ResourceCount uint32 -1
	get StreamOffset uint32 -1
	
	for j = 0 < ResourceCount
		get Unknown_0 uint32 -1
		get ResourceSize[j] uint32 -1
		get StreamResourceSize uint32 -1
	next j
	savepos HeaderInfoEndOffset -1
	
	for j = 0 < ResourceCount
		getdstring RawData ResourceSize[j] -1
	next j
	savepos RawDataEndOffset -1
	
	xmath HeaderSize "HeaderInfoEndOffset - HeaderInfoOffset" -1
	xmath RawDataSize "RawDataEndOffset - HeaderInfoEndOffset" -1
	xmath Size "HeaderSize + RawDataSize" -1
	
	if Extension == -7845776955604022234
		set Extension string "animation"
	elif Extension == -2523249336000628348
		set Extension string "animation_curves"
	elif Extension == 9222729345201491665
		set Extension string "baked_lighting"
	elif Extension == 1792059921637536489
		set Extension string "bones"
	elif Extension == -9051012362580577742
		set Extension string "config"
	elif Extension == -8083727903408977048
		set Extension string "data"
	elif Extension == -7866682425036021491
		set Extension string "flow"
	elif Extension == -6990137951956076416
		set Extension string "font"
	elif Extension == 3151582839410712222
		set Extension string "input"
	elif Extension == -411360246199410658
		set Extension string "ivf"
	elif Extension == 3055991222284753605
		set Extension string "level"
	elif Extension == -6823360279786481694
		set Extension string "lua"
	elif Extension == -1531025310400979233
		set Extension string "material"
	elif Extension == -5586802062191616713
		set Extension string "mouse_cursor"
	elif Extension == 4260310590552720244
		set Extension string "network_config"
	elif Extension == -5936749679887390854
		set Extension string "package"
	elif Extension == -6333977373143224988
		set Extension string "particles"
	elif Extension == -4674384319396922447
		set Extension string "physics_properties"
	elif Extension == 2848016463268491676
		set Extension string "render_config"
	elif Extension == -3681457717887749313
		set Extension string "shader"
	elif Extension == -1878508312612070765
		set Extension string "shader_library"
	elif Extension == -7035681691298058571
		set Extension string "shader_library_group"
	elif Extension == -111525813760131931
		set Extension string "shading_environment"
	elif Extension == -2832068841926820393
		set Extension string "sound_environment"
	elif Extension == -469788778869442224
		set Extension string "spu_job"
	elif Extension == -6591347889605831076
		set Extension string "state_machine"
	elif Extension == -2021911029933276383
		set Extension string "static_pvs"
	elif Extension == 979299457696010195
		set Extension string "strings"
	elif Extension == -5968043961655577708
		set Extension string "surface_properties"
	elif Extension == -3656297521719370190
		set Extension string "texture"
	elif Extension == -7389443945178646108
		set Extension string "timpani_bank"
	elif Extension == 46134157573332076
		set Extension string "timpani_master"
	elif Extension == 8155295712016485532
		set Extension string "ugg"
	elif Extension == -2259526030728936129
		set Extension string "unit"
	elif Extension == -6227052463280761918
		set Extension string "upb"
	elif Extension == -625902272250026155
		set Extension string "vector_field"
	elif Extension == 8678266882450615065
		set Extension string "wav"
	elif Extension == 6006249203084351385
		set Extension string "wwise_bank"
	elif Extension == -5822581075298045840
		set Extension string "wwise_dep"
	elif Extension == -3095508420103327472
		set Extension string "wwise_metadata"
	elif Extension == 5785811756662211598
		set Extension string "wwise_stream"
	elif Extension == 8503174627613226853
		set Extension string "xml"
	endif

	string FileName p "%s_unpacked/%08X%08X.%s" BaseFileName CRCName_1 CRCName_0 Extension
	log FileName HeaderInfoEndOffset RawDataSize -1
next i

Use quickbms_4gb_files.exe. It may looks like it's stuck but don't worry. It first parse compressed chunks and then parse file table and unpack.

Edited by h3x3r

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.