Rehost save-world governance issue byte strip
This commit is contained in:
parent
b81b67d2b3
commit
d99b7eb5c0
9 changed files with 242 additions and 15 deletions
|
|
@ -1538,6 +1538,14 @@ pub struct SmpSaveWorldIssue37Probe {
|
|||
pub payload_offset: usize,
|
||||
pub payload_len: usize,
|
||||
pub payload_len_hex: String,
|
||||
pub issue_37_raw_u8: u8,
|
||||
pub issue_37_raw_hex: String,
|
||||
pub issue_38_raw_u8: u8,
|
||||
pub issue_38_raw_hex: String,
|
||||
pub issue_39_raw_u8: u8,
|
||||
pub issue_39_raw_hex: String,
|
||||
pub issue_3a_raw_u8: u8,
|
||||
pub issue_3a_raw_hex: String,
|
||||
pub issue_value_lane: SmpSaveDwordCandidate,
|
||||
pub multiplier_lane: SmpSaveDwordCandidate,
|
||||
pub evidence: Vec<String>,
|
||||
|
|
@ -2203,6 +2211,12 @@ pub struct SmpLoadedWorldIssue37State {
|
|||
pub semantic_family: String,
|
||||
pub issue_value: u32,
|
||||
pub issue_value_hex: String,
|
||||
pub issue_38_value: u32,
|
||||
pub issue_38_value_hex: String,
|
||||
pub issue_39_value: u32,
|
||||
pub issue_39_value_hex: String,
|
||||
pub issue_3a_value: u32,
|
||||
pub issue_3a_value_hex: String,
|
||||
pub multiplier_raw_u32: u32,
|
||||
pub multiplier_raw_hex: String,
|
||||
pub multiplier_value_f32_text: String,
|
||||
|
|
@ -3414,6 +3428,12 @@ fn derive_loaded_world_issue_37_state_from_probe(
|
|||
semantic_family: probe.semantic_family.clone(),
|
||||
issue_value: probe.issue_value_lane.raw_u32,
|
||||
issue_value_hex: probe.issue_value_lane.raw_u32_hex.clone(),
|
||||
issue_38_value: u32::from(probe.issue_38_raw_u8),
|
||||
issue_38_value_hex: probe.issue_38_raw_hex.clone(),
|
||||
issue_39_value: u32::from(probe.issue_39_raw_u8),
|
||||
issue_39_value_hex: probe.issue_39_raw_hex.clone(),
|
||||
issue_3a_value: u32::from(probe.issue_3a_raw_u8),
|
||||
issue_3a_value_hex: probe.issue_3a_raw_hex.clone(),
|
||||
multiplier_raw_u32: probe.multiplier_lane.raw_u32,
|
||||
multiplier_raw_hex: probe.multiplier_lane.raw_u32_hex.clone(),
|
||||
multiplier_value_f32_text: format!("{:.6}", probe.multiplier_lane.value_f32),
|
||||
|
|
@ -8798,6 +8818,22 @@ fn parse_save_world_issue_37_probe(
|
|||
"issue_0x37_value",
|
||||
RT3_SAVE_WORLD_BLOCK_ISSUE_0X37_VALUE_RELATIVE_OFFSET,
|
||||
)?;
|
||||
let issue_37_raw_u8 = read_u8_at(
|
||||
bytes,
|
||||
payload_offset + RT3_SAVE_WORLD_BLOCK_ISSUE_0X37_VALUE_RELATIVE_OFFSET,
|
||||
)?;
|
||||
let issue_38_raw_u8 = read_u8_at(
|
||||
bytes,
|
||||
payload_offset + RT3_SAVE_WORLD_BLOCK_ISSUE_0X37_VALUE_RELATIVE_OFFSET + 1,
|
||||
)?;
|
||||
let issue_39_raw_u8 = read_u8_at(
|
||||
bytes,
|
||||
payload_offset + RT3_SAVE_WORLD_BLOCK_ISSUE_0X37_VALUE_RELATIVE_OFFSET + 2,
|
||||
)?;
|
||||
let issue_3a_raw_u8 = read_u8_at(
|
||||
bytes,
|
||||
payload_offset + RT3_SAVE_WORLD_BLOCK_ISSUE_0X37_VALUE_RELATIVE_OFFSET + 3,
|
||||
)?;
|
||||
let multiplier_lane = build_save_dword_candidate(
|
||||
bytes,
|
||||
payload_offset,
|
||||
|
|
@ -8812,6 +8848,14 @@ fn parse_save_world_issue_37_probe(
|
|||
payload_offset,
|
||||
payload_len: RT3_SAVE_WORLD_BLOCK_LEN,
|
||||
payload_len_hex: format!("0x{:x}", RT3_SAVE_WORLD_BLOCK_LEN),
|
||||
issue_37_raw_u8,
|
||||
issue_37_raw_hex: format!("0x{issue_37_raw_u8:02x}"),
|
||||
issue_38_raw_u8,
|
||||
issue_38_raw_hex: format!("0x{issue_38_raw_u8:02x}"),
|
||||
issue_39_raw_u8,
|
||||
issue_39_raw_hex: format!("0x{issue_39_raw_u8:02x}"),
|
||||
issue_3a_raw_u8,
|
||||
issue_3a_raw_hex: format!("0x{issue_3a_raw_u8:02x}"),
|
||||
issue_value_lane,
|
||||
multiplier_lane,
|
||||
evidence: vec![
|
||||
|
|
@ -8829,6 +8873,15 @@ fn parse_save_world_issue_37_probe(
|
|||
"multiplier lane uses payload +0x{:x} ([world+0x29]); atlas notes tie 0x004339b0 to one companion scalar at that lane before company share-price refresh",
|
||||
RT3_SAVE_WORLD_BLOCK_ISSUE_0X37_MULTIPLIER_RELATIVE_OFFSET
|
||||
),
|
||||
format!(
|
||||
"the adjacent byte strip at payload +0x{:x}..+0x{:x} carries raw issue slots 0x37..0x3a as {:02x} {:02x} {:02x} {:02x}",
|
||||
RT3_SAVE_WORLD_BLOCK_ISSUE_0X37_VALUE_RELATIVE_OFFSET,
|
||||
RT3_SAVE_WORLD_BLOCK_ISSUE_0X37_VALUE_RELATIVE_OFFSET + 3,
|
||||
issue_37_raw_u8,
|
||||
issue_38_raw_u8,
|
||||
issue_39_raw_u8,
|
||||
issue_3a_raw_u8
|
||||
),
|
||||
],
|
||||
});
|
||||
}
|
||||
|
|
@ -15638,6 +15691,14 @@ mod tests {
|
|||
assert_eq!(probe.payload_offset, payload_offset);
|
||||
assert_eq!(probe.issue_value_lane.relative_offset_hex, "0x29");
|
||||
assert_eq!(probe.issue_value_lane.value_i32, 3);
|
||||
assert_eq!(probe.issue_37_raw_u8, 3);
|
||||
assert_eq!(probe.issue_37_raw_hex, "0x03");
|
||||
assert_eq!(probe.issue_38_raw_u8, 0);
|
||||
assert_eq!(probe.issue_38_raw_hex, "0x00");
|
||||
assert_eq!(probe.issue_39_raw_u8, 0);
|
||||
assert_eq!(probe.issue_39_raw_hex, "0x00");
|
||||
assert_eq!(probe.issue_3a_raw_u8, 0);
|
||||
assert_eq!(probe.issue_3a_raw_hex, "0x00");
|
||||
assert_eq!(probe.multiplier_lane.relative_offset_hex, "0x25");
|
||||
assert!((probe.multiplier_lane.value_f32 - 0.06).abs() < f32::EPSILON);
|
||||
}
|
||||
|
|
@ -15765,6 +15826,14 @@ mod tests {
|
|||
payload_offset: 0x3d2,
|
||||
payload_len: RT3_SAVE_WORLD_BLOCK_LEN,
|
||||
payload_len_hex: format!("0x{:x}", RT3_SAVE_WORLD_BLOCK_LEN),
|
||||
issue_37_raw_u8: 3,
|
||||
issue_37_raw_hex: "0x03".to_string(),
|
||||
issue_38_raw_u8: 1,
|
||||
issue_38_raw_hex: "0x01".to_string(),
|
||||
issue_39_raw_u8: 2,
|
||||
issue_39_raw_hex: "0x02".to_string(),
|
||||
issue_3a_raw_u8: 4,
|
||||
issue_3a_raw_hex: "0x04".to_string(),
|
||||
issue_value_lane: SmpSaveDwordCandidate {
|
||||
label: "issue_0x37_value".to_string(),
|
||||
relative_offset: 0x29,
|
||||
|
|
@ -15895,6 +15964,9 @@ mod tests {
|
|||
.world_issue_37_state
|
||||
.expect("world issue-0x37 state should load");
|
||||
assert_eq!(issue_37_state.issue_value, 3);
|
||||
assert_eq!(issue_37_state.issue_38_value, 1);
|
||||
assert_eq!(issue_37_state.issue_39_value, 2);
|
||||
assert_eq!(issue_37_state.issue_3a_value, 4);
|
||||
assert_eq!(issue_37_state.multiplier_raw_hex, "0x3d75c28f");
|
||||
assert_eq!(issue_37_state.multiplier_value_f32_text, "0.060000");
|
||||
let tuning_state = slice
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue