Page 2 of 5

Re: Researching of a .dat archive with a .mnf file.

Posted: Thu Jul 18, 2013 7:26 pm
by Lord Vaako
have you found anything?

Re: Researching of a .dat archive with a .mnf file.

Posted: Tue Jul 23, 2013 9:57 pm
by TERAB1T
Wow, I didn't know, that my topic has grown up :) Anyway, I've found out all of this back in June. I have even linked data from zosft (Zenimax Online Studios File Table btw) file from game000.dat with some other files from game000.dat (~1500 files), but I still don't know, how to find other filenames. Also I don't know, how to find filenames of files from eso0xxx.dat, even with zosft file. I was too busy to research more at the last weeks, but I will try more in the future. Also look at zosft file - it contains a lot of zlibed blocks.

Re: Researching of a .dat archive with a .mnf file.

Posted: Tue Jul 23, 2013 10:37 pm
by Lord Vaako
just an idea: maybe they use "human readable" filenames just for files used by lua scripts/interface/xml and "internal names/indexes" for other files?

Re: Researching of a .dat archive with a .mnf file.

Posted: Wed Jul 24, 2013 7:11 am
by TERAB1T
Lord Vaako wrote:just an idea: maybe they use "human readable" filenames just for files used by lua scripts/interface/xml and "internal names/indexes" for other files?
I don't think so. There is zosft file in eso0002.dat and it contains a lot of names of models and textures instead of scripts/xml.

Re: Researching of a .dat archive with a .mnf file.

Posted: Mon Aug 12, 2013 9:00 pm
by kryptanon
Ahh this thread seems dead :(
I've been looking for weeks for someone smart enough to help me create a server emulation allowing the ability
to run ESO beta locally on a private server. I thought I was the only one pokin around in the dat files. IM NOT ALONE!
Has anyone found anything related to server checks or anything? I would really like to get this up and running.
The issue I'm having is actually running the game ON the server. Your research as helped me so much! I wanna thank you for all your hard work guys :)

Re: Researching of a .dat archive with a .mnf file.

Posted: Thu Aug 15, 2013 6:39 pm
by TERAB1T
kryptanon wrote:Ahh this thread seems dead :(
I've been looking for weeks for someone smart enough to help me create a server emulation allowing the ability
to run ESO beta locally on a private server. I thought I was the only one pokin around in the dat files. IM NOT ALONE!
Has anyone found anything related to server checks or anything? I would really like to get this up and running.
The issue I'm having is actually running the game ON the server. Your research as helped me so much! I wanna thank you for all your hard work guys :)
Well, I have unpacked encrypted launcher. Do you need it?

Re: Researching of a .dat archive with a .mnf file.

Posted: Sun Aug 18, 2013 12:55 am
by kryptanon
Sure! I have eso.exe disassembled but not the launcher. Do you have any reverse-engineering experience or any coding experience? We could use some help if your interested!

Re: Researching of a .dat archive with a .mnf file.

Posted: Mon Aug 19, 2013 12:06 pm
by Droolie
I've been looking into this as well and have come to the same results: can't find the filenames. I have been manually extracting the files though, and even though I have enough coding experience to write an unpacker myself, I don't have the time lately. I noticed Ekey and perhaps others wrote one, so if anyone would be kind enough to post their unpacker here (source would be great too!) I would be really grateful. It would make doing research on this quite a lot easier ^^

Re: Researching of a .dat archive with a .mnf file.

Posted: Mon Aug 19, 2013 7:23 pm
by shakotay2
Lord Vaako wrote:I did some research myself and so far I've found offsets, sizes of packed and sizes of unpacked data blocks inside game0000.dat but still can't find filenames & directory structure :( I suppose it should be something like EsoUI/Art/Achievements/achievements_points_legendary.dds
Maybe I'm "off track" but this is what I found inside game0000.dat from offset 0x000E with aluigis comtype 1:

Code: Select all

; app UI files
EsoUI\App\LoadingScreen\LoadingScreen.lua
EsoUI\App\LoadingScreen\LoadingScreen.xml
Succeeded by this data (lua-code?):

Code: Select all

local EvtMgr = GetEventManager()

local SYSTEM_GRANULARITY = 100
local NUM_SYSTEMS = GetNumLoadingSubsystems()
local BAR_MAX = SYSTEM_GRANULARITY * NUM_SYSTEMS
local DEFAULT_TEXTURE = "EsoUI/Art/Screens/area_load.dds"

local g_loadStatus
local g_numSystemsRemaining = -1
local g_isReloadingUI

local TEXTURE_WIDTH = 1680
local TEXTURE_HEIGHT = 1050
local TEXTURE_ASPECT_RATIO = TEXTURE_WIDTH / TEXTURE_HEIGHT

local function SizeLoadingTexture()
[...]
function InitLoadScreen(self)
    LoadingScreenBar:SetMinMax(0, BAR_MAX)

    local r, g, b, a = GetInterfaceColor(INTERFACE_COLOR_TYPE_LOADING_SCREEN, LOADING_SCREEN_COLOR_BAR_START)
    local r1, g1, b1, a1 = GetInterfaceColor(INTERFACE_COLOR_TYPE_LOADING_SCREEN, LOADING_SCREEN_COLOR_BAR_END)
    LoadingScreenBar:SetGradientColors(r, g, b, a, r1, g1, b1, a1)
    
    EvtMgr:RegisterForEvent("LoadingScreen_AreaLoadStarted", EVENT_AREA_LOAD_STARTED, OnAreaLoadStarted)
    EvtMgr:RegisterForEvent("LoadingScreen_SizeLoadingTexture", EVENT_SCREEN_RESIZED, SizeLoadingTexture)
    EvtMgr:RegisterForEvent("LoadingScreen_OnReloadGui", EVENT_RELOAD_GUI, OnReloadGui)
    EvtMgr:RegisterForEvent("LoadingScreen_OnPrepareForJump", EVENT_PREPARE_FOR_JUMP, OnPrepareForJump)
    EvtMgr:RegisterForEvent("LoadingScreen_OnJumpFailed", EVENT_JUMP_FAILED, OnJumpFailed)

    local function OnSubsystemLoadComplete(eventCode, system)
        UpdateLoadingBar(system, 1.0)
        g_numSystemsRemaining = g_numSystemsRemaining - 1
        if g_numSystemsRemaining == 0 then
            OnLoadingCompleted()
        end
    end

    EvtMgr:RegisterForEvent("LoadingScreen_OnSubsystemLoadComplete", EVENT_SUBSYSTEM_LOAD_COMPLETE, OnSubsystemLoadComplete)

    SizeLoadingTexture()
end

Re: Researching of a .dat archive with a .mnf file.

Posted: Mon Aug 19, 2013 7:32 pm
by kryptanon
shakotay2 wrote:
Lord Vaako wrote:I did some research myself and so far I've found offsets, sizes of packed and sizes of unpacked data blocks inside game0000.dat but still can't find filenames & directory structure :( I suppose it should be something like EsoUI/Art/Achievements/achievements_points_legendary.dds
Maybe I'm "off track" but this is what I found inside game0000.dat from offset 0x000E with aluigis comtype 1:

Code: Select all

; app UI files
EsoUI\App\LoadingScreen\LoadingScreen.lua
EsoUI\App\LoadingScreen\LoadingScreen.xml
Succeeded by this data (lua-code?):

Code: Select all

local EvtMgr = GetEventManager()

local SYSTEM_GRANULARITY = 100
local NUM_SYSTEMS = GetNumLoadingSubsystems()
local BAR_MAX = SYSTEM_GRANULARITY * NUM_SYSTEMS
local DEFAULT_TEXTURE = "EsoUI/Art/Screens/area_load.dds"

local g_loadStatus
local g_numSystemsRemaining = -1
local g_isReloadingUI

local TEXTURE_WIDTH = 1680
local TEXTURE_HEIGHT = 1050
local TEXTURE_ASPECT_RATIO = TEXTURE_WIDTH / TEXTURE_HEIGHT

local function SizeLoadingTexture()
[...]
function InitLoadScreen(self)
    LoadingScreenBar:SetMinMax(0, BAR_MAX)

    local r, g, b, a = GetInterfaceColor(INTERFACE_COLOR_TYPE_LOADING_SCREEN, LOADING_SCREEN_COLOR_BAR_START)
    local r1, g1, b1, a1 = GetInterfaceColor(INTERFACE_COLOR_TYPE_LOADING_SCREEN, LOADING_SCREEN_COLOR_BAR_END)
    LoadingScreenBar:SetGradientColors(r, g, b, a, r1, g1, b1, a1)
    
    EvtMgr:RegisterForEvent("LoadingScreen_AreaLoadStarted", EVENT_AREA_LOAD_STARTED, OnAreaLoadStarted)
    EvtMgr:RegisterForEvent("LoadingScreen_SizeLoadingTexture", EVENT_SCREEN_RESIZED, SizeLoadingTexture)
    EvtMgr:RegisterForEvent("LoadingScreen_OnReloadGui", EVENT_RELOAD_GUI, OnReloadGui)
    EvtMgr:RegisterForEvent("LoadingScreen_OnPrepareForJump", EVENT_PREPARE_FOR_JUMP, OnPrepareForJump)
    EvtMgr:RegisterForEvent("LoadingScreen_OnJumpFailed", EVENT_JUMP_FAILED, OnJumpFailed)

    local function OnSubsystemLoadComplete(eventCode, system)
        UpdateLoadingBar(system, 1.0)
        g_numSystemsRemaining = g_numSystemsRemaining - 1
        if g_numSystemsRemaining == 0 then
            OnLoadingCompleted()
        end
    end

    EvtMgr:RegisterForEvent("LoadingScreen_OnSubsystemLoadComplete", EVENT_SUBSYSTEM_LOAD_COMPLETE, OnSubsystemLoadComplete)

    SizeLoadingTexture()
end


What did you use to unpack this?

Re: Researching of a .dat archive with a .mnf file.

Posted: Mon Aug 19, 2013 7:41 pm
by TERAB1T
kryptanon wrote:Sure! I have eso.exe disassembled but not the launcher. Do you have any reverse-engineering experience or any coding experience? We could use some help if your interested!
http://yadi.sk/d/4n_Ubuw085cTf I have some coding experience (actually I have written almost working unpacker back in june), but don't have any reverse-engineering experience :(
kryptanon wrote:What did you use to unpack this?
It's just zlibed block from game0000.dat

Re: Researching of a .dat archive with a .mnf file.

Posted: Mon Aug 19, 2013 7:46 pm
by shakotay2
quickbms

next file is

Code: Select all

<GuiXml>
    <Controls>
        <TopLevelControl name="LoadingScreen" mouseEnabled="true" keyboardEnabled="true">
            <AnchorFill />
this is the bms:
set i long 1
comtype i

set NAME string "test.txt"
#clog NAME 0 ZSIZE SIZE
#set ZSIZE long 58
#set SIZE long 100
#clog NAME 0+14 ZSIZE SIZE

# lua file
#set ZSIZE long 1682
#set SIZE long 6984
#clog NAME 58+14 ZSIZE SIZE

# xml file
set ZSIZE long 1682
set SIZE long 6984
clog NAME 1740+14 ZSIZE SIZE

(I had the first 14 bytes cut from the original game0000.dat so you'll have to add them for clogs offset.)

edit: okay, too late...

Re: Researching of a .dat archive with a .mnf file.

Posted: Mon Aug 19, 2013 7:50 pm
by TERAB1T

Code: Select all

; app UI files
EsoUI\App\LoadingScreen\LoadingScreen.lua
EsoUI\App\LoadingScreen\LoadingScreen.xml
It is file \esoui\app\app.txt

Code: Select all

local EvtMgr = GetEventManager()

local SYSTEM_GRANULARITY = 100
local NUM_SYSTEMS = GetNumLoadingSubsystems()
local BAR_MAX = SYSTEM_GRANULARITY * NUM_SYSTEMS
local DEFAULT_TEXTURE = "EsoUI/Art/Screens/area_load.dds"

local g_loadStatus
local g_numSystemsRemaining = -1
local g_isReloadingUI

local TEXTURE_WIDTH = 1680
local TEXTURE_HEIGHT = 1050
local TEXTURE_ASPECT_RATIO = TEXTURE_WIDTH / TEXTURE_HEIGHT

local function SizeLoadingTexture()
[...]
function InitLoadScreen(self)
    LoadingScreenBar:SetMinMax(0, BAR_MAX)

    local r, g, b, a = GetInterfaceColor(INTERFACE_COLOR_TYPE_LOADING_SCREEN, LOADING_SCREEN_COLOR_BAR_START)
    local r1, g1, b1, a1 = GetInterfaceColor(INTERFACE_COLOR_TYPE_LOADING_SCREEN, LOADING_SCREEN_COLOR_BAR_END)
    LoadingScreenBar:SetGradientColors(r, g, b, a, r1, g1, b1, a1)
    
    EvtMgr:RegisterForEvent("LoadingScreen_AreaLoadStarted", EVENT_AREA_LOAD_STARTED, OnAreaLoadStarted)
    EvtMgr:RegisterForEvent("LoadingScreen_SizeLoadingTexture", EVENT_SCREEN_RESIZED, SizeLoadingTexture)
    EvtMgr:RegisterForEvent("LoadingScreen_OnReloadGui", EVENT_RELOAD_GUI, OnReloadGui)
    EvtMgr:RegisterForEvent("LoadingScreen_OnPrepareForJump", EVENT_PREPARE_FOR_JUMP, OnPrepareForJump)
    EvtMgr:RegisterForEvent("LoadingScreen_OnJumpFailed", EVENT_JUMP_FAILED, OnJumpFailed)

    local function OnSubsystemLoadComplete(eventCode, system)
        UpdateLoadingBar(system, 1.0)
        g_numSystemsRemaining = g_numSystemsRemaining - 1
        if g_numSystemsRemaining == 0 then
            OnLoadingCompleted()
        end
    end

    EvtMgr:RegisterForEvent("LoadingScreen_OnSubsystemLoadComplete", EVENT_SUBSYSTEM_LOAD_COMPLETE, OnSubsystemLoadComplete)

    SizeLoadingTexture()
end
And this one is \esoui\app\loadingscreen\loadingscreen.lua

Re: Researching of a .dat archive with a .mnf file.

Posted: Mon Aug 19, 2013 8:05 pm
by TERAB1T
http://yadi.sk/d/k1X6Iieg85hVl - unpacked game0000.dat (mostly with names)

Re: Researching of a .dat archive with a .mnf file.

Posted: Mon Aug 19, 2013 8:18 pm
by kryptanon
You guys are awesome! You're really opening some doors on my research on building this thing!
I really thank you guys!


This may be a silly question. I'm no pro by any means but if I were to edit some of those .xml in game0000.dat how would I recompile that back into a .dat file? Is there any software that would do this for me?