Jump to content
LaunchBox Community Forums

retroNUC

Members
  • Posts

    54
  • Joined

  • Last visited

Posts posted by retroNUC

  1. On 7/24/2024 at 2:12 PM, C-Beats said:

    Yeah, it'd be nice if one of them had a way to grab that hash via command line. Not being able to support that format is a pretty big let down.

     

    On 8/20/2024 at 2:12 AM, AstroBob said:

    @davemk Unfortunately, the RAHasher hasn't been updated to support this yet, and we're currently dependent on it. We'll be keeping an eye on this though as hopefully, it's something the RA team will get to.

    Apologies I don't have a better update as of right now, I'm also itching to get those badges for my GameCube collection, as I've already re-completed a fair few 🤩

    If this PR gets accepted, you should be able to get the hash over command-line directly from Dolphin 🤞

    https://github.com/dolphin-emu/dolphin/pull/13035

    • Like 1
  2. @C-Beats I've logged this over at the RALibretro repro to see whether RVZ reading support could be added to RAHasher - https://github.com/RetroAchievements/RALibretro/issues/415

    There's also DolphinTool.exe in the emulator's directory, which is a command-line tool for converting and verifying all formats that Dolphin supports:

    > dolphintool.exe verify -i "file.rvz" -a crc32
    9d473312

    Would just need a new type added like "rahash" that could be returned for you folks to use.

    • Like 1
  3. Ran a full RetroAchievements scan today, and all the RetroAchivement game IDs have been removed from my "Sega Mega Drive.xml" platform file.

    All other platforms scanned and updated just fine. The RetroAchivementHash field is still valid and populated for each entry, only the RetroAchievementId field has been stripped.

    At a guess, something to do with a custom platform name (like "Sega Mega Drive" instead of "Sega Genesis") not pairing up properly with the correct RA platform ID when requesting or pairing hashes?

    LaunchBox Version 13.11. Attached debug log, but couldn't see anything relevant to "cheevos" / "achivements" / "ra" / "hash" / etc.

    https://bitbucket.org/jasondavidcarr/launchbox/issues/8616/sega-genesis-mega-drive-games-no-longer

    Debug 2024-02-27 11-03-53 PM.zip

  4. On 12/18/2023 at 3:43 AM, moudrost said:

    Part of the advantage of using ZIP over 7z is so it doesn't need to decompress the entire file to calculate the hash. Is this a bug with the tool used to calculate the hashes?

    No, not a bug. It all depends exactly how a game is hashed - https://docs.retroachievements.org/Game-Identification/

    ZIP is fine for ROM-based games, because it's really easy to access and hash a single whole file within a ZIP archive. But for disc images, the hasher needs to be able to mount the image and use the disc header data in order to then access and hash specific files within the image. It's impossible to access a file within an image when the entire image is compressed, so no choice but to spend the 30-60s extracting the full thing first.

     

    On 12/18/2023 at 3:43 AM, moudrost said:

    Converting to CHD is a non-starter. It would be impossible to manage my library in CHD. Even if Redump started to release DATs compatible with CHDs, I could only imagine how long it would take to scan/fix a full set.

    Then the easy solution is to switch clrmamepro to a name-only scan instead of name+hash. Disc-based collections are pretty static these days, it's not like MAME where parent/clone files within a zip constantly change.

    Or if you still want to hash things, just use one of the tools that does support CHD, like this one. CHD files store the original's MD5 hash in their header, so it's possible for files to expand and verify themselves for data integrity (and then compare that same hash against redump dats, like the tool I linked does).

     

    On 12/18/2023 at 2:45 PM, C-Beats said:

    If so would it be possible for you to check that those changes are still in? We are getting some reports of CHDs hashing differently via that app than they are via the emulator.

    Far as I can tell, nothing has changed in RAHasher code since the last time those CHD fixes went in 8 months ago, and I imagine nothing would change unless you updated the included binary. Only way I can imagine it going wrong when called by LB was if the wrong Console ID was being passed in?

  5. Had a quick check of the RAHasher code, which is the tool that LB uses to generate hashes. Confirmed it doesn't support disc-based files within ZIP archives, and that's for a good reason - For each game, it would have to spend a while to fully extract the entire ZIP file somewhere temporarily just so it can mount the CD and read the specific files it needs to within it. You can't do that while it's still packed in an archive file.

    You really shouldn't be zipping disc-based games, to be honest. It might work, but you're probably getting a really slow launch every time you try to run a game? Either LaunchBox or the emulator will be doing a full unzip/extract.

    Use other compression formats if you want to save space, pretty much everything supports CHD these days. Same kind of algorithm as a zip file, but only on the inner data and not the file headers needed for that random file access.

    https://retrogamecorps.com/2023/02/06/the-ultimate-rom-file-compression-guide/

  6. Can't remember if I raised this previously when the RA API was going up and down, but the error/response checking seems to be broken on the "Test Login" button on the RetroAchievements options menu.

    If you enter an invalid Username or API Key and press the button, LaunchBox still always says "Connection to RetroAchievements successful." If you try and do a scan in that state, it'll wipe any the existing RetroAchievementId data in the platform XMLs.

    Edit: Another bug for the new version, I'm seeing infrequent freezes when adding/editing Additional Apps on game entries and closing the Edit Game window. No error/exception, just unresponsive and then need to force close the application. Seen several times this evening when updating ROM hacks on a bunch of games.

  7. On 5/22/2023 at 1:28 AM, bikeking8 said:

    I've been getting crashes consistently with beta 2 here. Two of the logs are below. I haven't switched my theme, it's still default, and I've made sure it's set to run as administrator FWIW. I found this pop up in other launchbox beta forums, given the google search results, but let me know if I should post this somewhere else, though.

     

    The calling thread cannot access this object because a different thread owns it.

    App:     LaunchBox
    Version: 13.4-beta-2
    Type:    System.InvalidOperationException
    Site:    Void VerifyAccess()
    Source:  WindowsBase

       at System.Windows.Threading.Dispatcher.VerifyAccess()
       at System.Windows.DependencyObject.GetValue(DependencyProperty dp)
       at System.Windows.Controls.Primitives.Selector.get_SelectedItemsImpl()
       at Unbroken.LaunchBox.Windows.Desktop.ViewModels.ListContentViewModel.Populate(List`1 newGames, String title, Guid instance, IList`1 idsToSelect, Double newScrollOffset, String overrideSortType)
       at TokenInstance.CountSupportedStub(Object , List`1 games, String title, Guid populationInstance, IList`1 idsToSelect, Double newScrollOffset, String overrideSortType, TokenInstance )
       at Unbroken.LaunchBox.Windows.Desktop.ViewModels.SideBarViewModel.ForgotScopeAuthentication(Boolean readtask, Boolean issecond, Node control, Playlist map2)
       at ParamsInstance.CountSupportedStub(Object , Boolean readtask, Boolean issecond, Node control, Playlist map2, ParamsInstance )
       at Unbroken.LaunchBox.Windows.Desktop.ViewModels.SideBarViewModel.<>c__DisplayClass80_0.CallScopeCallback()
       at Unbroken.LaunchBox.Windows.Threading.<>c__DisplayClass0_0.ReflectInvalidMapping(Object )
       at Unbroken.LaunchBox.Windows.Threading.<>c__DisplayClass0_0.CallCommonAttr()
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
    --- End of stack trace from previous location ---
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

    Recent Log:

       9:08:20 AM Exception


    The calling thread cannot access this object because a different thread owns it.

    App:     LaunchBox
    Version: 13.4-beta-2
    Type:    System.InvalidOperationException
    Site:    Void VerifyAccess()
    Source:  WindowsBase

       at System.Windows.Threading.Dispatcher.VerifyAccess()
       at System.Windows.DependencyObject.GetValue(DependencyProperty dp)
       at System.Windows.Controls.Primitives.Selector.get_SelectedItemsImpl()
       at Unbroken.LaunchBox.Windows.Desktop.ViewModels.ListContentViewModel.Populate(List`1 newGames, String title, Guid instance, IList`1 idsToSelect, Double newScrollOffset, String overrideSortType)
       at TokenInstance.CountSupportedStub(Object , List`1 games, String title, Guid populationInstance, IList`1 idsToSelect, Double newScrollOffset, String overrideSortType, TokenInstance )
       at Unbroken.LaunchBox.Windows.Desktop.ViewModels.SideBarViewModel.ForgotScopeAuthentication(Boolean readtask, Boolean issecond, Node control, Playlist map2)
       at ParamsInstance.CountSupportedStub(Object , Boolean readtask, Boolean issecond, Node control, Playlist map2, ParamsInstance )
       at Unbroken.LaunchBox.Windows.Desktop.ViewModels.SideBarViewModel.<>c__DisplayClass80_0.CallScopeCallback()
       at Unbroken.LaunchBox.Windows.Threading.<>c__DisplayClass0_0.ReflectInvalidMapping(Object )
       at Unbroken.LaunchBox.Windows.Threading.<>c__DisplayClass0_0.CallCommonAttr()
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
    --- End of stack trace from previous location ---
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

    Recent Log:

       8:18:47 PM Exception

    Also seeing this myself in 13.4-beta-3 when attempting to add a game to an existing playlist via right-click on List View.

    The calling thread cannot access this object because a different thread owns it.
    
    App:     LaunchBox
    Version: 13.4-beta-3
    Type:    System.InvalidOperationException
    Site:    Void VerifyAccess()
    Source:  WindowsBase
    
       at System.Windows.Threading.Dispatcher.VerifyAccess()
       at System.Windows.DependencyObject.GetValue(DependencyProperty dp)
       at System.Windows.Controls.Primitives.Selector.get_SelectedItemsImpl()
       at Unbroken.LaunchBox.Windows.Desktop.ViewModels.ListContentViewModel.Populate(List`1 newGames, String title, Guid instance, IList`1 idsToSelect, Double newScrollOffset, String overrideSortType)
       at ModelCreator.FindObservableUtils(Object , List`1 games, String title, Guid populationInstance, IList`1 idsToSelect, Double newScrollOffset, String overrideSortType, ModelCreator )
       at Unbroken.LaunchBox.Windows.Desktop.ViewModels.SideBarViewModel.AwakeSimpleRules(Boolean movefirst, Boolean iscounter, Node rule, Playlist t2)
       at ReaderCreator.FindObservableUtils(Object , Boolean movefirst, Boolean iscounter, Node rule, Playlist t2, ReaderCreator )
       at Unbroken.LaunchBox.Windows.Desktop.ViewModels.SideBarViewModel.<>c__DisplayClass80_0.ComputeSimpleTemplate()
       at Unbroken.LaunchBox.Windows.Threading.<>c__DisplayClass0_0.InstantiateCompositeServer(Object )
       at Unbroken.LaunchBox.Windows.Threading.<>c__DisplayClass0_0.EnableRemoteSetter()
       at System.Threading.Thread.StartHelper.Callback(Object state)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
    --- End of stack trace from previous location ---
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    
    Recent Log:
    
       21:43:01 Exception

     

  8. That would require the LaunchBox database storing hashes of all possibly know game files, which is a bit of a nightmare and probably crosses the line of linking LaunchBox to dumped ROM files.

    Honestly, for completionism, that's what Redump, No-Intro and TOSEC databases are for. Use their dat files with clrmamepro or another ROM manager to compare against your local collection.

  9. 5 hours ago, GuiCogo said:

    Some Nintendo DS games still doesn't detect achievements when the rom is zipped. For example Pokémon Conquest works when unzipped. I noticed that the ones that doesn't work have the uncompressed size of 256MB, don't know if it's relevant.

    Hm, not seeing any issues with .7z NDS files here, everything in my collection seems to have been fine with DS titles since the beta release.

    For Pokemon Conquest in particular, I'd check which file you have - The (USA) (Rev 1) version is not supported, only the original version.

    image.thumb.png.012eeca48484715a97167a0c23da262c.png


    Oh, and thanks for getting the RAHasher fix in with Beta 2, that should relieve a lot of people's issues :)

  10. Best people can do for now is do a side-by-side against the platform lists on RetroAchievements - https://retroachievements.org/gameList.php?c=21

    In theory, a plugin could be created, as you can pull all the data/hashes for a single platform through the API then compare it against LaunchBox entries - https://retroachievements-api-js.vercel.app/v1/consoles/get-game-list.html

  11. I'm struggling to understand your request, but I think you're suggesting that 'Additional Apps' associated to a game should also be scanned/hashed?

    As a user, I agree that would be useful - Some of the ones that the automatic scan missed were ones were only variants were associated with RA titles and not the default game. A good example of this is Final Fantasy X on PS2 where the default game is (USA) with no cheevos, but I have an additional version that is (Japan) which is linked to cheevos.

    If the default game file does not match but an additional app does, it would be nice if the UI requests (badge, details panel) fell back to show the info/cheevos for the matching additional app instead. However, I can see this getting complicated if the default didn't match but there are multiple additional apps that match - Fine for the badge, but which one should RA show info for in the details pane?

    In these cases, I'm fine with manually setting the hash/id on the default game of the exact one I want, but it would be nice if this was made more easily visible/editable in the Add/Edit window.

  12. 2 minutes ago, xevious1974 said:

    I see that you are able to do magic ^_^

    Do you think that it is possible to create a complete playlist using a modified RAHasher?

    you launch the program and it makes a complete LB playlist for, example, Sega Dreamcast, so you can easily check what you miss.

    Only thing that RAHasher does is takes a file and returns the hash ("identifier") of that file. This is the bit of data that emulators, LaunchBox, and other apps can send to the RetroAchievements server going "Do you know anything about this file?" and returns "Yeah, hash XYZ matches game ID 123 in our database, here's the cheevos info".

    Any other functionality would be on LaunchBox's side, but I don't think what you're suggesting is feasible - How can LaunchBox populate a playlist with game entries that don't actually exist in your own database?

    You'll be best off going through the platform lists on the RetroAchievements website and checking manually, like most of us do. But at least this new LB functionality gets us 95% of the way there instead of everything having to be fully manual! 

  13. Quick way I use to reset that data is the following:

    - Close LaunchBox

    - Open up the platform XML file in Notepad++

    - Ctrl+F to open search box, move to Mark tab, tick the 'bookmark lines' checkbox and search/mark lines with "COULDNTFILEHASH" - You'll see a blue bookmark circle next to all lines that matched

    - From the top bar, Search > Bookmarks... > Remove Bookmarked Lines

    - Save, open LaunchBox back up, rescan

    • Like 2
  14. Still need to talk with various parties across GitHub projects as to where the fault lies and how it should be fixed properly, but I've put together a new version of RAHasher that now works properly with all CHD files. Download the attached file and replace the one located at "...\launchbox\ThirdParty\RetroAchievements\RAHasher.exe"

    Resanned my PS2 CHD collection with a 99%+ success rate. I'm not sure if LB will force retry entries already marked as COULDNTFILEHASH on a rescan, or whether you'll need to remove those lines before the rescan? 

    https://www.virustotal.com/gui/file/383ff365c89255e8d12e2580ae49e3af55ed59c3f2099e8eb173f0f231bba762

    RAHasher_Fix.zip

    • Like 2
    • Thanks 3
  15. 25 minutes ago, C-Beats said:

    Is anything generated in your log file? The only thing I would think may be happening is that the app takes longer that the timeout period we set to gen the hash and we are just killing the process too soon for your computer. Though that wouldn't explain the "COULDNTFILEHASH" not being inserted (since it should be if the timeout is hit). Do you have a filename + md5 hash you could provide for a few of the files that you are seeing work in command line and NOT in LaunchBox?

    Of course, I'll add any info/logs you request to the issue tickets once I get a chance.

    Sorry for the misunderstanding, and apologies for my tone.

  16. 15 minutes ago, C-Beats said:

    Not sure I follow this line of thinking. We ARE sending your files to their application (found in \\LaunchBox\Third Party\RetroAchievements\rahasher.exe). What app exactly are you comparing results with?

    I'm using rahasher too, on the command line.

    Can't tell you why .nds files don't seem to be processed through LB - Not even "COULDNTFILEHASH", doesn't seem to be adding any changes back out to the platform XML at all. Perhaps wrong platform ID, or passing down the zip/7z forces it to go down the wrong algorithm?

    Also can't say why CHD files are failing when ISO ones work fine (because rahasher doesn't support CHD, it's up to the app using it to mount/translate it first through something like libchdr).

  17. 1 hour ago, faeran said:

    Something to keep in mind is that we use the official hashing program by RetroAchievements, found here: https://github.com/RetroAchievements/RALibretro/releases

    Any time there's a new version of that program, we will be updating LaunchBox with it. It may be worth the effort to help them determine where they should be focusing their time.

    The hashing/identification issues I'm logging at BitBucket are all games that work fine with RAHasher/RALibretro

    https://bitbucket.org/jasondavidcarr/launchbox/issues/7624/retroachievements-scan-inconsistent-spotty

    https://bitbucket.org/jasondavidcarr/launchbox/issues/7649/retroachievements-scan-not-working-on

    • Like 1
  18. 34 minutes ago, xevious1974 said:

    If I'll delete all the "COULDNTFILEHASH"

    LB will do an re-hash?

    maybe it takes the right value this time. 

    Anyway I have tried and it works. But manually is a pain! 🤣

    I think if it fails once, it'll always fail. I've bugged up situations where it's failing (CHDs, NDS files, etc.) over at BitBucket, but we're just gonna have to wait for updates from LB.

    There's some tools that may make the XML editing easier (Ximple is a good one), Tempted to write my own wrapper/lookup for the problematic ones, or if someone does it manually for all the games on a platform, it should be possible to extract a list of LaunchBoxID/RetroAchievementsHash pairs to merge in with anyone else's existing collection.

    • Like 2
  19. On 3/10/2023 at 6:07 PM, The_Keeper86 said:

    That sounds like a good solution! But it just reverts back to this

    <RetroAchievementsHash>COULDNTFILEHASH</RetroAchievementsHash>

    Likely you're editing while LB is open, and your manual edits are getting stomped when it shuts down.

    Close LB, add your hashes manually and save, open up LB, then rescan the platform for achievements. That's been working for me.

    • Like 1
×
×
  • Create New...