Latest Diablo 3 News
DiabloWiki Updates
Support the site! Become a Diablo: IncGamers PAL - Remove ads and more!

[Tech Support] Installing from BNET 1.14d installer doesn't allow switching back to 1.13d

Discussion in 'Single Player Forum' started by fearedbliss, Jan 14, 2018.

  1. fearedbliss

    fearedbliss IncGamers Member

    Joined:
    Jun 29, 2011
    Messages:
    395
    Likes Received:
    106
    Trophy Points:
    247
    Hello all,

    I got a message from a BVS user on my github about how he installed Diablo II from the BNET 1.14b installer but wasn't able to switch to 1.13d. Originally I thought that the problem of switching to older versions of D2 only affected users that installed from the 1.12a BNET installer and were attempting to switch back due to the MPQ format being changed between [1.00 - 1.11] (old installers, CDs) and new [1.12a+] BNET installer. However, this user was switching back from 1.14b to 1.13d which are after the 1.12a change. After some debugging I found out that it seems the 1.13d dlls (Definitely the ones included in Bliss Complete Collection but these should be the same exact dlls everyone receives since I just copied them after I patched to 1.13d - I don't think the blizzard updater runs any conditional code that says "If your installation MPQs are from an old CD, then use these dlls, and if they are from the new CDs then use these dlls") do not understand the MPQs from the 1.14b ones.

    The problem was the same as the pre 1.12 and 1.12+ break. Due do this, due note that if you want to time travel between any versions, it is best to get the MPQ files from the original ISOs, that will allow you to play any version no matter what Blizzard has changed.

    You can find more information in the github post:
    https://github.com/fearedbliss/Bliss-Version-Switcher/issues/1

    Also these are the errors that you would see if you install 1.14b installer and try to switch to 1.13d or below:

    [​IMG]

    At this state, 1.13d is trying to run but the MPQ files are from the 1.14b installer and it doesn't understand them, so it has this problem when you launch D2. If you try to run the D2VidTest, it also will fail with the following message:

    [​IMG]

    Again, you can see that the D2VidTest thinks that the MPQ file is corrupt, it's actually just a newer version/format.

    Once I copied over my old MPQs that I use to play 1.00-1.11, it immediately worked.

    Also do keep in mind that the D2VidTest.exe was removed in 1.14, this only exists pre 1.14.

    I'll be updating the BVS README/HELP.txt files to keep a note of this.

    - Jonathan
     
    pharphis likes this.
  2. GalaXyHaXz

    GalaXyHaXz IncGamers Member

    Joined:
    Mar 16, 2011
    Messages:
    761
    Likes Received:
    649
    Trophy Points:
    173
    Perhaps there is a way for users of the digital installer to convert the mpqs to the old format? There is a fairly new tool which could do this, assuming only the header/hash table in the mpq was changed. Anyone with the new installer want to send me a PM, and maybe we can work it out.
     
    fearedbliss likes this.
  3. fearedbliss

    fearedbliss IncGamers Member

    Joined:
    Jun 29, 2011
    Messages:
    395
    Likes Received:
    106
    Trophy Points:
    247
    Send me the tool and I can test it out on my test install of D2 using the new installer.
     
  4. GalaXyHaXz

    GalaXyHaXz IncGamers Member

    Joined:
    Mar 16, 2011
    Messages:
    761
    Likes Received:
    649
    Trophy Points:
    173
    fearedbliss likes this.
  5. darkstarhub

    darkstarhub IncGamers Member

    Joined:
    Mar 26, 2011
    Messages:
    848
    Likes Received:
    497
    Trophy Points:
    209
    Damn you guys are good
     
  6. fearedbliss

    fearedbliss IncGamers Member

    Joined:
    Jun 29, 2011
    Messages:
    395
    Likes Received:
    106
    Trophy Points:
    247
    @GalaXyHaXz cool will test out. I use WinMPQ when I'm buulding new patches for Singling. WinMPQ can read the new MPQs fine. I'll see if I can also "re-save" the MPQs with it as well. I'll let you know results for both applications.
     
  7. fearedbliss

    fearedbliss IncGamers Member

    Joined:
    Jun 29, 2011
    Messages:
    395
    Likes Received:
    106
    Trophy Points:
    247
    Results of Analysis

    TLDR; When Blizzard re-did their MPQs, they not only added a few extra files (Which are not that important from what I can see and I don't even think they are really being used), but they also added a file called "(attributes)" to several MPQs. It is possible that the 1.12+ code is reading these "(attributes)" file to interpret the MPQ a certain way. The old MPQs didn't have this file, so I'm guessing is this file doesn't exist, the Diablo II code will interpret the MPQ file as a legacy file and act as before.

    1.07 (Original ISOs only contained attributes in the following MPQs)
    d2exp.mpq
    d2xmusic.mpq
    d2xtalk.mpq
    d2xvideo.mpq

    1.14 (BNET installer contains attributes not only in the original MPQs, but also in the following):
    d2char.mpq
    d2data.mpq
    d2sfx.mpq

    Solution: Delete the "(attributes)" file from the new MPQs that contain them.

    I've written a script that automatically deletes this "attribute" from the affected MPQs.

    Video Instruction on how to fix the MPQs


    Text Instructions
    1. Install Diablo II from Blizzard's Installer [1.12+]
    2. Download WinMPQ w/ Fix file and extract the contents of the WinMPQ folder directly into the Diablo II root folder. You can delete these files after we are done.
    3. Double click the "Fix_MPQs.bat" file.

    That's it. Your MPQs are ready to be used with older versions. If the above didn't work, make sure that:

    - You don't have D2 (or any D2 errors) currently opened.
    - You ran the bat file in Administrator mode if your D2 is installed in a directory that requires administrator permissions.
    - You can try adding the "mpql.txt" filelist to WinMPQ by opening WinMPQ.exe, going to Options -> File Lists-> Add List File, Selecing the "mpql.txt" file and pressing ok.

    Singling 1.9.0 and beyond contain the fix.

    Long Version

    So I tested both the application I use when I make new "Patch_D2.mpq" files (WinMPQ) and also @GalaXyHaXz suggestion for MPQ Editor. Since the suggestion was basically about re-saving the file so that the header/hashes/compatibility of the MPQ files get regenerated with an old compatible format (Assuming no other files changed in the MPQ), this would be a feasible solution. I tried to do this in WinMPQ but it didn't work. WinMPQ doesn't have any compatibility options, so for this reason I thought "If it doesn't have any compatibility options, then that must mean that it only has 1 file format option, and that one already works since it's the old one". But doing a simple test of "adding/removing" a file and causing a file re-write didn't fix the problem (I tested this by repeatedly running D2VidTst.exe and seeing if the d2data.mpq corruption message appeared. If the message no longer appears, than that means that the game can understand the format). The next thing I did was to try the MPQ editor Galaxy recommend. When I check the compatibility section, the file was set to "World of Warcraft", I'm not sure if there is auto-detection happening but I wouldn't be surprised since WoW set the standards for the rest of the newer Blizzard games and technologies. Either way, I set it back to "Diablo II - Lord of Destruction" compatibility. Closing the MPQ after this point didn't allow it work (Since I guess nothing was written). Opening the MPQ file again in MPQ Editor and then clicking "D2VidTst.exe" while the file was opened allowed the file to be understood, if I closed the MPQ, then the D2VidTst wouldn't understand it again. It's interesting how it only understands it temporarily. Either way, that isn't a solution but it's enlightening.

    After that I decided to try again to "add/remove" a file that's already in the MPQ in order to cause this file format regeneration, but this didn't work. I believe the format of the files only get changed for files that you are adding, not for the entire existing MPQ structure and files. Which is sad since I want to have people quickly fix their MPQ files rather than spend time doing more complicated things. The last thing that I did before I decided to try a completely different approach was to simply extract all of the files from the d2data.mpq into a file, and then remake a brand new MPQ using the "Diablo II - Lord of Destruction" compatibility. After I did this it seems that the new d2data.mpq was able to be read. I didn't test it extensively or anything, just a simple D2VidTst since I didn't want to use this solution due to there being 11 MPQs and this requiring dumping of every single file in the MPQ x 11 (Basically you are dumping 1.87 GB of compressed data and remaking it). It's too cumbersome if it could be avoided.

    So after this I decided to open up the old d2data.mpq and the new d2data.mpq side by side and compare the results.

    The interesting thing is that the data between the old and the new one are almost identical, with the exception that the new d2data.mpq has a bunch of dlls re-added to several of the MPQs (dlls that you already have and that are not needed to be there, things like D2Client.dll, etc). The critical file that I noticed that was added was the "(attributes)" file. Since I believe this file contains properties that determine how the game interprets the contents that it's about to read, and given that most of the old MPQ didn't contain this file, I decided to say "What happens if I delete this file? Will it work then?", and luckily, that was exactly what happened. Deleting the "(attributes)" file allowed the MPQ to work in D2VidTst. The next thing I did was open all of the MPQs that Blizzard -newly- added this file to, and deleted it. Then I opened 1.14, 1.13, and 1.09. They all worked and I was able to open a Single Player game, look at skills, and other stuff. More testing will need to be done by the community but this allows the game to work and nothing crashed on me. So for people with the new MPQs, just delete this attributes file from any MPQ that contains it.

    [​IMG]

    @GalaXyHaXz might be able to find the code section in the old versions of D2 that check for these attributes or not and include them in Singling so people wouldn't have to edit their new MPQs in any way (He can also explain how this attributes file is used or not in older/newer versions), however Singling only supports a subset of D2 versions that are popular in the SPF. So I'll still let people know about this method so that if people don't want to use Singling, they can still use Mini-ISOs + DAEMON Tools for machines that don't have the physical CD, combined that with this MPQ change, and you can also play every version of D2, Vanilla.
     
    Last edited: Jan 18, 2018
    pharphis likes this.

Share This Page