Direct3D Retained Mode

From LEGO Island Wiki
Revision as of 16:19, 21 December 2019 by MattKC (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Direct3D Retained Mode (also known as D3DRM) was a seldom-used graphics API that was part of early versions of Direct3D. Its counterpart is Direct3D Immediate Mode (Retained Mode largely functioning as a layer on top of Immediate Mode as well).

History

Retained Mode functions almost as a minimal game engine on top of Immediate Mode, providing a "scene" that developers can add to and modify rather than making direct graphics API calls manually. Retained Mode handles the actual rendering/drawing of the scene, including any possible optimizations it can make. The modern equivalent is fully fledged game engines such as Unity and Unreal Engine that similarly provide a 3D scene for developers to place objects into. However Retained Mode had only a fraction of the overall functionality of a modern game engine, and at the time the vast majority of game developers chose to forego Retained Mode and write their own graphics engines based on Immediate Mode instead.

The last update Direct3D Retained Mode received was with DirectX 3.0 in 1996 and has been largely deprecated since then. It remained as a legacy component in DirectX until Windows Vista when it was quietly removed (necessitating restoring it manually for LEGO Island to play)

Other graphics libraries of the era, such as OpenGL also feature a "retained mode", however OpenGL's is deprecated too.

LEGO Island

LEGO Island uses Retained Mode extensively for all of its 3D graphics, and is one of only two major commercially successful games known to do so (the other being LEGO Rock Raiders).

Retained Mode's age and obscurity initially made LEGO Island's code harder to analyze since (unlike its peers DDRAW.DLL, D3DIM.DLL, etc.) it largely predates online documentation and the D3DRM.DLL provided on disc was too old to have PDB debug symbols available. However, it was discovered that a more recent version of D3DRM.DLL was released in 2001 with Windows XP and also has PDB symbols available, mitigating this entirely. A digitized book from the era was also discovered documenting most of Retained Mode's API.

In many ways, Retained Mode is likely the culprit in many of LEGO Island's compatibility issues with modern systems. Since Microsoft has dropped any and all support for Retained Mode, it's possible the game's codebase may have aged better had it been written for Immediate Mode instead.

"D3DRM.DLL was not found" error message

LEGO Island requires Direct3D Retained Mode to play. For instructions on restoring it on recent versions of Windows, see Compatibility Issues#D3DRM.DLL was not found

2001 Version

The last known build of D3DRM.DLL was released with Windows XP in 2001. This build is recommended for its improvements over the 1997 build on the LEGO Island disc, including the following:

  • PDB debug symbols are available
  • Better dgVoodoo compatibility
  • Wine compatibility (Wine's D3DRM.DLL implementation is incomplete and older D3DRM versions don't work)

Downloads

External Links