摘要:DOSBox-X 是一款基于经典 DOSBox 项目的开源模拟器软件,旨在为用户提供一个增强型的环境来运行老式的 DOS 游戏和应用程序。 DOSBox-X 不仅仅是一个简单的继承者,它在原有 DOSBox 的基础上进行了大量扩展和改进,提供了更广泛的兼容性、更高的性能以及更多的配置选项,使之成为复古计算爱好者的优选工…
DOSBox-X 是一款基于经典 DOSBox 项目的开源模拟器软件,旨在为用户提供一个增强型的环境来运行老式的 DOS 游戏和应用程序。
DOSBox-X 不仅仅是一个简单的继承者,它在原有 DOSBox 的基础上进行了大量扩展和改进,提供了更广泛的兼容性、更高的性能以及更多的配置选项,使之成为复古计算爱好者的优选工具之一。下面是对 DOSBox-X 的详细介绍:
背景与目标
DOSBox 最初开发的目的是为了在现代操作系统上(如 Windows、macOS 和 Linux)模拟 MS-DOS 环境,以便于那些为旧 DOS 系统设计的游戏和软件能够在新硬件和系统上正常运行。然而,随着时间的推移,一些游戏和应用对模拟环境提出了更高要求,于是 DOSBox-X 应运而生,它在保持向后兼容的同时,针对现代用户的需求进行了诸多优化和功能扩展。
主要特性
增强兼容性:DOSBox-X 支持更多的硬件和软件,包括一些原本在 DOSBox 上难以运行或无法运行的游戏和应用程序。它还增加了对某些高级图形和声卡的支持,比如 Voodoo 系列显卡和 Roland MT-32 合成器。
改进的性能:通过代码优化和新增的硬件加速功能,DOSBox-X 能够提供比原版 DOSBox 更流畅的游戏体验,特别是在处理图形密集型游戏时。
高级配置选项:为高级用户提供了更多自定义设置,包括 CPU 仿真选项、内存管理、视频和音频设置等,使得用户能够根据硬件配置和具体需求进行微调。
跨平台支持:如同 DOSBox,DOSBox-X 也是跨平台的,支持 Windows、macOS、Linux 以及其他一些操作系统,确保广泛的用户基础都能享受到服务。
实时保存状态:用户可以随时保存当前的DOS环境状态,之后可以从同一位置继续运行,这对于长篇游戏或复杂应用特别有用。
扩展的命令行功能:提供了更多命令行参数和内部命令,方便用户通过脚本或直接输入命令来控制模拟环境。
社区支持与活跃开发:DOSBox-X 是一个活跃开发的项目,拥有一个热情的开发者和用户社区,不断推出新功能和修复问题,以适应不断变化的技术环境和用户需求。
总结
DOSBox-X 是一款功能强大、高度可配置的 DOS 模拟器,它不仅为复古游戏爱好者提供了重温经典游戏的机会,也为需要在现代系统上运行老式 DOS 应用的用户提供了便利。无论是出于怀旧还是专业需求,DOSBox-X 都是一个值得尝试的强大工具。
DOSBox 中文设置
Main – Load Language File… – zh_CN.lng,会弹出重启软件提示,重启后在主菜单中再选择重启 DOSBox-X 实例即可实现界面全中文。
DOSBox 许可证
GPL 2.0
官方主页
What’s new in DOSBox-X 2024.07.01
Jul 2, 2024
Correct Hercules InColor memory emulation. Read and write planar behavior was incorrect due to a misunderstanding of available documentation. (joncampbell123).
Hercules/MDA and InColor integration broke the Hercules blend mode render, fix the render so that adjacent lit pixels are brighter again. (joncampbell123).
Fix “VRD” debugger command bug that didn’t properly render out the rest of the VGA display frame. (joncampbell123).
Fixed debugger mapper shortcut bug where entering the debugger completes the 1 ms “tick” early, effectively jumping emulator time up to start of the next ms. This might explain the mysterious cases where a program always fails to work unless you are debugging it. (joncampbell123).
Added debugger command “VRT” which resumes running the guest until vertical retrace. Added for programmers who wish to write something to screen and then see it show up. (joncampbell123).
Fix IMGMOUNT, when mounting FAT disk images, to provide the DPB the actual media id byte instead of assuming 0xF8 or 0xF0. INT AH=1Ch should now report the proper media id byte for any floppy format, instead of always reporting 0xF0 (1.44MB floppy). (joncampbell123).
Allow BOOT to load and execute the boot sector of a guest OS even if memory size is too small (in IBM PC emulation, less than 32KB of RAM).
MS-DOS 1.x of course will crash if you try that because of the assumptions made in the boot sector, but it’s there if you are feeling adventurous or are in an experimental mood (joncampbell123).
If memsize is 4KB, place the COMMAND.COM PSP segment in the private UMB area instead of the normal MCB allocation chain (joncampbell123).
DOS kernel will always allocate kernel memory from private UMB area if memory size < 16KB, in order to continue to work (joncampbell123).
DOS kernel will allocate from segment 0x60 instead of 0x70 if the memory size is less than 64KB. (joncampbell123). files= and fcbs= default value now automatically scales according to available conventional memory (640KB or lower) in order for memsize 64KB or lower to free up or memory and run properly. (joncampbell123).
dosbox.conf files= and fcbs= settings have been changed to allow “0” as a value to mean choose a reasonable default. (joncampbell123).
Fix bug where DOS kernel crashes on startup because of the initial stack pointer set by BIOS startup that points past available memory when memsize is 64KB or less. (joncampbell123).
If minimum mcb free is not set and memory size is less than 256KB, automatically set minimum mcb free to minimum mcb segment, in order to release more available memory within the limited space (joncampbell123). Do not enable XMS emulation if system memory size is 1MB or less. (joncampbell123)
DOS drive cache: When listing a directory, defer the filename sort until the entire list is built. This improves directory listing performance in directories with many files. (joncampbell123).
INT 10h, if instructed, will now use the video parameter table to set standard VGA modes instead of internal logic. (joncampbell123).
Removed erroneous VGA display compensation code for certain EGA/VGA registers that really only caused incorrect display of the EGA 640×350
4-color mode. (joncampbell123).
Corrected EGA and VGA video parameter tables by copying the parameters from actual IBM EGA VGA ROM BIOS images. They should be 100% correct now. (joncampbell123).
Corrected register values and video rendering of machine=EGA 640×350 mode when emulating 64KB of RAM. This should fix rendering and display issues with EGA 640×350 4-color emulation. Also corrected INT 10h character printing functions to filter the color attribute value for
640×350 4-color mode so the DOS prompt does not have alternating colors, in the same manner the real IBM EGA BIOS does. (joncampbell123).
Fix BIOS screen to use CGA 640×200 2-color mode if machine=ega with less than 128KB of video ram, or machine=ega200, instead of showing a garbled 640×350 display. (joncampbell123).
Fix memory buffer overrun with machine=ega that can occur with 640×350 mode and less than 256KB of video RAM. (joncampbell123).
The DOSBox clipboard API (via INT 2Fh) is now disabled by default, because some programs use it’s presence to detect whether they are running under Windows. This fixes a program where Norton Desktop 1.0 does not use it’s “graphical” text UI elements because it thinks it’s running within a Windows DOS box. (joncampbell123).
Remove unnecessary and useless Win32 fcntl() on some memory typecast to int which is causing a segfault whenever a ZIP file is mounted as a drive with an overlay filesystem atop it. (joncampbell123)
Update caption control feature to use equivalent APIs on Mac OS. (joncampbell123)
Add dosbox.conf and menu option to control whether the DOSBox-X window can be seen in screen captures in Windows 7/8/10/11. Windows 11 “Recall” is very concerning and users might not want their DOS gaming to be part of it’s memory. (joncampbell123).
Correct EGA switch readback from port 3C2h to reflect a value of 0x8 instead of 0x9 when machine=ega200 (joncampbell123).
Correct BIOS data area value that holds the “EGA switches” to reflect 200-line EGA “emulation” when machine=ega200. Value 0x08 instead of 0x09 (joncampbell123).
Correct mode parameters for CGA 640×200 2-color mode when using machine=ega200 so that it displays correctly. (joncampbell123)
DOS kernel: Remove fixed hacks for SFT and dynamically allocate the second SFT table for the last N – 5 file handles. Add code to zero
SFT table memory to ensure that random data doesn’t cause issues.
Windows 3.1 is still perfectly fine with it, so the SFT table update and cleanup is complete. (joncampbell123).
DOS kernel: Move the magic “CON” strings into the first SFT and mimic the 5 default open file handles that every DOS process starts with: CON CON CON AUX PRN. Windows 3.1 is still happy with it, which is good. (joncampbell123).
DOS kernel: Put the CON driver somewhere else because allowing it to overlap the SFT is messy. Fix SFT generation to match the way that
MS-DOS 5.0 does it where the first table is always 5 entries and the second table is always N – 5 entries. Cleanup the DOS memory allocation a bit. So far, Windows 3.1 doesn’t have a problem with it. (joncampbell123).
DOS kernel: Interrupt handler IRET was accidentally placed within the SFT table, move it up to resolve the conflict. (joncampbell123).
Local DOS drive support: On Windows, if the guest is attempting to create a hidden file, make sure to call the right APIs to create a hidden file on the host. Not only is this needed to create a hidden file, but if the guest tries to create a hidden file and the file already exists as a hidden file, the file creation needs to succeed.
Fix for “Facts of Life” by Witan because the demo creates a hidden WITAN.92 every time it is run (joncampbell123).
XMS: Add dosbox.conf option to XMS driver to switch on flat real mode when a) the XMS driver initializes and/or b) when the XMS driver is called on to move/copy memory. (joncampbell123).
INT 21h: If a DOS program frees a memory block, and then resizes the freed memory block, reassign ownership of that block to the program as if allocated. This is apparently canonical MS-DOS behavior. Added dosbox.conf option to control whether resizing a freed block silently assigns ownership (default setting) or whether it returns an error.
DOS resize memory function for the most part DID assign ownership but not in the case where the size of the MCB was exactly the size requested to resize to. (joncampbell123).
Sound Blaster: Fix bug where “force autoinit” prevented Sound Blaster playback from working at all, fix for “Jump” by Public NMI (joncampbell123).
Debugger UI now shows PIC_FullIndex() and whether or not the CPU is in the HLT state. Single stepping does not do anything when the CPU is in the HLT state, so at least let the user know (joncampbell123).
Keyboard controller (IBM PC): Cancel the IRQ signal upon reading I/O port 60h. The reason for the IRQ, the pending data, was just read, so now there is no point in keeping the IRQ signal up. This fixes Escape key problems with “Cronologia” by Cascada that causes part 3 “Time” to immediately exit and continue to the credits. Part 1 and 2 are not affected by the pending IRQ because those parts mask IRQ 1 and poll the keyboard controller directly. (joncampbell123).
Fix complexity test code to determine when Odd/Even mode is enabled in all cases and to resolve a problem with garbled scrolling text in the “Vectorballs” part of “Unreal” (joncampbell123).
M_EGA display mode now applies CRTC BYTE/WORD/DWORD shift to display start address, same as M_VGA, to ensure correct display when demos and games set the CRTC to non-BYTE modes. This fixes page flipping flickering during the “Vectorballs” part of “Unreal” by Future Crew. (joncampbell123).
Update Configuration GUI to use radio buttons for selection, meaning the circular buttons that resemble those in Windows, not the check boxes.
The GUI toolkit had them all along, the Configuration GUI was using check boxes for that for some reason. (joncampbell123).
Linux ALSA MIDI output: Any attempt to send RESET or other Fx commands to the ALSA library causes a segfault in the ALSA library. Revise the code to send without crashing. (joncampbell123).
Linux ALSA MIDI output: Add code to list and enumerate the MIDI sequencer devices available so the user can use it to determine what magic numbers to put into the midiconfig setting, especially if the user wants to send MIDI to an external synthesizer. (joncampbell123).
Suddenly Mac OS 14 and XCode consider the “id” and “int” datatypes different and assigning or returning one to the other is now a compiler error. Add typecast to enable compile on latest XCode. (joncampbell123)
INT 33 mouse emulation: Add dosbox.conf options to force a specific coordinate system for the DOS game with respect to host/guest mouse cursor integration (getting the DOS cursor to match the host cursor within the window). Add dosbox.conf option where additional adjustments are available. The maximum x/y and max-adjust options are ideal for Lemmings 2, which uses INT 33h in a way that confuses the automatic range detection code used to synchronize cursor position and therefore needs this option, and the first Lemmings as well. (joncampbell123).
PIT timer: Fix restart_counter(), the delay computation was completely backwards. This is particularly important where it concerns programs that use the PIT to detect the rate at which the Pentium time stamp (RDTSC) advances as the previous code caused wildly inaccurate measurements and bad timing (GRUB bootloader, the Microsoft CD-ROM boot “press a key to boot from CD” message). (joncampbell123).
IDE: Make sure to set feature/error register to 0x01 when the guest soft or hard resets the IDE devices through the controller. The Linux kernel uses a soft/hard reset on startup to detect PATA devices and if it does not see the correct value after reset, it will either ignore the device or complain about diagnostic failure and cautiously talk to the primary IDE hard drive while ignoring any ATAPI CD-ROM emulation.
This allows the Linux kernel to boot and see the CD-ROM drive. (joncampbell123).
IDE: Do not clear registers unnecessarily when finishing IDENTIFY DEVICE.
The BOOT command now supports El Torito “no emulation” booting from a
CD-ROM drive, which is needed to boot install CDs for Windows XP, Linux, etc. or Linux-based live CDs. Note that at this time, BOOT only supports “no emulation” and IMGMOUNT only supports “floppy emulation” (joncampbell123).
INT 13h extensions: If a read was interrupted by an error, update the block transfer count so the caller knows (joncampbell123).
DOS: Move version parsing farther up, so that the initial DOS version can affect memory layout and tables as needed. (joncampbell123)
DOS DPB and FAT driver: If the DOS version is 4.0 or higher, write a
DOS 4.0+ compatible DPB structure (as DOSBox-X already has been doing since forking from DOSBox). If the DOS version is lower than 4.0, write an MS-DOS 3.30 compatible DPB structure. This allows Popful Mail to run without getting into an infinite loop scanning the DPB linked list when [dos] section ver=3 30 (MS-DOS 3.30), aside from the fact that the game will also run without this change if you set ver=4 0 since the game appears to be aware of the change in structure between MS-DOS 3.30 and MS-DOS 4.0, though for whatever reason the game refuses to run on
MS-DOS 5.0 or higher. (joncampbell123).
IDE: Silently ignore SET FEATURES command 0x03. Any negative response to feature 0x03 causes the Linux kernel to reject the IDE device. (joncampbell123)
Add support for PIT timer 0 mode 4. Linux kernel 6.1.29 compiled in “tickless” mode uses mode 4 instead of mode 0 as a delay timeout. Prior to this fix, the Linux kernel would switch into tickless mode and then nothing would happen because IRQ 0 would never fire again. See also Linux kernel source code, drivers/clocksource/i8253.c function pit_set_oneshot() to see what I mean. (joncampbell123)
Windows 95 S3 driver behavior suggests that S3 16-color VESA modes 0x202 to 0x208 are NOT planar modes, but packed modes. Change modes to M_PACKED4 and update modelist building to allow that range even if the dosbox.conf is configured not to list 4bpp packed VESA modes. This fixed Windows 95 S3 driver 16-color modes 800×600, 1024×768, 1280×1024.
Noted: Windows 95 is the last version of Windows to support 4bpp packed.
Windows 98 and higher refuses to support it and the Display settings will not allow you to select any 16-color mode other than the stock VGA 640×480 16-color planar mode. (joncampbell123)
Add –load-seg option to BOOT in case any PC-98 game boot floppy expects to be loaded somewhere other than the default. PC-98 game “Private School
Adventure” will crash if loaded to segment 0x1FC0 but runs fine if booted with –load-seg 0x0FC0 instead. (joncampbell123)
Add dosbox.conf option to direct the EMS page frame segment, in a limited fashion, though only effective for PC-98 mode. PC-98 segment is still 0xD000 by default, but apparently there are games that require the EMS page frame to exist at 0xC000. For these games, you can now set under the[dos] section “ems frame=C000”. (joncampbell123)
Restored libslirp support for 32-bit MinGW CI builds which was temporarily dropped in 2024.03.01 release. Also since MinGW plans to gradually phase out 32-bit support, added code to manually build on our own. (maron2000)
Fixed build errors of Windows installers. Windows Vista support for standard installer is dropped to fix this issue. Vista users can either use the XP installer or portable builds instead. (maron2000)
Fixed compile error of speexdsp/fftwrap.c on gcc-14 (maron2000)
PC-98: Fixed US keyboard support for tilde (Shift+grave) key (maron2000)
Fixed DOSBox-X freezed when codepages regarding EGA18.CPX were set (maron2000)
Fixed CUE sheets of GOG games were rejected. Still requires “-t iso” or
“-t cdrom” option for uncommon file extensions except “.CUE”. (maron2000)
Added loongarch64 support (donmor)
Disable FP exceptions in a portable way (xry111, donmor)
Added “*.ccd” in file open dialog (maron2000)
Added CI builds for ARM mac (maron2000)
Bump tinyfiledialogs to ver 3.17.4 (maron2000)
Obtain geometry info of non-standard sized floppy from BPB (maron2000)
PC-98: Implemented int 18h ah=47h,48h,49h (nanshiki)
Added breakpoint type “Freeze memory” (Enmet)
Implemented seeking in MSCDEX
(Imported from dosbox-staging/dosbox-staging#3516 authored by weirddan455)
Fixed built-in COPY command failed to obtain free space when reported DOS version is set to 7.1 (maron2000)
Fixed some file extensions in the filter list were ignored in the file open dialogs (maron2000)
Fixed mounting a non-FAT VHD image (maxpat78)
Fixed VHD geometry detection (maxpat78)
Fixed issue that IMGSWAP command did not work for CD drives. (maron2000)
Fixed loaded language file unexpectedly changes on launch. (maron2000)
Fixed reported size issues in builtin DIR command (maxpat78)
Added missing language file in Windows standard & XP installers. (maron2000)
Fixed a bug in IME character display on macOS Sonoma (nanshiki)
Fixed build errors of SDL1 code when built with gcc-14 (maron2000)
Fixed static link errors of libslirp >= 4.8.0 (maron2000)
PC-98: Added MEM command for PC-98 mode (maron2000)
点击下载(提取码:777f)
点击下载(提取码:suzk)
点击下载(提取码:536766)
点击下载(提取码:536766)
解压密码:www.dayanzai.me