MAME - Pulizia rom

Le Guide ed i Topic più importanti in un unico posto !
Avatar utente
motoschifo

Gold Medal Donatore
Progetto Arcade Database
Progetto Arcade Database
Messaggi: 3271
Iscritto il: 12/07/2013, 20:29
Medaglie: 2
Città: Parma
Località: Parma
Grazie Inviati: 32 volte
Grazie Ricevuti: 31 volte
Contatta:

MAME - Pulizia rom

Messaggio da motoschifo »

Salve a tutti,
questo week-end ho fatto un programmino per eliminare le rom dei giochi in maniera semplice e pulita, cioè senza fare danni rimuovendo file usati da altri.

L'ho scritto in C# 2010 ed utilizza il framework Microsoft .Net 4.0. L'ambiente di sviluppo è facilmente scaricabile dal sito della Microsoft: http://go.microsoft.com/?linkid=9709969
Considerate che è un programma ancora giovane, ha poche ore di vita... ma il suo dovere lo fa già.

Prima di iniziare occorre scaricare il programma Mame (mame.exe) dal sito ufficiale. Gli indirizzi sono questi:
http://www.mamedev.org/release.html
http://www.mamedev.org/oldrel.html

La versione da prelevare deve essere quella relativa alle rom possedute, altrimenti le informazioni potrebbero non corrispondere al contenuto delle cartelle.

Dopo aver impostato il percorso corretto (es. E:\MAME) è possibile ottenere l'elenco dei giochi ed usare il tasto CANC per eliminarlo. In realtà non verrà rimosso dal disco ma spostato nella cartella "0-REMOVED" quindi se fare qualcosa di sbagliato basterà riportare tutto il suo contenuto dentro la cartella principale.

Spiego brevemente come funziona:
- alla prima esecuzione viene creato il file gamelist.xml usando mame.exe (il comando esatto è "mame.exe -listxml > gamelist.xml").
- successivamente viene letto questo file e caricata la lista a video con tutti i giochi e tutte le informazioni sul gioco
- ad ogni selezione si può vedere l'immagine a fianco. Le immagini vengono cercate nella cartella "snap" in formato png o jpg prima per rom, poi per clone ed infine per padre.
- premento CANC il gioco viene spostato nella cartella "0-REMOVED" dopo la richiesta di conferma operazione. Insieme alla rom vengono spostati anche tutti gli altri file: artworks, cabinets, chds, ecc.
- premendo INVIO o con il doppio click il gioco viene eseguito usando mame.exe con le opzioni di default (da migliorare in futuro)
- i giochi in colore grigio sono quelli che hanno dipendenza verso altre rom, in genere non cancellabili (ovviamente file bios e device non potranno essere cancellati)

Nota: al cambio di versione del mame occorre riscaricare il nuovo file mame.exe e rimuovere manualmente il file gamelist.xml.

Come detto prima, si tratta di un programma appena iniziato per cui non è perfetto ed è molto migliorabile.
Sul mio pc virtuale il file gamelist.xml ci mette 10 minuti per essere creato (140MB!) ma spero proprio non sia così anche su altri pc.

Altre cose possono essere aggiunte o cambiate, però vorrei capire se può avere un senso continuare lo sviluppo di questo programma dato che non ho molto tempo da dedicarci.

Se siete interessati fatemi sapere come vi sembra.
L'ultima versione di questo progetto si trova qui: https://drive.google.com/drive/folders/ ... sp=sharing

EDIT
  • - 04/01/2014: Aggiornamento 2.2 per sistemazione flag funzionante si/no
    - 05/01/2014: Aggiornamento 2.3 con piccole migliorie (ridimensionamento finestra ed altro) e separazione programmi da sorgenti. Essendo rientrato nel limite di 1MB posso postare sul forum anzichè usare il mio Google
    - 05/01/2014: Aggiornamento 2.4 con ulteriore correzione per il flag funzionante si/no
    - 12/01/2014: Aggiornamento 2.5 con filtri aggiuntivi: tipo schermo (raster, vettoriale, ecc), orientamento schermo (orizzontale, verticale), giochi che usano chd, giochi che usano sample
    - 25/01/2014: Aggiornamento 2.6 con filtro versione rivisto. Ora è possibile selezionare una versione particolare oppure un range di versioni (fino a, dalla, compreso nell'intervallo)
    - 26/01/2014: Aggiornamento 2.7 con creazione automatica della lista xml generata dal Mame ed opzione per ricrearla in caso di problemi
    - 13/02/2014: Aggiornamento 2.8 con correzione bug durante la selezione e cancellazione delle rom, introdotto da modifiche precedenti. Possibilità di nascondere alcune colonne e gestione file ini per il salvataggio/lettura delle impostazioni inserite dall'utente
    - 31/03/2015: Aggiornamento 2.9 per aggiunta pcb/marquee e numero di versione nel titolo
    - 08/06/2015: Aggiornamento 2.10 per il supporto alle versioni 0.162 e successive del Mame
    - 14/02/2019: Aggiornamento 2.11 per migliorie sul supporto di vecchissime versioni (es. 0.106)
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Ultima modifica di motoschifo il 23/09/2021, 20:09, modificato 12 volte in totale.
Motoschifo
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 WebArcadeDatabase
Avatar utente
r77

Silver Medal Donatore
God of Arcade
God of Arcade
Messaggi: 2817
Iscritto il: 08/07/2009, 10:37
Medaglie: 2
Città: Verona
Grazie Ricevuti: 2 volte

Re: MAME - Pulizia rom

Messaggio da r77 »

Lo provo subito e ti faccio sapere, grazie
CLRMAMEPRO guida passo a passo viewtopic.php?f=27&t=11373
Avatar utente
NEOGENIO
Cab-maniaco
Cab-maniaco
Messaggi: 1318
Iscritto il: 11/07/2013, 3:53
Città: Sicilia

Re: MAME - Pulizia rom

Messaggio da NEOGENIO »

Qualcuno ha fatto delle prove in merito?
Funziona con altre versioni del mame?
<-think->
Arcade a vita... dagli anni '80 per sempre!
Avatar utente
motoschifo

Gold Medal Donatore
Progetto Arcade Database
Progetto Arcade Database
Messaggi: 3271
Iscritto il: 12/07/2013, 20:29
Medaglie: 2
Città: Parma
Località: Parma
Grazie Inviati: 32 volte
Grazie Ricevuti: 31 volte
Contatta:

Re: MAME - Pulizia rom

Messaggio da motoschifo »

Io l'ho sviluppato usando un Mame 0.99 e poi provato con la 0.149, ma il formato del file xml è sempre lo stesso e non ho avuto problemi.
Inizialmente pensavo di aggiungere caratteristiche all'applicazione però ho visto che non c'è molto interesse e che comunque ci metto molto meno tempo a fare le cose a mano... anche perchè il mio set di giochi è ridotto (300 su 28 mila teorici).
Ad ogni modo non ci sono istruzioni di cancellazione file quindi non dovrebbe fare danni.
Motoschifo
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 WebArcadeDatabase
Avatar utente
NEOGENIO
Cab-maniaco
Cab-maniaco
Messaggi: 1318
Iscritto il: 11/07/2013, 3:53
Città: Sicilia

Re: MAME - Pulizia rom

Messaggio da NEOGENIO »

Perfetto, grazie per le delucidazioni... in effetti per il mame ci vogliono questo tipo di utility!
Arcade a vita... dagli anni '80 per sempre!
Avatar utente
motoschifo

Gold Medal Donatore
Progetto Arcade Database
Progetto Arcade Database
Messaggi: 3271
Iscritto il: 12/07/2013, 20:29
Medaglie: 2
Città: Parma
Località: Parma
Grazie Inviati: 32 volte
Grazie Ricevuti: 31 volte
Contatta:

Re: MAME - Pulizia rom

Messaggio da motoschifo »

Nel week-end visto il brutto tempo mi sono messo a sistemare il programmino con qualche aggiunta.
L'idea era quella di recuperare il vecchio codice VB6 scritto tanti anni fa, ma purtroppo mi sono accorto che sarebbe stato impossibile da gestire vista la mole di dati: dagli 8 mila giochi circa siamo passati a quasi 30 mila, quindi avrebbe richiesto tempi biblici per il caricamento.

Così ho riscritto alcune parti del programma di cancellazione rom singole in modo da accettare filtri più ampi (genere, numero di versione, tipologie di gioco, ecc), migliorando la selezione ed il disegno dell'interfaccia con tanti elementi.
Lo scopo di questo MAME Shrink è quello di pulire la nostra selezione di rom togliendo tutto ciò che non ci interessa, come ad esempio fruit machines e mechanical, o anche giochi sicuramente non funzionanti, mantenendo però i legami con cloni e rom padre per avere un set ancora funzionante. Per farlo è necessario generarsi il file gamelist.xml partendo dal Mame (es. "MAME -listxml>gamelist.xml") e poi caricarlo dall'applicazione.

Opzionalmente si possono scaricare e copiare nella cartella "folders" anche le suddivisione per genere/categoria/versione, ossia il file cat32.zip che trovate qui: http://www.progettoemma.net/?catlist. Il contenuto va scompattato in quanto la mia applicazione legge i file genre.ini, catlist.ini, version.ini e non entra nello zip.

La lista finale conterrà solo i giochi presenti su disco fisso (per quello il caricamento non è velocissimo) e quando vengono selezionati va a calcolare la dimensione di tutto ciò che è legato ad una rom (quindi ci metterà dentro anche le immagini, i file di configurazione, i cheat, i chd, ecc). Inoltre le rom che hanno un legame vengono selezionate di conseguenza (es. padre/figlio/clone). Questa parte verrà migliorata in futuro con blocchi e colori, visto che ora è possibile cancellare padri indipendentemente dalla presenta dei figli. Anche i bios verranno blindati proprio per ridurre al minimo gli eventuali errori.
Una volta scelti i giochi da eliminare, premendo il tastino rosso tutto questi file vengono spostati nella sottocartella "0-REMOVED" creata dal programma.

Per ripristinare la situazione basta spostare tutto ciò che è sotto 0-REMOVED di nuovo nella cartella de Mame. Nessun file viene cancellato, allego anche il sorgente in cui basta fare una piccola ricerca per capire che non esiste alcuna chiamata alla funzione File.Delete(). Ad ogni modo consiglio sempre di lavorare prima su una copia, così da vedere quale sarebbe l'effetto finale dell'operazione di pulizia.

Sulla mia macchina virtuale la lettura di tutte le quasi 30 mila rom non è proprio velocissima, ma ho cercato di ottimizzare al massimo per ridurre questi tempi. Ad esempio la ListView è virtuale e non contiene i dati che si vedono a video per intero (per i non addetti ai lavori significa gestire tutto a mano, dal disegno del checkbox a quello delle colonne, l'ordinamento, il doppio click, ecc).

Spero sia utile a qualcuno, visto che ci sono voluti quasi due giorni per arrivarci in fondo... :(
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Motoschifo
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 WebArcadeDatabase
Avatar utente
motoschifo

Gold Medal Donatore
Progetto Arcade Database
Progetto Arcade Database
Messaggi: 3271
Iscritto il: 12/07/2013, 20:29
Medaglie: 2
Città: Parma
Località: Parma
Grazie Inviati: 32 volte
Grazie Ricevuti: 31 volte
Contatta:

Re: MAME - Pulizia rom

Messaggio da motoschifo »

Volevo dirvi che ho apportato alcune piccole modifiche all'interfaccia, così per vedere l'impatto di alcune cosette su tanti dati.
Ho inserito un discorso di cache della lista per cui ora ci mette meno di 5 secondi a caricarsi, e nel caso di cambio del file xml/ini rifà tutto da capo (quindi anche 1 minuto come ora).
C'è un filtro in più in alto che serve per limitare i dati in griglia (like su codice rom e titolo del gioco).

Tutte cose per migliorare l'esperienza utente insomma... se c'è interesse posso anche pubblicarle una volta raggiunta una certa stabilità, fatemi sapere.
Motoschifo
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 WebArcadeDatabase
Avatar utente
NEOGENIO
Cab-maniaco
Cab-maniaco
Messaggi: 1318
Iscritto il: 11/07/2013, 3:53
Città: Sicilia

Re: MAME - Pulizia rom

Messaggio da NEOGENIO »

Ciao Motoschifo, da parte mia certamente, non so gli altri visto che non si stanno pronunciando... comunque vedi tu!
<-ciao->
Arcade a vita... dagli anni '80 per sempre!
Avatar utente
mossfet

Gold Medal
Cab-maniaco
Cab-maniaco
Messaggi: 1545
Iscritto il: 19/01/2011, 13:14
Medaglie: 1
Città: Roma
Località: Roma
Contatta:

Re: MAME - Pulizia rom

Messaggio da mossfet »

Io ho provato ad usarlo ma senza alcun risultato, non riescoba navigare subprogettoemma, quindi sono bloccato. Non è che nel pacchetto di distribuzione riesci ad aggiungere tutti i file necessari? Magari qualcuno lo scarica e non conosce progettoemma e rimane fermo al palo. Per il resto è il software che mancava nella scena m.a.m.e very very bravo!!


Sent from my iPhone using Tapatalk - now Free
EmuZone.it Founder
EmuMovies LifeTime Member
HyperSpin Platinum Member
Avatar utente
motoschifo

Gold Medal Donatore
Progetto Arcade Database
Progetto Arcade Database
Messaggi: 3271
Iscritto il: 12/07/2013, 20:29
Medaglie: 2
Città: Parma
Località: Parma
Grazie Inviati: 32 volte
Grazie Ricevuti: 31 volte
Contatta:

Re: MAME - Pulizia rom

Messaggio da motoschifo »

Ok allora la metto online, ditemi voi se avete problemi perchè io non riesco a provarla fino in fondo... la virtual machine non è proprio il massimo.

Come dicevo ho fatto alcune migliorie:
- filtro per cercare una parte della rom o del titolo del gioco, senza distinzione fra maiuscole e minuscole e con autosearch (stile Google, non serve dare invio per avere i risultati)
- sistemazione selezione rom cloni per evitare di cancellare file utili
- impossibilità di rimuovere i bios (anche qui per sicurezza)
- gestione cache dati per velocizzare di parecchio il caricamento
- inclusa la cartella "folders" che va copiata nel Mame (è il file cat32 versione 0.150 di ProgettoEmma)

In sostanza il punto più importante è l'ultimo, per quello ho usato una libreria esterna json e non l'ho mai provata su altri pc.
Quello che fa è verificare le date dei file gamelist.xml, folders\genre.ini, folders\catlist.ini e folders\version.ini, e se non è cambiato nulla rispetto rispetto all'ultimo lancio allora usa dei file temporanei (gamelist.xml.crc e gamelist.xml.cache).
Provata rapidamente ho visto un incremento di velocità netto... e questo mi ha fatto molto piacere! :)

Sul mio set corposo ha rimosso 20 mila rom e relative snap, titles, cfg, ecc. togliendo finalmente tutto ciò che non è arcade (pinball, mechanical, quiz, rompicapo giapponesi).

La metto su Google Drive perchè il limite qui è di 1MB: MAME Shrink 2.1.zip
L'eseguibile si trova in bin\release e dentro c'è anche il sorgente in C# 2010.
Motoschifo
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 WebArcadeDatabase
Rispondi

Torna a “Guide - How To - Topic importanti”