Add Crystal Maze Proton setup scripts, configs, and documentation
This commit is contained in:
parent
2667a91bf9
commit
f76d116ff2
6 changed files with 636 additions and 2 deletions
79
README.md
79
README.md
|
|
@ -1,2 +1,77 @@
|
|||
# CrystalMazeProton
|
||||
patched Crystal Maze that works with Proton on linux
|
||||
# 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://github.com/RebeccaNod1/CrystalMazeProton/releases/latest)**:
|
||||
- **`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: Configure DLL Overrides in Heroic
|
||||
1. In Heroic, go to **Game Settings** ➔ **Advanced tab**.
|
||||
2. Under **Environment Variables**, add:
|
||||
- **Key**: `WINEDLLOVERRIDES`
|
||||
- **Value**: `ddraw,d3dimm=n,b`
|
||||
|
||||
### Step 4: 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`).*
|
||||
|
||||
### Step 5: 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.
|
||||
|
|
|
|||
11
SKUInfo.ini
Normal file
11
SKUInfo.ini
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
[SKUInfo]
|
||||
SKU=crystalmaze
|
||||
ProductCodeName=crystalmaze
|
||||
ProductDisplayName=Crystal Maze
|
||||
DPCodeName=Crystal Maze
|
||||
ExeName=MAZE-WT.EXE
|
||||
RuntimeExeName=MAZE-WT.EXE
|
||||
LaunchExeName=MAZE-WT.EXE
|
||||
ProductGUID={52T6zs4hCQ9fUYNxkiDzFQ}
|
||||
InstallDirectory=C:\Games\Crystal Maze\
|
||||
UseLeaderboard=0
|
||||
151
crystal_maze_setup.reg
Normal file
151
crystal_maze_setup.reg
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
REGEDIT4
|
||||
|
||||
;; ==========================================================
|
||||
;; 1. DirectDraw & Direct3D DLL Overrides for dgVoodoo2
|
||||
;; ==========================================================
|
||||
[-HKEY_CURRENT_USER\Software\Wine\Direct3D]
|
||||
|
||||
[-HKEY_CURRENT_USER\Software\Wine\AppDefaults\MAZE-WT.EXE\Direct3D]
|
||||
|
||||
[HKEY_CURRENT_USER\Software\Wine\DllOverrides]
|
||||
"d3d11"="native"
|
||||
"dxgi"="native"
|
||||
"ddraw"="native,builtin"
|
||||
"d3dimm"="native,builtin"
|
||||
"wined3d"=-
|
||||
|
||||
[HKEY_CURRENT_USER\Software\Wine\AppDefaults\MAZE-WT.EXE\DllOverrides]
|
||||
"d3d11"="native"
|
||||
"dxgi"="native"
|
||||
"ddraw"="native,builtin"
|
||||
"d3dimm"="native,builtin"
|
||||
|
||||
;; ==========================================================
|
||||
;; 2. WildTangent Installed SKU Info
|
||||
;; ==========================================================
|
||||
[HKEY_LOCAL_MACHINE\Software\WildTangent]
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\WildTangent\InstalledSKUs]
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\WildTangent\InstalledSKUs\crystalmaze]
|
||||
"SKU"="crystalmaze"
|
||||
"InstallDirectory"="C:\\Games\\Crystal Maze\\"
|
||||
"RuntimeExeName"="MAZE-WT.EXE"
|
||||
"LaunchExeName"="MAZE-WT.EXE"
|
||||
"ExeName"="MAZE-WT.EXE"
|
||||
"DPCodeName"="Crystal Maze"
|
||||
"ProductGUID"="{52T6zs4hCQ9fUYNxkiDzFQ}"
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Wow6432Node\WildTangent]
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Wow6432Node\WildTangent\InstalledSKUs]
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Wow6432Node\WildTangent\InstalledSKUs\crystalmaze]
|
||||
"SKU"="crystalmaze"
|
||||
"InstallDirectory"="C:\\Games\\Crystal Maze\\"
|
||||
"RuntimeExeName"="MAZE-WT.EXE"
|
||||
"LaunchExeName"="MAZE-WT.EXE"
|
||||
"ExeName"="MAZE-WT.EXE"
|
||||
"DPCodeName"="Crystal Maze"
|
||||
"ProductGUID"="{52T6zs4hCQ9fUYNxkiDzFQ}"
|
||||
|
||||
;; ==========================================================
|
||||
;; 3. WildTangent WTDriver ActiveX COM Registration
|
||||
;; ==========================================================
|
||||
[HKEY_CLASSES_ROOT\CLSID\{FA13A9FA-CA9B-11D2-9780-00104B242EA3}]
|
||||
@="WildTangent WTDriver"
|
||||
|
||||
[HKEY_CLASSES_ROOT\CLSID\{FA13A9FA-CA9B-11D2-9780-00104B242EA3}\InprocServer32]
|
||||
@="C:\\Games\\Crystal Maze\\WebDriver\\webdriver.dll"
|
||||
"ThreadingModel"="Apartment"
|
||||
|
||||
[HKEY_CLASSES_ROOT\CLSID\{FA13A9FA-CA9B-11D2-9780-00104B242EA3}\ProgID]
|
||||
@="WT.WT.1"
|
||||
|
||||
[HKEY_CLASSES_ROOT\CLSID\{FA13A9FA-CA9B-11D2-9780-00104B242EA3}\VersionIndependentProgID]
|
||||
@="WT.WT"
|
||||
|
||||
[HKEY_CLASSES_ROOT\CLSID\{FA13A9FA-CA9B-11D2-9780-00104B242EA3}\TypeLib]
|
||||
@="{FA13AA2E-CA9B-11D2-9780-00104B242EA3}"
|
||||
|
||||
[HKEY_CLASSES_ROOT\CLSID\{FA13A9FA-CA9B-11D2-9780-00104B242EA3}\Control]
|
||||
@=""
|
||||
|
||||
[HKEY_CLASSES_ROOT\WT.WT]
|
||||
@="WildTangent WTDriver"
|
||||
|
||||
[HKEY_CLASSES_ROOT\WT.WT\CLSID]
|
||||
@="{FA13A9FA-CA9B-11D2-9780-00104B242EA3}"
|
||||
|
||||
[HKEY_CLASSES_ROOT\WT.WT\CurVer]
|
||||
@="WT.WT.1"
|
||||
|
||||
[HKEY_CLASSES_ROOT\WT.WT.1]
|
||||
@="WildTangent WTDriver"
|
||||
|
||||
[HKEY_CLASSES_ROOT\WT.WT.1\CLSID]
|
||||
@="{FA13A9FA-CA9B-11D2-9780-00104B242EA3}"
|
||||
|
||||
[HKEY_CLASSES_ROOT\TypeLib\{FA13AA2E-CA9B-11D2-9780-00104B242EA3}\1.0]
|
||||
@="WT3DLib"
|
||||
|
||||
[HKEY_CLASSES_ROOT\TypeLib\{FA13AA2E-CA9B-11D2-9780-00104B242EA3}\1.0\0\win32]
|
||||
@="C:\\Games\\Crystal Maze\\WebDriver\\webdriver.dll"
|
||||
|
||||
[HKEY_CLASSES_ROOT\Interface\{BDB9B021-CAFF-11D2-9780-00104B242EA3}]
|
||||
@="IWT"
|
||||
|
||||
[HKEY_CLASSES_ROOT\Interface\{BDB9B021-CAFF-11D2-9780-00104B242EA3}\ProxyStubClsid32]
|
||||
@="{00020424-0000-0000-C000-000000000046}"
|
||||
|
||||
[HKEY_CLASSES_ROOT\Interface\{BDB9B021-CAFF-11D2-9780-00104B242EA3}\TypeLib]
|
||||
@="{FA13AA2E-CA9B-11D2-9780-00104B242EA3}"
|
||||
"Version"="1.0"
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{FA13A9FA-CA9B-11D2-9780-00104B242EA3}]
|
||||
@="WildTangent WTDriver"
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{FA13A9FA-CA9B-11D2-9780-00104B242EA3}\InprocServer32]
|
||||
@="C:\\Games\\Crystal Maze\\WebDriver\\webdriver.dll"
|
||||
"ThreadingModel"="Apartment"
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{FA13A9FA-CA9B-11D2-9780-00104B242EA3}\Control]
|
||||
@=""
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{FA13A9FA-CA9B-11D2-9780-00104B242EA3}\ProgID]
|
||||
@="WT.WT.1"
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{FA13A9FA-CA9B-11D2-9780-00104B242EA3}\VersionIndependentProgID]
|
||||
@="WT.WT"
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{FA13A9FA-CA9B-11D2-9780-00104B242EA3}\TypeLib]
|
||||
@="{FA13AA2E-CA9B-11D2-9780-00104B242EA3}"
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Classes\Interface\{BDB9B021-CAFF-11D2-9780-00104B242EA3}]
|
||||
@="IWT"
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Classes\Interface\{BDB9B021-CAFF-11D2-9780-00104B242EA3}\ProxyStubClsid32]
|
||||
@="{00020424-0000-0000-C000-000000000046}"
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Classes\Interface\{BDB9B021-CAFF-11D2-9780-00104B242EA3}\TypeLib]
|
||||
@="{FA13AA2E-CA9B-11D2-9780-00104B242EA3}"
|
||||
"Version"="1.0"
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Wow6432Node\Classes\CLSID\{FA13A9FA-CA9B-11D2-9780-00104B242EA3}]
|
||||
@="WildTangent WTDriver"
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Wow6432Node\Classes\CLSID\{FA13A9FA-CA9B-11D2-9780-00104B242EA3}\InprocServer32]
|
||||
@="C:\\Games\\Crystal Maze\\WebDriver\\webdriver.dll"
|
||||
"ThreadingModel"="Apartment"
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Wow6432Node\Classes\CLSID\{FA13A9FA-CA9B-11D2-9780-00104B242EA3}\Control]
|
||||
@=""
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Wow6432Node\Classes\CLSID\{FA13A9FA-CA9B-11D2-9780-00104B242EA3}\ProgID]
|
||||
@="WT.WT.1"
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Wow6432Node\Classes\CLSID\{FA13A9FA-CA9B-11D2-9780-00104B242EA3}\VersionIndependentProgID]
|
||||
@="WT.WT"
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Wow6432Node\Classes\CLSID\{FA13A9FA-CA9B-11D2-9780-00104B242EA3}\TypeLib]
|
||||
@="{FA13AA2E-CA9B-11D2-9780-00104B242EA3}"
|
||||
334
dgVoodoo.conf
Normal file
334
dgVoodoo.conf
Normal file
|
|
@ -0,0 +1,334 @@
|
|||
;==========================================================================
|
||||
; === Text based config file for dgVoodoo2
|
||||
; === Use this file if you are a game modder/hacker or an experted user and
|
||||
; want to modify some advanced properties not available via the CPL.
|
||||
;==========================================================================
|
||||
|
||||
Version = 0x280
|
||||
|
||||
;--------------------------------------------------------------------------
|
||||
|
||||
[General]
|
||||
|
||||
; OutputAPI: "d3d11warp", "d3d11_fl10_0", "d3d11_fl10_1", "d3d11_fl11_0",
|
||||
; "d3d12_fl11_0", "d3d12_fl12_0", "bestavailable"
|
||||
; Adapters: "all", or the ordinal of the adapter (1, ...)
|
||||
;FullScreenOutput: "default", or the ordinal of the output on the adapter (1, ...)
|
||||
; ScalingMode: "unspecified", "centered", "stretched", "centered_ar", "stretched_ar", "stretched_ar_crt",
|
||||
; "stretched_4_3", "stretched_4_3_crt", "stretched_4_3_c64"
|
||||
;
|
||||
;InheritColorProfileInFullScreenMode:
|
||||
; Enabled by default and can only be disabled only when a D3D11 output API
|
||||
; is explicitly selected. Disabled case is intended for avoiding extra
|
||||
; rendering resources on old hardware for better performance, if required.
|
||||
|
||||
OutputAPI = bestavailable
|
||||
Adapters = all
|
||||
FullScreenOutput = default
|
||||
FullScreenMode = false
|
||||
ScalingMode = unspecified
|
||||
ProgressiveScanlineOrder = false
|
||||
EnumerateRefreshRates = false
|
||||
|
||||
Brightness = 100
|
||||
Color = 100
|
||||
Contrast = 100
|
||||
InheritColorProfileInFullScreenMode = true
|
||||
|
||||
KeepWindowAspectRatio = false
|
||||
CaptureMouse = false
|
||||
CenterAppWindow = false
|
||||
|
||||
;--------------------------------------------------------------------------
|
||||
|
||||
[GeneralExt]
|
||||
|
||||
; DesktopResolution: Desktop (native) resolution can be forced for dgVoodoo's internal calculations.
|
||||
; Useful for rare applications that pre-set the desktop to other than the native
|
||||
; resolution before dgVoodoo gets in action. Only the compact format can be used here,
|
||||
; and applies to all outputs of the desktop.
|
||||
; DesktopBitDepth: You can define what screen bit depth should be reported through dgVoodoo
|
||||
; (8, 16, 32)
|
||||
; DeframerSize: When resolution is forced to other than the app default then
|
||||
; a black frame is drawn around the output image coming from a wrapped API
|
||||
; to remove scaling artifacts -
|
||||
; frame thickness can be defined in pixels (max 16, 0 = disable)
|
||||
; ImageScaleFactor: Integer factor for scaling the output image coming from a wrapped API
|
||||
; Always done by nearest point filtering, independent on scaling mode
|
||||
; (0 = max available)
|
||||
; Separate factors can be defined for horizontal and vertical scaling
|
||||
; by subproperties, e.g.
|
||||
; ImageScaleFactor = x:3, y:2
|
||||
; CursorScaleFactor: Integer factor for scaling the emulated hardware mouse (max 16)
|
||||
; (0 = automatic, 1 = no scale, 2 = double scale, ...)
|
||||
; DisplayROI: Display region of interest
|
||||
; If scaling is done by the dgVoodoo then you can define a subrect of the
|
||||
; output image, coming from a wrapped API, to be displayed. The defined subrect
|
||||
; is mapped to the display output according to the current scaling mode
|
||||
; It can be useful for applications rendering a widescreen subimage into a 4:3
|
||||
; resolution; in this case you can scale up that subimage to (nearly) fill the
|
||||
; whole screen on a widescreen monitor.
|
||||
; DisplayROI empty value means the whole image.
|
||||
; DisplayROI value can be a proportion in form of %d_%d or a pixel size (%d|%d)
|
||||
; Pos subproperty is not mandatory and can be 'centered' or a pixel position (%d|%d)
|
||||
; Examples: DisplayROI = 16_9, pos:centered
|
||||
; DisplayROI = (320|200), pos:(10|10)
|
||||
; Resampling: When scaling is done by the dgVoodoo for the given scaling mode,
|
||||
; you can choose which filter is to be used for resampling the output image
|
||||
; Available filters are: "pointsampled", "bilinear", "bicubic", "lanczos-2", "lanczos-3"
|
||||
; PresentationModel: Low-level swapchain swap effect: if you know what you are doing then it can be
|
||||
; overridden here. Flip models are better suited for modern OS features like auto HDR,
|
||||
; while plain legacy models provide the best presentation performance under ideal conditions
|
||||
; Not all model + output API + OS version combinations are supported.
|
||||
; "auto", "discard", "seq", "flip_discard", "flip_seq"
|
||||
; FreeMouse: If true then physical mouse is free to move inside the game window
|
||||
; when using emulated scaling and/or application and forced resolution
|
||||
; differs; can be useful when a game relies on the physical window size
|
||||
; WindowedAttributes: You can define attributes for forced windowed appearance (separated by commas):
|
||||
; "borderless" - forces the app window not have any border
|
||||
; "alwaysontop" - forces the app window into the top-most band
|
||||
; "fullscreensize" - forces the app window to be full screen size with image scaling inside
|
||||
; FullscreenAttributes: You can define attributes for fullscreen appearance (separated by commas):
|
||||
; "fake" - forces fake fullscreen mode with a screen-size window
|
||||
; FPSLimit: An integer or rational (fractional) value, 0 = unlimited
|
||||
; Environment: Software environment in which dgVoodoo is running: can be left unspecified (native)
|
||||
; or can be set to 'DosBox' or 'QEmu'.
|
||||
; SystemHookFlags: You can define which part of the system should be hooked (x86-DX only):
|
||||
; "gdi" - for showing graphical contents rendered through GDI
|
||||
; (like movie playback through the ancient Windows Multimedia AVI player library)
|
||||
; "cursor" - for suppressing double-cursor symptoms when the cursor is emulated
|
||||
|
||||
DesktopResolution =
|
||||
DesktopBitDepth =
|
||||
DeframerSize = 0
|
||||
ImageScaleFactor = 1
|
||||
CursorScaleFactor = 0
|
||||
DisplayROI =
|
||||
Resampling = bilinear
|
||||
PresentationModel = auto
|
||||
FreeMouse = false
|
||||
WindowedAttributes =
|
||||
FullscreenAttributes =
|
||||
FPSLimit = 0
|
||||
Environment =
|
||||
SystemHookFlags = gdi
|
||||
|
||||
;--------------------------------------------------------------------------
|
||||
|
||||
[Glide]
|
||||
|
||||
; VideoCard: "voodoo_graphics", "voodoo_rush", "voodoo_2", "voodoo_banshee", "other_greater"
|
||||
; OnboardRAM: in MBs
|
||||
; MemorySizeOfTMU: in kBs
|
||||
; TMUFiltering: "appdriven", "pointsampled", "bilinear"
|
||||
;
|
||||
; Resolution: either "unforced", "max", "max_isf", "max_fhd", "max_fhd_isf", "max_qhd", "max_qhd_isf", "desktop", "%dx",
|
||||
; "max_%dx", "max_isf_%dx", "max_fhd_%dx", "max_fhd_isf_%d"x, "max_qhd_%dx", "max_qhd_isf_%dx", "desktop_%dx"
|
||||
; or subproperties: h: horizontal, v: vertical
|
||||
; + optional subproperty refrate: refresh rate in Hz
|
||||
; e.g. Resolution = max, refrate:60
|
||||
; Resolution = 2x, refrate:59
|
||||
; Resolution = h:1280, v:1024, refrate:75
|
||||
; Resolution = max_2x
|
||||
; or just use the compact form like "1024x768@60" or "512x384"
|
||||
;
|
||||
;Antialiasing: "off", "appdriven", "2x", "4x", "8x", "16x" (your GPU must support the chosen one)
|
||||
|
||||
VideoCard = voodoo_2
|
||||
OnboardRAM = 8
|
||||
MemorySizeOfTMU = 4096
|
||||
NumberOfTMUs = 2
|
||||
TMUFiltering = appdriven
|
||||
DisableMipmapping = false
|
||||
Resolution = unforced
|
||||
Antialiasing = appdriven
|
||||
|
||||
EnableGlideGammaRamp = true
|
||||
ForceVerticalSync = true
|
||||
ForceEmulatingTruePCIAccess = false
|
||||
16BitDepthBuffer = false
|
||||
3DfxWatermark = false
|
||||
3DfxSplashScreen = false
|
||||
PointcastPalette = false
|
||||
EnableInactiveAppState = false
|
||||
|
||||
|
||||
;--------------------------------------------------------------------------
|
||||
|
||||
[GlideExt]
|
||||
|
||||
; DitheringEffect: "pure32bit", "dither2x2", "dither4x4"
|
||||
; Dithering: "disabled", "appdriven", "forcealways"
|
||||
; DitherOrderedMatrixSizeScale: integer scale value for dither matrix size
|
||||
; 1 = normal, 2 = double size, etc.
|
||||
; 0 = automatic (the aim is to have some retro feel&look)
|
||||
|
||||
DitheringEffect = pure32bit
|
||||
Dithering = forcealways
|
||||
DitherOrderedMatrixSizeScale = 0
|
||||
|
||||
;--------------------------------------------------------------------------
|
||||
|
||||
[DirectX]
|
||||
|
||||
; VideoCard: "svga", "internal3D", "geforce_ti_4800", "ati_radeon_8500",
|
||||
; "matrox_parhelia-512", "geforce_fx_5700_ultra", "geforce_9800_gt"
|
||||
; VRAM: in MBs (default) or in GBs (e.g. VRAM = 2GB)
|
||||
; Filtering: "appdriven", "pointsampled", "bilinear", "linearmip", "trilinear"
|
||||
; or the integer value of an anisotropic filtering level (1-16)
|
||||
; KeepFilterIfPointSampled: if enabled then forced filtering affects only non-point sampled textures
|
||||
; Bilinear2DOperations: if enabled then DirectDraw Blit and CPU-written data is transferred with bilinear scaling
|
||||
|
||||
DisableAndPassThru = false
|
||||
|
||||
VideoCard = geforce_fx_5700_ultra
|
||||
VRAM = 512
|
||||
Filtering = appdriven
|
||||
KeepFilterIfPointSampled = false
|
||||
DisableMipmapping = false
|
||||
Resolution = unforced
|
||||
Antialiasing = appdriven
|
||||
|
||||
AppControlledScreenMode = true
|
||||
DisableAltEnterToToggleScreenMode = true
|
||||
|
||||
Bilinear2DOperations = true
|
||||
PhongShadingWhenPossible = false
|
||||
ForceVerticalSync = false
|
||||
dgVoodooWatermark = false
|
||||
FastVideoMemoryAccess = true
|
||||
|
||||
;--------------------------------------------------------------------------
|
||||
|
||||
[DirectXExt]
|
||||
|
||||
; AdapterIDType: "nvidia", "amd", "intel" or leave it undefined
|
||||
; You can define what type of driver version and vendor id's the wrapper should report to
|
||||
; the application; Some games rely on that information so it can be useful for them
|
||||
; Can be defined only for SVGA and Internal3D card types; the others have their own wired
|
||||
; information
|
||||
|
||||
; VendorID, DeviceID, SubsystemID, RevisionID:
|
||||
; Can be defined only for SVGA and Internal3D card types
|
||||
; You can overwrite these properties even if a non-default AdapterIDType is defined;
|
||||
; say, you defined an nvidia id type but would like to refine the vendor id
|
||||
|
||||
; DefaultEnumeratedResolutions: you can define what resolutions should be enumerated to the application by default
|
||||
; "all", "classics", "none"
|
||||
|
||||
; ExtraEnumeratedResolutions: you can add extra resolutions (separated by commas, max 16) that will get
|
||||
; enumerated to the application as display adapter supported ones -
|
||||
; can be useful if an app supports rendering at arbitrary resolutions
|
||||
; and you have a particular favorite resolution that are not
|
||||
; enumerated to the application by default
|
||||
; you can either use the compact resolution format here, or
|
||||
; "max", "max@refrate" meaning your desktop resolution with a potential refresh rate, or
|
||||
; "max_4_3", "max_4_3@refrate", "max_16_9", "max_16_9@refrate"
|
||||
; meaning the maximum resolution with the given aspect ratio calculated from
|
||||
; the desktop resolution with the given refresh rate, e.g. "max_4_3@60", "max_16_9"
|
||||
|
||||
; EnumeratedResolutionBitdepths: you can filter what bitdepths are included in the resolution enumeration
|
||||
; any subset of {"8", "16", "32"}, or "all"
|
||||
|
||||
; DitheringEffect: "pure32bit", "ordered2x2", "ordered4x4"
|
||||
; Dithering: "disabled", "appdriven", "forceon16bit", "forcealways"
|
||||
; DitherOrderedMatrixSizeScale: integer scale value for dither matrix size
|
||||
; 1 = normal, 2 = double size, etc.
|
||||
; 0 = automatic
|
||||
; DepthBuffersBitDepth: internal bit depth of depth/stencil buffers for 3D rendering (32 bit is not recommended)
|
||||
; "appdriven", "forcemin24bit", "force32bit"
|
||||
; Default3DRenderFormat: default format of 3D rendering
|
||||
; argb2101010 gives higher dynamic range but it can break the rendering
|
||||
; "argb8888", "argb2101010"
|
||||
|
||||
; MaxVSConstRegisters: Max number of vertex shader constant registers (DX8/9 only)
|
||||
; Can be defined only for SVGA and Internal3D card types
|
||||
; Valid values are 256 (default), 512 or 1024
|
||||
|
||||
; NPatchTesselationLevel: Force N-Patch tesselation level (D3D8/9)
|
||||
; 0 = app driven
|
||||
; 1 = disable
|
||||
; 2 to 8 = a forced tesselation level
|
||||
; Altough tesselation works with all vertex shader versions, you can force level higher than 1
|
||||
; only for the fixed function or vs.1.x vertex pipeline because of performance and practical reasons
|
||||
; (forced tesselation also disables adaptive mode (D3D9), but forcing is not recommended at all, anyway)
|
||||
|
||||
; DisplayOutputEnableMask: Each bit in this 32 bit value corresponds to a display output. Display outputs of the adapters are numbered
|
||||
; sequentially. If Adapter0 has n display outputs and Adapter1 has m display outputs attached then the lowest
|
||||
; n bits match Adapter0 display outputs, the next m bits match Adapter1 outputs, and so on. The lowest bit
|
||||
; in a group corresponds to Output0. If a bit value is 0 then the display output is disabled for the device
|
||||
; enumeration, in other words, it is invisible to the application. It can be useful for D3D9 multihead-
|
||||
; or very special applications where you want to enable only individual displays on your monitor wall.
|
||||
|
||||
; MSD3DDeviceNames: if true then original Microsoft D3D device names are exposed
|
||||
; (some applications check for them and they fail)
|
||||
|
||||
; RTTexturesForceScaleAndMSAA: if true then forced resolution scaling and MSAA is
|
||||
; applied also to rendertarget textures
|
||||
; Set it to false for games requiring pixel-precise rendering
|
||||
; but be careful it can EASILY break certain things, not recommended
|
||||
|
||||
; SmoothedDepthSampling: if true then extra smoothing is added to depth textures
|
||||
; when they are sampled
|
||||
|
||||
; DeferredScreenModeSwitch: If true the switching to full screen is deferred after the application initialized
|
||||
; the DirectX device; can be useful for games that don't expect rendering window changes
|
||||
; during initialization and crash
|
||||
|
||||
; PrimarySurfaceBatchedUpdate: If true then direct changes of the primary surface are batched together for presenting them
|
||||
; If false then each change is instantly presented (debug-like mode)
|
||||
|
||||
AdapterIDType =
|
||||
VendorID =
|
||||
DeviceID =
|
||||
SubsystemID =
|
||||
RevisionID =
|
||||
|
||||
DefaultEnumeratedResolutions = all
|
||||
ExtraEnumeratedResolutions =
|
||||
EnumeratedResolutionBitdepths = all
|
||||
|
||||
DitheringEffect = pure32bit
|
||||
Dithering = forcealways
|
||||
DitherOrderedMatrixSizeScale = 0
|
||||
DepthBuffersBitDepth = appdriven
|
||||
Default3DRenderFormat = argb8888
|
||||
|
||||
MaxVSConstRegisters = 256
|
||||
|
||||
NPatchTesselationLevel = 0
|
||||
|
||||
DisplayOutputEnableMask = 0xffffffff
|
||||
|
||||
MSD3DDeviceNames = false
|
||||
RTTexturesForceScaleAndMSAA = true
|
||||
SmoothedDepthSampling = true
|
||||
DeferredScreenModeSwitch = false
|
||||
PrimarySurfaceBatchedUpdate = true
|
||||
|
||||
;--------------------------------------------------------------------------
|
||||
|
||||
[Debug]
|
||||
|
||||
; This section affects only debug/spec release builds
|
||||
;
|
||||
; Info, Warning, Error
|
||||
; "Disable" - disables all messages and debugger break
|
||||
; "Enable" - enables messages and disables debugger break
|
||||
; "EnableBreak" - enables both messages and breaking into debugger
|
||||
;
|
||||
; MaxTraceLevel: Maximum level of tracing API calls
|
||||
; 0 - Disable
|
||||
; 1 - API Functions and methods
|
||||
; 2 - Additional trace info for internals
|
||||
;
|
||||
; LogToFile: if false or debugger is detected then output goes to the debug output
|
||||
; if true and no debugger detected then output goes to 'dgVoodoo.log'
|
||||
; (not implemented yet, always the default debug output is used)
|
||||
|
||||
Info = enable
|
||||
Warning = enable
|
||||
Error = enable
|
||||
MaxTraceLevel = 0
|
||||
|
||||
;LogToFile = false
|
||||
49
setup_prefix.sh
Executable file
49
setup_prefix.sh
Executable file
|
|
@ -0,0 +1,49 @@
|
|||
#!/bin/bash
|
||||
# ==========================================================
|
||||
# Crystal Maze - Prefix Setup Script
|
||||
# Configures a Wine/Proton prefix with required registry keys,
|
||||
# wt3d config files, and DirectX overrides.
|
||||
# ==========================================================
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
# Detect Wine prefix
|
||||
PREFIX="${WINEPREFIX:-$1}"
|
||||
if [ -z "$PREFIX" ]; then
|
||||
echo "Usage: $0 /path/to/wineprefix"
|
||||
echo "Or set WINEPREFIX environment variable."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[*] Setting up Crystal Maze in prefix: $PREFIX"
|
||||
|
||||
# Create required config directories
|
||||
mkdir -p "$PREFIX/drive_c/ProgramData/WildTangent/WebDriverConfig"
|
||||
mkdir -p "$PREFIX/drive_c/Program Files/WildTangent/WebDriverConfig"
|
||||
mkdir -p "$PREFIX/drive_c/Program Files (x86)/WildTangent/WebDriverConfig"
|
||||
mkdir -p "$PREFIX/drive_c/WildTangent/WebDriverConfig"
|
||||
mkdir -p "$PREFIX/drive_c/windows/wt"
|
||||
|
||||
# Copy wt3d.ini configuration
|
||||
cp -f "$SCRIPT_DIR/wt3d.ini" "$PREFIX/drive_c/ProgramData/WildTangent/WebDriverConfig/wt3d.ini"
|
||||
cp -f "$SCRIPT_DIR/wt3d.ini" "$PREFIX/drive_c/Program Files/WildTangent/WebDriverConfig/wt3d.ini"
|
||||
cp -f "$SCRIPT_DIR/wt3d.ini" "$PREFIX/drive_c/Program Files (x86)/WildTangent/WebDriverConfig/wt3d.ini"
|
||||
cp -f "$SCRIPT_DIR/wt3d.ini" "$PREFIX/drive_c/WildTangent/WebDriverConfig/wt3d.ini"
|
||||
|
||||
# Copy patched driver to windows/wt
|
||||
if [ -f "$SCRIPT_DIR/WebDriver/dx7drv.dll" ]; then
|
||||
cp -f "$SCRIPT_DIR/WebDriver/dx7drv.dll" "$PREFIX/drive_c/windows/wt/dx7drv.dll"
|
||||
fi
|
||||
|
||||
# Detect wine / proton runner
|
||||
WINE_BIN="wine"
|
||||
if [ -n "$WINE" ]; then
|
||||
WINE_BIN="$WINE"
|
||||
elif command -v wine &>/dev/null; then
|
||||
WINE_BIN="wine"
|
||||
fi
|
||||
|
||||
echo "[*] Importing registry settings..."
|
||||
WINEPREFIX="$PREFIX" "$WINE_BIN" regedit "$SCRIPT_DIR/crystal_maze_setup.reg" 2>/dev/null || true
|
||||
|
||||
echo "[+] Crystal Maze prefix configuration complete!"
|
||||
14
wt3d.ini
Executable file
14
wt3d.ini
Executable file
|
|
@ -0,0 +1,14 @@
|
|||
[WT3D_CFG]
|
||||
Version=0.0.0.0
|
||||
UseHardware=2
|
||||
EnableTextures=2
|
||||
EnableTextureFiltering=2
|
||||
EnableTransparency=2
|
||||
EnableAlphaTest=2
|
||||
MaxTextureCount=1024
|
||||
MaxBitmapCount=2048
|
||||
MaxObjectCount=768
|
||||
SoftwareRenderer=0
|
||||
Enable8Bit=0
|
||||
FPS=30
|
||||
EnableOverlay=1
|
||||
Loading…
Reference in a new issue