ok, nothing new so far on the field model front because I've not had much time lately, that and I've been looking a bit at the battle models recently.
I've managed to find the vertex count, and all the UV coords in the geometry section, now all I've got to do is sort out the remaining data (shouldn't be too hard since there isn't that much of it left now and I have a pretty good idea of what's what, though I haven't tried rendering anything yet)
The verticies appear to be sets of 3 shorts though I don't know exactly when the vertex data starts and ends due to there being some other values around it.
the other 2 sections of the geometry appear to be as follows:
struct unk16 { //triangles
short verts[3];
short UVcoord;
short UVcoord1;
short unk;
short UVcoord2;
short unk1; //AA00, AB00
}
struct unk20 { //quads
short UVcoord;
short UVcoord1;
short verts[4];
short UVcoord2;
short unk;
short UVcoord3;
short unk1; //AA00, AB00
}
kinda weird way to store the data if you ask me =\. The first vertex in each set appears to be indexed at 0x8000.
the monster info section decyphered so far:
struct Item {
BYTE id;
BYTE amount;
};
struct Action {
BYTE type; //??? 0x02 = generic magic
BYTE animscript; //???
BYTE id; //???
BYTE unk;
};
struct MonsterInfo {
char name[24]; //FF8 encoded - length might be less than this
BYTE HP[4]; //HP = (HP[0]*x*x)/20 + (HP[0] + 100*HP[2])*x + 10*HP[1] + 1000*HP[3], where x = monster lvl
BYTE unk0[24];
Action RosterL[16];
Action RosterM[16];
Action RosterH[16];
BYTE Unk1[4];
BYTE Card[3]; //1st Byte = Card Drop, 2nd Byte = Carded into, 3rd Byte = Rarely Carded into, 0xFF = no drop/can't card
BYTE Devour[3]; //Low, Med and High lvl Devour effect id's
BYTE unk2[6];
USHORT LowLvlDraw[4];
USHORT MedLvlDraw[4];
USHORT HighLvlDraw[4];
Item LowLvlMug[2];
Item LowLvlRMug[2];
Item MedLvlMug[2];
Item MedLvlRMug[2];
Item HighLvlMug[2];
Item HighLvlRMug[2];
Item LowLvlDrop[2];
Item LowLvlRDrop[2];
Item MedLvlDrop[2];
Item MedLvlRDrop[2];
Item HighLvlDrop[2];
Item HighLvlRDrop[2];
BYTE unk3[20];
BYTE ElemRes[8]; //These are how resistant the monster is to each element 0 = very weak
//0 - Fire
//1 - Ice
//2 - Thunder
//3 - Earth
//4 - Poison
//5 - Wind
//6 - Water
//7 - Holy
BYTE StatusRes[20]; //Status resistances 0xFF = immune
//0 - Death
//1 - Poison
//2 - Petrify
//3 - Darkness
//4 - Silence
//5 - Beserk
//6 - Zombie
//7 - Sleep
//8 - Haste
//9 - Slow
//10 - Stop
//11 - Regen
//12 - Reflect
//13 - Doom (red timer) - command/doomtrain
//14 - Slow Petrify? (white timer) - cast using doomtrain
//15 - Float
//16 - Confuse
//17 - Drain
//18 -
//19 -
};
I'm getting there slowly
oh, I also made a quick proggy that splits the dat files up into the different sections into folders with the filename and the monster name in brackets. I might release it if anyone is interested but I wont bother otherwise because I can't be arsed
.
I noticed 2 enemies called "Gunblade" c0m082.dat and c0m142.dat, there's dialogue in the latter that goes something like this:
Zell "...the hell is this!?"
Squall "What the...?"
Selphie "Ewww! Nasty!"
EDIT: just realised it's the same text as when you face Gerogero
It'd be interesting to battle this thing but I don't have anything to replace files in .fi archives
(I used unmass to extract them).
How did you get that model Lucleonhart?