September 1st, 2013, 23:14 Posted By: wraggster
This version has the following fixes and improvements:
Added SoundBlaster ADPCM support (Duke Nukem 2).
Fixed SB IRQ handling for very short buffers (Alone in the Dark).
Fixed reading data directly from disk to EGA VRAM (Heimdall).
Implemented EGA 640x400 special graphics mode (Mahjong Fantasia).
Fixed EGA Register Interface Library handling (A-Train).
Fixed various bugs in FPU emulation (Alien Legacy).
Added support for launching games given on the zerox86 command line.
Implemented mouse support using the analog control.
Many of those fixes I described in my previous blog post, so here are some info about the additional fixes I managed to implement during the last week.
Alone in the Dark
Alone in the Dark crashed at start if Sound Blaster audio was enabled. This was again a situation I thought I had encountered before, and sure enough, in my rpix86 blog Apr 28th, 2013 entry I had written about the exact same kind of crash in rpix86. Since the cause was the same (short SB IRQ buffer with no playing speed given), the same fix also helped in zerox86. After that fix the game seemed to run properly.
Command line parameter
In this version I also added the option to give the DOS program to run on the command line. That is, you can start zerox86 with a command line like "./zerox86 /boot/local/home/DOS/LW2/LW2.COM" and have it immediately launch LineWars II instead of the 4DOS prompt. In fact, when launching games this way you don't even need to have 4DOS.COM at all! I think this should make it possible to launch DOS executables directly using the gmenu2x file browser, but I think this will still need some MIME type changes or something, so it might not work properly in this version yet. Also note that launching .BAT files this way is not possible, as those would need 4DOS to process them.
You should use a full (not relative) path when launching executables this way. That is because of the way the C:\ root directory emulation is handled in this situation. Launching the executable in this way is a three-step process:
The path except the last two parts is considered the C:\ root directory. If the parameter was "/boot/local/home/DOS/LW2/LW2.COM", this would make the emulated C:\ root be located at "/boot/local/home/DOS".
Next zerox86 performs a CD to the second last part of the full path, in the example case this will be "cd LW2".
Last, the executable is loaded without path from the current directory, in the example case the executable is "LW2.EXE".
This is important to keep in mind if you install the program in DOSBox on your PC and then copy it to zerox86 for running. Some games need to be run from the exact same DOS directory they were installed in.
Finally I quickly hacked together some preliminary mouse support. You can now move the mouse using the analog controller (there is no setting for the mouse sensitivity yet, so the movement may be either too slow or too fast depending on the game). For mouse clicks, you need to map a GCW0 button to emulate either the left or right mouse button using special scan codes LMB and RMB in the zerox86.ini file.
It looks like my time to work on zerox86 in the near future will be quite limited. I got a new project that I need to spend my free time on, so I will not be able to implement any major changes to zerox86 for a while. I will get back to working on it after the other project is finished.
Thanks again for your interest in my emulation projects!
For more information and downloads, click here!
There are 0 comments - Join In and Discuss Here