Go Back   Neko-Sentai » FFXIV DAT Section » General Discussion

Notices

Reply
 
Thread Tools
Old 12-30-2016, 08:01 PM   #1
Guy Incognito
Regular Forum User
Forum Member
 
Join Date: Sep 2006
Posts: 101
Thanks: 0
Thanked 57 Times in 27 Posts

Default [Naughtywvr Installer] Extractor Tool

This is a tool that extracts the models from the naughtywvr installer and builds a new set of addons so that the assets in it can be installed separately, unlike the original addons which was all or nothing.

Requirements:
  • Windows 7 or newer, specifically:
    • Powershell 2.0 or newer (which is installed by default on 7 or newer, Powershell 2.0 installers are available for XPSP3 and vista)
    • Net framework 3.5 (included by default on 7, installers are available for XPSP3/Vista/8/8.1/10, you should already have this installed if you have ran/can run the naughtywvr installer)
  • Naughtywvr installer 1.3.1
    • No other versions are supported (unless requested and the installer provided)

How to use:
  1. Extract Naughtywvr Extractor-(build date).zip to the same folder that contains FF14ARRnaughtyPatch.exe
  2. Double click Start.bat and it will build the new addons
  3. Launch FF14ARRnaughtyPatch.exe and select the addons you desire
    • You must also install 99_npBasicTextures if you install any of the models, otherwise you may get unpredictable results
  4. Done

Notes:
  • Make sure there are no special characters in your path, they will cause the extractor to not be able to read the files
    • Spaces are ok
    • Brackets are not ok
  • [ADDON] FF14ARRnaughtyPatch 1.3.1 Lalafel Hotfix is already included, you do not need to run that addon separately
  • The new addons generated have not been tested with the official npNewLalafelMod, I do not have access to it to test against (it should work if you run it AFTER the addons created by the extractor tool)
  • The models extracted are mdl.raws, NOT mdls, they include the dat headers needed insert the file into the dat containers, and are also compressed. A normal editor would discard the header and generate a new one and decompress/recompress it while working with it. Your editor would need to explicitly be able to handle XIV 2.0 compressed files + headers to use these directly.
  • The extracted folder can be safely deleted if you do not need the individual models
  • The original addons will be moved to mods.orig, you can delete mods and renamed mods.orig back to mods if you want to undo the changes

Release Notes:
  • 20170514: Updated notes
  • 20170116: Clarified notes on mdl.raw files, no changes to extractor
  • 20161230: Initial release: Targets 1.3.1 + lalafel hotfix
Attached Files
File Type: zip Naughtywvr Extractor-20161230.zip (49.2 KB, 240 views)

Last edited by Guy Incognito; 05-14-2017 at 01:55 PM.
Guy Incognito is offline  
Reply With Quote
The Following 5 Users Say Thank You to Guy Incognito For This Useful Post:
CeruleanCourtesan (05-14-2017), garath (01-01-2017), Ryujiv2 (12-30-2016), Snat (12-31-2016), Wren (12-30-2016)
Old 12-30-2016, 08:17 PM   #2
Guy Incognito
Regular Forum User
Forum Member
 
Join Date: Sep 2006
Posts: 101
Thanks: 0
Thanked 57 Times in 27 Posts

Default

So far this has only been tested on W10 1607 with powershell 5.1 and net 3.5 + 4.0 installed.

If you are unsure about what versions you have installed, you can do the following:
  • Run powershell.exe
  • Paste in the following in the powershell prompt and run:
    Code:
    $PSVersionTable.PSVersion
    (Dont worry about the spaces/new lines, you can paste it all in one go, just select all and paste)
    Code:
    Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse |
    Get-ItemProperty -name Version,Release -EA 0 |
    Where { $_.PSChildName -match '^(?!S)\p{L}'} |
    Select PSChildName, Version, Release, @{
      name="Product"
      expression={
          switch -regex ($_.Release) {
            "378389" { [Version]"4.5" }
            "378675|378758" { [Version]"4.5.1" }
            "379893" { [Version]"4.5.2" }
            "393295|393297" { [Version]"4.6" }
            "394254|394271" { [Version]"4.6.1" }
            "394802|394806" { [Version]"4.6.2" }
            {$_ -gt 394806} { [Version]"Undocumented 4.6.2 or higher, please update script" }
          }
        }
    }

This is what mine looks like:
Code:
C:\Users\User\Desktop>powershell
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS C:\Users\User\Desktop> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      14393  576


PS C:\Users\User\Desktop> Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse |
>> Get-ItemProperty -name Version,Release -EA 0 |
>> Where { $_.PSChildName -match '^(?!S)\p{L}'} |
>> Select PSChildName, Version, Release, @{
>>   name="Product"
>>   expression={
>>       switch -regex ($_.Release) {
>>         "378389" { [Version]"4.5" }
>>         "378675|378758" { [Version]"4.5.1" }
>>         "379893" { [Version]"4.5.2" }
>>         "393295|393297" { [Version]"4.6" }
>>         "394254|394271" { [Version]"4.6.1" }
>>         "394802|394806" { [Version]"4.6.2" }
>>         {$_ -gt 394806} { [Version]"Undocumented 4.6.2 or higher, please update script" }
>>       }
>>     }
>> }

PSChildName                      Version        Release Product
-----------                      -------        ------- -------
v2.0.50727                       2.0.50727.4927
v3.0                             3.0.30729.4926
Windows Communication Foundation 3.0.4506.4926
Windows Presentation Foundation  3.0.6920.4902
v3.5                             3.5.30729.4926
Client                           4.6.01586      394802  4.6.2
Full                             4.6.01586      394802  4.6.2
Client                           4.0.0.0


PS C:\Users\User\Desktop>
Powershell is straightforward: it says I have 5.1 installed,

for net, installing 3.5 includes 2.0 and 3.0, and installing 4.6 includes 4.0 and 4.6.2 (with 4.6.1 implied from that)

Last edited by Guy Incognito; 12-30-2016 at 10:37 PM.
Guy Incognito is offline  
Reply With Quote
The Following 2 Users Say Thank You to Guy Incognito For This Useful Post:
Windrunner (01-01-2017), Wren (12-30-2016)
Old 05-06-2017, 04:47 PM   #3
masked lala
Forum Lurker
Forum Lurker
 
Join Date: May 2017
Posts: 3
Thanks: 1
Thanked 0 Times in 0 Posts

Default

Attached is the npNewLalafellMod if you want to add it.

Also, are the extracted models supposed to be directly insertable in dat files (in place of another (larger/same size) model)?
Attached Files
File Type: zip npNewLalafellMod1.1.2.zip (361.7 KB, 32 views)
masked lala is offline  
Reply With Quote
Old 05-06-2017, 05:21 PM   #4
Guy Incognito
Regular Forum User
Forum Member
 
Join Date: Sep 2006
Posts: 101
Thanks: 0
Thanked 57 Times in 27 Posts

Default

Quote:
Originally Posted by masked lala View Post
Attached is the npNewLalafellMod if you want to add it.

Also, are the extracted models supposed to be directly insertable in dat files (in place of another (larger/same size) model)?
Pretty much, the file to overwrite must be equal or larger in size as you've stated. The dat inside the addon is the compressed file + it's dat header/metadata, exactly as it's stored inside a dat container.

You have to know ahead of time that you'll fit inside the file slot, the naughtwvr installer doesnt know how to actually read the index/dat files, all it does is <seek to offset X> -> <write X bytes> -> <seek to offset Y> and so on. He manually verified it in one way or another before creating the installer that the files will fit.

When SE adds a new file to the game data, they generally add a bit of slack at the end for the eventuality that they need to update it and it grows. Seeing 10% slack at the end of each file isn't uncommon if the file cannot grow by much (such as textures), up to even 40% for file that can grow, such as models (since they can grow arbitrarily within the limit of their pc minimum requirements) If a file still needs even more space, SE blanks out the original file slot and writes the new file to the end of the current dat. The old slot seems to get left unused(?)

----------------------------------------------------------------------

I have tools to pretty much automate the entire process of adding/modifying file entries, but we're nowhere near release ready since we havnt made any graphical tools to do so. It's pretty all command line at best

There really isnt a quick way to get the size of the file slot (my previous guide is out of date, and will be updated when we are ready to release), you pretty much have to either be able to manually read the file entry header in the dat, or know where the next file starts (and the files arn't really in any specific order beyond creation date)

Code:
PS C:\Users\User\Source\Repos\XIVlib-PS> Get-FFXIVfilesomethingname 040000:chara/human/c0201/obj/body/b0001/texture/c0201b0001_d.tex

volumeLabel       : 040000
filePath          : chara/human/c0201/obj/body/b0001/texture/c0201b0001_d.tex
numberOfOffsets   : 2
folderHash        : -1561557400
fileHash          : 212844057
pathHash          : -1956194249
subContainerID    : 3
indexEntryOffset  : {1155032, 482692}
storedOffset      : 42646
physicalOffset    : 341120
offsetsMatch      : True
entryLength       : 34800
entryHeaderLength : 256
entryType         : Texture
fileSize          : 87480
entryUnk5         : 272
entryUnk6         : 250
entryBlockCount   : 10
dataHeader        : XIVlib.IO.DatFile+TextureBlockTable
fileContents      : {0, 0, 128, 0...}
For the above example:
Code:
filename: chara/human/c0201/obj/body/b0001/texture/c0201b0001_d.tex
file container: 040000.win32.dat3 at offset 0x53480‬ (341120 decimal)
compressed file entry size: 34800 bytes
decompressed file size: 87480 bytes
file type: texture
If you take a look at the 4.0 benchmark proof of concept mod, I did not need to touch the original dat containers, so file size slots are completely irrelevant, the long term goal is to simply create and write to new dat containers. Textools already does this, but it's really limited in the scope of what it can add.

-------------------------------------------------------------------------

Thanks for the file, can you personally verify that it's the original/unmodified one from his store site?

I currently have:
  • FF14ARRnaughtyPatch 1.3
  • FF14ARRnaughtyPatch 1.3.1
  • npNewLalafelMod 1.1.2 (from the above, assuming it's unmodified)


If/when I need to update the addon npindex files for 4.0, I need the original files to work with.

I need verified unmodified originals as if even a single byte is changed, it will write garbage if combined with an unmodified addon

Last edited by Guy Incognito; 05-06-2017 at 05:30 PM.
Guy Incognito is offline  
Reply With Quote
Old 05-06-2017, 06:41 PM   #5
masked lala
Forum Lurker
Forum Lurker
 
Join Date: May 2017
Posts: 3
Thanks: 1
Thanked 0 Times in 0 Posts

Default

It's the one I bought when the developper was still alive, and use everyday, without any modification.

Thanks for the details, too :)
masked lala is offline  
Reply With Quote
Old 05-13-2017, 01:38 PM   #6
CeruleanCourtesan
Forum Lurker
Forum Lurker
 
Join Date: Jul 2016
Posts: 9
Thanks: 3
Thanked 0 Times in 0 Posts

Default

Quote:
Originally Posted by Guy Incognito View Post
(Dont worry about the spaces/new lines, you can paste it all in one go, just select all and paste)
Code:
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse |
Get-ItemProperty -name Version,Release -EA 0 |
Where { $_.PSChildName -match '^(?!S)\p{L}'} |
Select PSChildName, Version, Release, @{
  name="Product"
  expression={
      switch -regex ($_.Release) {
        "378389" { [Version]"4.5" }
        "378675|378758" { [Version]"4.5.1" }
        "379893" { [Version]"4.5.2" }
        "393295|393297" { [Version]"4.6" }
        "394254|394271" { [Version]"4.6.1" }
        "394802|394806" { [Version]"4.6.2" }
        {$_ -gt 394806} { [Version]"Undocumented 4.6.2 or higher, please update script" }
      }
    }
}
Hello Guy Incognito,
I cannot seem to get the extractor to function. I'm running Win7 Professional 64bit. I was able to update powershell to 5.1, but I cannot get the rest of the query to work (quoted above); I hit enter and the command prompt does nothing. EDIT: (Nevermind, I just needed to hit enter twice after entering the multiple lines of text in powershell instead of just once.)

Powershell version:
Code:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\user>powershell
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS C:\Users\user> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      14409  1005
You can find the error message, as well as what my installer folder looks like, in the attached images.
Attached Thumbnails
Click image for larger version

Name:	naughtywvr-extractor-installer not found-1.png
Views:	28
Size:	57.3 KB
ID:	183407   Click image for larger version

Name:	naughtywvr-extractor-installer not found-2.png
Views:	25
Size:	133.5 KB
ID:	183408  

Last edited by CeruleanCourtesan; 05-14-2017 at 04:50 PM.
CeruleanCourtesan is offline  
Reply With Quote
Old 05-13-2017, 09:51 PM   #7
Guy Incognito
Regular Forum User
Forum Member
 
Join Date: Sep 2006
Posts: 101
Thanks: 0
Thanked 57 Times in 27 Posts

Default

Did you copy and paste the entire command at the same time? You should not be copy/pasting a single line and pressing enter more then once, it will not work if you do that. You should only need to press enter a single time to run the command.

You can always try (re)installing net 4.6: Microsoft .NET Framework 4.6 (Web Installer) for Windows Vista SP2, Windows 7 SP1, Windows 8, Windows 8.1, Windows Server 2008 SP2 Windows Server 2008 R2 SP1, Windows Server 2012 and Windows Server 2012 R2


Quote:
Originally Posted by CeruleanCourtesan View Post
You can find the error message, as well as what my installer folder looks like, in the attached images.
It's looking for a specific version of <installer location>\mods\00_npBasicTextures\00_npBasicTextur es.dat and cannot find the file/the correct version of the file.

Is your install missing or have a modified version of the main addon? You should try re-extracting a fresh copy of 1.3.1, that's the only version it will work with.

If and when I update it in the future, it'll will be more specific about errors, but that's your main issue right now.
Guy Incognito is offline  
Reply With Quote
Old 05-14-2017, 01:44 AM   #8
CeruleanCourtesan
Forum Lurker
Forum Lurker
 
Join Date: Jul 2016
Posts: 9
Thanks: 3
Thanked 0 Times in 0 Posts

Default

Quote:
Originally Posted by Guy Incognito View Post
Did you copy and paste the entire command at the same time? You should not be copy/pasting a single line and pressing enter more then once, it will not work if you do that. You should only need to press enter a single time to run the command.

You can always try (re)installing net 4.6: Microsoft .NET Framework 4.6 (Web Installer) for Windows Vista SP2, Windows 7 SP1, Windows 8, Windows 8.1, Windows Server 2008 SP2 Windows Server 2008 R2 SP1, Windows Server 2012 and Windows Server 2012 R2




It's looking for a specific version of <installer location>\mods\00_npBasicTextures\00_npBasicTextur es.dat and cannot find the file/the correct version of the file.

Is your install missing or have a modified version of the main addon? You should try re-extracting a fresh copy of 1.3.1, that's the only version it will work with.

If and when I update it in the future, it'll will be more specific about errors, but that's your main issue right now.
It turns out that the Extractor didn't like that the directory had brackets in it.

Example: "..\Desktop\[2]\FF14ARRnaughtyPatch1.3.1\" causes the error, but "..\Desktop\2\FF14ARRnaughtyPatch1.3.1\" works fine.

After rectifying that, the extractor worked fine. Many thanks!

Last edited by CeruleanCourtesan; 05-14-2017 at 03:06 AM.
CeruleanCourtesan is offline  
Reply With Quote
Old 05-14-2017, 01:51 PM   #9
Guy Incognito
Regular Forum User
Forum Member
 
Join Date: Sep 2006
Posts: 101
Thanks: 0
Thanked 57 Times in 27 Posts

Default

Good to know, I did quickly check if spaces caused issues (they don't), but I didnt check though all the special chars.
Guy Incognito is offline  
Reply With Quote
Reply

Lower Navigation
Go Back   Neko-Sentai » FFXIV DAT Section » General Discussion

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off



All times are GMT -5. The time now is 09:02 AM.

design by: Themes by Design


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
punch-dnaAll company, product, system names and/or company logos and marks are the registered trademarks or trademarks of their respective owners. If you are the copyright holder of any material found on this site and believe it has been used unfairly please contact one of the forum administrators.