Skip to content

Conversation

@PanMenel
Copy link

Bringing RetroAchievements (RA) support to melonDS.

I saw that the community really wanted RA support, so I decided to take on the challenge. This is a rough, beta implementation that I’ve tested extensively over the last week. I am a huge fan of RetroAchievements and very proud of this project.

Important: This is currently unofficial, so Hardcore mode does not yet provide official Hardcore points.

✅ Current Features
Full backend integration.
Core frontend implementation.
Basic connectivity and achievement unlocking.
Achievements and their info is shown when getting them.
Basic Login in EmuSettings under new tab.

🛠️ Known Issues & Planned Features
Leaderboards: Not yet implemented.
Overlay: Missing in-game achievement list.
Progress Indicators: Achievement progress is not currently tracked visually, there is only notification on getting achievement.
Hardcore Approval: Still fixing stuff, so when it will be more than a beta then it could be possible.
Memory Access: VRAM and ARM9 IO memory reading is missing (may affect specific achievements, but i wouldn't worry about that).
Offline Caching: Session recovery works, but the emulator does not cache achievement data to local files yet.
Player Profile: Visible points and profile integration (optional).

Full Disclosure: This feature also was developed using "vibecoding" (this time mainly ChatGpt and Gemini). I really put my heart into that implementation, and I hope people will actually think of it as nice thing, so I don't consider my time as wasted.

@PanMenel
Copy link
Author

I understand że shit ale po poprawkach by przeszło, XD. Implementacja totalnie podstawowa buildowałem aż do sukcesu, dopiero teraz usuwam nieużywany kod i błędy.

@asiekierka
Copy link
Contributor

Leave it alone for now... As much as I respect your half of the effort, I'm not sure @Arisotura will be keen on merging "vibe-coded" contributions regardless.

@PanMenel
Copy link
Author

This is just for testing and not intended for merging. It's a draft to track changes from melonDS main and help me refine the code. And I don't think it will ever be as refined as normal integrations, but it is something.

@PanMenel
Copy link
Author

PanMenel commented Jan 6, 2026

Update 1. Changed it to support instances. Now you can play with your friends and earn achievements separately. Tidied and deleted files that were not used so it should be better to build and run. Still not sure if Linux and Mac are supported, but if I had some feedback i am sure it would be fixable. Also added your pfp on logging into RA, and changed the menu location from inside emusettings to its own RA settings under Config dropdown.

@PanMenel
Copy link
Author

PanMenel commented Jan 6, 2026

Also, I am now opening it for a review because the core code is now at least pretty clean. I am sure some useless code could have snuck in, but now i am positive it is better than before.

Here are instructions for building your own RA build

  1. git clone -b Retro-Achievements-Implementation https://github.com/PanMenel/melonDS-Menel-Forks.git
  2. cd melonDS-Menel-Forks
  3. for static use: cmake -B build -G Ninja -DENABLE_RETROACHIEVEMENTS=ON -DBUILD_STATIC=ON -DUSE_QT6=OFF -DCMAKE_PREFIX_PATH=$MSYSTEM_PREFIX/qt5-static
  4. for dynamic use: cmake -B build -DENABLE_RETROACHIEVEMENTS=ON
  5. cmake --build build

@PanMenel PanMenel marked this pull request as ready for review January 6, 2026 13:11
@PanMenel PanMenel changed the title Retro achievements implementation Retro Achievements implementation Jan 7, 2026
@PanMenel
Copy link
Author

Update 2. Updated ReadMemory to resemble more stable readings. Updated core to support many more callbacks like progress, challenge indicator, mastery(not tested) and leaderboards(not tested). Also, I have added an Overlay!! It has info on the game you are running, including achievements and their progress, playtime(which I have implemented because there is no function for it so it is stored in a .toml file), and a clock to keep track of time easily. Also, I have added a useragent and some compatibility fixes to qualify for the hardcore unlocks, but this still needs more work. As always, the build commands are the same as in the post above and have fun!!
OverlayImage

@Arisotura
Copy link
Member

Hello, two things on this.

First, if this is intended for testing and not meant to be merged, you should fork the melonDS repo and do your work there. Given the sheer volume of pull requests here, it'll help keeps things cleaner.

Second, I'm not a fan at all of the fact this is made with AI. I don't really trust AI to produce working or clean code, and I think the time spent to clean up the mess it can make might as well be spent coding this from the ground up without AI.

While I appreciate the intent, I'm not willing to merge AI code into melonDS. This is mainly a code quality concern. We've already had issues in the past due to poorly programmed and/or incomplete PRs being merged, and it takes time to properly review PRs to ensure this doesn't happen again.

@PanMenel
Copy link
Author

Sure! When I am done with implementing the features, I will try to do as much code cleaning as possible on my end. I know poorly written code creates issues. I see it as I am programming it. For now, I am trying to create integration with full features, without any interference with the main melon ds. As of now, I have noticed some performance concerns (probably my doframe), so I know it can't be merged and shouldn't be. But you know I am still a human, so I will try to make it a mile better than this proof of concept kind of code. I still kind of want to keep this pull request until I am done, because it helps me with fixing issues and comparing my changes with the original code. I'm sorry if it's messy, but I am really having fun with this and I hope it can reach your expectations one day.​

@Arisotura
Copy link
Member

To meet my expectations, it'd have to shed all the AI code.

The screenshots made me think of another concern, albeit a smaller one: the integration within the melonDS UI. As things are now, the melonDS window can be pretty small (256x384, or 512x192, basically), but this Retroachievements UI seems to need a lot more space than that. I'm not sure what's the ideal way of dealing with that... I have a general UI refactor in mind though, so who knows...

@PanMenel
Copy link
Author

I mean I have written it with that in mind, but It still needs better translation to lower resolutions, in smallest window it looks like that. Achievment toasts tho should work without problem in lower rez.
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants