Skip to content

DirectDraw to Direct3D9 Conversion Status

Elisha Riedlinger edited this page Oct 13, 2023 · 12 revisions

Dd7to9 Status

For this page I will be talking about the status of the work to convert DirectX 1-7 to DirectX 9. This is a more technical discussion. For game compatibility check out this page here: Dd7to9 Compatibility

Table Key

Note --Status--
The function is fully implemented. #22863a Full
The function is partially implemented. It may work in some circumstances but not all. #ffcc01 Partial
The function is either not implemented at all or not enough to work correctly. #f03c15 None

DirectDraw Interfaces

IDirectDraw

Function Notes -Support-
Compact() Not implemented in DirectDraw. #22863a Full
CreateClipper() #22863a Full
CreatePalette() Using Direct3D9 pixel shader for handling the palette colors. Does not support DDPCAPS_PRIMARYSURFACELEFT flag. #ffcc01 Partial
CreateSurface() Does not support: CubeMaps, MipMaps, FourCCs, zBuffers, zPixels, StencelBuffers, YUV, DUDV, BumpDUDV, BumpLuminance, Luminance, Linear #ffcc01 Partial
DuplicateSurface() #22863a Full
EnumDisplayModes() #22863a Full
EnumSurfaces() Does not support: DDENUMSURFACES_DOESEXIST, DDENUMSURFACES_MATCH, DDENUMSURFACES_CANBECREATED #ffcc01 Partial
FlipToGDISurface() Does not properly flip to GDI surface. #ffcc01 Partial
GetCaps() #22863a Full
GetDisplayMode() #22863a Full
GetFourCCCodes() #22863a Full
GetGDISurface() Does not properly get the GDI surface. #ffcc01 Partial
GetMonitorFrequency() #22863a Full
GetScanLine() #22863a Full
GetVerticalBlankStatus() #22863a Full
Initialize() #22863a Full
RestoreDisplayMode() #22863a Full
SetCooperativeLevel() #22863a Full
SetDisplayMode() #22863a Full
WaitForVerticalBlank() Loops until vertical blink. #22863a Full
GetAvailableVidMem() Does not always properly get the available memory. #ffcc01 Partial
GetSurfaceFromDC() Not implemented. #f03c15 None
RestoreAllSurfaces() #22863a Full
TestCooperativeLevel() #22863a Full
GetDeviceIdentifier() #22863a Full
StartModeTest() Not implemented. #f03c15 None
EvaluateMode() Not implemented. #f03c15 None

IDirectDrawSurface

Function Notes -Support-
AddAttachedSurface() This function is emulated. Does not fully replicate DirectDraw. #ffcc01 Partial
AddOverlayDirtyRect() Not implemented. #f03c15 None
Blt() Does not support non-Windows raster operations, depth fill, zBuffer, alpha flags. #ffcc01 Partial
BltBatch() Does not support non-Windows raster operations, depth fill, zBuffer, alpha flags. #ffcc01 Partial
BltFast() #22863a Full
DeleteAttachedSurface() #22863a Full
EnumAttachedSurfaces() #22863a Full
EnumOverlayZOrders() Not implemented. #f03c15 None
Flip() This function is emulated. #ffcc01 Partial
GetAttachedSurface() This function is emulated. #ffcc01 Partial
GetBltStatus() #22863a Full
GetCaps() #22863a Full
GetClipper() #22863a Full
GetColorKey() #22863a Full
GetDC() #22863a Full
GetFlipStatus() #22863a Full
GetOverlayPosition() Not implemented. #f03c15 None
GetPalette() #22863a Full
GetPixelFormat() #22863a Full
GetSurfaceDesc() #22863a Full
Initialize() #22863a Full
IsLost() #22863a Full
Lock() #22863a Full
ReleaseDC() #22863a Full
Restore() #22863a Full
SetClipper() Clipper is being set, but does not do anything yet. #ffcc01 Partial
SetColorKey() #22863a Full
SetOverlayPosition() Not implemented. #f03c15 None
SetPalette() #22863a Full
Unlock() #22863a Full
UpdateOverlay() Not implemented. #f03c15 None
UpdateOverlayDisplay() Not implemented. #f03c15 None
UpdateOverlayZOrder() Not implemented. #f03c15 None
GetDDInterface() #22863a Full
PageLock() Does nothing since Blt() is emulated. #ffcc01 Partial
PageUnlock() Does nothing since Blt() is emulated. #ffcc01 Partial
SetSurfaceDesc() Only supports DDSD_LPSURFACE flag. #ffcc01 Partial
SetPrivateData() Private Data may be deleted prematurely in some cases. #ffcc01 Partial
GetPrivateData() #22863a Full
FreePrivateData() #22863a Full
GetUniquenessValue() #22863a Full
ChangeUniquenessValue() #22863a Full
SetPriority() Priority can be set, but is not used. #ffcc01 Partial
GetPriority() #22863a Full
SetLOD() LOD can be set, but MipMaps are not yet supported. #22863a Full
GetLOD() #22863a Full

IDirectDrawClipper

Function Notes -Support-
GetClipList() Ignores the RECT sent in. #ffcc01 Partial
GetHWnd() #22863a Full
Initialize() #22863a Full
IsClipListChanged() Emulated and does not report the true state of the cliplist. #ffcc01 Partial
SetClipList() ClipList can be set, but is not used. #ffcc01 Partial
SetHWnd() HWnd can be set, but is not used. #ffcc01 Partial

IDirectDrawPalette

Function Notes -Support-
GetCaps() #22863a Full
GetEntries() #22863a Full
Initialize() #22863a Full
SetEntries() Does not support DDPCAPS_PRIMARYSURFACELEFT or DDPCAPS_ALPHA #ffcc01 Partial

IDirectDrawColorControl

Function Notes -Support-
GetColorControls() #22863a Full
SetColorControls() Color can be set, but is not used. #ffcc01 Partial

IDirectDrawGammaControl

Function Notes -Support-
GetGammaRamp() #22863a Full
SetGammaRamp() Gamma can be set, but is not used. #ffcc01 Partial

Direct3D Interfaces

IDirect3D

Function Notes -Support-
Initialize() #22863a Full
EnumDevices() Emulated and does not return correct flags in all cases. #ffcc01 Partial
CreateLight() #22863a Full
CreateMaterial() #22863a Full
CreateViewport() #22863a Full
FindDevice() #22863a Full
CreateDevice() Does not properly handle the CLSID or the surface sent in to this function. #ffcc01 Partial
CreateVertexBuffer() Does not fully handle everything in the VertexBufferDesc that is sent in. #ffcc01 Partial
EnumZBufferFormats() Does not properly handle IID_IDirect3DRampDevice #ffcc01 Partial
EvictManagedTextures() Dos not fully evict all managed surfaces. #ffcc01 Partial

IDirect3DDevice

Function Notes -Support-
Initialize() #22863a Full
GetCaps() #22863a Full
SwapTextureHandles() #f03c15 None
CreateExecuteBuffer() #f03c15 None
GetStats() #f03c15 None
Execute() #f03c15 None
AddViewport() #22863a Full
DeleteViewport() Does not properly handle a case where the viewport is the current one. #ffcc01 Partial
NextViewport() #22863a Full
Pick() #f03c15 None
GetPickRecords() #f03c15 None
EnumTextureFormats() #22863a Full
CreateMatrix() #f03c15 None
SetMatrix() #f03c15 None
GetMatrix() #f03c15 None
DeleteMatrix() #f03c15 None
BeginScene() #22863a Full
EndScene() Does not properly present the changes made directly to the render target or primary surface. #ffcc01 Partial
GetDirect3D() #22863a Full
SetCurrentViewport() #22863a Full
GetCurrentViewport() #22863a Full
SetRenderTarget() Only works when setting the surface specified in CreateDevice() #ffcc01 Partial
GetRenderTarget() #22863a Full
Begin() #f03c15 None
BeginIndexed() #f03c15 None
Vertex() #f03c15 None
Index() #f03c15 None
End() #f03c15 None
GetRenderState() Does not support D3DRENDERSTATE_COLORKEYENABLE, D3DRENDERSTATE_COLORKEYBLENDENABLE, D3DRENDERSTATE_LINEPATTERN, D3DRENDERSTATE_ZVISIBLE, D3DRENDERSTATE_STIPPLEDALPHA, D3DRENDERSTATE_EXTENTS #ffcc01 Partial
SetRenderState() Does not support D3DRENDERSTATE_COLORKEYENABLE, D3DRENDERSTATE_COLORKEYBLENDENABLE, D3DRENDERSTATE_LINEPATTERN, D3DRENDERSTATE_ZVISIBLE, D3DRENDERSTATE_STIPPLEDALPHA, D3DRENDERSTATE_EXTENTS #ffcc01 Partial
GetLightState() #22863a Full
SetLightState() #22863a Full
SetTransform() #22863a Full
GetTransform() #22863a Full
MultiplyTransform() #22863a Full
DrawPrimitive() #22863a Full
DrawIndexedPrimitive() #22863a Full
SetClipStatus() Just stored the status, does nothing with it. Does not support D3DCLIPSTATUS_EXTENTS2 or D3DCLIPSTATUS_EXTENTS3 #ffcc01 Partial
GetClipStatus() #22863a Full
DrawPrimitiveStrided() #f03c15 None
DrawIndexedPrimitiveStrided() #f03c15 None
DrawPrimitiveVB() #22863a Full
DrawIndexedPrimitiveVB() #22863a Full
ComputeSphereVisibility() Just returns all visible #ffcc01 Partial
GetTexture() #22863a Full
SetTexture() #22863a Full
GetTextureStageState() Does not support D3DTSS_SRGBTEXTURE, D3DTSS_ELEMENTINDEX, D3DTSS_DMAPOFFSET #ffcc01 Partial
SetTextureStageState() Does not support D3DTSS_SRGBTEXTURE, D3DTSS_ELEMENTINDEX, D3DTSS_DMAPOFFSET #ffcc01 Partial
ValidateDevice() #f03c15 None
Clear() #22863a Full
SetViewport() #22863a Full
GetViewport() #22863a Full
SetMaterial() #22863a Full
GetMaterial() #22863a Full
SetLight() #22863a Full
GetLight() #22863a Full
BeginStateBlock() #f03c15 None
EndStateBlock() #f03c15 None
PreLoad() Just returns OK. #ffcc01 Partial
ApplyStateBlock() #f03c15 None
CaptureStateBlock() #f03c15 None
DeleteStateBlock() #f03c15 None
CreateStateBlock() #f03c15 None
Load() #22863a Full
LightEnable() #22863a Full
GetLightEnable() #22863a Full
SetClipPlane() #22863a Full
GetClipPlane() #22863a Full
GetInfo() #22863a Full

IDirect3DViewport

Function Notes -Support-
Initialize() #22863a Full
GetViewport() #22863a Full
SetViewport() 'Scale homogeneous' Not Implemented #ffcc01 Partial
TransformVertices() #f03c15 None
LightElements() #f03c15 None
SetBackground() #f03c15 None
GetBackground() #f03c15 None
SetBackgroundDepth() #f03c15 None
GetBackgroundDepth() #f03c15 None
Clear() #22863a Full
AddLight() #f03c15 None
DeleteLight() #f03c15 None
NextLight() #f03c15 None
GetViewport2() #22863a Full
SetViewport2() 'clip volume' Not Implemented #ffcc01 Partial
SetBackgroundDepth2() #f03c15 None
GetBackgroundDepth2() #f03c15 None
Clear2() #22863a Full

IDirect3DTexture

Function Notes -Support-
Initialize() #22863a Full
GetHandle() #22863a Full
PaletteChanged() #f03c15 None
Load() #22863a Full
Unload() #22863a Full

IDirect3DMaterial

Function Notes -Support-
Initialize() #22863a Full
SetMaterial() D3DTEXTUREHANDLE and RampSize Not Implemented #ffcc01 Partial
GetMaterial() #22863a Full
GetHandle() #22863a Full
Reserve() #22863a Full
Unreserve() #22863a Full

IDirect3DLight

Function Notes -Support-
Initialize() #22863a Full
SetLight() #22863a Full
GetLight() #22863a Full

IDirect3DExecuteBuffer

Function Notes -Support-
Initialize() #22863a Full
Lock() #f03c15 None
Unlock() #f03c15 None
SetExecuteData() #f03c15 None
GetExecuteData() #f03c15 None
Validate() #22863a Full
Optimize() #f03c15 None

IDirect3DVertexBuffer

Function Notes -Support-
Lock() Does not support DDLOCK_WRITEONLY #ffcc01 Partial
Unlock() #22863a Full
ProcessVertices() #22863a Full
GetVertexBufferDesc() #22863a Full
Optimize() #f03c15 None
ProcessVerticesStrided() #f03c15 None