isledecomp / LEGOIslandRebuilder

A launcher and mod/patch tool for the 1997 video game LEGO Island.
407 stars 20 forks source link

LEGO Island encounters significant issues under Linux through Wine #75

Open VoxelTek opened 9 months ago

VoxelTek commented 9 months ago

Hello there,

I am using Kubuntu 23.04 and have used Kubuntu 22.04.3, and am trying to play Lego Island. However, I have had very very little success, and have not found many guides and such with assistance on how to best run the game.

Under my normal Wine prefix, I only get the video adapter options of Direct3D HEL and Direct3D HAL, both of which crash moments after starting the game, no matter what settings are enabled in Rebuilder. Trying the normal launcher also fails.

However, I stumbled across this Lutris script, which I was able to successfully use to install the game and have further success running it. With this, I now get the normal video modes of RGB, Ramp, and MMX emulation, as well as Direct3D HAL. However, only the Emulation modes work, and Direct3D HAL does not. When attempting to, the game almost immediately throws this error: image

Additionally, when set to play in Windowed mode, the three other modes are missing assets such as the LEGO FMV at the beginning, as well as backgrounds. This can be seen here: image

When running in Fullscreen, these issues are not present, but there is still a strange error where the application gets confined to a small portion of the screen in the top-left corner, yet doesn't have the capabilities of Windowed mode.

image

I understand that this is primarily unrelated to Rebuilder, but I'm reaching out as I know you have had success running Lego Island on Linux under Wine, and I was wondering if you had any information or insight as to how and why these issues are present.

Kind regards, @VoxelTek

wengland02 commented 8 months ago

The reason why only the Direct3D HEL and HAL were showing up is because of an issue with WineD3D. The script installed DgVoodoo2 which basically turns the game into a DX11 game. The other issues I believe are either due to Wine or how DgVoodoo2 is setup. I basically did the same on macOS and I get the same issues.

TyTubeRoblox commented 8 months ago

I am also having issues with WINE on Zorin OS 16.3, WINE version 8.17

itsmattkc commented 8 months ago

I probably need to write up a guide specifically for Linux but essentially yes all of the issues you've run into are known and have solutions/workarounds.

To get LEGO Island running in a vanilla WINEPREFIX (without the Lutris script), you need to install the official Microsoft D3DRM.DLL. This can be done most easily with winetricks d3drm. Wine's D3DRM implementation is very incomplete and will cause the crash on startup you experienced.

RGB/MMX/Ramp are software modes provided by the original DirectX, essentially different techniques of achieving software rendering. Wine only provides a single software mode/technique, Direct3D HEL (hardware emulation layer), but for all intents and purposes should work about the same.

However, due to issues with the game, there are limitations to which mode you can use when. HAL cannot be used in windowed mode, only the software modes can. This happens on Windows too, most likely a real bug in the game code. HAL mode can run in full screen, however it requires "draw 3D to video memory" and "flip surfaces" to be enabled. Software mode requires both of them to be disabled.

The missing bitmaps/FMVs in windowed mode is another issue with the game and happens on Windows too. Essentially the game has no support for 32-bit color, which is what most displays use nowadays (in full screen, it can switch the system to either 256 or 16-bit color). Windows provides a 256/16-bit compatibility mode to force the game to use that windowed, but Linux/Wine provides no such functionality AFAIK. Instead, what you'll probably want to do is run the game in full screen (possibly with Direct3D HAL) and use either Wine's "emulate virtual desktop" feature so the "full screen" is actually in a window, or use dgVoodoo (possibly alongside DXVK) which can force a full screen game into window mode as well.

resolutezach1 commented 7 months ago

Hello there,

I am using Kubuntu 23.04 and have used Kubuntu 22.04.3, and am trying to play Lego Island. However, I have had very very little success, and have not found many guides and such with assistance on how to best run the game.

Under my normal Wine prefix, I only get the video adapter options of Direct3D HEL and Direct3D HAL, both of which crash moments after starting the game, no matter what settings are enabled in Rebuilder. Trying the normal launcher also fails.

However, I stumbled across this Lutris script, which I was able to successfully use to install the game and have further success running it. With this, I now get the normal video modes of RGB, Ramp, and MMX emulation, as well as Direct3D HAL. However, only the Emulation modes work, and Direct3D HAL does not. When attempting to, the game almost immediately throws this error: image

Additionally, when set to play in Windowed mode, the three other modes are missing assets such as the LEGO FMV at the beginning, as well as backgrounds. This can be seen here: image

When running in Fullscreen, these issues are not present, but there is still a strange error where the application gets confined to a small portion of the screen in the top-left corner, yet doesn't have the capabilities of Windowed mode.

image

I understand that this is primarily unrelated to Rebuilder, but I'm reaching out as I know you have had success running Lego Island on Linux under Wine, and I was wondering if you had any information or insight as to how and why these issues are present.

Kind regards, @VoxelTek

I'm Running this on my Steam Deck (KDE Plasma/Arch Linux) and I've had similar Issues, But I also have trouble clicking in certain areas. For Example, I can't do the Brickster Chase Because I can't click on the Pizza that Papa Brickolini is holding before the Mission Starts and Speaking of the Brickolinis, I also Stuggle Clicking on the Pizzeria aswell as some other clickable areas in the game (Vehicles, Nubby's Tow-Truck Hat, Entry Doors, Building Peices, etc.). I dom't know if it's Possible to fix all thesd glitches, but it'd sure be nice to have an optional patch for these. Also on an unrelated note, I also can't Pause the game due to Steam Inputs Limitations, It'd also be nice to remap the Pause button to another key, or a button on a controller.