forked from joncampbell123/dosbox-x
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
8907 lines (8874 loc) · 463 KB
/
CHANGELOG
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:
- 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 (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 "*.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 issue that IMGSWAP command did not work for CD drives. (maron2000)
- Fixed loaded language file unexpectedly changes on launch. (maron2000)
- 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)
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).
- 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 its 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 this
tweakmode 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/joncampbell123/dosbox-x/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 (AranVink)
- Fix floppy images lock bug (maxpat78)
- Fix type of return value at bool MountFat() (jg1uaa)
- Fix VHD geometry bugs by performing MBR analysis (maxpat78)
- Change maximum number of joystick buttons allowed by the mapper (mattcaron)
- Enable Win9x support on a Pentium3 PC (crazii)
- Add PC98 image extensions in file open dialogs (maron2000)
- Fix input in configuration tool (SDL2) (maron2000)
- Reduce warnings by replacing sOffset (use offsetof) (jg1uaa)
- Fix LFN functions (nanshiki, SmileTheory)
Fixed a bug in which 2 extra bytes were copied to the buffer (ax=714eh,714fh).
Fixed wrong value of date/time etc. in file information (ax=714eh,714fh,71a6h).
Fixed date/time conversion to be correct (ax=71a7h)
Report correct file size on win32 when file is open (ax=71a6h).
- Fix C++11 uncompliant codes (midi_alsa.h, gamelink.cpp) (maron2000)
- Consider function key display in MORE command (PC-98) (maron2000)
- Add support for J-3100 video mode 75h (nanshiki)
- Reflect drawing status bit of GDC status I/O port (PC-98) (nanshiki)
- Re-enable top line dimming when focus is lost in fullscreen (TTF mode) (maron2000)
- Fix PC98 mouse counter value range to unsigned value (0-255) (nanshiki)
- Added function for int DCh cl=10h ah=0Ah to 0Eh (nanshiki)
- Added escape sequences (ESC[0J ESC[1J ESC[0K ESC[1K ESC[2K ESC[nL) (nanshiki)
- Fixed behavior of Kanji character output at the right edge of screen (nanshiki)
- Fixed Media ID was being written to an incorrect location in DPB (nanshiki)
- Refined version info (maron2000)
- Added PC-98 NEC mouse functions in INT33h (nanshiki)
- Bump Nuked-OPL3 code to commit 730f8c2 (13 Nov. 2023) (maron2000)
- Enabled OPL pass-through code (oplmode=hardware)(dbjh)
- Fixed crash on startup due to SDLnet library linked externally (macOS) (maron2000)
- Changed PC-98 floppy boot behavior when Drive 2 is mounted before Drive 1(maron2000)
- Added Human68k ver.1.0&2.0 floppy disk support (maron2000)
- Fixed attribute copy behavior of FreeDOS XCOPY.exe to match genuine DOS (maron2000)
- Added Russian translation (Lartenik)
- Fixed COPY/XCOPY command fails to recognize 2GB+ free disk space (maron2000)
- Enable FONTX2 files in PC-98 mode (nanshiki)
- Fix codepage switching when loading lang files (maron2000)
- Add missing quotation marks in vcxproj (bredbored)
- Fixed BPB detection of PC-98 floppies (maron2000)
- Changed sequence to boot with drive numbers when booting from image (maron2000)
- Added force JIS (JP106) keyboard layout option in PC-98 mode (maron2000)
- PC-98: Enable mounting partitions with non-genuine IPL entry names (maron2000)
- Added support for XDF disk format (maron2000)
- Added ESFM emulation (ESFMu v1.2 core) (Kagamiin)
- Added support for ESS "ESFM" sound synthesis (oplemu=esfmu, oplmode=esfm) (Kagamiin)
- Added experimental/WIP support for the ESS ES1688 sblaster type (sbtype=ess1688) (Kagamiin)
- Delete obsolete information regarding "INTRO SPECIAL" option (maron2000)
2023.10.06
- Add "VRD" debugger command to force redraw of the VGA screen. (joncampbell123)
- Add VGA debug set commands to force a video start address and another
to clear all debug settings. (joncampbell123)
- 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. (joncampbell123)
- IMGMAKE: Fix bug where if -bat was specified, the generated .bat
file would attempt to mount the .bat file, not the disk image. (joncampbell123)
- IMGMAKE: If -nofs and -bat was specified, the generated .bat file
will refer to "IMGMAKE 2" instead of "IMGMAKE C" (joncampbell123)
- 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. (joncampbell123)
- 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. (joncampbell123)
- 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. (joncampbell123)
- IMGMOUNT: Allow *: as a drive letter to mean automatically pick a
drive letter. (joncampbell123)
- Fix debugger to use toupper(), but only for ASCII range ncurses
keycodes. (joncampbell123)
- 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. (joncampbell123)
- 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).
2023.09.01
- 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)
2023.05.01
- IMGMAKE will choose LBA partition types for 2GB or larger disk
images, but the user can also use -chs and -lba options to override
that choice. The CHS or LBA partition types do matter because it
affects which version of INT 13h is used by Windows 98/ME to boot up
and, if drive C: is in compatibility mode, at all times. (joncampbell123)
- PC-98 256-color mode will also trigger the auto mode of "render on
demand" for performance reasons because per-scanline raster effects
are very unlikely in that case, as will MDA and Hercules machine
types. (joncampbell123)
- When the DOS IDLE API is enabled (by default), limit STI+HLT to
occur on INT 28h only once after any call to read the CON device
or call to BIOS INT 16h to read the keyboard. This fixes stalls
and sluggish input problems with programs that like to call INT 28h
often like the Pacific C compiler PPD IDE interface. (joncampbell123).
- Hercules InColor machine type: Fixed attribute and RAMFONT handling
of 48K RAMFONT mode and added planar text rendering. (joncampbell123).
- Write BIOS data area fields for number of rows, char height, etc.
for MCGA machine type in addition to EGA/VGA machine types because
IBM technical references suggest it's there for MCGA as well.
This also resolves an issue where with the MCGA machine type, INT 10h
failed to print any text to screen whatsoever. (joncampbell123).
- Render on demand (Staging calls it "lazy rendering") now defaults
to "auto" and allows an "auto" setting. The auto setting will
turn it off for standard VGA modes and will turn it on for SVGA
modes where per scanline raster effects are very unlikely to
occur. This may provide a performance boost for DOS games in SVGA
modes and the Windows desktop (joncampbell123).
- CGA 320x200 4-color mode is now rendered using the M_EGA render
code for EGA/VGA machine types to better reflect real hardware.
(joncampbell123).
- Fix bug where setting doublescan=false for anything other than
the VGA machine type would break CGA graphics modes.
(joncampbell123).
- Fix video debug overlay calculations of source video mode for
CGA graphics modes. (joncampbell123).
- CGA 640x200 2-color mode and MCGA 640x480 2-color mode are no
longer rendered as M_CGA2 for EGA/VGA machine types. The reason
is that at the hardware level they are really just IBM standard
tweaked versions of the EGA/VGA 16-color modes with additional
bits for the interleave emulation and can be properly emulated
with the M_EGA renderer. M_CGA2 is still used for the CGA and
MCGA machine types for those modes. The DCGA DOS/V mode has been
carefully made into its own render mode instead of part of the
M_CGA2 case. (joncampbell123).
- Fixed refcount -1 error and abort when multiple floppies are
attached to a floppy drive and the "Swap floppy" mapper shortcut
is used at least once (joncampbell123).
- Hercules palette selection now provides a "dark gray" color
mapping to match the green, amber, or gray palette selection of
the user (joncampbell123)
- Fix Hercules vs MDA attribute handling of "dark gray" background
color when hardware blink is disabled. (joncampbell123)
- Added RAMFONT emulation to Hercules Plus machine type, fixed code
to allow Hercules Plus text mode to draw farther than the first 4KB
of RAM if RAMFONT enabled. (joncampbell123)
- DOS kernel: Fix programming mistake that allocated perhaps a bit
too much DOS kernel memory for the "List of Lists" info block.
Fix the sizes of the info block and other structures to make sure
specific kernel structures are placed at fixed addresses because
later Microsoft software for MS-DOS checks those values.
(joncampbell123)
- Serial port: Add multiplier: setting as requested to enable
faster than 115200 baud rates. (joncampbell123)
- Fix mistakes in CPUID emulation that threw a #UD exception for
specific cases where EAX was not recognized by particular CPU
types. (joncampbell123)
- Fix RTC clock emulation to correctly signal IRQ8 interrupt for
both periodic tick and update-ended events. Prior to this fix,
only periodic tick events were reported even if the bit was set
to enable update-ended. (joncampbell123)
- Fix serial and AUX PS/2 mouse emulation to not send relative
motion unless mouse captured, to make it consistent with the
BIOS PS/2 mouse emulation (joncampbell123)
- FAT driver: Major performance boost is possible by eliminating
unnecessary code that re-reads the entire directory when looking
up or changing one particular directory entry. (joncampbell123).
- CMOS registers: Fix code to allow getting and setting time,
fix year vs century registers to work properly. (joncampbell123).
- BIOS INT 1Ah: Fix functions to get and set time and date
instead of faking on read and ignoring set. Use the CMOS
registers. (joncampbell123).
- DOS INT 21h: Fix date and time functions to call the BIOS for
time instead of trying to fake it only at the DOS level. This
includes allowing INT 21h to change the date/time using the
BIOS. (joncampbell123).
- DOS shell: Make TIME actually use INT 21h to set time instead of
directly modifying the BIOS timer tick count in the BDA.
(joncampbell123).
- Increased PIC event queue size, there are corner cases especially
with Windows XP that can occasionally overrun the queue.
(joncampbell123).
- Updated IBM PC keyboard emulation to correctly encode Pause and
Print Screen key scan codes when shift, alt, and ctrl are held
down. This makes it possible to type "Alt+SysRq" for programs
that expect it, including SoftICE. (joncampbell123).
- NE2000 emulation: Looking at recent Bochs source code, ne2k.cc
appears to have downgraded the "IMR write, reserved bit set"
message from BX_PANIC to BX_ERROR. Update the same in DOSBox-X
so that Windows 2000 no longer crashes the emulator with E_Exit()
when probing the NE2000 hardware. (joncampbell123).
- INT 33h mouse services: Add "Get General Driver Information"
function for Microsoft Word 5.5 (joncampbell123).
- INT 33h mouse services: Render cursorType == 2 (graphics cursor)
as if text cursorType == 0 if the current mode is text mode.
Microsoft Word 5.5 always calls functions to set text AND graphics
cursor regardless of whether the actual mode is graphics or not.
This fix allows the cursor to show correctly as the block cursor
it wanted in text mode instead of a moving hardware blinking cursor.
(joncampbell123).
- Fixed S3 XGA emulation bitmap rendering to correctly handle
8/16/32-bit pixel transfer I/O and update comments to reflect
the 32-bit byte aligned transfer mode of the Trio chipset.
This fixes incorrectly drawn radio buttons and 16x16 icons
in Windows NT 3.5, Windows NT 3.51, Windows NT 4.0, and
Windows 2000. (joncampbell123).
- Fixed keyboard emulation so that upon the keyboard reset command
FFh, the keyboard does the reset process and THEN sends back
bytes 0xAA (power on/reset OK) and 0x00 (interface self-test).
This resolves the issue where Windows NT 3.1 pauses at startup and
does not resume booting until you press a key on the keyboard.
This also resolves the issue where Windows NT 3.5 keyboard and
mouse input stops working completely if you press a key on the
keyboard. (joncampbell123).
- Add Hercules InColor emulation of MDA vs CGA attribute select,
and make sure it obeys the blink setting (joncampbell123)
- Change Hercules/MDA text output to render 9 pixels per char
if the char9 setting is on, to match the 9x14 character cell
that those cards emit to the screen. The user can always turn
it back off to get the 8x14 text they're probably accustomed
to in other DOSBox forks. (joncampbell123)
- Render output fixed to never double pixels vertically on render
if the machine type is emulating VGA and the Doublescan option
is enabled, in order to help resolve SVGA text mode issues
reported by ThomasKjoernes (joncampbell123)
- Add InColor CRTC registers and add code to emulate the planar
bitplane operations. Microsoft Flight Simulator 3.0 renders
correctly now. (joncampbell123)
- Update Hercules InColor code to render the same 64-color EGA
palette as machine=ega. (joncampbell123)
- Correct machine=hercules text rendering flaw that prevented
the bright attribute (bit 3/7) from working, making all text
output the same normal brightness. (joncampbell123)
- Add expected data structures and signatures to VGA ROM BIOS at
C000:0000 if machine type selects ATI emulation (joncampbell123).
- Add ATI machine types, which at this time, is just a placeholder
for development to go in that direction over time for those
machine types. (joncampbell123)
- Added "machine=hercules_plus" and "machine=hercules_incolor" as
stubs to be developed on going forward to emulate the HGC+ and
InColor cards. Note that InColor will require the MCH_HERC case
to generate 64-color EGA-like output going forward even if the
documented startup state still emulates the MDA-like monochrome
attributes. (joncampbell123)
- SDL2: Stop checking for compiler flags that make it an error to
declare variables after statements in a function or any other
terrible sins that would offend old C89 standard compilers.
DOSBox-X is never going to compile for a C standard that old.
Furthermore this check is preventing compilation on ARM-based
Macbooks for some reason, though not Intel based Macbooks.
2023.03.31
- "mount -t overlay" will now print a message on the console to
let you know if the act of mounting the overlay replaced a
previous overlay mount. Overlay mounts cannot be stacked in
DOSBox-X (and probably most DOSBox forks that support overlays)
and the user should understand that. (joncampbell123).
- Remove kludges from DOS path resolution to handle drive paths
that refer to drive @ (at sign). Note that in ASCII the at sign
is one code below capital "A". Windows 95 FORMAT.COM due to
another issue was asking for "@:\WINBOOT.SYS" and sometimes
causing a segfault in DOS path resolution due to an uninitialized
drive index. The fix for the other issue removes the need for this
kludge. In it's place a message will be logged to your log file if
anything attempts to access files on drive "@:" because it likely
means a failure to determine the drive index properly. (joncampbell123).
- In addition to reporting the "boot drive" via INT 21h AX=3305h, also
write boot drive in the "List of Lists" structure. Windows 95
FORMAT.COM reads the boot drive from the LoL and does not do any
error checking if that value is out of range (such as if it was
never set and the byte value is zero). Failure to set this field
will result in FORMAT.COM attempting to access "@:\WINBOOT.SYS"
and "@:\IO.SYS" and failing. (joncampbell123).
- Add dosbox.conf option to set a fixed RTDSC tick rate to use at
all times during emulation instead of the CPU cycle count
(joncampbell123).
- Fix RDTSC to maintain a monotonic increasing count even if the
CPU cycles count changes, and better handle timestamp writes
through WRMSR (joncampbell123).
- FAT filesystem driver: Instead of searching from cluster 0 every
time a new cluster is to be allocated, keep track of the search
to help reduce slowdowns on fairly large filesystems when many
files are copied onto it (joncampbell123)
- Page Up/Down vs Roll Down/Up was in the wrong order, switch order
to correct it. (joncampbell123)
- Fix 'pc98 force ibm keyboard layout' was always forced to be 'true'
for left & right bracket keys on US keyboards. (maron2000)
- Fix dynamic_nodhfpu FPU stack bugs, the same bugs that once plagued
dynrec. dynamic_x86 never seemed to have the same problem because
in reality the DH FPU case was normally used, to hit this bug you
had to use core=dynamic_nodhfpu. Also fix dynamic x86 DH FPU code
never to restore from DH case if the DH FPU code was never enabled,
which periodically caused FPU state to disappear. (joncampbell123).
- Add dosbox.conf option to control the MSCDEX.EXE device name when
emulating a CD-ROM drive (joncampbell123).
- Wengier coded this nice text-only DOSBox-X logo for the TTF output.
Fix border alignment issues and make the text logo the default and
only option for MDA and Hercules machine types at boot.
(joncampbell123).
- Add -print-ticks command line option, which enables code to print
both SDL_GetTicks() and emulator time once a second to the console
and the log file. This may help in tracking down bugs related to
long term laptop suspend or suspension of the process in general.
(joncampbell123).
- PC-98: Ignore INT 18h AH=0Ch (enable text layer) in 256-color mode.
Real hardware doesn't seem to let you turn on the text layer in
256-color mode, though I am not certain if this is a restriction
imposed by the BIOS or by the hardware. This fixes possible cases
where Sim City 2000 in 256-color mode reveals garbage text data at
the bottom of the screen if it is there when it starts. This doesn't
fix the issue where Sim City 2000 cannot set 640x480 256-color mode
properly unless your display is already set to 31Khz hsync because that
is evidently a bug in the game, not DOSBox-X. (joncampbell123).
- PC-98 256-color mode: Fix "Active Display Words" value set by INT 18h
to 40, not 80, for graphics layer. This has no apparent effect on
games but it does fix the sometimes erroneous graphics layer width
in the video debug display. Neko Project II source code seems to
indicate the 31KHz hsync mode is programmed that way even if 256-color
mode. This should not break anything since the GDC doesn't let you
read back the "SYNC" reset parameters anyway--this isn't VGA hardware,
after all. (joncampbell123).
- IPX emulation was broken because it set up the virtual file, IRQ
and interrupt handler way too early, which the BIOS startup would
then overwrite with the default BIOS IRQ handler. IPX emulation
should work now, at least multiplayer DOOM. (joncampbell123)
- Added debug menu and dosbox.conf option to show debug information
at the bottom of the screen when enabled. This debug information
reflects the video state at the start of active display. It can be
used to see in real time the state of the palette, display offset,
display stride, and other useful information. It is rendered into
the frame on purpose so that it appears as part of the picture
when you take a screenshot or record a video to AVI or MTS for
later review. (joncampbell123)
- Dynamic core: Fix serious bug in dynrec dynamic core where calls
to handle x86 FPU instructions erroneously passed the entire
FPU status word instead of passing only the FPU stack pointer.
The result of this error was that floating point was erratic,
buggy, and often caused memory corruption in DOSBox-X eventually
leading to a crash. It should now be possible to properly run
DOS games on dynrec based systems, including ARM-based M1 Macbooks,
that use the FPU. (joncampbell123)
- Debugger: When entering debugger interface, force dynamic core
to flush it's state so that the debugger can show the correct
state to the user when they use the "FPU" command to see it.
(joncampbell123).
- VGA emulation: Automatically ignore odd/even mode if "Chain 4"
mode is enabled in the sequencer (normally enabled only for
256-color mode). Some games accidentally set odd/even mode
in 256-color mode and yet apparently worked just fine on real
hardware. Without this change, such games will display distorted
graphics. It makes logical sense "Chain 4" would take priority
over odd/even mode. Note: If a game uses 256-color unchained mode
AND foolishly enables odd/even mode, then the resulting distorted
graphics are probably accurate to what would happen on real
hardware, but then programmers would have caught their mistake
and fixed it so that is very unlikely to occur. This helps to fix
"Seal: Magic Eye" although some remaining visual artifacts in the
game can only be resolved by setting machine=svga_et4000
(joncampbell123).
- Set usescancodes=true when non-US keyboards are detected
(Windows builds) (maron2000)
- For long double without using x86 FPU, the code still calls the
fstcw instruction and can enable FPU exceptions that crash the
emulator, therefore mask off all exception bits to stop that.
(joncampbell123)
- Added code to mouse emulation to control how often the mouse
reports events through the interrupt. Added dosbox.conf option
to allow the user to force a report rate, which can be used to
force a lower than normal report rate for games that cannot
properly handle higher ones. Allow PS/2 mouse emulation, if
rate not set by user, to control report rate. (joncampbell123).
- Add code to COMMAND.COM to flush keyboard input before running
the command given by the user, and flush again when the command
returns. Added option to dosbox.conf to enable/disable this
function (joncampbell123)
- Fix bug where Tandy mode ignored the "allow more than 640kb"
setting.
- Fix INT13h AH=02 broken conditional branch which prevents
installer of game "Inherit the Earth: Quest for the Orb"
to obtain free space of hard drive (maron2000)
- qcow2 image support: Make image able to be mounted by
drive letters (experimental) (maron2000)
- VHD image support: Make file name check for .vhd extension
to be case insensitive (maron2000)
- VHD image support: Fix auto-detection of geometry (maron2000)
- Sound Blaster: Added code to periodically check the user's
settings regarding recording source selection and listening.
This should allow the user to change those settings on the
fly. (joncampbell123).
- Sound Blaster: Added options to control whether the generated
recording source is audible through the speakers, and what
generated audio to send to the client. Options are: silence,
hiss, and a 1KHz test tone. (joncampbell123).
- Sound Blaster: If the DSP is recording rather than playing,
then send audio to the guest at the recording sample rate
containing some form of generated audio. Default is silence.
This ALSO satisfies the Creative driver CTSB16.SYS when it
does the DMA test at startup. (joncampbell123).
- Sound Blaster: Fixed code to properly recognize when the
guest wants to record audio, including through SB16
commands. Prior to this fix, all SB16 Bxh-Cxh commands
were handled as if playback even if the command would
instead trigger recording. (joncampbell123).
- Sound Blaster: Add missing update of "last DMA callback"
timestamp that is needed for when the guest pauses DMA
during playback or recording. (joncampbell123).
- VHD image support: If the VHD image is not a fixed type,
say so in the log (previously it said nothing) and say
what kind of image was mounted (joncampbell123).
- Added INT 13h AH=44h Extended Verify to satisfy any disk
utilities that might use it. The function doesn't really
do anything except return success (joncampbell123).
- Fix CPU stack management to use CPU mode agnostic method
using mem_readw instead of real_readw. However the real
mode version is used if real or virtual 8086 mode because
of comments in an older commit that mention UNLZEXE that
depends on real mode stack pointer rollover. This fixes
a bug related to protected mode APM (Advanced Power
Management) emulation that prevented the Linux kernel
from booting (joncampbell123).
- Add support for INT 2F function 1680h "Idle" and DOS
idle (INT 28h), add code to reduce DOSBox-X CPU load
during emulation when the idle function is called,
add dosbox.conf enable/disable (default enable) to
control this behavior (Github user "finalpatch")
- Graphical fixes and dialog support for Haiku OS (amol-)
- Allow jp106 keyboard layout in DOS/V mode, automatically
choose when keyboard layout is auto on Windows with
Japanese keyboard, fix jp106 input in SDL1 builds running
on Japanese Windows with English keyboard (nanshiki)
- Sync dh fpu state with normal fpu when dynamic core
calls normal core to handle self modifying code. Add
additional code to other cases. (Github user "finalpatch")
- Fix incorrect handling of upper 4 bits of character attributes
in video mode 72h in DOS/V mode (nanshiki)
- Fix BIOS signature at 0xFFFFF to reflect actual value
of Tandy machines so "Ninja" works correctly in
Tandy mode (rderooy)
See also: [https://www.vogons.org/viewtopic.php?f=32&t=92129]
- Change default mixer rate to 48KHz instead of the
long standard 44.1KHz. Most modern sound cards on
modern OSes render at 48KHz anyway and resample
either in hardware or software and most configurations
render at 48KHz. Perhaps somewhat improved audio quality
could be had by rendering at what most sound cards are
doing these days anyway. As usual, audiophiles are free
to set the mixer rate to 96KHz if supported by their
sound card. (joncampbell123)
- Fix PIT 0 timer interrupt handling not to attempt
periodic event and error adjustment unless the game
is using periodic modes 2 or 3. This fixes PIT timing
bug and possible emulator hang when exiting games
like "Days of Thunder" that leave PIT 0 in mode 0 or
1 on exit for some reason. (joncampbell123)
- Fix Sound Blaster DMA rate limits to better reflect
actual hardware. SB16 limits to 45454Hz just as
Pro and earlier do. These limits were added before
the proper measurements were coded and tested on
real hardware. (joncampbell123)
- Fix S3 cursor emulation to support both X11 and
Windows hardware mouse cursor modes available
on S3 Virge, Trio, and possibly other cards
(John Tsiombikas)
- Add EGA/VGA emulation code to keep track at runtime
whether planar features are in use. If they are not,
then handle EGA/VGA video memory access using a
simplified version for a bit of a performance boost
in response to complaints about poor VGA emulation
performance. (joncampbell123)
- VGA palette DAC update: Instead of recalculating
the palette map every time a color is written through
port 3C9h, set a flag. Defer palette map update to
when the next scan line is rendered, in order to
improve performance. (joncampbell123)
- Add option to enable or disable the "memory I/O
optimization" option, meaning the code that was
added to assign simplified VGA memory I/O handling
when the DOS game is not using any bit planar raster
op and more complicated features of the EGA/VGA
hardware. (joncampbell123)
- Added VGA render on demand mode to VGA emulation.
When enabled, VGA emulation does not render scanlines
until vertical retrace or when certain registers are
written that change the display (attribute controller,
VGA palette, etc.). It is added to dosbox.conf as
"scanline render on demand" and is false by default
because it can provide a performance boost for DOS games
but it also tends to break timing-dependent Demoscene
effects. The idea is that some emulator performance
improvement may be possible by not interrupting the
CPU loop per scanline for the same reason that DOSBox
SVN has traditionally only rendered the VGA display
in quarters instead of per scanline. (joncampbell123).
- Remove experimental "alt VGA" rendering code. It was
never completed and it is probably starting to
bitrot (joncampbell123).
- Fix EGA/VGA version of CGA 4-color graphics renderer
code to consider all four bitplanes when combining
each pair into a 2-bit value. When bitplanes 2+3 are
enabled and writeable, the 4-color mode becomes a
sort of 2-plane 2 bits per pixel 16-color mode. Fix
for machine=ega and "Leather Goddess of Phobos 2",
a game that sets up EGA 640x200 16-color mode then
suddenly switches on the 2bpp CGA mode as a way to
do 16-color dithered graphics. (joncampbell123).
- Fix installers for Dynamix games not working.
(Allofich & halcyon00)
- Fix crash related to swapping between disk
images. (Allofich)
- SVN r4482: Correct CMS sound pitch. (Allofich)
2022.12.26
- Allow more than 640KB of conventional memory,
regardless of "allow more than 640kb" option, for
Tandy machine type. The setting is capped to 768KB
to reflect Tandy systems with that upgrade, which
is said to allow a full 640KB for DOS and 128KB for
video RAM without any conflict from the MCB chain.
Adjust Tandy video emulation for 768KB case. This
fixes "Might and Magic III Isles of Terra" crashes
in Tandy mode and Tandy graphics because the game
does not correctly handle the memory configuration
when less RAM is involved. (joncampbell123).
- Fix code page CPI/CPX loader to allocate 128KB of
memory instead of 84KB. The code allocates a 64KB
stack for the executable code within. The 84KB
allocation permitted the initial stack pointer to
exist beyond available conventional memory if
conventional memory size was below about 156KB and
cause a crash. This is a quick fix, a long term fix
would be to instead set the initial stack pointer
to some offset below 0xFFFE based on available memory,
just as the .COM executable loader was modified to do
some time back to enable proper execution when
memsize < 64KB. (joncampbell123)
- Do not load country/font information at startup
if the code page to load is the same as the default
code page. (joncampbell123)
- Fix Tab/Shift+Tab in Configuration GUI regarding
setting text fields that have a ... button to select
from an enumeration. Those buttons are no longer a
trap for tab enumeration. (joncampbell123)
- Fix Mac OS SDL1 keyboard support code to properly
fill in unicode character values in relation to
IME checks. This fixes a problem where it was
impossible to type anything in the configuration GUI
in SDL1 Mac OS builds. (joncampbell123)
- Mark VBE mode 0x212 as "do not list" so that it does
not appear in normal VBE mode enumeration, while
keeping it valid for the Windows 3.1 driver which
assumes the mode is there at that number without
enumeration. By not listing the mode, drivers like
VBEMP and DOS application code will not attempt to
use it. There is already another mode number for
640x480 24bpp anyway. (joncampbell123)
- Fix VBE mode 0x212, which is 640x480 24bpp packed
mode but with a per scanline stride of 2048 bytes
per pixel set aside for the Windows 3.1 driver and
the "640x480 (1Meg) 16 million colors" setting,
so that the VBE "Get Mode Info" call reflects the
proper per-scanline stride instead of the ideal one.
This should fix complaints about VBEMP and 640x480
24-bit color mode. Given how minimal the use of the
mode is by the Windows 3.1 driver, the 2048 byte
mode does not permit setting scan line length or
display start i.e. panning is not permitted.
(joncampbell123).
- Fix Pentium Pro emulation to support microcode
related MSRs so that Windows 98 does not crash
on startup when cputype=ppro_slow. (joncampbell123).
- Added SMV debugger command. This is the linear
(virtual) equivalent of the SM "Set Memory"
command. (joncampbell123).
(https://github.com/joncampbell123/dosbox-x/issues/3826)
- Fix debugger help command to list both C / D commands
and the DV/DP commands. (joncampbell123)
- Add VGA FONTDUMP debugger command for those
who might want to take custom fonts in text
mode and do something with them outside the
emulator. "VGA FONTDUMP" followed by a filename
which must have the extension .BIN (for a raw
64KB dump of font RAM) or .BMP (for a formatted
dump as a monochrome bitmap file). (joncampbell123).
- Disabled code to randomly return GDC drawing
status active. The implementation was causing
severe performance issues. The code has not
been removed because it could be optimized and
fixed and could even follow the state of GDC
drawing. (joncampbell123)
- VGA 6-bit DAC mode expand to full 8-bit range,
instead of simple shifting (joncampbell123).
- Fix 8254 PIT emulation (joncampbell123)
- Add dosbox.conf option "cpuid string" to allow
CPUID to return custom ID strings instead of just
"GenuineIntel". Have fun! (joncampbell123)