Results 1 to 6 of 6

Thread: Reverse Engineering Asobo Custom LZ Variant With Multiple Known Past Versions

  1. #1
    Member EmilyWasAway's Avatar
    Join Date
    Jan 2021
    Location
    America
    Posts
    3
    Thanks
    3
    Thanked 0 Times in 0 Posts

    Arrow Reverse Engineering Asobo Custom LZ Variant With Multiple Known Past Versions

    I'm reverse engineering a version of Asobo Studio's DPC archive format used in the PC release of the game FUEL (2009). I am able to unwrap the first "layer" of the format by breaking the archive down into the files described in the DPC header using a modified version of this MexScript. However these extracted files appear to be compressed with a custom LZ variant. Some games released before FUEL (CT Special Forces: Fire for effect, Ratatouille, and Wall-E) each used a slightly different LZ variant than the previous release so I am expecting FUEL to use something similar to those. @Shelwien has provided a series of unLZ_rhys scripts in previous posts (linked at the bottom) but none of them seam to properly decompress the files I extracted. I have attached a selection of extracted files that appear to be compressed and contain a small amount of text near the beginning. They all follow a similar pattern to the one in this image:

    Click image for larger version. 

Name:	image.png 
Views:	295 
Size:	38.4 KB 
ID:	8262

    Which closely resembles the compressed files from the previous posts.

    In theory this should only require a small modification to the unLZ_rhys tool but unfortunately I cannot seem to figure out the header layout/mask for this new version of the format. Any help with how to modify the tool or advice in general would be greatly appreciated. If you need more samples or the original DPC files I can provide them.

    https://encode.su/threads/3147-Rever...tom-LZ-Variant
    https://encode.su/threads/3526-Asobo...ta-Compression
    Attached Files Attached Files

  2. #2
    Member
    Join Date
    May 2020
    Location
    Berlin
    Posts
    76
    Thanks
    21
    Thanked 25 Times in 20 Posts
    With those runs of zeroes and the compression ratio in the samples zip I think those files aren't compressed at all, just some custom data format.

  3. Thanks:

    EmilyWasAway (13th January 2021)

  4. #3
    Member EmilyWasAway's Avatar
    Join Date
    Jan 2021
    Location
    America
    Posts
    3
    Thanks
    3
    Thanked 0 Times in 0 Posts
    I considered that it could be a custom format but the similarities to the previous DPC formats and sections of the file that look like this

    Click image for larger version. 

Name:	image.png 
Views:	213 
Size:	23.6 KB 
ID:	8265

    lead me to investigate the possibility of compression. Although if it is compressed, it's not by much.

  5. #4
    Administrator Shelwien's Avatar
    Join Date
    May 2008
    Location
    Kharkov, Ukraine
    Posts
    4,137
    Thanks
    320
    Thanked 1,397 Times in 802 Posts
    Its not a compressed format (at least not in the first layer of structure), but just a structured format with length prefixes
    and mostly floats inside.
    seg000:00000000                 dd 3Fh
    seg000:00000004 dd 4
    seg000:00000008 dq 3Bh
    seg000:00000010 dd 52F79F96h
    seg000:00000014 dd 0C939BCA1h
    seg000:00000018 dd 0D24B3F6Fh
    seg000:0000001C aVLinkLefthandM dd 55
    seg000:0000001C db 'V:LINK "LeftHand" "MUSCLE_OFF_1_SUSPFL4_LOD1" AxeZ LOD1'
    seg000:00000057 dd 0A6h
    seg000:0000005B dd 62h
    seg000:0000005F dq 44h
    seg000:00000067 dd 73DC6A13h
    seg000:0000006B dd 0A3F0FCD9h
    seg000:0000006F dd 4AB1A4C3h
    seg000:00000073 dd 681AF697h
    seg000:00000077 dd 0BE02FCF1h
    seg000:0000007B dd 0BE5A0EC8h
    seg000:0000007F dd 0BA5BF080h
    seg000:00000083 dd 3E801E69h
    seg000:00000087 dd 3F800000h
    seg000:0000008B dd 0
    seg000:0000008F dd 0
    seg000:00000093 dd 0BE02FCF1h
    seg000:00000097 dd 0
    seg000:0000009B dd 3F800000h
    seg000:0000009F dd 0
    seg000:000000A3 dd 0BE5A0EC8h
    seg000:000000A7 dd 0
    seg000:000000AB dd 0
    seg000:000000AF dd 3F800000h
    seg000:000000B3 dd 0BA5BF080h
    seg000:000000B7 dd 3E801E69h
    seg000:000000BB dd 3E801E69h
    seg000:000000BF dd 3E801E69h
    seg000:000000C3 dd 3EDDE882h
    seg000:000000C7 dd 0

  6. Thanks:

    EmilyWasAway (13th January 2021)

  7. #5
    Member EmilyWasAway's Avatar
    Join Date
    Jan 2021
    Location
    America
    Posts
    3
    Thanks
    3
    Thanked 0 Times in 0 Posts
    After reviewing what you both have said it makes sense that the samples I posted are not using compression at this layer of the format. I'm not certain but these files extracted from the header of the DPC appear to reference data located further down in the DPC but the headers themselves are not compressed in this version. Thank you for the help.

  8. #6
    Member
    Join Date
    May 2020
    Location
    Berlin
    Posts
    76
    Thanks
    21
    Thanked 25 Times in 20 Posts
    Quote Originally Posted by EmilyWasAway View Post
    After reviewing what you both have said it makes sense that the samples I posted are not using compression at this layer of the format. I'm not certain but these files extracted from the header of the DPC appear to reference data located further down in the DPC but the headers themselves are not compressed in this version. Thank you for the help.
    You're welcome!

    Most of the files are compressed at a compression ratio of ~2 to 5. in this ZIP. FONTES_*, MENU_* and TELEPORT_* are less compressed, with the latter two containing a lot of 16 bit data. They might contain bitmaps.

  9. Thanks:

    EmilyWasAway (13th January 2021)

Similar Threads

  1. Protecting code from reverse engineering; freeware
    By JamesWasil in forum The Off-Topic Lounge
    Replies: 5
    Last Post: 23rd May 2020, 21:16
  2. another discussion of reverse-engineering
    By Brock in forum Data Compression
    Replies: 9
    Last Post: 30th January 2020, 16:07
  3. Reverse engineering NanoZip compression algorithm
    By birdie in forum Data Compression
    Replies: 3
    Last Post: 30th January 2020, 02:46
  4. Reverse Engineering Custom LZ Variant
    By rhysling in forum Data Compression
    Replies: 6
    Last Post: 19th July 2019, 16:56
  5. 32Bit Hash reverse engineering
    By FJ1325 in forum The Off-Topic Lounge
    Replies: 2
    Last Post: 18th January 2017, 05:18

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •