Expose semantic INIT column names

This commit is contained in:
gamer147
2026-07-22 23:15:33 -04:00
parent 511895fc05
commit 00640696dc
11 changed files with 251 additions and 37 deletions

View File

@@ -131,6 +131,7 @@ address = "0x8e7b9"
name = "item_character_whitelist"
category = "data-table"
type = "int[1000][5]"
columns = { "0" = "allowed_character_id_1", "1" = "allowed_character_id_2", "2" = "allowed_character_id_3", "3" = "allowed_character_id_4", "4" = "allowed_character_id_5" }
value_domain = "EBINIT character ids; up to five per item"
usage = "Sparse ITINIT row-major table with stride 5. CHMENU rejects an item when column 0 is populated and the selected party slot's character id is absent from the row. Unique accessories 471/472 allow one character each, while crossover accessories 480..485 allow character ids 2, 3, and 4. Unused trailing columns remain zero."
source = "investigation"
@@ -142,15 +143,16 @@ name = "item_sex_restriction_mask"
category = "data-table"
type = "int[1000]"
value_domain = "bit mask; shipped ITINIT populates value 4 on two items"
usage = "Sparse ITINIT equipment restriction. CHMENU tests this mask against EBINIT field 0x71eae, whose values partition male, female, and sexless units; both populated items carry bit 2 and are therefore female-only."
usage = "Sparse ITINIT equipment restriction. CHMENU uses unit_sex_category as a bit index and rejects an item when that bit is absent from this mask. Both populated items carry only bit 2; EBINIT value 2 is female, and ITMES explicitly describes item 419 as female-only."
source = "investigation"
confidence = "med"
confidence = "high"
[[global]]
address = "0x906f9"
name = "item_status_delta_levels"
category = "data-table"
type = "int[1000][30]"
columns = { "2" = "hp_drain", "3" = "sp_drain", "4" = "fs_drain", "5" = "curse", "6" = "charm", "7" = "confusion", "8" = "paralysis", "9" = "poison", "10" = "water_flow", "11" = "fear" }
value_domain = "condition delta -5..5; zero means absent"
usage = "Sparse ITINIT row-major table consumed by USEITEM and CALCILL when applying an item's effects. Positive values inflict or drain; -5 removes a condition (for example paralysis-removal item 108 stores -5 in column 8). Confirmed columns are 2 HP drain, 3 SP drain, 4 FS drain, 5 curse, 6 charm, 7 confusion, 8 paralysis, 9 poison, 10 water-flow, and 11 fear."
source = "investigation"
@@ -161,6 +163,7 @@ address = "0x97c29"
name = "item_equipped_status_levels"
category = "data-table"
type = "int[1000][30]"
columns = { "9" = "poison", "11" = "fear", "13" = "regeneration", "14" = "exaltation" }
value_domain = "condition strength 1..5; zero means absent"
usage = "Sparse ITINIT row-major table added to a unit's 30-column condition state by CALCREVISE. Item descriptions identify populated columns 9 poison, 11 fear, 13 regeneration, and 14 exaltation; these are passive equipped effects, distinct from item_status_delta_levels."
source = "investigation"
@@ -171,6 +174,7 @@ address = "0x9f541"
name = "item_stat_modifiers"
category = "data-table"
type = "int[1000][14]"
columns = { "0" = "accuracy", "1" = "evasion", "2" = "physical_attack", "3" = "physical_defense", "4" = "magic_attack", "5" = "magic_defense", "6" = "speed", "7" = "luck", "8" = "critical_chance", "9" = "capture_power", "10" = "movement", "11" = "max_hp", "12" = "max_sp", "13" = "max_fs" }
value_domain = "signed additive stat values; observed -15..200"
usage = "ITINIT row-major equipment modifiers added directly to the unit's 14-column stat record by CALCREVISE. Descriptions and consumers establish columns 0 accuracy, 1 evasion, 2 physical attack, 3 physical defense, 4 magic attack, 5 magic defense, 6 speed, 7 luck, 8 critical chance, 9 capture power, 10 movement, 11 max HP, 12 max SP, and 13 max FS. CALCBTPARAM adds columns 7 and 8 into the action's critical percentage, and CALCDMG compares the clamped result with a random-modulo-100 roll."
source = "investigation"
@@ -181,6 +185,7 @@ address = "0xa2bf1"
name = "item_tuning_curve_ids"
category = "data-table"
type = "int[1000][10]"
columns = { "0" = "accuracy", "1" = "evasion", "2" = "physical_attack", "3" = "physical_defense", "4" = "magic_attack", "5" = "magic_defense", "6" = "speed", "7" = "luck", "8" = "critical_chance", "9" = "capture_power" }
value_domain = "curve ids 1..18; zero means the field cannot be tuned"
usage = "ITINIT row-major table selecting an equipment-growth curve for each of the ten tunable fields. TUNE, IMPROVE, DRAWTIP, and CALCREVISE combine each nonzero curve id with the item's corresponding tuning level and index the shared curve-value table at 0xab6fa. Columns align with item_stat_modifiers columns 0..9."
source = "investigation"
@@ -191,6 +196,7 @@ address = "0xa5301"
name = "item_resource_recovery_amounts"
category = "data-table"
type = "int[1000][3]"
columns = { "0" = "hp", "1" = "sp", "2" = "fs" }
value_domain = "recovery amount; zero means absent"
usage = "Sparse ITINIT row-major consumable table. USEITEM applies columns 0, 1, and 2 to the matching three-column unit resource record; descriptions prove these are HP, SP, and FS respectively (for example item 101 stores HP 30, and item 107 stores 999/99/99 for full recovery)."
source = "investigation"
@@ -206,6 +212,26 @@ usage = "Sparse ITINIT consumable field. Item 106, Blood Price Healing Hand, des
source = "investigation"
confidence = "high"
[[global]]
address = "0x65ce"
name = "skill_acquired_flags"
category = "data-table"
type = "int[300]"
value_domain = "0/1 by SKINIT skill id"
usage = "Persistent acquired-skill flags. ADDSKILL sets the selected skill after resolving the unit's equipped-skill slots; FORT checks the flag before granting a skill; CHMENU combines it with skill_change_catalog_eligible to build the available skill-change catalog."
source = "investigation"
confidence = "high"
[[global]]
address = "0x5660b"
name = "skill_info_revealed_flags"
category = "data-table"
type = "int[300]"
value_domain = "0/1 by SKINIT skill id"
usage = "Persistent skill-information visibility flags. ADDSKILL sets the selected skill, BTL marks every equipped skill when it is observed in combat, and INFOIT suppresses a skill's icon/handler-driven details until this flag is nonzero. This is broader than skill_acquired_flags."
source = "investigation"
confidence = "high"
[[global]]
address = "0xa6e59"
name = "current_skill_id"
@@ -236,6 +262,16 @@ usage = "SKINIT category for all 131 skills. The records establish 1 movement/ex
source = "investigation"
confidence = "high"
[[global]]
address = "0xa70b2"
name = "skill_change_catalog_eligible"
category = "data-table"
type = "int[300]"
value_domain = "0/1; 11 eligible skills in shipped SKINIT"
usage = "SKINIT inclusion flag for CHMENU's fourth (skill-change) catalog. CHMENU scans all 300 ids, keeps only nonzero rows, sorts acquired rows ahead of unavailable rows using skill_category and skill_sort_key, and copies the acquired prefix into catalog row 3. Eligible ids are 1, 2, 112, 130..133, 210, 228, 230, and 231."
source = "investigation"
confidence = "high"
[[global]]
address = "0xa71de"
name = "skill_min_range_encoded"
@@ -271,6 +307,7 @@ address = "0xa7562"
name = "skill_status_levels"
category = "data-table"
type = "int[300][30]"
columns = { "1" = "instant_death", "6" = "charm", "7" = "confusion", "8" = "paralysis", "9" = "poison", "10" = "water_flow", "11" = "fear" }
value_domain = "condition strength 1..4; zero means absent"
usage = "Sparse SKINIT row-major condition table consumed by CALCILL when applying a skill's effects to the target unit. Skill names and descriptions identify columns 1 instant death, 6 charm, 7 confusion, 8 paralysis, 9 poison, 10 water-flow, and 11 fear; the column layout matches item_status_delta_levels."
source = "investigation"
@@ -291,6 +328,7 @@ address = "0xa99b6"
name = "skill_combat_stat_deltas"
category = "data-table"
type = "int[300][10]"
columns = { "0" = "accuracy", "1" = "evasion", "2" = "physical_attack", "3" = "physical_defense", "4" = "magic_attack", "5" = "magic_defense", "6" = "speed", "7" = "luck", "8" = "critical_chance", "9" = "capture_power" }
value_domain = "signed combat parameter deltas; observed -99..999"
usage = "Sparse SKINIT row-major table applied by CALCBTPARAM for the selected action. Descriptions and combat consumers establish columns 0 accuracy, 1 evasion, 2 physical attack, 3 physical defense, 4 magic attack, 5 magic defense, 6 speed, 7 luck, 8 critical chance, and 9 capture power. Column 7 is unpopulated in shipped SKINIT; CALCBTPARAM adds any luck and critical modifiers into the critical percentage that CALCDMG rolls after the hit check."
source = "investigation"
@@ -301,6 +339,7 @@ address = "0xaa56e"
name = "skill_resource_deltas"
category = "data-table"
type = "int[300][3]"
columns = { "0" = "hp_recovery", "1" = "sp_cost" }
value_domain = "column 0 recovery 20..50; column 1 cost -20..-2"
usage = "Sparse SKINIT resource table used throughout skill selection and resolution. Column 0 is HP recovery for the three healing spells; column 1 is the negative SP cost for all 95 active skills, exactly matching each description. Column 2 is unpopulated in the shipped table."
source = "investigation"