GUIDA ALLA RICOMPILAZIONE MAME

Tutti gli emulatori che ci possono servire sul nostro cab con SO Windows
Avatar utente
bllpla
God of Arcade
God of Arcade
Messaggi: 3100
Iscritto il: 24/07/2005, 19:09
Località: Bellaria (RN)
Contatta:

GUIDA ALLA RICOMPILAZIONE MAME

Messaggio da bllpla »

Guida compilazione M.A.M.E. di base:
Rimozione warning e modifiche frequenze giochi

Prima di tutto vi spiego in poche parole cosa stiamo per fare nel codice sorgente del M.A.M.E.
Caricando un qualsiasi gioco del M.A.M.E. la prima volta viene caricata sempre e comunque
la schermata GAMEINFO che visualizza le caratteristiche di base del gioco risoluzione refresh ecc.
la mia guida non agirà su questa cosa visto che viene visualizzata solo la prima volta che un gioco viene
avviato poi selezionando l' opzione skipgameinfo non viene più ripetuta.
La mia guida invece interviene su quelle schermate che si ripetono all' infinito senza possibilità di
evitarle o skipparle queste schermate io le chiamo warning (non sò come si chiamano di preciso)
e ne esistono di diversi tipi eccone un pò di esempi

GAME_IMPERFECT_COLOR
GAME_NOT_WORKING
GAME_NO_SOUND
GAME_UNEMULATED_PROTECTION
GAME_NO_COCKTAIL

nella maggior parte dei casi eliminare queste schermate non conviene e non porta nessun beneficio per wsempio

GAME_NOT_WORKING

inutile toglierla tanto il gioco non funzionerà lostesso :)

GAME_NO_SOUND

inutile toglierla tanto l' audio non funzionerà lostesso :)

e via di questo passo

un warning che potrebbe essere eliminato per rendere più professionale il nostro cab è questo

GAME_NO_COCKTAIL

chiaramente se il nostro cab non è un COCKTAIL :D

a questo punto passiamo all' opera e cominciamo a eliminare quello che ci interessa


- PARTE I Rimozione WARNING

Procuriamoci una copia del SOURCE del mame facilmente reperibile in qualsiasi sito che tratta M.A.M.E. http://mamedev.org/oldrel.html quì possiamo
reperire le versioni più vecchie http://mamedev.org/release.html quì invece le ultime.

Estraiamo il contenuto dell SOURCE nella cartella C:\MAME poi ci servirà per la compilazione, una volta estratto il
contenuto all' interno della cartella dovrebbero esserci la cartella "src" SOURCE, entriamoci dentro poi andiamo
dentro la cartella "drivers" questa è la cartella che ci interessa all' interno ci ritroveremo un sacco di file ".c"
che possono essere aperti con il semplice notepad di win :) questi file sono parte fondamentele del mame visto che quì
vengono raccolte tutte le info e le impostazioni per l' emulazione della macchina specificata.
Prendiamo come esempio la macchina "ace.c" che serve per il funzionamento del gioco "Allied Leisure"
apriamo il file (sempre con il notepad) e andiamo alla fine del testo dovremmo trovare una scritta tipo questa

GAME( 1976, ace, 0, ace, ace, 0, ROT0, "Allied Leisure", "Ace", GAME_NO_SOUND | GAME_IMPERFECT_COLORS )

a questo punto possiamo notare che il giocoha 2 "WARNING" "GAME_NO_SOUND | GAME_IMPERFECT_COLORS "
quindi il gioco in questione presenta seri problemi nell' emulazione "niente suono e colori non precisi"
i casi sono 2 o lasciamo stare e passiamo a un' altro driver o comunque rimuoviamo il "WARNING"
se scegliamo di rimuovere il "WARNING" non dobbiamo fare altro che eliminare le scritte e al loro posto aggiungere uno "0" (ZERO)

esempio

"WARNING attivo"

GAME( 1976, ace, 0, ace, ace, 0, ROT0, "Allied Leisure", "Ace", GAME_NO_SOUND | GAME_IMPERFECT_COLORS )

"WARNING eliminato"

GAME( 1976, ace, 0, ace, ace, 0, ROT0, "Allied Leisure", "Ace", 0 )

Altro esempio prendiamo il driver "docastle.c" lo apriamo (sempre con notepad) e andiamo in fondo dovremmo trovare una cosa simile


GAME( 1983, docastle, 0, docastle, docastle, 0, ROT270, "Universal", "Mr. Do's Castle (set 1)", 0 )
GAME( 1983, docastl2, docastle, docastle, docastle, 0, ROT270, "Universal", "Mr. Do's Castle (set 2)", 0 )
GAME( 1983, docastlo, docastle, docastle, docastle, 0, ROT270, "Universal", "Mr. Do's Castle (older)", 0 )
GAME( 1983, douni, docastle, docastle, docastle, 0, ROT270, "Universal", "Mr. Do vs. Unicorns", 0 )
GAME( 1984, dorunrun, 0, dorunrun, dorunrun, 0, ROT0, "Universal", "Do! Run Run (set 1)", 0 )
GAME( 1984, dorunru2, dorunrun, dorunrun, dorunrun, 0, ROT0, "Universal", "Do! Run Run (set 2)", 0 )
GAME( 1984, dorunruc, dorunrun, docastle, dorunrun, 0, ROT0, "Universal", "Do! Run Run (Do's Castle hardware, set 1)", 0 )
GAME( 1984, dorunrca, dorunrun, docastle, dorunrun, 0, ROT0, "Universal", "Do! Run Run (Do's Castle hardware, set 2)", 0 )
GAME( 1987, spiero, dorunrun, dorunrun, dorunrun, 0, ROT0, "Universal", "Super Pierrot (Japan)", 0 )
GAME( 1984, dowild, 0, dorunrun, dowild, 0, ROT0, "Universal", "Mr. Do's Wild Ride", 0 )
GAME( 1984, jjack, 0, dorunrun, jjack, 0, ROT270, "Universal", "Jumping Jack", 0 )
GAME( 1984, kickridr, 0, dorunrun, kickridr, 0, ROT0, "Universal", "Kick Rider", 0 )
GAME( 1985, idsoccer, 0, idsoccer, idsoccer, 0, ROT0, "Universal", "Indoor Soccer", GAME_NO_COCKTAIL )


questo driver è stato scritto per far funzionare tutti questi giochi visto che gli stessi funzionavano sullo stesso hardware
come possiamo notare i giochi funzionao tutti correttamente visto che tutti alla fine hanno lo "0" (ZERO) l' unico è "Indoor Soccer"
che presenta problemi nella visualizzazione "COCKTAIL" a questo punto visto che a noi non interessa la visualizzazione "COCKTAIL"
non faremo altro che eliminare la scritta e aggiungere uno "0" (ZERO) così

GAME( 1983, docastle, 0, docastle, docastle, 0, ROT270, "Universal", "Mr. Do's Castle (set 1)", 0 )
GAME( 1983, docastl2, docastle, docastle, docastle, 0, ROT270, "Universal", "Mr. Do's Castle (set 2)", 0 )
GAME( 1983, docastlo, docastle, docastle, docastle, 0, ROT270, "Universal", "Mr. Do's Castle (older)", 0 )
GAME( 1983, douni, docastle, docastle, docastle, 0, ROT270, "Universal", "Mr. Do vs. Unicorns", 0 )
GAME( 1984, dorunrun, 0, dorunrun, dorunrun, 0, ROT0, "Universal", "Do! Run Run (set 1)", 0 )
GAME( 1984, dorunru2, dorunrun, dorunrun, dorunrun, 0, ROT0, "Universal", "Do! Run Run (set 2)", 0 )
GAME( 1984, dorunruc, dorunrun, docastle, dorunrun, 0, ROT0, "Universal", "Do! Run Run (Do's Castle hardware, set 1)", 0 )
GAME( 1984, dorunrca, dorunrun, docastle, dorunrun, 0, ROT0, "Universal", "Do! Run Run (Do's Castle hardware, set 2)", 0 )
GAME( 1987, spiero, dorunrun, dorunrun, dorunrun, 0, ROT0, "Universal", "Super Pierrot (Japan)", 0 )
GAME( 1984, dowild, 0, dorunrun, dowild, 0, ROT0, "Universal", "Mr. Do's Wild Ride", 0 )
GAME( 1984, jjack, 0, dorunrun, jjack, 0, ROT270, "Universal", "Jumping Jack", 0 )
GAME( 1984, kickridr, 0, dorunrun, kickridr, 0, ROT0, "Universal", "Kick Rider", 0 )
-----------------------------------------------------------------------------------------------------------------------------
GAME( 1985, idsoccer, 0, idsoccer, idsoccer, 0, ROT0, "Universal", "Indoor Soccer", 0 )
-----------------------------------------------------------------------------------------------------------------------------

Questo e quanto semplice no ???
molto noioso visto che chi usa il romset completo dovrà passarsi manualmente più di 800 file :(
cmq molto semplice ;)

tutto questo serve per eliminare i "WARNING"

Passiamo ora alla modifica della frequenza di aggiornamento.

Come molti di noi sanno buona parte dei giochi M.A.M.E. lavora con frequenze di aggiornamento di 60hz il problema però e che molti altri
invece lavorano con le frequenze più disparate che possono partire da 30Hz (Green Beret) fino a 85.449219Hz (Spiders)

premetto una cosa cambiare la frequenza per esempio a green beret (30Hz) e portarla a (60Hz) renderà ingiocabile il gioco visto che
funzionerà il doppio più veloce quindi regolatevi subito per evitare di creare casini ;)
se invece vogliamo andare sul sicuro bisogna restare in un range accettabile diciamo dai (54HZ) fino ad un massimo di (61.973315HZ) poi si
passa a (68.933824) e credo sia davvero troppa la differenza cmq siete voi a decidere :D


- PARTE II Modifica REFRESH GIOCHI

Dobbiamo seguire le stesse procedure che abbiamo effettuato per eliminare i WARNING quindi dobbiamo portarci nella cartella drivers e selezionare
il driver che ci interessa o passarli tutti uno per uno questa volta però non dobbiamo andare in fondo alla pagina ma dobbiamo eseguire una ricerca
con questa parola chiave "MDRV_FRAMES_PER_SECOND" a queasto punto il risultato della ricerca ci troverà una cosa simile

"MDRV_FRAMES_PER_SECOND(60)"

dove il valore fra parentesi specifica la frequenza di aggiornamento del gioco (quindi i frames per secondo) in questo caso non dobbiamo fare
assolutamente niente visto che il framerate è già a 60Hz possiamo quindi continuare la ricerca "SEMPRE NELLO STESSO DRIVER" si perche moti driver
contengono le specifiche frequenze per ogni gioco supportato dallo stesso non è detto che se un gioco che funziona in un driver lavora a 60Hz tutti
i giochi che utilizzano lo stesso funzionino a 60Hz quindi una volta aperto il driver (sempre con notepad) bisogna utilizzare la funzione ricerca fino
a quando non viene trovata più la parola chiave "MDRV_FRAMES_PER_SECOND"

altro esempio con un driver un pelo più incasinato "midwunit.c"
questo driver serve per far funzionare i seguenti giochi

* Mortal Kombat 3
* Ultimate Mortal Kombat 3
* NBA Hangtime
* NBA Maximum Hangtime
* 2 On 2 Open Ice Challenge
* WWF Wrestlemania
* Rampage World Tour

facendo una ricerca su MAWS (http://www.mameworld.net/maws/) possiamo facilmente vedere a che frequenza lavora il gioco per esempio "Mortal Kombat 3"
che lavora a 54.815170Hz quindi quasi 55Hz è abbastanza vicino a 60Hz quindi possiamo modificare la frequenza senza perdere esageratamente in fedeltà
chiaramente un maniaco dell' emulazione perfetta storcerà il naso sentendo dire questa cosa ma come si dice il mondo è bello perchè è vario :)
tornano a "Mortal Kombat 3" dicevamo che lavora a una frequenza di 54.815170Hz apriamo il driver "midwunit.c" e facciamo la ricerca di
"MDRV_FRAMES_PER_SECOND" e dovremmo trovare questo
"MDRV_FRAMES_PER_SECOND(MKLA5_FPS)" questo driver richiama la frequenza "MKLA5_FPS" che sinceramente non sò cosa significhi resta il fatto che
richiama una frequenza di 54.815170Hz o la più simile in poche parole il gioco funziona a 54HZ ma non andiamo a complicarci la vita quello che ci interessa
è sempre rendere migliori i nostri giochi no ???
come sempre dobbiamo modificare il valore tra le parentesi () ecco l' esempio pratico

- Originale
"MDRV_FRAMES_PER_SECOND(MKLA5_FPS)"

- Modificato
"MDRV_FRAMES_PER_SECOND(60)"

tutto quì :)

spero di essere stato chiaro ed esaustivo nella mia guida :)

un consiglio che posso darvi è questo io ho utilizzato la versione 0.105 del mame che contiene la bellezza di 862 drivers 8o
tutti da ripassare e modificare per le varie modifiche un lavoro davvero considerevole se fatto da una persona sola
tornando al consiglio io sul mio cab non ho il romset completo visto che non mi interessa ma ho solo i giochi che mi interessano
con la versione di mame32 è possibile verificare il driver utilizzato da ogni singolo gioco nel mio caso 358 roms del mame equivalgono
a 195 driver :) quindi io ho modificato solo quei 195 lasciando inalterati i restanti un' altra soluzione sarebbe quella di suddividersi
i driver a seconda degli interessati l' unica cosa in questo caso la versione del mame da modificare deve essere la stessa
io i miei 195 li posso mettere a disposizione sempre che a qualcuno interessi la 0.105

a questo punto non ci resta che ricompilare tutto il nostro lavoro e per questo vi rimando alla pagina

http://web.tiscali.it/velmadda/compwin.htm (per la ricompilazione della versione a riga di comando)

http://web.tiscali.it/velmadda/comp32.htm (per la ricompilazione della versione con GUI)

e con questo termino la mia guida

un saluto dal vostro bllpla <-lol->

ciaooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
Ecco il link al mio sito con le foto del cabinato

http://www.webalice.it/bllpla/ DI NUOVO ON-LINE

MAMEPC NEW
CPU - AMD Athlon II X3 450 3.2GHz
Ram - 4GB Dual-Channel DDR3 Corsair XMS3
Video - Gainward GeForce GT 440 1GB
Scheda Madre - ASUS M4A87TD EVO
HD - 120 SSD Crucial
HD - 250 SSD Crucial
Avatar utente
Kernel
God of Arcade
God of Arcade
Messaggi: 6794
Iscritto il: 25/07/2005, 10:54
Grazie Inviati: 2 volte
Grazie Ricevuti: 2 volte

Re: GUIDA ALLA RICOMPILAZIONE MAME

Messaggio da Kernel »

Complimenti davvero un' utilissima guida bllpla <-clap->
bllpla ha scritto: molto noioso visto che chi usa il romset completo dovrà passarsi manualmente più di 800 file :(
cmq molto semplice ;)
Invece di fare tutto il lavoro a mano si potrebbe utilizzare il programmino "replace in files": http://www.emurasoft.com/replall/
Con questo prog. possiamo in automatico fare un replace di una stringa con un'altra allinterno di "n" files.

Esempio:
Immagine
Avatar utente
bllpla
God of Arcade
God of Arcade
Messaggi: 3100
Iscritto il: 24/07/2005, 19:09
Località: Bellaria (RN)
Contatta:

Re: GUIDA ALLA RICOMPILAZIONE MAME

Messaggio da bllpla »

ottimo ma il per strinca intera cosa intendi ?
per esempio per i frames se abbiamo un driver che contiene diversi giochi con diversi refresh

MDRV_FRAMES_PER_SECOND(60)
MDRV_FRAMES_PER_SECOND(58)
MDRV_FRAMES_PER_SECOND(60.606060)

il programma su cosa interviene ???

mentre invece per il discorso WARNING credo sia più complicato ancora visto che specifica il singolo gioco

GAME( 1976, ace, 0, ace, ace, 0, ROT0, "Allied Leisure", "Ace", GAME_NO_SOUND | GAME_IMPERFECT_COLORS )

<-think->
Ecco il link al mio sito con le foto del cabinato

http://www.webalice.it/bllpla/ DI NUOVO ON-LINE

MAMEPC NEW
CPU - AMD Athlon II X3 450 3.2GHz
Ram - 4GB Dual-Channel DDR3 Corsair XMS3
Video - Gainward GeForce GT 440 1GB
Scheda Madre - ASUS M4A87TD EVO
HD - 120 SSD Crucial
HD - 250 SSD Crucial
Avatar utente
Kernel
God of Arcade
God of Arcade
Messaggi: 6794
Iscritto il: 25/07/2005, 10:54
Grazie Inviati: 2 volte
Grazie Ricevuti: 2 volte

Re: GUIDA ALLA RICOMPILAZIONE MAME

Messaggio da Kernel »

bllpla ha scritto:ottimo ma il per strinca intera cosa intendi ?
Una serie di caratteri, una o più parole, chamala come vuoi :)
bllpla ha scritto: per esempio per i frames se abbiamo un driver che contiene diversi giochi con diversi refresh

MDRV_FRAMES_PER_SECOND(60)
MDRV_FRAMES_PER_SECOND(58)
MDRV_FRAMES_PER_SECOND(60.606060)

il programma su cosa interviene ???
In questo caso bosognerebbe fare 3 ricerche per le 3 voci e mettere sotto replace with "MDRV_FRAMES_PER_SECOND(60)". Se ci sono anche i refresh con vorgola allora la vedo dura. Conoscendoli tutti comunque si snellirebbe.
bllpla ha scritto:mentre invece per il discorso WARNING credo sia più complicato ancora visto che specifica il singolo gioco

GAME( 1976, ace, 0, ace, ace, 0, ROT0, "Allied Leisure", "Ace", GAME_NO_SOUND | GAME_IMPERFECT_COLORS )

<-think->
Qui si deve mettere come stringa di ricerca una valore tipo ", GAME_IMPERFECT_COLORS )" con la virgola all'inizio e la parentesi alla fine, in modo da essere sicuri che si tratti di sola una voce (al programma non interessa cosa sta intorno, ma cerca i caratteri inseriti nell'intero file) e si mette nel campo "replace with" il valore ", 0 )".
Si ripete l'operazione per tutte le voci che si desidera eliminare.
In pratica fa lo stesso lavoro che fa il notepad con il comando "sostituisci", ma lo fa simultaneamente su tutti i files che gli si da in pasto.

Poi si fa il lavoro con le varie combinazioni, assicurandosi sempre di mettere la virgola e la parentesi alla fine (così siamo sicuri di evitare casini).

Non è rapidissimo, ma con un po' di operazioni si fa tutto.
Ultima modifica di Kernel il 06/05/2008, 20:24, modificato 1 volta in totale.
Avatar utente
bllpla
God of Arcade
God of Arcade
Messaggi: 3100
Iscritto il: 24/07/2005, 19:09
Località: Bellaria (RN)
Contatta:

Re: GUIDA ALLA RICOMPILAZIONE MAME

Messaggio da bllpla »

io mi sono ripassato 2 volte i miei drivers prima per cercare il refresh
poi la seconda volta per il cocktail cmq provero :)
Ecco il link al mio sito con le foto del cabinato

http://www.webalice.it/bllpla/ DI NUOVO ON-LINE

MAMEPC NEW
CPU - AMD Athlon II X3 450 3.2GHz
Ram - 4GB Dual-Channel DDR3 Corsair XMS3
Video - Gainward GeForce GT 440 1GB
Scheda Madre - ASUS M4A87TD EVO
HD - 120 SSD Crucial
HD - 250 SSD Crucial
Avatar utente
rgbsystem

Donatore
Cab-maniaco
Cab-maniaco
Messaggi: 1316
Iscritto il: 08/07/2007, 21:46
Medaglie: 1
Grazie Ricevuti: 3 volte

Re: GUIDA ALLA RICOMPILAZIONE MAME

Messaggio da rgbsystem »

scusa la domanda scema, ma perchè ricompilare il mame?dove è il vantaggio?
Avatar utente
Kernel
God of Arcade
God of Arcade
Messaggi: 6794
Iscritto il: 25/07/2005, 10:54
Grazie Inviati: 2 volte
Grazie Ricevuti: 2 volte

Re: GUIDA ALLA RICOMPILAZIONE MAME

Messaggio da Kernel »

In questo caso si parlava di eliminare i messaggi di warning inutili e di modificare il refresh rate dei giochi per adatarli al monitor arcade.
Comunque ci possono essere tanti altri motivi.
Avatar utente
meneceo
Affezionato
Affezionato
Messaggi: 277
Iscritto il: 23/02/2007, 21:42
Contatta:

Re: GUIDA ALLA RICOMPILAZIONE MAME

Messaggio da meneceo »

Problema: l'avviso che appare al lancio di Bubble Bobble.

Ricordo che, qualche tempo fa, il team di sviluppo del mame annunciò urbi et orbi di aver sezionato un chip originale del gioco e di aver finalmente creato una rom pari pari all'originale.

E infatti nella versione immediatamente successiva l'avviso non compariva più.

Poi, zara zabara, l'avviso è tornato.

Si può eliminare?

Altra domanda, ma questa volta generale: non si possono nascondere i vari "Loading %" "Decrypting %" etc. ?? Sono odiosi. Idem per il quadro bianco che viene mostrato mentre il gioco si carica.

So che alcuni di voi sono in contatto con gli sviluppatori del mame: non potreste suggerire loro di introdurre una funzione che renda OPZIONALE la visualizzazione di queste informazioni? Sarebbe splendido per chi usa il mame in un cab.
Non timeo adversa
Avatar utente
Kernel
God of Arcade
God of Arcade
Messaggi: 6794
Iscritto il: 25/07/2005, 10:54
Grazie Inviati: 2 volte
Grazie Ricevuti: 2 volte

Re: GUIDA ALLA RICOMPILAZIONE MAME

Messaggio da Kernel »

meneceo ha scritto: Altra domanda, ma questa volta generale: non si possono nascondere i vari "Loading %" "Decrypting %" etc. ?? Sono odiosi. Idem per il quadro bianco che viene mostrato mentre il gioco si carica.

So che alcuni di voi sono in contatto con gli sviluppatori del mame: non potreste suggerire loro di introdurre una funzione che renda OPZIONALE la visualizzazione di queste informazioni? Sarebbe splendido per chi usa il mame in un cab.
Quoto.
Il problema è che hanno introdotto queste schermate di caricamento perchè c'erano dei volponi che vedendo la schermata nera pensavano che mame non funzionasse e mandavano delle false segnalazioni di bug. Quindi purtroppo penso che non renderanno mai opzionabile questa funzione.

Vediamo se Bllpla ci fa anche questo regalo :)
Avatar utente
bllpla
God of Arcade
God of Arcade
Messaggi: 3100
Iscritto il: 24/07/2005, 19:09
Località: Bellaria (RN)
Contatta:

Re: GUIDA ALLA RICOMPILAZIONE MAME

Messaggio da bllpla »

:)

per la questione bubble bobble la soluzione esiste :D sono riuscito a modificare il driver di bubble bobble in maniera da eliminare il warning sopracitato attenzione però sempre per la versione 0.105 del mame appena ho un sec (forse stanotte) uppo nel wiki il driver incriminato poi potete fare una prova per vedere se funziona anche con altre versioni ;)

spiacente ma per il momento la questione delle scritte, percentuali di caricamento le ho preferite abbandonare visto che in passato avevo provato a dargli un' occhiata senza capirci granchè :( anche io volevo utilizzare versioni più aggiornate di mame ma quello che mi ha spinto a non farlo sono state proprio queste maledette scritte, avevo anche provato ad informare ma senza nessun risultato (nessuno mi ha risposto in merito) quindi per il momento mi tengo il miomame 0.105 senza scritte o robe del genere :)


ciaooooooooooo
Ecco il link al mio sito con le foto del cabinato

http://www.webalice.it/bllpla/ DI NUOVO ON-LINE

MAMEPC NEW
CPU - AMD Athlon II X3 450 3.2GHz
Ram - 4GB Dual-Channel DDR3 Corsair XMS3
Video - Gainward GeForce GT 440 1GB
Scheda Madre - ASUS M4A87TD EVO
HD - 120 SSD Crucial
HD - 250 SSD Crucial
Rispondi

Torna a “Emulatori Windows”