← 技術文件

關卡指令碼指令參考

關卡事件指令碼的全部指令、條件指令、上下文標記、事件型別、變數與出擊記錄欄位,逐條附實現依據與實測結果。寫迷你關卡時查。

更新於 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 未解明