Author Topic: FF8 Battle model format  (Read 2698 times)

JWP

  • *
  • Posts: 194
    • View Profile
FF8 Battle model format
« on: 2007-07-19 18:40:09 »
I thought there seemed a distict lack of information on FF8 compared to FF7, so today I thought I'd tear apart the FF8 battle models.

Using some information from mirex I've been able to make a program that separates a .dat file into it's different parts.
I've just been looking at the 2 simplist sections to start with, these are:
section 7 - monster data, things like the name of the monster, draw magic, devour info, mug, dops etc are stored here - I've managed to decode a fair chunk of this section.
section 8 - this appears to be some sort of battle script, the only thing I've looked at so far in this section is the dialogue that appears near the end of the file, I've deduced that 0x3F is the start of a dialogue box and 0x3E ends it and I've managed to find some codes that place character names instead.

What I was wondering is if anyone has decoded any of the battle script format because it'd be pretty stupid to waste time on something that's already been done.

JWP

  • *
  • Posts: 194
    • View Profile
Re: FF8 Battle model format
« Reply #1 on: 2007-07-20 10:28:26 »
here's the structure for the monster info section (section 7 of the .dat files) - well... what I managed to decypher before my hd packed in anyway =\:

typedef unsigned __int16 USHORT;
typedef unsigned __int32 ULONG;
typedef unsigned char BYTE;

struct Item {
   BYTE id;
   BYTE amount;
};

struct UnkStat {
   BYTE stats[64];
};

struct MonsterInfo {
   char name[24]; //FF8 encoded - length might be less than this

   BYTE unk0[28];

   UnkStat Stats[3];

   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, 0xFF = can't devour

   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'll get around to finding out more information when I manage to sort my pc out.
Does anyone know the difference between the white timer and the red timer? (note: the red one can't be cured with esuna and the white one can)
I can't think of anything that the last 2 status effects could be, I've tried LV-up/LV-down, protect, shell, double/triple, hero, aura, vit 0 and diablos' atk - basically I'm looking for an atk that sometimes misses on enemies.
« Last Edit: 2007-07-20 11:01:19 by JWP »