Jump to content
LaunchBox Community Forums
Belmont

RetroAchievements Fix

Recommended Posts

Hi! Long time premium user here, pretty much first time posting.

I love the retroachievements integration in LaunchBox/BigBox, but after playing around with it a little bit, I came to the conclusion that the fuzzy matching between LB and RA is just not working out. Either some games are confused for others, or are not displaying at all due to my titles not matching the RA titles.

Could we do better? Two things come to mind:

A) Match on CRC32 (which RA is using), or

B) Give us a hook to provide the matching ourselves (i.e.: let us add an a RetroAchievements ID on the game details to override the fuzzy matching),

Or is there a hook already that I could use to write my own matching code?

I'll be honest -- currently I can't make use of the feature because the miss-matching is bad enough that I find it embarassing (which is my problem -- I'll give you that). I get the "it just works-ish" approach that is currently implemented, and I'm not suggesting it goes away, but for those of us who are "ocd-ing all over our collection" and wouldn't mind putting in the effort, an alternative solution would be nice.

I tried reporting this issue before on bitbucket but it didn't get any attention. Surely I'm not the only one annoyed by this?

Otherwise I absolutely love this product. Please keep up the good work!

 

Share this post


Link to post
Share on other sites

It may not strictly be a matching issue. Retro Achievements nearly always use the original rom for achievements. So if your default roms being launched in Launchbox are (rev 1) (rev a) etc then that is simply the wrong rom and not strictly a matching issue. I use Retro Achievements myself and its very rare that i find they are not working, and in those cases i just change the default rom launched to the "original" one and not a revision.

Share this post


Link to post
Share on other sites

It's not a ROM issue -- it's the way LaunchBox matches the game to the RA DB.

Point in case: The RA still works in RetroArch, and the achievements are reflected in my account, but LB doesn't show them.

See:

https://bitbucket.org/jasondavidcarr/launchbox/issues/4917/lets-fix-the-retroachievement-integration

https://bitbucket.org/jasondavidcarr/launchbox/issues/3722/add-and-fields-into-the-platform-xml-for

If I'm wrong I'm sure Jason can correct me.

Share this post


Link to post
Share on other sites

To expand:

I know LB isn't doing any of the "achievement" works -- the emulator does. LB merely interface with RA to DISPLAY achievement data, to the best of my understanding it's doing so on title matching only. That's what I have a problem with.

Share this post


Link to post
Share on other sites
7 minutes ago, Belmont said:

To expand:

I know LB isn't doing any of the "achievement" works -- the emulator does. LB merely interface with RA to DISPLAY achievement data, to the best of my understanding it's doing so on title matching only. That's what I have a problem with.

Yes it is using the RetroAchievements API. Jason would have to comment on the more technical issues of that though. Looking at the thread for the bitbucket you linked the other guys example of Ys III not showing correctly, they show for me just fine in Launchbox and Retroarch.

1046466638_Screenshot(83).thumb.png.8d9ea56e923c7a04db5fa9ce36ef80e8.png709055099_Screenshot(84).thumb.png.5278b9b24887454d9d1e31bde98bea20.png

 

Share this post


Link to post
Share on other sites

Arguably, it's because the name on RA was changed since the original issue was reported:

http://retroachievements.org/achievement/11213

It is now "Ys III - Wanderers from Ys (SNES)", which match your title (and the expected title in the reported issue).

Try altering the title of the game to something else (for testing purposes).

My NES game "Addams Family, The" shows achievements, but if I rename it to "Addams Family 2, The", then it doesn't (proving my point that matching is done on title and nothing else).

I'm still running on 9.10, so if it has been silently changed since then I apologize. I asked Jason to comment here when convenient. We'll see.

At this point I'll take an acknowledgement that I'm not crazy. Whether this ever get changed or not is up to his discretion.

Share this post


Link to post
Share on other sites

Yes, matching is done on platform and title only, which is unfortunate. Sadly, though, there aren't really any other options, or at least there wasn't back when I implemented it. There is no global "ID" that identifies a game that everybody knows. So it basically comes down to matching by platform and title; that's all we've got. The only other solution I can think of would be to provide a field in LaunchBox for the user to manually put in a Retro Achievements game ID. If anyone knows any other way, let me know, but I don't believe there is one.

Share this post


Link to post
Share on other sites

I would take that! Have an field which can be populated manually (or through other means for us who are more technically inclined), and default to fuzzy match if the field is empty.

People could decide to only populate the ID for mis-matched titles if desired. The ID is easy enough to figure out (it's on the URL of the RA page).

Share this post


Link to post
Share on other sites

Heck -- I'll take any hack! I wouldn't mind populating a specific custom field if it meant it could by-pass the fuzzy matching :)

Anyhow - thanks for acknowledging the issue. I really wish this could get worked around one way or another.

Cheers!

Share this post


Link to post
Share on other sites
2 minutes ago, Belmont said:

I would take that! Have an field which can be populated manually (or through other means for us who are more technically inclined), and default to fuzzy match if the field is empty.

People could decide to only populate the ID for mis-matched titles if desired. The ID is easy enough to figure out (it's on the URL of the RA page).

Sounds perfect for a user created plugin if you ask me, to scrape the ID from the URL on demand with a simple right click context item.

Share this post


Link to post
Share on other sites

Give me the field and I'll write the plugin :)

Edit: Even better: I'll write a plugin that match the ID based on the CRC32 of the associated ROM (along with sugesttions if not found).

Edited by Belmont

Share this post


Link to post
Share on other sites

CRCs aren't consistent enough to really be effective in that way; I've looked into to doing that in the past, but there are way too many versions of ROMs. But anyways, new features for Retro Achievements was on the poll and got voted fairly highly, so I will be doing that soon, and I'll plan on adding that field when I do.

Share this post


Link to post
Share on other sites

But RetroAchievements only works with specific hashes to begin with (that's how an emulator knows the rom is valid for a specific list of achievements:

http://retroachievements.org/linkedhashes.php?g=1302

(correction -- I'd have to use MD5 over CRC32 -- same difference)

Edit: I'm not here to argue, I just did my homework, and I know a thing or two about software development ;) Sorry if I'm coming off as abrasive -- it's really not my intention...

Edited by Belmont

Share this post


Link to post
Share on other sites

The API doesn't seem to expose the hashes, which is odd.. it would have to be scrapped (not ideal, but good enough in a plugin).

Share this post


Link to post
Share on other sites

The more I read, the less sure I am about those last statements. The integration between an emulator and RA in determining if a ROM is valid for achievement is unclear to me at this point.

Still, using known good hashes (as reported on RA) would be a near 100% positive hit when it matches. When no match found, then I guess we would have a problem (and need to fall back on something else -- manually picking from a list).

It's not something that would need to happen at runtime. If a plugin did it, it would be populating an ID for use by LB. Strays could be fixed manually.

Hashing larger games (such as PS1) would be a performance problem, but if done through a plugin then users could be informed and expect it.

The API could be used to get the list of games per platform and then scrap the good known MD5 from the linkedhashes.php page (which might be frowned upon by RA ¯\_(ツ)_/¯ )

At the end of the day, if we (users) could get a hook to override the default logic to provide our own ID, I'm pretty sure the community could do the rest.

Bonus points if setting it to zero bypass the logic entirely (no achievements) so that we don't mismatch games that don't have achievements.

Food for thoughts.

Edited by Belmont
A word

Share this post


Link to post
Share on other sites

Sure, I can add the field easily enough. But yeah, I've already determined that using checksums isn't anything that we're going to tackle ourselves, for various reasons. But yup, it's certainly open to the community to try it.

Share this post


Link to post
Share on other sites

I would be immensely grateful and willing to provide the missing functionality. I'm looking forward to it! Thanks! :)

  • Like 1

Share this post


Link to post
Share on other sites
On 9/19/2019 at 9:22 AM, Jason Carr said:

Sure, I can add the field easily enough. But yeah, I've already determined that using checksums isn't anything that we're going to tackle ourselves, for various reasons. But yup, it's certainly open to the community to try it.

Did this field get added to the list for a future release yet?  I'm still looking for a way to manually link a game to a retroachievements entry.  The auto-matching misses some still.

If not, is there any way to manually make the link in the database?

Share this post


Link to post
Share on other sites
On 9/19/2019 at 4:02 PM, neil9000 said:

It may not strictly be a matching issue. Retro Achievements nearly always use the original rom for achievements. So if your default roms being launched in Launchbox are (rev 1) (rev a) etc then that is simply the wrong rom and not strictly a matching issue. I use Retro Achievements myself and its very rare that i find they are not working, and in those cases i just change the default rom launched to the "original" one and not a revision.

I've realized that and I think this is the single biggest problem with retroachievements. I alwas use the latest revisions, since that's how 1G1R sets are built. So for man of my favorite gaes, I cannot use retro achievements. It's a real bummer.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...