|
May 29th, 2011, 17:54 Posted By: wraggster
News via http://dsx86.patrickaalto.com/DSblog.html
The GBAtemp Homebrew Bounty 2011 is about to close, so I wanted to release a new version of DSx86 before the deadline. I had to choose between DSi and DS categories in the competition, which was a somewhat difficult decission as DSx86 does run in both. In the end I decided to put DSx86 into the DSi category, as pretty much all the other emulators in the competition are also in that category, and running DSx86 on a DSi does bring some worthwhile advantages.
Last week when I was testing DSx86 on my friend's DSi, I noticed that Supaplex demo kept hanging, same as Wing Commander II during the speech intro. First I thought the problem only affected DSi mode, but when I tested those games on my DS Lite, they also caused DSx86 to hang! That was a nasty surprise, with only a few days left before the bounty deadline! I tested all the older versions of DSx86, and noticed that version 0.23 (the last one built with libNDS 1.3.4) ran fine, while all the newer versions (built with libNDS 1.5.0 with DSi mode support) hang on both DSi and DS Lite!
So, the problem was obviously introduced with the new libNDS 1.5.0. I then began building different versions of libNDS 1.5.0, removing various stuff that had changed between 1.3.4 and 1.5.0 versions, to see what exactly caused the hang. Finally I got a version that ran DSx86 fine, but I had to remove quite a lot of stuff (like the DSi SD slot access, DSi i2c chip handling, new system FIFO commands, etc). I believe the problem could be caused by the ARM7 processor simply running out of stack space with the new ARM7 binary being so big. The libnds7.a from version 1.3.4 is 39 KB, while the libnds7.a from 1.5.0 is 193 KB! My AdLib emulation needs a lot of RAM so that I had to remove all WiFi and MAXMod stuff even in 1.3.4 version. It is quite possible that it just won't fit properly with all the extra stuff that 1.5.0 version has included.
Anyways, I am very sorry for all the recent versions of DSx86 having had this hanging problem! After fixing this I began working on some final touches to DSx86 so that I could be satisfied that it is as bug-free as I have time to make it. I mainly improved the EGA smooth scaling features, and I even added the most difficult 640x480 to 256x192 smooth scaling algorithm. This takes so much CPU power that it is only available in DSi mode, though. Smooth scaling in the lower resolutions, up to 640x400, is available also when running in DS Lite mode. Here below are some screen copies of Windows 3.00a and Castle of the Winds running on a DSi in 640x480 smooth scaling mode.
I also added a new DSx86.ini configuration option EMSSize to choose the emulated EMS (and thus also XMS) memory size. The size can be between 256KB and 4MB, and it needs to be in the [DSx86] section. For example, to select 1 MB as the EMS memory size (which leaves another 1 MB for XMS memory in DS Lite mode) you can configure it like this:
[DSx86]
LogFile=/data/dsx86/dsx86dbg.log
EMSSize=1
DSx86 is able to figure out the units automatically, so you can give the amount in either kilobytes or megabytes. If you mainly run Windows in DSx86 on DS Lite, you can turn the EMS memory size down so that Windows has more XMS memory, or if you run games that need more EMS memory, you can increase the EMS size (up to 4MB or however much RAM is available). Note that this setting is not configurable per game or another program you run, as 4DOS wants to keep track of the available memory.
So, to recap, here are the changes in DSx86 version 0.33:
Fixed a serious hanging issue introduced in version 0.24, caused by an incompatibility between my ARM7 code and libNDS version 1.5.0.
Improved the speed and quality of EGA 320x200 Smooth scaling mode.
Implemented Smooth scaling for EGA 640x350 and 640x400 modes.
DSi mode only: Implemented Smooth scaling for VGA 640x480 mode.
Introduced new configuration parameter EMSSize to adjust the emulated EMS/XMS memory allocation.
Thanks again for your interest in DSx86! I hope you find this version more robust than the few prior versions.
Download and Give Feedback Via Comments
For more information and downloads, click here!
There are 0 comments - Join In and Discuss Here
|
|