QuakeDS logo
Quake is a registered trademark of id Software
Nintendo DS is a registered trademark of Nintendo


This is the home of the homebrew port of Quake - the hit first-person shooter from 1996 - to the Nintendo DS handheld system.

Due to the limitations of the system, this port has taken a whole lot longer than it should have! Here's why:
  • the original game required somewhere between ten and twelve megabytes of RAM, including the loading of the program into memory. The DS has just four megabytes of general-purpose memory - not cool.
  • the original game was software-rendered, something which requires a decent amount of computational power, something the DS doesn't have.
  • the original game required a math co-processor (also known as an FPU). Neither processor in the DS has an FPU so all floating-point operations must be emulated, which is very slow.
But here's why there should be a QuakeDS:
  • the game runs on, like, every other platform in the entire world, right?
  • the DS has hardware which can accelerate 3D graphics
  • the DS has a wireless interface built in - anyone for DS-DS deathmatches?
Quake on the DS

Current Status, as of 27/10/07

The game

  • the program, working state and game data have been squeezed into the four megabytes of main memory
  • it requires either shareware or commercial pak files, Amiga and PC paks have been successfully used
  • many total conversions and mods should work with a stock DS, assuming they respect the tiny memory size
  • total conversion and mods which refuse to play on a stock DS will play on a DS with a compatible flash card when combined with the EXRAM build
  • infrastructure-based wifi network gaming is supported
  • ad-hoc DS/DS gaming is currently de-activated in this version
  • there is full control configuration
  • game saves work, although there may be some corruption using certain DLDI drivers - game saving is not guaranteed to work correctly in the EXRAM build (when used with a slot-2 DLDI)
  • there's a crosshair
  • there's view snapping and pen sensitivity settings
  • there is a proper timebase, so the speed won't be inconsistent any more like it was in pre1
  • there's an on-screen keyboard, for use in-game and with the console, and it is much more functional than before
  • there are eight user-bindable 'touch buttons'
  • access to the command line is now easier
  • dodgy QuakeC compatibility has been improved


  • all software renderering has been moved over to using the DS' 3D hardware
  • world textures are display 99% correctly, there may the occasional non-power-of-two texture wrapping glitch; Alias models are fully textured
  • sprites (eg explosions) are now correctly rendered, and they now have their correct animated textures (ie they're not pink any more!)
  • particles (eg blood effects) are also correctly rendered, and also come in a shade other than pink
  • animated model skins are now (barely) supported
  • the game uses faux vertex lighting, derived from the original lightmaps; light animations also work correctly
  • there's no dynamic lighting and Alias models are not lit
  • there are sky, water, sludge, lava and teleporter animations (the sky is now rendered correctly)
  • the console now uses the Quake font from the chosen pak files
  • the game uses hardware fogging for a light depth cue above ground, thick fog for below water
  • there's a HUD
  • GUI elements are transparent (with no more corruption)


  • there's a full-blown custom ARM7 sound effects system, and it totally r0x0rs
  • the sound system uses proper spatial positioning (it is stereo though...) - plug it into your speakers and subwoofer to hear all the effort I put into this!
  • CD music has been dropped from this version...it may return

Tech info

  • uses the libfat DLDI interface, so should hopefully work on all supported flash cards
  • built using the devkitARM r20 toolchain
  • textures and sounds are loaded from disk on demand - you will notice slow loading if you have certain types of cards, or low quality flash cards
  • sound and texture memory is defragged in the background
  • in-game performance has been improved but is still not hot, and I think this is as good as it's going to get
  • rendering performance is very good (pause the game and move the camera if you don't believe me)
  • performance is timed using a custom function-instrumenting profiler (a bit like gprof) and another system is used for recording the exact pad and screen input for later replaying
  • the DS is put to sleep when the lid closes (disabled in this build)
  • there is no texturing on brush or Alias models or images loaded from individual files - you must use pak files
current status

current status

current status


How to play


Transparent water

On-screen keyboard and touch buttons

Using mods and total conversions

Network play

Slot-2 RAM 'EXRAM' build


I take no credit for the development of Quake, that all goes to the guys at id Software. I also claim no copyright, trademark etc. Again, all work, copyrights, trademarks are owned by them.
I have had no involvement with Nintendo (or their first-party or third-party companies), and I have not used any of their tools, software, documentation or SDK to make this port.
All I've developed is a small patch to make this game run on the Nintendo DS, and I have done so as a (non-profit) hobby.

This is absolutely no warranty for QuakeDS, and neither I, the copyright holder, nor Drunken Coders will be liable to you for damages out of the use or inability to use the program.


A big thanks go out to everyone who has helped me get the game running! There's too many names to remember, but a few off the top of my head:

The EXRAM build of QuakeDS uses Lick's RAM unlocking library. Ta mate!
The infrastructure-mode wifi-play version of QuakeDS uses libwifi, by Stephen Stair. Big kudos go out to him for an excellent piece of tech :-)
The ad-hoc wifi-play version of QuakeDS uses liblobby, by Mighty Max. The final major feature to go into the game!
And finally it's all built with the tools made by those great devkitpro folks.