summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/ability.fspec11
-rw-r--r--spec/ftable.fspec3
-rw-r--r--spec/item.fspec28
-rw-r--r--spec/model.fspec25
-rw-r--r--spec/name.fspec5
-rw-r--r--spec/spell.fspec18
-rw-r--r--spec/vtable.fspec3
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;
+};