From c384c20558da7c02a398ecb90f338d26d62cbcf5 Mon Sep 17 00:00:00 2001 From: Nico Meister Date: Mon, 19 Oct 2026 19:06:56 +0200 Subject: [PATCH] =?UTF-8?q?v2.9.9:=20D8A0C4E5=20beim=20Wechsel=20zu=20Nint?= =?UTF-8?q?endo=20(FRD=5FLogout=20vor=20dem=20Abmelden,=20MBMNET-ID=20erst?= =?UTF-8?q?=20danach=20l=C3=B6sen)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- Makefile | 2 +- source/frdswitch.c | 6 ++++-- source/main.c | 4 +++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 0616c94..aba979e 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,7 @@ SOURCES := source INCLUDES := source # Bei jedem Release erhöhen - das Auto-Update vergleicht diese Nummer -VERSION := 2.9.8 +VERSION := 2.9.9 APP_TITLE := MBMNET APP_DESCRIPTION := Dein eigenes 3DS-Netzwerk diff --git a/source/frdswitch.c b/source/frdswitch.c index de2cc6c..a5c4d34 100644 --- a/source/frdswitch.c +++ b/source/frdswitch.c @@ -88,6 +88,7 @@ bool frdswitch_slot_linked(u8 friendAccount, char *id, size_t len) static Result unload(void) { note("Konto (act) abmelden", ACTA_UnloadConsoleAccount()); // ohne geladenes Konto: "ungültiger Zustand" + note("Freunde-Dienst abmelden", FRD_Logout()); // laufende Anmeldung beenden (sonst "ungültiger Zustand") Result rc = step("Offline gehen (exklusiv)", NDMU_EnterExclusiveState(NDM_EXCLUSIVE_STATE_LOCAL_COMMUNICATIONS)); if (R_FAILED(rc)) return rc; @@ -97,7 +98,8 @@ static Result unload(void) svcSleepThread(100 * 1000 * 1000); } // Hängt der Freunde-Dienst noch an einer Anfrage, kurz wiederholen - for (int attempt = 1; attempt <= 20; attempt++) { + for (int attempt = 1; attempt <= 40; attempt++) { + if (attempt == 21) note("Freunde-Dienst erneut abmelden", FRD_Logout()); rc = FRDA_UnloadLocalAccount(); if (R_SUCCEEDED(rc)) { if (logf) fprintf(logf, "%-36s %08lX (Versuch %d)\n", "Freundekonto abmelden", (unsigned long)rc, attempt); @@ -105,7 +107,7 @@ static Result unload(void) } svcSleepThread(500 * 1000 * 1000); } - return step("Freundekonto abmelden (10 s)", rc); + return step("Freundekonto abmelden (20 s)", rc); } // Freundekonto laden. "Schon geladen" (z. B. direkt nach dem Anlegen) zählt als Erfolg. diff --git a/source/main.c b/source/main.c index f46fbde..b80e574 100644 --- a/source/main.c +++ b/source/main.c @@ -442,9 +442,11 @@ static bool disable(bool confirmed, char *msg, size_t msglen) // anmelden). Den Namen merken, für den Hinweis auf den Zweitnamen. char id[20] = ""; if (frdswitch_current() == FRIEND_ACCOUNT_MBMNET && nnid_linked(id, sizeof(id))) remember_mbmnet_id(id); - bool freed = free_mbmnet_name(note, sizeof(note)); bool created = false; if (frdswitch_current() != FRIEND_ACCOUNT_NINTENDO && !frdswitch_to(FRIEND_ACCOUNT_NINTENDO, &created, msg, msglen)) return false; + // Erst jetzt (MBMNET-Konto nicht mehr geladen) den Namen für Pretendo freigeben. Vorher gelöst, meldete + // sich der Freunde-Dienst neu an und ließ sich nicht abmelden (D8A0C4E5). + bool freed = free_mbmnet_name(note, sizeof(note)); patch_disable(detail, sizeof(detail)); spotpass_unregister(); if (freed) snprintf(msg, msglen, "Nintendo aktiv! Der 3DS startet neu.\n%s", note);