64 lines
3.3 KiB
Markdown
64 lines
3.3 KiB
Markdown
# ComicDessert current Client contract
|
|||
|
|
|
||
|
|
## Proven data and preview entry
|
||
|
|
|
||
|
|
`ComicDessertCatalog.json` retains all four Cycle rows and fifteen Level rows
|
||
|
|
captured from the current Client assembly. The catalog preserves 64-bit TextID
|
||
|
|
hashes, requires a complete two-table capture, rejects duplicate IDs, and checks
|
||
|
|
that each cycle references existing levels. It includes the ordinary cycle
|
||
|
|
levels and the Greedy Feast and Long Tail configuration paths; those paths alone
|
||
|
|
do not prove that their gameplay is implemented.
|
||
|
|
|
||
|
|
Current assembly SHA256:
|
||
|
|
`4aa08a0706f27d2cf9951b61920c179140ece9ea94f7e34422c18e46922939b6`.
|
||
|
|
|
||
|
|
The native GetData consumer at `0xd4dbc60` reads response offset `+0x3c` into
|
||
|
|
`_SetUpProgress` (`0xd4dbcf0`). The protobuf getter for `FNIAAEAFGDE` reads that
|
||
|
|
same offset (`0x1fc3dcd0`). Progress synchronization at `0x16c8dab0` writes the
|
||
|
|
cycle ID at `+0x18`; the actual `CurrentCycleId` getter (`0x16c8d980`) reads
|
||
|
|
`+0x18`. `HNOCFELOAFJ` supplies the completed-level collection.
|
||
|
|
|
||
|
|
The root implementation responds to GetData with the resource's first cycle,
|
||
|
|
without fabricated completed levels, upgrades, currency or rewards. This is
|
||
|
|
preview state, not a working cooking-run implementation. A zero cycle ID led to
|
||
|
|
the Date dialog view-model failure observed before this response existed.
|
||
|
|
|
||
|
|
## Request family
|
||
|
|
|
||
|
|
These are the actual current command-table names, paired from the live concrete
|
||
|
|
NetworkService method signatures. Numeric IDs are documentation of the current
|
||
|
|
table, not aliases to register in source.
|
||
|
|
|
||
|
|
| Operation | Request | Response | Current IDs |
|
||
|
|
|---|---|---|---|
|
||
|
|
| GetData | `MGCJKEEOPEC` | `LPLCFFGANFC` | 10215 → 10208 |
|
||
|
|
| StartLevel | `MECNLNGKDHA` | `CIDKLLMAIGP` | 10204 → 10220 |
|
||
|
|
| FinishLevel | `CBMLONMBLNE` | `PEFBGOANFHP` | 10216 → 10209 |
|
||
|
|
| UpgradeDevice | `DONCOCHMEBC` | `NLJOCMODADF` | 10207 → 10206 |
|
||
|
|
| ChangeCycle | `JLBJPLGJBFF` | `NBIBDLLLCLH` | 10213 → 10212 |
|
||
|
|
| StartLongTail | `FHJMEFOOOAB` | `PIGILFCALBA` | 10211 → 10218 |
|
||
|
|
| FinishLongTail | `CGHKNHAJBGL` | `CMHFBLDNPGB` | 10219 → 10210 |
|
||
|
|
|
||
|
|
The concrete NetworkService has `OFHMHPKEECI(UInt32)` returning
|
||
|
|
`IPromise<CIDKLLMAIGP>` and `<StartLevelAsync>b__2_0(CIDKLLMAIGP)`.
|
||
|
|
`StartLevel` request carries `level_id` at tag 4. Its response additionally has
|
||
|
|
`HOGEMAHFFEF` (uint32, tag 1) and `NLMEEEKBPKO` (string, tag 2), plus retcode at
|
||
|
|
tag 12. The purpose and required values of the uint/string have **not** been
|
||
|
|
proven. A retcode-only success must not be advertised as working gameplay.
|
||
|
|
|
||
|
|
## Next bounded capture
|
||
|
|
|
||
|
|
`tools/comic_level_start_metadata.lua` is inactive outside `scripts/`. It reads
|
||
|
|
the already constructed NetworkService and LevelStartFlowService, plus the
|
||
|
|
actual Start response type obtained from the NetworkService return type. It
|
||
|
|
records at most eight methods/properties per non-battle heartbeat and invokes
|
||
|
|
no gameplay or scene methods.
|
||
|
|
|
||
|
|
After capture, resolve current-process MethodHandles through record `+8`, verify
|
||
|
|
the resulting entry lies inside the current GameAssembly, and disassemble the
|
||
|
|
StartLevel consumer and response getters. Handles from an exited Client cannot
|
||
|
|
be reused. Map the string/uint consumers before implementing a successful Start
|
||
|
|
response or persistent cooking run.
|
||
|
|
|
||
|
|
No Start/Finish/Upgrade/ChangeCycle/LongTail implementation, deployment, runtime
|
||
|
|
draw, save mutation or gameplay confirmation was performed by the entry audit.
|