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.
Zero Tolerance for Disrespect

Juiced (PC) *.d8t / *.d8w

Featured Replies

Solved by ikskoks

  • 1 month later...
  • Supporter

*.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 by h3x3r

  • Supporter

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

 

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.