June 27th, 2011, 23:06
DSx86 0.35 released!
Category: Nintendo DS
Heres a new release of the Dos Emulator for the Nintendo DS:
I decided to take a break from getting frustrated with the problems in DS2x86 and work on DSx86 instead. This version has various small fixes, mostly for specific games but all of these fixes were actual bugs in the emulation, so they might fix problems in other games as well. Here is the list of the fixes:
Dune 2 has had a problem since version 0.30, where giving a MOVE command to an unit makes the unit vanish. This was caused by a bug in one of the macros I changed when enhancing the memory access system to be able to handle 16MB RAM.
Populous II always exited to DOS immediately after moving the mouse. This was caused by my emulated mouse callback function not saving and restoring the ES register. This problem may also have affected Battle Chess 4000, and possibly other games as well.
Battle Bugs gave an unsupported INT call, and then hung. The INT call was simply an unsupported mouse command "LIGHT PEN EMULATION OFF", which I now ignore, but the hanging was caused by some missing features in my emulation of I/O port 0x61 reading.
Battle Bugs also played PC Speaker sounds (before configuring the audio) and at times changed the speaker frequency so fast that it caused the ARM7 FIFO buffer to overflow, which in turn caused the touchpad to seem to stop working. I fixed this by changing the PC speaker frequency handling to use a shared memory location instead of the FIFO system. Now ARM7 reads that memory location 512 times per second (once per each AdLib music buffer fill cycle) and adjusts the PC Speaker channel frequency by the read value. This is not yet quite fast enough for PC Speaker digitized audio emulation, but at least it fixes the touchpad hanging problem.
Battle Bugs also needed various enhancements to the VGA 640x480 screen handling. It uses split screen mode and a non-standard display pitch value, both of which were still unsupported in my 640x480 mode screen blitting code. I added support for those features to the Zoom, Scale and Jitter modes, but did not have time to add them to the Smooth scaling algorithm yet. I don't actually know how to play Battle Bugs, or Populous II for that matter, so I don't know how playable those games are, but at least they start into the actual game.
Just before this weekend my NAS server machine died. I had all the backups and previous version source codes for DSx86 and DS2x86 in a RAID 5 disk array on that machine, along with all the debug logs and such you have sent me. It looks like the motherboard of that machine is dead, and I don't have a suitable RAID controller in my other machines, so I can not access the old version sources or debug logs at the moment. I have ordered a new motherboard, so hopefully I can get my RAID 5 array up and running again when the new motherboard arrives.
My summer vacation begins after next week, so then I should have more time to work on DSx86 and DS2x86. There are still a lot of things missing from DS2x86 that I would like to add to it, but before that I would want to fix the problems with the DSTwo I/O layer which are the source for the constant frustration. Perhaps I will have time to really dig into this problem during my summer vacation.
Webmaster of DCEmu - The Homebrew and Gaming Network