Skip to content

DOSBox-X 0.82.20 2019-07-31 23:17

Compare
Choose a tag to compare
@joncampbell123 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.

Many thanks to @Allofich for additional bug fixes and backported patches from DOSBox SVN!