Dolphin, the GameCube and Wii emulator - Forums

Full Version: Achievements
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Before I say anything, I think achievements in games are a lot of fun and they fit my style of motivation.

With that said! I am sure this has been asked before, but what exactly does it take to get achievements implemented into a system like an emulator? I have seen emulators in the past, jailbroken iOS and Android devices for example, that have achievement packs for them. I have not attempted to take apart the coding for these emulators to see what it consists of, but I was curious what it would take.

I know that for modern games, specially Game Center and xbox360, the achievements are built into the coding of the game and not the system itself. But are emulators capable of reading game coding? Can it be reverse engineered? I am probably talking way outside what I know, but I am just curious if there is anything at all that I can pitch in to make this possible, or if its even possible.
Of course it's possible; emulators are always reading native game code and translating it into something your computer can process. I know what you're talking about in regards to jailbroken iOS devices; my iPod Touch has GBC A.D. on it, and there are achievements for specific games. From what I gather, emulators need to have very thorough idea of what the game is doing in order to do this. This is something that would have to be done by human observation first, then implemented in an emulator.

For example, say you had a Tetris game you wanted to set an achievement for, like getting 50,000 points. You'd run the game through a debugger, look at the assembly to see where the code updates the score, then code the emulator to set the achievement when these conditions are met. Ideally, if you're making achievements, you should have a good understanding of the native game code, or at least the parts relevant to the achievement.

This can be pretty time consuming, so it's not likely to implemented in Dolphin soon (or at all). There's nothing stopping any interested hacker in doing this himself/herself. If you did want to help, the obvious thing to do is to start learning programming (preferably in a high-level language first), then school yourself in the GC/Wii's PPC assembly. That's what I'd do at least. Easier said than done, however :p
(12-15-2012, 06:44 AM)Shonumi Wrote: [ -> ]Of course it's possible; emulators are always reading native game code and translating it into something your computer can process. I know what you're talking about in regards to jailbroken iOS devices; my iPod Touch has GBC A.D. on it, and there are achievements for specific games. From what I gather, emulators need to have very thorough idea of what the game is doing in order to do this. This is something that would have to be done by human observation first, then implemented in an emulator.

For example, say you had a Tetris game you wanted to set an achievement for, like getting 50,000 points. You'd run the game through a debugger, look at the assembly to see where the code updates the score, then code the emulator to set the achievement when these conditions are met. Ideally, if you're making achievements, you should have a good understanding of the native game code, or at least the parts relevant to the achievement.

This can be pretty time consuming, so it's not likely to implemented in Dolphin soon (or at all). There's nothing stopping any interested hacker in doing this himself/herself. If you did want to help, the obvious thing to do is to start learning programming (preferably in a high-level language first), then school yourself in the GC/Wii's PPC assembly. That's what I'd do at least. Easier said than done, however :p
This is what I wanted to know! I assumed this was the case, but I didn't want to make assumptions of impossibilities and then set out a goal to at least understand it... only to learn that it just cannot be done. This is something that has always interested me so I was curious and that was some great information. I do have some coding knowledge of C, C++ and some C# (it was required for my business major, I am still not sure why) and have worked on some projects, so I am not afraid to be frustrated and learn something new. I will see what I can find when playing around with things. I am sure it's time consuming and frustrating, but for the people who are have fun with achievements like myself, I think it would pretty sweet even just on a basic level.