netcode-revival: force the party struct's gate bytes (Track 1)
Some checks are pending
Lint & Format Check / Format Check (push) Waiting to run
Some checks are pending
Lint & Format Check / Format Check (push) Waiting to run
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).
This commit is contained in:
parent
05425a39f0
commit
0da17439a7
1 changed files with 10 additions and 0 deletions
|
|
@ -198,6 +198,16 @@ void XNetTransport::ForceLiveFlag() {
|
||||||
};
|
};
|
||||||
force_byte(0x8308396C, "0x8308396C (live user exists)");
|
force_byte(0x8308396C, "0x8308396C (live user exists)");
|
||||||
force_byte(0x83084690, "0x83084690 (online access)");
|
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
|
// 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
|
// 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
|
// (it only does this when it processes a real signin notification, which
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue