Closed grenade44 closed 8 years ago
@leiradel I noticed that when I load a Game Boy ROM, the log says testing NES
. Is it correct?
Like this:
cat super_mario_land_-_gambatte.log | grep -i cheevos
RetroArch [INFO] :: CHEEVOS testing NES (discards VROM).
RetroArch [INFO] :: CHEEVOS testing Generic (plain content).
RetroArch [INFO] :: CHEEVOS getting game id for hash b259feb41811c7e4e1dc200167985c84
RetroArch [INFO] :: CHEEVOS got game id 504.
RetroArch [INFO] :: CHEEVOS got achievements for game id 504.
RetroArch [INFO] :: CHEEVOS deactivated unlocked achievements in softcore mode.
RetroArch [INFO] :: CHEEVOS deactivated unlocked achievements in hardcore mode.
RetroArch [INFO] :: CHEEVOS posted playing game 504 activity.
@meleu yes, RetroArch can't know what the file is just by the extension, so it has a couple of different algorithms to identify the game.
In this log, you can see that it tries the NES algorithm, but it fails (the failure is not logged) and then it tests the Generic algorithm, which correctly identifies the game.
@leiradel I thought it strange because when I load a MegaDrive/Genesis ROM it correctly says testing Genesis
, this way:
RetroArch [INFO] :: CHEEVOS testing Genesis (6Mb padding).
RetroArch [INFO] :: CHEEVOS getting game id for hash d55356b9f362f49bc395e79bfb656a0e
RetroArch [INFO] :: CHEEVOS got game id 98.
RetroArch [INFO] :: CHEEVOS got achievements for game id 98.
...
Well, going back to the main subject :-) the Game Boy cheevos seem to be problematic yet.
I've oversimplified the explanation :)
The extension is in fact used as a hint for which methods to try first, It's used for SNES and Genesis. The algorithm is:
The Collect 50 coins achievement needs access to the Zero Page RAM, and to the Interrupt Enable Flag, and Gambatte does not exposed them. I already know how to take care of the Zero Page RAM, but the flag is harder. Let me investigate more.
@leiradel just giving one more info, not sure if it can help... As some users ( @grenade44 inclusive) said that mGBA is working fine, and this core is able to run Game Boy ROMs, I tried Super Mario Land with mGBA, it loads the Achievement List correctly, but the Fire Power didn't work (didn't try others).
I don't the low level details, but I'm saying it just in case the Interrupt Enable Flag is easier to work in mGBA...
I've fixed Gambatte, but it's a bit hackish. I won't make a pull request to the upstream repository before speaking to some people on the libretro team about it.
For now, it's available in my cloned repo: https://github.com/leiradel/gambatte-libretro
I'm gonna test right now! :-)
From a quick look at the mGBA core, I believe that it will only work with achievements for GBA games.
@leiradel your forked version is working fine here! I've got Fire Power, Pocket Money (50 coins) and 3 lives on bonus stage cheevos!
Hope to see these changes on upstream!
Thanks again for your good job!
I wish I saw this before I let my pc do update so I could add this lol
@meleu just to make it clear: it's RetroArch that identifies the games and loads the achievements, and that tests them each frame. The core doesn't have the slightest idea that it's being sneaked upon :)
So, when an achievements list is loaded, it's not an indication that the core will support them.
@meleu I've implemented the fix a bit different to avoid writing into the emulated memory, and it worked in my tests with Super Mario Land. Do you mind also testing on your end?
Testing right now...
I just tested with Super mario land and seems to work fine
@leiradel It's working fine here. Tested with Super Mario Land, Alleyway and Mega Man II (Game Boy version, of course).
Well done sir!
Ive also tested with Alleyway and the first couple of achievements seem to be working fine.
Thanks guys, I had to make further changes but I did a quick test with Super Mario Land and it works, so I don't think further tests are necessary.
The changes aren't merged yet, I'll let you know when they are.
I'm keeping an eye on that PR! :-)
Merged!
Great! And the compatibility list has been updated accordingly. :-)
I had a better idea. I've put the compatibility list at the RetroArch Wiki: https://github.com/libretro/RetroArch/wiki/RetroAchievements Then anyone can edit it. ;-)
May I ask to keep that list with only the compatible cores? Right now there is a list of cheevos that don't work with FCEUmm, but I think it just makes the list confusing.
Just a link to the save state repository where those issues should be tracked would be better IMHO.
May I ask to keep that list with only the compatible cores? Right now there is a list of cheevos that don't work with FCEUmm
I've just removed that list.
Is it enough or do you mean the "untested" cores should be removed too?
It's better to leave the untested cores there, we will get questions about them if we take them out.
FCEUmm
There are a few known achievements that aren't working with FCEUmm and are working fine with QuickNES.
Maybe this should read just "has issues with some achievements"?
Also, I think it would be cool to have a TL;DR version at the top, listing the compatible cores for each system, like:
Good point! I'll do it.
Sadly that issue that @PKstarship said in retroachievements.org forum (quicknes crashing retroarch on Android) happens to me too. Not with Metroid only, but with every game I tested. I opened an issue https://github.com/libretro/RetroArch/issues/3973
I'm still using fceumm in some cases. I think I have to say something about it on the wiki...
I think it's too much work to keep track of what core from what date is working in what platform. They should be working on all platforms, unless a platform is officially not supported (and in this case I think a note in the Wiki is necessary.)
So unless it's a problem with cheevos, I'd leave it out of the Wiki.
Hm, move the notice about QuickNES on Android below, where more information is given, the recommended cores list will stay clean and the information won't be lost that way.
Thanks @leiradel for your hard work and making retroachievements compatible.
@grenade44 Thanks!