Tutorials » DS Ripping with DeSMuMe When it comes to Nintendo DS sprite ripping, DeSMuMe is the emulator of choice. It may not be everyone's first choice for actually playing DS games on a computer, but with superb compatability, excellent customization, and most importantly, great tools for ripping, it's perfect for our purposes. Let's get started.

I. Installation and Setup

First you need to download DeSMuMe; you can get the latest version (0.9.8 as of this writing) right here: http://desmume.org/download/
Extract all the contents of the .zip file onto your computer, wherever you want. Browse to that location and run DeSmuME.exe.

1) Controls

First we're going to look at some of the settings. You'll need to know the controls, so take a look by going to Config > Control Config.


Unlike most emulators, DeSMuMe has pretty good default controls but you can change them if you like. Obviously you need to know the controls before you can make any in-game progress, so get familiar with them.

2) Hotkeys

DeSMuMe also has a ton of convenient hotkeys which will come in handy when ripping. I strongly recommend you learn to use hotkeys as often as possible. It'll save time on digging through menus, and you won't have to move your hands from the keyboard nearly as often.

You can view them through Config > Hotkey Config. Here are the main hotkeys:

Out of this list we're most concerned with Pause and Frame Advance. I like to switch Pause to a different key like "M", because the "pause" key on the keyboard is a bit hard to find and M is right next to N.

Fast Forward is another useful key. If you're stuck in a boring or slow-paced part of the game that can't be skipped, at least you can fast forward through it. Quick Screenshot is also useful, for hopefully obvious reasons. Remember, ripping is about being as lazy and efficient as possible!

Also make note of the Savestate hotkeys.

I use savestates constantly when ripping. It's a good idea to make a save any time you run into another character, object, etc. that you plan to rip, so you can come back to it at any time. You can also create named save files by using File > Save State As.

3) Sound

One last thing before we get started. You'll probably want to turn off the sound while ripping. I tend to find it extremely annoying and distracting. If you want to shut it off, go to Config > Sound Settings and change "Sound Core" to None.

II. Basic Sprite Ripping

That's all the configuration we really need to do for now, so let's get started. Use File > Open or Ctrl+O to select a .nds game rom to play & rip from. For this tutorial I'm going to use Mega Man ZX, since it's an older game and usually those are easier to work with.

Load up your game and get to a point where you can rip whatever sprites you want. It's easiest to rip a playable character, since you control what they do. Now we can begin to rip using the following features:

1) Layer Disable

The most basic feature any good sprite-ripping emulator needs is the ability to disable layers, and of course DeSMuMe has it.

To turn background layers on and off, use Tools > View Layers and uncheck a layer to disable it.

Unfortunately there are no hotkeys for this so you'll have to do them one by one. No big deal though.

"Main" is the top screen and "Sub" is the bottom (touch) screen. Each has four background layers (0 - 3) and an object layer which is where sprites are often found. Turning off the Main GPU or Sub GPU will disable all graphics on that screen entirely.

Here's the above Mega Man ZX screenshot, as seen when we remove one layer at a time.

All layers active.

Turn off Main BG 0.

Then Main BG 1.

Main BG 2.

Finally Main BG3.

For screenshot ripping, this is ideal. Just the sprites, with nothing else to get in the way.

2) Pause & Frame Advance

Remember when we talked about the "Frame Advance" and "Pause" hotkeys earlier? We're going to use those now. To pause the emulator, there are three methods.

  • Go through the menu; Emulation > Pause
  • Use the hotkey. The default is the "Pause" key, I recommended changing it to "M".
  • Use the button:

To unpause, just hit the hotkey again or click .

Once the game is paused we want to start using frame advance. The default key is "N". Tap N and the game will move forward one frame at a time. Take it slow and you won't miss a thing. Note that if you press while the game is not paused, it will automatically pause the game for you. Handy.

Don't forget that we can also input control commands while using Frame Advance.
For example, to move your character to the right while paused, you'd simply hold down on the key and tap N.
Don't let go of the key or you'll stop walking. To get the whole animation, make sure the key is always held before you tap N.

Every time the sprite you're trying to rip changes, simply use Alt + PrintScreen on your keyboard to take a screenshot, then paste it into your graphics editor. Or, you can use the Quick Screenshot hotkey - the default is Ctrl+F12.

Using this method, tools like Animget are totally unnecessary, as there is literally no chance of missing a single frame.

3) OAM Viewer

Desmume has an OAM viewer - Tools > View OAM - but don't get excited. It's not at all like the useful one featured in Visual Boy Advance. I'll quickly explain it anyway though. Basically, it just shows the OBJ layer of either the Main or Sub screen. It's pointless since if you really wanted to see that, you could just turn off the other layers.

You can set it to Auto-update which will make it follow along with the emulator window.

The arrow buttons will scroll through the OAM objects, but it doesn't separate them (see how the blaster charge effect is still on top of Mega Man?) so again, it's useless.

I guess what I'm saying is, skip this stupid thing.

4) Map Viewer

There's also a Map Viewer which is thankfully much better, located at Tools > View Maps.

This is excellent for ripping backgrounds. You can use the dropdown to select from each screen's four background layers, and it'll show them. Nice and easy.

Like the OAM viewer, you can set this to Auto-update which will make it follow along with the emulator window.

5) Tile Viewer

Let's not forget the Tile Viewer (Tools > View Tiles). As far as tile viewers go, this one is pretty straight-forward. Unlike the OAM viewer, this might actually help you get sprites that are covered or off-screen. Play around with this if you're ever in a tough spot.

III. Advanced Sprite Ripping with GLIntercept

Ok, so you've figured out everything above, and it works great for some games, but for others the layer disable seems to be completely useless. What now?

Well, here's what's probably happening. The DS is capable of both 2D and 3D games. As we've seen above, the system has built-in background and sprite layers for 2D games to use. The thing is, not all 2D games actually use these. Let's take a look at One Piece: Gigant Battle! 2.

Here's a screenshot with all the
layers still enabled.

Turn off Main Obj, where the sprites
should be located and...only the GUI
is removed. Hm.

Ok, so let's turn off Main BG 0...
wait, what the heck?!

So here's what I think is going on: the DS is showing the player, enemy, npc's, and the majority of the background through its 3D renderer. That's why they're all on the same "layer".

Using the Map viewer won't help. This is all it shows - a bunch of junk. So how can we rip sprites from games where this happens?

There are a few options. The easiest would be to simply leave the backgrounds there and color them out in Photoshop (or use SpriteTracer.) Honestly, that's not too difficult so if it works for you, that's great. But check this out. In Desmume, go to Config > 3D Settings.

We can ignore everything but the dropdown box. The three choices are "none", "OpenGL", and "SoftRasterizer".

The "none" option is useless, since you won't be able to see anything.

SoftRasterizer and OpenGL are the two 3D renderers you can choose from in Desmume, and in certain games like One Piece: Gigant Battle!, toggling between them will alter the graphics quality.

Now, if we use OpenGL in One Piece: Gigant Battle! the graphics come out a little distorted, while SoftRasterizer shows them pixel-perfect. It's different for every game, so experiment with it.

Even if OpenGL does look wrong, there is still something we can do with it.

If Desmume is still running, close it first. Then, download GLIntercept from here. Inside the zip file, find the "ManualInstall" folder, then the "GLIntercept_1_1_0" folder. Extract everything inside that folder to the location where your Desmume.exe is located. See the image below for reference.

Next, open the gliConfig.ini file with Notepad or any text editor; find the line that says ImageIcon { Enabled=True; and change the "True" to "False". See below.

Then save and exit Notepad. Without doing this step, the program will run much slower and create dozens or hundreds of unnecessary files.

If you did everything right, GLIntercept will now be active as long as you use the OpenGL renderer in Desmume. So what does it do? Well, it intercepts all the graphics data displayed by OpenGL. Get it? Once active, GLI will create an "Images" folder located in the Desmume folder, and will save every bit of graphics data that appears in-game to that folder, as a .png file.

So, run Desmume.exe, activate SoftRasterizer, load your .nds rom, and get to a point where you're ready to start ripping. Then pause the emulation, and switch to OpenGL. Use frame advance (N key) a few times, and GLI will start to work its magic, creating the Images folder and saving a bunch of images into it. Here's my Images folder a few frames after enabling OpenGL in One Piece Gigant Battle! 2.

As you can see, it saved a bunch of sprites, textures, and background objects into this folder as .png images! Every time you use Frame Advance, any new graphics will get added to this folder. So all you have to do is take these pieces and assemble them. This is great for any situation where sprites are displayed wrong or you can't see the whole thing for one reason or another. Of course, your life will be easiest if you combine this technique with accurate screenshot rips.

Not all games will require that much assembly, however. Here's another example, taken from Dragon Ball Z: Supersonic Warriors 2. In this game, you get fully assembled character sprites, plus effects and background textures. As you can see, the amount of assembly needed will vary a lot from one game to the next.

That's really all there is to GLIntercept. You should switch back to SoftRasterizer any time the game isn't paused, as having GLI active will slow down the emulation and create a huge amount of files in the Images folder, and you don't want that.

GLIntercept also works with any other emulators that use OpenGL for 3D or 2D graphics, so try it out!

That's all for the Desmume tutorial! Feel free to comment on the forums, or contact me at admin@spritedatabase.net. Hope you liked it!

Latest Files
View All