Page 1 of 1
Extracting Textures
Posted: Fri Jan 24, 2020 10:15 am
by darthdoull
Hi there, I need help extracting the vanilla textures. I used a quickbms script to unpack descent2.hog but it gave me more compressed files and I don't know where to look. The script is limited to hog and pig files and it can't unpack the files in the hog file so I'm stuck. I'm also not sure where the textures are exactly.
Re: Extracting Textures
Posted: Fri Jan 24, 2020 6:48 pm
by LightWolf
Textures should be in the PIG.
Re: Extracting Textures
Posted: Fri Jan 24, 2020 7:29 pm
by darthdoull
I was afraid of that. I unpacked two pigs; ice and alien1 but there's nothing in them except folders. Inside the folders are random combinations of dat, ini, and txt files. Is there a way to convert or extract these into proper images?
Re: Extracting Textures
Posted: Sat Jan 25, 2020 9:50 am
by Krom
There were some utilities that could extract sounds/textures/etc from descent and descent 2 called DTX and DTX2, the problem is they are 16 bit windows applications and won't work at all in a 64 bit environment. If you know and can jump through the hoops necessary (virtualization/emulation/etc) to get them working then you can download them here:
http://www.cybertrash.com/shareware/dtx/
Re: Extracting Textures
Posted: Sat Jan 25, 2020 10:35 am
by darthdoull
Yeah, I tried that before coming here and as you say, it doesn't work on my 64-bit system. I tried getting it to work in Dosbox too but that didn't work either. I'm not sure what else to try. I'll keep at it and thank you for the responses.
I'm not a programmer and I'm wondering if maybe someone here can take a look at this script and see if you can spot anything wrong with it. I have a hunch the script extracts the data incorrectly. It's doing its job a little too well, extracting the raw data from the images instead of giving me images. That's just my guess, anyway.
Code: Select all
# Descent (script 0.2)
# script for QuickBMS http://quickbms.aluigi.org
get ARCHIVE_SIZE asize
get EXT extension
getdstring SIGN 4
if SIGN == "PPIG"
get DUMMY long
get FILES long
xmath BASE_OFF "0xc + (FILES * 0x12)"
for i = 0 < FILES
getdstring NAME 8
get DUMMY short
get DUMMY short
get DUMMY short
get OFFSET long
math OFFSET + BASE_OFF
putarray 0 i OFFSET
putarray 1 i NAME
next i
putarray 0 i ARCHIVE_SIZE
putarray 1 i ""
sortarray 0 1
for i = 0 < FILES
getarray OFFSET 0 i
getarray NAME 1 i
math i + 1
getarray NEXT_OFF 0 i
goto OFFSET
get SIZE long
xmath TMP "OFFSET + SIZE"
if TMP == NEXT_OFF
math OFFSET + 4
math SIZE - 4
else
xmath SIZE "NEXT_OFF - OFFSET"
endif
string NAME + /
log NAME OFFSET SIZE
next
elif SIGN == "DSND"
get DUMMY long
get FILES long
xmath BASE_OFF "0xc + (FILES * 0x14)"
for i = 0 < FILES
getdstring NAME 8
get ZSIZE long # ???
get SIZE long
get OFFSET long
math OFFSET + BASE_OFF
log NAME OFFSET SIZE
next i
elif EXT == "hog"
goto 0
idstring "DHF"
savepos OFFSET
for OFFSET = OFFSET != ARCHIVE_SIZE
getdstring NAME 13
get SIZE long
savepos OFFSET
log NAME OFFSET SIZE
math OFFSET + SIZE
goto OFFSET
next
else
print "Error: unknown magic %SIGN%"
cleanexit
endif
Re: Extracting Textures
Posted: Sat Jan 25, 2020 11:36 am
by LightWolf
I'm not 100% certain, but I'm pretty sure that the images are palette references to descent.256.
Something else you can try if you have a level editor (i.e. DLE) is exporting the image from within the editor. It takes longer, but you do get a standard image format as a result.
Re: Extracting Textures
Posted: Sat Jan 25, 2020 7:08 pm
by darthdoull
Ah, the folders make a lot more sense now.
That's a good idea, I haven't thought of that. I tried DLE per your suggestion and it worked perfectly. It even gives me the frames for animations, feels like Christmas. Thank you so much to the both of you for the help.