PDA

View Full Version : DS2x86 version 0.34 released!



wraggster
February 27th, 2012, 01:28
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 (http://en.wikipedia.org/wiki/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!