diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/ability.fspec | 11 | ||||
-rw-r--r-- | spec/ftable.fspec | 3 | ||||
-rw-r--r-- | spec/item.fspec | 28 | ||||
-rw-r--r-- | spec/model.fspec | 25 | ||||
-rw-r--r-- | spec/name.fspec | 5 | ||||
-rw-r--r-- | spec/spell.fspec | 18 | ||||
-rw-r--r-- | spec/vtable.fspec | 3 |
7 files changed, 93 insertions, 0 deletions
diff --git a/spec/ability.fspec b/spec/ability.fspec new file mode 100644 index 0000000..3c2c890 --- /dev/null +++ b/spec/ability.fspec @@ -0,0 +1,11 @@ +// 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; +}; diff --git a/spec/ftable.fspec b/spec/ftable.fspec new file mode 100644 index 0000000..615b7b3 --- /dev/null +++ b/spec/ftable.fspec @@ -0,0 +1,3 @@ +struct ftable { + u16 id; +}; diff --git a/spec/item.fspec b/spec/item.fspec new file mode 100644 index 0000000..c4d1767 --- /dev/null +++ b/spec/item.fspec @@ -0,0 +1,28 @@ +struct string_info { + u32 offset; + u32 flags; +}; + +struct strings { + u32 nmemb; + struct string_info info[nmemb]; +}; + +struct item { + u32 id; + u16 flags; + u16 stack; + u16 type; + u16 resource; + u16 targets; + + union data (type) { + 4 => struct weapon weapon; + 5 => struct armor armor; + 7 => struct usable usable; + 12 => struct puppet puppet; + * => struct general general; + }; + + struct strings strings; +}; diff --git a/spec/model.fspec b/spec/model.fspec new file mode 100644 index 0000000..afa8281 --- /dev/null +++ b/spec/model.fspec @@ -0,0 +1,25 @@ +struct texture { + u8 type; + u8 name[16] = ascii; + u32 version; + u32 width; + u32 height; + u32 unknown[6]; + u32 bits_per_pal_clr; +}; + +struct geometry { + u16 unknown; + u16 vert_and_bone_ref_flag; + u16 mirror; + u32 draw_data_offset; + u16 draw_data_size; + u32 bone_ref_offset; + u16 bone_ref_count; + u32 weighted_vert_count_offset; + u16 max_weights_per_vertex; + u32 weighted_data_offset; + u16 weighted_data_count; + u32 vertex_data_offset; + u16 vertex_data_size; +}; diff --git a/spec/name.fspec b/spec/name.fspec new file mode 100644 index 0000000..69f75de --- /dev/null +++ b/spec/name.fspec @@ -0,0 +1,5 @@ +// NPC IDs +struct name = { + u8 name[28] = ascii; // The kind actually depends on ROM section + u32 id; +}; diff --git a/spec/spell.fspec b/spec/spell.fspec new file mode 100644 index 0000000..f65b5ad --- /dev/null +++ b/spec/spell.fspec @@ -0,0 +1,18 @@ +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; +}; diff --git a/spec/vtable.fspec b/spec/vtable.fspec new file mode 100644 index 0000000..0fc8701 --- /dev/null +++ b/spec/vtable.fspec @@ -0,0 +1,3 @@ +struct vtable { + u8 exist; +}; |