From 0da17439a78d8655b78250ce572c8c27e077313e Mon Sep 17 00:00:00 2001 From: MiTHRAL Date: Fri, 28 Aug 2026 22:40:28 -0400 Subject: [PATCH] netcode-revival: force the party struct's gate bytes (Track 1) The party state machine (sub_82A1B310) cannot leave state 1 because the game's EA-Nation flag (party+417) is 0 - set at party-create from a config-string comparison (sub_82F4DA40) that never matches in the recomp. The party struct is a static object at 0x82FD9750, so the periodic live-force now also sets +417 (EA-Nation flag), +421 (online flag) and +423 (EA connected marker). With byte417=1 the machine advances through the signin gate, XNetConnect and XNetGetConnectStatus==2 to the 'session ready' state, which unlocks session advertise/join (the actual netcode path). --- src/system/xnet_transport.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/system/xnet_transport.cpp b/src/system/xnet_transport.cpp index 1bb3ffa..1c8486a 100644 --- a/src/system/xnet_transport.cpp +++ b/src/system/xnet_transport.cpp @@ -198,6 +198,16 @@ void XNetTransport::ForceLiveFlag() { }; force_byte(0x8308396C, "0x8308396C (live user exists)"); force_byte(0x83084690, "0x83084690 (online access)"); + // The party state machine (sub_82A1B310) can't leave state 1 unless the + // game's EA-Nation flag (party+417) is 1 - it is set at party-create from + // a config-string comparison that never matches in the recomp. The party + // struct is a static object at 0x82FD9750, so force its gate bytes: + // +417 = EA-Nation enabled (state 1 gate) + // +421 = online flag (set by the EA resolver alongside the online IP) + // +423 = 'EA connected' marker (state 6 target, unlocks advertise/join) + force_byte(0x82FD98F1, "party+417 (EA-Nation flag)"); + force_byte(0x82FD98F5, "party+421 (online flag)"); + force_byte(0x82FD98F7, "party+423 (EA connected)"); // Broadcast the Live signin-changed event a few times at startup so the // game's sign-in manager runs and designates the profile as the live user // (it only does this when it processes a real signin notification, which