Other Projects


Welcome to the project page for dsHeretic. A source port of the classic Raven game Heretic to the Nintendo DS.

Heretic is a classic first person shooter created by Raven software released on 12/21/1994. It is based off the Doom engine by Id software. Raven released the source to Heretic on 1/11/1999. I have taken the source, manipulated and recompiled it to run on the Nintendo DS. In my opinion, the Nintendo DS is going to be one of the greatest first person shooter consoles so far, demonstrated by the Metroid Prime Hunters demo.
I took on this project in an effort to learn more about professional game engines, and the Nintendo DS hardware. It has been a great experience.

September 20,2005 -- Released version 0.3
Added touch controls for switching weapons, using inventory, and flying up and down.
Added optional music support.
Smoothed out touch screen look a little.
Slowed down the framerate on the automap so it is more reasonable to leave it on all the time.

August 24, 2005 -- Released a version 0.2.2
This version potentially addresses the hang on "P_Init: Init game engine." It adds no other features. If you have not had any problems, you do not need to upgrade.

August 23, 2005 -- Released a version 0.2.1
This version potentially addresses the hang on "Load system defaults." It adds no other features. If you have not had any problems, you do not need to upgrade.

August 22, 2005 -- Released Version 0.2
Version 0.2 is out. It has sound (no music), increased speed, save/load game, and some other fixed and tweaks. See the readme for more complete list of updates. Get it from the download section.

August 20, 2005 -- Fixed sound bug.

August 17, 2005 -- More speed enhancements.
Under advice from MrAdults (Hexen port), I reimplemented the zone caching system instead of using the game assets straight off the cart (since the cart has a 3 wait state delay). This has speed things up another step. I have been having some trouble with my sound code, however. Sometimes it crashes right away, sometimes it works fine for the entire play session. Once I fix this, I am going to release a version 0.2.

August 15, 2005 -- Made some speed enhancements.
When I orginally worked the drawing routines out, I made a temporary space in VRAM to hold the new frame that I was drawing. I was then going to flip it in like a back buffer flipping to the front. You incur a large speed hit writing directly to VRAM when you can not write two pixels at a time, because VRAM can not be accessed as 16-bit (I had to do a read-modify-write). Then, I never worked on getting the page to flip in, I did a VRAM to VRAM dma. I moved the frame buffer into EWRAM and it is much faster now.

August 14, 2005 -- Got sound working!
I finally found what was not working and got the project building with Release 15. I do not understand it,but I had a character array, char name8[9]. To make string compare easy, I turned it into and int, like this: int v1 = *(int *)name8 (the first four characters anyway). This was working with Release 13, but not Release 15. I am using playGenericSound to play the sounds. I do not understand how to use playSound yet.
I also have the save game working fully now (this took a long time too, I had an odd inventory bug), and menu options save to the SRAM so you lefties do not have to select "Left Handed" every time you turn it on.

August 7, 2005 -- Made a side project that plays the sound effects out of the wad.
I do not know much about sound, but I could only get the sound working when I built using DevkitARM Release 15 and the updated libnds. (I was using Release 13). This means, to get sound, I have to compile the whole project with Release 15. So far, something it not working. :(

August 6, 2005 -- Added Left Handed and Invert Look options. I also got the episode endings working.
That is right, with the current release, if you work really hard and get to the end of an episode, it will just lock up on you, sorry. This is working now and will be included in the next release. Saving/Loading is almost working too. Unfortunatly, save games as they where were up to 192KB each, so I had to trim them down. I made it so when you save, it will save your state as you entered the current level, not the entire current condition. Hopefully this will be good enough. :)

August 5, 2005 -- Released!
The first release is out. Go to the download section and get it!

August 3, 2005 -- Added some new screenshots.

August 2, 2005 -- I got the automap working, tweaked up full screen status items, and got the bottom screen running.
I got the automap and the statusbar running on the bottom screen at the same time as the playerview in full screen on the top screen, but this does incur a speed hit. I made the statusbar draw on either the top screen or bottom screen based on if the playerview is in full screen. I also made the automap drawing an option. Now, you can play with only top screen, or as dual screen.
Most the items I wanted to work on for release are done. Initial release is comming soon!

August 1, 2005 -- Added ability to progress levels.
I added all the necessary code back in to progress levels. I had a bug in V_DrawShadowedPatch, which the text uses, but I fixed it up.

July 31, 2005 -- Found texture bug.
Now all the textures are working. The texture names are loaded out of the WAD using memcpy. Some texture names were not being loaded correctly, so R_TextureNumForName could not find the texture in the texture structure even though the texture was sitting there perfectly.

July 30, 2005 -- Project Page created.
I know this is not the greatest piece of html ever written, but my priorities lie in getting dsHeretic to a point where I feel I can release it to the community, and uphold some of the quality standards Raven and Heretic deserves. When this is done, I will have a chance to update this page. At that point I will add a section describing some of the pitfalls I ran into, and a section describing my ongoing work on this Heretic port.

Make sure to visit Drunkencoders.com. This is a great place to learn about what is going on in the homebrew community.
Support Drunkencoders and the Nintendo DS homebrew community by purchasing some great
Drunkencoders gear.