-
Notifications
You must be signed in to change notification settings - Fork 0
Networking and Save Formats
LordBlacksun edited this page Sep 9, 2026
·
1 revision
All [verified] by reading the decompilation.
| Addr | Role |
|---|---|
0x004B5C50 |
DPInit — CoCreateInstance(DirectPlay) + address object; provider switch DAT_005DB8D8: 0 = IPX, 2 = TCP/IP (IP + port), 3 = modem/serial (baud table 9600…256000). |
0x004B6A80 |
DPSYS handler — message dwType 0x03/0x05/0x21/0x31/0x101/0x103/0x109 = create / destroy / delete player, SESSION-LOST, HOST, SET-NAME, CHAT. Player tables DAT_005DB8F0 (stride 0xFC) and DAT_005DB650 (stride 0x3C); 0x20-byte names. |
0x004B51D0 |
DPERR (0x8877xxxx) → string decoder. |
0x004BC390 |
Winsock-2.0 capability check ("The game requires Winsock 2.0"). |
Source modules: lancer\game\DPBits.cpp, DPSession.cpp, deathmatch.cpp. Lobby support targets
the MSN Gaming Zone ("started by the zone").
Saves are standard EA-IFF: each chunk is { FOURCC tag, u32 size } with word-aligned bodies.
-
'FORM'=0x4D524F46; top-level form'SAVE'=0x45564153; mission chunk'MISS'=0x5353494D. - Path:
saves\%sGAME%02d.IFF(the%sprefix is the active profile name). - Reader stack:
FUN_00490930/FUN_004909D0/FUN_00490C40/FUN_0045E8D0. - Writer:
FUN_00475650(gameflow.cpp,0x1400buffer). - Loader
FUN_00475430walks a{ FOURCC, dest, size }dispatch table atPTR_DAT_00500A24.
-
profile.bin= a single0xD0(208) byte blob (DAT_00562CF8;FUN_004751B0/FUN_00475390/FUN_004753F0). It leads with the profile name (DAT_00562CFC), which becomes the%sprefix for save files. - Pilot files
pilots\%s.fm8— referenced byFUN_00453DE0(the mission-end killer-record writer).
Key/joystick binds live in [KeyConfig]/[JoyConfig] (defaults in sdefault.txt); audio in
[Sound]; display in [Device] + dmodes.bin. See
Audio, Video & Input and
Renderer, Display & Widescreen.
[open] The byte-level layout inside the IFF 'MISS' chunk and the 0xD0 profile blob were not
fully field-mapped; that needs diffing real save/profile files against the field accessors.