From dd3c27f288d74d3eb2ba85fd51446aef88512b09 Mon Sep 17 00:00:00 2001 From: Sylpheed RE agent Date: Wed, 26 Aug 2026 00:56:28 +0000 Subject: [PATCH] =?UTF-8?q?re:=20built-in=2015=20takes=20a=20craft-class?= =?UTF-8?q?=20scalar=20=E2=80=94=20but=20"set=5Fspeed"=20does=20not=20surv?= =?UTF-8?q?ive?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 15 is the biggest unnamed built-in: 1360 sites across 27 of 28 stages, with an invariant (unit, double) operand shape. Joining every call site's unit to its craft type through stage\UnitGroup_S.tbl resolves 1360 of 1360, none unknown, and the values stratify hard: capital hulls (Destroyer, Carrier, CruiserEX, Cruiser, Acropolis, BattleshipEX, ASFrigate) 0-100 mobile craft (Elan 500, ArrowHead 400, DeltaSaber_T 400, DeltaSaber_W 600, Attacker_S 250-400, Phantom 300) 250-600 asteroid (mn040_Asteroid_Big, 74 sites) 0, only 0 Capital ships crawl, fighters run, the player's craft is fastest at 600, and a rock never moves. That is a speed's signature. Except turrets break it. UN_e007_ADAN_Turret carries 400 x89 / 280 x17 / 380 x4 / 250 x2 and UN_e008_ADAN_TurretPlus 450 x62 / 500 x2 -- 176 of the 1360 sites, 13%, at fighter-class values on something that does not move. The asteroid is what makes this sharp rather than dismissible: a genuinely immobile object gets 0 every single time, so "immobile things get junk" does not explain the turrets. So the operand is a craft-class-dependent scalar with speed's range and ordering, but set_speed is not a sound reading of it. Left UNNAMED. The handler writes [unit+196], initialised from [unit+192] at spawn; reading its consumer is what would settle it. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01PMRJjbxLqZtsb5Vb7KunPE --- docs/re/structures/isl-builtins.md | 38 ++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/docs/re/structures/isl-builtins.md b/docs/re/structures/isl-builtins.md index 9ec1190..1572a9b 100644 --- a/docs/re/structures/isl-builtins.md +++ b/docs/re/structures/isl-builtins.md @@ -140,6 +140,44 @@ and spread checks but its maximum *exceeds* the table — flag indices run 0..31 against symbol tables as small as 40 — so it is excluded, and the disassembler now declines to resolve it rather than printing an invented name. +### 🟡 Built-in 15 takes a craft-class scalar — but "speed" does not survive intact + +`15` is the biggest unnamed built-in: **1360 sites across 27 of 28 stages**. Its +operand shape is invariant — `(unit, double)` — and joining every call site's +unit to its craft type through `stage\UnitGroup_S.tbl` resolves **1360 of +1360, none unknown**. The values stratify hard by class: + +| class | craft (sites) | values | +|---|---|---| +| capital hulls | `e106_Destroyer` (159), `e104_Carrier` (62), `e105_CruiserEX` (53), `f105_Cruiser` (40), `f101_Acropolis` (30), `e102_BattleshipEX` (27), `e108_ASFrigate` (33) | **0–100** | +| mobile craft | `e001_Elan` (73) 500, `f003_ArrowHead` (54) 400, `f001_DeltaSaber_T` (28) 400, `f002_DeltaSaber_W` (36) **600**, `e010_Attacker_S` (54) 250–400, `e009_Phantom` (16) 300 | **250–600** | +| asteroid | `mn040_Asteroid_Big` (74) | **0, and only 0** | + +Capital ships crawl, fighters run, the player's own craft is fastest at 600, and +a rock never moves. That is a speed's signature and it is hard to explain any +other way. + +#### ❌ Except that turrets break it + +| craft | sites | values | +|---|---|---| +| `UN_e007_ADAN_Turret` | 112 | 400 ×89, 280 ×17, 380 ×4, 250 ×2 | +| `UN_e008_ADAN_TurretPlus` | 64 | 450 ×62, 500 ×2 | + +**176 of the 1360 sites — 13 % — are turrets, and they carry fighter-class +values.** A turret does not move, so a literal hull speed cannot be what this +sets for them. Either the field means something else (a projectile speed, a +tracking rate, an FCS target-speed cap), or it means different things by class. + +The asteroid is the control that makes this sharp: a genuinely immobile object +gets **0 every time**, so "immobile things get a meaningless value" does not +explain the turrets either. + +So: ✅ a craft-class-dependent scalar in speed's range and with speed's ordering; +❌ not `set_speed` as a plain reading. **Left unnamed.** The handler writes +`[unit+196]`, initialised from `[unit+192]` at spawn — reading its consumer is +what would settle it. + ### ✅ Four built-ins are TUTORIAL-ONLY — 85 sites, every one in S18–S23 `96`, `97`, `98` and `104` were unnamed. Measured over all 28 stages, they form a