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.

Konjiki no Gashbell!! Gekitou! Saikyou no Mamono-tachi (PS2) File OUT2.CAR

Featured Replies

Hello, I would like help extracting files with the correct names from the file OUT2.CAR.  I can see a list with the paths and names in the file SLPS_254.40  (22C3A8), but I haven't found the offset or size to extract them.
Here is the link to the files: https://mega.nz/folder/uYsgiYgR#kGVm9F9NGNfPBkKurdtHdQ. sorry about the size.
I appreciate any help.

Edited by Reh

  • Supporter

Hello Reh,

I split the out2.car from 0x3042000 to 0x8916640 (as an example), but with floats and an FVFsize of 64 there's soon a NAN, not-a-(float)number:

(split block starts with offs 0 then, of course)

# 0x74c8b0: verts= 500
v 0.758720 0.051729 1.000000
v 0.509014 0.051729 1.000000
v 0.758718 0.945331 1.000000
v 0.509014 0.945331 1.000000
v 0.758717 0.984665 1.000000
v 0.381963 0.971724 1.000000
v 0.258720 1.000000 1.000000
v 13.915825 0.055000 -30.631762
v 13.915825 0.866694 -30.631762
v 13.871824 0.055000 -30.675766
v 13.871824 0.866501 -30.675766
v 13.915825 0.055000 -30.719618
v 13.915825 0.866501 -30.719620
v 13.959826 0.055000 -30.675766
v 13.959826 0.866501 -30.675766
v 13.915825 0.055000 -30.631762
v 13.915825 0.866694 -30.631762
v 0.000000 nan 0.000000
v 0.991364 0.042016 -0.124226
v -0.000001 -0.702304 0.71187

edit: starting at 0x74C7A0 and replacing the "v 0.000000 nan 0.000000" lines

by #v 0.000000 nan 0.000000

gives this:

blender_IfLCKCvaC8.png.5171fef58ffb37b06917d794c6909f7b.png

blender_9VNnHIOlXi.png.b0e4875051cb32c2dfb164303ff49032.png

 

Edited by shak-otay

  • Supporter

The struct is

 

struct Out2Entry {
    u32 name_ptr;     // pointer to path string
    s32 tag;          // -2 normal, -3 special/sentinel
    u32 lsn_or_blk;   // LSN/offset in blocks
    u32 sectors;      // number of blocks
    u32 alloc_size;   // always sectors * 0x800
    u32 real_size;    // actual file size
    u32 flags;        // unknown
};

 

  • Supporter

Let the SLPS in the same folder of out2.car
and use this script below in quickbms selecting out2.car

 

#Konjiki no Gashbell extractor by Rabatini

open FDSE "SLPS_254.40" 1

get ARCHIVE_SIZE asize 0
get SLPS_SIZE    asize 1

set BASE_LSN   long 311

set VADDR_BASE long 0x247A80
set FILE_BASE  long 0x148A80

set SCAN_START long 0x001000
math SCAN_END = SLPS_SIZE
math SCAN_END - 0x1c

set FOUND long 0

for POS = SCAN_START < SCAN_END

    goto POS 1
    get NAME_PTR long 1
    get TAG      long 1
    get LSN      long 1
    get SECTORS  long 1
    get ALLOC    long 1
    get SIZE     long 1
    get FLAGS    long 1

    if TAG == 0xFFFFFFFE
        math EXPECT = SECTORS
        math EXPECT * 0x800

        if EXPECT == ALLOC
            if SIZE > 0
                if SIZE <= ALLOC

                    math OFFSET = LSN
                    math OFFSET - BASE_LSN
                    if OFFSET >= 0
                        math OFFSET * 0x800

                        math END_OFF = OFFSET
                        math END_OFF + SIZE
                        if END_OFF <= ARCHIVE_SIZE

                            
                            set DUP long 0
                            for J = 0 < FOUND
                                getarray OLDLSN 0 J
                                if OLDLSN == LSN
                                    set DUP long 1
                                    break
                                endif
                            next J

                            if DUP == 0
                                putarray 0 FOUND LSN
                                math FOUND + 1

                                string NAME p= "files/%05d_%08x_%08x.bin" FOUND LSN SIZE

                                # tenta resolver o nome pelo ponteiro da entrada
                                math NAME_OFF = NAME_PTR
                                math NAME_OFF - VADDR_BASE
                                math NAME_OFF + FILE_BASE

                                if NAME_OFF >= 0
                                    if NAME_OFF < SLPS_SIZE
                                        goto NAME_OFF 1
                                        getct TMP string 0x00 1
                                        if TMP != ""
                                            string NAME = TMP
                                        endif
                                    endif
                                endif

                                log NAME OFFSET SIZE 0
                            endif
                        endif
                    endif
                endif
            endif
        endif
    endif

    # o for adiciona +1 no next, então aqui somamos +3 = passo real de 4 bytes
    math POS + 3
next POS

 

Konjiki no Gashbell extractor by Rabatini.zip

Edited by Rabatini

  • Author
On 4/17/2026 at 12:58 PM, shak-otay said:

Hello Reh,

 

Hello shak-otay 😄
These PS2 formats are always a headache XD

mdl.png

  • Author
On 4/17/2026 at 10:42 PM, Rabatini said:

Let the SLPS in the same folder of out2.car
and use this script below in quickbms selecting out2.car

 

#Konjiki no Gashbell extractor by Rabatini

open FDSE "SLPS_254.40" 1

get ARCHIVE_SIZE asize 0
get SLPS_SIZE    asize 1

set BASE_LSN   long 311

set VADDR_BASE long 0x247A80
set FILE_BASE  long 0x148A80

set SCAN_START long 0x001000
math SCAN_END = SLPS_SIZE
math SCAN_END - 0x1c

set FOUND long 0

for POS = SCAN_START < SCAN_END

    goto POS 1
    get NAME_PTR long 1
    get TAG      long 1
    get LSN      long 1
    get SECTORS  long 1
    get ALLOC    long 1
    get SIZE     long 1
    get FLAGS    long 1

    if TAG == 0xFFFFFFFE
        math EXPECT = SECTORS
        math EXPECT * 0x800

        if EXPECT == ALLOC
            if SIZE > 0
                if SIZE <= ALLOC

                    math OFFSET = LSN
                    math OFFSET - BASE_LSN
                    if OFFSET >= 0
                        math OFFSET * 0x800

                        math END_OFF = OFFSET
                        math END_OFF + SIZE
                        if END_OFF <= ARCHIVE_SIZE

                            
                            set DUP long 0
                            for J = 0 < FOUND
                                getarray OLDLSN 0 J
                                if OLDLSN == LSN
                                    set DUP long 1
                                    break
                                endif
                            next J

                            if DUP == 0
                                putarray 0 FOUND LSN
                                math FOUND + 1

                                string NAME p= "files/%05d_%08x_%08x.bin" FOUND LSN SIZE

                                # tenta resolver o nome pelo ponteiro da entrada
                                math NAME_OFF = NAME_PTR
                                math NAME_OFF - VADDR_BASE
                                math NAME_OFF + FILE_BASE

                                if NAME_OFF >= 0
                                    if NAME_OFF < SLPS_SIZE
                                        goto NAME_OFF 1
                                        getct TMP string 0x00 1
                                        if TMP != ""
                                            string NAME = TMP
                                        endif
                                    endif
                                endif

                                log NAME OFFSET SIZE 0
                            endif
                        endif
                    endif
                endif
            endif
        endif
    endif

    # o for adiciona +1 no next, então aqui somamos +3 = passo real de 4 bytes
    math POS + 3
next POS

 

Konjiki no Gashbell extractor by Rabatini.zip 1007 B · 2 downloads

Thanks for the script Rabatini, but the file headers don't look right, por example, .mdl files should start with MDL4, and some images also have missing data.
In any case, I am very grateful for the help and time you dedicated to assisting me. Thank you all very much.

  • Supporter
3 minutes ago, Reh said:

Hello shak-otay 😄
These PS2 formats are always a headache XD

Hi, if it's about the automatic creation of faces: Nenkai solved it generally for PS2, afaik. But I haven't had the time to check his code yet.

  • Author
2 hours ago, shak-otay said:

Hi, if it's about the automatic creation of faces: Nenkai solved it generally for PS2, afaik. But I haven't had the time to check his code yet.

That would be a great help. Could you tell me what the Nenkai script is so I can take a look?

Edited by Reh

  • Supporter
4 hours ago, Reh said:

Could you tell me what the Nenkai script is...

That's the problem - if I could remember I would have given the link.

I fear you'll need to search for yourself.

My best bet is that I was checking the links in this post.

(I have a picture in mind of one of his solutions here on ResHax, parallel blocks of buildings, but I can't seem to find it any more.)

edit: was before 16th of August 2025

coming closer

Edited by shak-otay

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.