Namco PSX archives (*.BNS)

Extraction and unpacking of game archives and compression, encryption, obfuscation, decoding of unknown files
BloodRaynare
Posts: 367
Joined: Fri Mar 10, 2017 7:23 am

Namco PSX archives (*.BNS)

Post by BloodRaynare »

This format is used on Soul Edge (Soul Blade in US and Europe) and Tekken
The archives didn't have a table of contents at the header, instead some strings that usually identifies which games using the archive.
And looks like the TOC was stored on the game's executable

Here's the example (Examples from Soul Edge)
If needed I can upload the game executables too.
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Namco PSX archives (*.BNS)

Post by aluigi »

Yeah no TOC for me too, let's try with the exe
BloodRaynare
Posts: 367
Joined: Fri Mar 10, 2017 7:23 am

Re: Namco PSX archives (*.BNS)

Post by BloodRaynare »

okay exe uploaded
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Namco PSX archives (*.BNS)

Post by aluigi »

It's just a waste of time for various reasons.
Anyway I wrote a script to dump something but don't ask me what are these files:
http://aluigi.org/bms/soul_edge_bns.bms
BloodRaynare
Posts: 367
Joined: Fri Mar 10, 2017 7:23 am

Re: Namco PSX archives (*.BNS)

Post by BloodRaynare »

I decided to bump this thread again
And, aluigi please try these files from Tekken 2 instead.

https://mega.nz/#!759Gma5K!zLo0idUOTRha ... 9T1-6mnTu4

at offset 0x41B8E in the executables (SLUS_002.13) there's filenames and their directories but I don't know where the offsets are.
Maybe this could help you pinpoint the archives structure more easily.
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Namco PSX archives (*.BNS)

Post by aluigi »

BloodRaynare
Posts: 367
Joined: Fri Mar 10, 2017 7:23 am

Re: Namco PSX archives (*.BNS)

Post by BloodRaynare »

I just tried the script and it seems it just extracting the segments of the executables only, but the archives wasn't accessed at all.
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Namco PSX archives (*.BNS)

Post by aluigi »

The "log" operation is performed on the file you open, so BNS.
BloodRaynare
Posts: 367
Joined: Fri Mar 10, 2017 7:23 am

Re: Namco PSX archives (*.BNS)

Post by BloodRaynare »

Okay since I still couldn't get it right, I tried to wrote it myself.
However, the filename indexes are bit messy (Not to mention that the filenames also randomly assigned so getting which one with correct size and offset is quite tricky)

Also, how I found the file info addresses is because apparently someone already wrote the extractor long ago

Code: Select all

open FDSE "SLUS_002.13" 0
open FDSE "TEKKEN2.BNS" 1

goto 0x960

for i = 0 < INFO
   get DUMMY long
   get offset long
   math offset * 0x800
   get SIZE long
   putarray 0 i OFFSET
    putarray 1 i SIZE
   if OFFSET == 0x00000000
        break
    endif
next i

goto 0x4A716

for i = 0 < NAMES
   get NAMES string
   putarray 2 i NAMES
   padding 0x3
   savepos NAMES
   if NAMES == 0x0004f476
      break
   endif
next i

for i = 0 < FILES
    getarray OFFSET 0 i
    getarray SIZE   1 i
    getarray NAMES   2 i
   log NAMES OFFSET SIZE 1
next i


However, I'm still looking for a way to extract Soul Edge's BNS archive because that extractor is incompatible with Soul Edge ones.
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Namco PSX archives (*.BNS)

Post by aluigi »

The variables INFO and FILES are not set.

The names are less than the available files, that one is not a table with the filenames so what you get is wrong.
If it's not possible to get the correct filenames the only solution is using sequential names with guessed extensions.
BloodRaynare
Posts: 367
Joined: Fri Mar 10, 2017 7:23 am

Re: Namco PSX archives (*.BNS)

Post by BloodRaynare »

Okay, some update regarding Soul Edge's BNS....

Apparently, the TOC lacks the information of which archives is accessed (There's two another archives besides SOULOVL.BNS, named SOUL.BNS and SOULSYS.BNS), so the only way to guess it was subtract it by 0x10 from the each starting offsets and checks if the hex values of the subtracted offsets are equals to 0x10 zeroes for the each archives (after each offsets there's lot of 0x10 zeroes).
But it created problems for the very first offsets (0x800). As you can see, after the ASCII header of the each BNS ("Legend of Evil Sword...."), there's a lot of zeroes too before the 0x800. Also, since the 0x800 (0x01) listed three times with different sizes, here's the size info i gathered from the TOC (also helped by trying to match it with the each archives using HxD)

0x1a3e8 (107496) = SOULOVL.BNS
0x18404 (99332) = SOULSYS.BNS
0x24F0 (9456) = SOUL.BNS

About the another two files I mention, here's the link

https://mega.nz/#!qkdXmAAR!SYrinFHzx2tl ... vvHSZM-KQs