Jump to content

Wo Long: Fallen Dynasty .g1a file


DevJack

Recommended Posts

Hello everyone, Wo Long: Fallen Dynasty can use quickbms to extract .g1m files, but g1a files can not be extract , and then use

Cethleann can extract the g1a file, but loading the g1a file in noesie will cause an error. Is there has the latest bms script that can export g1a or Cethleann version that can export Wo Long: Fallen Dynasty? Thanks all

Link to comment
Share on other sites

On 4/23/2024 at 8:21 PM, DevJack said:

Hello everyone, Wo Long: Fallen Dynasty can use quickbms to extract .g1m files, but g1a files can not be extract , and then use

Cethleann can extract the g1a file, but loading the g1a file in noesie will cause an error. Is there has the latest bms script that can export g1a or Cethleann version that can export Wo Long: Fallen Dynasty? Thanks all

 

testg1a.zip

Link to comment
Share on other sites

  • 4 weeks later...
  • 4 months later...

Okay this is raw .bms script which should work.

Open txt Document put following text (quoted) inside document save and rename to *.bms

Open quickbms and choose 4gb then activate script choose rdg.bin and save on any folder. Open files with g1m importer in Noesis.

Quote

Comtype ZLIB
Get FILETOTALSIZE asize

if FILETOTALSIZE > 128

Set IDRKOFFSET long 0x10

Do

Goto IDRKOFFSET
Print "%IDRKOFFSET%"
Getdstring MAGICVERSION 8
Get ENTRYSIZE longlong
Get COMPSIZE longlong
Get DECOMPSIZE longlong
Get ENTRYTYPE long
Get FILEKTID long
Get TYPEINFOKTID long
Set SKIP long ENTRYSIZE
Math SKIP - COMPSIZE
Math SKIP - 0x2C
Goto SKIP 0 SEEK_CUR
Savepos TEMP
Print "%TEMP%"

String FNAME p "0x%08x." FILEKTID
String FEXT p "%08x" TYPEINFOKTID

If TYPEINFOKTID == 0x563bdef1
Set FULLNAME string "g1m/"
String FNAME + "g1m"
String FULLNAME + FNAME

Elif TYPEINFOKTID == 0x6fa91671
Set FULLNAME string "g1a/"
String FNAME + "g1a"
String FULLNAME + FNAME

Elif TYPEINFOKTID == 0xafbec60c
Set FULLNAME string "g1t/"
String FNAME + "g1t"
String FULLNAME + FNAME

Elif TYPEINFOKTID == 0x20a6a0bb
Set FULLNAME string "kidsobjdb/"
String FNAME + "kidsobjdb"
String FULLNAME + FNAME

Elif TYPEINFOKTID == 0x5153729b || TYPEINFOKTID == 0xb340861a     
Set FULLNAME string "mtl/"
String FNAME + "mtl"
String FULLNAME + FNAME

Elif TYPEINFOKTID == 0x8e39aa37 || TYPEINFOKTID == 0xbe144b78     
Set FULLNAME string "ktid/"
String FNAME + "ktid"
String FULLNAME + FNAME

Elif TYPEINFOKTID == 0x56efe45c || TYPEINFOKTID == 0xbbf9b49d
Set FULLNAME string "grp/"
String FNAME + "grp"
String FULLNAME + FNAME

Elif TYPEINFOKTID == 0xbbd39f2d
Set FULLNAME string "srsa/"
String FNAME + "srsa"
String FULLNAME + FNAME

Elif TYPEINFOKTID == 0x0d34474d
Set FULLNAME string "srst/"
String FNAME + "srst"
String FULLNAME + FNAME

Else
Set FULLNAME string FEXT
String FULLNAME + "/"
String FNAME + FEXT
String FULLNAME + FNAME
Endif

Savepos OFFSET

If COMPSIZE == DECOMPSIZE

Get MAGIC long 0 OFFSET
If MAGIC == 1194412127
Set FULLNAME string "g1h/"
String FNAME p "0x%08x." FILEKTID
String FNAME + "g1h"
String FULLNAME + FNAME
Endif
Log FULLNAME OFFSET DECOMPSIZE

Else

Set MEMORY_FILE binary ""
Append
Do
Get ZSIZE short
Get Junk longlong
Savepos OFFSET
If DECOMPSIZE > 16384
Clog MEMORY_FILE OFFSET ZSIZE 16384
Math DECOMPSIZE - 16384
Else
Clog MEMORY_FILE OFFSET ZSIZE DECOMPSIZE
Math DECOMPSIZE - DECOMPSIZE
Endif
Math OFFSET + ZSIZE
Goto OFFSET
While DECOMPSIZE > 0
Append

Get LSIZE asize MEMORY_FILE
GetVarChr MAGIC MEMORY_FILE 0 long
Print "%MAGIC%"
If MAGIC == 1194412127
Set FULLNAME string "g1h/"
String FNAME p "0x%08x." FILEKTID
String FNAME + "g1h"
String FULLNAME + FNAME
Endif
Log FULLNAME 0 LSIZE MEMORY_FILE
Endif

Math ENTRYSIZE x 0x10
Math IDRKOFFSET + ENTRYSIZE

While IDRKOFFSET < FILETOTALSIZE

Endif

 

Edited by Cyphomet
  • Thanks 1
Link to comment
Share on other sites

  • 2 months later...

I'm having this problem with the script you shared:

 

Error: offset in GetVarChr (0x0000000000000000) is bigger than the var (0x00000000)

Last script line before the error or that produced the error:
  115 GetVarChr MAGIC MEMORY_FILE 0 long
  coverage file 0    35%   804656547  2259738462 . offset 000000002ff9c982

On 10/10/2024 at 7:23 AM, Cyphomet said:

Okay this is raw .bms script which should work.

Open txt Document put following text (quoted) inside document save and rename to *.bms

Open quickbms and choose 4gb then activate script choose rdg.bin and save on any folder. Open files with g1m importer in Noesis.

 

 

Link to comment
Share on other sites

Made the script skip the errors and it extract what it can

 

Comtype ZLIB
Get FILETOTALSIZE asize

if FILETOTALSIZE > 128

    Set IDRKOFFSET long 0x10

    Do

        Goto IDRKOFFSET
        Print "%IDRKOFFSET%"
        Getdstring MAGICVERSION 8 
        Get ENTRYSIZE longlong
        Get COMPSIZE longlong
        Get DECOMPSIZE longlong
        Get ENTRYTYPE long
        Get FILEKTID long
        Get TYPEINFOKTID long
        Set SKIP long ENTRYSIZE
        Math SKIP - COMPSIZE
        Math SKIP - 0x2C
        Goto SKIP 0 SEEK_CUR
        Savepos TEMP
        Print "%TEMP%"

        String FNAME p "0x%08x." FILEKTID
        String FEXT p "%08x" TYPEINFOKTID

        If TYPEINFOKTID == 0x563bdef1
            Set FULLNAME string "g1m/"
            String FNAME + "g1m"
            String FULLNAME + FNAME
        Elif TYPEINFOKTID == 0x6fa91671
            Set FULLNAME string "g1a/"
            String FNAME + "g1a"
            String FULLNAME + FNAME
        Elif TYPEINFOKTID == 0xafbec60c
            Set FULLNAME string "g1t/"
            String FNAME + "g1t"
            String FULLNAME + FNAME
        Elif TYPEINFOKTID == 0x20a6a0bb
            Set FULLNAME string "kidsobjdb/"
            String FNAME + "kidsobjdb"
            String FULLNAME + FNAME
        Elif TYPEINFOKTID == 0x5153729b || TYPEINFOKTID == 0xb340861a
            Set FULLNAME string "mtl/"
            String FNAME + "mtl"
            String FULLNAME + FNAME
        Elif TYPEINFOKTID == 0x8e39aa37 || TYPEINFOKTID == 0xbe144b78
            Set FULLNAME string "ktid/"
            String FNAME + "ktid"
            String FULLNAME + FNAME
        Elif TYPEINFOKTID == 0x56efe45c || TYPEINFOKTID == 0xbbf9b49d
            Set FULLNAME string "grp/"
            String FNAME + "grp"
            String FULLNAME + FNAME
        Elif TYPEINFOKTID == 0xbbd39f2d
            Set FULLNAME string "srsa/"
            String FNAME + "srsa"
            String FULLNAME + FNAME
        Elif TYPEINFOKTID == 0x0d34474d
            Set FULLNAME string "srst/"
            String FNAME + "srst"
            String FULLNAME + FNAME
        Else
            Set FULLNAME string FEXT
            String FULLNAME + "/"
            String FNAME + FEXT
            String FULLNAME + FNAME
        Endif

        Savepos OFFSET

        If COMPSIZE == DECOMPSIZE
            Get MAGIC long 0 OFFSET
            If MAGIC == 1194412127
                Set FULLNAME string "g1h/"
                String FNAME p "0x%08x." FILEKTID
                String FNAME + "g1h"
                String FULLNAME + FNAME
            Endif
            Log FULLNAME OFFSET DECOMPSIZE
        Else
            Set MEMORY_FILE binary ""
            Append
            Do
                If DECOMPSIZE <= 0
                    Print "Skipping due to invalid DECOMPSIZE at offset %OFFSET%"
                    Break
                Endif
                Get ZSIZE short
                Get Junk longlong
                Savepos OFFSET
                If ZSIZE > DECOMPSIZE
                    Print "ZSIZE is larger than remaining DECOMPSIZE, skipping entry."
                    Break
                Endif
                If DECOMPSIZE > 16384
                    Clog MEMORY_FILE OFFSET ZSIZE 16384
                    Math DECOMPSIZE - 16384
                Else
                    Clog MEMORY_FILE OFFSET ZSIZE DECOMPSIZE
                    Math DECOMPSIZE - DECOMPSIZE
                Endif
                Math OFFSET + ZSIZE
                Goto OFFSET 
            While DECOMPSIZE > 0
            Append

            Get LSIZE asize MEMORY_FILE
            If LSIZE > 0
                GetVarChr MAGIC MEMORY_FILE 0 long
                Print "%MAGIC%"
                If MAGIC == 1194412127
                    Set FULLNAME string "g1h/"
                    String FNAME p "0x%08x." FILEKTID
                    String FNAME + "g1h"
                    String FULLNAME + FNAME
                Endif
                Log FULLNAME 0 LSIZE MEMORY_FILE
            Endif
        Endif

        Math ENTRYSIZE x 0x10
        Math IDRKOFFSET + ENTRYSIZE

    While IDRKOFFSET < FILETOTALSIZE

Endif

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...