# FIFA 23 PC Startup Flow (Offline / Proton) Observed via FLE log, hook log, and file inspection on 2026-06-26. ## Launch chain ``` umu-run / Steam → FIFA23.exe (via Proton/Wine) │ ├─ DLL load order (before entry point) │ ntdll.dll, kernel32.dll, ws2_32.dll … │ version.dll ← our hook DLL slot (loads here) │ FIFALiveEditor.DLL ← injected by FLE launcher after ~100 ms │ ├─ anadius / LSX emulator (anadius64.dll) │ Fakes EA App / Origin session │ Reads HKLM\SOFTWARE\Wow6432Node\Origin\ClientPath │ Writes AppData\Local\anadius\LSX emu\achievement-*.xml │ Provides fake PersonaId=1144668899 / UserId=1000200030000 │ ├─ EA Anti-Cheat (EAAntiCheat.GameServiceLauncher.exe) │ Spawns as child; checks EAAntiCheat.cfg │ Not active in offline/cracked builds (FakeEAACLauncher present) │ └─ FIFA23.exe entry point Frostbite engine init (BuildDate 2023-07-05, changelist 5417699) Reads Data\initfs_Win32 ← Frostbite package manifest Reads Data\layout.toc ← file-system layout Reads Patch\initfs_Win32 ← patches on top of base Reads Documents\FIFA 23\fifasetup.ini ← display settings Reads Data\locale.ini ← language table Reads Data\db_meta.xml (via FLE) ← DB schema for all tables ``` ## Phase timing (observed, single machine) | Phase | Time after launch | Trigger | |------------------------------|-------------------|----------------------------------| | DLL load + FLE injection | 0 – 0.3 s | OS loader | | Engine + DirectX init | 0.3 – 5 s | FIFA23 entry point | | "Press any key" splash | ~5 s | First rendered frame | | Main menu | ~25 s | After key press | | FUT mode entry (attempted) | user-driven | User selects FUT tile | | Network calls to EA services | at FUT entry | DirtySDK / EAWebKit | ## Files read at startup (observed) | File | Format | Purpose | |------|--------|---------| | `Data/initfs_Win32` | Frostbite pkg | Base asset manifest | | `Data/layout.toc` | Frostbite TOC | File layout index | | `Patch/initfs_Win32` | Frostbite pkg | Patch layer | | `Data/locale.ini` | INI | String localisation | | `Data/db_meta.xml` | XML | DB schema (loaded by FLE) | | `Data/id_map.json` | JSON | Player/team ID→name map | | `Data/char_conv.json` | JSON | Character conversion table | | `Documents/FIFA 23/fifasetup.ini` | INI | Display/audio settings | | `AppData/Local/Temp/FIFA 23/_replay0.bin` | binary | Replay buffer | | `anadius.cfg` | VDF | Fake EA persona config | | `AppData/Local/anadius/LSX emu/achievement-*.xml` | XML | Achievement state | ## Files written during a session (observed) | File | When written | Content | |------|-------------|---------| | `Documents/FIFA 23/settings/Settings*` | Main menu reached | FBCHUNKS — controller/display prefs | | `Documents/FIFA 23/settings/ProfileOptions` | Profile load | FBCHUNKS — 1.5 MB profile blob | | `Documents/FIFA 23/filesystemcache/survey.state` | Startup | Empty state file | | `Documents/FIFA 23/filesystemcache/atlPlayTimeJson/playtime_*.json` | Ongoing | Playtime tracking | | `FIFA 23 Live Editor/config.json` | FLE ready | FLE settings (rewritten each session) | | `Logs/log_DD-MM-YYYY.txt` | Throughout | FLE debug log | ## Save file formats ### FBCHUNKS (Frostbite chunk container) - Magic: `46 42 43 48 55 4E 4B 53` (`FBCHUNKS`) - Byte 8: version (01 seen) - Offset 0x12: null-terminated label string (e.g. "Personal Settings 1", "Career - Player Progress 1") - Remainder: compressed/binary chunk data — no public spec; requires Frostbite tooling to fully parse - Tools: [Frosty Tool Suite](https://github.com/CadeEvs/FrostyToolSuite) can read/write these ### fifasetup.ini - Plain `KEY = VALUE` ini, fully human-readable - Safe to edit (display resolution, locale, vsync) ## Network calls at FUT entry (observed with iptables redirect) Traffic pattern captured before changing strategy: - Multiple TLS connections to port 443 (destination: EA servers, resolved as various EA IPs) - TLS 1.3, AES-256-GCM (DirtySDK's copy of ProtoSSL, inline in FIFA23.exe) - No SNI sent (DirtySDK does not set `server_name` extension) - Connections originate from Wine/Proton network stack via Linux kernel TCP Specific EA hostnames used (from openfut-bridge captures, not decoded from TLS): - `fut.ea.com` (FUT API) - `accounts.ea.com` (auth) - `gateway.ea.com` (entitlements) - `pin-river.data.ea.com` (telemetry) ## Key FLE Lua API hooks FLE injects `FIFALiveEditor.DLL` and exposes a Lua engine that can: - Read any in-memory DB table via `GetDBTableRows(tableName)` - Write any cell via `EditDBTableField` - Query career mode state via `IsInCM()` - Get player/team names via `GetPlayerName`, `GetTeamName` This is the primary safe integration path (see `fut-integration-options.md`).