Nintendo DS Roms Trimmer

category Blogging, Gaming, Linux, Programming voRia 11 agosto 2008 22:46

Da quando mi sono interessato alla scena Nintendo DS, una delle prime cose che ho notato è stato lo scarso (per non dire nullo) supporto da parte della comunità a sistemi operativi diversi da quello targato Microsoft.
Tutte le utility più comode sono disponibili solo per windows, e a questo si aggiunge il fatto che si parla sempre e comunque di software a codice chiuso.

Circa un paio di mesi fa, avevo la necessità di trimmare delle rom per recuperare spazio sulla mia SD. Frustrato dal fatto di dover ricorrere a wine per un lavoro semplice come questo e allo stesso tempo alla perenne ricerca di una idea interessante per un nuovo progetto, decisi di dedicarmi nel tempo libero allo sviluppo di una utility in grado di catalogare e gestire i giochi DS, con tutte le informazioni ad essi legate (copertina, lingua, dimensione, e cosi via) e tutte le funzioni più utili (trimming, rinominazione automatica dei file, trasferimento sulla SD, e cosi via). Insomma, quello che è amarok per la musica.

Quella notte stessa scrissi un trimmer.

Poi, accantonai il progetto in attesa di trovare tempo libero per portarlo avanti. :sbonk:

Beh, oggi ho realizzato che fino a settembre/ottobre è improbabile che il progetto vada avanti a causa di impegni più urgenti (maledetta università). :look:

Avevo intenzione di dedicare un articolo al progetto non appena avessi avuto qualcosa in più da mostrare. Oggi però mi è venuta la voglia di scrivere un articolo, pur non avendo argomenti interessanti di cui parlare. L’idea di scrivere un’altra puttanata come quella dell’articolo precedente mi ha fatto ribrezzo, così ho deciso di anticipare i tempi.

***
AGGIORNAMENTO:
Il trimmer è stato aggiornato. Per maggiori informazioni, clicca qui.
***

feed icon 4 Commenti a “Nintendo DS Roms Trimmer”

  1. Fulvio Satta Konqueror Konqueror 3.5 :: Gentoo Linux Gentoo Linux

    Innanzitutto ti ringrazio, anche se non amo i trimmer, comunque potrebbe essere utile in qualche occasione.

    Come seconda cosa, ho dato un’occhiata veloce al codice, ben scritto e ben commentato, ma c’è un bel problemino di buffer overflow, alle righe 216 e 217. Il problema è che se il nome del file supera i 511 caratteri il buffer viene semplicemente ecceduto. Converrebbe modificare il codice, utilizzando strncpy al posto di strcpy, in modo da troncare la stringa, qual’ora troppo lunga, e poi aggiungere il carattere nullo, se dovesse servire. La linea 216 diverrebbe 2 linee, e verrebbe così:

    strncpy(backupname, argv[i], 511 – strlen(“.bak”));
    backupname[511] = 0;

    Poi, se non vuoi troncare, potresti usare la heap, ma già diventa un po’ più complicato. Oppure, se non t’interessa la massima compatibilità col POSIX, potresti usare asprintf:

    asprintf(backupname, “%s.bak”, argv[i]);

    free(backupname);

    In questo modo allocheresti backupname della dimensione necessaria, automaticamente. Bisogna solo ricordarsi di deallocarla alla fine, quando non serve più. asprintf è disponibile con le glibc, e sotto *BSD, perciò abbastanza diffusa, ma non la trovi proprio ovunque.

    Poi, per essere pignoli, dovresti controllare che almeno le funzioni più importanti vadano a buon fine, e dovresti anche mettere un link ad un file di testo che contiene l’intera GPL, ma insomma, quelli son dettagli. :)

    In ogni caso buon lavoro e grazie :)

    Ah, e :monkey: :monkey: :monkey:
    Mi piaceva la faccina :D

  2. voRia Mozilla Firefox Mozilla Firefox 3.0.1 :: Linux Linux

    Ciao, prima di tutto grazie per il commento :)

    Ero già a conoscenza di tutti i problemi che mi hai segnalato. Come ho già detto, non avevo nemmeno l’intenzione di pubblicare qualcosa fino a quando il progetto non fosse stato più maturo.

    Il trimmer attuale è solo il risultato di una urgenza personale avuta una notte di due mesi fa. Quando l’ho scritto non mi sono preoccupato troppo dei controlli necessari nel codice né di eventuali altri problemi secondari. Ho seguito la semplice filosofia “It just works for me” :D

    Già il fatto di controllare se il file è una rom valida solo guardando alla sua estensione la dice lunga :asd:

    A dirla tutta, la funzione di trimming è solo la punta dell’iceberg. Ho intenzione di implementare in questa utility la gestione completa dell’header dei file NDS, magari aggiungendo tra le altre cose anche la possibità di estrarre i file in essi contenuti. Ma questo si vedrà col tempo, e se ce ne sarà reale utilità.

    L’unica cosa certa è che questa utility resterà indipendente dal gestore “a la amarok” che ho in mente: da buon gentooista quale sei, sarai certamente daccordo con me se dico che non c’è nulla di meglio di un buon tool CLI per essere sicuri che un lavoro sia svolto bene :D

    Per il resto, la penso allo stesso modo: la scimmietta è mitica :monkey: :asd: :monkey:

  3. Fulvio Satta Konqueror Konqueror 3.5 :: Gentoo Linux Gentoo Linux

    Giusto!

    :monkey: :monkey: :monkey:

    Hahaha :D
    Comunque ti rinnovo l’augurio di buon lavoro, se diverrà un bel progetto potrei essere uno dei futuri utenti :)

  4. voRia’s Place » Blog Archive » NDS Roms Trimmer - Versione 1.1 WordPress WordPress 2.6.1

    [...] sono invece dedicato alla programmazione for fun, e dopo il commento di Fulvio Satta, ho deciso di migliorare il trimmer in modo da renderlo più affidabile e [...]