Release 980329
[wine/multimedia.git] / documentation / status / directdraw
blob04b0e1aa46d1148f0170e80d6637b9542746a1de
1 This file contains information on the current implementation of the DirectDraw
2 API.
4 The DirectDraw API is being used in a lot of current computergames. Its API
5 layer is represented by the functions in the Win32 DLL ddraw.dll and the
6 IDirectDraw* interfaces (that can be created using the API functions). 
8 WINE currently implements a very basic set of the DirectDraw functionality
9 in graphics/ddraw.c. This implementation uses the XFree86-DGA extension 
10 to get very fast access to the graphics card framebuffer and doublebuffering
11 features. It is as fast as the MS equivalent for the stuff that is implemented.
12 Several applications already work, see below.
13 Problems of the implementation using XFree86-DGA:
15         - XFree86 cannot switch resolution nor depth on the fly.
16           This is a problem with X and unavoidable.
17           Current solution is to pop up a MessageBox with an error for 
18           mismatched parameters and advice the user to restart the X server
19           with the specified depth and/or screensize.
20         - The rest of the functionality that has to be implemented will have
21           to be done in software and will be very slow.
22         - This requires WINE to be run as root user so XF86DGA can mmap the
23           framebuffer into the addressspace of the process.
24         - Blocks all other X windowed applications.
26 TODO:
27         - Add more implementations of the DirectDraw API.
28           Primary candidate is a raw Xlib implementation (one with/one without
29           XShm extension).
30           An additional layer (basically a HAL) will be required to decide on 
31           case-by-case basis which implementation to use.
33 Status:
34    - Diablo [640x480x8]:
35      The movies play with speed comparable to the MS DDRAW one.
36      The game doesn't work, it somehow tries to write into 2 lines _BEFORE_
37      the start of the surface. I have tried to investigate this, but it is
38      in code that is automatically generated.
39   
40    - WingCommander 4 / Win95 Patch [640x480x8]:
41      The intromovie plays, in 8 bit mode (to reconfigure wc4, run wine
42      "wc4w.exe -I"). The 16bit mode looks broken on Mystique, but I think
43      this is due to the unusual colorweight (565 rgb) of the Mystique in 16bit
44      mode. [Specifying it in DDPIXELFORMAT didn't help.]
46      Requires to be run in 640x480xdepth mode (doesn't seem to heed
47      DDSURFACEDESC.lPitch).
48      You can even fly the first mission with Maniac (ignore the weird sounds),
49      but it crashes as soon as you arrive at Blue Point Station...
50   
51    - Monkey Island 3 [640x480x8]:
52      Goes to the easy/hard selection screen, then hangs due to multithreaded
53      windows-messagehandling problems.
54    
55    - DiscWorld 2 [640x480x8]:
56      [Crashes with 'cli' in WINE released version. Yes. Privileged instructions
57       in 32bit code. Will they ever learn...]
58      Plays through nearly all intro movies. Sound and animation skip a lot of
59      stuff (possible DirectSound asynchronization problem).
60    
61    - XvT [640x480x16]:
62      Shows the splash screen, then fails with missing Joystick. I have
63      investigated but failed to find a reason for this.
64   
65    - Tomb Raider 2 Demo (using 8 bit renderer) [640x480x8]:
66      I have played nearly all of the DEMO level using Keyboard Controls.
67      Sound is a bit weird. Keyboard/Mouse handling too due to incomplete
68      DirectInput.
69   
70    - WingCommander Prophecy Demo (using software renderer) [640x480x16]:
71      [Crashes with an invalid opcode (outb, probably to test for 3dFX) in the
72       WINE release version.]
73      Plays trailer, hangs in selection screen (no keyboard input, DirectInput
74      problem).