Skip to content

DirectDraw to Direct3D9 Conversion Status

Elisha Riedlinger edited this page Oct 13, 2023 · 20 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() #22863a Full
GetHWnd() #22863a Full
Initialize() #22863a Full
IsClipListChanged() #22863a Full
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() #22863a Full

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()
EnumDevices()
CreateLight()
CreateMaterial()
CreateViewport()
FindDevice()
CreateDevice()
CreateVertexBuffer()
EnumZBufferFormats()
EvictManagedTextures()

IDirect3DDevice

Function Notes -Support-
Initialize()
GetCaps()
SwapTextureHandles()
CreateExecuteBuffer()
GetStats()
Execute()
AddViewport()
DeleteViewport()
NextViewport()
Pick()
GetPickRecords()
EnumTextureFormats()
CreateMatrix()
SetMatrix()
GetMatrix()
DeleteMatrix()
BeginScene()
EndScene()
GetDirect3D()
SetCurrentViewport()
GetCurrentViewport()
SetRenderTarget()
GetRenderTarget()
Begin()
BeginIndexed()
Vertex()
Index()
End()
GetRenderState()
SetRenderState()
GetLightState()
SetLightState()
SetTransform()
GetTransform()
MultiplyTransform()
DrawPrimitive()
DrawIndexedPrimitive()
SetClipStatus()
GetClipStatus()
DrawPrimitiveStrided()
DrawIndexedPrimitiveStrided()
DrawPrimitiveVB()
DrawIndexedPrimitiveVB()
ComputeSphereVisibility()
GetTexture()
SetTexture()
GetTextureStageState()
SetTextureStageState()
ValidateDevice()
Clear()
SetViewport()
GetViewport()
SetMaterial()
GetMaterial()
SetLight()
GetLight()
BeginStateBlock()
EndStateBlock()
PreLoad()
ApplyStateBlock()
CaptureStateBlock()
DeleteStateBlock()
CreateStateBlock()
Load()
LightEnable()
GetLightEnable()
SetClipPlane()
GetClipPlane()
GetInfo()

IDirect3DViewport

Function Notes -Support-
Initialize()
GetViewport()
SetViewport()
TransformVertices()
LightElements()
SetBackground()
GetBackground()
SetBackgroundDepth()
GetBackgroundDepth()
Clear()
AddLight()
DeleteLight()
NextLight()
GetViewport2()
SetViewport2()
SetBackgroundDepth2()
GetBackgroundDepth2()
Clear2()

IDirect3DTexture

Function Notes -Support-
Initialize()
GetHandle()
PaletteChanged()
Load()
Unload()

IDirect3DMaterial

Function Notes -Support-
Initialize()
SetMaterial()
GetMaterial()
GetHandle()
Reserve()
Unreserve()

IDirect3DLight

Function Notes -Support-
Initialize()
SetLight()
GetLight()

IDirect3DExecuteBuffer

Function Notes -Support-
Initialize()
Lock()
Unlock()
SetExecuteData()
GetExecuteData()
Validate()
Optimize()

IDirect3DVertexBuffer

Function Notes -Support-
Lock()
Unlock()
ProcessVertices()
GetVertexBufferDesc()
Optimize()
ProcessVerticesStrided()