Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
fb019223
Commit
fb019223
authored
Feb 14, 1999
by
Marcus Meissner
Committed by
Alexandre Julliard
Feb 14, 1999
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Some ddraw/d3d bugfixes, updated Diablo/WC4 ddraw status.
parent
4a1dbaf6
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
38 additions
and
30 deletions
+38
-30
directdraw
documentation/status/directdraw
+20
-18
d3dviewport.c
graphics/d3dviewport.c
+2
-2
ddraw.c
graphics/ddraw.c
+9
-0
d3d.h
include/d3d.h
+6
-9
dplay.c
multimedia/dplay.c
+1
-1
No files found.
documentation/status/directdraw
View file @
fb019223
...
...
@@ -6,17 +6,20 @@ layer is represented by the functions in the Win32 DLL ddraw.dll and the
IDirectDraw* interfaces (that can be created using the API functions).
WINE currently implements a very basic set of the DirectDraw functionality
in graphics/ddraw.c. This implementation uses the XFree86-DGA extension
in graphics/ddraw.c. This implementation uses
either
the XFree86-DGA extension
to get very fast access to the graphics card framebuffer and doublebuffering
features. It is as fast as the MS equivalent for the stuff that is implemented.
features or Xlib, which is slower.
The implementation using XFree86-DGA is as fast as the MS equivalent for the
stuff that is implemented.
Several applications already work, see below.
Problems of the implementation using XFree86-DGA:
- XFree86 cannot switch
resolution nor
depth on the fly.
- XFree86 cannot switch depth on the fly.
This is a problem with X and unavoidable.
Current solution is to pop up a MessageBox with an error for
mismatched parameters and advice the user to restart the X server
with the specified depth
and/or screensize
.
with the specified depth.
- The rest of the functionality that has to be implemented will have
to be done in software and will be very slow.
- This requires WINE to be run as root user so XF86DGA can mmap the
...
...
@@ -25,10 +28,7 @@ Problems of the implementation using XFree86-DGA:
Status:
- Diablo [640x480x8]:
The movies play with speed comparable to the MS DDRAW one.
The game doesn't work, it somehow tries to write into 2 lines _BEFORE_
the start of the surface. I have tried to investigate this, but it is
in code that is automatically generated.
No longer works. Unclear why. [WINE-990131, Marcus Meissner]
- WingCommander 4 / Win95 Patch [640x480x8]:
The intromovie plays, in 8 bit mode (to reconfigure wc4, run wine
...
...
@@ -36,23 +36,25 @@ Status:
this is due to the unusual colorweight (565 rgb) of the Mystique in 16bit
mode. [Specifying it in DDPIXELFORMAT didn't help.]
Requires to be run in 640x480xdepth mode (doesn't seem to heed
DDSURFACEDESC.lPitch).
You can even fly the first mission with Maniac (ignore the weird sounds),
but it crashes as soon as you arrive at Blue Point Station...
Keyboard input does not work. This seems to be a problem with the
cooperative window and USER input handling in general.
-> Unable to test Gameplay.
The display is slower as before. Reason is unknown, but I suspect the
communication between winserver,dsoundmixerthread,mainthread takes
up too much time.
[WINE-990131, Marcus Meissner]
- Monkey Island 3 [640x480x8]:
WINE-CVS-981116:
WINE-CVS-981116:
Works, using DGA and Xlib. (Mousecontrol is a bit off in windowed mode.)
- DiscWorld 2 [640x480x8]:
Plays through nearly all intro movies. Sound and animation skip a lot of
stuff (possible DirectSound asynchronization problem).
- XvT [640x480x16]:
Shows the splash screen, then fails with missing Joystick. I have
investigated but failed to find a reason for this.
- Tomb Raider 2 Demo (using 8 bit renderer) [640x480x8]:
I have played nearly all of the DEMO level using Keyboard Controls.
Sound is a bit weird. Keyboard/Mouse handling too due to incomplete
...
...
graphics/d3dviewport.c
View file @
fb019223
...
...
@@ -194,7 +194,7 @@ static HRESULT WINAPI IDirect3DViewport2_SetBackground(LPDIRECT3DVIEWPORT2 this,
static
HRESULT
WINAPI
IDirect3DViewport2_GetBackground
(
LPDIRECT3DVIEWPORT2
this
,
LPD3DMATERIALHANDLE
lphMat
,
LPBOOL
lpValid
)
LPBOOL
32
lpValid
)
{
FIXME
(
ddraw
,
"(%p)->(%p,%p): stub
\n
"
,
this
,
lphMat
,
lpValid
);
...
...
@@ -211,7 +211,7 @@ static HRESULT WINAPI IDirect3DViewport2_SetBackgroundDepth(LPDIRECT3DVIEWPORT2
static
HRESULT
WINAPI
IDirect3DViewport2_GetBackgroundDepth
(
LPDIRECT3DVIEWPORT2
this
,
LPDIRECTDRAWSURFACE
*
lplpDDSurface
,
LPBOOL
lpValid
)
LPBOOL
32
lpValid
)
{
FIXME
(
ddraw
,
"(%p)->(%p,%p): stub
\n
"
,
this
,
lplpDDSurface
,
lpValid
);
...
...
graphics/ddraw.c
View file @
fb019223
...
...
@@ -402,6 +402,15 @@ static int _getpixelformat(LPDIRECTDRAW2 ddraw,LPDDPIXELFORMAT pf) {
pf
->
xy
.
dwRGBAlphaBitMask
=
0
;
return
0
;
}
if
(
ddraw
->
d
.
depth
==
24
)
{
pf
->
dwFlags
=
DDPF_RGB
;
pf
->
x
.
dwRGBBitCount
=
24
;
pf
->
y
.
dwRBitMask
=
vi
[
0
].
red_mask
;
pf
->
z
.
dwGBitMask
=
vi
[
0
].
green_mask
;
pf
->
xx
.
dwBBitMask
=
vi
[
0
].
blue_mask
;
pf
->
xy
.
dwRGBAlphaBitMask
=
0
;
return
0
;
}
FIXME
(
ddraw
,
"_getpixelformat:unknown depth %ld?
\n
"
,
ddraw
->
d
.
depth
);
return
DDERR_GENERIC
;
}
...
...
include/d3d.h
View file @
fb019223
...
...
@@ -6,9 +6,6 @@
/* This is needed for GL_LIGHT */
#include "wine_gl.h"
typedef
BOOL32
*
LPBOOL
;
typedef
BOOL32
BOOL
;
DEFINE_GUID
(
IID_IDirect3D
,
0x3BBA0080
,
0x2421
,
0x11CF
,
0xA3
,
0x1A
,
0x00
,
0xAA
,
0x00
,
0xB9
,
0x33
,
0x56
);
DEFINE_GUID
(
IID_IDirect3D2
,
0x6aae1ec1
,
0x662a
,
0x11d0
,
0x88
,
0x9d
,
0x00
,
0xaa
,
0x00
,
0xbb
,
0xb7
,
0x6a
);
...
...
@@ -1109,7 +1106,7 @@ typedef struct _D3DTEXTURELOAD {
typedef
struct
_D3DBRANCH
{
DWORD
dwMask
;
DWORD
dwValue
;
BOOL
bNegate
;
BOOL
32
bNegate
;
DWORD
dwOffset
;
}
D3DBRANCH
,
*
LPD3DBRANCH
;
...
...
@@ -1347,9 +1344,9 @@ typedef struct IDirect3Viewport_VTable {
STDMETHOD
(
TransformVertices
)
(
THIS_
DWORD
,
LPD3DTRANSFORMDATA
,
DWORD
,
LPDWORD
)
PURE
;
STDMETHOD
(
LightElements
)
(
THIS_
DWORD
,
LPD3DLIGHTDATA
)
PURE
;
STDMETHOD
(
SetBackground
)
(
THIS_
D3DMATERIALHANDLE
)
PURE
;
STDMETHOD
(
GetBackground
)
(
THIS_
LPD3DMATERIALHANDLE
,
LPBOOL
)
PURE
;
STDMETHOD
(
GetBackground
)
(
THIS_
LPD3DMATERIALHANDLE
,
LPBOOL
32
)
PURE
;
STDMETHOD
(
SetBackgroundDepth
)
(
THIS_
LPDIRECTDRAWSURFACE
)
PURE
;
STDMETHOD
(
GetBackgroundDepth
)
(
THIS_
LPDIRECTDRAWSURFACE
*
,
LPBOOL
)
PURE
;
STDMETHOD
(
GetBackgroundDepth
)
(
THIS_
LPDIRECTDRAWSURFACE
*
,
LPBOOL
32
)
PURE
;
STDMETHOD
(
Clear
)
(
THIS_
DWORD
,
LPD3DRECT
,
DWORD
)
PURE
;
STDMETHOD
(
AddLight
)
(
THIS_
LPDIRECT3DLIGHT
)
PURE
;
STDMETHOD
(
DeleteLight
)
(
THIS_
LPDIRECT3DLIGHT
)
PURE
;
...
...
@@ -1375,9 +1372,9 @@ typedef struct IDirect3Viewport2_VTable {
STDMETHOD
(
TransformVertices
)
(
THIS_
DWORD
,
LPD3DTRANSFORMDATA
,
DWORD
,
LPDWORD
)
PURE
;
STDMETHOD
(
LightElements
)
(
THIS_
DWORD
,
LPD3DLIGHTDATA
)
PURE
;
STDMETHOD
(
SetBackground
)
(
THIS_
D3DMATERIALHANDLE
)
PURE
;
STDMETHOD
(
GetBackground
)
(
THIS_
LPD3DMATERIALHANDLE
,
LPBOOL
)
PURE
;
STDMETHOD
(
GetBackground
)
(
THIS_
LPD3DMATERIALHANDLE
,
LPBOOL
32
)
PURE
;
STDMETHOD
(
SetBackgroundDepth
)
(
THIS_
LPDIRECTDRAWSURFACE
)
PURE
;
STDMETHOD
(
GetBackgroundDepth
)
(
THIS_
LPDIRECTDRAWSURFACE
*
,
LPBOOL
)
PURE
;
STDMETHOD
(
GetBackgroundDepth
)
(
THIS_
LPDIRECTDRAWSURFACE
*
,
LPBOOL
32
)
PURE
;
STDMETHOD
(
Clear
)
(
THIS_
DWORD
,
LPD3DRECT
,
DWORD
)
PURE
;
STDMETHOD
(
AddLight
)
(
THIS_
LPDIRECT3DLIGHT
)
PURE
;
STDMETHOD
(
DeleteLight
)
(
THIS_
LPDIRECT3DLIGHT
)
PURE
;
...
...
@@ -1459,7 +1456,7 @@ struct IDirect3DExecuteBuffer {
/* This flags is set to TRUE if we allocated ourselves the
data buffer */
BOOL
need_free
;
BOOL
32
need_free
;
void
(
*
execute
)(
LPDIRECT3DEXECUTEBUFFER
this
,
LPDIRECT3DDEVICE
dev
,
...
...
multimedia/dplay.c
View file @
fb019223
...
...
@@ -415,7 +415,7 @@ static HRESULT WINAPI IDirectPlayLobby2W_Connect
return
DPERR_INVALIDPARAMS
;
}
if
(
(
createRC
=
DirectPlayCreate
(
&
IID_IDirectPlayLobby2
,
lplpDP
,
pUnk
)
)
!=
DP_OK
)
if
(
(
createRC
=
DirectPlayCreate
(
(
LPGUID
)
&
IID_IDirectPlayLobby2
,
lplpDP
,
pUnk
)
)
!=
DP_OK
)
{
ERR
(
dplay
,
"error creating Direct Play 2W interface. Return Code = %ld.
\n
"
,
createRC
);
return
createRC
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment