Modcraft - The community dedicated to quality WoW modding!

Wrath of the Lich King Modding => Miscellaneous => Tutorials => Topic started by: Mjollna on May 21, 2012, 12:00:53 am

Title: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: Mjollna on May 21, 2012, 12:00:53 am
Hi everyone !

Those who follow the chatbox have probably seen a few weeks ago some exe tweaking Schlumpf made, allowing (again) the Wow client to read files that are not packed into a MPQ, like Noggit does.

That really makes adt testing a lot easier/faster, so I strongly encourage everyone worldbuilding to go for it.

I'm detailing here how to reproduce it, so that there's no need to use MPQ anymore.
Again, say thanks to Schlumpf for finding it and sharing :)

How it works


In your (Windows) Wow.exe, look for the following pattern:
Code: [Select]
E8 ? ? ? ? 6A 00 E8 ? ? ? ? 6A 02You can use 010 editor, edit > search, tick "use wildcards", set to "hex bytes" and paste pattern. You should have only one entry.

You can also use this tool by Schlumpf to replace the pattern instead of 010 editor : viewtopic.php?f=59&t=1829&p=11827#p11827 (http://modcraft.io/viewtopic.php?f=59&t=1829&p=11827#p11827" onclick="window.open(this.href);return false;)

Replace the beginning of the pattern with:
Code: [Select]
90 90 90 90 90 6A FFWhich gives for Windows Wow 3.3.5a 12340:
Code: [Select]
90 90 90 90 90 6A FF E8 2A EC 01 00 6A 02

The explanation for the curious ones


Quote from: "schlumpf"
Search for string "World of Warcraft\Client". Will be referenced on four places. Once with "SendErrorLogs" right behind. That's a call to SRegLoadValue and SRegSaveValue. From there, go up. You will see two calls to StormSetOption, one with first argument being 10, the other one being 11.
Right in between, there will either be a call to two functions or an inlined function containing an if. On windows, it will most likely not be inlined.
If there is no branch, dive into the second function called. That one should contain a branch.
That branch is for checking the command line for a different data folder given. You're interested in the functions above. Those are SFile::DisableSFileCheckDisk(); and SFile::EnableDirectAccess(0);.
You want to remove the call to DisableSFileCheckDisk and change the argument for EnableDirectAccess to something having bits 1 and 2 set.

Some notes


Refreshing the map


Ok, there's probably a better method for that, but that's the quickest I've come up with.
If you want to quickly refresh your adts without quitting the client on your favorite private server, you can :

That first teleports you in an empty continent area (ie : fast to load), and then re-teleports you on your map.
The map change makes the client reload the adts from file.

Other advice


If you have two installs (one for Noggit and one for Wow) you can have both programs opened at the same time and do some copy/pasting/refresh to see your changes ingame quickly.

Be sure to always make a copy of your adts in another safe place from time to time. You never know, some quick file overwriting can happen quickly.

TL;DR


Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: Zim4ik on May 21, 2012, 12:34:13 am
Really helpful. Thanks)
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: schlumpf on May 21, 2012, 01:54:52 am
As posted in Replace binary patterns in files with given data (http://modcraft.io/viewtopic.php?f=59&t=1829):

Allow local files


Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: Steff on May 21, 2012, 06:15:27 am
I like MPQs. Hold my WoW folders clean. Files are outside the client in the project folder and if i want to test, one click on the patchtester and wow starts. So I have no problems with MPQ packing. There are so much other things that are realy bad.
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: Mjollna on May 21, 2012, 11:08:59 am
To be completely honest, I have only one 335a test install to run run both Noggit and the client.

So now this exe change is saving me a lot of copying / packing steps : when I want to see my files ingame, I just close Noggit, (very often copy my files in another place to keep intermediate saving steps), and open client, as simple as that.

That also saves a lot of path potential errors, since both programs work on the same files.

The only thing I really have to remember is to not open both programs at the same time.
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: Steff on May 21, 2012, 12:08:58 pm
Yes as long you have only one project and dont look or play on other server. Then you have to coyp around all the folders and files every time. What is more then just one MPQ and a realmlist.

And this is only my opinion. I think there are many people that will like this.
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: Mjollna on May 21, 2012, 12:38:31 pm
The goal is also to get rid of a lot of beginner questions related to mpq packing.
No mpq, no problem, no questions, less technical stuff to understand, more place for art.
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: Zim4ik on May 21, 2012, 12:42:05 pm
This stuff works for m2 or wmo's, Mjollna?
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: fean on May 21, 2012, 12:46:40 pm
This works for any files, your wow folder can looks like this :
(http://puu.sh/tdTv)
And all of the files in DBFilesClient, world, tileset (as my screenshot shows) will be read (adts, m2, wmo, dbc...), and you don't need to pack all your modifications in an MPQ.
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: schlumpf on May 21, 2012, 01:29:43 pm
You can also move the files into Data/ or set the data path via a command line variable to seperate them from mpqs.
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: Steff on May 21, 2012, 02:51:04 pm
That again is somehting that makes it usefull. So i could just create some shortcuts for every programm ans set the project path just as source. But on the other hand do i often use wow and noggit the same time. Thats why i have 2 clients on the HD. So i can search problems ingame and fix them direct in noggit.
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: Fyrion on May 21, 2012, 03:54:27 pm
Test it about 30 minutes. Everything works fine, it's a nobel progress in the history of development :D
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: XxXGenesisXxX on May 22, 2012, 06:01:20 pm
Works great thank you.

I had a bit of a problem with it changing my "Interface/GlueXML" folder turning it into "Interface/GlueXML.old". However the "wow_unsig" worked on top of this and now it all runs fine. Thanks heaps. This will be great for fast testing.
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: codyt99 on September 09, 2012, 04:51:50 am
my brain hearts can some one add me on skype and help me do this plz.

skype - xxcookiemonsterxx99
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: Zim4ik on November 25, 2012, 03:50:27 pm
This thing works with cata alpha 11927 too.
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: schlumpf on November 25, 2012, 03:55:36 pm
Quote from: "Zim4ik"
This thing works with cata alpha 11927 too.
I developed it for MoP. It works for every version.
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: Skullbot on March 12, 2013, 04:25:01 am
After (many) checks, it seems that it doesn't work correctly for M2.
They don't show up IG (that blue error cube shows instead).

I've tried with a handmade model, a blizzard model only renamed, a blizzard model renamed and hex edited to the correct path, name etc ..
None of them worked (tried many paths "World/Models/", "World/Generic/Tree/", "Creature/" I've even tried "Data/" and the WoW Root xD

But they're all loaded correctly in Noggit (but you expected that right ? :D)

They all started working as soon as I put them in a MPQ Archive =/

I first though it was maybe wow that loads correctly the model from locale files, but not the files the m2 requires (.blp, .anim, .skin) ?
But it doesn't seem to, as putting all required files in archive (but not the m2) doesn't work either.

So, anyone else having that issue or such ?
In that case, no way to bypass MPQ for models ?
And which files can be loaded locally ?

Thanks :)
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: schlumpf on March 13, 2013, 12:38:41 am
Quote from: "Skullbot"
After (many) checks, it seems that it doesn't work correctly for M2.
They don't show up IG (that blue error cube shows instead).

I've tried with a handmade model, a blizzard model only renamed, a blizzard model renamed and hex edited to the correct path, name etc ..
None of them worked (tried many paths "World/Models/", "World/Generic/Tree/", "Creature/" I've even tried "Data/" and the WoW Root xD

But they're all loaded correctly in Noggit (but you expected that right ? :D)

They all started working as soon as I put them in a MPQ Archive =/

I first though it was maybe wow that loads correctly the model from locale files, but not the files the m2 requires (.blp, .anim, .skin) ?
But it doesn't seem to, as putting all required files in archive (but not the m2) doesn't work either.

So, anyone else having that issue or such ?
In that case, no way to bypass MPQ for models ?
And which files can be loaded locally ?

Thanks :)
While I am not aware of any issues like that or limitations in file types, it may come from a different problem: the file is not in any mpq, thus no local file is used. May you try swapping an existing model?
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: Skullbot on March 13, 2013, 05:38:05 am
After some further testing it seems that only M2 did not got loaded.

Tried to swap an existing model : the only thing it does was replacing the texture.
The model stay the same as in MPQ. (I tried the Akama model)

Removing only the .blp from MPQ result in missing green texture.
Weird thing is that putting different .blp from MPQ in locale files doesn't override the one in the MPQ.
Probably because WoW reads local files after the last expected patch-#.MPQ and the ones we supply is not expected, so gets loaded afterwards.

Removing only the .skin files of the swapped model from the MPQ but not from locale files make the game crash :
http://pastebin.com/yx4pwN22 (http://pastebin.com/yx4pwN22" onclick="window.open(this.href);return false;)

Finally leaving only the .skin file results in a graphical glitch :
(http://s284950972.onlinehome.fr/upload/graph.jpg)
Weird thing again the locale .blp texture is loaded correctly this time :o

Hope this will help out ;)
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: schlumpf on March 13, 2013, 08:23:34 am
I have no idea, why you would try deleting files from the MPQs.
I will look at this later today.
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: Skullbot on March 13, 2013, 08:34:34 am
I meant that I deleted the files from the MPQ that I needed to add for the models to show IG, not from the base ones ;)
Just see that as not adding custom files to an MPQ :D

Anyway, thanks for help ;)
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: Skullbot on March 13, 2013, 11:57:17 am
Okay ... don't mind all that stuff I said, found it -_-'

That was because I added models with / in the path via Noggit.
Noggit undertsand them and display the models correctly (and save their path as such in the ADT)
But WoW doesn't understand them, at least when loading files locally, weird enough.

Anyway, this has been fixed, but maybe we may ask noggit to replace all / by  before saving them into the ADT ?
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: MR. Farrare on October 11, 2013, 08:36:01 am
TY it worked fine i have 27 giga files now in one folder thx  Mjollna
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: Chase on June 17, 2014, 02:55:03 am
It seem that DBFilesClient doesn't load for me. Everything else works.
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: MR. Farrare on July 30, 2014, 10:10:25 pm
I tried to put my files in a folder and named it patch-(a number).mpq and it worked but I have a problem when I luanch wow.exe it takes like 7 to 10 min for only luanching wow and there more lag ingame too so how do I fixed that
Title: Re: [TUTORIAL] [RELEASE] Forget MPQ : don't pack anymore
Post by: Ghaster on February 03, 2016, 05:40:54 pm
This doesn't seem to work properly in 5.4.x. It works on 4.3.4, 5.0 and 5.1. I haven't tested 5.2 or 5.3.
The patch applies fine, however it doesn't load anything at all. Nothing.
The only thing i found possible to load in 5.4 from the data folder is GlueXML edits. Whenever i replace a dbc file, update a m2 model or add new adt's, it doesn't load them at all. I have tried doing the edits multiple times, same result.

Does anyone have an idea why this is happening?

EDIT: Okay i think something has changed. In earlier versions, the pattern is at 1410h or something while in 5.4 it finds the pattern at D:1E9Dh. The pattern has most likely changed in 5.4.x.

EDIT EDIT: Managed to fix it:
To make this patch work on 5.3 or higher, you have to do this:
Find 7BFAh, and write 90 90 90 90 90