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:
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.patch-004-allow_interface_edit.bat— removes the interface signature check. Also what MacroDSL needs.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
- Crash while loading, or straight to desktop — the 4 GB patch did not apply. Re-run step 1 in order.
- Still crashing with the patch on — turn multisampling down.
SET gxMultisample "8"at 4K is where people run out of address space even with the 4 GB patch; try2. - "Your game interface files are corrupt" —
patch-004did not apply.
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.