DOSBox-X 0.82.20 2019-07-31 23:17
joncampbell123
released this
01 Aug 06:42
·
10472 commits
to master
since this release
0.82.20
- Dynamic core IMUL instruction mistake fixed,
signed multiply works properly again. - PC-98 graphics emulation fixed to render only the
number of active display lines programmed into
the GDC instead of matching the text layer. This
fixes the status bar at the bottom of the screen
in "First Queen" and "First Queen II". - Normal CPU core fixed not to immediately process
interrupts on STI but to wait a little bit so that
a STI + CLI sequence does not cause interrupt
processing, according to real Intel 486 behavior. - Unknown interrupts in PC-98 mode are now routed by
the DOS kernel through it's segment (60h) and back
to the BIOS through a JMP instruction. It appears
some TSRs for PC-98 determine whether or not
interrupts are in use by whether or not the segment
value is pointing at the DOS kernel (segment 60h). - Re-added a20=fast by popular demand, though a20=mask
is still the default. a20=fast emulates the A20 gate
the way a virtual 8086 mode monitor does where only
the first 64KB past 1MB is remapped rather than
gating bit 20 of all addresses. Note that a20=fast
also matches the A20 gate behavior in DOSBox SVN. - Bringing up the SDL drawn menus and then resizing the
window no longer "freezes" the display in SDL2 builds. - IDE emulation now minimally emulates PC-98 I/O port
arrangement in PC-98 mode. - Running a build that draws it's own menus, setting
output=opengl, and hiding the menus no longer causes
lag redrawing the screen every time the mouse cursor
moves. - Memory limit is now 3.5GB for 64-bit builds and 1GB for
32-bit builds. - Maximum memory limit is now 3.5GB, code fixed to better
enforce the limit. - Mixer and VGA capture code fixed to signal error if the
memory address exceeds the amount of system memory.
The general design of DOSBox-X memory I/O means that if
physical memory writes are made beyond system memory,
DOSBox-X will write out of bounds and segfault. - DOSBox Integration device now offers the program inside
to capture the VGA output, for automated testing. - DOSBox Integration device now offers reading emulator
time (PIC_FullIndex()) and setting a watchdog timer
that triggers an NMI unless reset. Intended for use
with automated testing. - Debugger INTHAND command now works properly in protected
mode. - DOSBox Integration Device now provides an interface for
code within to listen to the mixer output (to hear
itself) for automated testing purposes. - Gravis Ultrasound emulation fixed not to run or compute
voices and ramps if the DAC enable bit is not set. - Gravis Ultrasound emulation now offers a hack to ignore
writes to the Active Channel register if the DAC is active
and rendering audio (Ice Fever demoscene hack). - SDL drawn menus fixed not to interact or draw while 3Dfx
emulation is using OpenGL, to prevent it from disturbing
the OpenGL context for 3Dfx emulation. - NMI interrupt handling fixes to resolve instruction pointer
corruption if NMI interrupt triggered while a CPU core is
executing instructions (i.e. triggered by I/O handler). - DOSBox-X integration device now provides an interface to
trigger IRQ and NMI signals. - Integrated commits from mainline (Allofich)
- Improve disk image mounting: cycle disks only for the
drive being mounted. - FAT drive fixes and improvements. Identify floppy format,
and support filesystems that use only part of the disk.
Fixes Make Your Own Murder Party and Music/Pinball
Construction Set. - Return correct error code for verify sectors function
when an invalid drive is specified. Fixes Hugo Troll game
installers. - Prefer ncurses above curses (on some systems, these are
still different packages) - Give a warning at startup if dpi scaling is detected.
- Show segment override on XLAT instruction.
- Change scan3x to be LINE LINE DARK instead of LINE DARK
DARK. This matches pictures of scanlines better and doubles
the brightness as the old implementation was rather dark. - Make it possible to compile without PNG support.
- Report when a -conf file can not be loaded.
- When searching CD-ROM directory entries, strip trailing
period of extension-less filenames after stripping file
version number and separator. Fixes disc check in Air Power. - Add Unit Number and Bytes Per Sector fields for DPB
entries. Fixes Air Power installer and Windows 3 Virtual
Memory dialog. - Reset write ops after drawing text in EGA graphics modes,
consistent with EGA/VGA BIOS. Fixes Fun School 3. - Make Allocation Info work for CD-ROM drives. Fixes Bureau
13 installer. - Prevent double-loading of CD-ROM images.
- Don't generate sound after DMA is masked at end of single
cycle transfer. Prevents issues with some games. - Use right field when dealing with joysticks.
- Check for both read-only modes when writing files to drive
- Correct one-off error in paging table size compare for
when not using USE_FULL_TLB - Make CMOS equipment list startup display mode bits differ
from BIOS on EGA/VGA. Fixes Sauro. - Implement port 62h with timer 2 output for CGA and
Hercules machine types; fixes Frank Bruno's Boxing and Math
Maze. - Acknowledge mouse interrupt before entering user routine;
fixes sound stutter during mouse movement in Eye of the
Beholder III and Casino Tournament of Champions. Clear
button counters in the mouse driver reset function;
prevents unintended skipping of intro in MechWarrior and
others. - Correct relative track length in subchannel data for
CD-ROM images; fixes speech audio cutting off too soon in
Casino Tournament of Champions. - Reset followed by switch to UART mode should take some
time; fixes MPU detection in F29 Retaliator and Hover Force. - Ignore unrequested data in intelligent mode; fixes Roland
sound in Krusty's Fun House. - Repair double slash in configfile location on Macs. Add
some protection against a NULL dirp. - Fix loading of configfiles specified with -conf but
present in the userdir with -userconf present. - Fix up DOS_Drive_Cache::GetShortName.
- Change multi-remain to repeat last parsed value for
non-string types if the next value is empty and of the same
type as the last. Use this to add an optional parameter to
sensitivity which controls the y axis. When optional
parameter is missing, x and y axis have the same value.
Change limits on sensitivity to allow for negative values
so the Mouse Y-axis can be inversed. - Correct bug related to signedness.
- Improve prefetch and simple cores to not switch to normal
core on trap execution. Fixes the demo version of
Prehistorik 2 and similar cases that use the trap flag and
prefetch tricks. - Check lengths before adding C-style strings together.
- Fix unmounting of complex drives where parts were left and
file pointers were kept open. - Stop storing raw modrm value. Should save an instruction
on each get_modrm call. - Strip leading = from value. Can happen if you execute
"irq =5". - Don't remove bytes from autoexec.bat when changing
settings from autoexec.bat, but replace them instead. This
way the location stays valid. - Let dynamic core recompile interrupt instructions in
non-debug builds. Can help software with many INTs, such as
compiled BASIC, run faster. - Add logic in mouse driver to ignore button events that
are out of sequence. Fixes International Rugby Challenge
when clicking to lock the mouse. - Use a more compatible offset for DOS redirected interrupt
vector. Works around a null pointer bug in the notes dropdown
list of Jack the Ripper. - Reqrite pop_ev so it can trigger pagefaults again. Fixes
Win 3.11. - Fix uninitialized access to some isoDrive fields. Pause audio
before switching. Use right subunit with multiple CDs on one
drive letter. - Move all stack alignment operations into one place and
some optimalisations to RISC x64 dynamic core. - Merged in MAME sound from mainline, except for Tandy sound.
- Improve disk image mounting: cycle disks only for the
Many thanks to @Allofich for additional bug fixes and backported patches from DOSBox SVN!