Pagina 1 di 3

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.