From 23bf1abca8989b9fef7748052d1f548a7e394ad3 Mon Sep 17 00:00:00 2001 From: Nico Meister Date: Mon, 19 Oct 2026 19:00:18 +0200 Subject: [PATCH] =?UTF-8?q?v2.9.8:=20Soft-Reboot=20=C3=BCber=20ns:s=20(wie?= =?UTF-8?q?=20Nimbus)=20statt=20Hardware-Reset=20beim=20Umschalten?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- Makefile | 2 +- cia.rsf | 4 ++-- source/main.c | 12 +++++++++--- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 55e72f5..0616c94 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.7 +VERSION := 2.9.8 APP_TITLE := MBMNET APP_DESCRIPTION := Dein eigenes 3DS-Netzwerk diff --git a/cia.rsf b/cia.rsf index 7c4f7a5..4222223 100644 --- a/cia.rsf +++ b/cia.rsf @@ -198,7 +198,7 @@ AccessControlInfo: QueryProcessMemory: 125 # Dienste: u. a. am:net (Updates installieren), http:C (Updates laden), fs:USER, ptm:sysm (Neustart), - # frd:a (Freundekonto umschalten), pm:app (FTP-Modul starten/beenden) + # frd:a (Freundekonto umschalten), pm:app (FTP-Modul starten/beenden), ns:s (schneller Neustart) ServiceAccessControl: - APT:U - ac:u @@ -222,7 +222,7 @@ AccessControlInfo: - ir:rst - ir:u - ir:USER - - mic:u + - ns:s - ndm:u - news:s - nwm::EXT diff --git a/source/main.c b/source/main.c index 2f7ae7c..f46fbde 100644 --- a/source/main.c +++ b/source/main.c @@ -544,6 +544,7 @@ int main(int argc, char **argv) UpdateState lastUpd = UPD_IDLE; int restartIn = 0; // Frames bis zum automatischen Neustart der App nach einem Update int rebootIn = 0; // Frames bis zum Neustart des 3DS nach dem Umschalten + bool softReboot = false; // Patches alter Versionen lagen an einer Stelle, an der Luma sie nicht lädt if (patch_migrate()) @@ -663,9 +664,9 @@ int main(int argc, char **argv) spotpassTestFrames = -1; // Neustart erst, wenn die Freunde-Anmeldung durch ist (höchstens ein paar Sekunden) - if (rebootIn > 0 && --rebootIn == 0 && R_FAILED(APT_HardwareResetAsync())) { - snprintf(msg, sizeof(msg), "Neustart fehlgeschlagen.\nBitte den 3DS von Hand neu starten."); - } + // Schneller Neustart wie bei Nimbus (Soft-Reboot über ns:s, ohne boot9strap/Luma-Splash): erst die App + // sauber beenden, dann neu starten (unten nach dem Aufräumen) + if (rebootIn > 0 && --rebootIn == 0) { softReboot = true; break; } if (restartIn > 0 && --restartIn == 0) { if (relaunch_prepare(selfPath)) break; @@ -697,6 +698,11 @@ int main(int argc, char **argv) } clean = admin_finish() && clean; clean = update_finish() && clean; + if (softReboot) { + Result rc = nsInit(); + if (R_SUCCEEDED(rc)) rc = NS_RebootSystem(); // kehrt bei Erfolg nicht zurück + if (R_FAILED(rc)) APT_HardwareResetAsync(); // Notlösung: kompletter Neustart + } if (!clean) { // Hart beenden, ohne Speicher freizugeben (der Kernel räumt alles auf) aptExit();