User Tools

Site Tools


games:wine:diablo_2

Information

  • Diablo II 1)
  • Diablo II: Lord of Destruction
  • GLIDE3-to-OpenGL-Wrapper 2)

Prerequisites

Notes

  • Lord of Destruction is not standalone and requires Diablo II
  • This is the original client with CD keys and TCP/IP multiplayer; see Diablo II: Resurrected for the modern version

Install

Diablo II

mkdir -p ~/'.wine' && WINEPREFIX=~/'.wine/Diablo II' WINEARCH='win32' winetricks 'winxp' && sync && PULSE_LATENCY_MSEC='400' WINEDEBUG='' WINEPREFIX=~/'.wine/Diablo II' wine ~/'Downloads/Diablo II/D2-1.14b-Installer-enUS/Installer.exe'

Lord of Destruction

sync && PULSE_LATENCY_MSEC='400' WINEDEBUG='' WINEPREFIX=~/'.wine/Diablo II' wine ~/'Downloads/Diablo II/D2LOD-1.14b-Installer-enUS/Installer.exe'

Patch

  • 1.14d
sync && PULSE_LATENCY_MSEC='400' MESA_SHADER_CACHE_DIR=~/'.wine/Diablo II' WINEDEBUG='' WINEPREFIX=~/'.wine/Diablo II' wine ~/'Downloads/Diablo II/LODPatch_114d.exe'

Glide Wrapper

  • TODO: Local file commands like above

Online

wget -O '/tmp/gl32ogl14e.zip' 'http://www.svenswrapper.de/gl32ogl14e.zip' && unzip '/tmp/gl32ogl14e.zip' 'glide3x.dll' 'glide-init.exe' -d ~/'.wine/Diablo II/drive_c/Program Files/Diablo II' && rm -f '/tmp/gl32ogl14e.zip' && sync

Clean Up

rm -R ~/'Downloads/Diablo II' ~/'Desktop/Diablo II - Lord of Destruction.desktop' && sync

Glide Wrapper

  • 2024/01/02: Intel UHD 630 with Zink required WGL_EXT_swap_control unchecked to avoid a blackscreen during the test
  • Hauptmenu → Deutsch/English
  • OpenGL-infos → Query OpenGL-infos
  • settings → [x] captured mouse
  • settings → [x] desktopresolution
  • renderer → 108 MB texture-memory
  • renderer → 4096×4096 buffer-texture-size
  • renderer → [x] 32 bit rendering
  • renderer → [x] bilinear filtering
  • renderer → [x] keep desktop composition
  • Extensions → [x] WGL_ARB_render_texture
  • renderer → [x] supersampling
  • Test 3)
  • Quit
cd ~/'.wine/Diablo II/drive_c/Program Files/Diablo II' && MESA_SHADER_CACHE_DIR=~/'.wine/Diablo II' WINEPREFIX=~/'.wine/Diablo II' wine ~/'.wine/Diablo II/drive_c/Program Files/Diablo II/glide-init.exe'

Zink

cd ~/'.wine/Diablo II/drive_c/Program Files/Diablo II' && MESA_SHADER_CACHE_DIR=~/'.wine/Diablo II' WINEPREFIX=~/'.wine/Diablo II' MESA_LOADER_DRIVER_OVERRIDE='zink' MESA_VK_WSI_PRESENT_MODE='immediate' wine ~/'.wine/Diablo II/drive_c/Program Files/Diablo II/glide-init.exe'

Reset Settings

WINEPREFIX=~/'.wine/Diablo II' wine reg DELETE 'HKCU\Software\GLIDE3toOpenGL' /f

Notes

  • WGL_ARB_render_texture seems to work 4) but querying OpenGL info causes the extension to not be available. If enabled, it presents a X11DRV_wglBindTexImageARB partial stub fixme in Terminal, but other than that, it seems to work fine and allows supersampling to be enabled under renderer settings which does make D2 look a little bit sharper
  • captured mouse enabled is required to prevent the cursor from “going offscreen” on the right-side of the D2 window
  • keep desktop composition prevents dwmapi-related stub/fixme errors from appearing; I don't believe it has any actual visible effect either way

Desktop Launcher

Initial

rm -Rf ~/'.local/share/applications/wine/Programs/Diablo II' ~/'.local/share/applications/wine/Programs/Diablo II' && mkdir -p ~/'.local/share/applications/wine/Programs/Diablo II'

Lord of Destruction

nano ~/'.local/share/applications/wine/Programs/Diablo II/Diablo II: Lord of Destruction.desktop'
[Desktop Entry]
Name=Diablo II: Lord of Destruction
Categories=Game;AdventureGame;RolePlaying
Exec='/bin/bash' -c "cd ~/'.wine/Diablo II/drive_c/Program Files/Diablo II' && PULSE_LATENCY_MSEC='400' MESA_SHADER_CACHE_DIR=~/'.wine/Diablo II' WINEPREFIX=~/'.wine/Diablo II' wine ~/'.wine/Diablo II/drive_c/Program Files/Diablo II/Diablo II.exe' -3dfx"
Type=Application
StartupNotify=true
Icon=0913_Diablo II.0
StartupWMClass=game.exe
Actions=Kill;Glide;Saves;Notes;

[Desktop Action Kill]
Exec='/bin/bash' -c "WINEPREFIX=~/'.wine/Diablo II' wineserver --kill"
Exec='/bin/killall' -9 'Game.exe'
Name=Force-close Diablo II

[Desktop Action Glide]
Exec='/bin/bash' -c "MESA_SHADER_CACHE_DIR=~/'.wine/Diablo II' WINEPREFIX=~/'.wine/Diablo II' wine ~/'.wine/Diablo II/drive_c/Program Files/Diablo II/glide-init.exe'"
Name=Glide Wrapper Configuration

[Desktop Action Saves]
StartupNotify=false
Exec='/bin/bash' -c "~/'.wine/Diablo II/save-backup.sh'"
Name=Save Data Back-up

[Desktop Action Notes]
StartupNotify=false
Exec=gio open 'https://wiki.realmofespionage.xyz/games:wine:diablo_2'
Name=Installation Notes

# End

Save Data Back-up Script

nano ~/'.wine/Diablo II/save-backup.sh' && chmod +x ~/'.wine/Diablo II/save-backup.sh'
#!/bin/sh

ls ~/'.wine/Diablo II/drive_c/users/'$USER'/Saved Games/Diablo II'
tar -cvzf ~/'Downloads/'$(date +%Y-%m-%d-%s)'-manual-D2-Saves.tar.gz' -C ~/'.wine/Diablo II/drive_c/users/'$USER'/Saved Games' 'Diablo II'
sync
notify-send 'Diablo II save data has been successfully archived and placed in the Downloads folder.'

# End

Quick Commands

Winecfg

WINEPREFIX=~/'.wine/Diablo II' winecfg

Winetricks

WINEPREFIX=~/'.wine/Diablo II' winetricks

Registry Editor

WINEPREFIX=~/'.wine/Diablo II' regedit

Kill

WINEPREFIX=~/'.wine/Diablo II' wineserver --kill && killall -9 'Game.exe'

Execute

Command-line Arguments

-3dfx

Lord of Destruction

cd ~/'.wine/Diablo II/drive_c/Program Files/Diablo II' && PULSE_LATENCY_MSEC='400' MESA_SHADER_CACHE_DIR=~/'.wine/Diablo II' WINEDEBUG='' WINEPREFIX=~/'.wine/Diablo II' wine ~/'.wine/Diablo II/drive_c/Program Files/Diablo II/Diablo II.exe' -3dfx

Zink

cd ~/'.wine/Diablo II/drive_c/Program Files/Diablo II' && PULSE_LATENCY_MSEC='400' MESA_SHADER_CACHE_DIR=~/'.wine/Diablo II' MESA_LOADER_DRIVER_OVERRIDE='zink' MESA_VK_WSI_PRESENT_MODE='immediate' WINEDEBUG='' WINEPREFIX=~/'.wine/Diablo II' wine ~/'.wine/Diablo II/drive_c/Program Files/Diablo II/Diablo II.exe' -3dfx

File Manager

Root

gio open ~/'.wine/Diablo II/drive_c/Program Files/Diablo II'

Saved Games

gio open ~/'.wine/Diablo II/drive_c/users/'$USER/'Saved Games/Diablo II'

Saved Games Data

Backup

  • Creates {DATE}-manual-D2-Saves.tar.gz in ~/Downloads
tar -cvzf ~/'Downloads/'$(date +%Y-%m-%d-%s)'-manual-D2-Saves.tar.gz' -C ~/'.wine/Diablo II/drive_c/users/'$USER'/Saved Games' 'Diablo II' && ls ~/'Downloads/'*'-manual-D2-Saves.tar.gz'

Restore

  • Expects *-manual-D2-Saves.tar.gz in ~/Downloads
  • :!: If that tarball exists, this series of commands will irreversibly, without warning or prompt, delete the existing Saved Games folder and replace it with whatever is in that tarball
ls ~/'Downloads/'*'-manual-D2-Saves.tar.gz' && rm -Rf ~/'.wine/Diablo II/drive_c/users/'$USER'/Saved Games' && mkdir -p ~/'.wine/Diablo II/drive_c/users/'$USER'/Saved Games' && tar -xvzf ~/'Downloads/'*'-manual-D2-Saves.tar.gz' -C ~/'.wine/Diablo II/drive_c/users/'$USER'/Saved Games' 'Diablo II' && sync
3)
ideally should allow gamma adjustments (click and drag on color bars) and maintain 60+ fps
4)
or at the very least, doesn't outright cause a crash
/var/www/wiki/data/pages/games/wine/diablo_2.txt · Last modified: 2024/03/06 22:45 by Sean Rhone