Azurik - Rise of Perathia (Xbox) - *.xbr + file names from index file

Extraction and unpacking of game archives and compression, encryption, obfuscation, decoding of unknown files
AlphaTwentyThree
Posts: 909
Joined: Sat Aug 09, 2014 11:21 am

Azurik - Rise of Perathia (Xbox) - *.xbr + file names from index file

Post by AlphaTwentyThree »

Hello!
The xbr format of this game is pretty simple but the archives themselves don't contain any file names. Instead these are listed in a different archive called "index.xbr". However I cannot find out how they correspond to one another. This has to do something with a file index but I'm pretty lost.
Can somebody take a look at these samples?
https://1fichier.com/?b46x0z3rqv39qtgmopew
The folder structure is "as-is", the index file is inside this folder - just to open it correctly.
Thanks everybody! :)
AlphaTwentyThree
Posts: 909
Joined: Sat Aug 09, 2014 11:21 am

Re: Azurik - Rise of Perathia (Xbox) - *.xbr + file names from index file

Post by AlphaTwentyThree »

Ok, here is what I quickly found out. The structure of the index file:

Code: Select all

idstring "xobx"
get ENTRIES long
get ZERO long
get UNK long # 1
get TOCPOS long
get UNK long # 1
for i = 0 < ENTRIES
   get INDPOS long
   get ZERO long
next i
get UNK long # 6
get ZERO long
get FOOTOFF long # zero block after file names
getDstring IND 4 # "indx"
get UNK long # 8

goto TOCPOS
get FILES long
get VER long
for i = 0 < FILES
      get NAMEL long
      savepos BIAS
      get NAMEPOS long
      math NAMEPOS += BIAS
      savepos MYOFF
      goto NAMEPOS
      getDstring NAME NAMEL
      goto MYOFF
      get IDENT long
      get UNK long
      getDstring TYPE 4
      string NAME p "%s.%s" NAME TYPE
      print "%UNK% %IDENT% %NAME%"
next i

No idea how to get from the starting entry to the according file name or which xbr it is located.
Notes:
- UNK1 is in ascending order from 61436 to 98585 with varying differences
- UNK2 is a some index sadly not corresponding to an xbr file (30 indexes, 40 xbr files)
- UNK3 is in descending order for each corresponding index block with difference 20 each time
- in the file table, the corresponding xbr file is listed after the first file in the archive
After the table are the file names, including the names of the xbr files in between, so 40 entries more than in the above TOC.

edit 1:58pm - better code with correct file names!
Last edited by AlphaTwentyThree on Mon Jan 10, 2022 12:58 pm, edited 1 time in total.
AlphaTwentyThree
Posts: 909
Joined: Sat Aug 09, 2014 11:21 am

Re: Azurik - Rise of Perathia (Xbox) - *.xbr + file names from index file

Post by AlphaTwentyThree »

Almost forgot the script for the xbr files:

Code: Select all

idstring "xobx"
get VER long # ?
get ZERO long
get FILES long
get BIAS long
get TYPES long
get TYPESOFF long
get ENTRIES long
get ENTRIESOFF long
get ZERO long
get ENDOFF long
get   ENTRIES_END long
get ENTRIED_ENDOFF long
get FOLDEROFF long # ingame processing folder?
get UNK long # file index?

goto TYPESOFF
for i = 0 < TYPES
   getDstring TYPE 4
   get ID long
next i

goto ENTRIESOFF
for i = 0 < ENTRIES
   get UNK long
next i

get BNAME basename
goto 0x3c
for i = 1 <= FILES
   get OFFSET long
   math OFFSET += BIAS
   get SIZE long
   getDstring TYPE 4
   get UNK long # only 0x8, 0x10 or 0x80
   string NAME p "%s_%d.%s" BNAME i TYPE
   log NAME OFFSET SIZE
next i
AlphaTwentyThree
Posts: 909
Joined: Sat Aug 09, 2014 11:21 am

Re: Azurik - Rise of Perathia (Xbox) - *.xbr + file names from index file

Post by AlphaTwentyThree »

Any help is highly appreciated here, folks...
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Azurik - Rise of Perathia (Xbox) - *.xbr + file names from index file

Post by aluigi »

I tried the first script on index.xbr using the -B option that dumps the non-parsed content.
The result contains the names of the other xbr files but everything else is just a bunch of zeroes which mean that these strings are not referenced anywhere else.

The UNK field in index.xbr is not available in the other xbr, therefore there is no ID to use for matching the filenames.
Even the IDENT field can't be used for identifying the xbr file because the number of referred names doesn't match the files in the xbr (for example hourglass.xbr has 20 entries while "hourglass" and other "surf" types in index.xbr belong to IDENTs with many more files.
AlphaTwentyThree
Posts: 909
Joined: Sat Aug 09, 2014 11:21 am

Re: Azurik - Rise of Perathia (Xbox) - *.xbr + file names from index file

Post by AlphaTwentyThree »

Glad to see that you're stumped as well. ;)
There has to be some way however. I mean, why would they have the index file in the first place?
cic
Posts: 45
Joined: Fri Jan 07, 2022 7:44 pm

Re: Azurik - Rise of Perathia (Xbox) - *.xbr + file names from index file

Post by cic »

aluigi wrote:I tried the first script on index.xbr using the -B option that dumps the non-parsed content.
The result contains the names of the other xbr files but everything else is just a bunch of zeroes which mean that these strings are not referenced anywhere else.

The UNK field in index.xbr is not available in the other xbr, therefore there is no ID to use for matching the filenames.
Even the IDENT field can't be used for identifying the xbr file because the number of referred names doesn't match the files in the xbr (for example hourglass.xbr has 20 entries while "hourglass" and other "surf" types in index.xbr belong to IDENTs with many more files.
thanks :mrgreen:
AlphaTwentyThree
Posts: 909
Joined: Sat Aug 09, 2014 11:21 am

Re: Azurik - Rise of Perathia (Xbox) - *.xbr + file names from index file

Post by AlphaTwentyThree »

I'll try to get anywhere when I find the time. I'm quite motivated in this matter to be honest. If I succeed we can all profit in experience how some strange engines handle these things. :)