Pagina 1 di 2
Compilare e personalizzare Mame
Inviato: 16/12/2010, 12:43
da PaTrYcK
Dato che Il Mame e' si puo' modificare e a proprio piacimento ( o quasi:
http://mamedev.org/devwiki/index.php/Is ... _Source%3F) potendo quindi ottenere delle versioni alternative, xche ' nn proviamo a creare una mini "FAQ" x provare a fare le prime compilazioni e modifiche in modo che ognuno se la possa personalizzare come vuole ?
Guide/manuali:
http://mrdo.mameworld.info/compile.html
viewtopic.php?f=27&t=12866
Allego zip con tante modifiche possibili (by Stormrider)
Re: Compilare e personalizzare Mame
Inviato: 16/12/2010, 14:11
da r77
Fino a qualche mese fa compilavo MameXT, poi dany ha smesso di seguirlo e x mancanza di tempo non l'ho + fatto, però l'idea di creare una guida non è male.
Appena ho un attimo controllo i miei appunti e butto giù 2 righe
Re: Compilare e personalizzare Mame
Inviato: 16/12/2010, 14:12
da PaTrYcK
r77 ha scritto:Fino a qualche mese fa compilavo MameXT, poi dany ha smesso di seguirlo e x mancanza di tempo non l'ho + fatto, però l'idea di creare una guida non è male.
Nn sapevo
r77 ha scritto:Appena ho un attimo controllo i miei appunti e butto giù 2 righe
Ottimo!!!

Re: Compilare e personalizzare Mame
Inviato: 16/12/2010, 16:47
da antoniomauro
Ciao Patrick!
Io per compilare ho seguito questa guida:
http://mamedev.org/tools/ utilizzando i sorgenti presi da mamedev
Che problema hai riscontrato?
ps. Che coincidenza...avevo pensato anch'io di ricompilare aggiungendo le features trovate sul layout di Stormrider
Re: Compilare e personalizzare Mame
Inviato: 16/12/2010, 18:37
da PaTrYcK
antoniomauro ha scritto:Ciao Patrick!
Io per compilare ho seguito questa guida:
http://mamedev.org/tools/ utilizzando i sorgenti presi da mamedev
Che problema hai riscontrato?
Sono molto curioso su quest oaspetto, ma nn ho mai provato a modificare il sorgente del mame e nn ho trovato molte info in rete, quindi cercavo delle info un po' precise su come procedere, quale compilatore hai utilizzato?
antoniomauro ha scritto:ps. Che coincidenza...avevo pensato anch'io di ricompilare aggiungendo le features trovate sul layout di Stormrider
Stesso spunto anche x me

Re: Compilare e personalizzare Mame
Inviato: 17/12/2010, 9:04
da antoniomauro
PaTrYcK ha scritto: quale compilatore hai utilizzato?
mingw
Nella guida che ti ho linkato trovi tutto!
Re: Compilare e personalizzare Mame
Inviato: 17/12/2010, 12:41
da PaTrYcK
antoniomauro ha scritto:PaTrYcK ha scritto: quale compilatore hai utilizzato?
mingw
Nella guida che ti ho linkato trovi tutto!
Ho letto la guida, trovo alcune difficolta' ad impostare diverse cose, esemio inizialmente da linea di comando (senza utilizzare .bat) setto:
set path = mingw \ mingw64-W32 \ bin
dato che ho la cartella del mame su c:/ setto
cd mame-source-path in modo che sia cd c:/mame
ma poi mi incarto, nn capisco come andare avanti e come applicare realmente le modifiche al sorgente...
Re: Compilare e personalizzare Mame
Inviato: 17/12/2010, 15:50
da antoniomauro
Ciao Patrick,
per applicare le modifiche ai sorgenti puoi seguire 2 strade:
1) utilizzare DIFF. Utile per applicare le modifiche rilasciate dai mamedev ma rognoso se il file diff non è perfettamente adatto alla versione che usi
2) navigare nella cartella src e utilizzare un buon editor di testo (notepad++)
Io personalmente applico le modifiche manualmente e poi genero un diff per pubblicarle.
Ecco ad esempio il diff delle modifiche da me scelte:
- tutti i giochi a 60hz
- Nessuna schermata di avviso
- Audio sync
Re: Compilare e personalizzare Mame
Inviato: 17/12/2010, 18:04
da PaTrYcK
No navigato talemente tanto sulla cartella src che m ie' venuto il mal di mare....
Nn trovo il filo logico...esempio vorrei modificare la vers. darkmame 140 ma nn avendo il diff nn si puo' fare, allora parto da mameuifx32 dove e' reperibile il source code:
http://www.mediafire.com/?o3dm1w9mkqbyace
Se opto x la soluzione 2 "navigare nella cartella src" mi perdo e nn so dove parare, se ad esempio volessi andare a vedere la scrittura del sorgente che riguarda la parte video dove sarebbe scritta?
Riesci a scrivere due righe sui primi passi da fare? Poi e' tutto piu' semplice...

Re: Compilare e personalizzare Mame
Inviato: 18/12/2010, 12:16
da antoniomauro
Mi pare di aver capito che con il c/c++ non vai molto d'accordo
Cerco di darti delle indicazioni passo passo dando per scontato 2 cose:
1) Hai già scaricato il sorgente da mamedev del mame 140 originale e scompattato in una cartella (es. c:\mingw\mame)
2) Hai già scaricato ed installato mingw e, lanciando il "make", riesci ad ottenere un eseguibile funzionante originale
Premetto che non sono un profondo conoscitore dell'architettura del mame e che mi sono limitato a fare interventi molto superficiali, ma vorrei cercare di farti capire il senso di tali modifiche in modo da darti un punto di partenza valido per cominciare a "smanettare" con il codice.
Per questo motivo adotterò un metodo più lungo del semplice applicare un diff (
) ovvero ti spiegherò dove andare a fare le modifiche manualmente.
Cominciamo ad aprire il file diff che ti ho mandato nel punto che riguarda la modifica dei 60hz:
Codice: Seleziona tutto
*** C:\mingw\mame_original/src/emu/video.c Wed Oct 20 23:01:18 2010 FILE ORIGINALE
--- C:\mingw\mame/src/emu/video.c Thu Dec 16 17:22:15 2010 FILE MODIFICATO
***************
*** 1788,1794 **** FILE ORIGINALE dalla riga 1788 alla 1794
void screen_device_config::static_set_refresh(device_config *device, attoseconds_t rate)
{
screen_device_config *screen = downcast<screen_device_config *>(device);
! screen->m_refresh = rate;
}
--- 1790,1796 ---- FILE MODIFICATO dalla riga 1790 alla 1796 ( in numeri di riga non corrispondono perchè ci sono altri cambiamenti nello stesso file che qui ho omesso)
void screen_device_config::static_set_refresh(device_config *device, attoseconds_t rate)
{
screen_device_config *screen = downcast<screen_device_config *>(device);
! screen->m_refresh = HZ_TO_ATTOSECONDS(60);
}
In pratica nel file src/emu/video.c la funzione "static_set_refresh" viene cambiata per impostare fisso "HZ_TO_ATTOSECONDS(60)" al posto del rate impostato nel driver
Comincia con il provare a fare questa modifica ed a compilare un patrickMame!
Re: Compilare e personalizzare Mame
Inviato: 18/12/2010, 15:37
da PaTrYcK
antoniomauro ha scritto:Mi pare di aver capito che con il c/c++ non vai molto d'accordo
Bravissimo, mai utilizzato, e' arrivata l'ora
antoniomauro ha scritto:Cerco di darti delle indicazioni passo passo dando per scontato 2 cose:
1) Hai già scaricato il sorgente da mamedev del mame 140 originale e scompattato in una cartella (es. c:\mingw\mame)
Ok
antoniomauro ha scritto: 2) Hai già scaricato ed installato mingw e, lanciando il "make", riesci ad ottenere un eseguibile funzionante originale
Nn ci sono ancora, mi incarto e nn riesco ad andare avanti....quindi da principio
Ho scaricato Mingw messo su cartella:

Su alcune guide ho letto che devo pure aggiungere delle librerie dx80_mgw nella sotto cartella include, cmq inserite anche queste, poi ho scaricato il sorgente mameuifx32:
antoniomauro ha scritto:Cominciamo ad aprire il file diff che ti ho mandato nel punto che riguarda la modifica dei 60hz:
Aperto il file ed ho visto le modifiche fatte, ma come lo do in "pasto" x essere compilato ottenendo la versione modificata del mameuifx32 del quale ho il sorgente? Come faccio a far partire la compilazione x crearmi una copia del mame modificata?
Come hai creato un diff?
Ti bastano questi miei dubbi?
Grazie!!!

Re: Compilare e personalizzare Mame
Inviato: 20/12/2010, 10:55
da antoniomauro
Crea un file di testo con estensione.bat ed incollaci questo:
Codice: Seleziona tutto
set path=%PATH%;"C:\mingw\bin"
cd mamesrc
make
pause
Salva il file come: c:\mingw\compila.bat
Esegui il file c:\mingw\compila.bat
Se ti da errori postali!
Re: Compilare e personalizzare Mame
Inviato: 20/12/2010, 11:35
da PaTrYcK
Nn trova alcuni file/dir...
ho provato a cercarli nella cartella che mi sono creato (della quale ho incollato le img nel post precedente) ma nn le ho, cosa mi sono dimenticato di scaricare?

Re: Compilare e personalizzare Mame
Inviato: 20/12/2010, 11:58
da antoniomauro
Sembra che il sorgente che hai scaricato sia sprovvisto dei file .mak (indispensabili)
Nella cartella C:\mingw\mamesrc\src\mame non c'è il file mame.mak?
Puoi provare la stessa operazione con i sorgenti del mame "liscio" preso da mamedev?
Re: Compilare e personalizzare Mame
Inviato: 20/12/2010, 12:30
da PaTrYcK
antoniomauro ha scritto:Sembra che il sorgente che hai scaricato sia sprovvisto dei file .mak (indispensabili)
Nella cartella C:\mingw\mamesrc\src\mame non c'è il file mame.mak?
Nada, nn sono presenti,li ho presi dal sito ufficiale del mameuifx32:
http://mame32fx.altervista.org/home.htm
Adesso provo con un sorgente differente

Re: Compilare e personalizzare Mame
Inviato: 20/12/2010, 12:33
da antoniomauro
Nella pagina che hai linkato c'è scritto:
MAMEUIFX source code.
Extract it over official MAME source.
Immagino che devi scaricare il sorgente originale e sovrascriverci questo!
Re: Compilare e personalizzare Mame
Inviato: 20/12/2010, 14:36
da PaTrYcK
Ecco, il mio errore e' stato quello di credere che quella indicazione fosse riferita alla vers 138...
Partita la compilazione quindi adesso tutto ok...
X fare le eventuali modifiche come si dovrebbe procedere?
Re: Compilare e personalizzare Mame
Inviato: 20/12/2010, 14:48
da antoniomauro
Riassumo quello che ti avevo scritto qualche post fa:
1) Scaricati notepad++
2) Apri il file C:\mingw\mame/src/emu/video.c
3) Vai alla riga 1788 e sostituisci la funzione
Codice: Seleziona tutto
void screen_device_config::static_set_refresh(device_config *device, attoseconds_t rate)
{
screen_device_config *screen = downcast<screen_device_config *>(device);
screen->m_refresh = rate;
}
con:
Codice: Seleziona tutto
void screen_device_config::static_set_refresh(device_config *device, attoseconds_t rate)
{
screen_device_config *screen = downcast<screen_device_config *>(device);
screen->m_refresh = HZ_TO_ATTOSECONDS(60);
}
4) Ricompila
Ti invito a studiare un po il file diff che ho postato dove sono presenti anche tutte le altre modifiche
Dimenticavo:
per alcune modifiche basta ricompilare mentre per altre devi eseguire prima un make clean
Senza dilungarmi troppo ti consiglio di provare prima a ricompilare (ci mette poco tempo) e, nel caso in cui avessi errori od il mame dovesse crashare, fai il clean e poi ricompile (molto + lungo)
Re: Compilare e personalizzare Mame
Inviato: 20/12/2010, 14:56
da PaTrYcK
Ottimo, grazie Antonio, stasera ci provo, vediamo cosa esce fuori

Re: Compilare e personalizzare Mame
Inviato: 21/12/2010, 14:09
da PaTrYcK
Ok, il mio primo mame ha visto la luce

Ho tolto le schermate di caricamento, impostato a 60hz e altre piccole cosette...
Alla fine il miglior modo x nn essere troppo dipendenti dalle versioni altrui e' crearsele da soli
Ho notato che per qualsiasi successiva modifica la compilazione e' velocissima e nn riparte da zero!
Domanda, x ottenere 60Hz fissi tu suggerisci la modifica su
video.c:
void screen_device_config::static_set_refresh(device_config *device, attoseconds_t rate) { screen_device_config *screen = downcast<screen_device_config *>(device); screen->m_refresh = rate; }
con
void screen_device_config::static_set_refresh(device_config *device, attoseconds_t rate) { screen_device_config *screen = downcast<screen_device_config *>(device); screen->m_refresh = HZ_TO_ATTOSECONDS(60); }
Mentre Stormrider procede modificando
video.h:
MDRV_DEVICE_CONFIG_DATA64(screen_config, refresh, HZ_TO_ATTOSECONDS(_pixclock) * (_htotal) * (_vtotal)) \
con
MDRV_DEVICE_CONFIG_DATA64(screen_config, refresh, HZ_TO_ATTOSECONDS((((HZ_TO_ATTOSECONDS(_pixclock)) * (_htotal) * (_vtotal))>= 50) ? 60 : ((HZ_TO_ATTOSECONDS(_pixclock)) * (_htotal) * (_vtotal)))) \
ed
MDRV_DEVICE_CONFIG_DATA64(screen_config, refresh, HZ_TO_ATTOSECONDS(_rate))
con
MDRV_DEVICE_CONFIG_DATA64(screen_config, refresh, HZ_TO_ATTOSECONDS(((_rate)>= 50) ? 60 : (_rate)))
Si puo' quindi raggiungere lo scopo con due differenti vie ?
Ho dato uno sguardo al tuo file diff, mi sembra di capire che si tratta di un txt dove sono presenti le modifiche da te eseguite, ma nn mi e' chiaro come poterle interpretare...
Inoltre come si da in pasto un file diff in modo da ricompilare l'exe? Come si crea un file diff?
Grazie!!!!