73 lines
4.1 KiB
Markdown
73 lines
4.1 KiB
Markdown
# Crystal Maze (WildTangent) - Modern Proton & Linux Fix 🎮
|
||
|
||
A pre-configured, patched setup to run the classic 2000s WildTangent 3D casual game **Crystal Maze** (starring Lily) on modern Linux distributions and the Steam Deck using **Proton / Wine** (via Heroic Games Launcher, Lutris, or Steam).
|
||
|
||
---
|
||
|
||
## 📥 Download
|
||
|
||
Grab the complete pre-patched release package from the **[Releases Page](https://git.richardf.us/rebeccanod1/CrystalMazeProton/releases)**:
|
||
- **`Crystal-Maze-Proton-Ready.zip`**
|
||
|
||
---
|
||
|
||
## 🛠️ What Was Fixed?
|
||
|
||
Out of the box on modern systems and Wine, Crystal Maze suffered from multiple game-breaking incompatibilities:
|
||
|
||
1. **Infinite 100% CPU Lockup on Modern GPUs**:
|
||
- `WebDriver/dx7drv.dll` originally performed signed 16-bit integer texture size checks. Modern GPUs with large VRAM caused this loop to overflow and hang indefinitely.
|
||
- **Fix**: Patched `dx7drv.dll` at offsets `0x8dbc` and `0x8dc7` (`0f bf` ➔ `0f b7`, `movsx` ➔ `movzx`) and clamped maximum texture dimensions.
|
||
2. **Missing ActiveX / COM Registration (Silent Black Screen & No Audio)**:
|
||
- `MAZE-WT.EXE` is an ATL host application that instantiates the 3D engine via ActiveX CLSID `{FA13A9FA-CA9B-11D2-9780-00104B242EA3}` (`WTDriver`). Because `webdriver.dll`'s `DllRegisterServer` was a dummy stub in the original installer, COM instantiation silently failed in Wine, causing the engine to skip level and audio loading.
|
||
- **Fix**: `crystal_maze_setup.reg` properly registers `WTDriver`, `IWT`, and typelibs in `HKEY_CLASSES_ROOT` and `HKEY_LOCAL_MACHINE`.
|
||
3. **Runtime Attribute Crash on Startup**:
|
||
- The game originally queried unpopulated registry runtime attributes, causing fatal exception dialogs.
|
||
- **Fix**: Patched the exception handler in `MAZE-WT.EXE` to safely fallback.
|
||
4. **DirectDraw 7 / Direct3D Translation**:
|
||
- Bundled **dgVoodoo 2.8.2** (`DDraw.dll` and `D3DImm.dll`) with custom configuration (`DeframerSize = 0`, watermarks disabled) translating DirectDraw 7 to Direct3D 11, which DXVK then maps to Vulkan at a locked 60 FPS.
|
||
|
||
---
|
||
|
||
## 🚀 Quick Setup Guide (Heroic Games Launcher)
|
||
|
||
### Step 1: Extract the Game
|
||
Download and extract `Crystal-Maze-Proton-Ready.zip` to your desired folder (e.g. `~/Games/Crystal Maze` or inside your Wine prefix).
|
||
|
||
### Step 2: Add Game to Heroic
|
||
1. Open **Heroic Games Launcher**.
|
||
2. Click **Add Game** ➔ **Sideload Game**.
|
||
3. Fill in the details:
|
||
- **Game Title**: `Crystal Maze`
|
||
- **Select Executable**: Browse to `MAZE-WT.EXE` inside your extracted folder.
|
||
- **Working Directory**: The extracted `Crystal Maze` folder.
|
||
- **Wine Version**: Select **GE-Proton9-27** (or any modern **GE-Proton 9.x / Proton 9+** installed via Heroic's Wine Manager).
|
||
- **Wine Prefix**: Choose any folder (e.g. `~/Heroic Games/Prefixes/crystal maze`).
|
||
|
||
### Step 3: Run Prefix Setup (Once)
|
||
Open a terminal in the game folder and run:
|
||
```bash
|
||
bash setup_prefix.sh "/path/to/your/wineprefix"
|
||
```
|
||
*(Alternatively, in Heroic: go to **Wine Settings** ➔ click **"Run EXE on Prefix"** and select `setup_prefix.sh` or import `crystal_maze_setup.reg`).*
|
||
|
||
> **Note**: `setup_prefix.sh` automatically configures all required COM classes, SKU metadata, and DirectDraw DLL overrides directly into the prefix registry, so no manual environment variables or extra settings are needed!
|
||
|
||
### Step 4: Play!
|
||
Click **Play** in Heroic. Lily, the 3D maze, and original sound/music will launch immediately!
|
||
|
||
---
|
||
|
||
## 📂 Repository Contents
|
||
|
||
- `setup_prefix.sh`: One-click Bash script to copy driver configs and register COM components in a target Wine prefix.
|
||
- `crystal_maze_setup.reg`: Standalone Windows registry file containing all required COM CLSIDs, SKU info, and DLL overrides.
|
||
- `dgVoodoo.conf`: Pre-tuned dgVoodoo 2.8.2 configuration (no watermark, window aspect ratio fixes, DeframerSize disabled).
|
||
- `SKUInfo.ini`: WildTangent SKU configuration required to prevent CRT save aborts.
|
||
- `wt3d.ini`: Core 3D engine driver settings.
|
||
|
||
---
|
||
|
||
## 📜 Credits & Preservation
|
||
|
||
Crystal Maze originally developed by WildTangent (2003–2006). This repository is intended for digital preservation and compatibility on modern Linux/Proton systems.
|