libretro / libretro-database

Repository containing cheatcode files, content data files, etc.
Creative Commons Attribution Share Alike 4.0 International
931 stars 789 forks source link

No match for digital nes games #1403

Open fekir opened 1 year ago

fekir commented 1 year ago

For example, from below is not recognized by retroarch, even if it has an entry on no-intro.

https://mhughson.itch.io/from-below

As pointed out in the comments, the original file has a given nes header, while no-intro replaced it with a nes 2.0 header before hashing, as it is done for all nes roms.

As no-intro also provides the hashes for the roms without header, it might make more sense that retroarch calculates the hash for nes files without the header if it does not found any match, ie ignore the first 16 bytes

RobLoach commented 1 year ago

:+1: Feel free to submit it to https://github.com/libretro/libretro-database/blob/master/metadat/homebrew/Nintendo%20-%20Nintendo%20Entertainment%20System.dat

fekir commented 1 year ago

@RobLoach what should I submit? The games are already upstream (nointro in this case)

In this particular case: https://datomatic.no-intro.org/index.php?page=show_record&s=45&n=3375

RobLoach commented 1 year ago

If you have the full No-Intro set, it would be great to update the Headered .dat file for NES: https://github.com/libretro/libretro-database/blob/master/dat/Nintendo%20-%20Nintendo%20Entertainment%20System.dat

Makes sense that From Below isn't showing up, because that was dumped to No-Intro after that .dat file was updated. Clrmamepro's Dir2Dat or similar will do it for you.

fekir commented 1 year ago

There is a misunderstanding.

I have to modify the downloaded rom, otherwise retroarch does not recognize it.

Nes roms have an optional header. No-intro overrides this header.

Thus the hashes do not match.

If I adapt the header, then the rom is recognized.

As no-intro also has headerless hashes, a more robust approach would be to calculate a headerless hash.

RobLoach commented 1 year ago

Correct. Some people have exported some set with the headers over at https://github.com/libretro/libretro-database/blob/master/dat/Nintendo%20-%20Nintendo%20Entertainment%20System.dat

Otherwise, Manual Scan is the best option.

fekir commented 1 year ago

I see, but wouldn't it be better to use the data already available at no-intro instead of duplicating it?

RobLoach commented 1 year ago

The data provided from No-Intro lives at https://github.com/libretro/libretro-database/blob/master/metadat/no-intro/Nintendo%20-%20Nintendo%20Entertainment%20System.dat

RetroArch doesn't currently support skipping the NES header when scanning, hence our need to have a seperate one for with a common set of headered CRCs. The CRCs end up being different, so it's not duplicate.

fekir commented 1 year ago

RetroArch doesn't currently support skipping the NES header when scanning, hence our need [...]

My proposal/feature request was to add that support ;)

The CRCs end up being different, so it's not duplicate

Yes, but it is already possible to recognize those games, it's a duplicated effort.

But maybe this is the wrong repo for adding such feature?

RobLoach commented 10 months ago

Found out what's wrong...

When downloading the sets, we need to check toggle "Pirate, Homebrew, Aftermarket" :facepalm:

RobLoach commented 10 months ago

But even with that, I'm unsure the hashes are the same for the release vs what's in No-Intro.