Close RTINIT movement provider semantics
This commit is contained in:
@@ -1147,7 +1147,7 @@ name = "routine_execution_state"
|
||||
category = "choice-output"
|
||||
type = "int"
|
||||
value_domain = "0..3"
|
||||
usage = "Shared movement/battle routine result state. MVRTN and BTRTN clear it before scanning steps; RTN_M/RTN_B providers set a nonzero result to stop the scan, and the dispatcher supplies state 1 when no provider produced another result. Exact distinctions between provider-written states 1..3 remain unresolved."
|
||||
usage = "Shared movement/battle routine result state. MVRTN and BTRTN clear it before scanning steps; a nonzero provider result stops the scan. Movement providers use state 1 for ordinary field movement/progress, state 2 for an immediate offensive battle action, and state 3 for an immediate healing/support action; MVRTN supplies state 1 when no provider produced another result."
|
||||
source = "investigation"
|
||||
confidence = "high"
|
||||
depends_on = ["0xeff75", "0xeff76"]
|
||||
@@ -1187,6 +1187,17 @@ source = "investigation"
|
||||
confidence = "high"
|
||||
depends_on = ["0x4e11b"]
|
||||
|
||||
[[global]]
|
||||
address = "0x4e693"
|
||||
name = "entity_skill_flags"
|
||||
category = "data-table"
|
||||
type = "int[50][300]"
|
||||
value_domain = "zero absent; nonzero skill state indexed by SKINIT skill id"
|
||||
usage = "Per-runtime-entity skill-state row. CALCREVISE and CALCSCOPE mark equipped skills, combat/field consumers test specific skill ids, and RTN_M009 requires skill 22 (Unlock) before treating an unopened type-7 chest as a treasure target."
|
||||
source = "investigation"
|
||||
confidence = "high"
|
||||
depends_on = ["0x5212b", "0xa6f86"]
|
||||
|
||||
[[global]]
|
||||
address = "0x522ed"
|
||||
name = "entity_faction_ids"
|
||||
@@ -1220,6 +1231,30 @@ source = "investigation"
|
||||
confidence = "high"
|
||||
depends_on = ["0x5231f"]
|
||||
|
||||
[[global]]
|
||||
address = "0x53e13"
|
||||
name = "entity_carried_item_ids"
|
||||
category = "data-table"
|
||||
type = "int[50][2]"
|
||||
columns = { "0" = "slot_0", "1" = "slot_1" }
|
||||
value_domain = "zero for empty; otherwise ITINIT item id"
|
||||
usage = "Two carried/drop-item slots per runtime entity. SETEN initializes slot 0 from the unit's starting equipment item, FIELD fills an empty or matching slot when treasure is collected, and RTN_M009 requires an empty slot or an item-id match before approaching a chest/treasure object."
|
||||
source = "investigation"
|
||||
confidence = "high"
|
||||
depends_on = ["0x53e77", "0x78c0e"]
|
||||
|
||||
[[global]]
|
||||
address = "0x53e77"
|
||||
name = "entity_carried_item_counts"
|
||||
category = "data-table"
|
||||
type = "int[50][2]"
|
||||
columns = { "0" = "slot_0", "1" = "slot_1" }
|
||||
value_domain = "0..999 quantity paired with entity_carried_item_ids"
|
||||
usage = "Quantities for the two per-entity carried/drop-item slots. SETEN seeds a starting item with quantity one; FIELD adds treasure quantities to the matching slot and caps the result at 999."
|
||||
source = "investigation"
|
||||
confidence = "high"
|
||||
depends_on = ["0x53e13"]
|
||||
|
||||
[[global]]
|
||||
address = "0x53517"
|
||||
name = "entity_movement_routine_set_ids"
|
||||
@@ -1288,14 +1323,14 @@ depends_on = ["0x4e085"]
|
||||
|
||||
[[global]]
|
||||
address = "0xb8d86"
|
||||
name = "attack_range_distance_grid"
|
||||
name = "action_range_distance_grid"
|
||||
category = "data-table"
|
||||
type = "int[][27]"
|
||||
value_domain = "0 outside attack range; otherwise one-based encoded range band"
|
||||
usage = "ATSEEK's row-major attack-range flood-fill grid. It starts from the acting entity, expands through map-valid doubled-coordinate neighbors up to offensive_action_max_range, and stores 1 for the first range band, 2 for the next, and so on. RTN_M051/052 use the value at an enemy tile to select an offensive_action_scope_masks band."
|
||||
usage = "ATSEEK's row-major action-range flood-fill grid. It starts from the acting entity, expands through map-valid doubled-coordinate neighbors up to usable_action_max_range, and stores 1 for the first range band, 2 for the next, and so on. RTN_M051/052 select offensive targets from it; RTN_M061 selects in-range healing targets."
|
||||
source = "investigation"
|
||||
confidence = "high"
|
||||
depends_on = ["0x5231f", "0x52351", "0xcc9f3", "0xcc9f4"]
|
||||
depends_on = ["0x5231f", "0x52351", "0xcc9f3", "0xcc9f4", "0xcc9fe"]
|
||||
|
||||
[[global]]
|
||||
address = "0x20543"
|
||||
@@ -1347,7 +1382,7 @@ name = "entity_equipped_active_skill_ids"
|
||||
category = "data-table"
|
||||
type = "int[50][4]"
|
||||
value_domain = "0 for an empty slot; otherwise SKINIT skill id"
|
||||
usage = "Four equipped active-skill slots per runtime entity. CALCSCOPE maps each usable offensive skill into an action bit and range band; RTN_M051 turns the selected nonzero action bit back into its skill id."
|
||||
usage = "Four equipped active-skill slots per runtime entity. CALCSCOPE maps each usable offensive or healing skill into the corresponding action bit and range band; RTN_M051/052 select offensive skills and RTN_M061 selects a healing skill from these slots."
|
||||
source = "investigation"
|
||||
confidence = "high"
|
||||
depends_on = ["0xa6f86", "0xa71de", "0xa730a", "0xa7436"]
|
||||
@@ -1358,18 +1393,18 @@ name = "entity_selected_action_ids"
|
||||
category = "data-table"
|
||||
type = "int[50]"
|
||||
value_domain = "0 for normal attack; otherwise selected skill id"
|
||||
usage = "Per-entity selected battle action. RTN_M051/052 write either zero for the normal attack or an id from entity_equipped_active_skill_ids, then return routine execution state 2 so FIELD enters battle. BTRTN may replace the value through a battle-provider decision."
|
||||
usage = "Per-entity selected action. RTN_M051/052 write either zero for the normal attack or an offensive equipped skill and return routine execution state 2; RTN_M061 writes a healing skill and returns state 3. BTRTN may replace the value through a battle-provider decision."
|
||||
source = "investigation"
|
||||
confidence = "high"
|
||||
depends_on = ["0x5212b", "0x66713", "0x66714", "0xeff77"]
|
||||
|
||||
[[global]]
|
||||
address = "0xcc9f2"
|
||||
name = "offensive_action_min_range"
|
||||
name = "usable_action_min_range"
|
||||
category = "counter"
|
||||
type = "int"
|
||||
value_domain = "encoded attack-range band 0..9"
|
||||
usage = "CALCSCOPE initializes this from the equipped/default attack's minimum range and widens it for usable offensive skills. It is the lower bound used while populating offensive_action_scope_masks."
|
||||
value_domain = "encoded action-range band 0..9"
|
||||
usage = "CALCSCOPE initializes this from the equipped/default attack's minimum range and widens it for usable offensive and healing skills. It is the lower bound shared by the offensive and healing action-scope tables."
|
||||
source = "investigation"
|
||||
confidence = "high"
|
||||
depends_on = ["0x8d431", "0xa71de"]
|
||||
@@ -1408,6 +1443,18 @@ source = "investigation"
|
||||
confidence = "high"
|
||||
depends_on = ["0x8d431", "0x8d819", "0xa71de", "0xa730a", "0xcc9f2", "0xcc9f3", "0xcca08"]
|
||||
|
||||
[[global]]
|
||||
address = "0xcc9fe"
|
||||
name = "healing_action_scope_masks"
|
||||
category = "data-table"
|
||||
type = "int[10]"
|
||||
columns = { "0" = "range_0", "1" = "range_1", "2" = "range_2", "3" = "range_3", "4" = "range_4", "5" = "range_5", "6" = "range_6", "7" = "range_7", "8" = "range_8", "9" = "range_9" }
|
||||
value_domain = "action-availability bitmask: bits 1..4 are equipped healing skills"
|
||||
usage = "CALCSCOPE clears ten encoded-range cells and sets the equipped-slot bit for each usable category-7 healing skill over its applicable range. RTN_M061 uses the masks to restrict ally targets and to select the range-enabled healing skill."
|
||||
source = "investigation"
|
||||
confidence = "high"
|
||||
depends_on = ["0x5212b", "0xa6f86", "0xa71de", "0xa730a", "0xcc9f2", "0xcc9f3"]
|
||||
|
||||
[[global]]
|
||||
address = "0x152616"
|
||||
name = "current_entity_index"
|
||||
@@ -2158,11 +2205,11 @@ depends_on = []
|
||||
|
||||
[[global]]
|
||||
address = "0xcc9f3"
|
||||
name = "offensive_action_max_range"
|
||||
name = "usable_action_max_range"
|
||||
category = "counter"
|
||||
type = "int"
|
||||
value_domain = "encoded attack-range band 0..9"
|
||||
usage = "CALCSCOPE initializes this from the equipped/default attack's maximum range and widens it for usable offensive skills. ATSEEK bounds its attack-range flood fill with this value; RTN_M051/052 use it as the upper scan bound."
|
||||
value_domain = "encoded action-range band 0..9"
|
||||
usage = "CALCSCOPE initializes this from the equipped/default attack's maximum range and widens it for usable offensive and healing skills. ATSEEK bounds its action-range flood fill with this value; RTN_M051/052 and RTN_M061 use it as their upper scan bound."
|
||||
source = "investigation"
|
||||
confidence = "high"
|
||||
depends_on = ["0x8d819", "0xa730a"]
|
||||
@@ -2178,17 +2225,6 @@ source = "auto-shape"
|
||||
confidence = "med"
|
||||
depends_on = []
|
||||
|
||||
[[global]]
|
||||
address = "0xeff77"
|
||||
name = ""
|
||||
category = "story-flag"
|
||||
type = "int"
|
||||
value_domain = "one of {0, 2, 3}"
|
||||
usage = "TODO: confirm. Branch-read in 0 scenes / 3 scripts; compared against [0, 2, 3]; writers=['BTRTN.BIN', 'MVRTN.BIN', 'RTN_B001.BIN', 'RTN_B002.BIN']."
|
||||
source = "auto-shape"
|
||||
confidence = "med"
|
||||
depends_on = []
|
||||
|
||||
[[global]]
|
||||
address = "0x152617"
|
||||
name = ""
|
||||
|
||||
Reference in New Issue
Block a user