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 <-clap->
r77 ha scritto:Appena ho un attimo controllo i miei appunti e butto giù 2 righe
Ottimo!!! <-lol->

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 :wink:

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.... 8-)

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... :wink:

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 :-D :-D
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 (

Codice: Seleziona tutto

patch -p0 -E <diffname.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 :-D :-D
Bravissimo, mai utilizzato, e' arrivata l'ora :wink:
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:
Immagine
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:
Immagine

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? 8-)
Grazie!!! :wink:

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?
Immagine

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 <-gamer1->

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

Codice: Seleziona tutto

set path=%PATH%;"C:\mingw\bin"

cd mame

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 :wink:

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 :wink:
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!!!!