fifa17-recon: REFUTED -- the CardsDb map is not empty offline
CARD_SYSTEM.md has claimed since it was written that offline the CardsDb map is EMPTY,
every lookup misses, and the view-model reads every rendered field from the resolved
record and NEVER from our item JSON. A live pack open falsifies both halves.
One bronze pack, five cards. Two rendered as real players with names, club badges and
national flags. Three rendered blank: rating 50, position RWB, every attribute 1. Our
pool contains no rating 50, no RWB and no all-ones attributes, so the blank is the
client default.
The two that resolved match our item JSON field for field:
(232517, 62, RB, nation 36, league 19, team 175, [72,44,58,60,62,61])
-> SILVA, 62 RB, Wolfsburg badge, Norway flag, 72 PAC 44 SHO 58 PAS 60 DRI 62 DEF
(235066, 60, GK, nation 34, league 31, team 48, [62,63,33,61,17,62])
-> NOWAK, 60 GK, 62/61 63/17 33/62
Those attribute numbers were invented by hand this afternoon. They cannot have come
from a database.
So: stats come from our JSON, name/badge/flag come from the client keyed by assetId,
and an assetId the client does not know collapses the WHOLE card to the blank, which
is why a bad id looks like a rendering failure rather than a lookup failure.
THE CONSEQUENCE IS THAT THE PLANNED WORK IS UNNECESSARY. This document recommended
populating the map by driving the insert, hand-building a red-black tree node, or
patching the resolve miss path, all of which write to a live process. None of it is
needed. The rule is: use asset ids that exist in the client database. fut_cards.py has
18 verified ids and 61 structural placeholders, and the placeholders are the blanks.
The remaining work is a DATA problem, not a code-injection problem.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VUT92pz6RWKih9dSr8ZpxW
This commit is contained in:
@@ -139,3 +139,58 @@ and validates A. No such tool exists yet.
|
|||||||
- `fifadrive.sh` (screen capture) + `vgamepad.py` (virtual pad) for headless
|
- `fifadrive.sh` (screen capture) + `vgamepad.py` (virtual pad) for headless
|
||||||
drive/observe — note keyboard XTEST does NOT reach FIFA; the gamepad is unverified
|
drive/observe — note keyboard XTEST does NOT reach FIFA; the gamepad is unverified
|
||||||
in-game.
|
in-game.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## REFUTED 2026-08-04: the CardsDb map is NOT empty offline
|
||||||
|
|
||||||
|
This document has claimed since it was written that "**Offline that map is EMPTY**, so
|
||||||
|
every lookup misses and a default blank record is emitted -> generic card", and that
|
||||||
|
the view-model reads every rendered field from the resolved record and "NEVER from our
|
||||||
|
item JSON". A live pack open falsifies both halves.
|
||||||
|
|
||||||
|
### The observation
|
||||||
|
|
||||||
|
One bronze pack, five cards. Two rendered as real players with names, club badges and
|
||||||
|
national flags. Three rendered as blanks: rating 50, position RWB, every attribute 1,
|
||||||
|
no name. Nothing in our pool has rating 50, position RWB or all-ones attributes, so the
|
||||||
|
blank is the client's default record, exactly as this document describes.
|
||||||
|
|
||||||
|
The two that resolved match OUR ITEM JSON field for field:
|
||||||
|
|
||||||
|
| we sent | screen showed |
|
||||||
|
|---|---|
|
||||||
|
| `(232517, 62, RB, nation 36, league 19, team 175, [72,44,58,60,62,61])` | SILVA, 62 RB, Wolfsburg badge, Norway flag, 72 PAC / 44 SHO / 58 PAS / 60 DRI / 62 DEF / 61 PHY |
|
||||||
|
| `(235066, 60, GK, nation 34, league 31, team 48, [62,63,33,61,17,62])` | NOWAK, 60 GK, 62/61, 63/17, 33/62 |
|
||||||
|
|
||||||
|
Those attribute numbers were invented by hand. They cannot have come from a database.
|
||||||
|
|
||||||
|
### What this means
|
||||||
|
|
||||||
|
- The map HAS entries offline. Some asset ids resolve.
|
||||||
|
- Rating, position, nation, league, team and the six attributes come from **our item
|
||||||
|
JSON** for a card that resolves.
|
||||||
|
- Name, club badge and national flag come from the **client's own data**, keyed by
|
||||||
|
assetId.
|
||||||
|
- When the assetId is NOT in the client's data, the whole card collapses to the blank
|
||||||
|
default, which is why a bad id looks like a rendering failure rather than a lookup
|
||||||
|
failure.
|
||||||
|
|
||||||
|
### The consequence, which is much cheaper than what this document proposed
|
||||||
|
|
||||||
|
The recommended plan here was to populate the client's map by driving its insert, hand
|
||||||
|
building a red-black tree node, or patching the resolve miss-path, all of which write
|
||||||
|
to a live process. **None of that is needed to get real cards.** The rule is simply:
|
||||||
|
|
||||||
|
> Use asset ids that exist in the client's database. Valid id gives a real card.
|
||||||
|
> Invalid id gives the blank.
|
||||||
|
|
||||||
|
`fut_cards.py` currently carries 18 verified ids and 61 structural placeholders, and
|
||||||
|
the placeholders are what produce the blanks. Two of them (232517, 235066) happen to be
|
||||||
|
real, which is why the pack was a mix. The remaining work is therefore a DATA problem,
|
||||||
|
getting the real id list out of `dbdata.dll`, and not a code-injection problem.
|
||||||
|
|
||||||
|
`TODO/CONFIRM`: whether a resolved card's rating truly comes from our JSON or whether
|
||||||
|
the client's record happens to agree. The attributes settle it (they were invented) but
|
||||||
|
rating specifically has not been isolated. Send a deliberately wrong rating for a known
|
||||||
|
good id and look.
|
||||||
|
|||||||
Reference in New Issue
Block a user