struct spell { u16 index; u16 type; // 1-6 for White/Black/Summon/Ninja/Bard/Blue u16 element; u16 targets; u16 skill; u16 mp_cost; u8 casting_time; // in quarter of seconds u8 recast_delay; // in quarter of seconds u8 level[24] hex; // 1 byte per job, 0xxFF if not learnable, first slot is NONE job so always 0xFF u16 id; // 0 for "unused" spells; often, but not always, equal to index u8 unknown; u8 jp_name[20] | encoding('sjis') str; u8 en_name[20] | encoding('ascii') str; u8 jp_description[128] | encoding('sjis') str; u8 en_description[128] | encoding('ascii') str; u8 padding[687] nul; }; struct dat { struct spell spell[until (false)]; };