-
Notifications
You must be signed in to change notification settings - Fork 93
DirectDraw to Direct3D9 Conversion Status
Elisha Riedlinger edited this page Oct 13, 2023
·
20 revisions
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
Note | --Status-- |
---|---|
The function is fully implemented. | Full |
The function is partially implemented. It may work in some circumstances but not all. | Partial |
The function is either not implemented at all or not enough to work correctly. | None |
Function | Notes | -Support- |
---|---|---|
Compact() | Not implemented in DirectDraw. | Full |
CreateClipper() | Full | |
CreatePalette() | Using Direct3D9 pixel shader for handling the palette colors. Does not support DDPCAPS_PRIMARYSURFACELEFT flag. |
Partial |
CreateSurface() | Does not support: CubeMaps, MipMaps, FourCCs, zBuffers, zPixels, StencelBuffers, YUV, DUDV, BumpDUDV, BumpLuminance, Luminance, Linear | Partial |
DuplicateSurface() | Full | |
EnumDisplayModes() | Full | |
EnumSurfaces() | Does not support: DDENUMSURFACES_DOESEXIST, DDENUMSURFACES_MATCH, DDENUMSURFACES_CANBECREATED | Partial |
FlipToGDISurface() | Does not properly flip to GDI surface. | Partial |
GetCaps() | Full | |
GetDisplayMode() | Full | |
GetFourCCCodes() | Full | |
GetGDISurface() | Does not properly get the GDI surface. | Partial |
GetMonitorFrequency() | Full | |
GetScanLine() | Full | |
GetVerticalBlankStatus() | Full | |
Initialize() | Full | |
RestoreDisplayMode() | Full | |
SetCooperativeLevel() | Full | |
SetDisplayMode() | Full | |
WaitForVerticalBlank() | Loops until vertical blink. | Full |
GetAvailableVidMem() | Does not always properly get the available memory. | Partial |
GetSurfaceFromDC() | Not implemented. | None |
RestoreAllSurfaces() | Full | |
TestCooperativeLevel() | Full | |
GetDeviceIdentifier() | Full | |
StartModeTest() | Not implemented. | None |
EvaluateMode() | Not implemented. | None |
Function | Notes | -Support- |
---|---|---|
AddAttachedSurface() | This function is emulated. Does not fully replicate DirectDraw. | Partial |
AddOverlayDirtyRect() | Not implemented. | None |
Blt() | Does not support non-Windows raster operations, depth fill, zBuffer, alpha flags. | Partial |
BltBatch() | Does not support non-Windows raster operations, depth fill, zBuffer, alpha flags. | Partial |
BltFast() | Full | |
DeleteAttachedSurface() | Full | |
EnumAttachedSurfaces() | Full | |
EnumOverlayZOrders() | Not implemented. | None |
Flip() | This function is emulated. | Partial |
GetAttachedSurface() | This function is emulated. | Partial |
GetBltStatus() | Full | |
GetCaps() | Full | |
GetClipper() | Full | |
GetColorKey() | Full | |
GetDC() | Full | |
GetFlipStatus() | Full | |
GetOverlayPosition() | Not implemented. | None |
GetPalette() | Full | |
GetPixelFormat() | Full | |
GetSurfaceDesc() | Full | |
Initialize() | Full | |
IsLost() | Full | |
Lock() | Full | |
ReleaseDC() | Full | |
Restore() | Full | |
SetClipper() | Clipper is being set, but does not do anything yet. | Partial |
SetColorKey() | Full | |
SetOverlayPosition() | Not implemented. | None |
SetPalette() | Full | |
Unlock() | Full | |
UpdateOverlay() | Not implemented. | None |
UpdateOverlayDisplay() | Not implemented. | None |
UpdateOverlayZOrder() | Not implemented. | None |
GetDDInterface() | Full | |
PageLock() | Does nothing since Blt() is emulated. |
Partial |
PageUnlock() | Does nothing since Blt() is emulated. |
Partial |
SetSurfaceDesc() | Only supports DDSD_LPSURFACE flag. |
Partial |
SetPrivateData() | Private Data may be deleted prematurely in some cases. | Partial |
GetPrivateData() | Full | |
FreePrivateData() | Full | |
GetUniquenessValue() | Full | |
ChangeUniquenessValue() | Full | |
SetPriority() | Priority can be set, but is not used. | Partial |
GetPriority() | Full | |
SetLOD() | LOD can be set, but MipMaps are not yet supported. | Full |
GetLOD() | Full |
Function | Notes | -Support- |
---|---|---|
GetClipList() | Ignores the RECT sent in. | Partial |
GetHWnd() | Full | |
Initialize() | Full | |
IsClipListChanged() | Emulated and does not report the true state of the cliplist. | Partial |
SetClipList() | ClipList can be set, but is not used. | Partial |
SetHWnd() | HWnd can be set, but is not used. | Partial |
Function | Notes | -Support- |
---|---|---|
GetCaps() | Full | |
GetEntries() | Full | |
Initialize() | Full | |
SetEntries() | Does not support DDPCAPS_PRIMARYSURFACELEFT or DDPCAPS_ALPHA | Partial |
Function | Notes | -Support- |
---|---|---|
GetColorControls() | Full | |
SetColorControls() | Color can be set, but is not used. | Partial |
Function | Notes | -Support- |
---|---|---|
GetGammaRamp() | Full | |
SetGammaRamp() | Gamma can be set, but is not used. | Partial |
Function | Notes | -Support- |
---|---|---|
Initialize() | Full | |
EnumDevices() | Emulated and does not return correct flags in all cases. | Partial |
CreateLight() | Full | |
CreateMaterial() | Full | |
CreateViewport() | Full | |
FindDevice() | Full | |
CreateDevice() | Does not properly handle the CLSID or the surface sent in to this function. | Partial |
CreateVertexBuffer() | Does not fully handle everything in the VertexBufferDesc that is sent in. | Partial |
EnumZBufferFormats() | Does not properly handle IID_IDirect3DRampDevice | Partial |
EvictManagedTextures() | Dos not fully evict all managed surfaces. | Partial |
Function | Notes | -Support- |
---|---|---|
Initialize() | Full | |
GetCaps() | Full | |
SwapTextureHandles() | None | |
CreateExecuteBuffer() | None | |
GetStats() | None | |
Execute() | None | |
AddViewport() | Full | |
DeleteViewport() | Does not properly handle a case where the viewport is the current one. | Partial |
NextViewport() | Full | |
Pick() | None | |
GetPickRecords() | None | |
EnumTextureFormats() | Full | |
CreateMatrix() | None | |
SetMatrix() | None | |
GetMatrix() | None | |
DeleteMatrix() | None | |
BeginScene() | Full | |
EndScene() | Does not properly present the changes made directly to the render target or primary surface. | Partial |
GetDirect3D() | Full | |
SetCurrentViewport() | Full | |
GetCurrentViewport() | Full | |
SetRenderTarget() | Only works when setting the surface specified in CreateDevice() | Partial |
GetRenderTarget() | Full | |
Begin() | None | |
BeginIndexed() | None | |
Vertex() | None | |
Index() | None | |
End() | None | |
GetRenderState() | Does not support D3DRENDERSTATE_COLORKEYENABLE, D3DRENDERSTATE_COLORKEYBLENDENABLE, D3DRENDERSTATE_LINEPATTERN, D3DRENDERSTATE_ZVISIBLE, D3DRENDERSTATE_STIPPLEDALPHA, D3DRENDERSTATE_EXTENTS | Partial |
SetRenderState() | Does not support D3DRENDERSTATE_COLORKEYENABLE, D3DRENDERSTATE_COLORKEYBLENDENABLE, D3DRENDERSTATE_LINEPATTERN, D3DRENDERSTATE_ZVISIBLE, D3DRENDERSTATE_STIPPLEDALPHA, D3DRENDERSTATE_EXTENTS | Partial |
GetLightState() | Full | |
SetLightState() | Full | |
SetTransform() | Full | |
GetTransform() | Full | |
MultiplyTransform() | Full | |
DrawPrimitive() | Full | |
DrawIndexedPrimitive() | Full | |
SetClipStatus() | Just stored the status, does nothing with it. Does not support D3DCLIPSTATUS_EXTENTS2 or D3DCLIPSTATUS_EXTENTS3 | Partial |
GetClipStatus() | Full | |
DrawPrimitiveStrided() | None | |
DrawIndexedPrimitiveStrided() | None | |
DrawPrimitiveVB() | Full | |
DrawIndexedPrimitiveVB() | Full | |
ComputeSphereVisibility() | Just returns all visible | Partial |
GetTexture() | Full | |
SetTexture() | Full | |
GetTextureStageState() | Does not support D3DTSS_SRGBTEXTURE, D3DTSS_ELEMENTINDEX, D3DTSS_DMAPOFFSET | Partial |
SetTextureStageState() | Does not support D3DTSS_SRGBTEXTURE, D3DTSS_ELEMENTINDEX, D3DTSS_DMAPOFFSET | Partial |
ValidateDevice() | None | |
Clear() | Full | |
SetViewport() | Full | |
GetViewport() | Full | |
SetMaterial() | Full | |
GetMaterial() | Full | |
SetLight() | Full | |
GetLight() | Full | |
BeginStateBlock() | None | |
EndStateBlock() | None | |
PreLoad() | Just returns OK. | Partial |
ApplyStateBlock() | None | |
CaptureStateBlock() | None | |
DeleteStateBlock() | None | |
CreateStateBlock() | None | |
Load() | Full | |
LightEnable() | Full | |
GetLightEnable() | Full | |
SetClipPlane() | Full | |
GetClipPlane() | Full | |
GetInfo() | Full |
Function | Notes | -Support- |
---|---|---|
Initialize() | ||
GetViewport() | ||
SetViewport() | ||
TransformVertices() | ||
LightElements() | ||
SetBackground() | ||
GetBackground() | ||
SetBackgroundDepth() | ||
GetBackgroundDepth() | ||
Clear() | ||
AddLight() | ||
DeleteLight() | ||
NextLight() | ||
GetViewport2() | ||
SetViewport2() | ||
SetBackgroundDepth2() | ||
GetBackgroundDepth2() | ||
Clear2() |
Function | Notes | -Support- |
---|---|---|
Initialize() | ||
GetHandle() | ||
PaletteChanged() | ||
Load() | ||
Unload() |
Function | Notes | -Support- |
---|---|---|
Initialize() | ||
SetMaterial() | ||
GetMaterial() | ||
GetHandle() | ||
Reserve() | ||
Unreserve() |
Function | Notes | -Support- |
---|---|---|
Initialize() | ||
SetLight() | ||
GetLight() |
Function | Notes | -Support- |
---|---|---|
Initialize() | ||
Lock() | ||
Unlock() | ||
SetExecuteData() | ||
GetExecuteData() | ||
Validate() | ||
Optimize() |
Function | Notes | -Support- |
---|---|---|
Lock() | ||
Unlock() | ||
ProcessVertices() | ||
GetVertexBufferDesc() | ||
Optimize() | ||
ProcessVerticesStrided() |