ZenHAX

Free Game Research Forum | Official QuickBMS support | twitter @zenhax | SSL HTTPS://zenhax.com
It is currently Wed Oct 21, 2020 10:09 pm

All times are UTC




Post new topic  Reply to topic  [ 6 posts ] 
Author Message
PostPosted: Sat Oct 03, 2020 5:43 am 

Joined: Wed Nov 18, 2015 1:35 pm
Posts: 20
Dear Forum,

currently i'm trying to extract the files from the PSP version of Growlanser 1:

DATA.DAT
GLB.DAT
MAGD.BIN
MAP.DAT
MSYS.DAT
NEFF.BIN
SCEN.DAT
UPD.UPD
VOICE.DAT

But compared to Growlanser 5/6, these files seems very differently build up.
Heres what the start of DATA.DAT, GLB.DAT, MAP.DAT, SCEN.DAT and VOICE.DAT looks like in a HEX Editor:

DATA.DAT https://i.imgur.com/4FLrkis.png
GLB.DAT https://i.imgur.com/DsEkSMC.png
MAP.DAT https://i.imgur.com/z1pRIue.png
SCEN.DAT https://i.imgur.com/6dKPOjd.png
VOICE.DAT https://i.imgur.com/2qArGUL.png

I can't really seem to figure out how the file table is build up, but i noticed that inside SCEN.DAT (this is the one that stores the script) the files seem to be placed in either 0x000 or 0x800:

https://imgur.com/a/osKtVdh

So, i thought maybe i could just let quickBMS dump the files that have lots of 00s before a 0x000 or 0x800, but i am not sure if this is actually possible.
Does anyone know if its possible to make a quickBMS script that could dump the files?
Here are the .DAT files mentioned:

https://anonfiles.com/vducNcbbp8/SCEN_rar
https://anonfiles.com/31u4Neb5p2/MAP_rar
https://anonfiles.com/59vaN2b3p3/DATA_rar
https://anonfiles.com/X7v3N2b0p2/GLB_rar
https://anonfiles.com/T822N7bdpb/VOICE_rar


Last edited by Risae on Sat Oct 03, 2020 4:46 pm, edited 2 times in total.

Top
   
PostPosted: Sat Oct 03, 2020 5:45 am 

Joined: Wed Nov 18, 2015 1:35 pm
Posts: 20
A buddy of mine also looks into the files right now, and might have figured something out from the SCEN.DAT:

Quote:
Basically,
Red is amount of files (unverified),
green is position (multiply by LBA size, 0x800, to get the real position)
and blue is size (multiply by LBA size, 0x800, to get the real size)

Image

For SCEN.DAT at least



Top
   
PostPosted: Sat Oct 03, 2020 11:24 am 

Joined: Wed Nov 18, 2015 1:35 pm
Posts: 20
My buddy made 2 quickBMS script for the SCEN.DAT:

Code:
# Growlanser VI: Precarious World
# script for QuickBMS http://quickbms.aluigi.org

get FILES long
for i = 0 < FILES
    get OFFSET short
    get SIZE short
    math OFFSET *= 0x800
    math SIZE *= 0x800
    log "" OFFSET SIZE
next i


The script above is able to dump all of the 1140 files inside SCEN.DAT, but most of those are 0kb so he adjusted the script a little bit:

Code:
# Growlanser VI: Precarious World
# script for QuickBMS http://quickbms.aluigi.org

get FILES long
for i = 0 < FILES
    get OFFSET short
    get SIZE short
    math OFFSET *= 0x800
    math SIZE *= 0x800

    if SIZE != 0
        savepos POS
        goto OFFSET
        get ID long
       
        string FILE_NAME = ""
        string FILE_NAME + i
        if ID == 0x64
            string FILE_NAME + ".SCEN"
            log FILE_NAME OFFSET SIZE
        else
            string FILE_NAME + ".DAT"
            log FILE_NAME OFFSET SIZE
        endif
        goto POS
    endif
next i


No progress on the other files so far. If anybody has some recommendations on how to improve the quickBMS script, please do tell!

Edit: The script seems to work on the GL1 PSP + PS1 SCEN.DAT and MAP.DAT


Top
   
PostPosted: Mon Oct 05, 2020 6:30 am 

Joined: Wed Nov 18, 2015 1:35 pm
Posts: 20
Update:

It seems like both the SCEN quickBMS script don't work properly. There are still cases when there are files that do not have the proper file length:

Image

My buddy was able to make a sort of working quickBMS script for DATA.DAT and GLB.DAT:

Code:
# Growlanser I (PSP) - DATA.DAT
# script for QuickBMS http://quickbms.aluigi.org

getdstring FILE_NAME_1 0x1C

goto 0x1C
get OFFSET_1 long

savepos POS
xmath POS_2 "POS + 0x1C"
goto POS_2

get OFFSET_2 long
reverselong OFFSET_2
reverselong OFFSET_1

xmath SIZE "OFFSET_2 - OFFSET_1"
log FILE_NAME_1 OFFSET_1 SIZE

goto POS

do
getdstring FILE_NAME 0x1C
xmath POS "POS + 0x1C"

get OFFSET long

savepos POS
xmath POS_2 "POS + 0x1C"
goto POS_2

get OFFSET_2 long
reverselong OFFSET_2
reverselong OFFSET

xmath SIZE "OFFSET_2 - OFFSET"
log FILE_NAME OFFSET SIZE

goto POS

while POS != OFFSET_1


And here for GLB.DAT:

Code:
# Growlanser I (PSP) - GLB.DAT
# script for QuickBMS http://quickbms.aluigi.org

getdstring FILE_NAME_1 0xA

goto 0xA
get OFFSET_1 long

savepos POS
xmath POS_2 "POS + 0xA"
goto POS_2

get OFFSET_2 long
reverselong OFFSET_2
reverselong OFFSET_1

xmath SIZE "OFFSET_2 - OFFSET_1"
log FILE_NAME_1 OFFSET_1 SIZE

goto POS

do
getdstring FILE_NAME 0xA
xmath POS "POS + 0xA"

get OFFSET long

savepos POS
xmath POS_2 "POS + 0xA"
goto POS_2

get OFFSET_2 long
reverselong OFFSET_2
reverselong OFFSET

xmath SIZE "OFFSET_2 - OFFSET"
log FILE_NAME OFFSET SIZE

goto POS

while POS != OFFSET_1



Anybody got a clue what could be wrong with the SCEN.DAT script?

Additional Information:

GL1 PSP is a remake from the PS1 version.
For comparison, here are the files from GL1 PS1 and PSP:

PS1:

Code:
Growlanser (Japan) (Disc 1).bin
>SLPS_023.80
>MAGD.BIN
>NEFF.BIN
>SYSTEM.CNF
>FTIM.DAT
>MAP.DAT
>MSYS.DAT
>SCEN.DAT
>SND.DAT
>XATBL.DAT
>MOVIE0.STR
>MOVIE1.STR
>UPD.UPD
>VOICE.XA


PSP:

Code:
Grow_Lanser_JPN.iso
>UMD_DATA.BIN
>PSP_GAME
>>ICON0.PNG
>>PARAM.SFO
>>PIC0.PNG
>>PIC1.PNG
>>SYSDIR
>>>BOOT.BIN
>>>EBOOT.BIN
>>>UPDATE
>>>>DATA.BIN
>>>>EBOOT.BIN
>>>>PARAM.SFO
>>USRDIR
>>>DATA_BOOT.DAT
>>>GR_SAVE_ICON0.PNG
>>>GR_SAVE_PIC1.PNG
>>>logo.bmp
>>>op1.pmf
>>>op2.pmf
>>>TMP.DAT
>>>gr_data1
>>>>MAGD.BIN
>>>>NEFF.BIN
>>>>DATA.DAT
>>>>GLB.DAT
>>>>MAP.DAT
>>>>MSYS.DAT
>>>>SCEN.DAT
>>>>VOICE.DAT
>>>>UPD.UPD
>>>kmodule
>>>>audiocodec.prx
>>>>audiocodec_back.prx
>>>>ifhandle.prx
>>>>memab.prx
>>>>mpegbase.prx
>>>>mpegbase_.prx
>>>>pspnet_adhoc_auth.prx
>>>>videocodec.prx
>>>>videocodec_.prx
>>>module
>>>>libatrac3plus.prx
>>>>libatrac3plus_back.prx
>>>>mpeg.prx
>>>>mpeg_.prx
>>>>pspnet.prx
>>>>pspnet_adhoc.prx
>>>>pspnet_adhoc_download.prx
>>>>pspnet_adhoc_matching.prx
>>>>pspnet_adhocctl.prx
>>>>pspnet_apctl.prx
>>>>pspnet_inet.prx


Top
   
PostPosted: Thu Oct 08, 2020 8:43 pm 
Site Admin
User avatar

Joined: Wed Jul 30, 2014 9:32 pm
Posts: 11680
Just gave a quick look at SCEN.DAT and the script of your friend is correct, there are indeed 0bytes files since the coverage is 99% and the offset doesn't advance with these files.


Top
   
PostPosted: Fri Oct 09, 2020 11:05 am 

Joined: Wed Nov 18, 2015 1:35 pm
Posts: 20
aluigi wrote:
Just gave a quick look at SCEN.DAT and the script of your friend is correct, there are indeed 0bytes files since the coverage is 99% and the offset doesn't advance with these files.


Hi Aluigi,

thank you very much for taking a look at it.
A quick update: 2 file that are only present in the PSP version of the game, "DATA.DAT" and "GLB.DAT" have a sort of working script now too:

Code:
# Growlanser I (PSP) - DATA.DAT
# script for QuickBMS http://quickbms.aluigi.org

getdstring FILE_NAME_1 0x1C

goto 0x1C
get OFFSET_1 long

savepos POS
xmath POS_2 "POS + 0x1C"
goto POS_2

get OFFSET_2 long
reverselong OFFSET_2
reverselong OFFSET_1

xmath SIZE "OFFSET_2 - OFFSET_1"
log FILE_NAME_1 OFFSET_1 SIZE

goto POS

do
getdstring FILE_NAME 0x1C
xmath POS "POS + 0x1C"

get OFFSET long

savepos POS
xmath POS_2 "POS + 0x1C"
goto POS_2

get OFFSET_2 long
reverselong OFFSET_2
reverselong OFFSET

xmath SIZE "OFFSET_2 - OFFSET"
log FILE_NAME OFFSET SIZE

goto POS

while POS != OFFSET_1


Code:
# Growlanser I (PSP) - GLB.DAT
# script for QuickBMS http://quickbms.aluigi.org

getdstring FILE_NAME_1 0xA

goto 0xA
get OFFSET_1 long

savepos POS
xmath POS_2 "POS + 0xA"
goto POS_2

get OFFSET_2 long
reverselong OFFSET_2
reverselong OFFSET_1

xmath SIZE "OFFSET_2 - OFFSET_1"
log FILE_NAME_1 OFFSET_1 SIZE

goto POS

do
getdstring FILE_NAME 0xA
xmath POS "POS + 0xA"

get OFFSET long

savepos POS
xmath POS_2 "POS + 0xA"
goto POS_2

get OFFSET_2 long
reverselong OFFSET_2
reverselong OFFSET

xmath SIZE "OFFSET_2 - OFFSET"
log FILE_NAME OFFSET SIZE

goto POS

while POS != OFFSET_1


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 6 posts ] 

All times are UTC


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Limited