Custom QoL patches to the 1.12.1 WoW client

Overview

Build and tests

vanilla-tweaks

These are some custom patches for the old 1.12.1 World of Warcraft client, which lacks many of the conveniences of more modern clients.

Current patches

  • Widescreen FoV fix
  • Sound in background patch
  • Sound channel count default increase
    • By default the game only uses 12 channels to play sound. This is essentially the number of sounds that can play at the same time, so the low default value means many sound effects in group content do not play.
    • Increased to 64 by default. The default in TBC is 32. The default in newer expansions is 64.
    • This can also be set with /console SoundSoftwareChannels 64, but this patcher changes the default value so that it survives Config.wtf deletions.
    • Values above 64 have been reported to cause crashes. If you run into performance issues, try decreasing this setting further.
  • Farclip (max render distance) increase
    • Farclip is changed with /console farclip 1000 (777 is the default maximum)
    • This patch allows up to 10000, but this may cause crashes. Enabling the Large Address Aware patch (enabled by default) may help reduce crashing.
  • Frilldistance (max grass render distance) increase
    • You may want to customize the value used here if you use a very high frilldensity in order to maintain performance. The default (300) works fine on my machine with a relatively low frilldensity (64), but causes FPS to drop below 144 with high frilldensity.
    • Frill density (grass density) is changed with /console frilldensity 100. 256 is the max value (unchanged by patcher as it is already very dense).
  • Quickloot reverse patch (hold shift to manual loot)
    • This should work reliably for all types of looting. Please make an issue if it doesn't (e.g. if it occasionally fails to loot).
  • Nameplate range change
    • Increased to 41 yards to match the maximum value in Classic and TBC Classic. 20 yards is the default value.
  • CameraDistanceMax limit increase
    • Allows you to increase the CameraDistanceMax limit. This only changes the max value settable; the actual max camera distance can be changed with /console CameraDistanceMax .
    • Unchanged by default. Default maximum value is 50.
  • Large Address Aware patch
    • This allows the game to use more than 2GB of memory by setting a flag in the executable header. See https://codekabinett.com/rdumps.php?Lang=2&targetDoc=largeaddressaware-msaccess-exe for more information.
    • If you experience inexplicable crashes, try disabling this patch, and if you manage to reproduce them let me know via an issue. The client should have no issues being Large Address Aware, but you never know.

Usage

Download the release matching your operating system from the releases page. Extract the executable from the archive into your WoW directory.

Simple usage (Windows)

Open your WoW directory and drag WoW.exe on top of vanilla_tweaks.exe. This will create a new file called WoW_tweaked.exe, which has all the patches applied with their default settings. You should then start the game from WoW_tweaked.exe instead. You may also rename your original WoW.exe to something else and then rename WoW_tweaked.exe to WoW.exe if you prefer. However, do note that this may cause issues if the server you are playing on uses the game's update system to update the game.

Customizing the settings

To customize the values changed by the patches, or to disable some patches, you must run vanilla-tweaks from the command line.

First, open a command prompt and navigate to your WoW directory. The easiest way to do this on Windows is to click File -> Open Windows PowerShell. On Mac, you can control-click the folder in the path bar and select Open in Terminal. On Linux, you can probably right-click on an empty space in the directory and open a terminal from there, but as a Linux user you probably know how to use the cd command anyway.

With your terminal open in your WoW directory, you may then run vanilla-tweaks with custom parameters like this:

./vanilla-tweaks --no-sound-in-background --nameplatedistance 60 WoW.exe

The example here disables the sound in background patch and sets nameplate distance to 60 feet rather than 40.

To see a full list of the available options, you may use the --help parameter:

./vanilla-tweaks --help

Launch scripts

(Pull requests to add scripts for other platforms here are welcome!)

Linux/Lutris

Here is an example Lutris launch script that clears the game's cache folder and regenerates the patched executable if WoW.exe has changed since the last time the patches were applied (e.g. the server shipped an update to the game files).

Make sure to modify the game path to match your installation. You can then enable the script by setting it in Lutris via Configure > System Options > Pre-launch script (make sure "Wait for pre-launch script completion" is active).

#!/bin/bash

cd /media/ssd0/games/turtle-wow/drive_c/turtle_client_116/
#Clear cache
rm -f /media/ssd0/games/turtle-wow/drive_c/turtle_client_116/WDB/*

#Check hash of WoW.exe to see if it has changed
if ! sha256sum --status --check WoW.exe.sha256; then
    echo "WoW.exe has changed, updating WoW.exe.sha256 and WoW_tweaked.exe"
    sha256sum WoW.exe > WoW.exe.sha256
    ./vanilla-tweaks WoW.exe
fi
Comments
  • Elaborate install instructions

    Elaborate install instructions

    This tool is great, and I've recommended it a lot, but the instructions are a bit confusing for software noobs and I constantly get people saying they don't understand. This should help handhold them a bit more, I'd appreciate this or something close merged.

    I've also elaborated a bit more for terminal chads like us.

    opened by Zebouski 1
  • Mac version

    Mac version

    Is there any chance to support the mac client as well? How did you figure out the offsets (so one could try to do the same for the mac version)?

    Thanks

    opened by kjarex 1
  • Change Sound Channels default tweak 128->64

    Change Sound Channels default tweak 128->64

    When sound channels are set to 128, many others and I have experienced crashing/freezing in naxx, like from the mass spells from gargoyles, kt spawns, faerlina trash all cast their spells to the entire 40man at once.

    With sound channels down to 64, the freezing has stopped and we can still hear most the sounds in 40mans. I suggest this be made the new default, and people can still go 128 with the flag if they choose to, maybe with a warning in the --help that 128+ channels may cause crashing.

    opened by Zebouski 1
  • [Feature] Rotate Minimap

    [Feature] Rotate Minimap

    Currently, the minimap works like so:

    Pivot is on the minimap, so minimap is static, but player arrow rotates in the direction that the player is facing

    Could it be possible to make it just like in Retail, where pivot is on the player arrow (always facing north/up), while the minimap rotates based on where the player is looking?

    opened by Soromeister 1
  • Solo raid icons

    Solo raid icons

    I can't find an addon for this, so I assume it's a client limitation. In party/raid, you can assign icons to creatures. Classic also allows to do that when solo, but not vanilla. It's quite helpful when trying to find a mob. Would it be possible to enable that?

    opened by burner1024 1
  • MaxCameraDistance

    MaxCameraDistance

    Hello Sir Thank you for your work This QoL patcher works really well but when we use max FOV value(3.14) its zoom out camera much but its side angles looks so odd so please add MaxCameraDistance patch also?

    with FOV: 3.14 and CameraDistance: 50 (Game Default) image

    with FOV: 1.5708 (Game Default) and CameraDistance: 100 (i managed to edit it using camera-setting.txt file present inside wtf/account/accountname/servername/playername/camera-setting.txt but its not a permanent solution if i zoom in a little bit it will reset to 50 automatically) image

    opened by SSDDX-Devs 1
  • Fog and higher farclip

    Fog and higher farclip

    Any values of farclip above around 1500 result in seemingly the same result since fog doesn't extend any further than that no matter how high the farclip is. Is there an option that controls fog distance?

    opened by Haaxor1689 1
  • [Bug] Unable to control camera on secondary monitor

    [Bug] Unable to control camera on secondary monitor

    Reproductible:

    Requirements:

    • Have Primary Monitor at 4K resolution
    • Have a Secondary Monitor at 4K resolution
    • Have the official Turtle-WoW client with the executable patched via this tool with the default settings

    Steps:

    • Start WoW
    • Log into the realm
    • Choose a character to play with
    • Once you are in the game world, max the settings and lower the UI scaling. Disable VSync and keep WoW in Windowed mode + Maximized (no border) at native 3840 x 2160 resolution
    • (Optionally) Restart WoW
    • Move the WoW client to the secondary monitor by invoking the Windows built-in shortcut for this (WinKey + SHIFT + LArrow/RArrow) depending on the position of the secondary monitor
    • Attempt to move the character by using the regular WASD + RClick
    • Notice the camera goes crazy and pivot even moves from the character

    The other patcher listed on the Turtle-WoW forums work fine when doing this (source code is also there in the forum post), although it's not as detailed as this one here.

    My WoW Vanilla client config.wtf:

    SET gxWindow "1"
    SET gxMaximize "1"
    SET scriptMemory "0"
    SET hwDetect "0"
    SET gxColorBits "24"
    SET gxDepthBits "24"
    SET gxResolution "3840x2160"
    SET gxRefresh "60"
    SET gxVSync "0"
    SET gxMultisampleQuality "0.000000"
    SET lod "0"
    SET fullAlpha "1"
    SET lodDist "250"
    SET SmallCull "0.010000"
    SET DistCull "888.8"
    SET shadowLevel "0"
    SET trilinear "1"
    SET frillDensity "256"
    SET farclip "777"
    SET specular "1"
    SET pixelShaders "1"
    SET particleDensity "1.000000"
    SET unitDrawDist "300.000000"
    SET anisotropic "16"
    SET M2UsePixelShaders "1"
    SET movie "0"
    SET movieSubtitle "1"
    SET mouseSpeed "1"
    SET DesktopGamma "1"
    SET Gamma "1.000000"
    SET readTOS "1"
    SET readEULA "1"
    SET MusicVolume "0.40000000596046"
    SET SoundVolume "1"
    SET MasterVolume "1"
    SET realmList "logon.turtle-wow.org"
    SET weatherDensity "3"
    SET cameraYawMoveSpeed "120"
    SET cameraYawSmoothSpeed "180"
    SET cameraSmoothStyle "0"
    SET cameraDistanceMaxFactor "5"
    SET realmName "Turtle WoW"
    SET gameTip "12"
    SET ChatBubblesParty "1"
    SET AmbienceVolume "0.60000002384186"
    SET uiScale "0.71111111111111"
    SET useUiScale "1"
    SET UnitNameNPC "1"
    SET guildMemberNotify "1"
    SET checkAddonVersion "0"
    SET profanityFilter "0"
    SET cameraView "3"
    SET cameraDistanceC "15.000000"
    SET cameraPitchC "26.449976"
    SET cameraYawC "0.000000"
    SET cameraCustomViewSmoothing "1"
    SET autoSelfCast "1"
    SET texLodBias "-1"
    SET nearclip "0.3"
    SET mapObjLightLOD "2"
    SET footstepBias "1"
    SET minimapZoom "0"
    SET SkyCloudLOD "1"
    SET gxFixLag "0"
    
    opened by Soromeister 10
  • Auto FOV selection

    Auto FOV selection

    Depending on the current resolution, FOV can be calculated. The task is not trivial, for three OS at the same time. But it will simplify patching for people who do not have to understand, and who have monitors other than 16: 9

    opened by shikulja 2
  • Disable cache generation

    Disable cache generation

    This feature is not available, but it might be useful. I read on the forum that this is unstable. But I think to leave an issue, perhaps for future study

    opened by shikulja 1
  • FPS & CTM Limitation

    FPS & CTM Limitation

    Hello Sir Thanks for the Max Camera Distance Patch There is one more serious limitation of this 1.12.1 client If you limit your WoW.exe with 60fps its works fines but if you remove fps limit CTM (Click To Move) feature stop working https://user-images.githubusercontent.com/19153689/183430278-e3b998be-6b87-4d4d-b17d-f4035c378735.mp4

    Update : Found the address for fps limit in ctm logic now there is only one thing left to solve, after increasing fps above 120 character u-turn bugs out in the video below 1st i showed how character u-turn normally without changing anything then i increased fps to 100 and ctm stops working then i patched memory(0x610D84) for fix (2 ways to fix this either increase fps from 65 to max 127 or force skip 2 instructions by changing jne to jmp) and at 100fps ctm starts working then i increased more fps now ctm works but when we try to u-turn it bugs....

    https://youtu.be/5eH8UWrY1fY

    opened by SSDDX-Devs 1
Releases(v1.5.2)
Owner
Peter Wedder
Peter Wedder
Victorem - easy UDP game server and client framework for creating simple 2D and 3D online game prototype in Rust.

Victorem Easy UDP game server and client framework for creating simple 2D and 3D online game prototype in Rust. Example Cargo.toml [dependencies] vict

Victor Winbringer 27 Jan 7, 2023
Rusty NuGet client

ruget It's a NuGet client built in Rust. It's not really meant to replace existing nuget clients. It's more of a playground for experimenting with rel

Kat Marchán 18 Feb 2, 2022
Brine is my attempt at writing a Minecraft client in Rust using the Bevy game engine.

Brine Brine is my attempt at writing a Minecraft client in Rust using the Bevy game engine. It's EXTREMELY work-in-progress. The thing that makes Brin

Ben Reeves 34 Dec 26, 2022
🎮 A Realtime Multiplayer Server/Client Game example built entirely with Rust 🦀

Example of a ?? Realtime Multiplayer Web Game Server/Client built entirely using Rust ??

Nick Baker 5 Dec 17, 2022
Template game client for the Software Challenge 2023 ("Hey, Danke für den Fisch!")

Software Challenge 2023 Rust Client A template client for the Software Challenge 2023 (Hey, Danke für den Fisch!) written in Rust. The client implemen

FW 3 Nov 4, 2022
General purpose client/server networking library written in Rust, built on top of the QUIC protocol which is implemented by quinn

Overview "This library stinks!" ... "Unless you like durian" durian is a client-server networking library built on top of the QUIC protocol which is i

Michael 92 Dec 31, 2022
A Client/Server game networking plugin using QUIC, for the Bevy game engine.

Bevy Quinnet A Client/Server game networking plugin using QUIC, for the Bevy game engine. Bevy Quinnet QUIC as a game networking protocol Features Roa

Gilles Henaux 65 Feb 20, 2023
Simple event-based client-server networking library for Bevy

Bevy Client Server Events Simple event-based client-server networking library for Bevy. Easily send bevy events to/from a client/server without worryi

Edouard Poitras 5 Sep 20, 2023
1️⃣ el lisp number uno - one lisp to rule them all 🏆

luno el lisp number uno luno is the one lisp to rule them all. Still experimental, do not use it in production yet. goals embeddable small size simple

Eva Pace 3 Apr 25, 2022
This automatically patches the RoPro extension for you, allowing you to have pro_tier for free.

RoPro Patcher This automatically patches the RoPro extension for you, allowing you to have pro_tier for free. NOTE Chrome, Brave (and possibly other b

Stefan 10 Jan 1, 2023
This program patches the WeMod app to think you're a pro subscriber

WeMod Pro Unlocker This program patches the WeMod app to think you're a pro subscriber. ⚠️ DISCLAIMER: Eventhough I don't think it is likely, WeMod co

Bennett 23 Jan 6, 2023
Some Steam patches, fixing broken Steam features on Asus Rog Ally

Ally Steam Patches Ally Steam Patches is a tool designed to enhance your Steam experience by applying patches to the Steam client. Installation To ins

MIkhail Kozlov 2 Jul 10, 2023
Some Steam patches, fixing broken Steam features on Asus Rog Ally

⚙️ Steam Patch Steam Patch is a tool designed to enhance your Steam experience by applying patches to the Steam client. ?? Installation To install Ste

MIkhail Kozlov 3 Jul 18, 2023
Decode SCALE bytes into custom types using a scale-info type registry and a custom Visitor impl.

scale-decode This crate attempts to simplify the process of decoding SCALE encoded bytes into a custom data structure given a type registry (from scal

Parity Technologies 6 Sep 20, 2022
Catch Tailwindcss Errors at Compile-Time Before They Catch You, without making any change to your code! Supports overriding, extending, custom classes, custom modifiers, Plugins and many more 🚀🔥🦀

twust Twust is a powerful static checker in rust for TailwindCSS class names at compile-time. Table of Contents Overview Installation Usage Statement

null 15 Nov 8, 2023
Flexcord! A custom Discord client to allow you to do what you want!

Disclaimer Flexcord is NO WHERE near done. Flexcord What is it? Flexcord is a Discord client that flexes for your needs, it allows you to do exactly w

null 2 Dec 5, 2022
This code features a viper-client, which can connect to a viper-server, a custom interface made for Comelit devices.

Viper Client ?? (WIP) This is code for my intercom; specifically for the Comelit Mini Wi-Fi MSFV. This features a ViperClient which can talk to the Co

Gerard 4 Feb 20, 2023
Custom Ethereum vanity address generator made in Rust

ethaddrgen Custom Ethereum address generator Get a shiny ethereum address and stand out from the crowd! Disclaimer: Do not use the private key shown i

Jakub Hlusička 153 Dec 27, 2022
Custom Ethereum vanity address generator made in Rust

ethaddrgen Custom Ethereum address generator Get a shiny ethereum address and stand out from the crowd! Disclaimer: Do not use the private key shown i

Jakub Hlusička 153 Dec 27, 2022
custom Rust clippy lints

How to use my_lints to static analysis other rust project export MY_LINTS_PATH=/home/w/repos/my_repos/my_lints method_1: In my_lints dir cd $MY_LINTS_

Wu Aoxiang 3 Oct 2, 2021