From GameBrew - a wiki dedicated to Video Game Homebrew.

Last Updated2021/06/27
Version27 June 2021

cHeretic is a port of Heretic to the Nintendo DS. Developed by Raven Software, it is a dark fantasy first person shooter and released in 1994 by id Software through GT Interactive.


Note: You will need to prepare your own wad file to run this homebrew (or you can use the shareware).

Copy Heretic.wad and cHeretic.nds to the root of your card.

See also this tutorial (by Nikokaro) of how to run new episodes and custom wads using hbmenu.

User guide


Evil grows darkest in the shadow. This chapter comes to its evil conclusion with Heretic: Shadow of the Serpent Riders. In a twisted medieval dimension, undead creatures and bestial horrors have done the unthinkable - callously slaughtering your entire race.

But the nightmare has just begun. Wielding ungodly weapons such as the Firemace or Hellstaff and casting spells from the tomes of power, you must seek your vengeance...or die trying.


Tap on the box in the top right corner of the touchscreen to toggle the on-screen keyboard, then type in the codes one letter at a time during the game to use.

  • ponce - Fill health.
  • skel - Gives you all keys.
  • quicken - Toggle God mode.
  • massacre - Kill all monsters.
  • rambo - All Weapons, full ammo and 200% armor.
  • kitty - Toggle no clipping (walk through walls).
  • ravmap - Shows entire map (type while in map view), type again to show monsters/items, a third time goes back to normal.
  • cockadoodledoo - Chicken mode (turns player into a chicken).
  • shazam - Power mode (doubles power of all weapons).
  • engage## - Level warp (first # = episode, second # = level).
  • gimme## - Gives you an item: first # = item [a-j], second # = how many [1-9]. Items for first # are:
    • a - Ring of Invincibility.
    • b - Shadowsphere.
    • c - Quartz Flask.
    • d - Mystic Urn.
    • e - Tome of Power.
    • f - Torch.
    • g - Time Bomb of the Ancients.
    • h - Morph Ovum.
    • i - Wings of Wrath.
    • j - Chaos Device.


A - Attack

B - Use

Y - Use artifact

L/R - Strafe left/right

Select - Escape

Start - Enter

X+Left/Right - Cycle weapon backwards/forwards

X+Up/Down - Next/previous artifact

X+L - Toggle map


cheretic2.png cheretic3.png

cheretic5.png cheretic4.png


Works on DS Lite and 3DS with flashcard. Not playable from SD slot of DSi.

Also tested on DeSmuMe.

Known issues

Game crashes on some custom maps, though you may use cheats to skip the level or certain problematic parts.



  • Cleaned up the sound code. So far it seems to have resolved the odd sounds - screeches, crackling, etc.
  • Made a change to clear the sound buffer and reset the sound timers during level changes. This should help with keeping the sound playback in sync with the mixer timer.
  • Also merged the opl7 branch back into master - so master has the latest version.


  • Uploaded a new build to the opl7 branch. Adjusted the sprite scaling to reduce sprite texture loads. This has the benefit of fewer black lines at the expense of more aggressively scaled sprites, since sprites are almost always rendered in scaled down manner it is not super noticeable in most cases. The previous algorithm tried to avoid scaling down sprites when possible. The renderer supports dimensions of 8,32,64,128,256. The previous method would try to use first dimension that was greater than or equal to the actual sprite width/height. the new method scales down if it is halfway between two values. For instance widths between 64 and 96 will be scaled down to 64.


  • Upload a full rebuild new nds file. The last file may have been dldi patched for mpcf to work with desmume. Was having problem launching on a 3ds with the old build. There are no code changes, but it works now on 3ds.


  • Created a branch using different opl emulator code. The opl emulator code is from chocolate-doom which is in turn from dosbox.


  • Added a new version to git that should fix the e3m8 crash.


  • Added the automap to the bottom screen.


  • Disabled music.
  • Added onscreen keyboard.
  • Added R+L speed key.


  • Reverted texture loading code to use the previous method. Apparently the last commit was to add a new texture loading method - in an attempt to avoid black/white lines. This code has been reverted as it was intended for testing.
  • Fixed sprite loading that caused an abort. This was caused by a cached object being evicted from the cache while it was still in use.
  • Fixed music memory leak. mus files were never allowed to be dropped from the cache. This resulted in z_malloc failure errors.
  • Reduced sfx from 16 to 8 in an attempt to reduce sound issues. Did not seem to make a difference.
  • Added X+key combinations - you will need to delete heretic.cfg for this to take effect.


  • Updated the source so that it compiles and runs with the latest devkitARM and libnds.
  • Also disabled god mode and adjusted the key bindings a little.

External links