Compatibility Issues: Difference between revisions

From LEGO Island Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[LEGO Island]] was written in 1997 for Microsoft Windows 95. Since then, Windows has gone through several changes, many of which have broken the dated LEGO Island code. This is a list of known [[compatibility issues]] running LEGO Island on modern versions of Windows.
[[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.
 
<center>[[File:D3drm_error.PNG]]</center>
 
'''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 <code><CD drive>:\redist\directx\d3drm.dll</code>.
*** Download the most recent version of D3DRM.DLL: [https://legoisland.org/download/d3drm.zip 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 [https://msdl.microsoft.com/download/symbols/d3drm.pdb/3B7D82D31/d3drm.pdb debug symbols] that are extremely useful for modding.
** Copy '''D3DRM.DLL''' to either of the following locations:
*** The LEGO Island install directory (usually <code>C:\Program Files\LEGO Island</code> or <code>C:\Program Files (x86)\LEGO Island</code>)
*** The Windows system directory (usually <code>C:\Windows\system32</code>)
 
* 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 ==
== Save files don't actually save ==
Line 17: Line 45:
== General instability, graphical glitches, driving scenes unplayable, etc. ==
== General instability, graphical glitches, driving scenes unplayable, etc. ==


'''Affects:''' Most versions of Windows 10
'''Affects:''' Most recent versions of Windows
 
'''Description:''' LEGO Island was written around a very old version of DirectDraw, including a [[Direct3D Retained Mode|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.


'''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.
<center>[[File:Screenshot (165).png]]</center>


'''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 one of the software modes (RGB Emulation, MMX Emulation, or - [[#Textures are heavily glitched|if using a version older than Windows 10 1809]] - Ramp Emulation) in the LEGO Island configuration. 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 "Direct3D HAL" with [[dgVoodoo]] installed. dgVoodoo 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 ==
Line 36: Line 66:


'''Solutions:'''
'''Solutions:'''
* Use "RGB Emulation". This mode is unaffected.
* Use "RGB Emulation" or "MMX Emulation". These modes are 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 "Direct3D HAL" with [[dgVoodoo]] (full screen only). Direct3D HAL is unaffected in general, but it has its own [[#General instability, graphical glitches, driving scenes unplayable, etc.|compatibility issues]] on Windows 10+ without using [[dgVoodoo]].
* Use a version of Windows earlier than Windows 10 1809.
* Use a version of Windows earlier than Windows 10 1809.

Latest revision as of 17:23, 2 July 2024

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: 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 recent versions of Windows

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.

Screenshot (165).png

Solutions:

  • Change to one of the software modes (RGB Emulation, MMX Emulation, or - if using a version older than Windows 10 1809 - Ramp Emulation) in the LEGO Island configuration. 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 "Direct3D HAL" with dgVoodoo installed. dgVoodoo 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" or "MMX Emulation". These modes are unaffected.
  • Use "Direct3D HAL" with dgVoodoo (full screen only). Direct3D HAL is unaffected in general, but it has its own compatibility issues on Windows 10+ without using dgVoodoo.
  • Use a version of Windows earlier than Windows 10 1809.