Members mrmaller1905 Posted March 14, 2025 Members Posted March 14, 2025 What is *.d8t / *.d8w from Juiced (PC) and can anyone write a file format specification and make a tool to rip textures? Engstrom District_d8t.rar engstrom district_engstrom_r1_d8w.rar
Moderators Solution ikskoks Posted March 15, 2025 Moderators Solution Posted March 15, 2025 Try to rip with ImageHeat: Most of the textures are DXT1 or DXT5. 1
Engineers h3x3r Posted May 11, 2025 Engineers Posted May 11, 2025 (edited) *.d8w = table *.d8t = raw data uint32 Count; FSkip(20); struct { uint32 RawDataSize; char PixelFormat[4]; uint32 TextureWidth; uint32 TextureHeight; uint32 Unknown_0; uint32 Unknown_1; uint32 Unknown_2; uint32 Unknown_3; uint32 Unknown_4; uint32 Unknown_5; float Unknown_6; uint32 Unknown_7; }Table[Count]; Edited May 11, 2025 by h3x3r
Engineers h3x3r Posted May 12, 2025 Engineers Posted May 12, 2025 So here's bms to unpack it. You must rename d8t to match name of d8w. ################################### get BaseFileName basename open FDDE d8w 0 open FDDE d8t 1 get Files uint32 getdstring dummy 0x14 for i = 0 < Files savepos InfoOffset get RawDataSize uint32 getdstring InfoSize 0x2C savepos RawOffset 1 getdstring RawData RawDataSize 1 string InfoFileName p= "%s/%u.jtex" BaseFileName RawOffset string RawFileName p= "%s/%u.jtex" BaseFileName RawOffset append 0 log InfoFileName InfoOffset 48 log RawFileName RawOffset RawDataSize 1 next i And here's Noesis script for unpacked *.jtex files. from inc_noesis import * import noesis import rapi import os def registerNoesisTypes(): handle = noesis.register("Juiced - Texture", ".jtex") noesis.setHandlerTypeCheck(handle, noepyCheckType) noesis.setHandlerLoadRGBA(handle, noepyLoadRGBA) noesis.logPopup() return 1 def noepyCheckType(data): bs = NoeBitStream(data) if len(data) < 20: return 0 return 1 def noepyLoadRGBA(data, texList): bs = NoeBitStream(data) baseName = rapi.getExtensionlessName(rapi.getLocalFileName(rapi.getInputName())) bs.read(4) PixelFormat = bs.readUInt() TexWidth = bs.readUInt() TexHeight = bs.readUInt() bs.read(32) if PixelFormat == 827611204: TexSize = TexWidth * TexHeight //2 # DXT1 print("Pixel Format > DXT1") elif PixelFormat == 894720068: TexSize = TexWidth * TexHeight # DXT5 print("Pixel Format > DXT5") elif PixelFormat == 21: TexSize = TexWidth * TexHeight *4 # RGBA8 print("Pixel Format > RGBA8") else: print("Unknown Pixel Format > ",PixelFormat) data = bs.readBytes(TexSize) if PixelFormat == 827611204: texFmt = noesis.NOESISTEX_DXT1 elif PixelFormat == 894720068: texFmt = noesis.NOESISTEX_DXT5 elif PixelFormat == 21: texFmt = noesis.NOESISTEX_RGBA32 texList.append(NoeTexture(rapi.getInputName(), TexWidth, TexHeight, data, texFmt)) return 1
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now