Home Homebrew Rilasciato 3DSlibris v2.1.4: Trasforma il 3DS in un e-reader completo con supporto...

Rilasciato 3DSlibris v2.1.4: Trasforma il 3DS in un e-reader completo con supporto per EPUB e MOBI

53
0

Pubblicato un nuovo aggiornamento per 3DSlibris, il programma nato dal desiderio di riportare in vita lo storico DSLibris, uno dei lettori di ebook più apprezzati ai tempi del Nintendo DS.

Sviluppato da RigleGit, questo homebrew rappresenta un salto di qualità significativo rispetto alle versioni precedenti, offrendo un’esperienza di lettura più stabile e fluida. Le patch più recenti si concentrano soprattutto sulla risoluzione di problemi critici e sull’ottimizzazione dell’uso delle risorse.

Uno degli interventi più importanti riguarda la gestione della memoria: lo stato interno del parser è stato spostato dallo stack all’heap, evitando così crash legati allo stack overflow quando si aprono ebook particolarmente pesanti.

Allo stesso tempo, sono stati introdotti controlli più intelligenti per i libri a layout fisso, come PDF e CBZ, evitando operazioni inutili che potevano causare instabilità.

A questo si aggiunge un miglioramento degli strumenti di debug, che ora coprono più fasi del ciclo di vita dell’applicazione, rendendo molto più semplice individuare eventuali problemi senza influire sul comportamento delle versioni finali.

Un altro aggiornamento ha risolto un crash piuttosto insidioso che si verificava all’avvio quando l’ultimo libro aperto era in formato FB2. La causa era una condizione di race tra thread legata alla libreria FreeType, non progettata per essere thread-safe.

La soluzione adottata è stata elegante: il caricamento del libro viene ora rimandato al primo ciclo del loop principale, evitando sovrapposizioni tra thread e garantendo un avvio stabile.

Non meno importante è il lavoro fatto sulla gestione delle copertine nella libreria. In precedenza, non tutte venivano caricate correttamente e alcune potevano addirittura non apparire mai.

Ora il sistema è stato rivisto per tentare l’estrazione in modo più intelligente e con più tentativi, evitando che errori temporanei blocchino definitivamente la visualizzazione.

Inoltre, è stato risolto un crash in uscita causato da una gestione errata della memoria, eliminando un problema che poteva generare errori di sistema su console modificate.

La versione 2.1.1 ha riportato le prestazioni di cambio pagina ai livelli precedenti, dopo un forte rallentamento introdotto dalla versione 2.1.0.

Il problema era legato alla gestione della cache dei glifi: ogni carattere veniva ricaricato inutilmente, causando un degrado drastico delle prestazioni. Con la correzione, il sistema torna a essere fluido, migliorando sensibilmente l’esperienza di lettura.

La versione 2.1.0 rappresenta invece un aggiornamento molto più ampio e strutturale, focalizzato sulla qualità della lettura EPUB. Sono stati migliorati il supporto alla formattazione XHTML e CSS, la gestione della tipografia e dei font di fallback, inclusi quelli per lingue come arabo, ebraico, giapponese e cinese.

Anche la resa dei contenuti complessi, come codice, liste, tabelle e blocchi strutturati, è stata notevolmente migliorata, rendendo i libri più leggibili e fedeli all’originale.

Particolare attenzione è stata dedicata anche ai dettagli che fanno la differenza nella lettura quotidiana, come la gestione della punteggiatura, delle etichette dei capitoli e dei testi nascosti per l’accessibilità, che ora non vengono più mostrati erroneamente.

Allo stesso tempo, sono stati migliorati i meccanismi di caching delle pagine e la stabilità del renderer, riducendo i casi in cui il testo poteva scomparire o comportarsi in modo anomalo.

Sul piano tecnico, il progetto è stato riorganizzato per essere più modulare e mantenibile. Il codice è stato suddiviso in componenti più chiari, riducendo le dipendenze interne e facilitando lo sviluppo futuro.

Anche la documentazione e il processo di installazione sono stati resi più chiari, aiutando sia gli utenti sia gli sviluppatori ad avvicinarsi al progetto.

Formati supportati

Supporto eccellente

  • EPUB (EPUB2 + EPUB3 con parsing NAV/NCX e sistemi di fallback robusti).

Buon supporto (formati orientati al testo)

  • FB2
  • TXT
  • RTF
  • ODT

Sperimentale / miglior sforzo possibile

  • MOBI
    • La prima apertura può risultare lenta con libri di grandi dimensioni (decompressione, parsing e paginazione).
    • Le aperture successive sono più rapide grazie alla cache persistente delle pagine.
    • La qualità dell’indice (TOC) è spesso basata su metodi euristici e può risultare approssimativa.
    • È disponibile un’opzione facoltativa di correzione del line wrap per singolo libro, utile per file convertiti male che interrompono il testo riga per riga.
    • I libri vuoti o corrotti vengono segnalati con un messaggio di errore leggibile invece di un codice numerico grezzo.

Limitazioni note

  • Alcuni file EPUB contengono ancore malformate; i salti nell’indice possono risultare approssimativi quando i metadati sono danneggiati.
  • L’estrazione dell’indice nei file MOBI dipende dalla struttura del file e può omettere o unire alcune voci in certi libri.
  • Alcuni file MOBI malformati possono contenere errori di codifica o artefatti OCR che non possono essere corretti in modo affidabile dal lettore.
  • Dopo aver cambiato dimensione del font, spaziatura dei paragrafi, orientamento, font di lettura o l’opzione di correzione del line wrap MOBI, è necessario riaprire il libro corrente per applicare il nuovo layout.
  • La posizione di lettura e i segnalibri esistenti vengono riallineati in modo approssimativo dopo la riapertura e potrebbero spostarsi di alcune pagine.
  • Nessun supporto per ebook con DRM.

Installazione

Metodo consigliato

  • Scaricare il file 3dslibris-sdmc.zip.
  • Estrarre l’archivio nella root della scheda SD, in modo che venga creato il percorso sdmc:/.
  • Inserire gli ebook nella cartella sdmc:/3ds/3dslibris/book/.
  • Avviare sdmc:/3ds/3dslibris/3dslibris.3dsx tramite Homebrew Launcher.

Metodo alternativo

  • Installare il file 3dslibris.cia.
  • Mantenere le stesse cartelle di runtime sulla SD, incluse sdmc:/3ds/3dslibris/font/ e sdmc:/3ds/3dslibris/resources/.
  • Inserire i libri nella cartella sdmc:/3ds/3dslibris/book/.

Importante

  • Le cartelle font/ e resources/ devono rimanere esattamente dentro sdmc:/3ds/3dslibris/.
  • Se i file di runtime mancano, 3dslibris interromperà l’avvio e chiederà di reinstallare 3dslibris-sdmc.zip.
  • 3dslibris-debug.3dsx usa la stessa struttura SD e salva log dettagliati in sdmc:/3ds/3dslibris/3dslibris.log.
  • La build .cia utilizza il sistema di packaging stile Universal-Updater, ma la struttura dei file sulla SD rimane identica alla versione .3dsx.

Controlli (predefiniti)

  • / / / → gira pagina.
  • / → salta tra i segnalibri.
  • → attiva/disattiva segnalibro.
  • → cambia colore dello sfondo.
  • → impostazioni.
  • → ritorna alla libreria.
  • Interfaccia touch per libreria, impostazioni, indice, segnalibri e menu dei font.

Changelog v2.1.4

Piccola patch per migliorare la sicurezza dei layout fissi, ridurre l’uso dello stack durante il rilevamento della pagina del titolo e ampliare la strumentazione di debug.

Correzioni

  • Stato del parsing basato su heap: Spostato State dallo stack per evitare stack overflow sugli stack delle dimensioni del 3DS durante l’apertura di libri più pesanti.
  • Protezione per la pagina del titolo nei layout fissi: Saltata la ricerca approssimativa della pagina del titolo per libri a layout fisso come PDF e CBZ, dove le euristiche delle pagine di testo non si applicano.
  • Copertura di debug estesa: Ampliato il logging DSLIBRIS_DEBUG lungo il ciclo di vita dell’app, il report della memoria nel main loop, l’arresto del worker di reflow, l’input del browser e i percorsi di corruzione della cache delle copertine per rendere la diagnosi sul campo più semplice senza modificare il comportamento delle build di rilascio.

Changelog v2.1.3

Patch che risolve un crash all’avvio quando un libro FB2 veniva salvato come ultimo libro aperto.

Correzioni

  • Crash alla riapertura FB2 all’avvio risolto: Quando current=<book>.fb2 veniva salvato nelle preferenze, l’app andava in crash durante l’avvio. La causa principale era una race condition di FreeType: il worker di reflow (core 1) chiamava ts->GetAdvance all’interno dei callback di parsing XML mentre il thread principale (core 0) chiamava simultaneamente ts->GetStringWidth / ts->PrintString nella barra di stato in modalità apertura. FreeType non è thread-safe. La correzione rimanda OpenBook() dalla sequenza di avvio al primo tick del main loop, assicurando che il worker di riapertura non venga mai avviato prima che il main loop sia in esecuzione — replicando il timing di un’apertura avviata dall’utente ed eliminando la race.

Changelog v2.1.2

Patch che risolve lacune nel caricamento delle copertine nel browser della libreria e un crash use-after-free all’uscita.

Correzioni

  • Lacune nel caricamento delle copertine risolte: Tutti i libri visibili ora hanno le loro copertine messe in coda per l’estrazione a ogni tick di warmup, non solo quello selezionato. Il contatore dei tentativi non viene più incrementato in caso di errori dell’indice dei metadati (ma solo in caso di reali errori di estrazione della copertina), quindi errori temporanei dell’indice non mettono più permanentemente in blacklist la copertina di un libro. Il limite dei tentativi è stato aumentato da 2 a 3 per dare ai casi borderline un tentativo extra.
  • Crash use-after-free all’uscita risolto: Il distruttore di App ora elimina gli oggetti Book prima di rilasciare Prefs e il gestore del touchscreen (ts). In precedenza, i distruttori di Book venivano eseguiti dopo che Prefs/ts erano stati liberati, producendo un dump di errore Luma3DS con FAR=0xE7E7996B. Inoltre è stata risolta una perdita di memoria Button* nel distruttore.

Changelog v2.1.1

Patch che ripristina le prestazioni del cambio pagina ai livelli precedenti alla versione 2.1.0.

Correzioni

  • Velocità di cambio pagina ripristinata: Il rendering delle pagine era circa ~10× più lento rispetto alla versione 2.0.4 a causa di una regressione nella cache dei glifi introdotta insieme al supporto ai font di fallback CJK/RTL nella 2.1.0. La cache dei glifi veniva di fatto bypassata per ogni carattere perché il percorso di rilevamento dei ghost-glyph chiamava FT_Load_Char in modo incondizionato, anche quando il glifo era già in cache. Questo è stato corretto controllando prima la cache e limitando il controllo dei ghost-glyph al blocco Arabic Presentation Forms (U+FE70–U+FEFF) dove è effettivamente necessario.

Changelog v2.1.0

Questa versione si concentra sulla qualità di lettura EPUB, tipografia, font di fallback e onboarding.

Aggiunge il rendering monospace configurabile per libri ricchi di codice, amplia il supporto alla formattazione XHTML/CSS, migliora le etichette dei capitoli/indici e la gestione della punteggiatura, include una copertura di fallback CJK/RTL più ampia e documenta in modo più chiaro il flusso di installazione/copia dei libri sia nel repository che nella guida rapida SD inclusa.

Highlights

  • Flusso monospace EPUB configurabile ripristinato ed espanso: pre / code ora vengono riformattati con il font monospace attivo invece di essere misurati con il font serif del testo, preservando blocchi di codice leggibili mantenendo il nuovo percorso di font mono configurabile.
  • Le varianti monospace ora vengono renderizzate correttamente: Il contenuto EPUB può distinguere tra testo monospace normale, grassetto, corsivo e grassetto-corsivo invece di comprimere tutto in un unico stile mono.
  • Supportate più semantiche di blocco EPUB: Liste, liste ordinate annidate, blockquote, aside, caption, figure, dl / dd e la linearizzazione base delle tabelle ora vengono renderizzate come blocchi reflow leggibili invece di collassare in un flusso di paragrafi generico.
  • Supporto più ampio alla formattazione inline EPUB: Sottolineato, barrato, sovralineato, apice, pedice, stili di sottolineatura puntinata/tratteggiata/ondulata e comuni pattern di enfasi basati su CSS sono ora riconosciuti in modo più coerente.
  • Il testo nascosto per accessibilità EPUB viene ignorato: Pattern comuni di testo nascosto come visually-hidden, aria-hidden e CSS inline equivalenti non vengono più mostrati come testo visibile.
  • La punteggiatura stilizzata resta collegata al testo circostante: I simboli di chiusura ! / ? e apertura ¡ / ¿ sono gestiti in modo più sicuro attraverso i confini degli stili inline, evitando i peggiori casi di separazione nei testi spagnoli.
  • Etichette dell’indice EPUB più pulite: I menu dei capitoli ora preferiscono etichette più semplici invece di concatenare più intestazioni in una singola voce confusa.
  • Scrittura della cache pagine EPUB più sicura: I file della cache delle pagine ora salvano i parametri reali di layout usati per la paginazione invece di valori azzerati obsoleti, evitando voci di cache non valide dopo nuove aperture.
  • Guida rapida e documentazione SD incluse più chiare su dove inserire i libri: Il pacchetto di rilascio ora rende più esplicito il percorso sdmc:/3ds/3dslibris/book/, poiché è ancora la domanda più comune degli utenti.
  • Recupero del renderer nella visualizzazione libro più difensivo: entrando o riaprendo un libro viene ora resettato in modo più aggressivo lo stato del renderer di testo, riducendo i rari casi in cui i glifi visibili scompaiono fino al riavvio dell’app.

Miglioramenti a lingua, fallback e layout inclusi

  • Migliorata la copertura di fallback per arabo, ebraico, coreano, giapponese e cinese: Il pacchetto SD ora include Noto Naskh Arabic, Noto Sans Hebrew e Droid Sans Fallback Full insieme a Liberation, con avvisi Apache 2.0 / OFL aggiornati.
  • I font di fallback configurati persistono correttamente al caricamento delle preferenze: Il caricamento delle preferenze salvate non riduce più il set di fallback a un solo font, mantenendo disponibile il supporto CJK/RTL dopo il riavvio.
  • Supporto layout RTL più robusto: Il shaping BiDi, l’ancoraggio delle righe e il layout sensibile all’orientamento introdotti dalla 2.0.4 rendono i contenuti con script misti più prevedibili.
  • Layout delle immagini inline sensibile all’orientamento più stabile: Metriche dello schermo e helper di posizionamento immagini sono stati rifattorizzati per migliorare il comportamento delle combinazioni reflow/immagini in entrambe le orientazioni.

Lavori per sviluppatori e packaging inclusi

  • Copertura delle regressioni EPUB molto più ampia: La suite di test ora copre flusso della punteggiatura, decorazioni di sottolineatura, comportamento degli stili del parser e un fixture dedicato al rendering EPUB usato per validare testo nascosto, blocchi di codice, liste e tabelle.
  • Contenuti di test del rilascio migliorati: Il template SD e l’EPUB di test ora forniscono un obiettivo più pratico per test rapidi delle build su hardware e su Azahar.
  • Documentazione del packaging aggiornata: README e documenti del template SD ora sono più allineati con il layout reale del rilascio e i percorsi di installazione supportati.

Changelog v2.0.4

Questa versione si concentra sulla stabilità e sulla correttezza dell’orientamento. Risolve problemi di persistenza delle impostazioni causati da nomi file non validi per XML, migliora il rilevamento della libreria .cia leggendo i libri sia da SD che da RomFS e corregge il comportamento della lettura e della navigazione della libreria per mancini.

Highlights

  • Persistenza dei segnalibri e dell’ultima pagina letta corretta: La scrittura dell’XML delle preferenze ora effettua correttamente l’escape dei valori degli attributi e sanitizza i caratteri di controllo non validi, quindi nomi file come ... & ... non interrompono più il parsing di 3dslibris.xml all’avvio.
  • Gestione delle sorgenti della libreria CIA migliorata: L’app ora rileva i libri sia da sdmc:/3ds/3dslibris/book che da romfs:/3ds/3dslibris/book, con priorità agli elementi su SD quando i nomi coincidono.
  • Ordine delle schermate di lettura per mancini corretto: La lettura reflow ora inverte correttamente la prima e la seconda schermata in modalità mancino.
  • Navigazione della libreria con D-Pad relativa all’orientamento: La navigazione a griglia ora segue l’orientamento della console in entrambe le modalità, così l’input direzionale corrisponde al movimento visivo nei layout per destrimani e mancini.
  • Diagnostica di avvio migliorata: I fallimenti nel caricamento delle preferenze ora vengono registrati con un avviso esplicito invece di fallire silenziosamente.
  • Compatibilità con l’enfasi EPUB migliorata: Il parser ora riconosce grassetto/corsivo espressi tramite comuni pattern CSS di stile e class, non solo i tag semantici (<b>/<strong>/<i>/<em>).
  • Stabilità della pipeline di rilascio migliorata: Le build debug MOBI ora includono le corrette definizioni di reporter, così debug-3dsx compila in modo affidabile nei workflow CI/rilascio.

Lavori su architettura e manutenibilità inclusi

  • Monolite dell’app ridotto tramite estrazione dei controller: Flusso di avvio, dispatch del main loop, aggiornamenti di stato, flusso della libreria, flusso del lettore e flusso delle impostazioni sono stati separati in controller dedicati così App delega di più e gestisce meno comportamento diretto.
  • Accoppiamento tra controller ridotto: L’accesso friend esteso è stato rimosso a favore di API esplicite di App per avvio, loop, stato runtime del lettore e fasi di presentazione.
  • Confini tra libreria e lettore chiariti: Flusso di warmup/job del browser e percorsi di apertura/ricalcolo differito del lettore sono stati spostati dietro punti di ingresso guidati dai controller con meno accesso diretto allo stato tra moduli.
  • book_io.cpp mantenuto come dispatcher leggero: La logica pesante del parser è stata estratta in moduli dedicati (plain-text, XML e sottomoduli MOBI), riducendo l’accoppiamento centrale del parser e rendendo più sicure le future modifiche ai formati.

Download: 3dslibris v2.1.4 (debug 3dsx)

Download: 3dslibris v2.1.4 (sdmc zip) (smdh)

Download: 3dslibris v2.1.4 (3dsx) (cia) (elf)

Download: Source code 3dslibris v2.1.4

Alcune parti di questo articolo sono state generate con l’aiuto dell’intelligenza artificiale.

🔥 Prodotti in promozione e articoli più venduti: Xbox Series

Vedi altri prodotti Xbox Series

Questo articolo contiene link affiliati a Amazon. Se acquisti tramite questi link, potrei guadagnare una commissione senza costi aggiuntivi per te.

Ultimo aggiornamento 2026-05-13 / Link di affiliazione / Immagini da Amazon Product Advertising API

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui
Captcha verification failed!
Punteggio utente captcha non riuscito. Ci contatti per favore!

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.