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).