Skip to content

Video cards (like ATI Mach64GX) are not emulating Command Keen 4 scroll bug #6437

Description

@denilsonsa

Checklist

  • I have searched the issue tracker and was unable to find an open or closed issue matching what I'm seeing.
  • I have verified that the issue is happening in the latest nightly build, or the latest commit, if building from source.

What happened?

Introduction and context

I've recently learned that several old 2D DOS games have trouble in certain video cards. These seem to be related to scrolling in EGA or VGA mode, or something like that. (Even though I lived through that era of computing, and I am a developer myself, I'm not well-versed in the subtle differences between all the graphics modes from that time. So, please excuse any inaccuracies.)

I particular, I found these:

I also recently installed FreeDOS on a real Igel Thin Client machine, running Via Eden CPU and Via chipset (with on-board Via graphics). I can confirm the following games seem to run bad on this hardware, due to graphics issues (although the visual glitches are different than the glitches from the video above):

The same machine can run just fine many other games, such as Doom, Prince of Persia, and Super Worms. Thus, I assume the glitches are related to scrolling.

Actual 86Box issue

After that long introduction, I decided to test if 86Box can emulate the graphical issues.

I created a new VM with a ATI Mach64GX video card, which is listed in https://gona.mactar.hu/DOS_TESTS/ as buggy. Then I installed FreeDOS on the VM, and copied over the following games:

Then I tried running them inside the VM.

What happened

With the ATI Mach64GX video card, everything worked flawlessly.

With a Tseng Labs ET4000/w32p (Diamond Stealth32), the scrolling was indeed buggy, and those games had graphical glitches.

What I expected

I don't have any real hardware from that era to do tests, so my expectation is based on the info I collected online (mostly the first two links).

I expected the emulated ATI Mach64GX video card to be buggy.

I also expected the buggy behavior (both on the ATI card and on the Tseng Labs card) to be more glitchy. I expected it to show garbage (or older data), instead of a plain black area. Although, having never seen it in real hardware, I don't really know the exact hardware behavior.

Configuration file

[General]
emu_build_num = 8000
host_cpu = Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz
uuid = e9484635-85ff-5ebf-8a65-a3bf666f66ba
vid_renderer = qt_software

[Machine]
cpu_family = celeron_mendocino
cpu_multi = 3
cpu_speed = 200000000
cpu_use_dynarec = 1
fpu_type = internal
machine = cuv4xls
mem_size = 65536

[Video]
gfxcard = mach64gx_pci

[Input devices]
keyboard_type = keyboard_at
mouse_type = none

[Network]
net_01_link = 0
net_02_link = 0
net_03_link = 0
net_04_link = 0

[Ports (COM & LPT)]
lpt1_enabled = 0
serial2_enabled = 0

[Storage controllers]
fdc = none

[Hard disks]
hdd_01_fn = /home/denilson/DELETE_ME.vhd
hdd_01_ide_channel = 0:0
hdd_01_parameters = 63, 13, 1002, 0, ide
hdd_01_speed = ramdisk
hdd_01_vhd_blocksize = 4096

[Floppy and CD-ROM drives]
cdrom_01_ide_channel = 1:0
cdrom_01_image_history_01 = /foo/bar/FreeDOS/FD14-BonusCD/FD14BNS.iso
cdrom_01_image_history_02 = /foo/bar/FreeDOS/FD14-LiveCD/FD14LIVE.iso
cdrom_01_image_path = /foo/bar/dosgames
cdrom_01_parameters = 1, atapi
fdd_01_type = 35_2hd
fdd_02_type = none

Operating system

Manjaro Linux, x86_64, KDE

86Box version

v5.2 [build 8000] [3b43627] [x86_64, old dynarec]

Build architecture

Linux - x64 (64-bit)

Build type

  • New recompiler
  • Debug build

Additional context

I only tested two video cards (ATI Mach64GX, Tseng Labs ET4000/w32p), but I know 86box emulates many more video cards. I'd suggest reviewing each one and observing if the buggy behavior should be emulated in each of them.

Also, sorry for the loooong introduction. I wanted to give enough context with enough links for further reference.

Also, I have to admit I have NOT tested the latest nightly build. Sorry.

Although I believe the behavior I reported is a bug, I'm not 100% sure. Please enlighten me in case it is not a bug and is working as expected.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions