# Demo availability for build calculator

Build: Steam demo 24032336. Read-only extraction and static decoding on 2026-09-07.

## Manifest contract

`demo-availability.json` is a **conservative supported Chapter 1 pool**, not a claim that every optional reward path has been exhausted. It contains 37 gear IDs, the three regular party members, five visions, and per-item acquisition evidence. Do not replace this with all IDs found in the archive: the demo includes later-game tables and even later-game/shared map records.

Normal demo characters: Rain 1001, Lasswell 1002, Fina 1003. The `NewGame` initial-save row defines starting gear for all eight characters, but only the three above enter the normal Chapter 1 party. Main event `C01_002_01` activates Rain/Lasswell; `C01_022_01` activates Fina. Archwitch Fina 1006 is a scripted opening segment (initial level 55), then reset and removed; those opening items are not in the normal build pool. The separate `Setup` save row is not a New Game acquisition source.

Visions and exact grant records:

| Vision | ID | Grant |
|---|---:|---|
| Tronn | 13024 | DT_TalkEventData_Chapter01, C01_014_03 |
| Leah | 13045 | DT_TalkEventData_Chapter01, C01_014_03 |
| Warrior of Light | 13100 | DT_TalkEventData_LegendEvent, Int_LegendEV_01_07 |
| Terra | 13108 | DT_TalkEventData_LegendEvent, Int_LegendEV_06_07 |
| Cloud | 13110 | DT_TalkEventData_LegendEvent, Int_LegendEV_07_07 |

The demo's actual Legend event table contains these three playable FF vision acquisition sequences; the raw item catalog contains 26 visions. Later native MR unlock skills do not establish vision ownership.

## Progression

Level 15 and mastery rank 5 are native demo caps, independently traced by the progression audit. See `demo-progression-caps.md` if present for addresses and exact bounds.

The general native awakening maximum is display rank 4 (raw 0-3). The **supported obtainable awakening maximum in this manifest is 2**, because `DT_VisionUpgradeItemData` maps raw level 1 to item 25000, raw level 2 to item 25001, and raw level 3 to item 25002. Verified normal Chapter 1 acquisitions supply 25000. Examples:

- Siren's Tower, treasure table `DT_Dng_02Lan_40`, row `Dng_02Lan_40_1`, map 3030.
- Secrets Unearthed, `SubEv_C01_Chloe_04`, also grants Monk's Prayer Beads.
- Rear Support, Ahoy!, `SubEv_C01_Zairu_04`.
- `SubEv_C01_Moogle_01`.

Quest acceptance conditions in `DT_RequestData` support ordinary Chapter 1 access: Dream of an Idealist starts at main progress 1120; Secrets Unearthed at 1180; The Weight of Mercy at 1210; Rear Support, Ahoy! at 1240. Higher gemstone quest rewards inspected require Chapter 2 or later progress. This is an acquisition restriction, **not an invented engine cap**. A single optimized build can choose which available vision receives the limited gemstones; the calculator should not imply infinite material ownership.

## Gear provenance and exclusions

The manifest includes starting gear belonging to Rain/Lasswell/Fina, unconditional shop entries in Mitra/Grandshelt/Felicitas/Grandport, normal story-area treasure rows, and verified Chapter 1 quest rewards. Old internal shop names still say Nashat for localized Felicitas; source IDs preserve that distinction.

Each gear record has table/row or shop ID and exported file offset. The shop decoder excludes entries with non-empty unlock conditions and the obsolete Grandport accessory shop row. Ordinary treasure map IDs were matched to decoded map names. Repeated chest tables for burning/normal Grandshelt are deduplicated by gear ID; this is availability, not an inventory-copy count.

Notable exclusions:

- Earth Shrine extension / map 3010 (`Dng_01Gra_41`) has Masamune, Excalibur, Sniper's Eye, and large gemstones, but is absent from the demo composite map asset references. Its presence in treasure tables does not make it playable.
- Map 10050 (`Dng_02Lan_41`) is likewise not a referenced demo map; Mage's Shard there is withheld.
- Oblivion Palace / map 2031 is packaged and referenced by the demo composite. Vitality Charm 12063, from its first decoded chest, is corroborated by the current unmodified demo save and is included. Access to later floors and their high-level gear / 25001/25002 gemstones is unverified, so those further rewards are withheld.
- Colosseum maps and rank tables are packaged. First Fledgling League battle is recommended level 25, and later ranks contain advanced gear/materials. Demo access to those ranks was not proven, so rank rewards, unlocked shop stock, and the Colosseum NPC's Lunar Sword/Brigandine gift are withheld.
- Ancient Bow 10398 is granted in `SubEv_C01_Chloe_Weapon_02`, but the trigger for that weapon side-event was not established. A Chapter01 filename alone is insufficient: other quests in that area require later progress. Withheld.
- Ring of Rage 12058 is a rare steal from Dhorme Chimera 128 in early battle groups 1032/1033. The player Steal and Mug skills are sourced from Zidane, who has no verified demo grant; no alternative available theft method was proven. Withheld.
- Temporary Talisman of Thievery 12096 is granted for the demo-specific Gilgamesh battle event and consumed by the finishing event; it is not persistent owned gear.

Floral Arc 10302 and Vitality Charm 12063 were verified in a demo save and are included. Floral Arc is absent from the decoded shop/chest/event/drop acquisition tables; its exact grant route remains unresolved. Personal saves are not distributed with this reference.

Full ordinary enemy table was decoded. Other gear drops/steals inspected occur in later encounter groups (2000+ or later chapter bosses); no additional demonstrated persistent ordinary Chapter 1 drop equipment was added. This is a conservative result, not an assertion that all possible scripted rewards were exhaustively traversed.

## Reproducibility

All work is under `resonance-analysis`; no game or save files were changed.

1. `retoc` 0.1.5 `to-legacy` extracts `Datatable/` from the installed demo's IoStore archives to `demo-assets`. Extraction without a forced UE version matches the existing asset parser. 1,402 datatable assets converted successfully.
2. `demo-native-schema.py` follows native reflected UScriptStruct metadata and constructor pointer arrays, preserves own-property order followed by inherited properties, and records metadata offsets in `demo-native-schemas.json`.
3. `decode-demo-acquisition.py` decodes all 105 shop records and 238 treasure records. Both row count and final file boundary are verified.
4. `decode-demo-events.py` decodes 36 relevant complete tables, including main Chapter 1, sidequests, legends, initial save, maps, requests, every enemy stat/drop record, battle groups, vision upgrade items, and rank reward tables. Every successful table ends exactly before its four-byte Unreal trailer. Map/array enum names are decoded using the exported name map; scalar enums use their serialized byte. Native color/vector structs account for their special serializers.
5. `build-demo-manifest.py` creates `demo-availability.json` from those decoded tables and explicit allowed acquisition routes. It asserts that every allowed gear ID exists in the wiki database.

Useful audit artifacts:

- `demo-acquisition-tables.json`: complete shop/chest records.
- `demo-events-decoded.json`: complete relevant decoded table rows, including excluded late sources.
- `demo-native-schemas.json`: exact property names/types and native metadata offsets.
- `demo-availability.json`: small calculator consumption manifest and visible caveats.

Do not describe the manifest as exhaustive demo ownership or use the supported awakening tier as an engine hard cap. The user can use the full extracted-data mode for theoretical builds; the demo mode should clearly identify its supported acquisition scope.
