DS2x86 by Patrick Aalto is a PC emulator for Nintendo DS. It’s purpose is to allow you to run old DOS games on your Nintendo DS game console. DS2x86 is a port of DSx86 port using the SuperCard DSTwo’s MIPS processor, therefor it will just run with such a card.

Release notes:

This version has no changes besides the rewritten and improved audio code. I managed to port the AdLib emulation code from ARM ASM to MIPS ASM, so this version has also AdLib audio support. I also implemented the SB digitized audio ADPCM sample formats, and improved the auto-init DMA behaviour.

However, the audio features are not yet fully working, there are problems in the ADPCM audio playing, and there is a rather big problem with the DSTwo I/O layer. I fought pretty much the whole of last week with the DSTwo I/O layer, as it keeps hanging very often when playing audio. I have tried all sorts of changes to my audio code, but it seems that I can only choose between the audio buffers occasionally hanging, and the whole I/O layer hanging! Thus, this version has the audio-buffer-hanging problem but it should not hang the whole I/O layer very often. I have no idea what exactly causes the I/O layer to freeze, so I have no ideas how to stop this from happening, sorry.

This is the situation with audio on the games I have been extensively testing this version with:

* Supaplex seems to work pretty well, AdLib music plays and the SB digitized audio effects are also mostly working. It could still use some improvement in the timing of the SB digitized samples, though.
Doom also works pretty well, the music plays (although with a rather low volume, but that seems to be by design) and the SB digitized sound effects are also working. There are some slight pauses and stuttering in the digitized samples, which I still hope to improve in the future versions.
* Warcraft does not play audio in the intro or in the game. It worked fine in one of my test versions last week, but I did not notice the audio had stopped working until recently, and I don’t have a backup of the code where the audio worked, so I don’t know what caused it to stop working. I hope to have it working again in the future.
* Duke Nukem 2 seems to hang one of the DSTwo I/O layer audio buffers immediately when it starts, so it plays audio only using one buffer, which causes a lot of stuttering. As I have no idea why the audio buffer hangs in the DSTwo I/O layer even before any audio gets played, I currently have no ideas about how to fix this problem.

Since this version has a high risk of breaking some games that used to work in the previous version, I’ll keep the previous version 0.10 also available on my download page. I hope I can make some sense of the DSTwo I/O layer behaviour some day, as it has been very frustrating trying to circumvent weird problems that have nothing to do with my x86 emulation code!