09 Aug 2025
I've been getting a lot of cheevos on RetroAchievements, and working on making some too!

If you haven’t heard of them before, RetroAchievements is a site which you can hook up various emulators to for their achievement service. While playing your legally backed-up games you can earn community-made achievements like beating the game, or beating the game but never losing a life. You can either earn softcore achivements which let you use save states, or hardcore achievements which forbid the use of save states and other emulator features. There’s also leaderboards for competitive play so you can fight over high scores or fastest times.
I’ve been going through achievement sets for a bunch of games I grew up with, and even mastered a few sets! But now I wanted to try more, so I dove into making an achievement set for Orb-3D. It’s a game form Hi-Tech Expressions that came out on NES long long ago, and I had it growing up but never had any manuals or 3D glasses that came with it.
I’ve been experimenting with NES development, and one thing that I’ve gotten familiar with is digging around in RAM to see what some values are. I’ve been keeping code notes of the various stuff in Orb-3D, like the two ranges of memory used as the field grid (one for whether there’s an object, another for the object’s type) or whether there’s a second ship chasing or helping the first orb. Using this I’ve implemented rich presence that shows what level you’re on, your score, and whether you got one or two orbs.
The easy part of the set that I’m writing is the progression badges. When you clear level 5, level 10, etc. The fun bit is writing level-specific challenges. One of them, you’ll have to hit a bunch of shields from behind to clear them without ever flipping them over. That takes a good amount of memory checking to ensure that no shields on the grid get flipped. Another involves getting a strike on bowling pins on your first try. Little fun things along the way. There’s also a few challenge run achievements like never missing an Orb with your paddles, or never going to Vern’s.
Part of working on this also involves decompiling the NES ROM using Ghidra (and a hell of a lot of code decompiling assist from Xkeeper, thank you!) and working out what all the live memory addresses being used are, then saving those in the Code Notes for future reference. The more code notes, the easier it’ll be to maintain the achivement set in the future. Documentation is important!
Yes it is, and if code sickos shit is your shit, look into RetroAchievement development. It’s a load of fun digging around in the guts of an old game and finding how it worked. If you don’t want to get that wild, there’s a large amount of achievements on so many systems to play that you will never run out of achievements to earn. There’s even a random set option to find something new to play.