Skip to content
View in the app

A better way to browse. Learn more.

ResHax

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Help us keep the site running.

Need help to unpack/repack VFS3 Archive

Featured Replies

  • Author
  • Localization
11 minutes ago, MrIkso said:

On pc version game doesn't has this archive, all files unpacked

thanks you for the reply, but i want to edit ps4 version. 😞

  • Author
  • Localization
On 1/27/2026 at 10:53 PM, shak-otay said:

I'd suggest to search for 'vfs' in the Zenhax archives, 153 results. Maybe there's some useful hint among them?

Unfortunately, what I read on the Zenhax archive wasn’t of any help; they also couldn’t figure out the compression used by the VFS3 file.

  • Supporter
1 hour ago, petermike867 said:

they also couldn’t figure out the compression used by the VFS3 file.

too bad. Then a comtype scan could come in handy. But it could get somewhat boring because you'll need to check 100 and more resulting extracted files manually in a hex editor for a hit,

  • Localization

I initially analyzed the file and found instances of F1N Headers (46 6C 4E), of which there are 196 in the file. I managed to find several matching addresses in the index. The analysis is in its early stages, so that's all I can share for now.

  • Author
  • Localization
10 hours ago, zbirow said:

I initially analyzed the file and found instances of F1N Headers (46 6C 4E), of which there are 196 in the file. I managed to find several matching addresses in the index. The analysis is in its early stages, so that's all I can share for now.

tysm for your time analysing this!

  • 5 months later...
  • Localization

looked into it and seems to be using the same format as Ni No Kuni 2 & Killer7 but with a different compression than zstd or zlib (the str offset is 0 and the decompression dictionary offset is now the str offset, also the compression id is kinda just random)

Edit: I think I mixed up some fields, probably zstd without decompression dicts but with encryption

Edited by NeoGT404

  • Localization

Here's a hexpat:

struct Str {
    u32 l;
    char v[l];
};

struct de {
    u32 crc;
    s32 id;
    s32 pid;
    s32 nid;
    u32 dc;
    s32 u1;
    u32 fc;
};
bitfield fle {
    bool zstd : 1; // otherwise zlib
    bool compressed : 1;
    padding : 3;
    unk1 : 1;
    padding : 10;
    s16 zstd_dict_id;
};
struct fe {
    u64 off;
    u64 zs;
    u64 us;
    u32 crc;
    u32 fid;
    fle fl;
    u32 did;

    char start[4] @ (parent.do + off);
    char end[4] @ (parent.do + off + zs - 4);
};
struct ce {
    u32 s;
    u32 cs[s / 4];
};

bitfield fl {
    padding : 4;
    bool chunks : 1;
    bool zstd_dicts : 1;
    padding : 26;
};
struct a {
    char magic[4];
    fl fl;
    u32 v;
    u32 dc;
    $ += dc * 0x1C;

    u32 fc;
    u64 fso = $;
    u64 do = fso + fc*0x28 + 0x18;
    u64 chnkdo @ (do - 0x18);
    u64 decdo @ (do - 0x10);
    u64 stro @ (do - 8);
    u64 so = stro;
    if (so == 0) so = decdo;    

    $ = so;
    u32 fsc;
    Str fstrs[fsc];
    u32 dsc;
    Str dstrs[dsc];

    $ = chnkdo;
    u32 chnkz;
    u64 ep = $ + chnkz;
    ce ce[while($ < ep)];

    de de[dc] @ 0x10;
    fe fe[fc] @ fso;
};

a a @ 0;
  • Author
  • Localization
1 hour ago, NeoGT404 said:

I'm thinking it's encrypted so I'll need the game executable

Hi, tysm for your time working on this, here is the game executablemain.zip

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.