DraStic, The Fastest DS Emulator on ARM, is Back


I have already talked extensively about DraStic on Pandoralive (for the earlier versions, if you don’t remember). This is really a wonderful piece of software, but as you know it still had limitations regarding games using the 3D capabilities of the DS. This did not concern only 3D games, but 2D games as well using special 3D functions to display stuff on screen. Previously DraStic was not optimized to handle that kind of things, and some games ran slowly. But we can now say “in the past..” because the last version of DraStic is so very much faster in all aspects.

I have to say I was very surprised when running the games that I previously discarded as “unplayable”. Now, even the 3D heavy games are either close to full speed or at least playable. It’s such a massive improvement it’s hard to believe the Pandora is capable of doing this. Expohase really outdid himself and delivered something like 3x performance improvement in just a couple of months after the first release.

I tried games that ran like slideshow before. Rayman DS, for example, now so smooth that you don’t even think about the emulation anymore and can focus completely on the game. Needless to say, games like “New Super Mario Bros” which were close to full speed are now running just fine.MarioKart works great now, with the exception of an odd graphic bug here and there. Adventure games like Ghost Trick which suffered massive slow-downs when in “ghost” mode are now running smoothly as well. Here’s an example on how a 3D game ran before in the previous version in the best conditions (1Ghz Pandora, overclocked to the death) versus how another 3D-heavy game runs on the new version:

Videos speak volumes, don’t they?

I tried Final Fantasy V, and that may be the only game so far where I noticed some slow-downs: it works beautifully as long as the 3D elements on screen are not too numerous, and in more complex scenes, while remaining very playable, you can see the frame rate dropping a little. But at this stage it’s almost nitpicking compared to what performance we had before!

So, how was this made possible ? I asked Exophase, for good measure:

Both the 3D renderer and the geometry engine were totally rewritten into forms that’d make them more amenable to NEON optimization (and faster in general). This involves a split of splitting work into big blocks and then performing one simple operation on the entire block at a time. For the 3D rendering a few additional highlights were finding a good balance between a small amount of floating point work and properly sized integer work, optimizing special cases (like a constant color or depth for a polygon, or sprite-like polygons) and rendering the screen one section at a time for better L2 cache utilization.

If you’d like some benchmarks, here’s some numbers to give a sense of how much faster is this new version versus the last one…

I did some tests comparing the difference in performance over several games using the 3D engine, which is most games – this includes some 3D and 2D style games. This test was done on a 1GHz unit at 1.1GHz, with frameskip off and fast-forward on, with a 250 frame benchmark period from some point in-game. Here’s what I found:

Video 3D: average improvement 5.34xx (min 3.63x, max 9.91x)
Geometry (over games w/significant load): average improvement 2.77x (min 1.86x, max 5.04x)
Full runtime: average improvement 2.98x (min 2.17x, max 3.49x)

The biggest improvement is for games with a lot of sprite-like graphics, that’s what enabled the 9.91x improvement (that game was Castlevania: Portrait of Ruin)

Since so much has been accomplished, performance-wise, I do not expect to see any major speed up in the upcoming versions. Indeed, the next focus will be on ccompatibiliy, since DraStic is not perfect on this aspect (no emulator ever is!) while it probably runs 90% of games just fine by now.

I’m at a point now where I don’t think any of the emulation systems would benefit from major rewrites and I wouldn’t really call any part of it “slow.” But every area has parts that could be further refined for better performance. There are a lot of things I’d like to try in the future, but for right now I’d prefer to focus on improving compatibility and features for the next few versions, something I did after the first release as well.

One thing that I do want to focus on is some new strategies for dealing with cases where the dynamic recompiler has to flush constantly, which destroys performance. There are a few games that have this issue in some places.

It’s been just a few months since the first release of DraStic and either the improvements were easy to make or Exophase is a very productive guy. Well it’s fairly obvious it’s the later.

It was a lot of work, some thousands of lines of code. Before even really coding I wasted a lot of time trying to chase very accurate 3D rendering before deciding that I couldn’t figure out enough and went with something simpler for now. I planned to have something ready by June, but my original plans were to just have a faster C-only 3D renderer that I hoped would hit 2x performance of the original – so in that respect I’ve exceeded my targets. I expected the NEON optimization to take a long time because it did for the PSX GPU emulation I did (a few months), but it wasn’t that bad for this, even if it’s not yet as extensively optimized as that was.

There were however a few surprises along the way. For example, Exophase realized that DraStic benefited significantly from the later 1Ghz hardware versus the earlier Rebirth or CC models, even at the same frequency:

Probably what surprised me the most was how much faster the 1GHz Pandora ran the new code vs the old CC Pandora, even when they were both clocked at 900MHz. Based on the difference seen in other emulators I didn’t expect this much. I definitely recommend getting a 1GHz unit if you still have a CC or Rebirth unit and play a lot of DS games.

The 1GHz units have two CPU advantages that I know of (beyond more clock speed of course): faster main memory and twice as much L1 cache. The former could mean lower latency and not just more bandwidth. I don’t really know which contributes more.

So you know about everything now. Lots of work, lots of dedication went into this update and it was very, very fruitful. DraStic now opens the door to thousands of games made for Nintendo DS and there’s a pretty good chance most of them would run very decently. And this is a Pandora exclusive, for now.

At least until the Android version comes out, and it’s on the way.

Leave a Reply

3 Comment threads
0 Thread replies
Most reacted comment
Hottest comment thread
2 Comment authors
Steven CraftJon Pritchard Recent comment authors
newest oldest most voted
Notify of
Jon Pritchard

Very good article. Well done Exophase, and a massive thank you too. I own a DS, but it’s incredible to be able to consolidate that all on the 1 Ghz Pandora. Amazing work.

Steven Craft

I wonder if the main memory in a rebirth unit could be overclocked, or the memory in a 1 GHz unit could be underclocked, to determine whether what percentage of the speed increase is down to memory speed and what percentage is down to the additional L1 cache. Neither of these (cache/memory speed) is typically considered *too* carefully when comparing specifications, as normally they don’t seem to have *as* much affect on performance.


[…] 5.DraStic, The Fastest DS Emulator on ARM, is Back […]