Miscellaneous Forums > Scripting and Reverse Engineering

Looking for coder to help with FFVI for PC

(1/3) > >>

kvg88:
Hey, I'm working on a mod called Final Fantasy VI - A World Reborn which can be found on the community modding index on Steam.

Video: https://www.youtube.com/watch?v=cnVVyqb14qs&t=53s

The mod is on the cusp of release but we've run into an issue that is preventing us from releasing the mod. With Nyxo's tools, we were able to edit all of the assets outside of the spell animations. However, we are unable to edit 3 of the espers because their graphics are in the spell animations folder titled FLB. From what I can gather, it wouldn't be hard to extract the FLB files, the difficulty arises when trying to put those files back into the game. Nyxo does not have time available to finish his tools, but has given us access to a partial guide that may be able to help someone construct a tool needed to access the FLB files.

If anyone is interested or can point us in the right direction, you can comment here or message/add me on Steam (kvg88). Any help at this point would be greatly appreciated. Thank you for your time!

Maki:
Please provide any information you have and a sample file.

kvg88:

--- Quote from: Maki on 2018-08-01 15:36:24 ---Please provide any information you have and a sample file.

--- End quote ---

Here's the sample file from the FLB folder. The .gz files in this folder contain FLB files, which I think stands for Format Library, which I think means that it is proprietary software from SE that would need to be reverse engineered. But I know very little about this, so I'll leave it to someone who knows how to do these kind of things :P

https://mega.nz/#!Zp5T2QRS!VLBlG__XEEdDAFeSyS1FGdkx9TKFR2QSVLY24Mmvtcs

I've also got a partial script template from Nyxo, but he doesn't want it left on the net, so I can send that to you in a PM if you'd like.

Maki:
That's unusual, but if that's the author intention then ok, send it over PM.
File format so far:

--- Code: ---char[8] FLBD0101;
uint IMCHpointer;
uint unk;
padding[8]; //?
uint UnknownSHCHpointer; //0x28 + this
uint UnknownSPCHpointer; //0x28 + this
uint UnknownBTCHpointer; //0x28 + this
uint UnknownANCH0pointer; //0x28 + this
IMCH imch;

--- End code ---

IMCH:

--- Code: ---char[4] IMCH
uint IMCHsize; //including this + IMCH header
uint CountOfFrames; //This is global count of pointers to graphics;sprites;frames in file. It means one FLB can contain many graphics
uint SpritePointer[CountOfFrames]; //first one usually points to 0x00, so just: IMCHpointer+IMCHsize+pointer;

--- End code ---

SpriteData:

--- Code: ---byte[20] unknown_maybeChecksum?;
uint Unknown;
ushort width;
ushort height;
TEXTUREdata;

--- End code ---

UPDATE:
Oh, ok. I got it! Updated the structure

Example summon_00f_bg1_full.flb is 256x512 and raw texture data is 524288 bytes;
256x512 is 131072; 393216 is dividable by:

--- Code: ---Size:   1
Size:   2
Size:   3
Size:   4 <--
Size:   6
Size:   8
Size:   12
Size:   16
Size:   24
Size:   32
Size:   48
Size:   64
Size:   96
Size:   128
Size:   192
--- End code ---

131072 * 4 = 524288;
So this is for sure 32 BPP data, therefore:

Are these colors ok?


Reimporting:
As far as I see:
1. Inject upgraded/upscaled texture data
2. Change width/height
3. Tweak SHCH; SPCH; BTCH and ANCH0 pointers
4. Tweak IMCH pointers to texture data that got changed due to different imageSize after the pointer to changed textureData
5. Well, looks like that's all. :-)

UPDATE2:
Diablos looks great! (ARGB -> BGRA/ABGR)

kvg88:

--- Quote from: Maki on 2018-08-02 08:23:34 ---That's unusual, but if that's the author intention then ok, send it over PM.
File format so far:

--- Code: ---char[8] FLBD0101;
uint IMCHpointer;
uint unk;
padding[8]; //?
uint UnknownSHCHpointer; //0x28 + this
uint UnknownSPCHpointer; //0x28 + this
uint UnknownBTCHpointer; //0x28 + this
uint UnknownANCH0pointer; //0x28 + this
IMCH imch;

--- End code ---

IMCH:

--- Code: ---char[4] IMCH
uint IMCHsize; //including this + IMCH header
uint CountOfFrames; //This is global count of pointers to graphics;sprites;frames in file. It means one FLB can contain many graphics
uint SpritePointer[CountOfFrames]; //first one usually points to 0x00, so just: IMCHpointer+IMCHsize+pointer;

--- End code ---

SpriteData:

--- Code: ---byte[20] unknown_maybeChecksum?;
uint Unknown;
ushort width;
ushort height;
TEXTUREdata;

--- End code ---

UPDATE:
Oh, ok. I got it! Updated the structure

Example summon_00f_bg1_full.flb is 256x512 and raw texture data is 524288 bytes;
256x512 is 131072; 393216 is dividable by:

--- Code: ---Size:   1
Size:   2
Size:   3
Size:   4 <--
Size:   6
Size:   8
Size:   12
Size:   16
Size:   24
Size:   32
Size:   48
Size:   64
Size:   96
Size:   128
Size:   192
--- End code ---

131072 * 4 = 524288;
So this is for sure 32 BPP data, therefore:

Are these colors ok?


Reimporting:
As far as I see:
1. Inject upgraded/upscaled texture data
2. Change width/height
3. Tweak SHCH; SPCH; BTCH and ANCH0 pointers
4. Tweak IMCH pointers to texture data that got changed due to different imageSize after the pointer to changed textureData
5. Well, looks like that's all. :-)

UPDATE2:
Diablos looks great! (ARGB -> BGRA/ABGR)


--- End quote ---

Those colors look perfect; its actually great, we never had a chance to test Diablos, so apparently his graphics are also tied to the FLB (at least in regards to his summon). The FLB folder has held up another mod as well, the Original sprite mod by Saftle. Other than animations, the game's UI is also tied to this folder as well. Whoever can crack the FLB problem, can make FFVI 100% moddable. Do you think you can write the program? If you need a commission and/or a copy of the game to work with, I'd definitely be willing to work something out! :)

Navigation

[0] Message Index

[#] Next page

Go to full version