Home Homebrew Rilasciato JKSV 25.08.2025

[Scena Switch] Rilasciato JKSV 25.08.2025

216
0

Poco più di un anno è trascorso dall’ultimo aggiornamento di JKSV, l’utility per la gestione dei salvataggi su console Nintendo Switch ispirata al più antico JKSM del 3DS.

L’attesa è stata ripagata con un sorprendente colpo di scena: l’intera applicazione è stata riscritta da zero, preservando solo l’anima del progetto ma rivoluzionandone il cuore.

JKSV ora si presenta come un software completamente diverso sotto la superficie. Ogni riga di codice è stata ripensata con attenzione: l’utilizzo del C++ moderno ha introdotto polimorfismo, smart pointers, contenitori STL e RAII, eliminando variabili globali e memoria gestita manualmente. Il risultato è un codice più stabile, leggibile e meno incline a perdite di dati o crash.

L’avvio è decisamente più rapido grazie a un sistema di cache dei titoli che aggira i rallentamenti causati dalle chiamate NsGetApplicationControlData nelle versioni più recenti del firmware.

JKSV è così in grado di verificare automaticamente la cache e aggiornarla quando nota nuovi titoli, senza richiedere interventi manuali.

Anche il sistema di gestione dello storage remoto è stato rifondato. WebDav, ad esempio, è ora capace di recuperare e processare ricorsivamente le directory all’avvio, senza più pause nell’interfaccia quando il server risponde lentamente.

La compatibilità è migliorata grazie ad un approccio “namespace agnostic” nella lettura degli XML, più pulito e veloce.

Google Drive ha ricevuto una profonda revisione: ora supporta i nomi completi in UTF-8 per le cartelle, e l’autenticazione avviene con il sistema “Limited Input”, più comodo rispetto al browser interno della console.

Sotto il profilo dell’usabilità, l’interfaccia mantiene un aspetto familiare ma è stata completamente riscritta per supportare al meglio le traduzioni sin dalla progettazione, a differenza del passato dove erano state aggiunte in modo secondario.

Chi apprezza il vecchio stile troverà anche la modalità “Text Menu (JKSM)” che consente di navigare i titoli con menu testuali anziché griglie di icone.

Tra le novità pratiche spicca l’Auto-Upload: JKSV può inviare automaticamente i backup a un servizio scelto e cancellarli dalla scheda SD.

Gli utenti possono anche impostare il livello di compressione per i backup in formato ZIP, che sono ora il formato predefinito per la massima compatibilità. I file di backup includono un metadata JSON, utile per garantire una ripresa più precisa e affidabile degli stati.

Pur essendo un programma ben ritoccato, non tutto è ancora completo: la funzione “Include Device Saves with Users” non è ancora attiva, il cosiddetto “File Mode” è assente e non è possibile filtrare i percorsi da backup o cancellazioni.

Tuttavia la compatibilità con la maggior parte dei backup generati con la versione precedente rimane elevata; solo i salvataggi in formato SVI non sono più compatibili.

JKSV ora si basa su due librerie interne fondamentali. FsLib gestisce le operazioni su filesystem con controllo fine, evitando chiamate ridondanti e ottimizzando i percorsi e i log di errore.

SDLLib centralizza la gestione delle texture, manipolando le superfici SDL con smart pointer, migliorando la pulizia dell’interfaccia grafica e il rendering del testo.

Caratteristiche

  • Supporta tutti i tipi di dati di salvataggio usati su Nintendo Switch:
    • Account (Utente).
    • Sistema.
    • BCAT.
    • Dispositivo / Condiviso.
    • Temporaneo.
    • Cache.
    • Sistema BCAT.
  • Opzioni di esportazione:
    • Cartelle standard non compresse per editor.
    • ZIP per una migliore compatibilità.
    • NOTA: il formato ZIP è obbligatorio e richiesto per il backup sul cloud!
  • Tutto in una volta: JKSV può eseguire il backup di tutti i dati di salvataggio del sistema o per singoli utenti in un’unica operazione.
  • Supporto Cloud:
    • Se configurato, JKSV supporta attualmente:
    • Google Drive.
    • WebDav.
    • JKSV può essere configurato per caricare automaticamente i backup.
  • Creazione dati di salvataggio:
    • JKSV può creare dati di salvataggio per qualsiasi titolo sul sistema senza dover avviare il gioco.
    • Può creare i dati di salvataggio per tutti i titoli presenti sul sistema in una volta sola per un singolo utente.
  • Supporto file SVI:
    • Importa e crea dati di salvataggio per titoli non installati sul sistema.
    • NOTA: questi non vengono installati correttamente sul sistema. Usare con cautela!
  • Ridimensiona i dati di salvataggio: JKSV può estendere i dati di salvataggio a qualsiasi dimensione desiderata. Utile per giochi come Minecraft.
  • Strumenti di pulizia: JKSV include funzioni per rendere la pulizia più semplice rispetto alla Gestione Dati di Nintendo e alle conferme multiple:
    • Tieni premuto A per tre secondi per:
    • Eliminare i dati di salvataggio di singoli giochi.
    • Eliminare tutti i dati di salvataggio di un singolo utente in una volta.
  • Statistiche: Visualizza dati e statistiche di base relativi al salvataggio e al titolo.
  • Personalizzazione: JKSV include numerose opzioni per adattarlo alle tue preferenze.
  • Sicurezza: JKSV può richiedere una pressione prolungata per completare operazioni distruttive o essere configurato per creare backup automatici rapidi durante il ripristino.

Guida veloce

Nota: Volendo è possibile definire un percorso personalizzato creando sdmc:/switch/jksv_dir.txt e digitando il percorso che si desidera utilizzare. Ad esempio, sdmc:/switch/JKSV/ forzerà JKSV a creare la sua cartella nella cartella switch homebrew.

  1. User Select
    • Apre i file di salvataggio dell’utente selezionato.
    •  Scarica tutti i dati di salvataggio da tutti gli utenti, i dati di salvataggio del dispositivo e i dati di salvataggio BCAT. I dati di salvataggio del sistema non sono inclusi in questo.
    •  Cambia la modalità UI in un menu di testo basato su uno per le persone che preferiscono invece i menu di testo in stile JKSM 3DS.
    • Apre il menu delle opzioni.
    • – Apre un piccolo menu extra.
  2. Title Select
    • Apre il titolo per il backup e il ripristino.
    • e  – Cambia l’utente corrente.
    •  Esegue il dump di tutti i salvataggi per l’utente attualmente selezionato.
    •  Aggiunge il titolo selezionato a un elenco di titoli ignorati.
    • Aggiunge il titolo selezionato a un elenco di preferiti che vengono inseriti nella parte superiore dell’elenco titoli/icone.
    • Cancella il salvataggio del titolo selezionato dal sistema, è lo stesso che accedere alle impostazioni e all’eliminazione tramite la gestione dei dati. Questo non cancella le cartelle salvate di JKSV.
  3. Backup/Folder Menu
    • Apre la modalità file. La modalità file è un browser di file di base per lo spostamento di singoli file e cartelle. Ciò aggiunge anche la possibilità di ripristinare i salvataggi da qualsiasi posizione sulla scheda SD.
    • Tenendo premuto o  mentre si seleziona nuovo con , verrà automaticamente assegnato un nome al backup senza aprire la tastiera.
    •   Crea un nuovo backup.
    • Ripristina i dati di salvataggio dalla cartella selezionata.
    • Elimina la cartella selezionata.
    • – Cancella i dati di salvataggio correnti per il titolo dal sistema, ma lascia l’archivio su NAND.
  4. File Mode
    • Apre le directory.
    • Torna indietro di una cartella, se possibile.
    • Apre un piccolo menu di opzioni per file e directory:
      • Copy to [X] Copia l’elemento attualmente selezionato nella posizione aperta sull’altro pannello. Selezione del primo. utilizzerà la directory aperta come root per copiare.
      • Delete elimina l’elemento attualmente selezionato.
      • Rename rinomina l’elemento attualmente selezionato.
      • Make Dir crea una cartella.
      • Properties ottiene la dimensione del file e la dimensione della directory.
    • o  Cambia il controllo del menu.

Changelog

JKSV è stato completamente revisionato e riscritto

  • Funzionalità C++: JKSV ora fa un uso corretto di polimorfismo, RAII, contenitori STL e smart pointer in tutto il codice.
  • Sistema di stato: sostituisce il vecchio caos di variabili globali per tracciare lo stato. Questo da solo rende il codice molto più facile da seguire e mantenere.
  • Gestione delle risorse: niente più gestione manuale della memoria. Niente più memory leak.
  • API C: tutte le API della libreria C sono incapsulate in classi e smart pointer. Questo garantisce una corretta pulizia e rende il codice più facile da utilizzare.
  • Registrazione degli errori: gli errori vengono registrati con file, funzione e numero di riga, rendendo i problemi molto più facili da individuare.
  • Struttura e qualità del codice: la leggibilità e la manutenibilità complessive sono state drasticamente migliorate.

Avvio memorizzato nella cache

  • Avvio più veloce: JKSV ora memorizza nella cache i dati dei titoli per migliorare i tempi di avvio. Nei firmware più recenti, le modifiche di Nintendo hanno rallentato NsGetApplicationControlData. La memorizzazione nella cache delle informazioni sui titoli risolve questo problema.
  • Invalidazione automatica: JKSV rileva e ricostruisce automaticamente la cache ogni volta che vengono individuati nuovi titoli. A differenza di JKSM su 3DS, non è necessario aggiornarla manualmente.

Archiviazione remota ampiamente rielaborata

  • Ristrutturazione del sistema: L’intero sistema di archiviazione remota è stato completamente riprogettato da zero.
  • Espansione: Il nuovo design rende più semplice aggiungere il supporto a servizi aggiuntivi in futuro.
  • Nota importante: L’aggiunta del supporto dipende dalle informazioni richieste da un servizio. Non vengono forniti tutti i dati personali solo per permettere a JKSV di supportarlo.

Codice WebDav revisionato

  • Completamente rifatto: Il codice WebDav è stato riscritto da zero.
  • Indipendente dai namespace: Invece di analizzare e tagliare i namespace per trovare i tag XML, il nuovo codice li ignora completamente. Questo elimina allocazioni di stringhe non necessarie e migliora la compatibilità.
  • Recupero ricorsivo: L’intero elenco WebDav viene ora recuperato e processato ricorsivamente all’avvio, anziché su richiesta. Questo elimina le pause nell’interfaccia utente quando i server rispondono lentamente.
  • Coerenza: Modificando il percorso di output per un titolo sulla Switch, ora viene aggiornato automaticamente anche il relativo folder sul server WebDav. Questo comportamento avrebbe dovuto esserci fin dall’inizio.
  • Istruzioni per configurare WebDav possono essere trovate qui.

Codice di Google Drive rielaborato

  • Ristrutturazione importante: L’integrazione con Google Drive è stata completamente rivista, correggendo vari problemi e incongruenze.
  • Supporto completo ai titoli: I nomi delle cartelle utilizzano nuovamente titoli UTF-8 completi. Questo era stato modificato con l’implementazione precedente di WebDav ed è stato ripristinato.
  • Nuovo metodo di login: JKSV ora utilizza il metodo Limited Input invece di fare affidamento sul browser integrato della Switch. È possibile accedere con il telefono o un altro dispositivo.
  • Le istruzioni per configurare Google Drive possono essere trovate qui.

Logica di gestione dei file rielaborata

  • Ristrutturazione completa: Tutto il codice e gli elementi dell’interfaccia utente sono stati riscritti e perfezionati.
  • Layout familiare: L’interfaccia resta familiare, ma tutto ciò che c’è sotto è completamente diverso.
  • Miglior supporto alle traduzioni: L’interfaccia è stata progettata fin dall’inizio pensando alle traduzioni. Nella versione originale questo era stato aggiunto successivamente.
  • Ritorno alla modalità Text Menu (JKSM 2016): Per i fan del JKSM originale su 3DS, JKSV supporta ora la modalità JKSM in cui i titoli sono elencati tramite menu testuali invece che una griglia di icone.

Aggiunte

  • Auto-Upload: JKSV può ora caricare automaticamente i backup sul servizio selezionato e rimuoverli dalla scheda SD.
  • Livello di compressione controllabile: È possibile impostare il livello di compressione utilizzato durante la creazione dei backup compressi.
  • Modalità Text Menu (JKSM): Permette di passare tra griglie di icone e menu testuali per la visualizzazione dei titoli.
  • Salvataggi di sistema attivabili/disattivabili: È ora possibile decidere se scansionare, caricare e visualizzare Device, BCAT, Cache e System. Disabilitarli tutti migliora anche i tempi di avvio.
  • File di metadata nei backup: JKSV include ora un file di metadata nei backup contenente informazioni sui salvataggi, migliorando precisione e affidabilità durante il ripristino.

Note riguardanti le funzionalità mancanti

  • Inclusione dei salvataggi dei dispositivi con utenti: Non è ancora implementata. Richiede una pianificazione attenta.
  • Modalità File: Non è ancora disponibile.
  • Filtraggio dei percorsi per backup e cancellazione: Non è ancora implementato.

Note aggiuntive

  • La maggior parte dei backup della versione originale di JKSV è compatibile. Le eccezioni includono i titoli che estendono i dati di salvataggio, ora gestiti correttamente nella riscrittura.
  • Il formato SVI è stato revisionato. I file SVI della versione originale di JKSV non sono compatibili con questa riscrittura.
  • Le traduzioni fornite sono tutte completate da AI. Se desideri apportare revisioni o correzioni, sentiti libero di farlo!
  • Alcuni interventi potrebbero essere necessari per quanto riguarda i salvataggi di tipo cache e la loro gestione.
  • La riscrittura di JKSV non utilizza lo stesso file di configurazione dell’originale. Sarà necessario riconfigurarlo.

Note extra aggiuntive

Utilizza FsLib, una libreria wrapper C++ che ho scritto per le chiamate FS di 3DS e Switch.

  • Maggiore controllo: FsLib consente un controllo più preciso sulle operazioni sui file.
    • Ad esempio, se la dimensione finale di un file è nota in anticipo, FsLib può saltare chiamate ridondanti per estendere il file durante la scrittura, velocizzando i trasferimenti.
  • I percorsi sono standardizzati alla creazione per garantire compatibilità con il filesystem della Switch.
  • Miglioramento della gestione degli errori e del logging: Ogni operazione restituisce se ha avuto successo. In caso contrario, FsLib registra una stringa di errore interna con la posizione e il codice dell’errore per un debug più semplice.
  • Per questo motivo, l’opzione “Usa comandi FS direttamente” è stata rimossa in quanto non più necessaria.

Utilizza SDLLib, una libreria wrapper C++ che ho scritto contenente funzioni riutilizzabili che tutti i miei progetti condividono

  • Gestore centrale delle texture: tutte le texture ora vengono caricate, monitorate e liberate da un unico gestore, eliminando la gestione duplicata.
  • Superfici e texture gestite: le superfici e le texture SDL sono ora gestite tramite smart pointer o classi, garantendo una corretta pulizia della memoria.
  • Miglioramento della gestione del testo: la gestione del testo è stata completamente rivista e migliorata rispetto all’implementazione originale di JKSV.

Download: JKSV 25.08.2025 [NRO]

Download: Source code JKSV 25.08.2025

Fonte: github.com