DOSBox-X 2023.03.31 2023-03-31 23:59
joncampbell123
released this
01 Apr 08:05
·
1452 commits
to master
since this release
2023.03.31
- "mount -t overlay" will now print a message on the console to
let you know if the act of mounting the overlay replaced a
previous overlay mount. Overlay mounts cannot be stacked in
DOSBox-X (and probably most DOSBox forks that support overlays)
and the user should understand that. (joncampbell123). - Remove kludges from DOS path resolution to handle drive paths
that refer to drive @ (at sign). Note that in ASCII the at sign
is one code below capital "A". Windows 95 FORMAT.COM due to
another issue was asking for "@:\WINBOOT.SYS" and sometimes
causing a segfault in DOS path resolution due to an uninitialized
drive index. The fix for the other issue removes the need for this
kludge. In it's place a message will be logged to your log file if
anything attempts to access files on drive "@:" because it likely
means a failure to determine the drive index properly. (joncampbell123). - In addition to reporting the "boot drive" via INT 21h AX=3305h, also
write boot drive in the "List of Lists" structure. Windows 95
FORMAT.COM reads the boot drive from the LoL and does not do any
error checking if that value is out of range (such as if it was
never set and the byte value is zero). Failure to set this field
will result in FORMAT.COM attempting to access "@:\WINBOOT.SYS"
and "@:\IO.SYS" and failing. (joncampbell123). - Add dosbox.conf option to set a fixed RTDSC tick rate to use at
all times during emulation instead of the CPU cycle count
(joncampbell123). - Fix RDTSC to maintain a monotonic increasing count even if the
CPU cycles count changes, and better handle timestamp writes
through WRMSR (joncampbell123). - FAT filesystem driver: Instead of searching from cluster 0 every
time a new cluster is to be allocated, keep track of the search
to help reduce slowdowns on fairly large filesystems when many
files are copied onto it (joncampbell123) - Page Up/Down vs Roll Down/Up was in the wrong order, switch order
to correct it. (joncampbell123) - Fix 'pc98 force ibm keyboard layout' was always forced to be 'true'
for left & right bracket keys on US keyboards. (maron2000) - Fix dynamic_nodhfpu FPU stack bugs, the same bugs that once plagued
dynrec. dynamic_x86 never seemed to have the same problem because
in reality the DH FPU case was normally used, to hit this bug you
had to use core=dynamic_nodhfpu. Also fix dynamic x86 DH FPU code
never to restore from DH case if the DH FPU code was never enabled,
which periodically caused FPU state to dissapear. (joncampbell123). - Add dosbox.conf option to control the MSCDEX.EXE device name when
emulating a CD-ROM drive (joncampbell123). - Wengier coded this nice text-only DOSBox-X logo for the TTF output.
Fix border alignment issues and make the text logo the default and
only option for MDA and Hercules machine types at boot.
(joncampbell123). - Add -print-ticks command line option, which enables code to print
both SDL_GetTicks() and emulator time once a second to the console
and the log file. This may help in tracking down bugs related to
long term laptop suspend or suspension of the process in general.
(joncampbell123). - PC-98: Ignore INT 18h AH=0Ch (enable text layer) in 256-color mode.
Real hardware doesn't seem to let you turn on the text layer in
256-color mode, though I am not certain if this is a restriction
imposed by the BIOS or by the hardware. This fixes possible cases
where Sim City 2000 in 256-color mode reveals garbage text data at
the bottom of the screen if it is there when it starts. This doesn't
fix the issue where Sim City 2000 cannot set 640x480 256-color mode
properly unless your display is already set to 31Khz hsync because that
is evidently a bug in the game, not DOSBox-X. (joncampbell123). - PC-98 256-color mode: Fix "Active Display Words" value set by INT 18h
to 40, not 80, for graphics layer. This has no apparent effect on
games but it does fix the sometimes erroneous graphics layer width
in the video debug display. Neko Project II source code seems to
indicate the 31KHz hsync mode is programmed that way even if 256-color
mode. This should not break anything since the GDC doesn't let you
read back the "SYNC" reset parameters anyway--this isn't VGA hardware,
after all. (joncampbell123). - IPX emulation was broken because it set up the virtual file, IRQ
and interrupt handler way too early, which the BIOS startup would
then overwrite with the default BIOS IRQ handler. IPX emulation
should work now, at least multiplayer DOOM. (joncampbell123) - Added debug menu and dosbox.conf option to show debug information
at the bottom of the screen when enabled. This debug information
reflects the video state at the start of active display. It can be
used to see in real time the state of the palette, display offset,
display stride, and other useful information. It is rendered into
the frame on purpose so that it appears as part of the picture
when you take a screenshot or record a video to AVI or MTS for
later review. (joncampbell123) - Dynamic core: Fix serious bug in dynrec dynamic core where calls
to handle x86 FPU instructions erronously passed the entire
FPU status word instead of passing only the FPU stack pointer.
The result of this error was that floating point was erratic,
buggy, and often caused memory corruption in DOSBox-X eventually
leading to a crash. It should now be possible to properly run
DOS games on dynrec based systems, including ARM-based M1 Macbooks,
that use the FPU. (joncampbell123) - Debugger: When entering debugger interface, force dynamic core
to flush it's state so that the debugger can show the correct
state to the user when they use the "FPU" command to see it.
(joncampbell123). - VGA emulation: Automatically ignore odd/even mode if "Chain 4"
mode is enabled in the sequencer (normally enabled only for
256-color mode). Some games accidentally set odd/even mode
in 256-color mode and yet apparently worked just fine on real
hardware. Without this change, such games will display distorted
graphics. It makes logical sense "Chain 4" would take priority
over odd/even mode. Note: If a game uses 256-color unchained mode
AND foolishly enables odd/even mode, then the resulting distorted
graphics are probably accurate to what would happen on real
hardware, but then programmers would have caught their mistake
and fixed it so that is very unlikely to occur. This helps to fix
"Seal: Magic Eye" although some remaining visual artifacts in the
game can only be resolved by setting machine=svga_et4000
(joncampbell123). - Set usescancodes=true when non-US keyboards are detected
(Windows builds) (maron2000) - For long double without using x86 FPU, the code still calls the
fstcw instruction and can enable FPU exceptions that crash the
emulator, therefore mask off all exception bits to stop that.
(joncampbell123) - Added code to mouse emulation to control how often the mouse
reports events through the interrupt. Added dosbox.conf option
to allow the user to force a report rate, which can be used to
force a lower than normal report rate for games that cannot
proprly handle higher ones. Allow PS/2 mouse emulation, if
rate not set by user, to control report rate. (joncampbell123). - Add code to COMMAND.COM to flush keyboard input before running
the command given by the user, and flush again when the command
returns. Added option to dosbox.conf to enable/disable this
function (joncampbell123) - Fix bug where Tandy mode ignored the "allow more than 640kb"
setting. - Fix INT13h AH=02 broken conditional branch which prevents
installer of game "Inherit the Earth: Quest for the Orb"
to obtain free space of hard drive (maron2000) - qcow2 image support: Make image able to be mounted by
drive letters (experimental) (maron2000) - VHD image support: Make file name check for .vhd extension
to be case insensitive (maron2000) - VHD image support: Fix auto-detection of geometry (maron2000)
- Sound Blaster: Added code to periodically check the user's
settings regarding recording source selection and listening.
This should allow the user to change those settings on the
fly. (joncampbell123). - Sound Blaster: Added options to control whether the generated
recording source is audible through the speakers, and what
generated audio to send to the client. Options are: silence,
hiss, and a 1KHz test tone. (joncampbell123). - Sound Blaster: If the DSP is recording rather than playing,
then send audio to the guest at the recording sample rate
containing some form of generated audio. Default is silence.
This ALSO satisfies the Creative driver CTSB16.SYS when it
does the DMA test at startup. (joncampbell123). - Sound Blaster: Fixed code to properly recognize when the
guest wants to record audio, including through SB16
commands. Prior to this fix, all SB16 Bxh-Cxh commands
were handled as if playback even if the command would
instead trigger recording. (joncampbell123). - Sound Blaster: Add missing update of "last DMA callback"
timestamp that is needed for when the guest pauses DMA
during playback or recording. (joncampbell123). - VHD image support: If the VHD image is not a fixed type,
say so in the log (previously it said nothing) and say
what kind of image was mounted (joncampbell123). - Added INT 13h AH=44h Extended Verify to satisfy any disk
utilities that might use it. The function doesn't really
do anything except return success (joncampbell123). - Fix CPU stack management to use CPU mode agnostic method
using mem_readw instead of real_readw. However the real
mode version is used if real or virtual 8086 mode because
of comments in an older commit that mention UNLZEXE that
depends on real mode stack pointer rollover. This fixes
a bug related to protected mode APM (Advanced Power
Management) emulation that prevented the Linux kernel
from booting (joncampbell123). - Add support for INT 2F function 1680h "Idle" and DOS
idle (INT 28h), add code to reduce DOSBox-X CPU load
during emulation when the idle function is called,
add dosbox.conf enable/disable (default enable) to
control this behavior (Github user "finalpatch") - Graphical fixes and dialog support for Haiku OS (amol-)
- Allow jp106 keyboard layout in DOS/V mode, automatically
choose when keyboard layout is auto on Windows with
Japanese keyboard, fix jp106 input in SDL1 builds running
on Japanese Windows with English keyboard (nanshiki) - Sync dh fpu state with normal fpu when dynamic core
calls normal core to handle self modifying code. Add
additional code to other cases. (Github user "finalpatch") - Fix incorrect handling of upper 4 bits of character attributes
in video mode 72h in DOS/V mode (nanshiki) - Fix BIOS signature at 0xFFFFF to reflect actual value
of Tandy machines so "Ninja" works correctly in
Tandy mode (rderooy)
See also: [https://www.vogons.org/viewtopic.php?f=32&t=92129] - Change default mixer rate to 48KHz instead of the
long standard 44.1KHz. Most modern sound cards on
modern OSes render at 48KHz anyway and resample
either in hardware or software and most configurations
render at 48KHz. Perhaps somewhat improved audio quality
could be had by rendering at what most sound cards are
doing these days anyway. As usual, audiophiles are free
to set the mixer rate to 96KHz if supported by their
sound card. (joncampbell123) - Fix PIT 0 timer interrupt handling not to attempt
periodic event and error adjustment unless the game
is using periodic modes 2 or 3. This fixes PIT timing
bug and possible emulator hang when exiting games
like "Days of Thunder" that leave PIT 0 in mode 0 or
1 on exit for some reason. (joncampbell123) - Fix Sound Blaster DMA rate limits to better reflect
actual hardware. SB16 limits to 45454Hz just as
Pro and earlier do. These limits were added before
the proper measurements were coded and tested on
real hardware. (joncampbell123) - Fix S3 cursor emulation to support both X11 and
Windows hardware mouse cursor modes available
on S3 Virge, Trio, and possibly other cards
(John Tsiombikas) - Add EGA/VGA emulation code to keep track at runtime
whether planar features are in use. If they are not,
then handle EGA/VGA video memory access using a
simplified version for a bit of a performance boost
in response to complaints about poor VGA emulation
performance. (joncampbell123) - VGA palette DAC update: Instead of recalculating
the palette map every time a color is written through
port 3C9h, set a flag. Defer palette map update to
when the next scan line is rendered, in order to
improve performance. (joncampbell123) - Add option to enable or disable the "memory I/O
optimization" option, meaning the code that was
added to assign simplified VGA memory I/O handling
when the DOS game is not using any bit planar raster
op and more complicated features of the EGA/VGA
hardware. (joncampbell123) - Added VGA render on demand mode to VGA emulation.
When enabled, VGA emulation does not render scanlines
until vertical retrace or when certain registers are
written that change the display (attribute controller,
VGA palette, etc.). It is added to dosbox.conf as
"scanline render on demand" and is false by default
because it can provide a performance boost for DOS games
but it also tends to break timing-dependent Demoscene
effects. The idea is that some emulator performance
improvement may be possible by not interrupting the
CPU loop per scanline for the same reason that DOSBox
SVN has traditionally only rendered the VGA display
in quarters instead of per scanline. (joncampbell123). - Remove experimental "alt VGA" rendering code. It was
never completed and it is probably starting to
bitrot (joncampbell123). - Fix EGA/VGA version of CGA 4-color graphics renderer
code to consider all four bitplanes when combining
each pair into a 2-bit value. When bitplanes 2+3 are
enabled and writeable, the 4-color mode becomes a
sort of 2-plane 2 bits per pixel 16-color mode. Fix
for machine=ega and "Leather Goddess of Phobos 2",
a game that sets up EGA 640x200 16-color mode then
suddenly switches on the 2bpp CGA mode as a way to
do 16-color dithered graphics. (joncampbell123). - Fix installers for Dynamix games not working.
(Allofich & halcyon00) - Fix crash related to swapping between disk
images. (Allofich) - SVN r4482: Correct CMS sound pitch. (Allofich)