Files
GaCy-GO/docs/ffgo-cw-resource-reference.md
2026-10-28 18:54:43 +07:00

5.0 KiB

FFGO CW resource reference, 2026-10-26

The updated reference executable was inspected offline. It was not launched, and its saves/configuration were not modified. Its SHA256 is 235f5c3567f281cc99613ed84694ef23f492c15298dc868a8e78e6529f0cda86.

Reproducible extraction

tools/export_ffgo_embedded_resources.py --binary <reference executable> --output <evidence directory> extracts bounded gzip members and decodes the Excel resource through the executable's own generated protobuf descriptors. It requires Python protobuf and the sibling dump_embedded_proto.py. No executable code from the reference is run.

Evidence is retained under battle_diagnostics/ffgo-20261026/:

  • resource-manifest.json: binary identity, descriptor identities, exact gzip offsets/lengths, compressed and uncompressed hashes.
  • excel-data.json: full decoded excel.ExcelData, including NPC monsters, challenge/Peak data, activities, shops and CW tables.
  • gridfight-excel-data.json: CW-only subset, 72 tables.
  • gridfight-custom-data.json: 1,253 reference-authored config files and two action schemas. These are not original Client level JSON.
  • resource-inventory.json: table counts and the exact currently blocked Tea Break event/options/custom rule.
  • challenge_peak_extra_data.json: separate embedded JSON supplement, 11 groups/44 Peak entries, file offset 0x114c212, 9,101 decoded bytes.
  • load-excel.asm: static loader evidence. LoadExcel at RVA 0xb79160 reads embedded resources/excel.gz, creates a gzip reader, reads all bytes, and unmarshals the protobuf into the global Excel data object.

The Excel gzip member starts at file offset 0x11c9fef, compressed size 962,600 bytes, uncompressed size 6,008,625. The CW custom JSON gzip member starts at 0x1153105, compressed size 25,684, uncompressed size 267,251. The extractor preserves protobuf int64 values as decimal strings in JSON.

New usable CW evidence

The extracted tables include 38 Bonfire events, 72 Bonfire options, 3 Bonfire heal rows, 110 bonus pools, 1,120 basic bonuses, 480 combination bonuses, 532 Orbs, 493 node templates/routes, 629 special avatars and 411 augments. This supplies the previously missing reference bonus-pool recipes. It does not by itself establish current Client response bindings or packet order.

For the blocked event 10200601, the reference Excel row states PetPalID 2 and DialogID 1020060101. Its option 1 states:

  • JsonPath: Config/Level/GridFight/petpal/bonfire/GridFightBonfire102006011.json
  • DialogID: 1020060102
  • EffectParamList: [40]
  • OptionShowType: None

The corresponding reference-authored custom rule is petpal/bonfire/GridFightBonfire102006011.json: TeaBreakOption, immediate SetRule action, rule name PetPalStarDown, value #1 (the parameter 40). It must not be replaced with a generic healing reward. Separate Bonfire heal rows specify 20 for each of chapters 1, 2 and 3.

Basic bonus, random pool and combination bonus IDs are separate lookup namespaces. For example basic BonusID 1 is Gold with amount parameter 1; there is no random pool row with RandomBonusID 1. The existing captured Orb 197 points to BonusID 1, so trying to resolve every Orb through the random pool table would fail for this legitimate direct basic bonus.

Saved state is supporting evidence, not reusable configuration

The reference's external data-in-game.json contains an active season 2, route 1800 run at node 1-2, 23 pregenerated nodes and one completed battle. Its first two nodes retain per-monster drop_orb_ids, and its saved effect state contains OrbsOpened = 5. This shows the reference persists those concepts, but does not capture the packets that awarded/opened them. That run must not replace this project's route 2801 run or player save. No avatar snapshots or player inventory from the reference were imported.

The reference's static route 2801 chapter 1 section 5 points to node template 280115, whose row is Monster, StageID 70000008, ParamList [902], penalty 92204 and basic gold 10. The captured live Client run is instead a Tea Break with event 10200601 at that position. A PetPal/dynamic node override may explain this; static route data must not overwrite the active run. The reference does explicitly link PetPal 2 to effect 102006, whose parameter is event 10200601.

Compatibility and limits

The reference supports multiple Client revision dispatches; a table's presence in its embedded Excel is not independent proof that it matches the connected Client's revision. Compare relevant rows with captured Client data and retain this binary's provenance before importing a compatible subset. Resolve CmdIDs through the current named command table; never transplant historical numbers.

The custom files label 822 entries Implemented, 42 Partial, 116 NotImplemented, 93 BattleOnly, 129 Code and 51 Excel. These are labels inside the reference's own authored data, not verification that those features work in this project or even a runtime verification of the reference. Gameplay integration and Client verification remain separate work.