diff options
Diffstat (limited to 'spec')
| -rw-r--r-- | spec/ability.fspec | 21 | ||||
| -rw-r--r-- | spec/eaf.fspec | 17 | ||||
| -rw-r--r-- | spec/emz.fspec | 7 | ||||
| -rw-r--r-- | spec/ftable.fspec | 2 | ||||
| -rw-r--r-- | spec/name.fspec | 11 | ||||
| -rw-r--r-- | spec/spell.fspec | 36 | ||||
| -rw-r--r-- | spec/vtable.fspec | 2 | 
7 files changed, 65 insertions, 31 deletions
diff --git a/spec/ability.fspec b/spec/ability.fspec index 3c2c890..4498d69 100644 --- a/spec/ability.fspec +++ b/spec/ability.fspec @@ -1,11 +1,14 @@ -// Abilities  struct ability { -   u16 index; -   u16 icon_id; -   u16 mp_cost; -   u16 unknown; -   u16 targets; -   u8 name[32] = sjis; // The kind actually depends on ROM section -   u8 description[256] = sjis; // ^ Ditto, we probably can't express this -   u8 padding[726] = pad; +   index: u16; +   icon_id: u16; +   mp_cost: u16; +   unknown: u16; +   targets: u16; +   name: u8[32] | encoding('sjis') str; // The encoding actually depends on ROM region +   description: u8[256] | encoding('sjis') str; // ^ Ditto, we can't express this (we need parser options) +   padding: u8[726] nul; +}; + +struct dat { +   ability: struct ability[$];  }; diff --git a/spec/eaf.fspec b/spec/eaf.fspec new file mode 100644 index 0000000..e9c5702 --- /dev/null +++ b/spec/eaf.fspec @@ -0,0 +1,17 @@ +struct file { +   path: u8[256] | encoding('ascii') str; +   offset: u64; +   size: u64; +   padding: u8[16] nul; +}; + +struct eaf { +   header: u8[4] | matches('#EAF') str; +   major: u16; +   minor: u16; +   size: u64; +   count: u32; +   unknown: u64; +   padding: u8[100] nul; +   files: struct file[count]; +}; diff --git a/spec/emz.fspec b/spec/emz.fspec new file mode 100644 index 0000000..0fe02a1 --- /dev/null +++ b/spec/emz.fspec @@ -0,0 +1,7 @@ +struct emz { +   header: u8[4] | matches('#EMZ') str; +   unknown: u32 hex; // most likely redunancy check (crc32?) +   size: u32; +   offset: u32; // always 16? +   data: u8[$] | compression('deflate', size) hex; +}; diff --git a/spec/ftable.fspec b/spec/ftable.fspec index 615b7b3..39fdd26 100644 --- a/spec/ftable.fspec +++ b/spec/ftable.fspec @@ -1,3 +1,3 @@  struct ftable { -   u16 id; +   id: u16[$] hex;  }; diff --git a/spec/name.fspec b/spec/name.fspec index 69f75de..d4e0f7c 100644 --- a/spec/name.fspec +++ b/spec/name.fspec @@ -1,5 +1,8 @@ -// NPC IDs -struct name = { -   u8 name[28] = ascii; // The kind actually depends on ROM section -   u32 id; +struct name { +   name: u8[28] | encoding('ascii') str; // The encoding actually depends on ROM region +   id: u32; +}; + +struct dat { +   name: struct name[$];  }; diff --git a/spec/spell.fspec b/spec/spell.fspec index f65b5ad..68aa5fb 100644 --- a/spec/spell.fspec +++ b/spec/spell.fspec @@ -1,18 +1,22 @@  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]; // 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] = sjis; -   u8 en_name[20] = ascii; -   u8 jp_description[128] = sjis; -   u8 en_description[128] = ascii; -   u8 padding[687] = pad; +   index: u16; +   type: u16; // 1-6 for White/Black/Summon/Ninja/Bard/Blue +   element: u16; +   targets: u16; +   skill: u16; +   mp_cost: u16; +   casting_time: u8; // in quarter of seconds +   recast_delay: u8; // in quarter of seconds +   level: u8[24] hex; // 1 byte per job, 0xxFF if not learnable, first slot is NONE job so always 0xFF +   id: u16; // 0 for "unused" spells; often, but not always, equal to index +   unknown: u8; +   jp_name: u8[20] | encoding('sjis') str; +   en_name: u8[20] | encoding('ascii') str; +   jp_description: u8[128] | encoding('sjis') str; +   en_description: u8[128] | encoding('ascii') str; +   padding: u8[687] nul; +}; + +struct dat { +   spell: struct spell[$];  }; diff --git a/spec/vtable.fspec b/spec/vtable.fspec index 0fc8701..de281b8 100644 --- a/spec/vtable.fspec +++ b/spec/vtable.fspec @@ -1,3 +1,3 @@  struct vtable { -   u8 exist; +   exist: u8[$] hex;  };  | 
