netcode-revival: broadcast Live signin-changed so the game's sign-in manager runs
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 game only sets its internal 'live user exists' caches (14700/18064) when its sign-in manager processes a real Live signin notification (code 0x80000001) - which never happens without a Live backend. Broadcast XN_LIVE_SIGNINCHANGED (0x80000001) with param (state<<8)|user = 0x200 a few times at startup (from the periodic live-force) and on XamShowSigninUI, so the manager designates the profile as the live user and the Party Play / party flow gates open.
This commit is contained in:
parent
6db6674892
commit
05425a39f0
2 changed files with 15 additions and 0 deletions
|
|
@ -558,6 +558,10 @@ u32 XamShowSigninUI_entry(u32 unk, u32 unk_mask) {
|
|||
// profile has signed in; titles observe the UI notification and then continue
|
||||
// along their signed-out path.
|
||||
kernel_state->BroadcastNotification(0x00000009, 1);
|
||||
// netcode-revival: also report the sign-in as COMPLETED (Live) so the
|
||||
// game's sign-in manager designates the live user; otherwise it waits for
|
||||
// a real Live session that never comes.
|
||||
kernel_state->BroadcastNotification(0x80000001, 0x200);
|
||||
++xam_dialogs_shown_;
|
||||
|
||||
const uint32_t close_delay_ms = REXCVAR_GET(xam_signin_ui_auto_close_ms);
|
||||
|
|
|
|||
|
|
@ -198,6 +198,17 @@ void XNetTransport::ForceLiveFlag() {
|
|||
};
|
||||
force_byte(0x8308396C, "0x8308396C (live user exists)");
|
||||
force_byte(0x83084690, "0x83084690 (online access)");
|
||||
// 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
|
||||
// never happens with no Live). Param = (signin_state<<8)|user_index.
|
||||
static uint32_t signin_broadcasts = 0;
|
||||
if (signin_broadcasts < 6) {
|
||||
REX_KERNEL_STATE()->BroadcastNotification(0x80000001, 0x200);
|
||||
++signin_broadcasts;
|
||||
REXLOG_INFO("xnet trace: broadcast Live signin-changed (0x80000001) #{}/6",
|
||||
signin_broadcasts);
|
||||
}
|
||||
}
|
||||
|
||||
XNetTransport::GateStatus XNetTransport::GetGateStatus() const {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue