v3.0.2: BOSS-Patch für die Policy-Liste (SpotPass im Hintergrund auch nach einem Neustart)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Nico Meister
2026-10-26 20:09:54 +01:00
co-authored by Claude Opus 5.5
parent 29f2c556c2
commit 4b07ddf3ae
2 changed files with 11 additions and 3 deletions
+1 -1
View File
@@ -17,7 +17,7 @@ SOURCES := source
INCLUDES := source INCLUDES := source
# Bei jedem Release erhöhen - das Auto-Update vergleicht diese Nummer # Bei jedem Release erhöhen - das Auto-Update vergleicht diese Nummer
VERSION := 3.0.1 VERSION := 3.0.2
APP_TITLE := MBMNET APP_TITLE := MBMNET
APP_DESCRIPTION := Dein eigenes 3DS-Netzwerk APP_DESCRIPTION := Dein eigenes 3DS-Netzwerk
+10 -2
View File
@@ -63,6 +63,7 @@ typedef struct {
const char *label; // Name für Meldungen const char *label; // Name für Meldungen
Rule rules[MAX_RULES]; Rule rules[MAX_RULES];
bool optional; // Anwendung statt Systemmodul: nur patchen, wenn installiert und Adresse gefunden bool optional; // Anwendung statt Systemmodul: nur patchen, wenn installiert und Adresse gefunden
bool soft; // Systemmodul, aber verzichtbar: Adresse nicht gefunden = ohne diesen Patch weiter
} Target; } Target;
#define TITLES_DIR "sdmc:/luma/titles" #define TITLES_DIR "sdmc:/luma/titles"
@@ -79,6 +80,13 @@ static const Target targets[] = {
{ RULE_EXACT, "https://%s%saccount.nintendo.net/v%u/api/", "/v1/api/" }, { RULE_EXACT, "https://%s%saccount.nintendo.net/v%u/api/", "/v1/api/" },
{ RULE_PREFIX, "https://account.nintendo.net" }, { RULE_PREFIX, "https://account.nintendo.net" },
} }, } },
// SpotPass (BOSS): holt vor jedem Abruf die Policy-Liste von nppl.c.app.nintendowifi.net (abgeschaltet).
// Die App stellt die Adresse zwar zur Laufzeit um (boss:P SetPolicyListUrl), nach einem Neustart gilt
// aber wieder Nintendos - dann scheitern alle Abrufe im Hintergrund, bis man die App öffnet. Der Patch
// macht die MBMNET-Adresse dauerhaft. Verzichtbar: Fehlt die Adresse im Modul, läuft alles andere weiter.
{ 0x0004013000003402ULL, SYSMODULE_DIR, "SpotPass", {
{ RULE_PREFIX, "https://nppl.c.app.nintendowifi.net" },
}, false, true },
// Miiverse (JPN, USA, EUR): fragt zuerst den Discovery-Server, wohin es geht, und lädt dann seine Seiten // Miiverse (JPN, USA, EUR): fragt zuerst den Discovery-Server, wohin es geht, und lädt dann seine Seiten
// per HTTPS. Gebaut wird der Patch in olvpatch.c (die Regel hier dient nur der Diagnose). Nur die // per HTTPS. Gebaut wird der Patch in olvpatch.c (die Regel hier dient nur der Diagnose). Nur die
// installierte Region wird gepatcht. Luma lädt Patches für Anwendungen aus /luma/titles/<ID>/code.ips (wie Nimbus). // installierte Region wird gepatcht. Luma lädt Patches für Anwendungen aus /luma/titles/<ID>/code.ips (wie Nimbus).
@@ -365,7 +373,7 @@ static bool build_patch(const Target *t, const char *server, Patch *p, char *msg
} }
free(code); free(code);
if (p->count == 0 && t->optional) return false; if (p->count == 0 && (t->optional || t->soft)) return false;
if (p->count == 0) { if (p->count == 0) {
char diag[64]; char diag[64];
patch_diagnose(diag, sizeof(diag)); patch_diagnose(diag, sizeof(diag));
@@ -540,7 +548,7 @@ bool patch_enable(const char *server, bool *changed, char *msg, size_t msglen)
if (ipsLen[i]) continue; if (ipsLen[i]) continue;
static Patch patch; static Patch patch;
if (!build_patch(&targets[i], server, &patch, msg, msglen)) { if (!build_patch(&targets[i], server, &patch, msg, msglen)) {
if (targets[i].optional) { ipsLen[i] = 0; continue; } // nicht installiert: auslassen if (targets[i].optional || targets[i].soft) { ipsLen[i] = 0; msg[0] = 0; continue; } // auslassen
return false; return false;
} }
ipsLen[i] = build_ips(&patch, ips[i], IPS_CAP); ipsLen[i] = build_ips(&patch, ips[i], IPS_CAP);