October 9th, 2011, 23:11 Posted By: wraggster
Okay, finally by the end of last week I had managed to fix the most frequent bugs in my preliminary paging support, so that Descent 2 Demo ran the intro demo and also allowed me to start a new game fine (most of the time). It still occasionally crashes, but this happens very rarely. I even added some additional logging to try and figure out the reason for the occasional crash, but when I then tried again and again to make this happen, it ran fine for the whole two hours I spent with this. Quite annoying.
Anyways, this version now has the basic paging (virtual memory) framework in place, but there is a large number of opcodes that do not support paging properly yet. Also, only the MCGA graphics mode is supported while paging is on, using 16-color modes or Mode-X modes will display corrupt graphics (if anything). It is quite likely that any software using paging will crash at some point. If you can send me the debug logs from these situations, and let me know what software it was that crashed, it might help me focus on the correct opcodes to enhance for paging support in upcoming versions.
I also fixed a couple of bugs that had been in all prior versions, the most serious of these was a bug in the REPNE (repeat while not equal) string opcodes, which would occasionally run the REPE (repeat while equal) version instead. This obviously caused the exact opposite effect to what was supposed to happen, so this may have caused a variety of problems in various games.
Next I would like to work on adding JEMM support, so that I could perhaps eventually get Wing Commander Armada running. JEMM is a version of Expanded Memory Manager, and it looks like DOSBox has that built in, so I think DS2x86 could also include that. There is a small compatibility problem in that JEMM (like any other expanded memory manager) assumes that expanded memory and extended memory share the same memory space. In DS2x86 I have completely separate memory areas for expanded and extended memory, just to keep things simpler. I need to look into either switching to the same memory area and letting the JEMM emulation handle the EMS, or still keeping the areas separate and only implementing the JEMM features that are needed to make Wing Commander Armada (and perhaps other games that use an expanded memory manager for their protected mode needs) running.
Also, adding paging support has slowed down some parts of the code more than I would have liked, so I also plan to profile the performance of my emulation and attempt to figure out ways to again speed it up somewhat. These things will surely keep me busy for the coming weeks.
Download via comments
For more information and downloads, click here!
There are 0 comments - Join In and Discuss Here