andrebrait / 1g1r-romset-generator

A small utility that uses No-Intro DATs to generate 1G1R ROM sets
GNU General Public License v3.0
220 stars 20 forks source link

Roms filtered out that shouldn't be (keeps World, when Europe is prefered and exists) #48

Open retropiuser opened 6 months ago

retropiuser commented 6 months ago

I get some roms filtered out although they shouldn't be. I'm working on a NES set with a No-Intro p/c dat.

My command: python generate.py -r GER,EUR,USA -l de,en --exclude "Virtual Console,GameCube" --no-all --all-regions-with-lang -d "C:\NoIntro1G1R\dats\Nintendo - Nintendo Entertainment System (Headered) (Parent-Clone) (20240317-074124).dat" -i "C:\NoIntro1G1R\Orig\NES" -o "C:\NoIntro1G1R\1G1R\NES"

This works for most of the roms. The ones form Germany are kept. If there isn't a rom from Germany, European ones are kept. Only after that USA and World. However, there are a few exceptions that make no sense to me. These are: Castlevania (World) (Konami Collector's Series) (Unl).zip is kept over Castlevania (Europe).zip Castlevania II - Simon's Quest (World) (Konami Collector's Series) (Unl).zip is kept over Castlevania II - Simon's Quest (Europe).zip Castlevania III - Dracula's Curse (World) (Konami Collector's Series) (Unl).zip is kept over Castlevania III - Dracula's Curse (Europe).zip Contra (World) (Konami Collector's Series) (Unl).zip is kept over Probotector (Europe).zip Super C (World) (Konami Collector's Series) (Unl).zip is kept over Probotector II - Return of the Evil Forces (Europe).zip Jungle Book, The (World) (Disney Classic Games).zip is kept over Jungle Book, The (Europe).zip Super Mario Bros. (World).zip is kept over Super Mario Bros. (Europe).zip

Any idea why this is happening?

andrebrait commented 6 months ago

Hm, that's weird. Unlicensed titles shouldn't be preferred over licensed ones. Let me take a look here and I'll get back to you.

andrebrait commented 6 months ago

Ok, I think I understand why this happened. The sorting logic thinks those unlicensed ROMs are better because they have more of the regions you selected.

World means USA,Europe,Japan so they score "higher" than ROMs with only Europe. It's something I likely need to fix for some cases, like unlicensed titles, etc. but it's hard to do that in this project. DATROMTool will not have such limitations.

Could you try adding the following to your command and see if it helps?

--avoid (Unl)

retropiuser commented 6 months ago

Thanks a lot for your fast reply. Using --avoid (Unl) does help to avoid unlicensed titles.

However, I have to say the way the generator currently works is highly counter-intuitive. When specifying -r GER,EUR,USA, I expect that first we look for titles with "Germany". If it's found, keep this rom and throw away all other for this game. If and only if it's not found, look for titles with "Europe" and so on. This is an exclusion process that has nothing to do with the more the better.

Thus, I would expect the following prioritization order: Germany, Europe, USA, World. "Europe" is 100% Europe, "USA" is 100% USA. "World" is only 33% Europe. Why not go for "Europe" over "World" when it is explicitly stated in 2nd place?

I also came across this thread that seems to be about the same issue: https://github.com/andrebrait/1g1r-romset-generator/issues/43 So I'm another person who would like to suggest that "World" should be explicitly added to the regions list so it can be added way down.

Though I haven't looked into DATROMTool you mentioned yet. Maybe that's a solution.