FFVIII Guardian Force files (help)

  • Thread starter Thread starter Softtm17
  • Start date Start date
Status
Not open for further replies.
Alredy Extracted ALL.
I've found a particular strings of Hex...so i use this string to find any models.
In 10 minutes i've extracted 16 models from the exe..
4 different angelo
rinoa's wing
momba
Kyactus
reaper
gilgamesh's swords
also the biscuit for angelo xD

Thanks for all Vehek!
 
OFF topic and LAST question i promise ^^"

For the terrain model?
Like ragnarock or "mini squall"?
You know where they are? (And off course the way for exctract)
 
Not sure if this might help others(not even sure how these files are supposed to be written)
I also note that its been awhile that someone posted in this thread.

Basically just convert folder of files instead of singular entered file.

Python 3.
This code is based on what Vehek posted.
Code: [Select]
Code:
import structimport osimport syspath = './Unconv/'pathd = './Conv/'imageCount = 2for file in os.listdir(path):    current = os.path.join(path, file)    if os.path.isfile(current):        try:            model = open(current, 'rb')            model.seek(4)            offsets = struct.unpack("IIII", model.read(16))            model.seek(offsets[0])                        modelData = model.read(offsets[3] - offsets[0])                        outt = open(pathd+os.path.basename(current)+ '_mdl.dat', 'wb')            outt.write(struct.pack("IIII", 11, offsets[0] + 0x1C, offsets[1] + 0x1C, offsets[2] + 0x1C))            for i in range(8):                outt.write(struct.pack("I", offsets[3] + 0x1C))            outt.write(struct.pack("I", offsets[3] + 0x1C + 4 * (imageCount + 2) + imageCount * 0x4220))            outt.write(modelData)            outt.write(struct.pack("I", imageCount))            for i in range(imageCount + 1):                outt.write(struct.pack("I", i * 0x4220 + 4 * (imageCount + 2)))            #Create placeholder textures            for j in range(2):                outt.write(struct.pack("IIIHHHH", 0x10, 9, 0x20C, 2, 2, 256, 1))                for x in range(256):                    outt.write(bytes("\x22\x22", 'UTF-8'))                outt.write(struct.pack("IHHHH", 0x400C, 1, 1, 0x40, 0x80))                for x in range(0x4000):                    outt.write(bytes("\x00", 'UTF-8'))            outt.close()        except Exception:            pass
This is the altered code.
Code: [Select]
Code:
import structimport osimport syspath = './Unconv/'pathd = './Conv/'imageCount = 2for file in os.listdir(path):    current = os.path.join(path, file)    if os.path.isfile(current):        try:            model = open(current, 'rb')            model.seek(4)            offsets = struct.unpack("IIII", model.read(16))            model.seek(offsets[0])                        modelData = model.read(offsets[3] - offsets[0])                        outt = open(pathd+os.path.basename(current)+ '_mdl.dat', 'wb')            outt.write(struct.pack("IIII", 11, offsets[0] + 0x1C, offsets[1] + 0x1C, offsets[2] + 0x1C))            for i in range(8):                outt.write(struct.pack("I", offsets[3] + 0x1C))            outt.write(struct.pack("I", offsets[3] + 0x1C + 4 * (imageCount + 2) + imageCount * 0x4220))            outt.write(modelData)            outt.write(struct.pack("I", imageCount))            for i in range(imageCount + 1):                outt.write(struct.pack("I", i * 0x4220 + 4 * (imageCount + 2)))            #Create placeholder textures            for j in range(2):                outt.write(struct.pack("IIIHHHH", 0x10, 9, 0x20C, 2, 2, 256, 1))                for x in range(256):                    outt.write(bytes("\x22\x22", 'UTF-8'))                outt.write(struct.pack("IHHHH", 0x400C, 1, 1, 0x40, 0x80))                for x in range(0x4000):                    outt.write(bytes("\x00", 'UTF-8'))            outt.close()        except Exception:            pass
 
Last edited:
First off I would  like to thank all of the hard work that people have put into this endeavor!!!

  Sorry that I'm getting into this a little bit late, but I was wondering if anyone has had any success with extracting these models from the steam files.  So far I've been able to pull out most all of the "Standard" and "Alternative" GFs using the scripts provided above.  However I'm a little unclear on how to determine the lengths of models and or where to start looking for them.

Mainly when looking at ff8.exe,
While their textures are in the archives, those summons' models are in FF8.exe.
For the English 1.2, both non-Geforce and Geforce:

  • Phoenix: 0xDB537C
  • MiniMog: 0x112BC04
  • Carbuncle: 0xCB6F94
  • Tonberry: 0x1147514
These are "normal" GF models.
You may need to increase imageCount in the script in order to have all the UVs preserved.
I can locate them, but I don't know how to identify how much data to copy out to run the python script for.

Any help would be greatly appreciated...
 
Last edited:
Ahhh things should be good, I was able to figure out where the files were located...Does anybody know if this approach works for FF9 summons?
 
Status
Not open for further replies.
Back
Top