Compatibility Issues: Difference between revisions

From LEGO Island Wiki
Jump to navigation Jump to search
No edit summary
(One intermediate revision by the same user not shown)
Line 22: Line 22:
== LEGO Island often crashes upon exit ==
== LEGO Island often crashes upon exit ==


'''Affects:''' Windows 7+ (maybe earlier version too)
'''Affects:''' Windows 7+ (earlier versions may be affected too)


'''Description:''' When trying to exit, the game may glitch up and crash. The cause of this is unknown, but is presumably a change in one of the Windows/DirectX APIs that LEGO Island uses.
'''Description:''' When trying to exit, the game may glitch up and crash. The cause of this is unknown, but is presumably a change in one of the Windows/DirectX APIs that LEGO Island uses.
Line 51: Line 51:
'''Solutions:'''
'''Solutions:'''
* Change to a software mode in the LEGO Island configuration (Ramp Emulation, RGB Emulation, MMX Emulation, Direct3D HEL). These use CPU/software rather than GPU/hardware (theoretically slower, but imperceptible on modern PCs), so hardware/DirectX API differences aren't so impactful.
* Change to a software mode in the LEGO Island configuration (Ramp Emulation, RGB Emulation, MMX Emulation, Direct3D HEL). These use CPU/software rather than GPU/hardware (theoretically slower, but imperceptible on modern PCs), so hardware/DirectX API differences aren't so impactful.
* Use [http://dege.freeweb.hu/ dgVoodoo]. This wraps several old DirectX API calls to modern DirectX 11 calls, fixing a huge amount of compatibility issues with modern software and hardware.
* Use [[dgVoodoo]]. This wraps several old DirectX API calls to modern DirectX 11 calls, fixing a huge amount of compatibility issues with modern software and hardware.


== Textures are heavily glitched ==
== Textures are heavily glitched ==

Revision as of 17:58, 5 June 2020

LEGO Island was written in 1997 for Microsoft Windows 95. Since then, Windows has gone through several changes, many of which have inadvertently affected the aging LEGO Island code. This is a list of known compatibility issues running LEGO Island on modern versions of Windows.

D3DRM.DLL was not found

Affects: Windows Vista+

Description: LEGO Island was written around an now-obsolete DirectX API called Direct3D Retained Mode. It was seldom used and quietly dropped in Windows Vista.

D3drm error.PNG

Solution:

  • Restore Retained Mode manually using either of the following options:
    • Acquire the file D3DRM.DLL:
      • The official LEGO Island disc contains an installer for DirectX 5 including D3DRM.DLL. It can be found at <CD drive>:\redist\directx\d3drm.dll.
      • Download the most recent version of D3DRM.DLL: File:D3DRM.ZIP. This build is newer than the one on disc (2001 as opposed to 1997) and has generally better compatibility with modern Windows (particularly when using dgVoodoo or if playing in Wine) as well as debug symbols that are extremely useful for modding.
    • Copy D3DRM.DLL to either of the following locations:
      • The LEGO Island install directory (usually C:\Program Files\LEGO Island or C:\Program Files (x86)\LEGO Island)
      • The Windows system directory (usually C:\Windows\system32)
  • Use a version of Windows older than Windows Vista.

LEGO Island often crashes upon exit

Affects: Windows 7+ (earlier versions may be affected too)

Description: When trying to exit, the game may glitch up and crash. The cause of this is unknown, but is presumably a change in one of the Windows/DirectX APIs that LEGO Island uses.

Solutions:

  • Use an older version of Windows (95/98 are known to not suffer from this bug).

Save files don't actually save

Affects: Windows Vista+

Description: LEGO Island saves files into its install directory, which is C:\Program Files\LEGO Island by default. While it was not uncommon at the time to use the install directory for application data, it quickly became bad practice due to security risks. As of Windows Vista, administrator privileges are required to write files anywhere in C:\Program Files, which breaks LEGO Island's saving function.

Solutions:

  • Run LEGO Island as administrator (right click > Run as Administrator)
  • Use LEGO Island Rebuilder, which has an option to redirect save data to `%APPDATA%` (the modern day standard location for application data)
  • Re-install LEGO Island somewhere with full write access (i.e. not C:\Program Files)
  • Manually redirect saves to a writable location in the registry (September build only):
    • 32-bit: HKLM\Software\Mindscape\LEGO Island\savepath
    • 64-bit: HKLM\Software\WOW6432Node\Mindscape\LEGO Island\savepath

General instability, graphical glitches, driving scenes unplayable, etc.

Affects: Most versions of Windows 10

Description: LEGO Island was written around a very old version of DirectDraw, including a retained mode API (D3DRM) that is not only unsupported now, it's also been dropped from Windows/DirectX entirely. Many of its DirectDraw function calls are obsolete, deprecated and/or completely abandoned now.

Solutions:

  • Change to a software mode in the LEGO Island configuration (Ramp Emulation, RGB Emulation, MMX Emulation, Direct3D HEL). These use CPU/software rather than GPU/hardware (theoretically slower, but imperceptible on modern PCs), so hardware/DirectX API differences aren't so impactful.
  • Use dgVoodoo. This wraps several old DirectX API calls to modern DirectX 11 calls, fixing a huge amount of compatibility issues with modern software and hardware.

Textures are heavily glitched

Affects: Windows 10 1809+ (October 2018 aka "October Update")

Description: When using "Ramp Emulation" mode, all 3D textures are heavily glitched. Bitmaps remain normal:

Windows 10 1809 Ramp Bug.png

This is a DirectX incompatibility introduced in Windows 10 1809. The exact cause is unclear.

Solutions:

  • Use "RGB Emulation". This mode is unaffected.
  • Use "Direct3D HAL" with dgVoodoo (full screen only). Direct3D HAL is unaffected in general, but has its own compatibility issues on Windows 10 without using dgVoodoo.
  • Use a version of Windows earlier than Windows 10 1809.