DS-Homebrew / nds-bootstrap

Boot an nds file
https://wiki.ds-homebrew.com/nds-bootstrap/
GNU General Public License v3.0
1.17k stars 75 forks source link

Retroachievements Support #1461

Open RejectedGalaxy opened 2 years ago

RejectedGalaxy commented 2 years ago

So I'm wondering if it would be possible to integrate retroachivements into Twilight Menu at all. Since the 3DS doesn't emulate DS games and runs them on the actual hardware Retroarch on the 3DS does not have achievements for DS games. Recently PCSX2 enabled retro achievements on their standalone emulator and its coming out October 1st. I feel like the same can be done for Twilight Menu, giving many people including myself more reasons to bust out their DS and play games on it.

Epicpkmn11 commented 2 years ago

This was discussed on Discord once before, as I understand it Retroachievements works more or less the same as cheat codes right? So it'd probably be possible since nds-bootstrap already supports cheats. The main issues I see are:

PS I've transferred this issue to the nds-bootstrap repo as that's where it's more relevant.

SporyTike commented 1 year ago

Being one of the admins from RetroAchievements, who was curious how doable an integration from the hardware would be. If there is any interest for RetroAchievements compatibility, here are two wikis for how to add support.

rcheevos API: https://github.com/RetroAchievements/rcheevos/wiki

Full toolkit integration: https://github.com/RetroAchievements/RAInterface/wiki/Creating-a-new-emulator

Adding a way to play RetroAchievements on original hardware would definitely be a huge thing to give players a better nostalgia trip and better controls for touchscreen and microphone. I don't have much knowledge of what the DS hardware is capable of, but maybe one is interested to read into it and check if it's technically doable. Our RAInterface supports an achievement list so if there would be a way to pause the current game and open a window, the achievement list could be shown.

Masamune3210 commented 1 year ago

Think one of the major issues would be the DS and the DSi since they only support WiFi standards that are looong gone. Most in my experience tend to just keep the consoles offline

spellboundtriangle commented 1 year ago

Think one of the major issues would be the DS and the DSi since they only support WiFi standards that are looong gone. Most in my experience tend to just keep the consoles offline

The DS yes, but the DSi supports the same stuff the 3DS does. The Wi-Fi lib currently isn't really on par for it in terms of stability and speed, though.

RejectedGalaxy commented 1 year ago

Damn, closed as not planned. Seems like a really big missed opportunity to me but I'm not a dev so I guess I can't complain I'm not the one putting work into it. Hope you guys will reconsider in the future.

RocketRobz commented 1 year ago

Damn, closed as not planned. Seems like a really big missed opportunity to me but I'm not a dev so I guess I can't complain I'm not the one putting work into it. Hope you guys will reconsider in the future.

It's closed because that issue is a duplicate of this one. It may still get implemented in the future.

RejectedGalaxy commented 1 year ago

Oh my bad I see now, I don't use this site much now I feel kinda dumb lol I didn't see it was a mention to another post and not a direct reply to this one. Well that's good still hoping for this one, I'm always seeing my DS gather dust on top of my desk and every time I see it I'm just hoping I can get achievements on it one day.

ygordreyer commented 1 year ago

Is this in any way active? I have some experience in implementing achievements on standalone emulators, and with RA in general. But I don't have time to take this as my "main" side project. Although I can provide some help.

usersaurus commented 1 year ago

Pretty interested in this thing. I'll be happy to donate to the project if there are plans to work on this.

alvayuso commented 1 year ago

I'm looking forward to this, also achievements for 3DS games would be awesome! I think the 3DS is more valuable now with the hole homebrew thing, but with Retroachievements would be ASTOUNDING! I would be pleased to drop a donation too <3

Golem642 commented 10 months ago
  • On DSi could potentially pulse the power LED purple, but that doesn't work on any other DS/3DS console

What about making the power led blink from Green to Red in the case of the DS lite for example ? As for the 3ds, there might be a direct way to communicate to the notification LED from TWL mode but that's still pretty unlikely. Could be the same thing as the DS lite but making it fake the "very low battery" for 2 blinks so It'll blink the notif led in red, and then put it back to normal

As for displaying the actual achievement i don't think that's possible while running the game, maybe a little popup when we open the menu (L down select) or make a separate menu ?

SogekingVinsmoke commented 9 months ago

This would be and incredible feat. I'm really not fond of playing DS games emulated, and this is primarily because of how many of them utilize the dual screens and touch screen in ways most devices really can't replicate well, so getting to have achievements on official hardware would be wonderful.

Wubdor commented 7 months ago

I will wait realisation of this idea, i guess many peoples would like thus.

wintzyy commented 7 months ago

throwin in another comment of support, streets need this. native hardware still the only good way to play ds games i fear

Gabriel2Silva commented 6 months ago

This would be incredibly huge for the DSi scene. I'd absolutely love such a feature. Been watching this feature request for 2 years now but just logged in to show some support. This would be an absolutely gamechanging feature.

zerothecat4564 commented 5 months ago

This thread has been open for a long time but I really hope that in some future this can be implemented perhaps making the list of retroachievements visible through the nds bootstrap menu to keep track of it and be able to see it even if it is not shown when unlocking it and of the page would be more complicated but the idea of using an external program in 3ds or Dsi mode to pass that data to the page would also be interesting.

daviyan5 commented 4 months ago

That would be extremely cool. Is there anything big that blocks the implementation of this or is it just a matter of someone having enough time, energy and will to do it?

FrogFocus commented 3 months ago

I want to express my support by posting a comment here. I'm sure, eventually this function will be released, like a support retroachievements in retroarch on 3ds. I hope this feature will be added as soon as possible. By the way, have you noticed that almost every month there is a new comment in support of this idea?

Golem642 commented 3 months ago

Ik it's low priority but it's still a W that it's getting eventually considered

wintzyy commented 3 months ago

:D

RejectedGalaxy commented 3 months ago

While I'm happy we made an official list on the github, seeing that some other postings have been in low priority since 2016 I'm not going to hold my breath waiting for this one

jmgamer1199 commented 2 months ago

Wouldn't it be better to add achievements locally instead of via the internet? Let me explain: instead of using "Retro Achievements", it would be better to have a folder on the SD card where the achievements are stored. This might take longer to add without using the "Retro Achievements" API, but for people who can't connect to the internet because their consoles' antennas don't work or for any other reason, it could be useful.

To view the achievements on the console, an additional option could be added to the "Y" button with the text "Achievements" and on the right side the number of achievements the game has and the achievements that have been completed, something like "5/30". By selecting that option, a menu would appear showing the completed achievements and, below that, the achievements to be completed with a progress bar.

SlyAceZeta commented 2 months ago

Wouldn't it be better to add achievements locally instead of via the internet? Let me explain: instead of using "Retro Achievements"

There is currently no other service providing custom achievements for games. You're asking to reinvent the wheel.

Masamune3210 commented 2 months ago

Wouldn't it be better to add achievements locally instead of via the internet? Let me explain: instead of using "Retro Achievements", it would be better to have a folder on the SD card where the achievements are stored. This might take longer to add without using the "Retro Achievements" API, but for people who can't connect to the internet because their consoles' antennas don't work or for any other reason, it could be useful.

To view the achievements on the console, an additional option could be added to the "Y" button with the text "Achievements" and on the right side the number of achievements the game has and the achievements that have been completed, something like "5/30". By selecting that option, a menu would appear showing the completed achievements and, below that, the achievements to be completed with a progress bar.

So.....are you going to write them all?

Golem642 commented 2 months ago

Maybe like download all retroachievements first and put them on the SD card ? And then have a separate app for achievement listing, downloading and syncing ? Idk

daviyan5 commented 2 months ago

Maybe like download all retroachievements first and put them on the SD card ? And then have a separate app for achievement listing, downloading and syncing ? Idk

Retroachievements does not support offline achievements whatsoever. If any kind of "offline achievement" were to be done, it would have to be outside of RA service. That means someone would have to make every achievement set for the supported DS games, which obviously would take a lot of effort and is something someone has already done (the set builders at RA). There's no reason to do this.

This issue doesn't ask for a general achievement system, but rather specifically for the libretro implementation, both because it already has tons of achievement sets for DS games and because it is widely used in emulators. Also, a lot of people have experience with it, so there are tons of guides and how-to's for it's implementation.

SogekingVinsmoke commented 2 months ago

It may be a low priority project, but if this ever happens, I'll be a very delighted player.

FrogFocus commented 2 months ago

Overall, it's a good idea. Having the ability to get achievements in offline is cool, and it may be useful even for those who have internet on their console working properly, because some would like to get the achievement even if they are on a train or on a plane, or if disable light in house.

However, using something instead of Retroachievements does not make sense for some reasons. As an example, because everything will be canceled for every person, both for players and for achievement creators.

But this not mean offline achievements are impossible to realize. This can be done, even through RA, and although I am not an expert, and I cannot say anything, I will tell you how I see the image of this idea.

And I want to note, that many people here are talking about the folder with achievements, and I will rely on this option, because for me it seems the most logical. It is enough for the creators of achievements, or the RA administration, to make files for each set with each achievement, and place them in the same folder where place the icons for achievements (or in another folder at their request).

I've already seen examples of this in some games on Steam, and I think the same can be done here. But there one thing to consider - it is need to automate this somehow, otherwise everything will need to be done manually, and as we all understand, this can take a long time, at least for admins RA.

After creating offline achievements, when you enter the game, automatically download these files (if you have Internet access), or download them through the RA website on the game page. But to do this, them need to add a button like “Download achievements” and send them to a folder on the SD card. By the way, all this can be implemented for other platforms.

The only problem is cheating, or hacking of these files, because a way may be found to change some lines of code and get the achievement illegally.

Oh, I forgot to say that achievements cannot be made 100% local. When unlocked achievement script was triggered, the file must indicate the time, when the player received the achievement, if he received it locally, and after which he must log into the network to protect the achievement. Not necessarily through the console, maybe through an emulator on a PC, to trigger file triggers in a folder

FrogFocus commented 2 months ago

By the way, I have a feeling that after my comment there was at least some activity here, and despite the fact that after that this request fell into low priority, I still believe that it will be done. It's just only a matter of time. And apparently, everyone here is waiting for this, although this fact will not speed up anything.

In general, i understand why this will not speed up anything, and we will be long waiting this, because technically this is really a function that, technically, is not necessary for any game, although for me it is important, because it can show the game from the other side, and reveal some secrets in it.

daviyan5 commented 2 months ago

But this not mean offline achievements are impossible to realize. This can be done, even through RA, and although I am not an expert, and I cannot say anything, I will tell you how I see the image of this idea.

Look, offline achievements are indeed a heated topic of discussion on RA forums, with good arguments on both sides (to implement or not). Many people, a lot of whom have actual experience with Libretro, have put thought into this. However, this is totally beyond the scope of this issue and nds-bootstrap in general, so I suggest that everyone who has a genuine interest in offiline achievement go to the RA forums to discuss.

The fact is: now, and probably for a long time after, there's no way to implement Libretro in such a way to allow for offline achievements. As I said before, the only possible way would be to implement something different than Libretro, and that's precisely the opposite of what this issue is asking for.

FrogFocus commented 2 months ago

Yes, I understand what you are talking about, I just wanted to express how I see this situation. This is really not the place for this discussion.