Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
05a276f
Refactor Blowfish constructors and fix encryption
iMrShadow May 31, 2026
f5147ac
Merge branch 'main' into refactor/metastream-rework
iMrShadow May 31, 2026
a38131c
Bump version to 0.3.0
iMrShadow May 31, 2026
ea9e184
Refactor MetaStream serialization, add legacy encryption, move Contai…
iMrShadow May 31, 2026
a3a5322
Improve serialization robustness for various types
iMrShadow May 31, 2026
270eace
Clean up serializers and fix Symbol handling
iMrShadow May 31, 2026
07f243d
Switch to MetaStream API, add Workspace context for metastreams, add …
iMrShadow May 31, 2026
7ac0302
Add properties and helpers for MetaVersionInfo
iMrShadow May 31, 2026
7b0cac3
Expose GetClass and simplify dictionary lookup in MetaClassRegistry
iMrShadow May 31, 2026
b56dd37
Remove unused LegacyEncrypted and related functions, clean up code
iMrShadow May 31, 2026
8f1d096
Replace MetaStreamVersion with MetaStreamMagic, add StreamVersion
iMrShadow May 31, 2026
3f72b98
Use numeric StreamVersion instead of MetaStreamMagic, remove AreSymbo…
iMrShadow May 31, 2026
c5e4e09
(Database) Update the game profiles to use the new `streamVersion` fi…
iMrShadow May 31, 2026
ee4f42c
Add documentation for MetaStreamMagic
iMrShadow May 31, 2026
a157d18
Rename MetaStreamConfiguration to MetaStreamParams
iMrShadow May 31, 2026
e5de06c
Update projects to use the new MetaStream API
iMrShadow May 31, 2026
91ddecb
Fix csproj regression
iMrShadow May 31, 2026
661dc7d
Move Lua types to Utility.Lua and update usings
iMrShadow May 31, 2026
9e43ca2
Refactor namespaces and ContainerStream, use ContainerStreamParams
iMrShadow May 31, 2026
6686604
Remove unused class
iMrShadow May 31, 2026
399c5d1
Rename MetaStreamReader/Writer to BinaryMetaStreamReader/Writer
iMrShadow May 31, 2026
30178da
Remove TelltaleArchives/Utilities folder from csproj
iMrShadow May 31, 2026
122526a
Rename CompressionAlgorithm to Compression, fix GameProfile JSON seri…
iMrShadow May 31, 2026
7e3dd92
Fix VersionDatabaseCreator not compiling
iMrShadow May 31, 2026
bb42ffb
Use MetaStream.Mode and unified stream API
iMrShadow Jun 1, 2026
5c7a5e5
Add JSON MetaStream reader/writer, make DefaultClassSerializer not th…
iMrShadow Jun 1, 2026
325676a
Update changelogs
iMrShadow Jun 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,38 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## Unreleased

### Added
- `OpenWrite` and `OpenRead` static functions in `MetaStream`.
- Experimental `JsonMetaStreamReader` and `JsonMetaStreamWriter` classes. You can export serialize objects to JSON files in `MetaStream`.
- Support for encrypted meta stream files with `LegacyEncryptedStream` which matches with Telltale Tool in `MetaStream`. This requires a workspace. The user also has the option to encrypt/decrypt using the `LegacyEncryption` class provided with a Blowfish key and an archive version.
- An abstract `Close` method.
- Experimental support for compressed meta stream resources.
- `ContainerStreamParams` class.
- `StreamVersion` to `GameProfile`.
- A constructor with a boolean argument in `Blowfish`.
- `Workspace` parameter in deserialize methods in `Toolkit`.
- Helper methods for `VersionInfo`.

### Changed
- Rename the following MetaStream implementations: `MetaStreamReader`/`MetaStreamWriter` to `BinaryMetaStreamReader`/`BinaryMetaStreamWriter`.
- Rename `MetaStreamConfig` to `MetaStreamParams`.
- Update database files with the new changes.
- Exposed `GetClass(ulong, uint)` method from `MetaClassRegistry`.
- Refactor `MetaStream` internally.
- Refactor `MetaStreamParams` with new fields and methods to handle compression and encryption.
- Reorganize some namespaces.
- Make the default serializer not throw errors and use logger instead.
- `Serialize` from `MetaStream` now automatically preserializes.

### Fixed
- A regression that did not allow files being copied to the output folder.
- Blowfish encryption not working correctly.

### Removed
- A csproj folder.
- Redundant `MetaStreamVersion` from `GameProfile`.
- `AreSymbolsHashed` from `GameProfile` as symbols are always hashed.
- `PreSerialize` from `MetaStream`.
- Redundant `Version` from `MetaStreamParams`.

## [0.2.0] - 2026-05-28

Expand Down
17 changes: 12 additions & 5 deletions data/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
## Database Changelog

### 1st of June, 2026

#### Game Profiles
- Added `StreamVersion` field that matches Telltale Tool. Please refer to the [docs](README.md#game-profile-fields).
- Removed redundant `MetaStreamVersion` and `AreSymbolsHashed` fields.
- Updated database files with the new changes.

### 28th of May, 2026

#### Game Profiles
- Added initial game profile for The Wolf Among Us (2013) (Thank you Pumba)
- Added initial game profile for The Wolf Among Us (2013)(Thank you Pumba!).

#### Version Database
- Added initial version database for The Wolf Among Us (2013)
- Added initial version database for The Wolf Among Us (2013).

### 28th of April, 2026

Expand All @@ -23,15 +30,15 @@
### 24th of April, 2026

#### Game Profiles
- Added the year to TWDS2 game profile json file name to match other entries (Thank you @gamma-02)
- Added the year to TWDS2 game profile json file name to match other entries (Thank you @gamma-02!).

### 17th of March, 2026

#### Game Profiles
- Added initial game profile for Poker Night at the Inventory Remastered (2026) (Thank you @gamma-02)
- Added initial game profile for Poker Night at the Inventory Remastered (2026) (Thank you @gamma-02!).

#### Version Database
- Added initial version database for aforementoned Poker Night at the Inventory Remastered (2026)
- Added initial version database for aforementoned Poker Night at the Inventory Remastered (2026).

### 18th of February, 2026

Expand Down
24 changes: 11 additions & 13 deletions data/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,17 +58,16 @@ For consistency, all database file names are in slug form with the appropriate e

## Game Profile Fields

| Field | Type | Description | Example |
| ------------------------ | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- |
| `Name` | `string` | Display name of the game. | `"The Walking Dead: Season 2"` |
| `Description` | `string` | A brief description of the game. | `"The Walking Dead: Season 2 (2013) for PC."` |
| `BlowfishKey` | `string` (see below) | Blowfish encryption key for encrypting/decrypting files. Can be a custom key in a string form or an enum name from the [`T3BlowfishKey`](/src/TelltaleToolKit/Utility/T3BlowfishKey.cs) class. | `"Twds2"` |
| `IsTtarch2` | `bool` | Whether the game uses the TTArch2 archive format (`true` for TTArch2, `false` for TTArch). | `true` |
| `TtarchVersion` | `int` | The version of the archive format used by the game. If `IsTtarch2` is true, use versions 2-4, otherwise - versions 0-9. | `3` |
| `LuaVersion` | `string` | Lua scripting engine version used by the game. It can be either `5.0.2`, `5.1.2` or `5.2.3`. | `"5.1.2"` or `"5.1"` |
| `MetaStreamVersion` | `string` | Version of the metastream format used in the game. Can be `MBIN`, `MTRE`, `MSV5` or `MSV6`. | `"MSV5"` |
| `AreSymbolsHashed` | `bool` | Whether the game's symbols are hashed (`true` or `false`). This should almost always be `true`. Only `MBIN` are allowed to not be hashed. | `true` |
| `EnableOodleCompression` | `bool` | Whether Oodle compression is enabled for game archives. | `false` |
| Field | Type | Description | Example |
| ------------------------ | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- |
| `Name` | `string` | Display name of the game. | `"The Walking Dead: Season 2"` |
| `Description` | `string` | A brief description of the game. | `"The Walking Dead: Season 2 (2013) for PC."` |
| `BlowfishKey` | `string` (see below) | Blowfish encryption key for encrypting/decrypting files. Can be a custom key in a string form or an enum name from the [`T3BlowfishKey`](../src/TelltaleToolKit/Utility/Blowfish/T3BlowfishKey.cs) class. | `"Twds2"` |
| `IsTtarch2` | `bool` | Whether the game uses the TTArch2 archive format (`true` for TTArch2, `false` for TTArch). | `true` |
| `TtarchVersion` | `int` | The version of the archive format used by the game. If `IsTtarch2` is true, use versions 2-4, otherwise - versions 0-9. | `3` |
| `LuaVersion` | `string` | Lua scripting engine version used by the game. It can be either `5.0.2`, `5.1.2` or `5.2.3`. | `"5.1.2"` or `"5.1"` |
| `streamVersion` | `uint` | Version of the metastream format used in the game. This value ranges from 1 to 6. You can determine the version by inspecting the magic (FourCC) of a metastream file and using [this](../src/TelltaleToolKit/Serialization/MetaStreamMagic.cs) as a reference. | `5` |
| `EnableOodleCompression` | `bool` | Whether Oodle compression is enabled for game archives. | `false` |

### Game Profile Full Example

Expand All @@ -80,8 +79,7 @@ For consistency, all database file names are in slug form with the appropriate e
"IsTtarch2": true,
"TtarchVersion": 3,
"LuaVersion": "5.1.2",
"MetaStreamVersion": "MSV5",
"AreSymbolsHashed": true,
"streamVersion": 5,
"EnableOodleCompression": false,
}
```
Expand Down
2 changes: 1 addition & 1 deletion data/game_profiles/batman-the-enemy-within-2017.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": true,
"ttarchVersion": 4,
"luaVersion": "5.2.3",
"metaStreamVersion": "MSV6",
"streamVersion": 6,
"enableOodleCompression": true
}
2 changes: 1 addition & 1 deletion data/game_profiles/batman-the-telltale-series-2016-12.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": true,
"ttarchVersion": 4,
"luaVersion": "5.2.3",
"metaStreamVersion": "MSV6",
"streamVersion": 6,
"enableOodleCompression": true
}
2 changes: 1 addition & 1 deletion data/game_profiles/bone-act-1-2-combo-pack-2007.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": false,
"ttarchVersion": 4,
"luaVersion": "5.0",
"metaStreamVersion": "MBIN",
"streamVersion": 1,
"enableOodleCompression": false
}
2 changes: 1 addition & 1 deletion data/game_profiles/bone-out-from-boneville-2005.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": false,
"ttarchVersion": 4,
"luaVersion": "5.0",
"metaStreamVersion": "MBIN",
"streamVersion": 1,
"enableOodleCompression": false
}
2 changes: 1 addition & 1 deletion data/game_profiles/bone-out-from-boneville-2007.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": false,
"ttarchVersion": 4,
"luaVersion": "5.0",
"metaStreamVersion": "MBIN",
"streamVersion": 1,
"enableOodleCompression": false
}
2 changes: 1 addition & 1 deletion data/game_profiles/bone-the-great-cowrace-2006.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": false,
"ttarchVersion": 4,
"luaVersion": "5.0",
"metaStreamVersion": "MBIN",
"streamVersion": 1,
"enableOodleCompression": false
}
2 changes: 1 addition & 1 deletion data/game_profiles/borderlands-2015.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": true,
"ttarchVersion": 4,
"luaVersion": "5.1",
"metaStreamVersion": "MSV5",
"streamVersion": 5,
"enableOodleCompression": false
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": false,
"ttarchVersion": 4,
"luaVersion": "5.0",
"metaStreamVersion": "MBIN",
"streamVersion": 1,
"enableOodleCompression": false
}
2 changes: 1 addition & 1 deletion data/game_profiles/csi-hard-evidence-2007.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": false,
"ttarchVersion": 3,
"luaVersion": "5.0",
"metaStreamVersion": "MBIN",
"streamVersion": 1,
"enableOodleCompression": false
}
2 changes: 1 addition & 1 deletion data/game_profiles/game-of-thrones-2015.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": true,
"ttarchVersion": 3,
"luaVersion": "5.1.2",
"metaStreamVersion": "MSV5",
"streamVersion": 5,
"enableOodleCompression": false
}
2 changes: 1 addition & 1 deletion data/game_profiles/guardians-of-the-galaxy-2017.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": true,
"ttarchVersion": 4,
"luaVersion": "5.2.3",
"metaStreamVersion": "MSV6",
"streamVersion": 6,
"enableOodleCompression": true
}
2 changes: 1 addition & 1 deletion data/game_profiles/minecraft-story-mode-2015-old.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": true,
"ttarchVersion": 3,
"luaVersion": "5.1.2",
"metaStreamVersion": "MSV5",
"streamVersion": 5,
"enableOodleCompression": false
}
2 changes: 1 addition & 1 deletion data/game_profiles/minecraft-story-mode-2015.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": true,
"ttarchVersion": 3,
"luaVersion": "5.1.2",
"metaStreamVersion": "MSV5",
"streamVersion": 5,
"enableOodleCompression": false
}
2 changes: 1 addition & 1 deletion data/game_profiles/minecraft-story-mode-season-2-2017.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": false,
"ttarchVersion": 4,
"luaVersion": "5.2.3",
"metaStreamVersion": "MSV6",
"streamVersion": 6,
"enableOodleCompression": true
}
2 changes: 1 addition & 1 deletion data/game_profiles/poker-night-2-2013.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": false,
"ttarchVersion": 9,
"luaVersion": "5.2.3",
"metaStreamVersion": "MSV6",
"streamVersion": 6,
"enableOodleCompression": true
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": true,
"ttarchVersion": 4,
"luaVersion": "5.2.3",
"metaStreamVersion": "MSV6",
"streamVersion": 6,
"enableOodleCompression": true
}
2 changes: 1 addition & 1 deletion data/game_profiles/sam-and-max-101-2006-demo.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": false,
"ttarchVersion": 3,
"luaVersion": "5.0",
"metaStreamVersion": "MBIN",
"streamVersion": 1,
"enableOodleCompression": false
}
2 changes: 1 addition & 1 deletion data/game_profiles/sam-and-max-102-2006-demo.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": false,
"ttarchVersion": 3,
"luaVersion": "5.0",
"metaStreamVersion": "MBIN",
"streamVersion": 1,
"enableOodleCompression": false
}
2 changes: 1 addition & 1 deletion data/game_profiles/sam-and-max-103-2006-demo.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": false,
"ttarchVersion": 3,
"luaVersion": "5.0",
"metaStreamVersion": "MBIN",
"streamVersion": 1,
"enableOodleCompression": false
}
2 changes: 1 addition & 1 deletion data/game_profiles/sam-and-max-104-2006-demo.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": true,
"ttarchVersion": 3,
"luaVersion": "5.0",
"metaStreamVersion": "MBIN",
"streamVersion": 1,
"enableOodleCompression": false
}
2 changes: 1 addition & 1 deletion data/game_profiles/sam-and-max-105-2006-demo.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": true,
"ttarchVersion": 3,
"luaVersion": "5.0",
"metaStreamVersion": "MBIN",
"streamVersion": 1,
"enableOodleCompression": false
}
2 changes: 1 addition & 1 deletion data/game_profiles/sam-and-max-106-2006-demo.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": true,
"ttarchVersion": 3,
"luaVersion": "5.0",
"metaStreamVersion": "MBIN",
"streamVersion": 1,
"enableOodleCompression": false
}
2 changes: 1 addition & 1 deletion data/game_profiles/sam-and-max-201-2007.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": false,
"ttarchVersion": 2,
"luaVersion": "5.0",
"metaStreamVersion": "MBIN",
"streamVersion": 1,
"enableOodleCompression": false
}
2 changes: 1 addition & 1 deletion data/game_profiles/sam-and-max-203-2008.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": false,
"ttarchVersion": 0,
"luaVersion": "5.0.2",
"metaStreamVersion": "MBIN",
"streamVersion": 1,
"enableOodleCompression": false
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": true,
"ttarchVersion": 4,
"luaVersion": "5.2.3",
"metaStreamVersion": "MSV6",
"streamVersion": 6,
"enableOodleCompression": true
}
2 changes: 1 addition & 1 deletion data/game_profiles/tales-from-the-borderlands-2021-pc.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": true,
"ttarchVersion": 4,
"luaVersion": "5.2.3",
"metaStreamVersion": "MSV6",
"streamVersion": 6,
"enableOodleCompression": true
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": true,
"ttarchVersion": 4,
"luaVersion": "5.2.3",
"metaStreamVersion": "MSV6",
"streamVersion": 6,
"enableOodleCompression": true
}
2 changes: 1 addition & 1 deletion data/game_profiles/telltale-texas-hold-em-2005.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": false,
"ttarchVersion": 4,
"luaVersion": "5.2.3",
"metaStreamVersion": "MSV6",
"streamVersion": 6,
"enableOodleCompression": false
}
2 changes: 1 addition & 1 deletion data/game_profiles/the-walking-dead-collection-2017.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": true,
"ttarchVersion": 4,
"luaVersion": "5.2.3",
"metaStreamVersion": "MSV6",
"streamVersion": 6,
"enableOodleCompression": true
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"isTtarch2": true,
"ttarchVersion": 4,
"luaVersion": "5.2.3",
"metaStreamVersion": "MSV6",
"streamVersion": 6,
"enableOodleCompression": true,
"areSymbolsHashed": true
}
2 changes: 1 addition & 1 deletion data/game_profiles/the-walking-dead-michonne-2016.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"isTtarch2": true,
"ttarchVersion": 4,
"luaVersion": "5.2.3",
"metaStreamVersion": "MSV5",
"streamVersion": 5,
"enableOodleCompression": true
}
Loading
Loading