Private WoW

← Suggested addons

Project Reforged

Project Reforged re-does the 3.3.5 art at modern resolution: characters, creatures, gear, buildings, doodads, environment, spell effects. It is purely client-side — it changes nothing about the server, and you can play alongside people who do not have it. Budget roughly 18 GB for the set below.

1. Patch the client binary

Required, and required first. Grab the patcher. It applies three independent changes, and you want all three:

  1. patch-002-4gb_ram_limit.bat — lets the 32-bit client address 4 GB instead of 2 GB. Not optional. Without it the client runs out of memory and crashes while loading the HD assets.
  2. patch-004-allow_interface_edit.bat — removes the interface signature check. Also what MacroDSL needs.
  3. patch-011-fix_mouse_bug.bat — stops the camera stuttering on fast mouse movement.

The order matters, whatever the README says. It claims the patches are independent. They are not: patch-004 searches for a byte sequence that patch-002 creates, so running 004 first silently skips a step and leaves you half-patched — with, in particular, no 4 GB patch. Run them 002, then 004, then 011.

Windows

Copy your Wow.exe into the patcher's folder, run the three .bat files in the order above, then copy the patched Wow.exe back into your WoW directory.

Linux

The patcher is a Windows console program, but it runs fine under the same Wine you already use for the game — no special prefix, no Windows machine, no dual boot. From the folder containing binary_pattern_replace.exe and the three .bat files:

WOW="$HOME/Games/World of Warcraft"    # adjust to your install

cp "$WOW/Wow.exe" .
wine cmd /c patch-002-4gb_ram_limit.bat
wine cmd /c patch-004-allow_interface_edit.bat
wine cmd /c patch-011-fix_mouse_bug.bat
cp Wow.exe "$WOW/Wow.exe"

Each command prints one Info: Replacing pattern, found at ... line per byte sequence it changes. If a line says the pattern was not found, that patch did not apply — check you started from an unmodified Wow.exe and that you ran them in order.

Wine writes noise to stderr on a cold prefix; ignore anything starting fixme: or err:. Append 2>/dev/null if it bothers you. The patcher creates a Wow.exe.orig backup on its first run; to undo everything, copy that back over Wow.exe.

Check it worked

The 4 GB patch is the one that silently costs you a playable client, and it sets a single flag in the executable header. This reads it back — no dependencies, works on any platform with Python:

python3 - <<'EOF'
import struct
d = open("Wow.exe", "rb").read()
pe = struct.unpack_from("<I", d, 0x3C)[0]
ch = struct.unpack_from("<H", d, pe + 22)[0]
print("Characteristics: 0x%04X" % ch,
      "-> 4 GB patch", "OK" if ch & 0x20 else "MISSING")
EOF

You want 0x0123 and OK. A stock client reads 0x0103 and MISSING.

2. Install the art patches

Every patch is a single .MPQ that goes in the Data folder inside your WoW directory. The client picks up anything named patch-<letter>.MPQ automatically — there is nothing to configure, and removing a file uninstalls it.

cd "/path/to/World of Warcraft/Data"
B="https://pub-0f05631d243e4046993fc02ca7be9542.r2.dev/Wrath%20of%20the%20Lich%20King/patches"
for p in A B C D E G I N P U; do
  curl -L -C - -o "patch-$p.MPQ" "$B/patch-$p.mpq"
done
curl -L -o patch-S.MPQ "$B/extras/patch-S.mpq"

What each one is: A characters and NPCs, C creatures, G gear and weapons, I interface art, B/D/E buildings, doodads and environment, N darker nights, P spell effects, S sounds and music, U upright orcs.

B, D and E are one set — install all three or none. U needs A and C. -C - resumes a broken transfer, so re-run the loop if your connection drops.

3. Skip Patch-M

Patch-M (Maps & Loading Screens) breaks map addons. It is not just art: it ships modified map data, expanding the client's WorldMapArea.dbc from 108 map areas to 212 and adding 52 zones to AreaTable.dbc. Any addon that builds its zone list against the stock 3.3.5 map table will hit map names it has never heard of and fall over.

Carbonite dies outright — its init aborts with table index is nil, and because it never finishes loading, everything chained to it goes down too (WorldExplorer and friends). The result looks like "all my addons are broken", which makes it a genuinely nasty one to track down. Patch-M is listed as optional, and skipping it costs you nothing but map art.

If you install it anyway, note that the standard Patch-S depends on it. The command above deliberately fetches the standalone Patch-S from extras/, which does not.

4. DXVK (recommended)

Reforged's own guidance. DXVK 2.7.1 — extract it, take d3d9.dll from the x32 folder, drop it in your main WoW folder.

On Linux, skip this if Lutris or Proton is already providing DXVK for the prefix — a second d3d9.dll in the game folder is redundant.

If it crashes on load

A note on addon breakage

When an addon breaks after a client patch, the cause is usually data, not code. Reforged's patches ship around thirty modified .dbc files — the client's internal tables for zones, creatures, items, spells and lighting — and addons read the world through those. A patch containing no Lua at all can still take an addon down.

So when something breaks, bisect by moving MPQs out of Data one at a time rather than reading Lua. And do not trust the patch letters to tell you where to look: Patch-I, the one called "Interface", is 32,000 texture files and zero lines of code, while the map data that actually breaks your UI is in Patch-M.