Difference between revisions of "User:Eddman"
Line 86: | Line 86: | ||
</pre> | </pre> | ||
− | {{ii}} | + | {{ii}}If you have trouble determining the exact DirectDraw version, simply write <code>true</code> in the <code>directdraw versions</code> field on the wiki page.<br>An example would be mixed usage of interfaces, e.g. '''DirectDraw2''' with '''DirectDrawSurface''' and no sign of '''DirectDrawSurface2'''. Technically the version would be DirectDraw 2, but it's recommended to set it to <code>true</code> to avoid a possible misidentification. |
{{ii}}Direct3D 2 and 3, and DirectDraw 2 and 3, use the exact same interfaces. As a result they cannot be distinguished by interfaces. For these cases use the DirectX version listed in requirements or readme, or the version of the DirectX installer shipped with the original release of the game. | {{ii}}Direct3D 2 and 3, and DirectDraw 2 and 3, use the exact same interfaces. As a result they cannot be distinguished by interfaces. For these cases use the DirectX version listed in requirements or readme, or the version of the DirectX installer shipped with the original release of the game. | ||
{{ii}}DirectDraw 2/3 and 5 use the identically named <code>DirectDraw2</code> interface. To distinguish between the two check the name of the <code>DirectDrawSurface</code> interface. | {{ii}}DirectDraw 2/3 and 5 use the identically named <code>DirectDraw2</code> interface. To distinguish between the two check the name of the <code>DirectDrawSurface</code> interface. | ||
− | |||
− | |||
− |
Revision as of 12:23, 6 April 2024
Direct3D versions
DirectDraw is an obsolete 2D rendering API from Microsoft that was used by game developers mainly before the release of Direct3D 8.
DirectDraw versions
DirectDraw is an obsolete 2D rendering API from Microsoft that was used by game developers mainly before the release of Direct3D 8. To determine the exact version of DirectDraw being used by a game, a more in-depth investigation needs to be performed by tracing the API calls with dgVoodoo 2 (see Determine the Direct3D/DirectDraw version for older games).
Determine the Direct3D/DirectDraw version for older games
This section is applicable for DirectDraw and Direct3D 7 or older. Although these methods can be used for Direct3D 8-9, using a tool such as MSI Afterburner or Special K is recommended.
{{Fixbox|description=Identify the render API being used:|ref=|fix= Use a tool such as Process Explorer to identify the loaded DLL files of the game process while the game is running:
- If the game loads
d3dim700.dll
, it uses Direct3D 7.
- If the game loads the following DLLs, the exact API version cannot be determined based on the DLL alone. A tool such as dgVoodoo 2 must be used to trace the API calls for determining the exact version:
- If the game loads
d3dim.dll
, it uses a version in the Direct3D 2-6 range. - If the game loads
ddraw.dll
only, it uses a version in the DirectDraw 1-7 range. - If the game loads both
d3dim.dll
andd3dim700.dll
, it uses one for rendering and the other for other purposes. - If a 2D game loads
d3dim700.dll
, despite the 2D graphics, the possible reasons are:- Direct3D 7 is used to render certain effects which are not possible with DirectDraw only.
- The game might not be utilizing Direct3D 7 in any meaningful capacity at all.
d3dim700.dll
is possibly loaded as a result of a developer mistake, or using developer tools that added the DLL as a dependency by default.
- If the game loads
- Note that
ddraw.dll
is always loaded alongsided3dim.dll
andd3dim700.dll
, since Direct3D 2-7 require DirectDraw to be able to function.
If dgVoodoo 2 needs to be used, perform the following procedure to trace the calls:
- Download the debug build of dgVoodoo 2 (named as
(spec release with Debug Layer)
), and also downloadDebugView
orDebugView++
. - Apply the dgVoodoo 2 files to the game per the usual method in the guide.
- In the game folder, run
dgVoodooCpl.exe
, right-click on thedgVoodoo
banner, and enableShow all sections of the configuration
. - Open the last tab,
Debug
, and setMaximum trace level
to+Additional trace info for internals
. - Run
DebugView
orDebugView++
and keep it running. Make sure its window is empty before launching the game. - Launch the game, start a new game and proceed until you reach in-game graphics.
- Exit the game and check
DebugView
orDebugView++
.
You should see a list of interfaces sorted by time. Determine the Direct3D or DirectDraw version using the following tables:
- There is no Direct3D 4 or DirectDraw 4, since DirectX 4 was canceled and never released.
Direct3D version | Interfaces -----------------|----------------------------- 2/3 | Direct3D, Direct3DDevice 5 | Direct3D2, Direct3DDevice2 6 | Direct3D3, Direct3DDevice3 7 | Direct3D7, Direct3DDevice7 DirectDraw version | Interfaces -------------------|------------------------------------- 1 | DirectDraw | DirectDrawSurface ......................................................... 2/3 | DirectDraw2 | DirectDraw2::GetAvailableVidMem | | DirectDrawSurface2 | DirectDrawSurface2::GetDDInterface | DirectDrawSurface2::PageLock | DirectDrawSurface2::PageUnlock ......................................................... 5 | DirectDrawSurface3 | DirectDrawSurface3::SetSurfaceDesc | | DirectDrawColorControl ......................................................... 6 | DirectDraw4 | DirectDraw4::GetSurfaceFromDC | DirectDraw4::RestoreAllSurfaces | DirectDraw4::TestCooperativeLevel | DirectDraw4::GetDeviceIdentifier | | DirectDrawSurface4 | DirectDrawSurface4::SetPrivateData | DirectDrawSurface4::GetPrivateData | DirectDrawSurface4::FreePrivateData | DirectDrawSurface4::GetUniquenessValue | DirectDrawSurface4::ChangeUniquenessValue ......................................................... 7 | DirectDraw7 | DirectDraw7::StartModeTest | DirectDraw7::EvaluateMode | | DirectDrawSurface7 | DirectDrawSurface7::SetPriority | DirectDrawSurface7::GetPriority | DirectDrawSurface7::SetLOD | DirectDrawSurface7::GetLOD
- If you have trouble determining the exact DirectDraw version, simply write
true
in thedirectdraw versions
field on the wiki page.
An example would be mixed usage of interfaces, e.g. DirectDraw2 with DirectDrawSurface and no sign of DirectDrawSurface2. Technically the version would be DirectDraw 2, but it's recommended to set it totrue
to avoid a possible misidentification.
- Direct3D 2 and 3, and DirectDraw 2 and 3, use the exact same interfaces. As a result they cannot be distinguished by interfaces. For these cases use the DirectX version listed in requirements or readme, or the version of the DirectX installer shipped with the original release of the game.
- DirectDraw 2/3 and 5 use the identically named
DirectDraw2
interface. To distinguish between the two check the name of theDirectDrawSurface
interface.