{
  "image_sha256": "7599201a01aa24b7e6ad1ae4295d493821cde7c3a43b247c464522626c0380a4",
  "native_blocks": [
    {
      "resource": "04_012",
      "record": 2,
      "offset": 6828,
      "length": 30,
      "group": 0,
      "raw_hex": "83 c6 1e b8 00 ff bf 00 ec c7 46 3e c8 00 c7 46 42 90 01 b9 00 0a 80 66 07 ef 2b d2 ff 27",
      "note": "Translated effects verified separately against original x86 with synthetic object/geometry state; source positions remain unmodified in this export.",
      "title": "Configure player approach",
      "current_object_index": 0,
      "current_object": "player",
      "effects": [
        "Set speed magnitude +3E=200, forward velocity +42=400; clear flag +07 bit 4.",
        "C79D: pitch=FF00, heading=EC00, nominal height=2560; empty boost and weapon energy, clear active boost high byte."
      ],
      "reference": "docs/mission-native-setup.md",
      "disassembly": [
        {
          "offset": 6828,
          "bytes": "83 c6 1e",
          "instruction": "add si, 0x1e"
        },
        {
          "offset": 6831,
          "bytes": "b8 00 ff",
          "instruction": "mov ax, 0xff00"
        },
        {
          "offset": 6834,
          "bytes": "bf 00 ec",
          "instruction": "mov di, 0xec00"
        },
        {
          "offset": 6837,
          "bytes": "c7 46 3e c8 00",
          "instruction": "mov word ptr [bp + 0x3e], 0xc8"
        },
        {
          "offset": 6842,
          "bytes": "c7 46 42 90 01",
          "instruction": "mov word ptr [bp + 0x42], 0x190"
        },
        {
          "offset": 6847,
          "bytes": "b9 00 0a",
          "instruction": "mov cx, 0xa00"
        },
        {
          "offset": 6850,
          "bytes": "80 66 07 ef",
          "instruction": "and byte ptr [bp + 7], 0xef"
        },
        {
          "offset": 6854,
          "bytes": "2b d2",
          "instruction": "sub dx, dx"
        },
        {
          "offset": 6856,
          "bytes": "ff 27",
          "instruction": "jmp word ptr [bx]"
        }
      ],
      "differential_cases": 32
    },
    {
      "resource": "04_012",
      "record": 4,
      "offset": 7505,
      "length": 40,
      "group": 0,
      "raw_hex": "83 c6 28 b9 08 01 c6 46 08 c8 c6 46 0a bb 8a 46 09 88 44 03 88 44 11 8a 46 0b 88 44 05 88 44 12 2b c0 bf 20 0f 99 ff 27",
      "note": "Translated effects verified separately against original x86 with synthetic object/geometry state; source positions remain unmodified in this export.",
      "title": "Anchor two following objects to the player",
      "current_object_index": 0,
      "current_object": "player",
      "effects": [
        "Set player sub-cell X=C8, Y=BB; retain cell coordinates.",
        "Copy player cell X/Y to absolute object 1 high coordinate bytes and moving object 2 cell bytes.",
        "C79D: pitch=0, heading=0F20, nominal height=264; empty boost and weapon energy, clear active boost high byte."
      ],
      "reference": "docs/mission-native-setup.md",
      "disassembly": [
        {
          "offset": 7505,
          "bytes": "83 c6 28",
          "instruction": "add si, 0x28"
        },
        {
          "offset": 7508,
          "bytes": "b9 08 01",
          "instruction": "mov cx, 0x108"
        },
        {
          "offset": 7511,
          "bytes": "c6 46 08 c8",
          "instruction": "mov byte ptr [bp + 8], 0xc8"
        },
        {
          "offset": 7515,
          "bytes": "c6 46 0a bb",
          "instruction": "mov byte ptr [bp + 0xa], 0xbb"
        },
        {
          "offset": 7519,
          "bytes": "8a 46 09",
          "instruction": "mov al, byte ptr [bp + 9]"
        },
        {
          "offset": 7522,
          "bytes": "88 44 03",
          "instruction": "mov byte ptr [si + 3], al"
        },
        {
          "offset": 7525,
          "bytes": "88 44 11",
          "instruction": "mov byte ptr [si + 0x11], al"
        },
        {
          "offset": 7528,
          "bytes": "8a 46 0b",
          "instruction": "mov al, byte ptr [bp + 0xb]"
        },
        {
          "offset": 7531,
          "bytes": "88 44 05",
          "instruction": "mov byte ptr [si + 5], al"
        },
        {
          "offset": 7534,
          "bytes": "88 44 12",
          "instruction": "mov byte ptr [si + 0x12], al"
        },
        {
          "offset": 7537,
          "bytes": "2b c0",
          "instruction": "sub ax, ax"
        },
        {
          "offset": 7539,
          "bytes": "bf 20 0f",
          "instruction": "mov di, 0xf20"
        },
        {
          "offset": 7542,
          "bytes": "99",
          "instruction": "cdq"
        },
        {
          "offset": 7543,
          "bytes": "ff 27",
          "instruction": "jmp word ptr [bx]"
        }
      ],
      "differential_cases": 32
    },
    {
      "resource": "04_012",
      "record": 4,
      "offset": 7552,
      "length": 7,
      "group": 0,
      "raw_hex": "83 c6 07 fe 46 0d c3",
      "note": "Translated effects verified separately against original x86 with synthetic object/geometry state; source positions remain unmodified in this export.",
      "title": "Raise object 1",
      "current_object_index": 1,
      "current_object": "object 1",
      "effects": [
        "Increment height high byte (+0D): height += 256 modulo 65536."
      ],
      "reference": "docs/mission-native-setup.md",
      "disassembly": [
        {
          "offset": 7552,
          "bytes": "83 c6 07",
          "instruction": "add si, 7"
        },
        {
          "offset": 7555,
          "bytes": "fe 46 0d",
          "instruction": "inc byte ptr [bp + 0xd]"
        },
        {
          "offset": 7558,
          "bytes": "c3",
          "instruction": "ret"
        }
      ],
      "differential_cases": 32
    },
    {
      "resource": "04_012",
      "record": 4,
      "offset": 7573,
      "length": 27,
      "group": 0,
      "raw_hex": "83 c6 1b c6 46 08 4b c6 46 0a 46 81 6e 0c 60 09 8b fb bb c8 00 b8 00 0c ff 65 02",
      "note": "Translated effects verified separately against original x86 with synthetic object/geometry state; source positions remain unmodified in this export.",
      "title": "Configure object 2 scripted motion",
      "current_object_index": 2,
      "current_object": "object 2",
      "effects": [
        "Set sub-cell X=4B, Y=46; height -= 2400 modulo 65536.",
        "8E24: speed magnitude=200, pitch=0C00; +68=clock+256, +5E=clock+1024 (16-bit); callback +66=8DDD.",
        "Callback 8DDD later switches to 8823 and clears flag bit 4 when its time comparison expires; full movement path not simulated."
      ],
      "reference": "docs/mission-native-setup.md",
      "disassembly": [
        {
          "offset": 7573,
          "bytes": "83 c6 1b",
          "instruction": "add si, 0x1b"
        },
        {
          "offset": 7576,
          "bytes": "c6 46 08 4b",
          "instruction": "mov byte ptr [bp + 8], 0x4b"
        },
        {
          "offset": 7580,
          "bytes": "c6 46 0a 46",
          "instruction": "mov byte ptr [bp + 0xa], 0x46"
        },
        {
          "offset": 7584,
          "bytes": "81 6e 0c 60 09",
          "instruction": "sub word ptr [bp + 0xc], 0x960"
        },
        {
          "offset": 7589,
          "bytes": "8b fb",
          "instruction": "mov di, bx"
        },
        {
          "offset": 7591,
          "bytes": "bb c8 00",
          "instruction": "mov bx, 0xc8"
        },
        {
          "offset": 7594,
          "bytes": "b8 00 0c",
          "instruction": "mov ax, 0xc00"
        },
        {
          "offset": 7597,
          "bytes": "ff 65 02",
          "instruction": "jmp word ptr [di + 2]"
        }
      ],
      "differential_cases": 32
    },
    {
      "resource": "04_014",
      "record": 2,
      "offset": 3985,
      "length": 35,
      "group": 0,
      "raw_hex": "83 c6 23 b8 00 fe 8b 7e 2a c7 46 3e 2c 01 c7 46 42 58 02 b9 00 10 80 66 07 ef 2b d2 2a c0 ff 57 04 ff 27",
      "note": "Translated effects verified separately against original x86 with synthetic object/geometry state; source positions remain unmodified in this export.",
      "title": "Configure player and empty weapon 1 counter",
      "current_object_index": 0,
      "current_object": "player",
      "effects": [
        "Set speed magnitude=300, forward velocity=600; clear flag bit 4.",
        "5E59 with AL=0 clears 5E14 and 5E11 (weapon 1 reserve/working counters).",
        "C79D: pitch=FE00, preserve heading, nominal height=4096; empty boost and weapon energy, clear active boost high byte."
      ],
      "reference": "docs/mission-native-setup.md",
      "disassembly": [
        {
          "offset": 3985,
          "bytes": "83 c6 23",
          "instruction": "add si, 0x23"
        },
        {
          "offset": 3988,
          "bytes": "b8 00 fe",
          "instruction": "mov ax, 0xfe00"
        },
        {
          "offset": 3991,
          "bytes": "8b 7e 2a",
          "instruction": "mov di, word ptr [bp + 0x2a]"
        },
        {
          "offset": 3994,
          "bytes": "c7 46 3e 2c 01",
          "instruction": "mov word ptr [bp + 0x3e], 0x12c"
        },
        {
          "offset": 3999,
          "bytes": "c7 46 42 58 02",
          "instruction": "mov word ptr [bp + 0x42], 0x258"
        },
        {
          "offset": 4004,
          "bytes": "b9 00 10",
          "instruction": "mov cx, 0x1000"
        },
        {
          "offset": 4007,
          "bytes": "80 66 07 ef",
          "instruction": "and byte ptr [bp + 7], 0xef"
        },
        {
          "offset": 4011,
          "bytes": "2b d2",
          "instruction": "sub dx, dx"
        },
        {
          "offset": 4013,
          "bytes": "2a c0",
          "instruction": "sub al, al"
        },
        {
          "offset": 4015,
          "bytes": "ff 57 04",
          "instruction": "call word ptr [bx + 4]"
        },
        {
          "offset": 4018,
          "bytes": "ff 27",
          "instruction": "jmp word ptr [bx]"
        }
      ],
      "differential_cases": 32
    },
    {
      "resource": "04_015",
      "record": 0,
      "offset": 40,
      "length": 28,
      "group": 0,
      "raw_hex": "83 c6 1c 8b 46 22 89 44 22 b8 00 f5 8b 7e 2a b9 80 09 80 66 07 ef ba ff 9f f9 ff 27",
      "note": "Translated effects verified separately against original x86 with synthetic object/geometry state; source positions remain unmodified in this export.",
      "title": "Configure player and patch later native code",
      "current_object_index": 0,
      "current_object": "player",
      "effects": [
        "Copy player model pointer +22 into the immediate operand at resource offset 0066 of the later block at 0060.",
        "Clear flag bit 4. C79D: pitch=F500, preserve heading, nominal height=2432; boost and weapon energy=9FFF; carry set selects active boost high byte=28."
      ],
      "reference": "docs/mission-native-setup.md",
      "disassembly": [
        {
          "offset": 40,
          "bytes": "83 c6 1c",
          "instruction": "add si, 0x1c"
        },
        {
          "offset": 43,
          "bytes": "8b 46 22",
          "instruction": "mov ax, word ptr [bp + 0x22]"
        },
        {
          "offset": 46,
          "bytes": "89 44 22",
          "instruction": "mov word ptr [si + 0x22], ax"
        },
        {
          "offset": 49,
          "bytes": "b8 00 f5",
          "instruction": "mov ax, 0xf500"
        },
        {
          "offset": 52,
          "bytes": "8b 7e 2a",
          "instruction": "mov di, word ptr [bp + 0x2a]"
        },
        {
          "offset": 55,
          "bytes": "b9 80 09",
          "instruction": "mov cx, 0x980"
        },
        {
          "offset": 58,
          "bytes": "80 66 07 ef",
          "instruction": "and byte ptr [bp + 7], 0xef"
        },
        {
          "offset": 62,
          "bytes": "ba ff 9f",
          "instruction": "mov dx, 0x9fff"
        },
        {
          "offset": 65,
          "bytes": "f9",
          "instruction": "stc"
        },
        {
          "offset": 66,
          "bytes": "ff 27",
          "instruction": "jmp word ptr [bx]"
        }
      ],
      "differential_cases": 32
    },
    {
      "resource": "04_015",
      "record": 0,
      "offset": 96,
      "length": 9,
      "group": 1,
      "raw_hex": "83 c6 09 c7 46 22 00 00 c3",
      "note": "Translated effects verified separately against original x86 with synthetic object/geometry state; source positions remain unmodified in this export.",
      "title": "Give object 2 the player model",
      "current_object_index": 2,
      "current_object": "object 2",
      "effects": [
        "Set object model pointer +22 from this instruction immediate, patched earlier at resource offset 0066.",
        "On disk the immediate is zero; executing this block alone without the earlier patch does not reproduce setup."
      ],
      "reference": "docs/mission-native-setup.md",
      "disassembly": [
        {
          "offset": 96,
          "bytes": "83 c6 09",
          "instruction": "add si, 9"
        },
        {
          "offset": 99,
          "bytes": "c7 46 22 00 00",
          "instruction": "mov word ptr [bp + 0x22], 0"
        },
        {
          "offset": 104,
          "bytes": "c3",
          "instruction": "ret"
        }
      ],
      "differential_cases": 32
    }
  ],
  "differential_cases": 224,
  "cross_block_patch_checks": 1,
  "altitude_flag_cases": 256,
  "terminal_wait_counter_cases": 256,
  "scope": "Full current-object bytes, all code-segment bytes including globals and shared stream, SI advancement and DS restoration compared with explicit reference effects. Synthetic model heights, clock values and randomized object state; original setup helpers execute without substitution. Wait test stops at retry helper entry C1E1. No concurrent script or complete scenario simulation."
}
