DOSBox-X Changelog

What's new in DOSBox-X 2024.03.01

Mar 2, 2024
  • If an empty CD-ROM drive is attached to IDE emulation, return "Medium Not Present" instead of a read error, when asked to read. (joncampbell123).
  • Add "empty drive" CD-ROM image type "IMGMOUNT e: empty -t iso" as a way to emulate an empty CD-ROM drive with no disc in the drive. (joncampbell123).
  • Add "empty drive" floppy image type "IMGMOUNT 0 empty -t floppy -fs none" as a way to emulate a floppy drive with no disk in the drive. (joncampbell123).
  • Video debug overlay: Fix mouse integration misalignment when the video debug overlay is enabled while Windows is running (joncampbell123).
  • Video debug overlay: Fix segfault when enabled with 15/16bpp SVGA modes. (joncampbell123).
  • Video debug overlay: Fix bug where video debug failed to appear in SVGA 15/16/24/32bpp display modes because of a design where the VGA drawing code points directly at video RAM except when drawing the hardware cursor.
  • One symptom was that the video debug info on the side failed to appear at all, unless running in Windows and only within the vertical range of the mouse cursor. (joncampbell123).
  • Video debug overlay: Do not bother showing the Attribute Controller palette in 15/16/24/32bpp SVGA modes because it doesn't matter there and is not involved with how anything is displayed. (joncampbell123).
  • Video debug overlay: Fix debug info text to appear for 15/16/24/32bpp SVGA modes. (joncampbell123).
  • BOOT --bios no longer triggers a system reset VM event, but instead just jumps to the new BIOS image after DOS kernel shutdown. This is needed for hardware and resources to stay as they were when running the BIOS i.e. keeping any IDE devices configured within the DOS kernel intact so that the
  • BIOS can find and use them. Prior to this change, all hardware was fully reset and unmapped prior to running the BIOS which made IDE emulation unusable with BIOS images. (joncampbell123).
  • BOOT --bios no longer immediately loads the new BIOS into memory, but instead loads and stores the image to a temporary buffer. The ROM image does not actually get mapped in until the DOS kernel and everything else has had a chance to shut down fully. (joncampbell123).
  • Fix BOOT --bios not to try to load PC-98 ITF firmware unless actually running in PC-98 mode (joncampbell123).
  • Write PC-98 keyboard translation table (non-shifted) in ROM BIOS and set the keyboard translation table pointer in the BIOS data area for "Nut Berry".
  • This Nut Berry game also assumes lookup and translation tables exist at specific locations in the ROM BIOS, so put those tables there. The shift state table in BIOS has also been added, though at the moment, the tables are incomplete. (joncampbell123).
  • MegaZeux from the MS-DOS days had a 256-color tweakmode that worked on some popular SVGA chipsets of it's time though on others it does nothing but halve the display resolution of text mode. The basic idea is that it makes the VGA card latch two 4-bit outputs of the VGA text mode into one 8-bit value, thus, 256 colors possible. Add support for this. However I am not sure whether thismtweakmode is supported by S3 chipsets, so it is OFF by default and you will need to add "enable supermegazeux tweakmode=true" to the [video] section of your dosbox.conf to enable it. (joncampbell123).
  • Undo the "no partition offset" change. DOOM II for PC-9821 requires it to work else the page flipping fails and sprites and rendering flickers as you play. (joncampbell123).
  • Allow text layer to appear in PC-98 256-color mode. Even though I was unable to enable it on real hardware, "Shamat, The Holy Circlet" requires having the text layer visible on top of 640x400 256-color mode for the introductory scrolling text to appear on screen. So for now, just allow it. (joncampbell123).
  • The reason some PC-9821 games have been giving bad PITCH values (double the correct value) to the GDC in 256-color mode has been determined. They read port 9A0h to determine if the GDC is running at 5MHz or not. That port 9A0h index was not implemented and therefore gave the game the impression it was running at 5MHz when it was not, therefore the doubled PITCH value. This fix corrects the squeezed 256-color mode and allows it to appear properly. (joncampbell123).
  • IMGMOUNT: If the file extension is HDI, assume a hard disk image even if the image file is small enough to qualify as a floppy disk image. There is an HDI image of PC-98 game "D.O. Doki Doki Disk 8" that is 2.2MB, small enough to be mistaken as a 2.88MB IBM PC floppy disk and therefore fail to mount as an HDI image, this change fixes it. (joncampbell123, maron2000).
  • Emulate PEGC PC-98 linear framebuffer at both 0xF00000-0xF7FFFF (at 15MB memory mark) but also make it appear at top of memory below BIOS (normally at 0xFFF00000-0xFFF7FFFF). Some 32-bit PC-9821 CD-ROM MS-DOS games assume the top of memory alias and will fail to show anything on screen without it (unless, alternatively, the memalias setting is set to emulate 24 address lines like a 386SX). Now to figure out why these same games are programming a GDC PITCH value that's double what it should be... (joncampbell123).
  • PC-98 GDC scan offset no longer pays attention to scan offset of data partition in 256-color mode. Required to help fix broken 256-color graphics for some PC-98 CD-ROM games. (joncampbell123).
  • Refuse to enable ISA 15MB-16MB memory hole if memalias is set to 24 bits or less. Not only is it redundant to do that but it also causes the BIOS to immediately crash on startup. (joncampbell123).
  • IDE ATAPI CD-ROM emulation: In PC-98 mode when emulating a NEC CD-ROM drive, also limit sector reads to one CD-ROM sector per DRQ because the MS-DOS driver assumes that behavior. The driver will stall and error out if it requests a multi-sector read and the drive does NOT limit transfers to one sector at a time per IDE data transfer. This is in line with my experience writing the
  • DOSLIB IDE testing program and laptops from the 1990s with IDE ATAPI CD-ROM drives, so it's understandable. (joncampbell123).
  • The reason the CD-ROM driver in PC-98 game HDI images refused to talk to our IDE CD-ROM emulation is... (drumroll) we didn't report ourself as an NEC CD-ROM drive when given the MMC INQUIRY command. Yes, really. The OAK CD-ROM driver in these HDI images really does care whether or the drive is an NEC brand drive. What a stupid reason not to talk to a CD-ROM drive. Add code to default to "NEC" "CD-ROM DRIVE" as the INQUIRY result if running in PC-98 mode. (joncampbell123).
  • Add basic rudimentary support for CloneCD (*.ccd *.img) images. It might not work with more complex arrangements but it is enough for most CD-ROM PC-98 games so far. (joncampbell123).
  • libpng supports the pHYs PNG chunk which describes the pixel aspect ratio of the PNG image. libpng 1.6 has it, use it. Programs that support the information like FFMPEG will then display the PNG image with the correct aspect ratio. (joncampbell123). [https://github.com//issues/4754]
  • PC-98 mode: There is a 302KHz timer behind I/O ports 5Ch/5Eh that some MS-DOS drivers depend on for timing, particularly a popular IDE CD-ROM device driver in many PC-98 game HDI images. This change allows the driver to time out after about 5-10 seconds instead of an infinite hang. (joncampbell123)
  • Fix INT 10h to keep hardware CRTC I/O port synchronized with BIOS DATA area copy so that other parts of INT 10h called by SetVideoMode do not accidentally talk to the wrong I/O ports. This fixes corrupted INT 10 Mode F display (640x350 monochrome graphics mode). (joncampbell123).
  • Add DOS Int21 0x5D 0x00 - remote server call Inspired by FeeDOS inthndlr.c
  • With this change it is possible use a plain dosbox-x to install and run Windows for Workgroups V3.11 as an IPX server on the pcap ne2000 interface offering a host directory for read and persistent write access to an MSDOS machine running a WfW 3.11 IPX network client. Please don't forget mounting with -nocachedir (Issue #4162)(Yogi-baer)
  • Fix missing keystroke SDLK_LESS on DE keyboard on Raspbian OS (Yogi-baer)
  • Fix crash when loading a language file without existing menu item "ttf_extcharset" (Yogi-baer)
  • Change ISA memory hole 512kb option from boolean to true/false/auto. (joncampbell123)
  • Add ISA memory hole 15mb option, make it true/false/auto. Auto means off for IBM compatible mode and on for PC-9821 compatible mode. This should allow some DOS games that depend on the linear framebuffer to work properly even if memsize=16 or higher. (joncampbell123)
  • MIDI: set minimum sysex delay when enabled (mistydemeo)
  • International support in LABEL, COPY, DEL builtin commands (maxpat)
  • Fix palette setting bugs due to SETCOLOR fix in 2023.10.06 release. (maron2000)
  • Graphical glitches in Ultima VI(#4507), Chessmaster 3000(#4510), Wizardry VII(#4534)
  • Crash Sid Meyer's Civilization I (#4511)
  • TTF color settings regarding 'colors' option (#4579, #3318) and some more
  • Fix crash when mounting floppy/ISO images with no extension (maron2000)
  • Fix Intel macOS CI builds crashed on startup due to missing dylibs (Issue #4438)(maron2000)
  • Fix TTF mode didn't switch to graphics mode on certain types of machines such as tandy/pcjr.(Issue #4559)(maron2000)
  • Fix crash on switching to fullscreen when output=opengl (Intel macOS) (maron2000)
  • Update DXCapture shell command to support /O for OPL capture (AranVin...

New in DOSBox-X 2023.10.06 (Oct 7, 2023)

  • Add "VRD" debugger command to force redraw of the VGA screen.
  • Add VGA debug set commands to force a video start address and another to clear all debug settings.
  • Add "PITSYNC" option to VFRCRATE command. "VFRCRATE PITSYNC ON" directs the system timer interrupt to synchronize tick rate with vertical refresh rate of VGA emulation if the game or demo set the timer tick rate to a value close enough to vertical refresh.
  • This is intended for games or demos that use the system timer for a vsync interrupt.
  • IMGMAKE: Fix bug where if -bat was specified, the generated .bat file would attempt to mount the .bat file, not the disk image.
  • IMGMAKE: If -nofs and -bat was specified, the generated .bat file will refer to "IMGMAKE 2" instead of "IMGMAKE C"
  • DOS FAT driver: When the guest sends in a new BIOS Parameter Block, recalculate the disk locations and FAT type properly instead of assuming that FORMAT.COM is using the same format already present.
  • DOS FAT driver: If the partition is unformatted and looks as if freshly written by FDISK, then instead of failing to mount, mount
  • the partition instead as an unformatted partition and fail file I/O until a BPB is set and the partition formatted by FORMAT.COM.
  • This matches MS-DOS behavior and it makes it possible to mount an image, FDISK it, restart, FORMAT.COM the unformatted partition, and end up with a working drive letter (just like MS-DOS). So far verified against MS-DOS 6.22 and Windows 98 versions of FDISK, FORMAT, SYS, and SCANDISK.
  • DOS FAT driver: Add options -o sectoff and -o sectlen to make it possible to manually specify the start and length of a partition. Future code will use this internally as well.
  • IMGMOUNT: Allow *: as a drive letter to mean automatically pick a drive letter.
  • Fix debugger to use toupper(), but only for ASCII range ncurses keycodes.
  • Timer PIT: If the guest writes the counter value while the counter gate is off, make sure the counter read back is the same value written regardless of gate status. Prior code returned the stale latched value of the counter as it was prior to shutting off the gate and writing the counter, causing timing issues.
  • Fix restoring minimized window on TTF output (Issue #4248) (maron2000)
  • Fix macos crash on launch when output=surface or auto (SDL2) (maron2000)
  • Update in-tree SDL2 library to ver 2.28.2 (maron2000)
  • Updated build tool for MinGW lowend builds required for the updated SDL2 library. As a result, MinGW lowend builds are now able to enable debugger features. (maron2000)
  • Debugger RUN and RUNWATCH commands were broken, fix. Make sure debugger shortcut triggers execution to stop whether in RUN or RUNWATCH mode.
  • Fix SETCOLORS command didn't change color when output=ttf.(Issue #4503) Also fixed the values reported were wrong. (maron2000)
  • BIOS CMOS date/time functions will now idle the CPU 4 times after reading or setting the clock to allow interrupts, CPU time, and RTC clock ticks to proceed normally. This fixes "Pizza Tycoon" and allows it to continue past the initial logo. (joncampbell123)
  • Fix segfault when mounting hard disk images with no file extension (joncampbell123).

New in DOSBox-X 2023.09.01 (Sep 8, 2023)

  • Disable by default message confirmation after snapshot and AVI video capture, but leave the option there for those who want to enable it (joncampbell123).
  • Remove "LOG: Logging output has been disabled." output when -nolog is specified on the command line (joncampbell123).
  • Fix stuck Ins key problems by fixing a typo in src/ints/bios_keyboard.cpp.
  • The code is supposed to clear the "Ins key down" flag, but instead cleared all bits EXCEPT "Ins key down" (joncampbell123).
  • NE2000 macaddr default is now "random", which instructs the NE2000 hardware at startup to pick a random MAC address. (joncampbell123).
  • IPX: If NE2000 and IPX are enabled, and an IPX tunneling connection is active, and the user boots a guest OS, switch on a mode where all IPX packets going to and coming from the guest are re-routed through the IPX tunnel instead of to the NE2000 ethernet backend. This feature makes it possible to play IPX-based games in a guest OS like MS-DOS and Windows 95. (joncampbell123).
  • IPX: Add extension to server to allow clients to register their own MAC address instead of using the default MAC address given by their IP address and port number. The extension is designed so that if DOSBox-X is a client to another DOSBox fork's IPX tunneling server, it will be ignored and DOSBox-X will get the usual MAC address instead. This extension is required for guest OSes to be able to use the IPX protocol through the NE2000 card given upcoming code changes as they normally use the network card MAC address when picking an IPX address because the IPX interface is not available once booted into a guest OS. (joncampbell123).
  • IPX client: If both IPX and NE2000 emulation are enabled, IPX emulation will use the NE2000 card's MAC address instead. It will use the IPX server DOSBox-X extension to try. If it doesn't work, then the normal MAC address assignment is accepted without complaint. (joncampbell123).
  • NE2000: Add "nothing" backend. It receives nothing and send packets go nowhere. If no other backend is available, this backend is a fallback so that at least the NE2000 emulation can work. The other purpose of a nothing callback is to give NE2000 something to talk to for those who wish to use the upcoming IPX packet redirection to link DOS and Windows games over the IPX client or server connection to other instances of DOSBox. (joncampbell123)
  • Added record function to capture NE2000 network traffic to a pcap/Wireshark file in the capture directory. (joncampbell123)
  • Fixed bug where guest VM reset causes the CMOS to stop ticking for exactly the amount of time it was running before reset. (joncampbell123)
  • Added alarm interrupt function to RTC CMOS emulation (joncampbell123)
  • Reverted DOS to using the BIOS_DATA tick count for time and the cached copy of date it keeps internally, rather than always calling INT 1Ah.
  • It turns out that is how DOS actually behaves, which is also why it is possible for the DOS and CMOS RTC to diverge. Fix CMOS emulation to allow get/set time and to run in emulation time, not real time, though the clock starts from the host time. (joncampbell123)
  • Fixed VHD disk image calculation of footer position and, thus, of newly allocated block position. (maxpat78)
  • Enhanced Dynamic and Differencing VHD support #4273 (maxpat78)
  • Imported IBM Music Feature Card support from DOSBox Staging. (Allofich)
  • Fix IMGMAKE large size image error on MinGW builds (maron2000)
  • Set usescancodes=true when non-US keyboards are detected. (Linux / MacOS builds) (maron2000)
  • Fix day of week detection (INT 21h function 0x2Ah). (maron2000)
  • Refine KEYB and CHCP command (maron2000)
  • Use segment descriptor's big flag (if present) when disassembling code in the debugger code view (cimarronm)
  • Add decoding of rdmsr/wrmsr instructions to disassembler (cimarronm)
  • Fix disassembly for far jmp/call decoding (cimarronm)
  • Fix memory limits on expand-down segment descriptors (cimarronm)
  • Bump tinyfiledialog to ver 3.13.3 (maron2000)
  • Fix mouse column limit on text mode (issue #4353) (maron2000)
  • Fix Blocek launching failure (issue #4385) (maron2000)
  • Bump in-tree FreeType library to ver 2.13.1 (maron2000)
  • Enable debugger function for MinGW builds (maron2000)