via http://dsx86.patrickaalto.com/DSblog.html


This version has the following changes and improvements:
  • Improved SoundBlaster emulation using the new transfer system. Now the transfer of the SoundBlaster digitized audio data from the MIPS side to the ARM side works properly, I believe. However, there are still problems and missing features in the actual SB emulation on the MIPS side, so not all games play SB audio correctly yet.
  • Improved high-resolution (>= 350 rows) graphics modes scaling quality. The graphics data is now interlaced when it is sent from the MIPS side to the ARM side. Interlacing video signals is the traditional method of reducing the required bandwidth by a factor of two while keeping the same line count and frame rate. Since the low bandwidth of the card interface is the main problem with the MIPS/ARM communications, interlacing the graphics will minimize the effect of this low bandwidth.
  • Implemented preliminary VESA SVGA support, for 640x400 and 640x480 256-color modes. The only games I have tested this with are LineWars II and Ascendancy. Other SVGA games might not work properly yet, but feel free to test them!
  • Implemented a "scasb" opcode version that accesses EGA VRAM. This opcode is used by the game Titus the Fox.
  • Fixed a bug in "shld r/m16,r16,imm8" and "shrd r/m16,r16,imm8" opcodes, when the shift count was larger than 16.
  • Fixed a bug in "idiv r/m16" opcode which could destroy the high 16 bits of EAX register.
  • Fixed the VideoParameterTable to have correct VGA Misc Register values in text modes. Before this fix the register reported that the attached monitor is a monochrome monitor. This might have caused some games to either show grayscale graphics, or hang in the vertical retrace detection (which uses a different register address in monochrome systems).
  • Minor changes to mouse emulation, for better support of SVGA graphics modes.
In addition to the above fixes, I also tried to enhance the speed of the graphics transfer algorithms. I managed to make some of the routines faster, so that the transfer can now achieve 60 fps in all but the new SVGA and the weird Mode-X modes. I hope to be able to improve the SVGA mode handling (both the transfer speed and the quality of the scaled modes) in future versions. Here below is the revised frame rate table for the various graphics modes.

Mode Zoom Scale Notes
80x25 Text >200 fps >200 fps (Varies by the number of changed characters)
320x200 CGA 229 fps 229 fps
640x200 CGA 222 fps 229 fps
320x200 EGA 128 fps 128 fps (When logical screen width = 320 pixels)
320x200 EGA 119 fps 119 fps (When logical screen width > 320 pixels)
640x200 EGA 178 fps 77 fps
640x350 EGA 178 fps 87 fps (In Scale mode 320x175 bytes per frame, interlaced)
640x480 VGA 178 fps 64 fps (In Scale mode 320x240 bytes per frame, interlaced)
320x200 MCGA 77 fps 77 fps
360x240 Mode-X 56 fps 56 fps (Used in "Settlers")
320x480 Mode-X 64 fps 64 fps (Used in "LineWars II", 320x240 bytes per frame, interlaced)
640x480 SVGA 100 fps 59 fps (In Scale mode 320x240 bytes per frame, interlaced)
I have now added various enhancements to DS2x86 which would be useful also in the original DSx86, and it has been several months since I released the most recent version of it. I think I will next spend a few weeks enhancing the original DSx86, to bring it up to the current level of DS2x86, regarding bug fixes and graphics quality improvements. After that, I think I will work on the SoundBlaster emulation and general game compatibility problems in DS2x86. I am finally happy with the new transfer system in DS2x86, so I can now move on to actually enhancing the programs with new features! Please send me again the debug logs and test reports about this new version!