====== Information ======
* Diablo II ((http://us.blizzard.com/en-us/games/d2/))
* Diablo II: Lord of Destruction
===== Prerequisites =====
* [[bsd;freebsd_14.1_xfce|FreeBSD 14.1 (Xfce)]]
* [[bsd;notes;wine|Wine]]
===== Notes =====
* **Lord of Destruction** is not standalone and requires **Diablo II**
* This is the original client with CD keys and TCP/IP multiplayer (not Resurrected)
====== Install ======
===== Diablo II =====
****
mkdir -p ~/'.wine' && WINEPREFIX=~/'.wine/Diablo II' WINEARCH='win32' winecfg /v 'winxp' && sync && WINEDEBUG='' WINEPREFIX=~/'.wine/Diablo II' wine ~/'Downloads/Diablo II/D2-1.14b-Installer-enUS/Installer.exe'
===== Lord of Destruction =====
****
sync && WINEDEBUG='' WINEPREFIX=~/'.wine/Diablo II' wine ~/'Downloads/Diablo II/D2LOD-1.14b-Installer-enUS/Installer.exe'
===== Patch =====
* 1.14d
sync && mesa_glthread='false' WINEDEBUG='' WINEPREFIX=~/'.wine/Diablo II' wine ~/'Downloads/Diablo II/LODPatch_114d.exe'
===== Glide Wrapper =====
* http://www.svenswrapper.de/english/index.html
* TODO: Local file commands like Patch above
==== Online ====
* The following command expects ''gl32ogl14e.zip'' (1.4e) to exist at http://www.svenswrapper.de/gl32ogl14e.zip
wget -O '/tmp/gl32ogl14e.zip' 'http://www.svenswrapper.de/gl32ogl14e.zip' && md5sum '/tmp/gl32ogl14e.zip' | grep '1c65a0150665f715ce0fc0a23885c6b8' && 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 ======
* Hauptmenu -> Deutsch/English
* OpenGL-infos -> Query OpenGL-infos
* settings -> [x] captured mouse
* settings -> [x] desktopresolution
* renderer -> 108 MB texture-memory
* renderer -> 4096x4096 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 ((ideally should allow gamma adjustments (click and drag on color bars) and maintain 60+ fps))
* Quit
cd ~/'.wine/Diablo II/drive_c/Program Files/Diablo II' && mesa_glthread='false' WINEPREFIX=~/'.wine/Diablo II' 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
====== Desktop Launcher ======
===== Initial =====
****
rm -Rf ~/'.local/share/applications/wine/Programs/Diablo II' ~/'.config/menus/applications-merged/wine-Programs-Diablo II'*'.menu' && update-desktop-database --quiet ~/'.local/share/applications' && mkdir -p ~/'.local/share/applications/wine/Programs/Diablo II'
===== Lord of Destruction =====
ee ~/'.local/share/applications/wine/Programs/Diablo II/Diablo II: Lord of Destruction.desktop' && update-desktop-database --quiet ~/'.local/share/applications'
[Desktop Entry]
Name=Diablo II: Lord of Destruction
Categories=Game;AdventureGame;RolePlaying
Exec='/bin/sh' -c "cd ~/'.wine/Diablo II/drive_c/Program Files/Diablo II' && mesa_glthread='false' 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/sh' -c "WINEPREFIX=~/'.wine/Diablo II' wineserver --kill"
Name=Force-close Diablo II
[Desktop Action Glide]
Exec='/bin/sh' -c "mesa_glthread='false' 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/sh' -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;bsd;wine;diablo_2'
Name=Installation Notes
# End
===== Save Data Back-up Script =====
ee ~/'.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 backed-up to Downloads.'
gio open ~/'Downloads'
# 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 'wine.bin'
===== Execute =====
==== Command-line Arguments ====
* https://www.purediablo.com/diablo-2/diablo-2-commands#Command_Line_Commands
==== Lord of Destruction ====
* ''-3dfx''
cd ~/'.wine/Diablo II/drive_c/Program Files/Diablo II' && mesa_glthread='false' 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