Pagina 1 di 2

Splitted, merged e non-merged set in export

Inviato: 17/08/2023, 22:23
da motoschifo
Recentemente ho avuto richieste in merito all'export per ClrMamePro e il tipo di set.
Mi spiego meglio: usando l'export di oggi e portandolo su ClrMamePro, in alcuni casi ho un warning o un errore di file mancanti o relazioni con il parent non disponibili.

Riepilogo i tipi di set del Mame:
  • splitted: formato classico, con parent completo e clone con le differenze
  • merged: parent completo anche di tutti i cloni, cloni vuoti (il file può essere rimosso)
  • non-merged: parent con i propri file, clone con i propri file (anche uguali)
Spero di non aver fatto confusione, non so perchè ma quando leggo merged lo intendo sempre come uno splitted <-wacko->
Prendiamo come esempio un parent ed un clone.

Parent 1941

Codice: Seleziona tutto

game (
	name "1941"
	description "1941: Counter Attack (World 900227)"
	year "1990"
	manufacturer "Capcom"
	sourcefile "capcom/cps1.cpp"
	rom ( name "41em_30.11f" size "131072" crc  "4249ec61" sha1 "5323cfa6938e6d95db8469f09b2fb5b5c5068bfc" )
	rom ( name "41em_35.11h" size "131072" crc  "ddbee5eb" sha1 "0fef53398f4e2cd6ccc7bc122dd893e0a4e2e052" )
	rom ( name "41em_31.12f" size "131072" crc  "584e88e5" sha1 "af254408d939cc439b5653e60afbccdf59777085" )
	rom ( name "41em_36.12h" size "131072" crc  "3cfc31d0" sha1 "7c0614e4e25502ff2d18aa4a97c91bf05ead875f" )
	rom ( name "41-32m.8h" size "524288" crc  "4e9648ca" sha1 "d8e67e6e3a6dc79053e4f56cfd83431385ea7611" )
	rom ( name "41-5m.7a" size "524288" crc  "01d1cb11" sha1 "621e5377d1aaa9f7270d85bea1bdeef6721cdd05" )
	rom ( name "41-7m.9a" size "524288" crc  "aeaa3509" sha1 "6124ef06d9dfdd879181856bd49853f1800c3b87" )
	rom ( name "41-1m.3a" size "524288" crc  "ff77985a" sha1 "7e08df3a829bf9617470a46c79b713d4d9ebacae" )
	rom ( name "41-3m.5a" size "524288" crc  "983be58f" sha1 "83a4decdd775f859240771269b8af3a5981b244c" )
	rom ( name "41_9.12b" size "65536" crc  "0f9d8527" sha1 "3a00dd5772f38081fde11d8d61ba467379e2a636" )
	rom ( name "41_18.11c" size "131072" crc  "d1f15aeb" sha1 "88089383f2d54fc97026a67f067d448eee5bd0c2" )
	rom ( name "41_19.12c" size "131072" crc  "15aec3a6" sha1 "8153c03aba005bab62bf0e8b3d15ec1c346326fd" )
	rom ( name "buf1" size "279" crc  "eb122de7" sha1 "b26b5bfe258e3e184f069719f9fd008d6b8f6b9b" )
	rom ( name "ioa1" size "279" crc  "59c7ee3b" sha1 "fbb887c5b4f5cb8df77cec710eaac2985bc482a6" )
	rom ( name "prg1" size "279" crc  "f1129744" sha1 "a5300f301c1a08a7da768f0773fa0fe3f683b237" )
	rom ( name "rom1" size "279" crc  "41dc73b9" sha1 "7d4c9f1693c821fbf84e32dd6ef62ddf14967845" )
	rom ( name "sou1" size "279" crc  "84f4b2fe" sha1 "dcc9e86cc36316fe42eace02d6df75d08bc8bb6d" )
	rom ( name "yi24b.1a" size "279" crc  "3004dcdf" sha1 "a73d86d1545af1d99a03d88af83449ec82b03c5c" )
	rom ( name "iob1.11e" size "279" crc  "3abc0700" sha1 "973043aa46ec6d5d1db20dc9d5937005a0f9f6ae" )
)
Clone 1941u

Codice: Seleziona tutto

game (
	name "1941u"
	description "1941: Counter Attack (USA 900227)"
	year "1990"
	manufacturer "Capcom"
	romof "1941"
	cloneof "1941"
	sourcefile "capcom/cps1.cpp"
	rom ( name "41u_30.11f" size "131072" crc  "be5439d0" sha1 "a62e0aa4f13f504c0eded99d731f7c820c51cb3d" )
	rom ( name "41u_35.11h" size "131072" crc  "6ac96595" sha1 "efff8185fd1aee29d9b5164a9aac61f77f769ae4" )
	rom ( name "41u_31.12f" size "131072" crc  "9811d6eb" sha1 "6dda86a3a726a2b5459f0b90f58343966e9783cc" )
	rom ( name "41u_36.12h" size "131072" crc  "a87e6137" sha1 "d4b63a0c14a35ebd61cddd01cdc6fc955d521ae2" )
	rom ( name "41-32m.8h" size "524288" crc  "4e9648ca" sha1 "d8e67e6e3a6dc79053e4f56cfd83431385ea7611" )
	rom ( name "41-5m.7a" size "524288" crc  "01d1cb11" sha1 "621e5377d1aaa9f7270d85bea1bdeef6721cdd05" )
	rom ( name "41-7m.9a" size "524288" crc  "aeaa3509" sha1 "6124ef06d9dfdd879181856bd49853f1800c3b87" )
	rom ( name "41-1m.3a" size "524288" crc  "ff77985a" sha1 "7e08df3a829bf9617470a46c79b713d4d9ebacae" )
	rom ( name "41-3m.5a" size "524288" crc  "983be58f" sha1 "83a4decdd775f859240771269b8af3a5981b244c" )
	rom ( name "41_9.12b" size "65536" crc  "0f9d8527" sha1 "3a00dd5772f38081fde11d8d61ba467379e2a636" )
	rom ( name "41e_18.11c" size "131072" crc  "d1f15aeb" sha1 "88089383f2d54fc97026a67f067d448eee5bd0c2" )
	rom ( name "41_19.12c" size "131072" crc  "15aec3a6" sha1 "8153c03aba005bab62bf0e8b3d15ec1c346326fd" )
	rom ( name "buf1" size "279" crc  "eb122de7" sha1 "b26b5bfe258e3e184f069719f9fd008d6b8f6b9b" )
	rom ( name "ioa1" size "279" crc  "59c7ee3b" sha1 "fbb887c5b4f5cb8df77cec710eaac2985bc482a6" )
	rom ( name "prg1" size "279" crc  "f1129744" sha1 "a5300f301c1a08a7da768f0773fa0fe3f683b237" )
	rom ( name "rom1" size "279" crc  "41dc73b9" sha1 "7d4c9f1693c821fbf84e32dd6ef62ddf14967845" )
	rom ( name "sou1" size "279" crc  "84f4b2fe" sha1 "dcc9e86cc36316fe42eace02d6df75d08bc8bb6d" )
	rom ( name "yi24b.1a" size "279" crc  "3004dcdf" sha1 "a73d86d1545af1d99a03d88af83449ec82b03c5c" )
	rom ( name "iob1.11e" size "279" crc  "3abc0700" sha1 "973043aa46ec6d5d1db20dc9d5937005a0f9f6ae" )
)
Quindi avendo questi 3 tipi e volendo mettere un selettore nelle opzioni di esportazione, come dovrebbero cambiare i file dat?
Io pensavo di togliere cloneof/romof da un set non-merged (quindi ciascuno zip ha tutti i file necessari).
Il primo problema è che non saprei che fare nel caso di merged (se non eventualmente togliere tutte le rom o addirittura il file in export in caso di clone).
Il secondo è che romof potrebbe contenere dei bios, come in mslug/neogeo, quindi in questo caso dovrebbe essere tenuto. Ma è un casino verificare ulteriormente se il link è un bios ed eventualmente rimuoverlo, mi piacerebbe una regola più lineare.
Inoltre è corretto agire in questo modo o si vanno a creare problemi con ClrMamePro?
Ad esempio dat senza rom producono errori? A memoria direi di si, ma non riesco a provarlo in questo momento.
Il default ovviamente sarebbe splitted, quindi i file dat risulteranno una copia dell'xml del Mame.

In caso di dubbi, la documentazione ufficiale è qui: https://docs.mamedev.org/usingmame/aboutromsets.html

Re: Splitted, merged e non-merged set in export

Inviato: 18/08/2023, 16:13
da Tox Nox Fox
Io uso il metodo del romset full in non-merged, poi shrink e via.
Credo sia l'unico sistema efficace per non avere errori o dimenticanze.
Per dat senza rom cosa intendi ? Perché se usi le opzioni corrette problemi non ne hai. Uso i .dat anche per gli extra di AntoPisa

Re: Splitted, merged e non-merged set in export

Inviato: 18/08/2023, 17:51
da motoschifo
Mi hanno chiesto di togliere romof/cloneof perchè il set controllato dal dat risultante restituisce errori.
Se si crea un set con solo 1941u e si mette tutto lì (non-merged), il software segnala che manca il legame con il parent e che manca la rom 1941.
Non ricordo perchè lo facevo anni fa, ma anche se ci fossero opzioni speciali, avere un dato romof/cloneof per un set non-merged risulta sbagliato e rischia di ignorare invece gli errori.
Per quel motivo pensavo di aggiungere questa opzione, da usare ovviamente su export specifici.

Re: Splitted, merged e non-merged set in export

Inviato: 18/08/2023, 17:54
da motoschifo
Tox Nox Fox ha scritto: 18/08/2023, 16:13 Per dat senza rom cosa intendi ? Perché se usi le opzioni corrette problemi non ne hai. Uso i .dat anche per gli extra di AntoPisa
Se indico le rom del parent inesistente, ClrMamePro darà giustamente errore.
Da qui l'idea di togliere tutti i nodi "rom" per i cloni nei set merged.
Ho visto il sorgente e nell'export è prevista questa possibilità, quindi direi che non ci sono errori.

Re: Splitted, merged e non-merged set in export

Inviato: 18/08/2023, 18:51
da Tox Nox Fox
Ah ok chiaro

Re: Splitted, merged e non-merged set in export

Inviato: 19/08/2023, 13:41
da motoschifo
Intanto ho pubblicato la modifica, per ora disponibile solo per l'esportazione in formato DAT.

Re: Splitted, merged e non-merged set in export

Inviato: 28/12/2023, 11:26
da Nikoh
@motoschifo ciao, vorrei divertirmi a scriptare qualcosa tipo clrmamepro multipiattaforma (finalmente un rom manager nativo anche per linux), magari con funzioni aggiuntive ect etc.
Ho cominciato a dare un'occhiata al sito di sviluppo ufficiale mame, per caso saresti interessato a darmi una mano in questa cosa, magari integrarlo col tuo sito db?

Re: Splitted, merged e non-merged set in export

Inviato: 28/12/2023, 12:18
da Nikoh
motoschifo ha scritto: 17/08/2023, 22:23 Il secondo è che romof potrebbe contenere dei bios, come in mslug/neogeo, quindi in questo caso dovrebbe essere tenuto. Ma è un casino verificare ulteriormente se il link è un bios ed eventualmente rimuoverlo, mi piacerebbe una regola più lineare.
Stavo appunto affrontando questo problema... ho scoperto un romset manager, si chiama IGIR, lo stavo provando ed ho notato che costruendo un romset "split" in tutti i parent NeoGeo include tutti i file del bios, quelli in neogeo.zip per intenderci; non riesco a capire se si tratta di un errore del rom manager e quindi ad esempio clrmamepro si comporta in altro modo oppure se è formalmente corretto poiché nel file dat che ho (quello ufficiale libretro) tutti i file di bios sono inclusi nelle rom, salvo però aggiungere che ogni rom è "romof=neogeo"

Re: Splitted, merged e non-merged set in export

Inviato: 28/12/2023, 13:05
da motoschifo
Nikoh ha scritto: 28/12/2023, 11:26 Ho cominciato a dare un'occhiata al sito di sviluppo ufficiale mame, per caso saresti interessato a darmi una mano in questa cosa, magari integrarlo col tuo sito db?
Come tempo purtroppo non ne ho molto, anzi non ne ho proprio.
Nel 2024 proseguirò con il sito dato che sono in arrivo parecchie novità, comunque tu inizia così vedi se la cosa è fattibile. Poi per domande apri pure un thread qui sul forum, così tutti potremo aiutarti o supportarti.
La fase di export è molto complessa, considera sempre che il sito lavora su tutte le versioni del Mame e che una ricerca potrebbe includere più di una release. Ma proprio per questo motivo potrebbe dare qualcosa in più rispetto ad altri.

Re: Splitted, merged e non-merged set in export

Inviato: 28/12/2023, 13:21
da motoschifo
Nikoh ha scritto: 28/12/2023, 12:18 Stavo appunto affrontando questo problema... ho scoperto un romset manager, si chiama IGIR, lo stavo provando ed ho notato che costruendo un romset "split" in tutti i parent NeoGeo include tutti i file del bios, quelli in neogeo.zip per intenderci; non riesco a capire se si tratta di un errore del rom manager e quindi ad esempio clrmamepro si comporta in altro modo oppure se è formalmente corretto poiché nel file dat che ho (quello ufficiale libretro) tutti i file di bios sono inclusi nelle rom, salvo però aggiungere che ogni rom è "romof=neogeo"
Le informazioni che ho io sono frutto dell'esperienza, nel Mame non ho trovato quasi mai nulla di scritto. Considera che ero partito quasi 10 anni fa quindi tante cose al tempo erano "misteriose" per me.
L'attributo "romof" serve unicamente come referenza, ovvero per cercare altri file se non presenti nello zip del romset.
Secondo me se hai tutti i bios nello zip, puoi tranquillamente rimuovere quell'attributo, o viceversa puoi spostare i bios in neogeo.zip.
Probabilmente il rom manager li ha inclusi in quanto riportato nei nodi "roms", ma in teoria dovrebbe ragionare in questo modo:
- prima processo i romset senza referenza
- trovo tutti i file da includere in ciascuno zip
- seconda passata con i romset con almeno una referenza
- trovo tutti i file da includere negli zip che non siano già stati inclusi negli zip collegati da romof/biosof/cloneof

I dat e gli xml infatti contengono tutti i file necessari, alcuni dovrebbero essere solo nel romset, altri solo in romof/cloneof.
Ma sui bios forse inizialmente non c'era questa distinzione e non sono stati considerati nello stesso modo.

Re: Splitted, merged e non-merged set in export

Inviato: 28/12/2023, 14:10
da Nikoh
motoschifo ha scritto: 28/12/2023, 13:05
Nikoh ha scritto: 28/12/2023, 11:26 Ho cominciato a dare un'occhiata al sito di sviluppo ufficiale mame, per caso saresti interessato a darmi una mano in questa cosa, magari integrarlo col tuo sito db?
Come tempo purtroppo non ne ho molto, anzi non ne ho proprio.
Nel 2024 proseguirò con il sito dato che sono in arrivo parecchie novità, comunque tu inizia così vedi se la cosa è fattibile. Poi per domande apri pure un thread qui sul forum, così tutti potremo aiutarti o supportarti.
La fase di export è molto complessa, considera sempre che il sito lavora su tutte le versioni del Mame e che una ricerca potrebbe includere più di una release. Ma proprio per questo motivo potrebbe dare qualcosa in più rispetto ad altri.
Io avevo in mente di realizzare un rom manager che lavorerebbe su file dat già pronti, deputando altri alla loro produzione; ovviamente volendo dare quel quid in più si potrebbe fare qualcosa in questo senso ma lo vedremo in seguito, intanto provo a buttare giù qualcosa che ricostruisca uno stesso romset in formati diversi, quindi il passaggio tra gli stati fullnonmerged, nonmerged, split e merged...

Re: Splitted, merged e non-merged set in export

Inviato: 29/12/2023, 19:11
da Nikoh
Il lavoro prosegue, sto usando python, fatto il parser, ho verificato che il tag "romof" viene utilizzato esclusivamente per le rom parents del NeoGeo; magari era stato pensato anche per futuri sviluppo ma ad oggi non serve ad altro...

Re: Splitted, merged e non-merged set in export

Inviato: 30/12/2023, 13:30
da motoschifo
Sicuro dell'attributo romof? Io lo vedo usato in tanti romset, non credo solo neogeo.

Re: Splitted, merged e non-merged set in export

Inviato: 30/12/2023, 14:15
da Nikoh
motoschifo ha scritto: 30/12/2023, 13:30 Sicuro dell'attributo romof? Io lo vedo usato in tanti romset, non credo solo neogeo.
Da quello che vedo romof è sempre uguale a cloneof (anche in caso di cloni neogeo); l'unico caso in cui non hanno lo stesso valore è nei parent neogeo in cui cloneof scompare e romof riporta "neogeo".
Se qualcuno nota qualcosa di diverso me lo riporti per cortesia.

Re: Splitted, merged e non-merged set in export

Inviato: 30/12/2023, 18:02
da Nikoh
Dubbio:
Secondo voi in un gioco tipo alibaba, di cui nel dat ho solo questo:

Codice: Seleziona tutto

	<game name="alibaba" sourcefile="pre90s/d_pacman.cpp">
		<description>Ali Baba and 40 Thieves</description>
		<year>1982</year>
		<manufacturer>Sega</manufacturer>
		<rom name="6e" size="4096" crc="38d701aa"/>
		<rom name="6f" size="4096" crc="3d0e35f3"/>
		<rom name="6h" size="4096" crc="823bee89"/>
		<rom name="6k" size="4096" crc="474d032f"/>
		<rom name="6l" size="4096" crc="5ab315c1"/>
		<rom name="6m" size="2048" crc="438d0357"/>
		<rom name="5e" size="2048" crc="85bcb8f8"/>
		<rom name="5h" size="2048" crc="38e50862"/>
		<rom name="5f" size="2048" crc="b5715c86"/>
		<rom name="5k" size="2048" crc="713086b3"/>
		<rom name="82s123.e7" size="32" crc="2fc650bd"/>
		<rom name="82s129.a4" size="256" crc="3eb3a8e4"/>
		<rom name="82s126.1m" size="256" crc="a9cc86bf"/>
		<rom name="82s126.3m" size="256" crc="77245b66"/>
		<rom name="ab7.bin" size="2048" crc="52294ef5"/>
		<video type="raster" orientation="vertical" width="224" height="288" aspectx="3" aspecty="4"/>
		<driver status="good"/>
	</game>
con che criterio si cataloga la region o la lingua?

Re: Splitted, merged e non-merged set in export

Inviato: 30/12/2023, 18:36
da motoschifo
Per la lingua non esiste una catalogazione, se fatta da appassionati con il file languages.ini.
Considera nel caso che può assumere più valori, quindi ad esempio il gioco potrebbe essere in italiano+inglese+francese contemporaneamente.

Re: Splitted, merged e non-merged set in export

Inviato: 30/12/2023, 18:58
da Nikoh
motoschifo ha scritto: 30/12/2023, 18:36 Per la lingua non esiste una catalogazione, se fatta da appassionati con il file languages.ini.
Considera nel caso che può assumere più valori, quindi ad esempio il gioco potrebbe essere in italiano+inglese+francese contemporaneamente.
Il fatto dei più valori lo so, ma quando ad esempio si creano i set 1G1R con altri rom manager, come si comportano rispetto ad una rom che non ha region? Come la considerano?

Re: Splitted, merged e non-merged set in export

Inviato: 30/12/2023, 20:27
da motoschifo
Non ne ho idea ma non credo che sia compito del rom manager occuparsi di questa cosa, lui al massimo filtra ciò che gli dici di filtrare.
Una ricerca di quel tipo avrebbe senso se fatta dal sito, poi esportata in ini/dat/xml, ma richiederebbe una gestione delle relazioni in modo da scartare lingue o impostare un ordine di preferenze ben preciso.
Inoltre non essendoci nemmeno il legame tra i giochi la vedo abbastanza dura.
Per il Mame è un romset con un titolo, non un gioco in italiano o inglese.

Re: Splitted, merged e non-merged set in export

Inviato: 30/12/2023, 20:30
da motoschifo
Cercando rapidamente in giro ho visto che alcuni rom manager usano il nome per identificare la lingua e le relazioni tra i giochi.
Secondo me un approccio di questo tipo potrebbe risultare impreciso, specialmente se non seguito o verificato.
Nel caso facci sapere comunque se intendi gestirlo.

Re: Splitted, merged e non-merged set in export

Inviato: 04/01/2024, 0:00
da Nikoh
Ragazzi è una giungla... In pratica coesistono molti (troppi) standard usati per creare file dat, alcuni oramai in disuso altri in uso e tutti con sintassi differenti; inoltre se volessimo considerare il logiqx come standard de facto, anche all'interno di questo ci sono delle lacune enormi, in pratica non è dato sapere di quale sistema siano le rom che si stanno manipolando, se non in base a campi arbitrari e descrittivi nell'header. Io sono nuovo (relativamente) di queste cose perché uso ed ho sempre usato MiSTer che per fortuna per il momento non ha ancora bisogno di un rom manager per gli arcades, ma mi viene da pensare: come cavolo ha fatto a funzionare il tutto sino ad ora?
In pratica tu puoi scaricare un romset con il suo dat e scoprire che non è compatibile con il rom manager che hai sempre usato; e questo è il minimo, un buon software dovrebbe compattare automaticamente le i pacchetti per il mame/FinalBurn perché è così che lui se li aspetta altrimenti non funzionerà, questa operazione non può essere fatta perché il file dat del romset non dice inequivocabilmente che si parla di mame... eppure basterebbe veramente poco, magari aggiungere un campo "system".
Anche per il fatto della lingua, è impensabile demandare la specifica della lingua/regione al nome del file quando si hanno a disposizione gli hash crc, sha etc.

Scusate ma ogni file dat che guardo è diverso dall'altro senza quasi punti in comune, solo sulla lista dei file più o meno ci siamo; ad ogni modo vorrei tirare fuori qualcosa di buono ed anche se non sono un mago del codice credo di potermici dedicare con successo e se qualcuno decidesse di darmi una mano potremmo anche vedere di migliorare il sistema, magari cercando di proporre qualche modifica e l'aggiunta di qualche campo qua e là, e magari parallelamente creare un iniziale supporto ad un file json.