Skip to content

DirectX 6/7 games (NBA Live 2000, MM2, System Shock 2) black-screen at D3D present on VMware vGPU9 #193

Description

@gilchn52

TESTING ENVIRONMENT

  • Host: Windows 10, NVIDIA GPU
  • Hypervisor: VMware Workstation Player 17.0.0 (build-20800274)
  • Guest: Windows 98 SE, patched with patcher9x
  • VM config: guestOS = "win2000Serv" (handshake to expose SVGA 3D), virtualHW.version = 20, 256 MB graphics memory, 3D acceleration enabled
  • SoftGPU version: [v0.8.2025.53-preview]
  • GLChecker renderer: SVGA3D; build: RELEASE (hardware acceleration confirmed working)
  • OpenGL: GL 4.1 Compatibility, Mesa 9x 23.1.9.138 - confirmed working
  • vmhal9x.dll in C:\WINDOWS\SYSTEM: [yes]

WHAT WORKS (for contrast - proves the stack is healthy):

  • OpenGL games: Soldier of Fortune (after MESA_EXTENSION_MAX_YEAR=2000 fix), Quake III - full hardware acceleration
  • Glide to OpenGlide games: NBA Live 2000, NHL 2000 (via Thrash Driver=voodoo2) - working

WHAT FAILS: DirectX 6/7 (DirectDraw + immediate-mode D3D) games, detailed below.

SUMMARY
Multiple DirectX 6/7 games initialize their D3D device, load a full scene/level, then produce a black screen (no sound, game logic appears stalled) at the point of the first fullscreen present/flip. OpenGL and Glide-to-OpenGlide paths work perfectly on the same setup, so this is specific to the DirectDraw/D3D present path.

AFFECTED GAMES (all reproduce identically):

  • Midtown Madness 2 (DX7) - loads, then black at present
  • System Shock 2 / Dark Engine, DirectX 6 renderer (D3D-only engine) - black in gameplay
  • NBA Live 2000 - progressed further with a renderer-DLL swap (dx7z.dll from NBA Live 2001 renamed to dx6z.dll), reaching a full loaded match, then black at present - same present-path failure

STEPS TO REPRODUCE

  1. Install a DX6/7 game (e.g. Midtown Madness 2) in the Win98 guest
  2. Select Direct3D / hardware renderer
  3. Set 640x480, launch
  4. Game loads fully, then black screen at present; no audio; requires kill

WHAT WAS TRIED (all with no change to the black-screen result):

  • ddraw="system" (native DirectDraw HAL) per-game under HKLM\Software\vmdisp9x\apps\exe<exe>
  • Desktop colour depth 16-bit and 32-bit
  • game_screen_depth 16 and 32 (per-game where applicable)
  • 640x480 resolution (matched desktop and game)
  • STOptions=1 (16bpp screen-target acceleration flag) under vmdisp9x\svga
  • hal\palette=1, hal\readback=1 per-game
  • DDSwitcher / D8Switcher set to "system" and "wine"
  • Framebuffer clamp lifted via guestOS=win2000Serv (confirmed: gfbSize rose from 16 MB to 128 MB initial / 256 MB max in vmware.log - so VRAM is NOT the limiter; games still black after the clamp was lifted)

EXPECTED: DX6/7 D3D games present to screen as they do on real period hardware.
ACTUAL: Full load, then black at present, no sound.

I'm happy to test builds against this exact game set (NBA Live 2000, Midtown Madness 2, System Shock 2, and others) and report back - reproducible DX6/7 cases on VMware Player 17 + Win98 SE with SVGA3D confirmed working. Offered in support of the native DirectDraw/DirectX HAL milestone.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions