DS2x86 v0.36 Beta Release Notes ================================ This version has the following fixes and improvements: - Implemented "rep stosd" for Mode-X with irregular map mask (Micro Machines 2) - Forced INT 15 AH=88 to report no extended memory (Borland RTM DOS Extender) - Implemented "LAST_FIT" memory allocation strategy handling (Borland RTM DOS Extender) - Implemented "LES reg,m16:16" page fault handling (Borland RTM DOS Extender) - Implemented INT 21 AH=4D proper return mode reporting (Borland RTM DOS Extender) - Improved SB emulation to not hang after invalid SB command (Jazz Jackrabbit) - Implemented support for reading data from file to Mode-X VRAM (Jazz Jackrabbit) - Implemented proper AdLib timer handling (Mortal Kombat etc SB detection) - Fixed a bug in ARM9 SB audio buffering scheme (Mortal Kombat, Supaplex, etc) DS2x86 v0.35 Beta Release Notes ================================ This version has the following fixes and improvements: - Improved keyboard emulation (fixes Little Big Adventure hang after key press). - Improved SVGA mode scaling quality. - Fixed SoundBlaster DMA channel masking (fixes Mortal Kombat sound effects). - Implemented opcode AAM in protected mode (Warcraft 2 Setup - System info). - Fixed a BSOD problem when moving mouse in Warcraft 2 and Command & Conquer. - Improved BSOD error reporting, no more partial exception messages. - Implemented support for 80x50 text mode (Little Big Adventure Setup). - Implemented mouse function INT 33 AX=00A1 (Knights of Xentar). - Fixed a problem in AdLib hardware detection (Warcraft 2). DS2x86 v0.34 Beta Release Notes ================================ This version has the following fixes and improvements: - Improved SoundBlaster emulation using the new transfer system. - Improved high-resolution (>= 350 rows) graphics modes scaling quality. - Implemented preliminary VESA SVGA support, for 640x400 and 640x480 256-color modes. - Implemented "scasb" opcode EGA VRAM access version (Titus the Fox) - Fixed a bug in "shld r/m16,r16,imm8" and "shrd r/m16,r16,imm8" opcodes. - Fixed a bug in "idiv r/m16" which could destroy the high 16 bits of EAX register. - Fixed the VideoParameterTable to have correct VGA Misc Register values in text modes. - Minor changes to mouse emulation, for better support of SVGA graphics modes. DS2x86 v0.33 Beta Release Notes ================================ This version has the following fixes and improvements: - Fixed a real-mode FS and GS segment handling bug introduced in version 0.23. - Improved graphics blitting speed in all standard graphics modes. - Added new "Zoom/2" scaling mode for 640x??? graphics modes. DS2x86 v0.32 Beta Release Notes ================================ This version has the following minor fixes and improvements: - Mouse emulation has been implemented, it should now work similarly to DSx86. - Screen mode "Scale" in high-resolution modes scales also in Y-direction. DS2x86 v0.31 Beta Release Notes ================================ This version has the following fixes and improvements: - Improved the touchpad keyboard handling with upper/lower case and key flash. - Improved SoundBlaster audio handling, still not completely correct. - Fixed a problem in syncing screen blitting to VBlank. - Faster EGA 0x0D mode blitting when the logical screen width is larger than 320 pixels. - Fixed EGA LineCompare pixel panning reset, using NDS hardware features. - Fixed AdLib audio buffering problem. - Fixed Warcraft BSOD crash in SoundBlaster detection. DS2x86 v0.30 Beta Release Notes ================================ This version has the following major changes: - Completely rewritten transfer system between the MIPS and ARM processors. Note! The new transfer system is not finished yet, so everything does not yet work quite properly. Use this version only for testing the new system! - PC Speaker audio (beep) is supported. DS2x86 v0.25 Beta Release Notes ================================ This version has the following fixes and improvements: - Fixed a copy-paste bug in REP MOVSW string opcode (fixes Heretic, Hexen, etc) - Implemented INT10 calls AX=1008, AH=12/BL=34, AH=F1/DX=0020, AH=F1/DX=0028 - Implemented missing 66-prefix variations for LFS and LGS opcodes (NORM) - Implemented missing RCL/RCR opcodes using 32-bit registers (SWS) - Implemented read/write to/from CPU debug registers (RAYMAN) - Enabled directory access using the 8.3 alias of a long directory name - Ignore writes to I/O ports 0x140..0x14F (DESCENTR) - Some other minor fixes and enhancements. DS2x86 v0.24 Beta Release Notes ================================ This version has the following fixes and improvements: - Very preliminary paging support, for now only works in Descent 2 Demo with no sound. - Fixed a bug in REPNE string opcodes which sometimes used the REPE versions instead. - Ignore read from VGA port 0x3D8 (WIN386). - Some other minor fixes and enhancements. DS2x86 v0.23 Beta Release Notes ================================ This version has the following fixes and improvements: - Fixed the DOS file "rename" operation (fixes Albion save game etc). - Fixed "adc reg32,reg32" opcode Carry handling (fixes Albion graphics corruption). - When the TouchPadMouse mode gets reset, the screens are swapped to normal order. - Major internal rewrite, in preparation for upcoming virtual memory support. DS2x86 v0.22 Beta Release Notes ================================ This version has the following improvements: - Implemented new INI file items TPMXScale and TPMYScale. - Fixed key repeat handling with extended keycodes (Frontier) - Improved graphics mode change detection again (Albion) DS2x86 v0.21 Beta Release Notes ================================ This version has the following improvements: - Fixed a bug in 16-bit bit test opcodes (BT/BTS/BTR/BTC). - Fixed returning to menu from the debugger using the X button. - Implemented FPU opcodes fsincos, fptan, fprem, fyl2x, f2xm1 and fscale. - Fixed PC timer 2 handling (Comanche) - Improved graphics mode change detection (Comanche) - Some other new opcodes and INT calls implemented. DS2x86 v0.20 Beta Release Notes ================================ This version has the following major changes: - FPU support! Only in 32-bit protected mode, and not all opcodes are yet completely supported, though. - Fixed an unaligned memory access crash in EMS function 0x57 (Aladdin) - Built with SDK version 0.13, which hopefully helps with the audio problems in the previous version. I had not noticed I still used older SDK version. - Compiled with flag -no-long-jumps, which makes the C code smaller & faster. DS2x86 v0.11 Alpha Release Notes ================================ This version has only one major change, the improved audio code. The AdLib audio has been ported from ARM assembly to MIPS assembly, and the SB digitized audio code has been improved. DS2x86 v0.10 Alpha Release Notes ================================ This version has the following improvements: - Fixed a BSOD crash in EMS handling (Colonization etc.) - Implemented several previously unsupported INT calls. DS2x86 v0.09 Alpha Release Notes ================================ This version has the following improvements: - Implemented screen scaling for all common graphics modes. - Fixed the DOS and BIOS date/time functions to return proper Real Time Clock values. This might fix some hanging games. - Fixed EGA Read Mode 1 handling (fixes EGATrek graphical issues) - Fixed EGA Read Mask initial value (fixes Ultima V hanging) - Added a warning message for games that need a Floating Point Unit. - Screen copies are saved to incrementally numbered files SCR00.BMP..SCR99.BMP. DS2x86 v0.08 Alpha Release Notes ================================ This version has the following improvements: - A lot of new opcodes implemented! - Windows 3.00a can be run in either Real or Standard mode. - Improved BSOD reporting further, now errors in the core emulation are reported in the dsx86dbg.log file. - Some other bug fixes and improvements. DS2x86 v0.07 Alpha Release Notes ================================ This version has the following improvements: - Blinking cursor in text modes (finally!). - HIMEM.SYS emulation added, allows Chaos Engine to run. - Fixed a serious total crash problem in 32-bit string opcodes. - Fixed a stack alignment problem that could cause "Exception 4" BSOD errors. - Improved BSOD reporting, now includes a stack trace. - Improved horizontal blank reporting, this might solve hanging problems in some games. - Improved Mode-X graphics blitting code to handle wrap-around properly. - Changed the screen refresh interrupt interval from 60Hz to 59Hz. This might help with the intermittent "stuck key" problem in some games. - Direct file read to EGA memory is now supported (f.ex. in "Heimdall"). - Implemented a number of previously missing opcodes. DS2x86 v0.06 Alpha Release Notes ================================ This version has only various minor fixes and enhancements to the previously missing opcodes and software interrupts. No major new features. Some new games might run in this version, though. DS2x86 v0.05 Alpha Release Notes ================================ This version has the following improvements: - Preliminary support for high resolution EGA/VGA modes 640x200, 640x350 and 640x480 added. NOTE! Scaling does not work properly in these modes yet. - Implemented preliminary support for Mode-X mode 360x240 (for the Settlers game). - Implemented a lot of missing opcode variations, now a majority of the most common opcodes have been implemented, but many rare opcodes are still missing. - Increased the EMS memory size to 4MB, which allows Elder Scrolls: Arena to start up. - You can now switch between the configuration sections in the INI file on-the-fly, by clicking on the current configuration name. - Fixed a stack alignment problem in overlay loading, which caused an "Exception 5" error in some programs. - Fixed a bug in SETZ opcode, which caused Warcraft to hang when giving a command to dig gold. NOTE! It is recommended that you play Warcraft with "no sound", as the SoundBlaster emulation in DS2x86 seems to cause intermittent freezes and crashes. - Fixed a bug in division-by-zero interrupt handling, which caused Formula One: Grand Prix to fail. DS2x86 v0.04 Alpha Release Notes ================================ This version has again a lot of work done on the protected mode features, especially for the DOS4GW DOS Extender. A few more 386-specific games should run in this version. There are also some minor performance improvements. Feel free to test your favourite 386-specific games in this version again, and please send me the debug logs! DS2x86 v0.03 Alpha Release Notes ================================ This version has a lot of work done on the protected mode features, especially for the DOS4GW DOS Extender. Thus, this version runs the Doom game! There are also some improvements and fixes in the real mode opcodes, especially the string opcodes, so some problems running the games that work on DSx86 but did not work on DS2x86 should be fixed. The higher resolution screen modes and audio support have not been implemented yet, though. DS2x86 v0.02 Alpha Release Notes ================================ This version does not have any major new features, mainly just some minor fixes and enhancements compared to 0.01. Here are the most notable changes: - Screen "Scale" mode works also in Mode-X graphics mode. - The upper and lower screens are swapped when using touchpad mouse. - Keyboard layout shows upper case characters when in Shift mode. - Some missing opcodes have been added, based on the log files I have received. - Screen refresh rate can be changed between 15, 30 and 60fps. - Lower screen refresh should be more robust than in 0.01 version. - Lots of protected mode work for DOS4GW, but this work is not yet finished so games using DOS4GW will not work in this version yet. DS2x86 v0.01 Alpha Release Notes ================================ Well, here it finally is, the first alpha version of DS2x86! Please note that this is a very early alpha, and it has a lot of bugs and missing features. You should consider this just a test bench for my DSx86 port to the built-in 360MHz MIPS processor of the SuperCard DSTwo flash cart. But, since a few games seem to be somewhat playable already, and as I sort of promised an alpha version by the end of the year, here it is! Installation ------------ If you already have a working DSx86 installation on your flash cart, all you need to do is to copy the "DS2x86.plg", "DS2x86.bmp" and "DS2x86.ini" files into the "_dstwoplug" directory of your SD card. DS2x86 can use the same DSx86.ini file that you have used in the original DSx86. You can also use a separate DS2x86.ini if you wish to have different settings for DS2x86 and DSx86. NOTE! Do not confuse the two DS2x86.ini files! The one included in the zip file is the one required by the DSTwo plugin system, the one in the /data/dsx86 directory (and created by you) is the one used by the DS2x86 itself for game-specific configuration. If you do not yet have the original DSx86 on your SD card, follow the instructions on my download page (or at http://dsx86compatibility.pbworks.com/w/page/26739629/Instructions-For-Use). It is recommended you familiarize yourself with the original DSx86 first, before testing DS2x86. Or, you might want to wait for a more stable version of DS2x86 before installing it. Limitations compared to DSx86 ----------------------------- - Obviously, DS2x86 only runs on the SuperCard DSTwo flash cart, as it uses the MIPS processor of that cart, not the ARM processor of the Nintendo DS/DSL/DSi itself. - Not all 80186 opcodes have been ported over yet, so some games that do run in the original DSx86 will not run in this alpha version yet. - Audio support is very poor, only SoundBlaster 8-bit DMA audio is supported, all other audio output is still missing. - ScreenMode "Jitter" was removed. If the configuration ini file uses Jitter, it will be replaced by Scale. - ScreenMode "Scale" only works in MCGA and EGA modes, not in Text, CGA or Mode-X graphics modes. - Screen refresh rate is locked to 15fps. I just recently noticed that there are various problems with both keyboard reading and screen refreshing when attempting to use higher refresh rates. I hope to fix these issues and allow faster screen refresh rates in the future. - All high-resolution EGA, VGA and Mode-X graphics mode support is still missing. You will either get a black screen or the previous mode graphics sticking on the screen when going to high-resolution graphics mode. - Mouse support is mostly missing, and what little support there is, is still completely untested. - No blinking cursor on the DOS prompt. Enhancements compared to DSx86 ------------------------------ - Some 386-specific opcodes are supported. The support is blotchy at best, so it is more than likely you will run into an unsupported opcode when testing a 386-specific game. - The x86 Parity and Auxiliary Carry flags are properly supported (it was architecturally impossible to support these properly in the original DSx86). - The screen scaling uses proper linear interpolation, which produces better image quality than the hardware scaling used in the original DSx86. - Speed! You can select the CPU speed between 60MHz and 396MHz, with the emulation speed ranging from 10MHz 80286 machine to 40MHz 80386 machine. Note that speeds lower than 240MHz might have stability issues, as the DSTwo interface can not keep up with the amount of data needing transfer. Issues you might run into ------------------------- - The keyboard reading has some synchronization issues when using non-default CPU speeds. If you notice key presses/releases to not get recognized, try changing the CPU speed (by clicking on the touchpad MHz indicator). - If DS2x86 drops into the debugger, it has written a debug crash log into the dsx86dbg.log file. Please send this file to me at patrick@patrickaalto.com, so that I can add support to this opcode in future versions! - You might also get a "Blue Screen Of Death" on the lower screen, stating that a certain exception has occurred. This does not get written to the log file (as the system status is unstable at that point), so if you can write the numbers down and email them to me, together with information about what you were doing, that would help me in improving DS2x86. Thanks for your interest in DS2x86! Have fun testing it, and again, please remember this is a very early alpha version! Be surprised if something actually works, not if it fails! :-) Patrick "Pate" Aalto