News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Author Topic: [Technical] [GCN] Decompressing CLZ files from Harvest Moon: A Wonderful Life  (Read 225 times)

seangibbz

  • Newbie
  • *
  • Posts: 1
    • View Profile
I'm currently working on a romhack of Harvest Moon: A Wonderful Life (and Harvest Moon: Another Wonderful Life) to allow same-sex marriage options.


I've been able to modify texture files (tpl), dialogue (mes), and some game archives (arc).

However, a lot of the game's resources are compressed as .clz files.
I've tried testing file decompression using comtype_scan2, but have thus far been unsuccessful in finding a suitable match.

Known:
  • They all start with a file header of 434C5A00 (CLZ) at offset 0x00000000
  • They use big endian encoding
  • They only contain one file per compressed archive (e.g. commonall.arc.clz would be a compressed version of commonall.arc)
Speculated:
  • Compressed data starts at offset 0x00000011
  • They seem to be using some unknown form of LZ (Lempel–Ziv) compression (e.g. LZ77, LZSS, LZW, etc.)
  • Reading CLZ files might be liked to a SceneInit function in the game's executable
  • Harvest Moon: A Wonderful Life Special Edition (PS2) contains both a compressed (mainchapter0.arc) and uncompressed (mainchapter0.arc.clz) version of the same file
  • They then state the size of the decompressed file in big-endian hex (e.g. 00535490 or 5.46MB) at offsets 0x00000004 and 0x0000000c



I've also managed to decompile the game's executable (dol) into human-readable (sort of) python format.

I'm currently looking for anyone with experience analyzing and decompressing unknown LZ compression algorithms.
Samples of CLZ files from the GCN or PS2 versions of the game can be provided upon request.