forked from joncampbell123/dosbox-x
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCHANGELOG
More file actions
9707 lines (9664 loc) · 513 KB
/
CHANGELOG
File metadata and controls
9707 lines (9664 loc) · 513 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
NEXT VERSION
- CPU Idle callback is now strictly limited to processing IRQs and one
CPU instruction, instead of however many CPU instructions can run
until the next scheduled emulator event. This fixes a bug where
system calls that use the Idle callback (INT 21h, etc) can sometimes
vary their delay time by emulator events, and if "scanline render on
demand is enabled", can cause the Idle call to take a full 1ms interval
of time. This fixes an issue where "scanline render on demand" caused
some DOS games like Xargon to take 5 to 10 times longer to transition
between title, main menu, gameplay, etc. (joncampbell123).
- Debugger LOGL command now includes the PIC_FullIndex() emulator time
in millseconds so that it can be used to determine time as well as
CPU state for debugging (joncampbell123).
- Add dosbox.conf option to control whether VBE emulation provides the
protected mode interface or not (joncampbell123).
- Add dosbox.conf option vbememsize and vbememsizekb to control how much
video memory is reported through the VESA BIOS, which can be less than
actual video memory (but must be at least 256KB). This option can help
with some DOS programs that have problems with "too much" video memory
in the system (joncampbell123).
- Add INT 10h mode flag _REQUIRE_LFB. When set, INT 10h calls to set
VESA BIOS modes will fail unless requesting to set the linear framebuffer
version of the mode (joncampbell123).
- S3 emulation will mark any more large enough to exceed bank switching
limits in S3 hardware as _REQUIRE_LFB (joncampbell123).
- I'm not sure why Adlib emulation defaults to 48KHz in most versions of
DOSBox, but the hardware rate is 49716 and that should be the default
(joncampbell123).
- Fixed crash on starting debugger on MinGW builds (maron2000)
- Adjusted the ChinaSea/Big5-2003 extended code point ranges for CP951 to
0x9140–0xA3FE and 0xC6A1–0xFEFE (1abcd)
- Replaced deprecated symbols to enable launching on old macOSs (maron2000)
- Converted all bash-dependent shell files to POSIX-shell compliant
(pandasoli)
- Removed 7 duplicate Chinese character mappings from CP951 (Big5-UAO) (1abcd)
- Added SoundBlaster microphone input support (Windows WASAPI)
(meldro364-glitch)
- Fixed segfault on launch of macOS builds (maron2000)
- Added OS/2 support for tinyfiledialogs, browser and external programs and
some more fixes. (josch1710)
- Fixed savestate load "Memory size mismatch" error on MSVC build (rebb)
- Fixed savestate loading crash related to dynamically allocated TempLine in
VGA system (rebb)
- Added Direct3D11 support (Experimental, SDL2 only) (maron2000)
- When leaving fullscreen, only force rebuilding the window for OpenGL mode.
(rebb)
- Clear modifier keys before savestate gets saved. (rebb)
- Re-enabled WinMM joystick support (Windows SDL1) (maron2000)
- Fixed colors option fails at launch on TTF mode (maron2000)
- Optional switch to disable post exit delay in DX-CAPTURE (villesundell)
- Fixed Emscripten builds for Dosbox x v2026.01.02 (grootpot)
- Fixed long freeze during startup on linux (SmileTheory)
- Fixed windowposition option at launch (maron2000)
- Fixed detection of EXEPACK failures (maron2000)
- Fixed FPU FILD emulation (asemarafa)
- Removed range check in INT10_GetCursorPos causing text glitches (maron2000)
- Added experimental VS2026 CI builds. Can be downloaded as 64-bit Visual
Studio nightly builds. (maron2000)
2026.01.02
- VESA BIOS will remove 8-bit bank switching limit if the video memory
is large enough to need more than 256 banks. Memory size will always
be limited to no more than 64 banks (128 if smaller than 64KB
granularity) only if S3 emulation is active. DOSBox Integrated Graphics
machine type is exempt from bank switching limit, so, if you are running
legacy code or Demoscene stuff against it that never clears the upper
8 bits properly, it's not going to work unless you use smaller memsize
settings. (joncampbell123).
- Update BOOT command to support multiple disk images with swapping (maron2000).
- Render scaler system has been modified so that render and frame caches
are now dynamically allocated, instead of fixed buffers. Not only does
this reduce memory wasted by over-large buffers, it also removes
limitations on guest video mode resolution that previously capped the
video mode to 1920x1440 or lower, and the advanced scalers (HQ2X,
Advanced MAME, etc) to 800x600 or lower. (joncampbell123).
- VGA output will now automatically disable doublescan mode whenever an
advanced scaler, such as the "XBRZ" or the Advanced MAME scalers, are
selected, so that the scalers can do their job properly on the low
resolution graphics mode automatically. The user no longer has to
manaully turn off doublescan mode for those scalers to work. (joncampbell123).
- Added TV, Scanline, and RGB scaler variants appropriate for VGA
200-line modes with doublescan enabled (renders to 400 lines). In fact
supporting those scalers with 400-line VGA is arguably more visually
accurate than applying them to 200 lines of graphics, because it
better reflects the actual 400-line raster as it would be displayed
on a VGA monitor. (joncampbell123).
- Apparently at random, VGA render will call RENDER_DrawLine too much,
causing buffer overruns at random, so, instead of directly assigning
the scaler line handler, assign a function that checks the rendered
line count and ensures that rendering stops at the correct line
count. This should fix some random crashes or corruptions, especially
on Linux with the OpenGL output which likes to allocate EXACTLY the
amount of memory required for the frame. (joncampbell123).
- A patch was submitted to DOSLIB DSXMENU to incorporate non-selectable
informational lines of text. Incorporate the updated DSXMENU binaries
into DOSBox-X (joncampbell123).
- Wrote IPS patching tools IPSMAKE and IPSPATCH in DOSLIB, then incorporated
them as builtin executables on drive Z: under Z:\PATCHING. You can
now use IPS patch files to "ROM hack" your MS-DOS games. (joncampbell123)
- Add map13/map14 CGA/HGC like interleaved rendering support for VGA
256-color mode. There is a game engine in development that is willing to
use such oddball modes. (joncampbell123)
- Added SDL2_net to source tree (maron2000)
- Fixed regression of FIFA96 CD label detection (maron2000)
- Log OpenGL context version (rebb)
- Force SDL window regeneration when exiting fullscreen (rebb)
- Fixed file handle leak prevents save state file removal (srcdabada)
2025.12.01
- Video debug overlay: For Tandy and PCjr emulation, add information on
the screen that shows the line mask, display and cpu memory banks and
the corresponding segment values, which may aid in debugging issues
with games and reveal any remapping or page flipping (joncampbell123).
- Tandy emulation: Add the string "Tandy" somewhere in the DOS kernel
at startup if machine=tandy. The game "The Train: Escape to Normandy"
scans from FFFF:0000 for the string "Tandy" which of course wraps
around to the first 64KB of memory where the DOS kernel resides. If
it does not see this string, it does not think it is running on a Tandy.
Such a detection routine will obviously break if you're on a 286 based
Tandy with HMA enabled, or you're running normal MS-DOS on a Tandy
system. This change allows the game to run (joncampbell123).
- Tseng ET4000 emulation: Mode 0x24 is unusual in that it is a 130x28
text mode with a 13-pixel high character cell. The ET4000 VGA BIOS
apparently has a specific font for that mode, so, incorporate that
font into DOSBox-X and use it for mode 0x24 (joncampbell123).
- Tseng ET4000 emulation: Fix modes 0x22/0x23/0x24 to match how the
actual VGA BIOS programs them. This fixes problems where the 132x25
mode was rendered only on the upper half of the screen (joncampbell123).
- Fix Tseng ET3000/ET4000 emulation bug where CGA graphics modes
were garbled. The main VGA emulation no longer uses M_CGA2/M_CGA4
and the ET4000 emulation needs to behave the same to fix the
graphics modes. Apply fix to ET3000 emulation as well. (joncampbell123).
- Some extra code in shell processing was preventing drive change commands
if the last character was a backslash i.e. "a:\" instead of "a:".
Fixed. (joncampbell123).
- INT 21h AH=4Bh EXEC: Real MS-DOS returns a nonzero value like 0x3E01.
A buggy version of Magic Pockets fails to call INT 21 AH=4Dh to read
the INTRO.EXE exit code and expects AL to just be nonzero to continue
to the game. So to make it work properly (kind of), return a nonzero
value. (joncampbell123).
- Tandy machine type: Many registers are WRITE ONLY according to SX
documentation, yet "Troubadours" likes to read/modify/write those
registers in what appears to be hand-rolled manual modesetting code
to set up 320x200 16-color mode, so, add code to respond to reads
from those ports with zeros and print a debug message to the log
about how DOS games are not supposed to read those registers. Make
the hand-rolled modesetting work by returning 0x00, rather than 0xFF.
The code will not set up the mode correctly if 0xFF is returned, but
will if 0x00 is returned. A side effect of this is that, since one
of the registers controls the RAM address used as video memory, this
moves it down to 512KB from base memory as well, which of course
easily corrupts the very end of the MCB chain unless you enable more
than 640KB of RAM and ask DOSBox-X to emulate the full Tandy 768KB
of conventional memory. Though the game still crashes very easily,
and in the exact same manner in both DOSBox-X and DOSBox SVN, this
fix does solve the problem where the game was only able to draw
2 out of 4 scanlines on the screen. (joncampbell123).
- Fix: Load GetDiskFreeSpaceExA at runtime to restore compatibility with
Win95RTM (emxd)
- Support for musl libc under Linux (repzilon)
- Utilize SDL2's keyboard capture logic to inhibit window manager shortcuts
(BenAckerley)
- Fix OpenGL resize / crash issue related to SDL and the internal GUI (rebb)
- Fix: missing floppy drive after harddisk boot (merubird)
- Fix crash on launch in MinGW and UCRT 64-bit builds (maron2000)
- Fix file open dialog encoding (maron2000)
- Allow controlling K-CG via BIOS interrupt (OPNA2608)
- Add debug feature memory find (Enmet)
- Fix turbo to allow burst mode and toggle mode (jez9999)
- Linters - fixup freedesktop metainfo and flatpak (rderooy)
2025.10.07
- INT 21h AH=4Ah resize memory: Compact free blocks only at or after the
segment being resized, as MS-DOS is documented to do (joncampbell123).
- INT 21h AH=4Ah resize memory: Fix bug where, if asked to resize a previously
freed memory block and the block is not the last block in the MCB chain,
and the next block in the MCB chain is also free, the MCB management code
would correctly compact free blocks but then allocate according to the
old size of the freed MCB block, causing truncation of the MCB chain.
Fix for MCB chain truncation caused by California Games II DOS memory
management when running in Tandy graphics mode. (joncampbell123).
- Add dosbox.conf option, disabled by default, where if the MCB memory
chain is corrupted anywhere past the running program's memory block,
and it does anything to cause allocation, a new free memory block is
created to satisfy allocations instead of halting emulation. Some DOS
programs are a bit sloppy in a way that can corrupt the MCB chain.
When enabled, this behavior matches apparent MS-DOS behavior (joncampbell123).
- Debugger: DOS MCBS command now also prints the segment immediately
following the last MCB block (joncampbell123).
- Tseng ET3000/ET4000: Update Status register 3DAh behavior when emulating
Tseng chipsets to reflect Tseng datasheet, and VGAKIT SVGA detection code
expectations. Bit 7 is expected, as documented by Tseng, to be the inverse
of bit 3 (vertical retrace). Extended Start Register CRTC 33h must not
allow setting the upper 4 bits because Tseng only documents the bottom
four, and because VGAKIT requires it for Tseng detection (joncampbell123).
- Fix bug that, for machine=hercules, prevented Hercules palette shortcut
from changing colors when in graphics mode (joncampbell123).
- Remove mixer and VGA capture test modes from integration device. Update
integration device version number. Convert hardcoded magic constants used
in IG into constants in iglib.h which is now shared explicitly with the
iglib.h in DOSLIB. Add integration device interface to allow the guest
to read and set the CPU cycle count of the emulator. (joncampbell123).
- Fix INT 10h AH=0Eh bug where printing BEL triggered screen scroll up if
cursor beyond the last line. Fix for the Elder Scrolls Arena installer.
(joncampbell123).
- FAT filesystem driver (for disk images): If Elder Scrolls Arena calls
INT 21h to find files named *.65 (such as STATES.65) with an attribute mask
of 0xA (VOLUME LABEL | HIDDEN), ignore the VOLUME LABEL bit and scan
normally. The 0xA value is leftover from a divide operation used to make
the file name and is technically a bug in the game, though that happens
to work on real MS-DOS and the DOSBox/DOSBox-X local folder support code
anyway. This fix allows Elder Scrolls Arena to run from a mounted disk
image. (joncampbell123).
- FAT filesystem driver (for disk images): If Elder Scrolls Arena calls
INT 21h to find SAVEGAME.00 (yes, a specific name for some reason) with
an attribute mask of 0x7C (which represents... um... what?), ignore the
VOLUME LABEL bit so that players can load their saved games from the
menu instead of being told that the saved game that is clearly there on
the screen does not exist. What other weird random values of CX attribute
mask does this game use? (joncampbell123).
- PCI bus improvements : Allow device to see full size access (smunaut)
- Fix build error of SDL1 version on ArchLinux (possibly gcc-15) (maron2000)
- Enable building DOSBox-X on older macOS versions and add instructions
(maron2000)
- Add code page 951 in dialog box (1abcd)
- Fix failure of create/opening a temporary file for piping (maron2000)
- Create/open a temporary file to device_TMP for piping on Z: drive.
(maron2000)
- Convert message to UTF16 before calling messagebox function (Windows)
(maron2000)
- Added some new members to the MMX_reg union for big-endian platforms.
(alarixnia)
- Create directory if not exist before writing conf file. (maron2000)
- Fixed language files were still locked after loading is completed.
(maron2000)
- Fixed freeze when codepage switched to 3846, 3848. (maron2000)
- Fixed build error when internal debugger is disabled (maron2000)
- Show loaded conf file in log in full path (maron2000)
- Print syntax error if pipe has no command to pass output (maron2000)
- Add permanent option for initial DOSBox-X shell (maron2000)
- Fix errors when initializing fluidsynth (maron2000)
- PC-98: Redraw the function keys after updating them (bobsayshilol)
- Do not carriage return with a single LF('\n') (maron2000)
- Fix mapper not rendering anything on SDL2/Windows (aybe)
- Scale mapper according display resolution (aybe)
- Added applicable changes from SVN. (Allofich)
r4485: Enable writing to all planes when drawing pixels in EGA modes.
r4487: Correct panning of VESA text modes.
r4488: Correct comment about odd/even bit.
r4490: Set MCB ownership when *blocks==total at end of DOS_ResizeMemory.
r4492: Don't clear message queues of MPU-401 and compatibles on reset.
r4493: Handle EOF character in batch files as actual end of file.
r4494: Use 4-byte partial page mapping data.
- Replaced deprecated functions to enable building with FFmpeg 8 (maron2000)
- Fixed screen blanked when restoring minimized window in TTF mode (Windows
SDL1) (maron2000)
- PC-98: Save Kanji CG access mode setting, restrict output accordingly
(OPNA2608)
- Added missing language options to Windows installers (maron2000)
- Debugger: IV must not truncate addresses to 16-bit (cmsautter)
- Debugger: Warn single-stepping may not work as expected with Dynamic core
(maron2000)
- MIDI: Show loaded Soundfont/ROM path only when required to. (maron2000)
- SDL2: Updated SDL2 library to version 2.32.10 (maron2000)
- Apply aspect/scaling/clipping when using OpenGL shaders in windowed-mode
(rebb)
- Fixed file locking problem on Linux port (loops)
- Fixed typo in Linux man page (-date-host-forced option) (maron2000)
- Mention OPL in MIDI/OPL configuration dialog menu (maron2000)
2025.05.03
- Show TURBO status in title bar. (maron2000)
- Fixed MinGW32 builds failed using gcc15, due to a conflict in __inline__
macro. (lazka)
- Revise EGA/VGA emulation to treat the CRTC CGA/Hercules
CRTC bit remapping as bits to mask out, instead of defining
the upper limit of the memory mask. This makes the CGA mode
Engine page flipping test work. I initially had reservations
about whether or not real hardware did this, but, it would
make sense for hardware to do it that way. (joncampbell123)
- Updated libpng to version 1.6.47 (maron2000)
- Updated XCOPY to version 1.9a (maron2000)
- Updated SDL2 library to version 2.32.4 (maron2000)
- Fixed a build/install error due to using wildcards in Makefile.am, which is
not supported in GNU Automake. (maron2000)
- macOS: Install SDL2_net in CI workflow to enable internal modem support on
Release and Nightly SDL2 builds. (maron2000)
- Fixed buffer size to allocate missing byte for string terminator for
savestate filename to prevent buffer overflow (arifogel)
- Fixed settings of yellow color in COLOR command (maron2000)
- Fixed COLOR command to match behavior on Windows (maron2000)
- Fixed INT21h AH=0a cursor position moved by bell due to keyboard buffer full
(maron2000)
- Fixed INT21h AH=01 echo behavior (maron2000)
- Replaced SetPixel with DIB Section Direct Memory Access for faster printing
(DwayneSelsig)
- Fixed creation of overlay special files (zyebytevt)
- PC-98 mode: Add INT 18h function AH=10h to control cursor blink.
Emulate documented side effect in that this call also hides the
cursor. The PC-98 port of Lemmings will no longer show a blinking
black box in the lower left corner. (joncampbell123)
- Fixed Host key (F11, F12) handling in Codepage 932 (Japanese Shift-JIS).
(maron2000)
- Bumped ESFMu to ver 1.2.6 (maron2000)
- Fixed regression of adding a dot to CD labels when longer than 8 characters,
required for games such as Descent 2 CD installer (maron2000)
- Added Modeswitch toggle option (DieSkaarj)
- Fixed glitch of DBCS character at the end of a line (maron2000)
- Fixed dialog for showing error of loading language files (maron2000)
- Removed two and 226 duplicate Chinese character mappings from code
pages 950 and 951, respectively, ensuring more accurate Big5 and
Big5-UAO character mappings for Chinese IME users. (1abcd)
- Enabled changing drives mounted prior to switching to securemode (maron2000)
- Enabled some messages to be translated in the translation files (maron2000)
- Fixed fullscreen mode occasionally switched to windowed mode (maron2000)
- Updated French translation (FredBezies)
- Fixed blank screen when output=ttf on PC-98 mode (maron2000)
- Fixed crash when switching from fullscreen to window mode in TTF output
(maron2000)
- Fixed mounting zip files with white space in their names failed (maron2000)
- Fixed crash on reboot when output=ttf (maron2000)
- Fixed blank BIOS screen when output=ttf (maron2000)
- Fixed direct input of half-width kana (maron2000)
- Fixed PC-98 INT 1Fh, AH=90h source and destination address (drachen6jp)
- Fixed unnecessary trailing backslash in path name (maron2000)
- Fixed SSE MOVSS, MOVHPS, UNPCKLPS, UNPCKHPS, and PSADBW as well as
MMX PMULLW, PSUBUSB, and PSUBUSW, instruction implementations (fuel-pcbox)
2025.02.01
- Added new experimental dosbox.conf option that turns off the
A20 gate automatically if loading a COM/EXE file to a memory
location below 64KB. Option is off by default. This is intended
for the startup routines of programs that assume 8086 wraparound
to prevent them from crashing (joncampbell123).
- Bump tinyfiledialogs to v3.19.1 (maron2000)
- Fix VGA render-on-demand bug that causes all screen updates to
stop working if something changes video state without changing
any other attribute (width, height, frame rate, etc.). In
PC-98 mode this bug could be triggered by leaving the text
layer open while switching off the graphics layer when the
graphics layer is in 256-color PEGC mode. Fix for KOARMADA.EXE
when exiting back to the DOS prompt. (joncampbell123).
- In PC-98 mode, add I/O port 43Bh which guest applications can
then read to determine whether the 15MB "memory hole" is open.
The guest can use this bit to determine whether the PEGC 256-color
framebuffer is available at that location, or whether that is
just plain system memory. Added for homebrew PC-9821 project
KOARMADA.EXE which uses that bit to determine how to talk to
the framebuffer. (joncampbell123).
- Fix keyboard ISR in PC-98 mode to assume there is data waiting
from the keyboard I/O ports (then check the status for more).
The reason is that CWSDPMI.EXE for PC-98 has a keyboard ISR
of it's own that reads the scan code first (which clears the
"data available" bit) before then passing control to the
real-mode keyboard ISR. If our keyboard ISR first checks for
status in that case it will never see any keyboard data and
keyboard input will never register to the guest while running
under CWSDPMI (joncampbell123).
- Fix BIOS POST location (F000:FFF0) JMP instruction in PC-98 mode
so that the segment value of the JMP instruction matches a
specific value that the DJGPP C runtime checks for to detect
PC-98. (joncampbell123).
- Stop serving IBM PC-specific CWSDPMI.EXE in NEC PC-98 mode.
It happens to work unless any interrupt or exception happens.
Instead, provide an alternate common version of CWSDPMI.EXE
that was patched to support PC-98 machines when machine=pc98
(joncampbell123).
- Add support for ucrt64 builds (maron2000)
- DOS CTRL+C handling: Remove NULL vector check because built-in
COMMAND.COM long ago was fixed to provide a CTRL+C vector. Fix
code to use a different value for the C++ exception so that it
cannot be confused for any other common signal in the emulator
(joncampbell123).
- Remove DOSBox Integration Device VGA "self capture",
which was never used much anyway, as part of cleanup (joncampbell123).
- x86 paging: Remove unused non-"full TLB" code. (joncampbell123).
- Use mmap() to allocate system memory if available. This is
for future work that may involve something that requires
page-aligned allocation, such as KVM support in Linux (joncampbell123).
- VGA cleanup, organization (joncampbell123).
- Fixed regression of specifying DBCS fontx file was ignored. (maron2000)
- Fixed mistakes in adding double quotes to filenames to pass to IMGMOUNT
command, and syntax errors in showing a message dialog box. (maron2000)
- Fixed bug where bios memSize was not set when using TTF. (maitchison)
- Fixed CMS was always disabled regardless of config settings. (xrip)
- Switch off TTF mode in text modes not working in TTF mode. (maron2000)
- Gravis Ultrasound: Add dosbox.conf option that when enabled,
prints a warning to the log file every time the guest pokes
data into GUS RAM beyond the 1MB supported by the card,
in order to better identify errant Demoscene code and/or
any bugs in new tracker code currently in development. (joncampbell123)
- VGA: Fix buffer overrun that can occur with 4bpp planar
16-color modes if the guest writes beyond the first 2MB
of video RAM. The planar support code also copies the 3rd
bitplane to a font RAM array used in EGA/VGA text mode.
This font RAM array is only 512KB, therefore in planar
memory space, writes beyond (2MB/4) = 512KB cause corruption
of emulator state and possibly crashes. Solve the issue
therefore by not copying to font RAM beyond 512KB. (joncampbell123)
- VESA BIOS support: Fix VGA draw and bank switching code
to ensure that the guest cannot write outside video RAM
limits, and fix VBE bank switching code to consider 4bpp
planar SVGA modes properly. (joncampbell123)
- VESA BIOS support: Fix scan line and page calculations related
to 4bpp planar 16-color SVGA modes. (joncampbell123)
- VESA BIOS support: Fix 24bpp RGB bugs related to VBE calls
that control scan line length and display panning/scrolling.
Now VBETEST can test 24bpp panning without potentially giving
the user an epileptic seizure, and there are no more overlong
scanlines. (joncampbell123)
- VESA BIOS support: Correct mode information for SVGA text modes (joncampbell123)
- VESA BIOS support: Like real Pentium-era hardware, do not
list 4bpp planar 16-color modes as having a linear framebuffer.
Most SVGA cards only support planar VGA memory within the
standard VGA A0000-BFFFFh region and do not support the same
up in the linear framebuffer area. (joncampbell123)
- Save state support: Let the option to control whether or not
compression is applied, apply to the ZIP compression. If you
turn off compression, the ZIP file uses "store" mode instead,
otherwise compresses as normal. (joncampbell123)
- It turns out that for whatever reason, the savestate code was
compressing the state twice. Once by itself, and then again when
writing to the ZIP archive. Furthermore, storing the original
length at the end of the compressed data using size_t is a big
problem. Remove the extra compression/decompression and let the
ZIP file support do the compression. Save states from now on
will be marked as "No compression" for at least some backwards
compatibility. (joncampbell123)
- Volume label cleanup and fixes. Do not pad labels with white spaces. (maron2000)
- Some NEC PC-98 games that support MIDI through MPU-401 like to use
Roland GS-specific SysEx messages to control master volume and
reset the MIDI synth, instead of standard messages. These games
were known in DOSBox-X to have problems with MIDI stuck notes and
hanging notes for this reason. Added code to recognize Roland GS
reset SysEx and reissue it as standard MIDI reset, to resolve that.
Added code to Fluidsynth MIDI support to recognize the Roland GS
master volume SysEx commands and apply it to the output, which
allows these games to "fade out" the MIDI properly. PC-98 games
should no longer have hanging/stuck MIDI notes (joncampbell123).
- Fix VESA BIOS modelist mistake that marked all "high definition"
modes as modes to round bytes per line up to a power of 2 (joncampbell123)
- Fix memory size register determination for S3 Virge/VX (clbianco)
- Fixed a Y2038 bug by replacing Int32x32To64 with regular multiplication.
(CookiePLMonster)
- Fixed pasting Bell code (0x07) from clipboard was ignored. (maron2000)
- Fixed a segfault crash when pasting the content of clipboard is empty
or consists of invalid characters only. (maron2000)
- Fixed crash when trying to access MOUNTed empty physical CD/Floppy
drives. (maron2000)
2025.01.01
- Fix bug that prevented the Configuration GUI from saving to dosbox.conf
the last Windows 3.1 theme you applied using the dropdown menu.
(joncampbell123).
- Add option to apply vmemdelay to SVGA and linear framebuffer
modes (such as VESA BIOS modes), which reduces emulator performance
for those modes, but allows you to emulate slower SVGA cards.
Due to how some machine types are emulated, this option also enables
vmemdelay to affect the PC-98 linear framebuffer, Tandy & PCjr
video modes, as well as MDA/Hercules. (joncampbell123).
- Add workaround to CPU reset logic that allows it to work correctly
even with dynamic core. Previously, if the guest reset the system,
the emulator would crash with an error message about an uncaught
C++ exception because C++ exception handling doesn't work with
dynamically generated code. (joncampbell123).
- Correct CPUID family/model/brand values for cputype=pentium_iii.
Add CPUID level 2, which returns "processor configuration
descriptors", and return documented Pentium III values. Apparently
Windows XP really REALLY cares about these configuration
descriptors and will hang in-kernel in an infinite loop at bootup
without these apparently really important values. This change
makes it possible to boot Windows XP with Pentium III emulation.
(joncampbell123).
- Allow values of memsize to represent 4GB or more of RAM. Up to
1TB, if Pentium PSE extensions are enabled, the memalias setting
is 40, and "enable pse=pse40" in the conf file. Memalias maximum
is now 40, instead of 32. Add code to provide that memory above
the 4GB address mark when PSE is in use by the guest OS. Added
dosbox.conf option to specify a memory file. When specified, all
guest memory is memory-mapped from a file on disk, rather than
allocated from host memory or host swap file. To avoid consuming
too much RAM on the host, a memory file is REQUIRED to emulate
memory at or above 4GB. For best performance with the memory file,
make sure the filesystem you place it on supports sparse files,
including Linux ext4 and Windows NTFS. (joncampbell123).
- Fix EGA machine type to determine whether CGA RGBI or EGA RrGgBb
display is active by vsync polarity, instead of the length of
htotal. Several online references state that vsync is negative
for 350-line modes, including 350-line to an MDA monitor. This
also allows the "enhanced" EGA 320x200 modes in Rambo III to display
colors correctly. (joncampbell123).
- Dynamic x86 core: Reflect STI instruction to normal core so that
the 1-instruction delay is correctly emulated. This makes it
possible to run Windows XP or Server 2003 with dynamic core and
SYSENTER/SYSEXIT emulation without random BSODs (joncampbell123).
- Fix default code page. Instead of assuming 437 at all times, use
437 for all IBM PC compatible modes and 932 for PC-98 emulation.
(joncampbell123).
- Normal core: Fix STI emulation to enforce the 1-instruction delay
by forcing the normal core to execute another instruction right
away without providing any opportunity for interrupt processing.
This does not break Peret Em Heru, Keen games, and it seems to fix
the random BSOD issues with Windows XP and Windows Server 2003
when emulating a Pentium II that supports SYSENTER/SYSEXIT. I'm
not clear on why this fix prevents them from crashing, but there
you go. (joncampbell123).
- Keyboard emulation: Fix PCjr key delay to match IBM documentation
stating how long it takes to transmit one scan code, which is
obviously much slower than normal to accomodate the slow CPU and
the optical nature of the transmission. This is needed in order
for emulation to correctly send Fn+key combinations. At normal
key delay, the guest will miss scan codes and function keys will
not be reliable. (joncampbell123).
- Keyboard emulation: The 83-keyboard scan codes work differently on
the PCjr keyboard because half of them are only accessible by holding
the Fn key. The keyboard only sends the base key scan code and the Fn
key scan code and the BIOS is expected to convert that to the normal
83-key scan codes expected by DOS software. The problem is some games
like "Agent USA" for PCjr are written to directly handle scan codes
through IRQ 1 (the fact that PCjr handles keyboard via NMI and reflects
to INT 9 is ignored here). Fix this by sending scan codes that emulate
holding Fn and pressing the appropriate key. Agent USA expects the
user to press F1 by holding Fn and pressing "1". (joncampbell123).
- Revise VGA doublescan mode, vs bit 7 of the Max scanline register, to
correct how VGA doublescans 200-line modes. Revise EGA/VGA text code
to divide line by 2 in rendering to match double scanned scanlines,
so that the "graphical" text of "After the War" can render properly
for machine=vgaonly. (joncampbell123).
- INT 10: If machine=ega, check the EGA switches on INT 10h modeset.
Some games force the EGA BIOS to use CGA 200-line text modes by
modifying those bits and then setting the mode ("After the War").
(joncampbell123).
- INT 10: Fix "load font" functions to correctly recompute video
display end for machine=vgaonly and machine=ega. (joncampbell123).
- INT 10: Like any other 200-line 16-color graphics mode, 200-line
VGA text mode needs to program the AC and VGA palette using the
CGA RGBI-type palette, not the EGA 64-color type palette. (joncampbell123).
- CPU: Disallow clearing PE bit from LMSW by default, always.
You can still allow it through dosbox.conf. It turns out that
x86 CPUs never allowed you to clear it that way, even from the
Pentium up, even though Intel documentation beyond the 386 never
mentions it again. This fixes problems with DOS extenders and
VCPI, particularly DOS4GW which for some reason with VCPI likes
to try to clear the PE bit when switching to VM86 even though
it clearly understands it's not supposed to be able to clear it.
(joncampbell123).
- VCPI: It turns out the VCPI server GDT selectors are expected to
be 32-bit, because the protected mode VCPI entry point is expected
to be called as if 32-bit far pointer. Correct VCPI entry point
to return using RETF, not IRETD, which solves crashing issues with
DOS extenders. For the first time, DOS extenders are working with
the DOSBox-X built-in implementation of VCPI and most DOS games
run fine now with it. (joncampbell123).
- VCPI: Add code to INT 2Fh handler regarding Windows startup/shutdown
messages to fill in DS:SI. If EMM386 and VCPI emulation is active
and running the DOS machine in virtual 8086 mode, give Windows the
proper callback procedure to allow Windows to switch off VCPI vm86
mode on startup and turn it back on during shutdown. (joncampbell123).
- BIOS "POST" screen: Change BIOS logo to PNG format. To avoid having
to render a PNG in roughly 10 different video modes, add code to
VGA draw code to allow a BIOS logo "overlay" to be rendered
independent of the video mode. Depending on machine type load one
of four PNG files from disk or from inside DOSBox-X itself.
PNG requirements: 224x224 or smaller, bit depth of 8bpp or less,
color palette (not grayscale), no alpha channel, and must not be
interlaced. For best compatibility, use less than 64 colors, or
perhaps just 16 colors. Much like the Windows 95 LOGO.SYS, you can
change the logo to your taste by placing specifically named PNG
files in the same directory as your dosbox.conf or current working
directory. Have fun. Note that this addition requires that you
compile DOSBox-X with libpng enabled. (joncampbell123).
- Added dosbox.conf option to specify BIOS logo file. (joncampbell123).
- Added dosbox.conf option to specify a text message, up to 3 lines,
at the bottom of the screen during BIOS POST screen. (joncampbell123).
- Fix color glitches in EGA, Tandy, Hercules mode on macOS SDL2 build
(output=opengl)(maron2000)
- Add int33 mickey threshold option (Fixes Ultima Underworld) (jpernst)
- Fix configure.ac (disable-screenshot option) (maron2000)
- Fixed codepage switching when loading language file in Traditional
Chinese (maron2000)
- Fixed display of some Chinese characters (Traditional Chinese)(maron2000)
- Fixed garbled text and menubar on reset (maron2000)
- Fixed codepage switching when a language file was loaded (maron2000)
- sdlmain: Fixed crashing if no config files are found. (skitt)
2024.12.04
- Arrange memory device allocation so that it is possible to allocate
up to about 3900MB of memory instead of 3500MB. (joncampbell123).
- Fix S3 LFB PCI base alignment error if system memory pushes it
to a higher address (joncampbell123).
- Fix EGA 640x350 4-color mode (when EGA memory size is 64KB) to
display correctly. Prior to this fix, 640x350 4-color only worked
properly if the INT 10h Video Parameter Table was enabled. (joncampbell123).
- Fix S3 VGA memory size reported through register CR36 to cap at 4MB
and set the value correctly. This fixes a known issue where setting
vmemsize to 8MB caused Windows 98 to report memory size as 2.5MB. (joncampbell123).
- Fixed a problem when VZ Editor is resident in PC-98 mode. (nanshiki).
- INT 10: SVGA mode 0x6A does not exist on plain VGA hardware. (joncampbell123).
- INT 10: Fix mode 0x6A (800x600 4-color SVGA) to use a correct dot
clock so that the refresh rate is >= 60Hz instead of 37Hz, and make
sure mode 0x6A is a 100% clone of VESA BIOS MODE 0x102. (joncampbell123).
- Fix MMX/SSE instruction decoding, correct some mistakes in MMX emulation. (joncampbell123).
- IMGMAKE: Add -partofs option to allow control of where the partition
begins in the image (joncampbell123).
- IMGMAKE: Add -align option so that the FAT filesystem can be arranged
for more optimal I/O on devices with larger sectors, such as modern
4096-byte/sector drives. (joncampbell123).
- IMGMAKE: Add -label option so that the generated FAT filesystem has the
specified volume label. (joncampbell123).
- MDA emulation: Fix non-blink attributes 0xF0 and 0xF8 to correctly render
bright green background. (joncampbell123).
- Fixed crash when a CD image was loaded to an "empty" drive (maron2000)
- Log loaded .conf file (maron2000)
- Supress redundant screen reports in log (maron2000)
- Fixed mouse capture locking by middle button (maron2000)
- Fixed toggling the menu option "Autolock mouse" did nothing (maron2000)
- Fixed build failure with libc++ 19 (DimitryAndric)
- Fixed fullscreen mode not responding when launched in TTF mode
in Windows (maron2000)
- Fixed crashes when changing floppies mounted by drive numbers on
a booted guest OS (maron2000)
- Fixed launching host programs with white spaces in path (Windows)
(maron2000)
- Convert paths from relative to absolute when launching host programs
in a mounted drive (Windows) (maron2000)
- Added an option not to pause after host program execution is
completed (maron2000)
- Fixed corrupted display when loading language files at launch
(maron2000)
- Fixed Z Drive path expansion to be case insensitive (maron2000)
2024.10.01
- Allow the ".inst" extension for CUE sheets. (Allofich)
- Add SET /FIRST, a DOSBox-X extension, that takes the specified
variable if it exists and moves it to the front of the environment
block. (joncampbell123).
- SET command processing has been cleaned up and streamlined.
Added /ERASE command line switch to clear the environment
block (DOSBox-X extension). (joncampbell123).
- VESA BIOS: Add new option to adjust reported linear framebuffer
address by a specific number of pixels. This is needed by
"Out of Control" by Contract which for whatever reason,
will always draw to the LFB base minus 128 bytes. This option
makes it possible to correct the demo graphics. (joncampbell123).
- Gravis Ultrasound: Officially, registers 0x0-0xF, the voice
control registers, are documented to have a 0x0-0xF write and
0x80-0x8F read alias. Unofficially, according to the behavior
of 1997 demo "Out of Control" by Contract, all GUS registers
have a N and (N+0x80) alias, or at least register 0x4C, and
you can read them back from either index. Or else the demo
fails to detect the GUS. So add this alias, but only if
enabled in dosbox.conf. Real hardware testing is required to
know if the actual GUS behaves this way and which versions.
(joncampbell123).
- Move the INT 3 default vector to well within the initial 16
bytes of the DOS kernel, away from the List of Lists and SFT.
The previous placement caused certain versions of Windows 3.2
(yes, the Chinese version) to crash on startup. (joncampbell123).
- When using the running program to name screenshots and such,
filter out all invalid characters so that Windows users can
take snapshots even if junk characters are there (joncampbell123).
- DOS FAT driver: If INT 13h reports disk change, adapt floppy
disk geometry to new disk image according to media byte. This
allows DS_BLISS to present it's 720K fake floppy even if the
user initially mounted a 1.44MB floppy to drive A: (joncampbell123).
- INT 10 mode list: Add "pitch" parameter. If nonzero, the value
(in pixels) is how to program the pixels per scanline when
setting the mode.
- VESAMOED: Add -pitch option to control the pitch (pixels per
scanline). The intent is to work around DOS games that assume
nonstandard pixels per scanline by allowing the VESA BIOS mode
to use a different one. For example, Line Wars II has an S3
acceleration mode that uses 800x600, but for whatever reason,
assumes the video mode is 1024 pixels per scanline, and will
render garbled graphics if that is not the case. (joncampbell123).
- S3 emulation: Follow S3 Trio64 documentation and mask the Linear
Window Position bits according to the size of the memory. You
can only place it on a multiple of the memory size. This silences
warnings caused by Line Wars II which appears to modify only the
upper byte but not the lower when modifying this register, which
then leaves 0xA0 in the lower half. That lower half would be
ignored for 1MB or larger video memory sizes. (joncampbell123).
- S3 XGA emulation: Add XGA acceleration for 4bpp packed 16-color
SVGA modes. A CAD package has S3 support drivers that use the
16-color 4bpp packed modes and expects XGA acceleration to work.
(joncampbell123).
- Add "-o int13" option to IMGMOUNT to direct the FAT driver to do
all disk I/O through INT 13h instead of directly. This is intended
for certain demoscene productions that apparently like to make
files appear out of thin air by intercepting INT 13h floppy disk
I/O and then asking MS-DOS to run something from it. Hack for
"DS_BLISS" demo. (joncampbell123).
- Fixed crash when a language file is loaded on a Windows host with
US keyboard (maron2000)
- Added Added sharp-bilinear Direct3D shader (RibShark)
- Pass output dimensions to Direct3D shaders (RibShark)
- Fixed BPB of floppy images made by IMGMAKE command (maron2000)
- Fixed timestamp of volume label changed by LABEL command (maron2000)
- Fixed pathname issues when mounting differencial VHD images (maxpat78)
- Corrected relative/absolute track offset in subchannel data for
CD-ROM images (RibShark).
- Fixed particular dead keys were not working to input characters
with diacritics (maron2000).
- Enabled "Edit and Continue" option for debug builds of Visual Studio
Intel builds (aybe).
- Updated libchdr to latest (treloret).
- Fixed icon in Gnome dock bar (FredBezies).
- add option "[dos] automount drive directories" for Windows builds,
this will mount existing drive directories from C to Y drive (aybe).
- fix off-center and off-screen window after entering the
configuration tool while using TTF output mode (aybe).
- add menu item for centering window "Video/Center window" (aybe).
- Fixed update-version-number script to patch all *.iss files, not
just the specific one it did before, to ensure future releases have
correct version numbers. (joncampbell123).
- Updated Nuked-OPL3 code to nukeykt/Nuked-OPL3@cfedb09 (StevenSYS)
- Updated SDL2 library to 2.30.4 (maron2000)
- Fixed TTF mode didn't change to graphic mode when machine = Hercules
(maron2000)
- Configuration tool: (aybe)
- more Windows 3.1 look'n'feel (themes w/ host dark mode detection)
- enhance main window layout, it is now visible in its entirety
- fix layout issues, off by one in rectangle drawing functions
- fix 'list iterators incompatible' when pressing the Tab key
- properties/help: sorted alphabetically, mouse wheel scrollable
- remove few rendundant labels, adjust names of some others
- retain 'show advanced options' state throughout session
- SVN r4483: Fix compilation in Visual Studio 2008 (Allofich)
- DOSBox Staging: Decouple CMS and OPL emulations (Allofich)
- Fixed reading NEC specific character font data.(nanshiki)
2024.07.01
- 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 640x350
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 640x350
mode when emulating 64KB of RAM. This should fix rendering and display
issues with EGA 640x350 4-color emulation. Also corrected INT 10h
character printing functions to filter the color attribute value for
640x350 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 640x200 2-color mode if machine=ega with
less than 128KB of video ram, or machine=ega200, instead of showing
a garbled 640x350 display. (joncampbell123).
- Fix memory buffer overrun with machine=ega that can occur with
640x350 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 640x200 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 fixes
Windows 95 S3 driver 16-color modes 800x600, 1024x768, 1280x1024.
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 640x480 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)
2024.03.01
- 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).