← 技术文档

关卡脚本指令参考

关卡事件脚本的全部指令、条件指令、上下文标记、事件类型、变量与出击记录字段,逐条附实现依据与实测结果。写迷你关卡时查。

更新于 2026-10-07

关卡里的每个事件是一串 16 位字:指令码 3D31–3D79 后面跟它的操作数,条件指令 3E00–3E1D 组成判断块,上下文标记 3DD0–3DDB 按当前主角路线或选择肢挑出要执行的段落,FFFF 结束事件。写迷你关卡时,指令写成 {"op": "3D45", "args": [1]},条件指令和标记也用同样的写法。

本页由 config/data/original-jp-v1.json 的 stage_scripts 表生成。「代码确认」表示含义已从游戏的处理函数确认;「结构确认」表示读写位置已确认,作用还没完全弄清。「依据」是对应的游戏代码(地址为日版 Rev 0 的内存地址),「实测」是在游戏里运行得到的结果。

事件类型

事件登记时的类型决定它什么时候被检查、四个触发参数(header)怎么解释。

类型 名称 检查时机 触发参数
0 回合开始触发 阶段 0 1. 回合数:当前回合 ≥ 该值
2. 阶段:必须等于当前阶段 8010F5E8(1 我方 / 2 敌方)
3. 保留
4. 保留
1 延迟计数触发(3D52 启动) 阶段 0 1. 初始状态:运行时由 3D52 改写为 0xFD
2. 阶段:运行时由 3D52 改写;4 为任意
3. 保留
4. 保留
2 单位击破/退场触发 总是 1. 门槛变量:100–115 时变量等于 3 则不触发(8009DE7C 每关开始把 100–114 置 3,脚本写 0 才启用);其他编号不检查;0 为无门槛
2. 角色:该角色所驾单位 HP 百分比归零
3. 保留
4. 保留
3 HP 低于百分比触发 总是 1. 角色:角色 138 特例:其单位 HP < 11 才继续
2. 百分比:HP% ≤ 该值且在场
3. 保留
4. 保留
4 交战事件(战斗后,阶段 7) 阶段 7 1. 角色 A:0 = 任意
2. 角色 B:0 = 任意
3. 保留
4. 保留
5 交战事件(战斗前,阶段 4) 阶段 4 1. 角色 A:0 = 任意
2. 角色 B:0 = 任意
3. 保留
4. 保留
6 敌方全灭触发 总是 1. 最晚回合:当前回合(0 起算)≤ 该值才触发;8009E834 在该值 < 当前回合时返回
2. 阶段:4 为任意
3. 保留
4. 保留
7 阵营残存数触发 总是 1. 阵营选择:2 → 第三方计数 0x9B2,否则敌方 0x9B1
2. 数量上限:残存数 ≤ 该值
3. 阶段:4 为任意
4. 门槛变量:100–115 时变量等于 3 则不触发(8009DE7C 每关开始把 100–114 置 3,脚本写 0 才启用);其他编号不检查
8 区域到达触发(需 3D57 启用) 阶段 0、阶段 1、阶段 2、阶段 6 1. 回合或模式:数值 = 当前回合 ≥ 该值;0xFF = 到达即触发;0xFE = 我方全部离场
2. 目标:N×1000 + 角色(或 500+阵营、21 = 列表首个在场角色)
3. x 范围:x0×10 + 宽
4. y 范围:y0×10 + 高
9 说服(0x992,阶段 6) 阶段 0、阶段 1、阶段 2、阶段 6 1. 说服者:800A4634 按登记顺序找第一个未执行、门槛满足、双方上下左右相邻的槽,写入 engine+0x992
2. 对象:对象属于哪个阵营都可以
3. 门槛变量:0xFFF8(−8)为无门槛;否则 变量 == 门槛值 时「説得」才出现。跨关的多步说服靠它串联
4. 门槛值
10 登记但不轮询 无 1. 保留
2. 保留
3. 保留
4. 保留
11 登记但不轮询 无 1. 保留
2. 保留
3. 保留
4. 保留
12 开场事件(阶段 C1) engine+4 = 0xC1 1. 保留
2. 保留
3. 保留
4. 保留
13 阶段 C2 事件(初期配置) engine+4 = 0xC2 1. 保留
2. 保留
3. 保留
4. 保留
14 结束事件(阶段 C3,3D4A 之后) engine+4 = 0xC3 1. 保留
2. 保留
3. 保留
4. 保留

指令

3D31 · 世界地图定位(地点,与 3D32 同处理函数)

操作数(1 个字) · 代码确认 · 处理函数 0x800A0E64

  1. 地点 — world_location

依据:一字索引 D_801C5310 的三个半字调用 801C4BCC,等待 801C4FBC 返回 1;load_000A7EC0 世界地图 overlay;PC+2。

实测(2026-09-16):原脚本无实例。迷你关卡中 3D31 4 与基准 3D32 4 指向同一表项,画面同为不列颠/北海居中且带标记,用时同为 106 VI;与 3D32 共用 800A0E64,行为一致。

3D32 · 世界地图定位(地点)

操作数(1 个字) · 代码确认 · 处理函数 0x800A0E64

  1. 地点 — world_location

依据:与 3D31 共用处理函数 800A0E64。

实测(2026-09-16):迷你关卡开场(世界地图 overlay)依次执行 3D32 0/2/19/46/71/63:标记始终停在画面正中,地图整体移动到表 801C5310 该项的位置,第 0 半字不同时地表整幅更换(项 2 地中海、项 19 海岸、项 46 雪山、项 63 荒漠)。除已在该地点的首次调用(0 VI)外每次固定 106 VI,与距离无关,是定长切换而非按距离卷动。

3D33 · 世界地图移动(目的地点)

操作数(1 个字) · 代码确认 · 处理函数 0x800A0EFC

  1. 地点 — world_location

依据:载具(世界地图模型表 801C5670 下标)取 D_801C5644[0x990],0x990 为 0 时取 800A31DC(46):ブライト 所乘机体经配对表 801C560C 换成模型下标(-1 → 24);连同表项后两个半字调用 801C37B8,等待 801C41BC;PC+2。

实测(2026-09-16):迷你关卡中 3D33 2 与 3D33 69 在世界地图上画出一条蓝白航迹,由当前地点移动到表 801C5310 该项的位置(项 69 终点在北美),用时 316/566 VI,随距离变化。与 3D32 的定长 106 VI 定位相区别:3D32 换位置,3D33 演出移动过程。

3D34 · 切换地图并卷动至位置(地图编号, x, y, 种类)

操作数(4 个字) · 代码确认 · 处理函数 0x8009F6FC

  1. 地图编号 — map:地图编号(base:map_assets;写入 8010F5EE)
  2. x — x:格 x
  3. y — y:格 y
  4. 种类 — raw:未解释

依据:第 3 字为 0 → 状态 1:8020A9F4 把第 0 字低字节存入 802279EC 并调用 80099814(5,1,-1),8020AAC8 按 8021E240 状态表推进到状态 2;否则状态 2:80212464 → 8020A874 直接把该字节写入当前地图索引 8010F5EE 并重载地图资源(8008B888(0x3B)、80098158、8009CB04/8009CA28、801C6394),8021261C 等待完成。之后 80209DAC(x, y, 1) 卷动视点;第 1/2 字为 0x4000 时改用 3D54 记住的位置;完成后 PC+8。非战术地图模式直接 PC+8。

实测(2026-09-16):注入 3D34 0,10,10,0 与 3D34 0,24,24,1:当前地图索引 8010F5EE 由 20 变为 0,随机数表 2081 字节重建,整幅画面重绘为地图 0(14254/19200 采样像素变化),分别 64/42 VI 完成。

3D35 · 镜头卷动至位置(位置, 等待标志)

操作数(2 个字) · 代码确认 · 处理函数 0x800A03E8

  1. 位置 — position:高字节 x/低字节 y,0x40–0x44 相对 3D54 位置
  2. 等待标志 — raw:未解释

依据:第 0 字经 800A38DC 解码(高字节 x/低字节 y;0x40–0x44 为相对 3D54 记住位置:同位、上、右、下、左),第 1 字为 80209DAC 第三参数;完成后 PC+4。

实测(2026-09-17):两个参数都已测清。第 1 字不是速度,而是等待标志:原脚本只出现 0(86 次)与 1(1076 次);同一段距离分别执行,3D35 2068,0 与 5642,0 各阻塞 80/68 VI 直到卷动完成,3D35 2068,1 与 5642,1 都在 0 VI 立即返回、画面在其后帧里继续卷动。第 0 字:高字节 0x40–0x44 为相对 3D54 记住的位置(同位/上/右/下/左),低字节为格数;其余为绝对坐标(高字节 x、低字节 y)。把记住的位置设在地图中央后,以逐帧位移检测(160×120 采样,1 格 = 8 像素,残差 0.0)测得:相对上 3、下 3、左 3 各使画面内容精确位移 24 像素即 3 格,方向正确;相对右 3 只位移 4 像素,方向正确但被地图右边界截住(早先 inject-2 中右 3 同样贴边)。原脚本分布:绝对坐标 643 次、相对同位 490 次、右 15、上 8、下 5、左 1。相对移动每 3 格约 10 VI。此前 inject-2 已确认绝对卷动与 0x4000 回到记住位置。

3D36 · 画面震动(强度编号)

操作数(1 个字) · 代码确认 · 处理函数 0x8009F880

  1. 强度编号 — raw:未解释

依据:战术地图模式:8020D3C8(低字节) 后等待 8020D4B0 状态机;其他模式 801C5000/801C5138;PC+2。

实测(2026-09-16):逐帧采样定案。命令期间 frame-trace 的 mean_delta 由 0 跳到 23.65 并保持恒定,同时 mean_rgb 在 56.53 与 50.37 两个值之间逐帧交替(静止时为 54.23,即在静止位两侧摆动);恒定的帧间差配合两值交替,正是画面在两个位置间逐帧往复。采样帧显示此时视口偏移、边缘露出黑边,与摆动一致。原脚本用法完全吻合:196 处调用几乎全部是「3D39 音效 → 3D36 n → 角色惊讶台词」(如 40 号音效后接「まさか……敵の攻撃だってのか!?」「え……何!?」),是配合音效表现冲击。参数决定时长:5 → 18 VI(9 帧摆动)、6 → 22 VI(11 帧),二者占 196 次中的 161 次;其余值 8/4/2/12/16/3 未逐一测量。不写任何状态,采集窗口内确证无声(声音由相邻的 3D39 提供)。

3D37 · 地图特效叠加(特效编号, 位置)

操作数(2 个字) · 代码确认 · 处理函数 0x8009FF2C

  1. 特效编号 — raw:未解释
  2. 位置 — position:高字节 x/低字节 y,0x40–0x44 相对 3D54 位置

依据:第 0 字索引 D_800C99D4 → D_8021DDE0 三半字资源参数,经 80098158 载入窗口 0x122;位置经 800A38DC 解码为格坐标;D_800C99D6[索引] 交给 8007E8A8 播放音效;卷动后等待窗口标志再关闭;PC+4。

实测(2026-09-17):在同一单位格(位置 0x4000 = 3D54 记住的位置)上依次放三个原脚本用到的编号,逐帧测量该格亮度(基线 88.6)并截取峰值帧(build/recomp/mini-stage/hit-1/3D37-overlays.png):编号 0 峰值 176.6、历时 28 VI,是覆盖整格的大型黄白爆炸;编号 1 峰值 130.3、历时 12 VI,是一道橙黄色的被弹火花;编号 11 峰值 106.0、历时 20 VI,是环绕单位的蓝色光环(护盾类)。三者全帧帧差都很小(0.7–1.5),是限于该格的局部效果,且不写任何状态。与静态描述一致:编号经 D_800C99D4 取资源参数载入窗口 0x122,并把 D_800C99D6[编号] 交给音效函数(编号 0 → 资源 3、音效 167;编号 1 → 资源 4、音效 166)。原脚本分布:1 为 370 次(常放在正被攻击的单位上)、0 为 192 次、11 为 11 次。

3D38 · 等待(帧计数)

操作数(1 个字) · 代码确认 · 处理函数 0x800A00F0

  1. 帧数 — count:计数

依据:一字初始计数,每次调用减一,变负后 PC+2;不换算为秒。

实测(2026-09-16):计数 45 用 90 VI、30 用 60 VI、10 用 20 VI:每计数 2 VI,即 30 fps 的一帧。

3D39 · 播放音效

操作数(1 个字) · 代码确认 · 处理函数 0x8009FA4C

  1. 音效 — se:音效编号

依据:8009F9D0 模式 0 → 8007E8A8(参数);8009F3A8 以 0xB9 播放光标音、3D4D 以 -1 停止均用同一函数;PC+2。

3D3A · 播放 BGM(0 = 停止)

操作数(1 个字) · 代码确认 · 处理函数 0x8009FA70

  1. 曲目 — bgm:曲目编号

依据:8009F9D0 模式 1:非零 → 8007E810(参数),零 → 8007E87C(10);801FA9B0 回合切换同样用 8007E810 播放曲目;PC+2。

3D3B · 画面淡入淡出(模式)

操作数(1 个字) · 代码确认 · 处理函数 0x8009F948

  1. 模式 — raw:未解释

依据:800A3390 按模式选择颜色与目标透明度后调用 8009AC84(…, 12):0 黑色不透明、1 黑色透明、2 白色不透明、3 白色透明;模式 0 与 3 先关闭对白窗口;完成后 PC+2。

实测(2026-09-16):四种模式各 88 VI 完成;160×120 采样帧均值 54.6 → 0.6(0 黑色不透明)→ 54(1 黑色透明)→ 252.5(2 白色不透明)→ 57(3 白色透明)。

3D3C · 单位移动至位置(驾驶员, 位置)

操作数(2 个字) · 代码确认 · 处理函数 0x800A0360

  1. 驾驶员 — actor:人物编号(base:actors)
  2. 位置 — position:高字节 x/低字节 y,0x40–0x44 相对 3D54 位置

依据:关闭窗口;第 1 字经 800A38DC 解码后调用 8020A030(x, y, 第 0 字)。在 8015E100 三阵营各 30 槽中找有效单位,比较单位 +0x38 所指驾驶员的 +2 编号,取首个匹配项。目标格坐标转换为 ×16+32;8020A788 经横移、纵移、收尾状态等待完成后 PC+4,并跟随单位更新镜头。男性超级系开场五次原参数调用已静音观测;原值/目标上移一格对照确认精灵终点和名册逻辑坐标同步改变,收尾 801CBEB8 写回槽 +4/+5。相对位置修正、同编号多单位、目标缺失、地形碰撞及存档仍待专项验证。

实测(2026-09-16):注入 3D3C 28,(25,20):100 VI 后名册 0/0 由 (19,5) 变为 (25,20),画面中单位到达目标格。 相对位置已补测(finale-1,2026-09-17):与 3D35 共用解码器 800A38DC。以 3D54 记住 万丈 于 (12,12) 后移动另一单位 ドモン,目标 0x4202(右 2)使其落在 (14,12),0x4302(下 2)落在 (12,14),0x4002(同位、低字节 2)落在 (12,12)——相对编码精确生效,「同位」时低字节被忽略;移到已有单位的格上允许重叠。

3D3D · 出击(–, –, –, 台数:0 = 选母舰 200 = 全部自动 其余 = 出击选择上限, 基准组)

操作数(5 个字) · 代码确认 · 处理函数 0x800A09D0

  1. 保留(原脚本抄基准坐标 x) — raw:未解释
  2. 保留(原脚本抄基准坐标 y) — raw:未解释
  3. 参数(原脚本恒为 0) — raw:未解释
  4. 台数(0 母舰/200 自动/其余为上限) — raw:未解释
  5. 基准组 — group:配套记录组号

依据:等 10 帧;取配套块中首字等于第 4 字的第一条记录的格坐标作基准点,台数取第 3 字(非 0/200 且 ≥16 时截为 15,故原脚本常用的 100 即 15),调用 801C78A0(x, y, 第 2 字, 台数, 第 4 字);第 3 字非零时清空 8015F700;第 0/1 字未被读取;PC+10,本身不阻塞。801C78A0 从我方机体库(8016A210 起 140 项)挑候选:+0xC 有 0x80 无 0x40、+0xD ≠ 8、有驾驶员、该驾驶员在场状态 8015DE90 为 -1 或 2 且不在 8015F700 排除名单;台数 0 时只取带 +0x28 0x80000 的母舰,唯一候选直接登记到母舰表 8015E850,否则弹窗选择;200 时全部候选置选中后直接出场;其余打开出击选择界面(战术状态 80172EB0 = 2,801C820C 的名单/菜单/确认子状态),确认后状态 3 由 801C835C 每隔数帧把选中单位放到基准点附近的空槽(+0xB = 组);状态 2/3 期间战术主循环不推进脚本,回到状态 5 后才继续;候选数为 0 时直接置状态 5。

实测(2026-09-17):三份验证关,开场都先用 3D5A 4,0,5,500 与 3D5A 95,0,119,500 登记 ドモン 与 ヒイロ(机体库出现 +0xC = 0x81/0x84 的两项),基准组 2 在 (8,8)、组 3 在 (5,10),两组都不经 3D45 部署。 • sortie-a(3D59 95 后 3D3D 8,8,0,1,2):3D3D 执行后战术状态 05→02,排除名单被清空,候选数 1、候选为 ドモン 的机体 8016A210。画面为「出撃ユニット選択」名单(1/1,あと 1機,只有 ドモン・カッシュ),按 A 选中后弹出「これでよろしいですか? はい/いいえ」,确认后 (8,8) 出现传送特效、ドモン 登场。384 VI 后脚本才继续:状态回到 05,我方槽 0 = (8,8)、+0xB = 2、指向 8016A210,ドモン 在场状态 -1→1。 • sortie-b(只把 3D59 的参数换成 4):候选变为 ヒイロ 的 ウイングゼロ 8016A264,名单只有 ウイングゼロ,登场的是 ヒイロ,ドモン 保持 -1。 • sortie-c(3D5A 46,0,52,500 登记 ブライト 与 アウドムラ,随后 3D3D 5,10,0,0,3 与 3D3D 8,8,0,200,2):母舰那一步没有任何界面,状态直接 05→03,母舰表 8015E850 计数 1、机体 52,282 VI 后 アウドムラ 在 (5,10) 登场;自动出击那一步同样不出界面,两个候选都被置为选中(选中标志 01 01,上限与已选数 2/2),292 VI 后 ドモン (8,8)、ヒイロ (8,6) 依次传送登场,都带组号 2。母舰没有出现在第二步的候选里(该模式排除 0x80000)。 此前 scene8-2 没进界面,是因为当时我方机体库里只有 ブライト 的母舰,又被 3D59 46 排除,候选数为 0,按代码直接回到状态 5。原脚本 216 处中 193 处在开场、都在 3D4D 之后;第 3 字 0×85、100×100、200×21(场景 4–10 的自动出击),最常见的是先 0 后 100 两条连用,即先选母舰再选出击单位。

早先记录:取第 4 字所指出击组的首条记录格坐标,连同第 2、3 字调用 801C78A0;801C78A0 对数量 100/200 有专门分支,200 时把名单中的单位拷入 80223538 起的数组并调用 801C82F0(0)。scene8-2 补上 8015F700 探针后原样复现场景 8:3D4D 之后列表为空;3D59 46 执行后列表为 [46](ブライト);紧接的 3D3D 14,24,0,200,1 执行后列表又变为空——3D3D 读取并清空了该列表(其第 3 字 200 非零,与「第 3 字非零时清空 8015F700」一致)。3D3D 期间及之后我方地图槽始终为 0,即它本身不把单位放上地图;场景 8 出击组 1 的坐标为 万丈 (13,25)、ブラッド (12,24)、カーツ (14,24)、甲児 (13,23)、さやか (15,23)、ルー (11,23),正在 3D3D 所给的 (14,24) 一带。据此推测二者是出击准备:3D59 把必须出击的角色(如母舰舰长 ブライト)列入名单,3D3D 以某组的出击点为基准处理该名单,实际落位要等玩家完成出击选择;有界运行不会进入出击选择,本轮未能看到该界面,故保持 structure-confirmed。

3D3E · 对白 · 显示模式 0

操作数(1 个字) · 对白显示模式 0 · 代码确认 · 处理函数 0x8009F654

  1. 文本 — text:表 0 文本编号

依据:8009F4B4 读取一字文本 ID;8008CE54 从文本头部前三位数字取说话人,25/29 按主角上下文加偏移;800A2C18 找到说话人所驾单位后卷动视点;8008FED4 返回 3 时 PC+2。

实测(2026-09-16):注入文本以对白窗口显示,说话人按运行时路线解析为マナミ,按 A 翻页后完成(2260 VI 含等待输入)。

3D3F · 对白 · 显示模式 1

操作数(1 个字) · 对白显示模式 1 · 代码确认 · 处理函数 0x8009F670

  1. 文本 — text:表 0 文本编号

依据:8009F4B4 读取一字文本 ID;8008CE54 从文本头部前三位数字取说话人,25/29 按主角上下文加偏移;800A2C18 找到说话人所驾单位后卷动视点;8008FED4 返回 3 时 PC+2。

实测(2026-09-16):同上,740 VI 含等待输入。

3D40 · 对白 · 显示模式 2

操作数(1 个字) · 对白显示模式 2 · 代码确认 · 处理函数 0x8009F68C

  1. 文本 — text:表 0 文本编号

依据:8009F4B4 读取一字文本 ID;8008CE54 从文本头部前三位数字取说话人,25/29 按主角上下文加偏移;800A2C18 找到说话人所驾单位后卷动视点;8008FED4 返回 3 时 PC+2。

3D41 · 对白 · 显示模式 3

操作数(1 个字) · 对白显示模式 3 · 代码确认 · 处理函数 0x8009F6A8

  1. 文本 — text:表 0 文本编号

依据:8009F4B4 读取一字文本 ID;8008CE54 从文本头部前三位数字取说话人,25/29 按主角上下文加偏移;800A2C18 找到说话人所驾单位后卷动视点;8008FED4 返回 3 时 PC+2。

3D42 · 对白 · 显示模式 4

操作数(1 个字) · 对白显示模式 4 · 代码确认 · 处理函数 0x8009F6C4

  1. 文本 — text:表 0 文本编号

依据:8009F4B4 读取一字文本 ID;8008CE54 从文本头部前三位数字取说话人,25/29 按主角上下文加偏移;800A2C18 找到说话人所驾单位后卷动视点;8008FED4 返回 3 时 PC+2。

3D43 · 对白 · 显示模式 5

操作数(1 个字) · 对白显示模式 5 · 代码确认 · 处理函数 0x8009F6E0

  1. 文本 — text:表 0 文本编号

依据:8009F4B4 读取一字文本 ID;8008CE54 从文本头部前三位数字取说话人,25/29 按主角上下文加偏移;800A2C18 找到说话人所驾单位后卷动视点;8008FED4 返回 3 时 PC+2。

3D44 · 显示选择肢(窗口槽位, 选项数, 选项文本)

操作数(3 个字) · 代码确认 · 处理函数 0x8009FA94

  1. 窗口槽位 — raw:未解释
  2. 选项数 — count:计数
  3. 选项文本 — text:表 0 文本编号

依据:取指后 PC 指向参数 1(8009EED0 已推进 2 字节)。8009FA94 首帧:8008FF34(buf, 参数 1) 按 参数 1×12 读 800C6994/800C6996 作窗口坐标;8008FF04(a0=参数 1, a1=lhu 4(PC) 即参数 3) → 8008F648(槽位, 文本, 模式 2),文本 ID 存入 s6 后交给 8008CD8C 绘制,与对白 8009F4B4→8008FED4 以 lhu 0(PC) 传文本走同一路径(模式 1);参数 2 (lh 2(PC)) 作为选项数传给 8009F3A8,以上下键移动光标、A 键确认;确认后 0x994 = 0x3DD9 + 选中序号,供 3E10–3E12 与上下文标记 3DD9–3DDB 使用;PC+6。选项文本为一条文本,按
分行,行数与选项数一致(46/46 处)。

3D45 · 部署配套记录组(登场)

操作数(1 个字) · 代码确认 · 处理函数 0x8009FC04

  1. 配套组 — group:配套记录组号

依据:10 帧后关闭窗口;从配套数据起点按 14 个半字步进查找首字等于参数的记录,8020B0D4 清空登场列表后对每条连续同组记录调用 8020B154(8020ABB4 由记录生成运行时机体与驾驶员);8020C524 返回 1 后再等 10 帧,PC+2。

实测(2026-09-16):注入 3D45 3:292 VI 后名册 0/2 出现 (12,21) 组 3 的单位,机体、驾驶员(人物 204)与武器实例记录新建,画面中央出现我方单位。

3D46 · 单位退场(角色或配套组, 立即)

操作数(2 个字) · 代码确认 · 处理函数 0x8009FDC4

  1. 角色或配套组 — actor_or_group:<500 为人物编号,≥500 为配套组 (值−500)
  2. 立即 — bool:开关

依据:8020C620 清空列表,8020C7BC(第 0 字) 登记该角色所驾单位,≥500 时登记地图槽 +0xB 低 5 位等于 (值−500) 的整组单位;8020D300(第 1 字低字节) 非零立即完成,否则等状态机;再等 5 帧后 PC+4。800A4288 的区域到达处理使用同一组调用,候选含义为退场。

实测(2026-09-16):注入 3D46 503,1:36 VI 后名册 0/2(3D45 登场的组 3 单位)被移除,机体实例记录未清除;即退场。

3D47 · 关闭对白窗口并等待 32 帧

无操作数 · 代码确认 · 处理函数 0x800A013C

依据:800A34D8 关闭窗口 0x22/0x1F 与对白状态,计数到 32 后完成。

3D48 · 关闭对白窗口

无操作数 · 代码确认 · 处理函数 0x800A0194

依据:800A34D8 后立即完成。

实测(2026-09-16):立即完成(0 VI)。

3D49 · 脚本战斗演出(战斗表项 A, 战斗表项 B)

操作数(2 个字) · 代码确认 · 处理函数 0x800A10F0

  1. 战斗表项 A — battle_entry
  2. 战斗表项 B — battle_entry

依据:两个参数各查 14 字节步进、999 结束的表 D_800C9A18;均命中时 80211DA4(第一项) 并等待 8021227C,再计数 25 帧;PC+4。

实测(2026-09-16):迷你关卡把表 800C9A18 项 15/16(レイン、アレンビー)与项 29/3(ドモン、ゾンビ兵)的四名角色都部署到地图后,3D49 15,16 用 1572 VI、3D49 29,3 用 972 VI 全部完成,出现完整战斗画面:双方 HP/EN 条、驾驶员头像、台词(レイン「いくわよっ!!」→ アレンビー「ぎゃああああっ!!」)与攻击动画。结果写回:项 16 一方的名册槽 0/1 状态由 1 变 2(失败/不可动),其机体实例 +0x58/+0x59 的 HP 由 8000 归零,与画面 0/8000 一致;项 3 一方的驾驶员记录 +0x35 清零。表项第 4 个半字不是画面 HP(画面为 8000/5000,表为 32760/10),含义仍未确认。前一轮 duel-2 崩溃的原因是这两名角色不在名册:80211BD0 取名册槽(基址 8015E10C、侧步进 0x258、槽步进 0x14、字段 +0x0C)的机体实例指针后,按 +0x2C 数量/+0x30 指针、步进 0x24 遍历且不校验指针,读到未初始化指针即 SIGBUS。3D49 需要两名角色在地图上,不需要进入战斗流程。

3D4A · 关卡胜利结算

无操作数 · 代码确认 · 处理函数 0x800A01CC

依据:10 帧后关闭窗口,8020D6E4 启动结算状态机,8020DBF4 返回 1 后 engine+4 = 0xC3;8020DB08 归零回合与阶段、累计 8010F5EC 总回合与 8010F5EF 关卡数;随后执行类型 14 事件。

3D4B · 设定下一场景索引(500 = 恢复 8010F5F2)

操作数(1 个字) · 代码确认 · 处理函数 0x800A0260

  1. 场景索引 — scene:场景索引

依据:写 8010F5F0(场景索引)与 8010F5F2;500 时把 8010F5F2 写回 8010F5F0。路线分支据此决定下一话;PC+2。

3D4C · 游戏结束

无操作数 · 代码确认 · 处理函数 0x800A02E0

依据:801DF280:停止 BGM 并进入 game over 处理;败北序列 800A25B0 使用同一函数。

3D4D · 从世界地图切换到战场

无操作数 · 代码确认 · 处理函数 0x800A031C

依据:8015F700 = -1,8007E8A8(-1),engine+4 = 3;具体后续由 overlay 处理。

实测(2026-09-17):引擎块探针读到 engine+4 半字在执行前为 0x00C1(世界地图模式,与世界地图驱动「进入时 engine+4 = 0xC1」一致),3D4D 执行后立刻变为 0x0003,即静态描述中的 engine+4 = 3;此值交给 overlay 处理,由世界地图 overlay 切换到战术 overlay。3D4D 本身在同一轮询内完成,但下一条指令要在约 612 VI 之后才开始(mode-3 为 VI 3177 → 3789,与 flow-1 中观察到的 612 VI 相同),这段时间是 overlay 切换、战场地图载入与章节标题显示。本会话每一个迷你关卡都经由它进入战场,均复现此过程;它总紧跟在世界地图段之后、3D65(胜败条件)与 3D45(部署)之前。静态描述另指出它把单位列表 8015F700 置为 -1 并以 8007E8A8(-1) 停止音效;8015F700 不在探针覆盖范围内,这两项未单独测量。

3D4E · 关闭窗口并让出一帧

无操作数 · 代码确认 · 处理函数 0x800A0468

依据:800A34D8 后 state=1,下一帧完成。

3D4F · 单位击破(角色或配套组)

操作数(1 个字) · 代码确认 · 处理函数 0x8009FE9C

  1. 角色或配套组 — actor:人物编号(base:actors)

依据:8020DC40 清空列表,8020DC84(第 0 字)(与 8020C7BC 同构,≥500 同样按组)登记单位,等待 8020E604 后 5 帧,PC+2。候选含义为登场。

实测(2026-09-17):以已确认的 3D46(退场)作对照在同一轮里比较。3D4F 145:该机体 HP 由 7800/7800 变为 0/7800,名册槽状态由 1 变 2,引擎 +0x9B0(在场单位数)由 2 减到 1,耗时 82 VI;采样帧中该格的机体消失、选择框仍在原处。3D46 165,0:名册槽被整条删除(10 字节清空),耗时 36 VI。即二者都让单位离开战场,但 3D4F 是「被击破」——单位保留在名册里、标为状态 2 且 HP 归零,与 3D49 脚本战斗中败方的写入完全相同;3D46 是「退场」——直接从名册移除。与结构描述吻合:3D4F 与 3D46 同构(清空列表→登记单位,≥500 时按组),只是换用 8020DC40/8020DC84/8020E604 这一组函数。原脚本用法一致:场景 2 开场先用 3D37 1(被弹火花)打在 ゲリラ 身上,再对其 3D4F,随后台词为「ちっ……だめかな、こいつは」。

3D50 · 机体变形(角色, 原机体, 目标机体)

操作数(3 个字) · 代码确认 · 处理函数 0x800A04AC

  1. 角色 — actor:人物编号(base:actors)
  2. 原机体 — unit:机体编号(base:units)
  3. 目标机体 — unit:机体编号(base:units)

依据:关闭窗口后 8020E650(角色, 机体, 第 2 字):查找该角色驾驶该机体的地图槽;等待 8020EB14;PC+6。

实测(2026-09-16):迷你关卡自建出击记录部署 ヒイロ/ウイングガンダム(バード) 与 ケーラ/ウェイブライダー 后注入原脚本实例:名册槽的机体实例指针各前移一条记录(0x54),格坐标不变,机体实例 +2 的编号由 118 → 117、49 → 48,HP 4300/3800 原样保留。两例各 66 VI。

3D51 · 发射 MAP 兵器(角色, 机体, MAP 兵器, 方向, –)

操作数(5 个字) · 代码确认 · 处理函数 0x800A051C

  1. 角色 — actor:人物编号(base:actors)
  2. 机体 — unit:机体编号(base:units)
  3. MAP 兵器 — weapon
  4. 方向 — raw:未解释
  5. – — raw:未解释

依据:8020ECE0(五字),第 3/4 字同为 0x4000 时改用 3D54 记住的位置;查找角色+机体的地图槽后经 801E085C 驱动移动;等待 8021042C;PC+10。

实测(2026-09-17):原名「单位移动至坐标」有误。原脚本 14 处的第 2 字无一例外都是 MAP 兵器编号:478 バスターライフルMAP、146 集束荷電粒子砲MAP、1063 V-MAXMAP、1208 ガンドール砲MAP、487 ツインバスターライフルMAP,与第 0/1 字的角色、机体正好对应(ヒイロ/ウイングガンダム、アーク/ソルデファー、エイジ/レイズナー、葉月博士/ガンドール、カトル/ウイングゼロ)。调用点吻合:场景 12 中 ゼクス 喊「那武器……快撤退」,随后 3D51 95,117,478,0,0 与两次 3D4F 击破,ヒイロ 大笑;另一处 3D51 25,30,146 之后是一排 3D37 爆炸。mapw-1 部署 ヒイロ/ウイングガンダム 并在其正上方放两台敌机,照原调用执行 3D51 95,117,478,0,0:历时 116 VI,画面中 ウイングガンダム 向上方发射一团明亮的能量球、周围散出光点,射向上方的两台敌机(截图 3D51-mapweapon.png)。即本指令在过场中播放指定单位发射指定 MAP 兵器的演出。第 3 字为方向:本轮取 0 时向上发射;原脚本另有 1 与 3,未逐一测量。第 3/4 字同为 0x4000 时改用 3D54 记住的位置(原脚本 V-MAXMAP 一例如此)。本轮只观察到发射演出,敌机是否因此受伤由原脚本随后的 3D4F 负责。

3D52 · 启动延迟计数事件(槽, 回合数, 阶段)

操作数(3 个字) · 代码确认 · 处理函数 0x800A05D0

  1. 类型 1 槽 — event_slot_type1:本场景类型 1 事件的登记序号
  2. 回合数 — count:计数
  3. 阶段 — side:阶段 1 我方 / 2 敌方 / 3 第三方(4 = 任意)

依据:0x97E[槽] 为 0xFF 时写入回合数,类型 1 组 +0x44[槽] = 阶段、+0x64[槽] = 0xFD;类型 1 触发器每换回合递减,归零且阶段匹配时执行;PC+6。

3D53 · 停用延迟计数事件(槽)

操作数(1 个字) · 代码确认 · 处理函数 0x800A0638

  1. 类型 1 槽 — event_slot_type1:本场景类型 1 事件的登记序号

依据:0x97E[槽] = 0xFF,类型 1 组 +0x64[槽] = 0x2000;PC+2。

3D54 · 记住角色所在位置

操作数(1 个字) · 代码确认 · 处理函数 0x800A0678

  1. 角色 — actor:人物编号(base:actors)

依据:800A2C18 找到角色所驾单位的地图槽后把 +4/+5 写入 ctx+8/+9;否则用 800A3854 的备用坐标;3D34/3D35/3D37/3D51 的 0x40 系列参数引用该位置;PC+2。

实测(2026-09-16):同一轮询内完成,为随后 3D35 的 0x40xx 参数提供参照位置。

3D55 · 发动精神指令/镜头切至角色(角色, 精神编号或 30)

操作数(2 个字) · 代码确认 · 处理函数 0x800A0714

  1. 角色 — actor:人物编号(base:actors)
  2. 精神编号 — spirit

依据:关闭窗口后 80210490(角色, 第 1 字) 遍历地图槽驾驶员;等待 802106CC;PC+4。

实测(2026-09-16):第二参数是精神指令编号。原脚本 169 处实例只用 11 个值——2、4、5、6、7、9、11、12、13、17、30,除 30 外全部对应真实精神:加速/集中/ひらめき/根性/必中/鉄壁/熱血/気合/ド根性/魂,且最常见的 4(集中,46 次)、30(40 次)、11(熱血,30 次)正是常用精神。处理函数 80210490 用该值作字节表 80217D20 的下标取出效果号存入 8022731C,再交 801D6A68 播放;该表恰好 31 项(0–30)后即为无效数据,与精神列表 0–29 加哨兵 30 吻合,表值只有 15(对自己)与 1(对他人:偵察/信頼/みがわり/脱力/補給/挑発/激励/再動/祈り),是目标类型。运行画面:3D55 31,9(鉄壁)使カーツ的单位显示为一个发光菱形特效,3D55 4,30 用 424 VI 把镜头移到该单位并选中。 第二参数 30 不是精神:精神只到 29(30 项 0–29),30 读的是字节表的第 31 项,处理函数对该参数没有边界检查。原脚本 40 处 30 的上下文与真实精神截然不同——真实精神成串连发(如 3D55[209,4] → [209,12] → [209,11],集中/気合/熱血),而 30 总是夹在对白 3D3E/3D40 之间、每个角色一次轮流出现(忍 → 雅人 → 沙羅 → 亮 各一次),是配合台词的镜头/立绘切换而非精神发动。

3D56 · 高亮绿色目标区域(编码坐标 A, 编码坐标 B, –)

操作数(3 个字) · 代码确认 · 处理函数 0x800A0780

  1. 坐标 A — raw:未解释
  2. 坐标 B — raw:未解释
  3. 保留 — raw:未解释

依据:打开窗口 0x23 并以 800A3AD8 绘制矩形;第 0/1 字按十进制拆为 (值/10, 值%10) 乘 16 转屏幕坐标;61 帧后关闭;第 2 字未被常驻代码读取;PC+6。

实测(2026-09-17):按原脚本序列复现(先用 3D35 把镜头卷到位,再执行 3D56)。画面上出现一个闪烁的绿色矩形:亮相位为鲜绿方块,暗相位只剩淡绿色调(build/recomp/mini-stage/area-1/3D56-blink.png)。逐帧采样显示周期性帧差——3D56 145,175 期间每约 33 VI 一次 4.6(VI 4593/4627/4659),3D56 186,212 期间每约 32 VI 一次 2.2(4906/4938/4970);在同一闪烁周期内比较两个相位,变化严格局限在一块矩形里:前者为 5×5 格的方块,后者为 6×2 格的横条,形状随参数而变。这就是胜利条件文本里的「グリーンエリア」(如 5572「グリーンエリアへの3機以上の侵入」、5590「味方全機のグリーンエリアへの進入」)。原脚本上下文吻合:场景 15 中 ブライト 先说「目标地点就是这片区域」,3D56 之后又说「用 3 台以上占领这片区域」;场景 14 中 3D56 之后紧接 3D57 3,1/3D57 4,1(启用区域到达事件)与 3D65 24,16(设定胜利条件)。首轮 layout-1 未画出,是因为矩形位置依赖镜头,而该轮没有按原脚本先把镜头卷到对应处。第 0/1 字的十进制拆分(值/10, 值%10)与所见矩形尺寸之间的精确换算未逐项核对;第 2 字未被常驻代码读取,原脚本恒为 60。

3D57 · 启用区域到达事件槽(槽, 值)

操作数(2 个字) · 代码确认 · 处理函数 0x800A0BD0

  1. 类型 8 槽 — event_slot_type8:本场景类型 8 事件的登记序号
  2. 值 — bool:开关

依据:0x99A 位[槽] 先异或 1 再或上 (值<<槽);类型 8 触发器只轮询已置位的槽;PC+4。

3D58 · 单位转换阵营(角色, 目标阵营)

操作数(2 个字) · 代码确认 · 处理函数 0x800A0C14

  1. 角色 — actor:人物编号(base:actors)
  2. 目标阵营 — raw:未解释

依据:802106E0 后 80210758(角色, 第 1 字) 写入 802279EC/F0 并遍历地图槽;等待 80211634;PC+4。

实测(2026-09-16):3D58 31,1:カーツ 的名册槽 0/9 清空,同一格坐标 (8,14) 出现在 1/1,侧计数由 0 侧 11/1 侧 1 变为 10/2,驾驶员与机体实例记录清零后重建。3D58 59,0:ロザミア 已在名册槽 0/10(0 侧),写入当前所在侧时全区域无变化,即幂等。两次均 0 VI。

3D59 · 不许出击(角色;≥500 为 500 + 机体编号)

操作数(1 个字) · 代码确认 · 处理函数 0x800A0C80

  1. 角色或 500+机体 — raw:未解释

依据:在至多 29 项、以 -1 结束的列表 8015F700 末尾追加参数并补 -1;该列表是 3D3D 出击候选的排除名单(801EB8F8 跳过名单里的角色),3D3D(台数非 0)与 3D4D 清空它;PC+2。

实测(2026-09-17):两份关卡只差 3D59 的参数,其后都用 3D3D 8,8,0,1,2 打开只选 1 台的出击选择界面,登记的候选是 ドモン 与 ヒイロ。3D59 95:名单为 [95],界面里只有 ドモン,登场的是 ドモン;3D59 4:名单为 [4],界面里只有 ヒイロ 的 ウイングゼロ,登场的是 ヒイロ。被列入的角色从候选中消失,所以它是「不许出击」,不是「必须出击」。原脚本吻合:场景 19 在葉月博士说「獣戦機は調整が終了していない」之后执行 3D59 168/170/169(沙羅、雅人、亮)再 3D3D …,100,…;场景 18 在アムロ说「カミーユが戻らない」之后先排除 38(カミーユ)再排除同样三人;场景 8 用 3D59 46 把 ブライト 的母舰排除在出击之外。

早先记录:在至多 29 项、以 -1 结尾的列表 8015F700 末尾追加角色号并补 -1。scene8-2 补上 8015F700 探针后原样复现场景 8:3D4D 之后列表为空;3D59 46 执行后列表为 [46](ブライト);紧接的 3D3D 14,24,0,200,1 执行后列表又变为空——3D3D 读取并清空了该列表(其第 3 字 200 非零,与「第 3 字非零时清空 8015F700」一致)。3D3D 期间及之后我方地图槽始终为 0,即它本身不把单位放上地图;场景 8 出击组 1 的坐标为 万丈 (13,25)、ブラッド (12,24)、カーツ (14,24)、甲児 (13,23)、さやか (15,23)、ルー (11,23),正在 3D3D 所给的 (14,24) 一带。据此推测二者是出击准备:3D59 把必须出击的角色(如母舰舰长 ブライト)列入名单,3D3D 以某组的出击点为基准处理该名单,实际落位要等玩家完成出击选择;有界运行不会进入出击选择,本轮未能看到该界面,故保持 structure-confirmed。

3D5A · 部队编成(角色, 参数, 机体, 模式/旧机体)

操作数(4 个字) · 代码确认 · 处理函数 0x800A0B3C

  1. 角色 — actor:人物编号(base:actors)
  2. 参数 — raw:未解释
  3. 机体 — unit:机体编号(base:units)
  4. 模式/旧机体 — raw:未解释

依据:第 3 字 ≥ 2000:800A3540——4000/3000 时 800AA464(角色, 机体)、4000/2000 时 800AA62C(角色),角色 999 跳过;否则 800A3A1C 把主角机体编号 115–132 映射后调用 800AAD28(角色, 机体, 第 2 字, 第 3 字);PC+8。

实测(2026-09-17):管理我方编成(驾驶员实例与机体实例这两张持久名单),第 3 字决定操作,五种取值都已核对。① 500(254 次):登记驾驶员+机体。targets-1 中 3D5A 183,0,999,500 新建了 チャム 的驾驶员记录(机体 999 表示不配机体)。② 小于 2000(66 次):该值是旧机体编号,把驾驶员从旧机体换到新机体。swap-1 中 3D5A 124,0,174,171 使 リョウ 由 171 ゲッター1 换乘 174 ゲッタードラゴン;原脚本如 ブライト 由 64 ミデア 换到 アウドムラ、甲児 由 262 换到 マジンガーZ(JS)。500 也走这一支,是「无旧机体、直接登记」的特例。③ 2000(11 次):移除驾驶员。roster-1 中 3D5A 4,0,999,2000 执行后驾驶员表里 ドモン 消失,机体表不变。④ 4000(74 次):驾驶员与机体一并移除。3D5A 95,0,117,4000 执行后 ヒイロ 与 ウイングガンダム 都消失,连同其变形态 ウイングガンダム(バード) 一起被删。⑤ 3000(5 次):代码上是移除机体,但分派函数 800A3540 在角色为 999 时跳过 800AA464 与 800AA62C 两个移除调用,而原脚本的 5 处 3000 全部以角色 999 调用——因此这些调用在原版中不产生任何效果。roster-1 中 3D5A 999,0,216,3000 执行前后两张名单完全不变,与此一致;这 5 处很可能是原开发遗留的无效调用。分派:第 3 字 ≥ 2000 时进入 800A3540(4000 与 3000 调 800AA464(角色, 机体),4000 与 2000 调 800AA62C(角色),均在角色 999 时跳过);否则经 800A3A1C 映射主角机体编号 115–132 后调用 800AAD28。④ 的补充(2026-09-18,build/recomp/mini-stage/wufei-dummy-original-3):对仍在地图上的单位直接用 4000,名册槽会留下指向已清空记录的指针,回到玩家操作后遍历名册即 SIGBUS(801FD020→801EB344);先用 3D46 角色,1 让其退场再 4000 则正常。

3D5B · 资金增加 参数×1000

操作数(1 个字) · 代码确认 · 处理函数 0x800A0D24

  1. 千元 — value:数值

依据:800A0D24 将一字参数乘 1000 加到 8010F5F4;该字段由 80091904 存档、8008152C 新游戏清零;PC+2。

实测(2026-09-16):资金 0 → 8000,等于实际执行的三次(5+1+2)×1000;被跳过的条件块与他人路线段内的 3D5B 未执行。

3D5C · 合体/分离(角色, 1 = 合体 0 = 分离)

操作数(2 个字) · 代码确认 · 处理函数 0x800A0D68

  1. 角色 — actor:人物编号(base:actors)
  2. 模式 — raw:未解释

依据:10 帧后关闭窗口;第 1 字 = 1 → 802116FC(角色) 并等待 80211840,否则 80211854(角色) 并等待 8021199C;PC+4。

实测(2026-09-16):3D5C 145,1(豹馬,已是合体状态)0 VI 且名册无变化;3D5C 145,0 后我方名册由 10 槽增至 14 槽,原槽 0/6 的机体实例指针改变,四个新槽出现在相邻格 (9,12)/(8,13)/(7,12)/(8,11),即コン・バトラーV 分离为五机。48 VI。

3D5D · 设定合体机器人的形态(1 = 合体 0 = 分离, 家族 0 = ダンクーガ 1 = コン・バトラーV)

操作数(2 个字) · 代码确认 · 处理函数 0x800A1010

  1. 形态 — raw:未解释
  2. 家族 — raw:未解释

依据:800AB5C0(第 0 字, 第 1 字) 遍历运行时机体,针对机体 223/224 或 219/225/230/233 设置或清除 +0xC 的 0x80 位;PC+4。

实测(2026-09-17):800AB5C0 遍历 140 项机体实例,只改 +0x0C 的位 7(同一字节的位 6 是 3D6B 的分队标记),且合体形态与分离形态互斥。第 1 字选家族:为 0 时作用于 ダンクーガ(223/224)与其四台兽机 イーグルファイター 219/ビッグモス 225/ランドクーガー 230/ランドライガー 233;不为 0 时作用于 コン・バトラーV(196)与其五台组件 197–201(バトルクラッシャー/バトルクラフト/バトルジェット/バトルタンク/バトルマリン)。第 0 字选形态:为 1 时合体机置位、组件清除,为 0 时反之。beast-1 部署 ダンクーガ 224 与四台兽机(开始时五者位 7 均为 1),逐个参数读取:(1,0) 后 ダンクーガ=1、四兽机=0;(0,0) 后 ダンクーガ=0、四兽机=1;(0,1) 与 (1,1) 作用于 コン・バトラーV 家族,本关没有该家族的机体,因此五者保持 (0,0) 的结果不变——与代码完全一致。原脚本 15 处,参数 (1,0) 8 次、(0,0) 4 次、(0,1) 2 次、(1,1) 1 次,多在关卡结束、3D4B 切到下一场景之前,即在章节之间决定这两台合体机器人以哪种形态出现。静态描述原名只提到 ダンクーガ,实际也覆盖 コン・バトラーV。

3D5E · 打开部队名输入界面

无操作数 · 代码确认 · 处理函数 0x800A1050

依据:不读取参数,调用后立即完成。

实测(2026-09-16):采样帧直接给出答案:执行后画面为「部隊名を入力してください」的命名界面,部隊名 栏预填 アーチウィンド,下方是假名/字母输入盘与「決定」。事件在此挂起等待玩家完成输入,有界运行无输入故永不继续(worldmap-1 与 prep-1 两轮一致,脚本轮询都停在 3D5E 之后)。原脚本 3 处调用上下文完全吻合:マナミ 说「マーチウィンド? うーん、もう少し別の名称がいいわね」,アムロ 问「なら、君はどんな呼び名がいいんだい?」,随即 3D5E,之后才是 3D32 世界地图定位与路线标记。处理函数 801C517C 设 801C58C4=2 并调用 80080188(6)、80099814(5,1,2),与打开输入界面一致。

3D5F · 全体驾驶员气力 −30(下限 50)

操作数(1 个字) · 代码确认 · 处理函数 0x800A1078

  1. 参数 — raw:未解释

依据:802119B0 遍历地图槽的驾驶员记录,+0x20 减 30,低于 50 时设为 50(气力:运行注入中三名驾驶员由初始 100 变为 70);参数未被读取;PC+2。

实测(2026-09-16):三名在场驾驶员实例 +0x20 均由 100 变为 70。

3D60 · 我方部队排成阵型(起点 x, 起点 y, 每行数)

操作数(3 个字) · 代码确认 · 处理函数 0x800A10AC

  1. x — x:格 x
  2. y — y:格 y
  3. 每行数 — count:计数

依据:800A35EC 遍历 D_8015E100 的 30 个地图槽,对 HP 非零且非主角机的单位依次写入格坐标与屏幕坐标,每行放满后换行;PC+6。

实测(2026-09-17):把四个分散的我方单位部署在 (3,20)/(18,25)/(23,3)/(9,14),执行 3D60 5,5,2 后逐条快照读到它们被收拢到 (5,5)/(7,5)/(6,6)/(5,7):从起点开始、隔格交错排布而互不重叠;敌方侧(名册 1/0,位于 (22,5))保持不动,与静态描述「遍历 D_8015E100 的 30 个我方地图槽」一致。0 VI 完成。静态描述另指出 HP 为零的单位与主角机会被跳过,本轮未部署这两类,未单独验证。原脚本 9 处,多在剧情换场后把我方重新集结到一处。

3D61 · 暂停「我方全灭即败北」判定(开关)

操作数(1 个字) · 代码确认 · 处理函数 0x800A1328

  1. 暂停 — bool:开关

依据:engine+0x996 清除位 15,参数非零时置位;load_000AB160_func_801FF934(0) 在我方单位数 0x80172EDC 为 0 且位 15 未置位时判定全灭,由 801DF280 停止 BGM 并置战术状态 0x54 进入败北流程;800A4288(类型 8 区域触发)让我方单位离场时也置该位;PC+2。

实测(2026-09-17):读取方由重编译 C 代码找到:load_000AB160_func_801FF934 在参数为 0 时,若我方单位数(0x80172EDC)不为 0 返回 0,否则返回 (0x801602E6 & 0x8000) == 0,即 engine+0x996 位 15 未置位才算「全灭」;调用方 801D5898/801D90C4 据此进入 801DF280(停止 BGM,0x80172EB0 = 0x54 败北流程)。参数非 0 时走逐台「必须保护的机体被击破」判定(801DF5BC,状态 0x55),与本位无关。

对照实验:两份迷你关只差 3D61 的参数。我方仅部署アレンビー一台、敌方レイン一台,开场依次 3D4D、3D65 17,38(败北条件「味方の全滅」)、3D61 x、3D49 15,16(脚本战斗,アレンビー被击破)、3D47、3D48。 • 3D61 0:3D49 后我方单位数 1→0,战术状态变为 0x54,画面依次为白闪、星流、「GAME OVER」,VI 6915 引擎重新登记场景 0(离开关卡);开场 11 条只执行 9 条,3D47/3D48 被败北流程打断。 • 3D61 1:我方单位数同样变为 0,但战术状态保持 0x05,开场 11 条全部执行完,随后正常进入我方回合(出现「フェイズ終了」菜单,ターン数 2),没有 GAME OVER。

原脚本 7 处用法吻合:场景 32 用 3D61 1/0 包住两次敌方之间的脚本战斗;场景 78 在我方尚未出击的开场里置位、开场末清除;场景 11(我方开局无单位)开场置位,シロー被击破事件与阵营残存数事件在 3D4C(游戏结束)前清除。

3D62 · 更换角色身份(角色 → 角色)

操作数(2 个字) · 代码确认 · 处理函数 0x800A1224

  1. 原角色 — actor:人物编号(base:actors)
  2. 新角色 — actor:人物编号(base:actors)

依据:800ABD98:名册 D_80172F40 中 +2 等于第 0 字的条目改写为第 1 字;PC+4。

3D63 · 着地/飞行切换(角色)

操作数(1 个字) · 代码确认 · 处理函数 0x800A1264

  1. 角色 — actor:人物编号(base:actors)

依据:80212290(角色):找到该角色所在的我方地图槽,读其 3D 模型高度(800FFA74 表 +8);高度为 5.0(悬空)时按脚下地形(801E213C → 801E1F58)选模式 5 或 9,否则选 7 或 0xA,调用 801F1C48(模型, 模式, 1) 播放降落/起飞动画,完成后名册 +1 在 1(地面)与 2(空中)之间切换;等待 80212450;PC+2。801F1C48 的这几种模式也被战术指令处理函数 801D105C/801D1110/801D11C4/801D1268 使用。

实测(2026-09-17):hyoma-3d63:只部署 豹馬(场景 80 自己的记录,バトルジェット),每次「フェイズ終了」后下一回合开始执行一步。名册该槽 +1 部署后为 2;第 2 回合 3D63 145:2 →(过渡 5)→ 1,24 VI;第 3 回合再执行:1 →(过渡 7)→ 2;第 4 回合按原脚本序列:2 → 5 → 1。放大实拍帧:执行前 バトルジェット 悬空、下方有影子,执行后贴在地面、影子消失;第二次执行后又升回空中。3D63 之后在 豹馬 上按 A 仍弹出「移動/精神/能力」,驾驶员 +0x35 不变——它不影响行动;随后的 3D69 145,0 才把 +0x35 清零、名册 +0x0B 置 0x80,此时按 A 只能看能力。 所以场景 80 的原序列是:3D37 0(在他身上爆炸)→ 3D63(被击落到地面)→ 3D69 145,0(行动不能)→「うぅ……しまった……体が……」,并在第 1–4 回合开始时反复执行 3D69 145,0 维持行动不能。

早先记录:用整关原样复制在真实上下文里跑通:场景 80「女帝ジャネラの人間狩り」的 20 个事件全部原样载入(地图 57、该场景自己的 39 条出击记录),开场执行到 140/146 条,3D63 145 于 VI 11895–11917 执行,前有 3D37 0,16384、后接 3D69 145,0,与原脚本完全一致。逐像素测量(豹馬 的精灵区 12×12):前一条 3D37 使该区亮度由 84.12 飙到 204.83(爆炸/能量闪光)后回落到 88.91;3D63 期间由 86.69 降到 75.43 再缓升至 81.49,采样帧可见该机体精灵形态改变而两侧敌机不变。此前 act-1 的孤立执行为 92.58 → 97.12,与真实上下文下的走向不同,说明表现依赖前置状态。全作仅此 1 处实例,仍不足以定名,保持 unknown。

补上引擎块探针后重测(scene80-2,2026-09-17,存档进入加提前退出,于 VI 11892 到达)。以全程 217 个转换中出现率超过 20% 的字节为簿记予以排除后,3D63 跨度内唯一的专属写入仍是名册该槽 +0x001:开始时 0x02 → 0x05,结束时 0x05 → 0x01;引擎块无任何专属变化。该字节全程只变 3 次,其中 2 次属本指令。由此排除了隐藏的引擎侧效果:3D63 的机制就是按序改写这个名册字节(执行中 2 → 5 → 1),配合可见的精灵变化与音效,是一段单位姿态/动画。紧接的 3D69 145,0 在同一轮里再次得到与 act-1 一致的写入(名册 +0x00B 置位 7,驾驶员记录 4 的 +0x35 清零),可作交叉验证。全作仅 1 处实例,姿态的游戏名称只能从上下文(豹馬 被制住、台词称身体动不了)推断,仍保持 unknown。

3D64 · 移出同乘驾驶员(角色;500,500 = アイシャ 转入 マナミ 的母舰)

操作数(2 个字) · 代码确认 · 处理函数 0x800A12CC

  1. 角色 — actor:人物编号(base:actors)
  2. 模式 — raw:未解释

依据:第 1 字 = 500 → 800AB96C(针对角色 28/32 的特例),否则 80212668(角色):从地图槽移除该驾驶员并前移其余指针;PC+4。

实测(2026-09-17):原脚本 3 处全部是 3D64 500,500,且都紧跟 3D5A 32,0,37,500(登记 アイシャ 与 エルブルス)和 3D5A 28,0,307,36(マナミ 由 36 スイームルグ 换乘 307 スイームルグS)。按此原序列复现并读驾驶员与机体表:3D64 执行前 スイームルグS 同乘 2 人为 マナミ、ローレンス,エルブルス 由 アイシャ 驾驶;执行后 スイームルグS 的 2 人变为 マナミ、アイシャ,ローレンス 被顶替,エルブルス 不再有驾驶员。即 500,500 分支(800AB96C)是剧情专用的硬编码:在 140 项机体表中找 マナミ(0x1C)的机体、在驾驶员表中找 アイシャ(0x20),把她挂为该机体的第二驾驶员(与 3D70 相同的 +0x34/+0x37 写法)。一般分支(第 1 字不为 500)调用 80212668(角色),从地图槽里移除该驾驶员并前移其余指针,原脚本没有使用。三处都在结束事件里(如场景 57「キリマンジャロの嵐」),属剧情中 アイシャ 加入 マナミ 母舰的节点。

3D65 · 设定胜利/败北条件(胜利条件, 败北条件)

操作数(2 个字) · 代码确认 · 处理函数 0x800A1360

  1. 胜利条件 — victory_condition
  2. 败北条件 — defeat_condition

依据:engine+0x996 = (原值 & 0x8080) | (第 0 字 & 0x7F)<<8 | (第 1 字 & 0x7F);800A3524 读取 & 0x7F7F;PC+4。

实测(2026-09-17):读写链完整。写入:engine+0x996 = (原值 & 0x8080) | (第0字 & 0x7F)<<8 | (第1字 & 0x7F)。读取:load_000AB160_func_801C688C 经 800A3524 取 engine+0x996 & 0x7F7F,拆出高字段 (v>>8)&0x7F 与低字段 v&0x7F,分别以文本编号 0x15BF+高字段、0x15D9+低字段调用 8008CD8C(按编号绘制文本,章节标题也用它)画在 (160,96) 与 (160,168)。这两段文本就是本作的胜利条件与败北条件:高字段 17→「敵の全滅」、25→「指定ターン以内のジェネレータの破壊」、12→「マーグを除く敵の全滅」、23→「味方全機のグリーンエリアへの進入」;低字段 31→「主人公機の撃破」、38→「味方の全滅」、22→「自軍戦闘の撃破」、3/4/2→アウドムラ/アルビオン/アーガマ の撃破。原脚本分布吻合:168 处中第0字 128 次为 17(最常见的胜利条件「敌全灭」),第1字在 0–46 间随关卡变化(败北条件常点名须保护的角色或战舰);且总紧跟 3D4D(进入战场)。场景 1 的 3D65 17,31 即「敌全灭/主角机被击坠」,与该关实际的败北事件(マナミ 被击破→3D4C)一致。运行时:mode-3 逐条快照显示执行前两字段均为 127(未设置),执行后 engine+0x996=0x11、+0x997=0x1F,即 17 与 31。由此确定 engine+0x996 半字布局:位 15 为 3D61 的开关、位 8–14 为胜利条件、位 7 为 3D66 的开关、位 0–6 为败北条件。

3D66 · 对白时不自动把镜头移到说话者(开关)

操作数(1 个字) · 代码确认 · 处理函数 0x800A13A4

  1. 不跟随说话者 — bool:开关

依据:800A3A04(&engine+0x996, (参数<<7)&0x80);唯一读取方 800A3530 返回 engine+0x996 & 0x80,由对白前置步骤 8009F4B4(3D3E/3D40 经 8009F654/8009F670 进入)作为 800A2C18(说话者, 模式) 的模式传入:模式 0x80 时查找恒返回 0,且跳过后备位置表 800A3854,于是不设镜头目标、不调用 80209DAC;3D4C 的结束流程 800A25B0 与每帧轮询 8009E180 也临时置该位;PC+2。

实测(2026-09-17):读取方由重编译 C 代码找到。脚本虚拟机上下文 +0xC 存着 &engine+0x994,直接搜 0x996 偏移找不到的读取就藏在这里:800A3530 = (ctx->[+0xC])[+2] & 0x80,唯一调用者是 8009F4B4——3D3E(8009F654,左窗)与 3D40(8009F670,右窗)的对白前置步骤。它在战术地图上先由文本编号取说话者(8008CE54,0x19/0x1D 为主角占位),再调用 800A2C18(说话者, 位 7);找到地图槽就把该格记到 ctx+0x28/+0x2A,随后每帧调用 80209DAC 把镜头移过去,到位后才出对白。800A2C18 以 0x80 为模式时,敌方与状态 2 的我方槽直接返回 0,其余继续找、找不到时也因模式非 0 而不走母舰内查找 800A2F00,8009F4B4 同样因模式非 0 跳过后备位置表 800A3854——镜头目标始终为空。

对照实验(focus-0/focus-1,只差 3D66 的参数):地图 20,アレンビー(248,我方)在 (4,4),レイン(7,敌方)在右下角(引擎放到 (23,22));开场先用 3D35 把镜头停在两人之间的 (15,13),再执行 3D66 x、3D3E 20246(アレンビー)、3D40 19682(レイン)。 • 3D66 0:アレンビー 说话前镜头跳到左上角、画面里是她的蓝色单位;レイン 说话前又跳到右下角她的红色单位旁。逐帧位移检测在两句对白开头各测到一次整幅跳变(VI 4907、5094)。 • 3D66 1:engine+0x996 = 0x11A6(位 7 置位),两句对白期间画面始终停在 (15,13),两个单位都不在画面内,逐帧位移检测为 0。

原脚本 284 个 0 与 279 个 1 严格成对,总包住「3D35 镜头卷动 + 对白」:脚本先把镜头摆到要展示的地方,再让不在画面里的角色说话而不被拉走。之前的孤立实验看不到画面变化,是因为那段没有对白。

早先记录:孤立验证:关卡里只切换该开关、两侧各静止 150 帧,中间不放任何别的指令。加入引擎块探针后测得 3D66 1 使 engine+0x997(+0x996 半字的低字节)由 0x1F 变 0x9F(置位 7),3D66 0 使其由 0x9F 变回 0x1F(清位 7),完全对称,与静态描述一致。同一时刻另有 6 个字节变化(+0x967/+0x96F/+0x976/+0x977/+0x97A/+0x97B),但两次转换里它们的变化完全相同,是脚本引擎每条命令都会动的轮询簿记,不属于本指令。画面侧无可归因效果:以区域差分图比对「关→开」与对照组「关→再关」,两者差异同为 2.8/3.1(同一条对角带,属待机动画噪声),即开关本身不改变画面。原脚本 284 个 0 与 279 个 1 严格成对,总包住一段镜头卷动加对白。该位的消费者(基础指出 8009E180 与败北流程也操作它)尚未确认,故保持 structure-confirmed。

3D67 · 机体强化/合体演出(演出编号)

操作数(1 个字) · 代码确认 · 处理函数 0x800A13F0

  1. 演出编号 — raw:未解释

依据:802176A8(低字节):编号 <11 经跳转表 8021F058 选曲后 8007E810,并设置状态;等待 8021779C;PC+2。

实测(2026-09-16):开音频的有界运行(SRW64_AUDIO_CAPTURE_FROM/_TO 4400–9000 窗口)。四个原脚本值各在静音(3D3A 0)之间单独执行:全部发出明显声音,RMS 2301–3092、峰值 1.5–1.8 万,而相邻静音段 RMS 仅 84–139,且比对照 BGM(3D3A 49,RMS 1358)更响。画面为登场 cut-in:屏幕中央出现一台机体穿过同一条光速隧道背景,0 为蓝红车型、1 为灰红、3 为绿、4 为橙红,各不相同。1/3/4 的频谱与包络高度相似(余弦 0.96–0.99、包络相关 0.93–0.99,同一隧道背景),但采样级相关仅 +0.007 且找不到对齐位移,是不同机体的不同音频;时长分别 10.87/13.93/14.93 秒。0 的频谱明显不同(对其余三者余弦 0.42–0.46)且无 0.75 秒前奏,时长 16.03 秒。原脚本两种固定写法与此一致:3D4E → 3D67 n → 3D38 → 3D45 <组>(增援登场前)和 3D54 145 → 3D35 → 3D67 0 → 3D5C 145,1(合体前)。 用户辨认了音轨:0 是超电磁合体 cut-in 所配的主题曲,1/3/4 是圣战士主题曲——这解释了为何 1/3/4 频谱与包络高度相似而采样级相关仅 +0.007(同一主题曲的不同段落/混音),0 则是另一首(对其余三者余弦仅 0.42–0.46)。也与脚本用法吻合:0 只出现在 3D5C 145,1(コン・バトラーV 合体)之前。整体表现为机体强化/换装登场,而非单纯的增援登场。

3D68 · 镜头拉回所选单位

无操作数 · 代码确认 · 处理函数 0x800A1458

依据:80212780 调用 80099814(5,1,-1);等待 80212898 返回 1。

实测(2026-09-16):战术地图上 87 VI 完成,探针区域无状态变化;audio-2 的采集窗口内测得完全无声(RMS 3.0 = 数字静音底噪,同一采集的对照 BGM 为 1328)。逐帧对照:执行前画面偏移、带黑边、光标停在远处敌方单位;执行后画面居中到所选我方单位、白色选择框出现、黑边消失——即把镜头拉回当前所选单位并复位选择界面。更正:此前记载的「世界地图下永不完成」不成立。prep-1 显示 worldmap-1 的开场事件其实停在更早的 3D5E(部队名输入界面挂起等待输入),3D68 根本没有执行到,因此那一轮没有关于它在世界地图下行为的证据。

3D69 · 设定单位行动状态(角色, 1 = 可行动 0 = 行动不能)

操作数(2 个字) · 代码确认 · 处理函数 0x800A14A4

  1. 角色 — actor:人物编号(base:actors)
  2. 行动状态 — raw:未解释

依据:802128E4(角色, 第 1 字低字节) 遍历名册;PC+4。

实测(2026-09-16):按原调用点复现并逐像素测量。镜头锁在 豹馬 身上,精灵所在的中心 12×12 区域亮度:执行 3D69 145,0 前 97.12,之后 91.23,执行 3D69 145,1 后精确回到 97.12;每个状态连续 12 帧的 min 与 max 完全相等(无待机动画噪声),是确定性的两态开关,而全帧亮度几乎不变(64.90/64.81),说明变化只限于该单位的精灵——即本作中「已行动」单位的变暗表现。同时置名册该槽 +0x0B 的位 7 并清驾驶员 +0x35,作用于该单位全部同乘驾驶员(コン・バトラーV 五人一次清五条,单人机只一条)。原脚本用法一致:值 0 出现在 豹馬 被制住的场面(事件 001CCFF0,紧接台词「うぅ……しまった……体が……」与敌方「とどめを、さしておやり!!」)以及用 3D3C 把 NPC ゲリラ 移到位后定住;值 1 出现在 ヒイロ 即将发动精神(随后 3D55 95,11 熱血)和 大作 退场之后。0 VI,无声。

3D6A · ゴッドマーズ 合体处理(模式)

操作数(1 个字) · 代码确认 · 处理函数 0x800A14E4

  1. 模式 — raw:未解释

依据:3 → 800AB808(机体 187/185 处理)、4 → 800AB6F4(机体 186 与角色 138 处理)立即完成;其他值关闭窗口后 80212CC0(低字节) 并等待 80213498;PC+2。

实测(2026-09-17):四个原脚本值全部理清,作用对象都是 ゴッドマーズ 家族(185 ガイヤー/187 ゴッドマーズ/186 コスモクラッシャー,角色 138 タケル)。模式 3(800AB808):合体的状态切换。godmars-1 中执行后 ガイヤー 的机体实例被删除(编号 185 → FFFF),タケル 的机体指针改指向 ゴッドマーズ,机体表由 ガイヤー/ゴッドマーズ 变为只剩 ゴッドマーズ。模式 4(800AB6F4):清除 タケル 与机体的链接(驾驶员 +0x37 与 +0x38 指针归零),原脚本用在刚进战场、タケル 登上 コスモクラッシャー 之时。模式 0/1(各 9 次,总是成对出现):合体动画,经 80212CC0 播放并等待 80213498,但受 80212BF8 守卫:该函数遍历我方 30 个地图槽,找状态为 1 且机体编号 0xB9(185 ガイヤー)的单位,仅当其 HP(+0x04)小于 11 时返回 1 才播放。即 ゴッドマーズ 只在 ガイヤー 濒临被击毁时觉醒合体。原脚本的调用点正是「HP 低于百分比触发」事件(场景 41/42),随后镜头切到 タケル、敌方 バレン 惊呼「这是什么,数据里根本没有」。godmars-1 中 ガイヤー HP 为满值 3000,守卫不通过,两条都在 0 VI 完成且画面无变化,与代码一致;本轮未能把 HP 压到 11 以下以实际观看动画。模式 3 与 4 都在 0 VI 立即完成。

3D6B · 选定标记开关(角色, 机体, 1 = 置位 0 = 清除)

操作数(3 个字) · 代码确认 · 处理函数 0x800A158C

  1. 角色 — actor:人物编号(base:actors)
  2. 机体 — unit:机体编号(base:units)
  3. 开关 — raw:未解释

依据:800AC6C4 遍历名册与运行时机体;PC+6。

实测(2026-09-16):按原调用点原样复现(事件 001AB86C:3D6B 124,171,0 紧接 3D5A 124,0,174,171,即 リョウ 由 ゲッター1 换乘后继机 ゲッタードラゴン)。逐条快照给出明确分工:3D6B 执行后名册机体编号不变(仍是 ゲッター1),换乘完全由随后的 3D5A 完成;同理 3D6B 165,216,1 之后 万丈 仍在名册,是随后的 3D46 165,1 让他整条消失。因此 3D6B 自己不搬动任何单位,只在编成名单里置位或清除该「驾驶员+机体」组合:标志 1 置驾驶员实例 +0 的位 7 与机体实例 +0x0C 的位 6,标志 0 完全复位,两者对称(ship-1 在 葉月博士/ガンドール 上取得完整一对)。全部 18 种原参数组合都是「驾驶员+其本命机」,且总出现在换乘(3D5A)、退场(3D46)或剧情分别的场合。两个位的消费者仍未确认,故保持 unknown。均 0 VI、无画面、无状态以外的效果。 静态交叉引用补齐了消费者:resident_func_800AD990——即 3D73「按固定角色列表分组」调用的同一个函数——操作的正是这两个位:先遍历清除驾驶员 +0 的位 7(andi 0x7F)与位 6(andi 0xBF),再对名单中编号匹配(读 +0x2F42 的角色号比对)的条目置位 7(ori 0x80)。因此这一对位是「被选定/已登记」标记:3D73 按预设名单整批标记,3D6B 针对单个「驾驶员+机体」组合置位或清除。据此升为 code-confirmed。 结合 3D73/3D74 可知这对位就是部队分割中的「当前分队」标记:3D73 按预设名单整组选定,3D74 全部清除,3D6B 单独把某一组驾驶员+机体加入或移出。

3D6C · 设定机体改造段数(机体, 段数)

操作数(2 个字) · 代码确认 · 处理函数 0x800A15D0

  1. 机体 — unit:机体编号(base:units)
  2. 段数 — value:数值

依据:800ACA1C:运行时机体 +0x4C..+0x50 五项写入 min(段数, +0x51),随后 800A5C18 重算;PC+4。

实测(2026-09-16):注入 3D6C 36,3:机体实例 +0x4C..+0x50 五项 0 → 3,HP/EN 上限等经 800A5C18 重算,武器实例 +0x6/+0x7/+0x16 同步更新。

3D6D · 当前阶段设为 1(我方阶段)

操作数(1 个字) · 代码确认 · 处理函数 0x800A1610

  1. 参数 — raw:未解释

依据:80213748 写 8010F5E8 = 1;阶段编号从 1 起(类型 0 事件头只出现 1/2),参数未被读取;PC+2。

3D6E · 单位退场(角色)

操作数(1 个字) · 代码确认 · 处理函数 0x800A1644

  1. 角色 — actor:人物编号(base:actors)

依据:名册中该角色的 +0x38 指针非零时调用 8020AB14;PC+2。

实测(2026-09-16):3D6E 179:エレ 的名册槽 0/4 被清空(状态与坐标归零、机体指针清零),驾驶员实例 +0x130 由 1 变 65、机体实例 +0x2F8 由 17 变 58。0 VI,无画面演出。

3D6F · 解锁武器(武器编号)

操作数(1 个字) · 代码确认 · 处理函数 0x800A1680

  1. 武器编号 — raw:未解释

依据:800ACF44:700 项、36 字节步进,+2 等于参数时清 +0x22 的位 2;PC+2。该表是武器实例池(机体实例 +0x30 指向其中,+0x2C 为件数,+2 武器编号、+0x16 改造段数、+0x22 标志),位 2 为未解禁标记:原脚本的 11 个参数全部是剧情解禁的必杀技武器编号(19 石破天驚拳、1215 ダブルゴッドフィンガー、53/62/71/76 シャッフル同盟各机、770/773/775/777 コン・バトラーV、874 対空光牙剣),换机继承 800AA8F4 也专门为武器 314 ファンネルMAP 继承同一位。

实测(2026-09-16):用本关部件表中确实存在且已置位的原脚本参数(19、773、775;由 tactical-3 的 part_instances 快照挑出,此前用的 53/874 不在表内):3D6F 773 与 3D6F 775 分别把部件记录 31、32 的 +0x22 由 0x0C 改为 0x08,即清除位 2(0x04),与静态分析 800ACF44 的描述完全一致。编号匹配的是记录 +2,不是索引。0 VI。

3D70 · 挂载同乘角色(驾驶员角色, 同乘角色)

操作数(2 个字) · 代码确认 · 处理函数 0x800A16BC

  1. 驾驶员角色 — actor:人物编号(base:actors)
  2. 同乘角色 — actor:人物编号(base:actors)

依据:800ACFAC 在名册中查找两个角色;PC+4。

实测(2026-09-16):原脚本 10 处实例里 3D70 全部紧跟 3D5A,且同乘角色(183 チャム/182 シルキー)在全部 6,223 条出击记录中都不出现、由 3D5A 以机体 999 登记。按同一写法先 3D5A 183,0,999,500 建立驾驶员记录 7(角色号在 +2),再 3D70 181,183:该记录 +0x37 置 1、+0x38 写入机体实例指针 0x8016A210;同时 ショウ 所驾 ビルバイン(机体实例 0)与 ウイングキャリバー(机体实例 1)的 +0x34 由 1 变 2、+0x3C 写入驾驶员记录 7 的地址 0x80173154。即 +0x34 为同乘人数、+0x38 起为驾驶员指针数组(与 3D55 的 basis 一致),本指令把同乘角色挂到该单位上。tactical-3 中的“空操作”是因为 183 不在驾驶员表里,不是指令无效。0 VI。

3D71 · 进入结局(不返回)

无操作数 · 代码确认 · 处理函数 0x800A02B8

依据:首帧调用 801C51B4 后既不推进 PC 也不完成;事件由 overlay 切换场景结束。

实测(2026-09-17):全作仅 1 处:场景 106「未来をこの手に」(流程图里没有任何后续场景,是最后一关)的结束事件,ブライト 说「好,航向月球,返回地球」之后执行。处理函数首帧调用 801C51B4,之后既不推进 PC 也不完成,由 overlay 切换场景。它属于世界地图 overlay:801C51B4 只存在于 load_000A7EC0(紧挨 3D5E 所用的 801C517C)。finale-1 在 3D4D 之后的战术地图上执行时,宿主在 get_function 中断言失败并中止(SIGABRT)——函数查找找不到这个地址;而原脚本的结束事件本就运行在世界地图上。ending-1 改在 3D4D 之前的世界地图上执行:VI 3303 执行后脚本轮询只再出现 2 次便停止,画面先转入深色的放射状拉远效果,随后在星空背景上显示结局的尾声文字(大意为战后留下疲惫的星球与人们,以及希望与新的未来),与最后一关标题相呼应(截图 3D71-ending.png)。运行正常结束,未再崩溃。即本指令启动全作结局。

3D72 · 设定世界地图旅行载具(载具编号)

操作数(1 个字) · 代码确认 · 处理函数 0x800A0FCC

  1. 载具编号 — raw:未解释

依据:写 engine+0x990 = 参数 mod 15;3D33 以它为下标取 D_801C5644,所得是世界地图模型表 801C5670 的下标(不是人物编号);PC+2。

实测(2026-09-17):读写链与运行时一致。写入:engine+0x990 = 参数 mod 15;运行时逐条快照读到 0 → 8 → 14 → 3 → 0,与四次参数完全相同。读取:3D33 以 engine+0x990 为下标取表 D_801C5644 的人物(为 0 时改取 800A31DC(46) 的结果,-1 → 24),交给 801C37B8 绘制旅行动画。该表恰好 15 项(0–14)后接 FFFF,正是参数取 mod 15 的原因;表中依次为 シュバルツ/キラル/アレンビー/サイ・サイシー/アルゴ/ジョルジュ/ジョーカー/バニー/ローレンス/シュバルツ/シャリー/キャス/ジャネット/ドモン/レイン。画面:四次都做同一段 3D33 2 旅程(耗时同为 316 VI),旅途中航迹头部画出的载具随人物而变——14 レイン 与 3 サイ・サイシー 各是一种不同的飞行器,8 ローレンス 与 0 默认只有航迹;到达终点时四者都变回同一个黄色菱形标记。原脚本 33 处中 8(ローレンス)占 20 次。即本指令决定下一次 3D33 旅行时画哪个载具。2026-09-24 更正:D_801C5644 的值是世界地图模型表 801C5670 的下标,上面按人物编号读出的名字不成立——依次为 10 グラン・ガラン、9 ゴラオン、11 ガンドール、8 ラビアンローズ、12(5596)、6 リーブラ、5 ピースミリオン(5589)、24 ミデア、3 ミデア、2 アウドムラ、0 アルビオン、1 アーガマ、4 ネェル・アーガマ、7 ラー・カイラム(参数 1–14);参数 0 的默认值 800A31DC(46) 取 ブライト 所乘机体,再查机体→模型配对表 801C560C(ミデア 3、アウドムラ 2、アルビオン 0、アーガマ 1、ネェル・アーガマ 4、ラー・カイラム 7、グラン・ガラン 10、ゴラオン 9、ガンドール 11、ラビアンローズ 8;无则 24 ミデア)。实证:ra-cailum 迷你关卡 3D72 14 后 3D33 绘制的正是资源 5591,宿主按资源内容识别并换成 HD 模型(docs/native/native-ship-model.md)。

3D73 · 部队分割:按预设名单选定(1 = 列表 A 0 = 列表 B)

操作数(1 个字) · 代码确认 · 处理函数 0x800A16FC

  1. 名单 — raw:未解释

依据:参数非零取 D_800D06A8(30 项),零取 D_800D06E4(62 项),复制到 -1 后调用 800AD990(列表, 参数);PC+2。

实测(2026-09-17):参数非零取 D_800D06A8(列表 A,30 人),为零取 D_800D06E4(列表 B,62 人),复制到 -1 结尾后交给 800AD990。选定标记是驾驶员实例 +0 的位 7 与机体实例 +0x0C 的位 6,由 resident_func_800AD990 维护:先遍历清除所有条目的这两个位(andi 0x7F/andi 0xBF),再对名单中角色号匹配的条目置位 7(ori 0x80)。split-1 部署两名列表 A 成员(万丈、ヒイロ)与两名非列表 A 角色(カトル、ドモン),逐条快照读四人的位 7:初始全 0;3D74 后全 0;3D73 1 后只有 万丈、ヒイロ 为 1;再 3D74 后全 0;3D73 0 后只有 カトル、ドモン 为 1。列表 A 与列表 B 互不重叠,是部队分割的两半。原调用点给出含义:3D73 1 之后 サリィ 问「前往ムゲ宇宙的成员决定了吗」,ノイン 点名 ブライト艦長、万丈、アラン、獣戦機隊、ヒイロたち,マーベル 补充 カトル 会留下——列表 A 正是这些人且不含 カトル(ブライト 46、万丈 165、アラン 166、沙羅/亮/雅人/忍 168–171、ヒイロ 95、デュオ 92、五飛 91、トロワ 93……)。另一处 3D73 0 的上下文则是「クラッシャー隊とカトルは残る」。即本指令把一整组预设角色标为当前分队。

3D74 · 清除全部分队选定标记

无操作数 · 代码确认 · 处理函数 0x800A1924

依据:复制 D_800D0760 的 8 字节(全为 -1)后调用 800AD990(列表, 2)。

实测(2026-09-17):以空名单与模式 2 调用 800AD990,因而只执行其清除部分、不置任何位。选定标记是驾驶员实例 +0 的位 7 与机体实例 +0x0C 的位 6,由 resident_func_800AD990 维护:先遍历清除所有条目的这两个位(andi 0x7F/andi 0xBF),再对名单中角色号匹配的条目置位 7(ori 0x80)。split-1 部署两名列表 A 成员(万丈、ヒイロ)与两名非列表 A 角色(カトル、ドモン),逐条快照读四人的位 7:初始全 0;3D74 后全 0;3D73 1 后只有 万丈、ヒイロ 为 1;再 3D74 后全 0;3D73 0 后只有 カトル、ドモン 为 1。列表 A 与列表 B 互不重叠,是部队分割的两半。两次 3D74 都把四人的位 7 全部清零。原脚本仅 1 处(场景 104 开场),紧接着就是逐个 3D5A 重新编成与 3D6B 253,222,0——即先清空分队,再按需逐个重建。

3D75 · 放出母舰搭载的单位(角色;舰长 = 该舰全部搭载单位,999 = 46 ブライト)

操作数(1 个字) · 代码确认 · 处理函数 0x800A197C

  1. 角色(舰长则放出全舰,999 = 46) — actor:人物编号(base:actors)

依据:80213758(角色):999 改为 46;角色在舰长表 8021E398(46 ブライト/180 シーラ/179 エレ/253 葉月博士/37 エマリー/49 ヘンケン/250 ハワード)中时,取他所驾的母舰(母舰表 8015E85C/60 的 +0x38 驾驶员匹配,否则取非空的一艘),把该舰搭载表 8015E864 中的全部单位加入选择数组;否则在两艘母舰的搭载表里找该角色,只选他那一台;都找不到则什么也不做。随后以母舰所在格为基准,80213FDC 驱动的状态机每 4 帧放出一台(80213AAC:放进空地图槽、在场状态置 1、801F2E34 在母舰附近排位、801EB0D4 从搭载表移除、音效 0xD1、我方单位数加 1),状态到 3 时 PC+2。搭载只由玩家的移动指令完成(801CD0E4 → 801EAF88),脚本指令不会让单位上舰。

实测(2026-09-17):第八轮,先造出前七轮缺的前提:母舰里要真的有单位。launch-1 用 3D5A 登记 ブライト+アウドムラ 与 ドモン,3D3D 5,10,0,0,3 让 アウドムラ 进母舰表并登场于 (5,10),3D3D 6,10,0,200,2 让 ドモン 出现在它右边。开场结束后用按键操作:光标右移选中 ドモン →「移動」→ 左移到母舰格 → 弹出「搭載」→ 确认,ドモン 从地图上消失,母舰表搭载数 8015E858 由 0 变 1、搭载表首项为 ドモン 的机体 8016A264;随后打开地图菜单「フェイズ終了」→「はい」结束我方阶段。3D75 999 放在第 1 回合敌方阶段开始的事件里(类型 0,事件头 [0,2];回合计数 8010F5EA 从 0 开始,头部 [1,x] 要到第 2 回合才成立)。 结果:3D75 于 VI 6495 开始、6751 结束(256 VI)。执行前我方地图槽只有 アウドムラ,执行后多出一槽 = ドモン 于 (5,8)、组号 2,搭载数 1→0,我方单位数 1→2,基准点状态字节 802279E8 = 3(完成)、基准坐标 (0x70,0xC0) = 母舰格 (5,10)。画面:镜头移到母舰,母舰上方出现紫色发进特效,随后 ドモン 出现在母舰上方两格。 所以 3D75 是「从母舰放出搭载单位」。原脚本里它总在舰长或角色离场(3D46)之前:场景 33/48 シーラ、エレ 返回バイストンウェル前、场景 105 ブライト 离开ラー・カイラム前,先把舰内的单位放出来,免得随母舰一起离场;非舰长(アラン、ゼクス、シュバルツ)只有在他们正搭载于母舰时才会被放出,否则什么也不发生——这正是前七轮与多数实机视频里看不到效果的原因,视频里看到的「消失、离开战场」是紧随其后的 3D46。

早先记录:第五轮、也是唯一一轮在真实上下文里的测量:场景 78「獣戦機基地 総攻撃」的事件 001CC1B4 原样复制(指令逐字节不变,仅把触发条件由回合 8 放宽到回合 0 以便有界运行到达),配该场景自己的 66 条出击记录与地图 55。3D75 166(アラン)于 VI 6829–7017 在原脚本位置执行,紧跟 3D46 166,0,且确实走进了包裹它的 3E08 1 条件分支。结果:耗时仍是恒定的 188 VI;逐条快照显示该跨度内探针全部区域零变化(窗口内唯一的状态改动来自随后的 3D46,名册 11 字节/1 槽);帧间差在 3D75 期间恒为 0.9–1.0,与其开始前和结束后完全相同,即待机动画基线,无任何可归因的画面变化。

五轮实验汇总:孤立执行、与 3D46 配对、机体移到母舰旁、机体移到母舰同格、原脚本上下文——表现完全一致。原脚本 7 处实例全部紧跟同一角色的 3D46(退场)并由 3D3B 2/3 淡出淡入包住,位置上确属退场那一下的演出;命中 7 项舰长表(46 ブライト/180 シーラ/179 エレ/253 葉月博士/37 エマリー/49 ヘンケン/250 ハワード,999 先改写为 46)后还要求名册之后的两个战舰全局 8015E85C/60 非空且其 +0x38 驾驶员匹配。该条件在上述任何一轮都未成立,而它不由部署战舰满足,因此效果始终未显形。保持 unknown。

第七轮(scene78t-3,2026-09-17)补上引擎块探针后重测,排除了「只写引擎字段所以前六轮看不见」的可能。3D75 跨度(VI 6830–7018)内引擎块仅 +0x96D 由 0x02 变 0x00;但全程 90 个命令转换中该字节变化了 67 次(74%),与 +0x967(100%)、+0x97A/+0x97B(51%)等同属脚本虚拟机自身的工作状态,是每条命令都会动的簿记,不是本指令的写入。作为对照,同一轮里 +0x997(3D66 的位 7)只变了 5 次,恰是场景 78 里那几处 3D66——稀有且专一,说明按变化频率区分簿记与指令效果是可靠的。结论不变:在名册、驾驶员、机体、部件、剧情变量与引擎块全部覆盖的情况下,3D75 仍无任何专属写入。

3D76 · 无处理函数

无操作数 · 代码确认

依据:分发表默认分支返回空处理函数,事件将停滞;ROM 脚本中未出现。

3D77 · 无处理函数

无操作数 · 代码确认

依据:同 3D76。

3D78 · 空操作(不可达)

无操作数 · 代码确认 · 处理函数 0x800A01BC

依据:仅 state=0;8009F0E8 的标记循环不会让 ≥3D77 的字到达分发;ROM 脚本中未出现。

3D79 · 空操作(不可达)

无操作数 · 代码确认 · 处理函数 0x800A01C4

依据:同 3D78。

条件指令

条件指令在 ACC 寄存器和变量上做判断与赋值。「开头」开启一个判断块,条件为假时跳过到对应的「块结束」(3E1D),块可以嵌套。

3E00 · ACC 清零

无操作数 · 种类:语句 · 代码确认 · 处理函数 0x800A2388

依据:engine+0x99C = 0,返回真。

3E01 · 若角色 HP 百分比 < 阈值(且在场)则 ACC = 值

操作数(3 个字) · 种类:开头 · 代码确认 · 处理函数 0x800A1FBC

  1. 角色 — actor:人物编号(base:actors)
  2. 百分比 — value:数值
  3. ACC 值 — value:数值

依据:800A293C 取角色所驾单位 HP/最大 HP×100(下限 1;不在场 0;已退场 103);百分比小于阈值且不为 103 时 ACC = 第 2 字并为真。

3E02 · 若变量 ≠ 值

操作数(2 个字) · 种类:开头 · 代码确认 · 处理函数 0x800A207C

  1. 变量 — flag:2 位变量 0–199
  2. 值 — value:数值

依据:800A496C 读取 200 个 2 位变量之一;不等时为真。

3E03 · 若变量 = 值 则 ACC = 值 2

操作数(3 个字) · 种类:开头 · 代码确认 · 处理函数 0x800A20C4

  1. 变量 — flag:2 位变量 0–199
  2. 值 — value:数值
  3. ACC 值 — value:数值

依据:相等时 ACC = 第 2 字并为真。

实测(2026-09-16):变量 7 = 2 时 ACC 变为 9 并执行块内 3D5B;变量 7 = 1 的块整体跳到 3E1D 之后。

3E04 · 若当前回合 < 回合数 则 ACC = 值

操作数(2 个字) · 种类:开头 · 代码确认 · 处理函数 0x800A2344

  1. 回合数 — value:数值
  2. ACC 值 — value:数值

依据:8010F5EA(存档回合计数)小于第 0 字时 ACC = 第 1 字并为真。

3E05 · 恒真(未实现)

无操作数 · 种类:开头 · 代码确认

依据:跳转表落入 800A1F64 返回 -1。

3E06 · ACC = !(等级[角色 A] < 等级[角色 B])

操作数(2 个字) · 种类:语句 · 代码确认 · 处理函数 0x800A22CC

  1. 角色 A — actor:人物编号(base:actors)
  2. 角色 B — actor:人物编号(base:actors)

依据:800A32C0/800A32EC 在三张驾驶员表里按角色号找第一条,取 +5 的字节,即等级(2026-10-01,docs/gameplay/hidden-elements.md 2.4)。

3E07 · 恒真(未实现)

无操作数 · 种类:开头 · 代码确认

依据:同 3E05。

3E08 · 若 ACC = 值

操作数(1 个字) · 种类:开头 · 代码确认 · 处理函数 0x800A23C4

  1. 值 — value:数值

3E09 · 若 ACC ≥ 值

操作数(1 个字) · 种类:开头 · 代码确认 · 处理函数 0x800A23EC

  1. 值 — value:数值

3E0A · 若 ACC ≠ 值

操作数(1 个字) · 种类:开头 · 代码确认 · 处理函数 0x800A2438

  1. 值 — value:数值

3E0B · 若 ACC ≥ 值

操作数(1 个字) · 种类:开头 · 代码确认 · 处理函数 0x800A23EC

  1. 值 — value:数值

依据:与 3E09 共用处理函数。

3E0C · 若 ACC < 值

操作数(1 个字) · 种类:开头 · 代码确认 · 处理函数 0x800A2414

  1. 值 — value:数值

3E0D · ACC = 击坠数[角色]

操作数(1 个字) · 种类:语句 · 代码确认 · 处理函数 0x800A228C

  1. 角色 — actor:人物编号(base:actors)

依据:800A3294 取名册条目 +0x14 的 s16,即击坠数:击坠资金加成 801F66C8 也按 +0x14 分档(2026-10-01,docs/gameplay/hidden-elements.md 2.4)。

3E0E · 变量 = (变量 + 1) mod 4

操作数(1 个字) · 种类:语句 · 代码确认 · 处理函数 0x800A2198

  1. 变量 — flag:2 位变量 0–199

3E0F · 变量 = (变量 − 1) mod 4(≤0 时为 3)

操作数(1 个字) · 种类:语句 · 代码确认 · 处理函数 0x800A220C

  1. 变量 — flag:2 位变量 0–199

3E10 · 若选择肢结果 = 第 1 项

无操作数 · 种类:开头 · 代码确认 · 处理函数 0x800A2394

依据:engine+0x994 == 0x3DD9(3D44 写入)。

3E11 · 若选择肢结果 = 第 2 项

无操作数 · 种类:开头 · 代码确认 · 处理函数 0x800A23A4

依据:engine+0x994 == 0x3DDA。

3E12 · 若选择肢结果 = 第 3 项

无操作数 · 种类:开头 · 代码确认 · 处理函数 0x800A23B4

依据:engine+0x994 == 0x3DDB。

3E13 · 变量 = 值

操作数(2 个字) · 种类:语句 · 代码确认 · 处理函数 0x800A2158

  1. 变量 — flag:2 位变量 0–199
  2. 值 — value:数值

依据:800A4888 写入 2 位变量,值 ≥4 时忽略。

实测(2026-09-16):变量 7 由 3 写为 2。

3E14 · ACC = 值

操作数(1 个字) · 种类:语句 · 代码确认 · 处理函数 0x800A2138

  1. 值 — value:数值

3E15 · ACC = 阵营单位数

操作数(1 个字) · 种类:语句 · 代码确认 · 处理函数 0x800A24FC

  1. 阵营 — faction:阵营索引 0 我方 / 1 敌方 / 2 第三方

依据:0/1/2 分别读取 engine+0x9B0/0x9B1/0x9B2,由 802018C4 按阵营刷新。

3E16 · ACC = 交战另一方角色(排除参数角色)

操作数(1 个字) · 种类:语句 · 结构确认 · 处理函数 0x800A2478

  1. 角色 — actor:人物编号(base:actors)

依据:依次检查 engine+0x9A0/0x9A4 指向的驾驶员记录 +2;等于参数时改查另一方;均不成立时 ACC = 0。

3E17 · ACC = engine+0x9B6(有符号字节)

无操作数 · 种类:语句 · 结构确认 · 处理函数 0x800A2460

依据:0x9B6 由 801F3F90/801FE794 在战斗流程中写入。

3E18 · ACC = 当前场景索引

无操作数 · 种类:语句 · 代码确认 · 处理函数 0x800A2570

依据:读取 8010F5F0。

3E19 · engine+0x998 = engine+0x9A8

无操作数 · 种类:语句 · 结构确认 · 处理函数 0x800A2590

依据:字段含义未确认。

3E1A · ACC = engine+0x998

无操作数 · 种类:语句 · 结构确认 · 处理函数 0x800A25A0

3E1B · ACC = 角色在场状态(0 不在 / 1 在场 / 3 已退场)

操作数(1 个字) · 种类:语句 · 代码确认 · 处理函数 0x800A1F7C

  1. 角色 — actor:人物编号(base:actors)

依据:800A3990 把 800A293C 的百分比折算:1–100 → 1,103 → 3,102 → 2。

3E1C · 无条件块开始(恒真)

无操作数 · 种类:开头 · 代码确认 · 处理函数 0x800A2584

依据:engine+0x96C = 0 并返回 -1;跳过扫描时按嵌套层计数。

3E1D · 条件块结束

无操作数 · 种类:块结束 · 代码确认 · 处理函数 0x800A1D60

依据:执行时恒真;条件为假时扫描到同层 3E1D 后继续。

实测(2026-09-16):作为跳过块的落点,执行到时继续。

上下文标记

执行到标记时,若它与当前上下文匹配就继续,否则跳过到下一个匹配的标记或事件结束。

标记 名称 匹配方式
3DD0 共通段(任何上下文) 总是
3DD1 アークライト・ブルー 路线 当前主角
3DD2 セレイン・メネス 路线 当前主角
3DD3 ブラッド・スカイウィンド 路线 当前主角
3DD4 マナミ・ハミル 路线 当前主角
3DD5 リアル系主角(3DD1/3DD2) 主角的派生分类
3DD6 スーパー系主角(3DD3/3DD4) 主角的派生分类
3DD7 男性主角(3DD1/3DD3) 主角的派生分类
3DD8 女性主角(3DD2/3DD4) 主角的派生分类
3DD9 选择肢第 1 项 选择肢结果
3DDA 选择肢第 2 项 选择肢结果
3DDB 选择肢第 3 项 选择肢结果

操作数类型

操作数的类型说明它的取值范围;表里没有的类型见各指令的操作数名称。

类型 含义
actor 人物编号(base:actors)
text 表 0 文本编号
unit 机体编号(base:units)
flag 2 位变量 0–199
scene 场景索引
group 配套记录组号
position 高字节 x/低字节 y,0x40–0x44 相对 3D54 位置
x 格 x
y 格 y
count 计数
frames 帧数
se 音效编号
bgm 曲目编号
event_slot_type1 本场景类型 1 事件的登记序号
event_slot_type8 本场景类型 8 事件的登记序号
actor_or_group <500 为人物编号,≥500 为配套组 (值−500)
bool 开关
value 数值
side 阶段 1 我方 / 2 敌方 / 3 第三方(4 = 任意)
deploy_side 出击记录阵营 0/1/2(3 → 0,4 → 2)
raw 未解释
faction 阵营索引 0 我方 / 1 敌方 / 2 第三方
map 地图编号(base:map_assets;写入 8010F5EE)

变量

共 200 个 2 位变量(取值 0–3),存放在 0x8015E818,用条件指令读写,跨关保留。800A496C/800A4888:每 8 个变量占一个 u16,掩码表 800CA380/800CA390;新关卡时变量 100–114 与 128–139 置 3、变量 54 置 1(8009DE7C)。

出击记录(28 字节)

出击记录是关卡的单位配置表,每条 14 个半字,组号为 999 时结束。「迷你关卡字段」是关卡定义 deployments 里对应的字段名。

偏移 字节 名称 迷你关卡字段 确认程度 依据
+0 2 组号 group 代码确认 3D45/3D3D 与首字比较;999 停止。
+2 2 x x 代码确认 3D3D → 801C78A0 以 ×16+32 转为屏幕坐标。
+4 2 y y 代码确认 同上。
+6 2 驾驶员角色 actor 代码确认 8020ABB4:<287 时按名册已分配机体的驾驶员 +2 匹配复用;否则作为默认驾驶员生成。
+8 1 未解释字节 byte8 未解明
+9 1 等级偏移 level_offset 代码确认 8020ABB4:等级 = 8010F5F3 + 该字节。
+10 2 机体 unit 代码确认 8020ABB4 交给 800A6E68 机体加载器;与 D_800CA418 默认驾驶员表匹配。
+12 2 强化索引 upgrade 代码确认 8020ABB4:D_800CB5DC[值] 写入运行时机体 +0x4C..+0x50 五项改造段数。
+14 6 未解释 raw14, raw16, raw18 未解明
+20 2 阵营 faction 代码确认 8020ABB4/8020B154:3 → 0、4 → 2,其余按值。
+22 2 行为标志 behavior 结构确认 交给 800A97F0;位 14 置位且阵营非 0 时把 +0x18 写入驾驶员 +0x14,即该单位的假身次数(801F6E3C 判定,801FCA78/801FE068 消耗)。原版 42 条记录设有此位。
+24 2 附加值 extra 结构确认 见行为标志位 14:敌方单位的假身次数,原版取值 2、3、5、7。
+26 2 未解释 raw26 未解明