One Piece Grand Adventure (Gamecube)

Extraction and unpacking of game archives and compression, encryption, obfuscation, decoding of unknown files
Modern90s
Posts: 5
Joined: Fri Oct 05, 2018 7:01 pm

One Piece Grand Adventure (Gamecube)

Post by Modern90s »

I have been working on a mod of One Piece Grand Adventure for about a year now by making C2 Gecko codes, but due to the code limits I haven't been able to do quite as much as I want.

I've been messing around with quickbms, but so far haven't been able to figure out how to get it to parse the files in the game. Using other extraction methods I've managed to get a few files but a good portion of the game seems to be in a .apf I cant figure out. Although I have used the afs bms to break down from the .afs which has been very helpful.

Here is the opening of the apf
opga_openinglines2.png


I also used file cutter to try to get a slice of the apf I've renamed it into a opa2.txt, but originally the file name was oga2.apf_0_414865607
oga2.txt
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: One Piece Grand Adventure (Gamecube)

Post by aluigi »

Please upload also the second file generated by filecutter because it looks like the table with information about the files is stored at the end.
Modern90s
Posts: 5
Joined: Fri Oct 05, 2018 7:01 pm

Re: One Piece Grand Adventure (Gamecube)

Post by Modern90s »

File was generated under the title oga2.apf_412768455_414865607
oga2_2.txt
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: One Piece Grand Adventure (Gamecube)

Post by aluigi »

The bad news is that there is no table at the end of the file so it must be located somewhere else, for example in another small file maybe with the same name (oga2) and different extension.
A screenshot of the folder that contains oga2.apf should be enough.
Modern90s
Posts: 5
Joined: Fri Oct 05, 2018 7:01 pm

Re: One Piece Grand Adventure (Gamecube)

Post by Modern90s »

Here is the folder.
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: One Piece Grand Adventure (Gamecube)

Post by aluigi »

Maybe try uploading boot.dol and apploader.img but I don't think they are going to be helpful.
Modern90s
Posts: 5
Joined: Fri Oct 05, 2018 7:01 pm

Re: One Piece Grand Adventure (Gamecube)

Post by Modern90s »

I'm guessing it was probably compressed with an in-house tool that makes it difficult.

Apploader : https://drive.google.com/open?id=1bYduE ... u0nW7uQcNP
I do not recall if this was actually part of the original extraction or something that the emulator added to the folder when I tried loading it.


boot.dol : https://drive.google.com/open?id=1WR3JV ... 4fL5mA0q56
I do doubt there is much in here that is useful outside of mentioning a few file names that I suspect are within the apf file.
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: One Piece Grand Adventure (Gamecube)

Post by aluigi »

Not sure if it's related but there is a reference to a certain file called oga2op.sfd in the movie folder.
I doubt that it's related and contains any useful information.
Modern90s
Posts: 5
Joined: Fri Oct 05, 2018 7:01 pm

Re: One Piece Grand Adventure (Gamecube)

Post by Modern90s »

I could upload that but the movie folder seems to have 2 files in it and I'm pretty sure based on their names they are the two video files available in the game; the opening and the E3 trailer.

When looking through the dol, someone I was working with found a few interesting lines that might be of relevance. I assume that many of these are files within the .apf

Code: Select all

c:\winnt\temp\
FSM_v1.1
FSM_v1.2
newdelete.cpp
LibFileIs


Code: Select all

stage/fsm_a_0.pac
stage/fsm_a_9.pac
stage/fsm_b_0.pac
stage/fsm_b_9.pac
stage/brt_a_0.pac
stage/brt_a_9.pac
stage/brt_b_0.pac
stage/brt_b_9.pac
stage/arp_a_0.pac
stage/arp_a_9.pac
stage/arp_b_0.pac
stage/arp_b_9.pac
stage/lgt_a_0.pac
stage/lgt_a_9.pac
stage/lgt_b_0.pac
stage/lgt_b_9.pac
stage/drm_a_0.pac
stage/drm_a_9.pac
stage/drm_b_0.pac
stage/drm_b_9.pac
stage/arb_a_0.pac
stage/arb_a_9.pac
stage/arb_b_0.pac
stage/arb_b_9.pac
stage/mrj_a_0.pac
stage/mrj_a_9.pac
stage/mrj_b_0.pac
stage/mrj_b_9.pac
stage/sky_a_0.pac
stage/sky_a_9.pac
stage/sky_b_0.pac
stage/sky_b_9.pac
stage/mxm_a_0.pac
stage/mxm_a_9.pac
stage/mxm_b_0.pac
stage/mxm_b_9.pac
stage/sfx_a_0.pac
stage/sfx_a_9.pac
stage/sfx_b_0.pac
stage/sfx_b_9.pac
stage/sp_sou_a_0.pac
stage/sp_sou_a_9.pac
stage/sp_dnt_a_0.pac
stage/sp_dnt_a_9.pac
stage/sp_grk_a_0.pac
stage/sp_grk_a_9.pac
stage/sp_det_a_0.pac
stage/sp_det_a_9.pac
stage/sp_det_b_0.pac
stage/sp_det_b_9.pac
stage/sp_shp_a_0.pac
stage/sp_shp_a_9.pac
stage/sp_shp_b_0.pac
stage/sp_shp_b_9.pac
stage/sp_twn_a_0.pac
stage/sp_twn_a_9.pac
stage/sp_twn_b_0.pac
stage/sp_twn_b_9.pac
stage/sp_mry_a_0.pac
stage/sp_mry_a_9.pac
stage/sp_mry_b_0.pac
stage/sp_mry_b_9.pac
stage/sp_mrf_a_0.pac
stage/sp_mrf_a_9.pac
stage/sp_mrf_b_0.pac
stage/sp_mrf_b_9.pac
stage/sp_rac_c_0.pac
stage/sp_rac_c_9.pac


Code: Select all

esoteric/luf_efc.pac
esoteric/lufa_efc.pac
esoteric/zor_efc.pac
esoteric/nam_efc.pac
esoteric/uso_efc.pac
esoteric/snjm_efc.pac
esoteric/snjw_efc.pac
esoteric/cho_efc.pac
esoteric/smk_efc.pac
esoteric/syn_efc.pac
esoteric/bon_efc.pac
esoteric/crc_efc.pac
esoteric/nic_efc.pac
esoteric/bgy_efc.pac
esoteric/kro_efc.pac
esoteric/krk_efc.pac
esoteric/mhk_efc.pac
esoteric/arn_efc.pac
esoteric/enl_efc.pac
esoteric/ace_efc.pac
esoteric/orm_efc.pac
esoteric/wpo_efc.pac
esoteric/bib_efc.pac
esoteric/tsg_efc.pac
esoteric/kui_efc.pac
esoteric/zef_efc.pac
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: One Piece Grand Adventure (Gamecube)

Post by aluigi »

But I see no information about offsets.
If most of the files are those PAC("FSM") ones then you can easily dump them with this scanner script:

Code: Select all

findloc OFFSET binary "FSM_v1."
do
    goto OFFSET
    get DUMMY long
    findloc NEXT_OFFSET binary "FSM_v1." 0 ""
    if NEXT_OFFSET == ""
        get SIZE asize
    else
        math SIZE = NEXT_OFFSET
    endif
    math OFFSET - 8
    math SIZE -= OFFSET
    log "" OFFSET SIZE
    math OFFSET = NEXT_OFFSET
while NEXT_OFFSET != ""