An open API service indexing awesome lists of open source software.

https://github.com/widberg/imzouna

ImHex patterns for Zouna data structures.
https://github.com/widberg/imzouna

Last synced: 27 days ago
JSON representation

ImHex patterns for Zouna data structures.

Awesome Lists containing this project

README

          

# ImZouna

[ImHex](https://imhex.werwolv.net/) patterns for Zouna data structures.

This repository is a relative of the main [FMTK repository](https://github.com/widberg/fmtk).

See also: [zouna-templates-docs](https://github.com/SabeMP/zouna-templates-docs)

## Table of Contents

### Hex Patterns

#### Common

| Name | MIME | Path |
|------------|------|------------------------------------------------------------|
| Bff Header | | [`includes/bff_header.hexpat`](includes/bff_header.hexpat) |
| Zouna | | [`includes/zouna.hexpat`](includes/zouna.hexpat) |

#### BigFile

| Year | Game | Format | Pattern |
|------|---------------------------------------------------------------------------------------------|------------|------------------------------------------------------------------------------------|
| 2002 | Jimmy Neutron: Boy Genius - BigSky | Kalisto | [`patterns/ducks/DPC.hexpat`](patterns/ducks/DPC.hexpat) |
| | SpongeBob SquarePants: Revenge of the Flying Dutchman - BigSky | Kalisto | [`patterns/ducks/DPC.hexpat`](patterns/ducks/DPC.hexpat) |
| | Spirits & Spells (Castleween) (Mahou no Pumpkin) - Wanadoo | Kalisto | [`patterns/ducks/DPC.hexpat`](patterns/ducks/DPC.hexpat) |
| 2003 | Super Farm - Asobo | Asobo1 | [`patterns/ducks/DPC.hexpat`](patterns/ducks/DPC.hexpat) |
| 2004 | Sitting Ducks - Asobo | Asobo1 | [`patterns/ducks/DPC.hexpat`](patterns/ducks/DPC.hexpat) |
| | The Mummy: The Animated Series - Asobo | Asobo1 | [`patterns/ducks/DPC.hexpat`](patterns/ducks/DPC.hexpat) |
| 2005 | CT Special Forces: Fire for Effect (Nemesis Strike) - Asobo | Asobo2 | [`patterns/garfield/DPC.hexpat`](patterns/garfield/DPC.hexpat) |
| | Ratatouille (Prototype) - Asobo | Asobo2 | [`patterns/garfield/DPC.hexpat`](patterns/garfield/DPC.hexpat) |
| 2006 | Garfield: A Tail of Two Kitties (Garfield 2) - Asobo | Asobo2 | [`patterns/garfield/DPC.hexpat`](patterns/garfield/DPC.hexpat) |
| | Championsheep Rally - Black Sheep | BlackSheep | [`patterns/ducks/DPC.hexpat`](patterns/ducks/DPC.hexpat) |
| 2007 | Ratatouille - Asobo | Asobo3 | [`patterns/fuel/DPC.hexpat`](patterns/fuel/DPC.hexpat) |
| | The Ugly Duckling and Me - Black Sheep | BlackSheep | [`patterns/ducks/DPC.hexpat`](patterns/ducks/DPC.hexpat) |
| | En Taxi avec Oui-Oui - Black Sheep | BlackSheep | [`patterns/ducks/DPC.hexpat`](patterns/ducks/DPC.hexpat) |
| 2008 | WALL-E - Asobo | Asobo3 | [`patterns/fuel/DPC.hexpat`](patterns/fuel/DPC.hexpat) |
| | The Magic Roundabout - Black Sheep | BlackSheep | [`patterns/ducks/DPC.hexpat`](patterns/ducks/DPC.hexpat) |
| | Shaun White Snowboarding/Shaun White Snowboarding: Road Trip (Prototype) - Ubisoft Montreal | Ubisoft1 | [`patterns/shaunwhite/BFWii_proto.hexpat`](patterns/shaunwhite/BFWii_proto.hexpat) |
| | Shaun White Snowboarding/Shaun White Snowboarding: Road Trip - Ubisoft Montreal | Ubisoft2 | [`patterns/shaunwhite/BFWii.hexpat`](patterns/shaunwhite/BFWii.hexpat) |
| | Warning: Code De La Route - Black Sheep | BlackSheep | [`patterns/ducks/DPC.hexpat`](patterns/ducks/DPC.hexpat) |
| 2009 | FUEL - Asobo | Asobo3 | [`patterns/fuel/DPC.hexpat`](patterns/fuel/DPC.hexpat) |
| | Up - Asobo | Asobo3 | [`patterns/fuel/DPC.hexpat`](patterns/fuel/DPC.hexpat) |
| | Shaun White Snowboarding: World Stage - Ubisoft Montreal | Ubisoft3 | [`patterns/shaunwhite/BFWii_proto.hexpat`](patterns/shaunwhite/BFWii_proto.hexpat) |
| 2010 | Toy Story 3 - Asobo | Asobo3 | [`patterns/fuel/DPC.hexpat`](patterns/fuel/DPC.hexpat) |
| | Racket Sports/Racquet Sports/Racket Sports Party - Asobo | Asobo3 | [`patterns/fuel/DPC.hexpat`](patterns/fuel/DPC.hexpat) |
| | Happy Neuron Academy - Black Sheep | BlackSheep | [`patterns/ducks/DPC.hexpat`](patterns/ducks/DPC.hexpat) |
| 2012 | Kinect Rush: A Disney-Pixar Adventure - Asobo | Asobo4 | [`patterns/monopoly/DPC.hexpat`](patterns/monopoly/DPC.hexpat) |
| 2013 | Super Farm (Re-release) - Asobo | Asobo4 | [`patterns/monopoly/DPC.hexpat`](patterns/monopoly/DPC.hexpat) |
| 2014 | Monopoly Plus/Monopoly Deal - Asobo | Asobo4 | [`patterns/monopoly/DPC.hexpat`](patterns/monopoly/DPC.hexpat) |
| 2015 | The Mighty Quest for Epic Loot - Ubisoft Montreal | Ubisoft4 | [`patterns/mqfel/BFPC.hexpat`](patterns/shaunwhite/BFPC.hexpat) |
| 2016 | Young Conker - Asobo | Asobo4 | [`patterns/monopoly/DPC.hexpat`](patterns/monopoly/DPC.hexpat) |
| | Fragments - Asobo | Asobo4 | [`patterns/fragments/DUA.hexpat`](patterns/fragments/DUA.hexpat) |
| 2017 | Rush: A Disney-Pixar Adventure (Re-release) - Asobo | Asobo5 | [`patterns/rush/DPC.hexpat`](patterns/rush/DPC.hexpat) |
| | Monopoly Plus/Monopoly Deal/Monopoly for Nintendo Switch (Re-release) - Asobo | Asobo4 | [`patterns/monopoly/DPC.hexpat`](patterns/monopoly/DPC.hexpat) |
| 2019 | A Plague Tale: Innocence - Asobo | Asobo6 | [`patterns/apti/DPC.hexpat`](patterns/apti/DPC.hexpat) |
| 2020 | Microsoft Flight Simulator - Asobo | Asobo7 | [`patterns/msfs/DPC.hexpat`](patterns/msfs/DPC.hexpat) |
| 2022 | A Plague Tale: Requiem - Asobo | Asobo8 | [`patterns/aptr/DPC.hexpat`](patterns/aptr/DPC.hexpat) |
| 2024 | Microsoft Flight Simulator 2024 - Asobo | ?????? | |

#### Ratatouille

| Name | MIME | Path |
|------|------|----------------------------------------------------------|
| AIF | | [`patterns/walle/AIF.hexpat`](patterns/walle/AIF.hexpat) |
| SDX | | [`patterns/walle/SDX.hexpat`](patterns/walle/SDX.hexpat) |
| VAI | | [`patterns/rat/VAI.hexpat`](patterns/rat/VAI.hexpat) |

#### WALL-E

| Name | MIME | Path |
|------|------|----------------------------------------------------------|
| AIF | | [`patterns/walle/AIF.hexpat`](patterns/walle/AIF.hexpat) |
| JOE | | [`patterns/walle/JOE.hexpat`](patterns/walle/JOE.hexpat) |
| SDX | | [`patterns/walle/SDX.hexpat`](patterns/walle/SDX.hexpat) |

#### FUEL

| Name | MIME | Path |
|-----------------|--------------------------------|--------------------------------------------------------------------------------|
| Animation_Z | application/x-animation-z | [`patterns/fuel/Animation_Z.hexpat`](patterns/fuel/Animation_Z.hexpat) |
| Binary_Z | application/x-binary-z | [`patterns/fuel/Binary_Z.hexpat`](patterns/fuel/Binary_Z.hexpat) |
| Bitmap_Z | application/x-bitmap-z | [`patterns/fuel/Bitmap_Z.hexpat`](patterns/fuel/Bitmap_Z.hexpat) |
| Camera_Z | application/x-camera-z | [`patterns/fuel/Camera_Z.hexpat`](patterns/fuel/Camera_Z.hexpat) |
| CollisionVol_Z | application/x-collision-vol-z | [`patterns/fuel/CollisionVol_Z.hexpat`](patterns/fuel/CollisionVol_Z.hexpat) |
| Fonts_Z | application/x-fonts-z | [`patterns/fuel/Fonts_Z.hexpat`](patterns/fuel/Fonts_Z.hexpat) |
| GameObj_Z | application/x-game-obj-z | [`patterns/fuel/GameObj_Z.hexpat`](patterns/fuel/GameObj_Z.hexpat) |
| GenWorld_Z | application/x-gen-world-z | [`patterns/fuel/GenWorld_Z.hexpat`](patterns/fuel/GenWorld_Z.hexpat) |
| GwRoad_Z | application/x-gw-road-z | [`patterns/fuel/GwRoad_Z.hexpat`](patterns/fuel/GwRoad_Z.hexpat) |
| LightData_Z | application/x-light-data-z | [`patterns/fuel/LightData_Z.hexpat`](patterns/fuel/LightData_Z.hexpat) |
| Lod_Z | application/x-lod-z | [`patterns/fuel/Lod_Z.hexpat`](patterns/fuel/Lod_Z.hexpat) |
| LodData_Z | application/x-lod-data-z | [`patterns/fuel/LodData_Z.hexpat`](patterns/fuel/LodData_Z.hexpat) |
| Material_Z | application/x-material-z | [`patterns/fuel/Material_Z.hexpat`](patterns/fuel/Material_Z.hexpat) |
| MaterialAnim_Z | application/x-material-anim-z | [`patterns/fuel/MaterialAnim_Z.hexpat`](patterns/fuel/MaterialAnim_Z.hexpat) |
| MaterialObj_Z | application/x-material-obj-z | [`patterns/fuel/MaterialObj_Z.hexpat`](patterns/fuel/MaterialObj_Z.hexpat) |
| Mesh_Z | application/x-mesh-z | [`patterns/fuel/Mesh_Z.hexpat`](patterns/fuel/Mesh_Z.hexpat) |
| MeshData_Z | application/x-mesh-data-z | [`patterns/fuel/MeshData_Z.hexpat`](patterns/fuel/MeshData_Z.hexpat) |
| Node_Z | application/x-node-z | [`patterns/fuel/Node_Z.hexpat`](patterns/fuel/Node_Z.hexpat) |
| Omni_Z | application/x-omni-z | [`patterns/fuel/Omni_Z.hexpat`](patterns/fuel/Omni_Z.hexpat) |
| Particles_Z | application/x-particles-z | [`patterns/fuel/Particles_Z.hexpat`](patterns/fuel/Particles_Z.hexpat) |
| ParticlesData_Z | application/x-particles-data-z | [`patterns/fuel/ParticlesData_Z.hexpat`](patterns/fuel/ParticlesData_Z.hexpat) |
| RotShape_Z | application/x-rot-shape-z | [`patterns/fuel/RotShape_Z.hexpat`](patterns/fuel/RotShape_Z.hexpat) |
| RotShapeData_Z | application/x-rot-shape-data-z | [`patterns/fuel/RotShapeData_Z.hexpat`](patterns/fuel/RotShapeData_Z.hexpat) |
| Rtc_Z | application/x-rtc-z | [`patterns/fuel/Rtc_Z.hexpat`](patterns/fuel/Rtc_Z.hexpat) |
| Skel_Z | application/x-skel-z | [`patterns/fuel/Skel_Z.hexpat`](patterns/fuel/Skel_Z.hexpat) |
| Skin_Z | application/x-skin-z | [`patterns/fuel/Skin_Z.hexpat`](patterns/fuel/Skin_Z.hexpat) |
| Sound_Z | application/x-sound-z | [`patterns/fuel/Sound_Z.hexpat`](patterns/fuel/Sound_Z.hexpat) |
| Spline_Z | application/x-spline-z | [`patterns/fuel/Spline_Z.hexpat`](patterns/fuel/Spline_Z.hexpat) |
| SplineGraph_Z | application/x-spline-graph-z | [`patterns/fuel/SplineGraph_Z.hexpat`](patterns/fuel/SplineGraph_Z.hexpat) |
| Surface_Z | application/x-surface-z | [`patterns/fuel/Surface_Z.hexpat`](patterns/fuel/Surface_Z.hexpat) |
| SurfaceDatas_Z | application/x-surface-datas-z | [`patterns/fuel/SurfaceDatas_Z.hexpat`](patterns/fuel/SurfaceDatas_Z.hexpat) |
| UserDefine_Z | application/x-user-define-z | [`patterns/fuel/UserDefine_Z.hexpat`](patterns/fuel/UserDefine_Z.hexpat) |
| Warp_Z | application/x-warp-z | [`patterns/fuel/Warp_Z.hexpat`](patterns/fuel/Warp_Z.hexpat) |
| World_Z | application/x-world-z | [`patterns/fuel/World_Z.hexpat`](patterns/fuel/World_Z.hexpat) |
| WorldRef_Z | application/x-world-ref-z | [`patterns/fuel/WorldRef_Z.hexpat`](patterns/fuel/WorldRef_Z.hexpat) |

### A Plague Tale: Innocence

| Name | MIME | Path |
|------------------|------|----------------------------------------------------------------------------------|
| psc | | [`patterns/apti/psc.hexpat`](patterns/apti/psc.hexpat) |
| psc_data | | [`patterns/apti/psc_data.hexpat`](patterns/apti/psc_data.hexpat) |
| StreamSoundNames | | [`patterns/apti/StreamSoundNames.hexpat`](patterns/apti/StreamSoundNames.hexpat) |
| WwiseIDs | | [`patterns/apti/WwiseIDs.hexpat`](patterns/apti/WwiseIDs.hexpat) |

### Shaun White

| Name | MIME | Path |
|--------------|------|------------------------------------------------------------------------------------|
| CPS | | [`patterns/shaunwhite/CPS.hexpat`](patterns/shaunwhite/CPS.hexpat) |
| CPSScript | | [`patterns/shaunwhite/CPSScript.hexpat`](patterns/shaunwhite/CPSScript.hexpat) |
| Gear BigFile | | [`patterns/shaunwhite/GearBigFile.hexpat`](patterns/shaunwhite/GearBigFile.hexpat) |

### The Mighty Quest for Epic Loot

| Name | MIME | Path |
|----------------|------|--------------------------------------------------------------------------------|
| SettingsBin | | [`patterns/mqfel/SettingsBin.hexpat`](patterns/mqfel/SettingsBin.hexpat) |
| StreamingAudio | | [`patterns/mqfel/StreamingAudio.hexpat`](patterns/mqfel/StreamingAudio.hexpat) |

### Scripts

| Name | Path | Description |
|-----------|------------------------------------------------|----------------------------------------------------------------|
| catalogue | [`scripts/catalogue.py`](scripts/catalogue.py) | Update the README with known BigFiles |
| converge | [`scripts/converge.py`](scripts/converge.py) | Copy unique BigFiles for testing |
| jsonify | [`scripts/jsonify.py`](scripts/jsonify.py) | Generates a JSON file from a binary file |
| submit | [`scripts/submit.py`](scripts/submit.py) | Copy BigFiles from a game directory to the repository |
| validate | [`scripts/validate.py`](scripts/validate.py) | Runs the patterns against all files in a directory recursively |
| cps | [`scripts/cps.py`](scripts/cps.py) | Decrypt cps files |

### Pattern Libraries

| Name | Path | Description |
|-------|--------------------------------------------------|---------------|
| zouna | [`includes/zouna.hexpat`](includes/zouna.hexpat) | Zouna Library |

### Magic files

| Name | Path | Description |
|-------|------------------------------------------|--------------------------------------------|
| Zouna | [`magic/zouna_magic`](magic/zouna_magic) | Identifies common file types used in Zouna |

## Getting Started

### Prerequisites

* [ImHex](https://imhex.werwolv.net/) >= v1.31.0

### Checkout

```sh
git clone https://github.com/widberg/ImZouna.git
```

### Usage

Add the `ImZouna` directory to ImHex `Help -> Settings -> Folders -> +`. Install the "Std" and "Type" ImHex libraries from `Help -> Content Store -> Libraries`.

### Validate/JSONify

The scripts expect the ImHex executable to be in your `PATH` but you can manually specify the path to ImHex using the `--imhex` option. Run either script with the `--help` option for more information about that script.

### Submit

The `bigfiles` directory will contain the copied game BigFiles after running the submit script. The path of each BigFile will match the pattern `game_name / release_name / bigfile_version_number_normalized / path.relative_to(game_directory)`. The `game_name` component will be the name of the game. The `release_name` will be something like `PC_US` or `XB_JP`, this can be arbitrary but should be understandable. The `bigfile_version_number_normalized` will be the version number component of the version string at the beginning of the BigFile with the `.`s replaced by `_`. Finally, the remainder of the path will be the relative path to the BigFile from the root game directory.

### Catalogue

A list of BigFile paths and their hashes can be generated with the `catalogue` script and found in the [bigfile_hashes.csv file](bigfile_hashes.csv).