Find a file
shinji 6ab45b2943 blaze: synthesize lobby NotifyGameSetup from session (coherent two-game burst)
Extend the dynamic burst to the LOBBY/menu game (KNOWN_GOOD_0014, CreateOrJoinGame)
so the menu peer and mission peer share ONE coherent session identity - the crux of
the singleton-teardown test. Same BLAZE_DYNAMIC_MISSION_BURST flag (default OFF); the
static _patch_known_good_payload path is unchanged when off.

- build_lobby_game_setup: full lobby GAME{} + PROS[] from GAMEOBJ + lobby constants
  (GTYP=frostbite_multiplayer, DHST=all-zeros/self-hosted, MCAP=29, top-level DLSC),
  reusing the mission field writers.
- Coherence: lobby+mission derive PHST/CONG/HPID/HSES/persona from the same GAMEOBJ;
  lobby DHST=0 cannot collide with the mission's UsidCONG+1 dedicated host.
- ProtoTunnel: lobby UUIDs feed no key derivation (self-hosted, no menu tunnel), so
  lobby mints fresh uuid4s and deliberately does NOT publish DYNAMIC_MISSION_NGS_HEX
  (that would corrupt the mission tunnel key).
- Round-trip test tests/test_dynamic_lobby_burst.py: build-with-captured-values ==
  KNOWN_GOOD_0014 byte-for-byte (1157 B). Mission round-trip still passes.
- Hand-encoded the 56-byte PGSR blob length (BlazeFuncs.writeBlob mis-encodes lengths
  in [50,63]: uses <0x32 single-byte threshold instead of <0x40).
2026-09-28 16:20:26 +02:00
Components_Client blaze: synthesize lobby NotifyGameSetup from session (coherent two-game burst) 2026-09-28 16:20:26 +02:00
crt overnight 2026-05-11: BIGS+JoinGame trigger chain decoded, sync burst fix, realudp fork 2026-05-11 10:08:24 +02:00
Data overnight 2026-05-11: BIGS+JoinGame trigger chain decoded, sync burst fix, realudp fork 2026-05-11 10:08:24 +02:00
docs Replace non-ASCII typography with ASCII throughout 2026-09-19 10:51:06 +02:00
tests blaze: synthesize lobby NotifyGameSetup from session (coherent two-game burst) 2026-09-28 16:20:26 +02:00
tools Replace non-ASCII typography with ASCII throughout 2026-09-19 10:51:06 +02:00
Utils blaze: synthesize mission NotifyGameSetup/PlayerJoinCompleted from session (BLAZE_DYNAMIC_MISSION_BURST) 2026-09-28 15:36:35 +02:00
.gitignore Replace non-ASCII typography with ASCII throughout 2026-09-19 10:51:06 +02:00
.loadlevel_attempt.txt overnight 2026-05-11: BIGS+JoinGame trigger chain decoded, sync burst fix, realudp fork 2026-05-11 10:08:24 +02:00
.tinyevent_attempt.txt overnight 2026-05-11: BIGS+JoinGame trigger chain decoded, sync burst fix, realudp fork 2026-05-11 10:08:24 +02:00
_test_end_to_end_with_gameserver_udp.py Squash-merge worktree-xbox-decomp-pipeline into main (2026-08-24) 2026-08-24 22:35:05 +02:00
_test_sessionfeed_smoke.py Squash-merge worktree-xbox-decomp-pipeline into main (2026-08-24) 2026-08-24 22:35:05 +02:00
BlazeMain_Client.py overnight 2026-05-11: BIGS+JoinGame trigger chain decoded, sync burst fix, realudp fork 2026-05-11 10:08:24 +02:00
frostbite_protocol.py removed fifa 2026-09-25 15:18:15 +02:00
Https.py overnight 2026-05-11: BIGS+JoinGame trigger chain decoded, sync burst fix, realudp fork 2026-05-11 10:08:24 +02:00
Init.bat overnight 2026-05-11: BIGS+JoinGame trigger chain decoded, sync burst fix, realudp fork 2026-05-11 10:08:24 +02:00
Init.py blaze: synthesize mission NotifyGameSetup/PlayerJoinCompleted from session (BLAZE_DYNAMIC_MISSION_BURST) 2026-09-28 15:36:35 +02:00
mission_fsm.py removed fifa 2026-09-25 15:18:33 +02:00
probe_protocol.py removed fifa 2026-09-25 15:18:53 +02:00
README.md Replace non-ASCII typography with ASCII throughout 2026-09-19 10:51:06 +02:00
reference_replay_bodies.py overnight 2026-05-11: BIGS+JoinGame trigger chain decoded, sync burst fix, realudp fork 2026-05-11 10:08:24 +02:00
replay_cid56_cid207.py Replace non-ASCII typography with ASCII throughout 2026-09-19 10:51:06 +02:00
SessionFeed.py Squash-merge worktree-xbox-decomp-pipeline into main (2026-08-24) 2026-08-24 22:35:05 +02:00
smoke_intra_tunnel_probe.py backup: intra-tunnel probe responder + Fix-A sockaddr_in + DHST/HNET/PNET patches 2026-05-14 15:19:09 +02:00
smoke_mission_fsm.py removed fifa 2026-09-25 15:19:11 +02:00
test_destruction_encoder.py Add StreamManagerDestruction encoder (outer bitmap slot 3, 18 bits) 2026-05-16 23:36:17 +02:00
test_loadlevel_roundtrip.py Replace non-ASCII typography with ASCII throughout 2026-09-19 10:51:06 +02:00

blaze_realudp_fork

Fork of blaze_test_share_experimental/ that uses real UDP only - no DLL inject bridge.

What is different from the main branch

Item Main branch This fork
Port 21123 (PlaintextBridgeServer) Active Disabled (commented out in Init.py)
Port 21124 (ProbeBridgeServer) Active Disabled (commented out in Init.py)
Port 21122 (MissionUDPServer) Secondary / fallback Primary path
DLL requirement AnthemLogger.dll with bridge::Start() AnthemLogger_realudp.dll with bridge DISABLED
transport.write() replies Injected via SocketControl('push') Sent directly back to client source addr

The assumption is that BRIDGE_DISABLE_HMAC in the companion DLL has already clobbed uHmacType=0 on the ProtoTunnel ref, so the wire is effectively plaintext and MissionUDPServer's transport.write() replies are accepted by the game's ProtoTunnel layer.

How to run

Stop the main branch Blaze first. Then:

cd code/blaze_realudp_fork
C:\Python27\python.exe -B Init.py

Environment: set DATABASE_URL the same as the main API server.

Known gotchas

  1. Source address must match what Blaze advertised. The game connects to the IP:port from NotifyGameSetup (EXIP/INIP). If Blaze advertised 127.0.0.1:21122, the game sends from 127.0.0.1:<ephemeral> and transport.write(addr) will reply correctly. If Blaze advertised a non-loopback IP, the game source addr will differ.

  2. Probe handshake on 21122. With the ProbeBridgeServer gone, bit-packed 0x8101 probes arrive directly on 21122. MissionUDPServer already has PROBE_REPLY_MODE = "bitflip" and _dispatch_handshake_probe - this should handle them without needing a separate bridge port.

  3. RC4 must be OFF. This fork is predicated on the DLL having clobbered uHmacType=0 (see AnthemLogger_realudp). If RC4 body encryption is somehow still active the wire bytes will be unreadable.

  4. Log files. Blaze logs to blaze.log / blaze.log.err in the fork dir, separate from the main branch logs.