Multi-format game archive tool
Project description
tamago
Multi-format game archive toolkit.
Requires Python 3.10 or later.
Supported formats
| Format | Engine | Extract | Create |
|---|---|---|---|
| XP3 | KiriKiri | yes | yes |
| DET | μ-GameOperationSystem | yes | yes |
| GSP | AGSD | yes | yes |
| ARC | AdvHD (WillPlus V2) | yes | yes |
Installation
pip install tamagoarc
To enable TLG image conversion, install with the images extra:
pip install tamagoarc[images]
Usage
tamago CLI
tamago auto-detects archive formats by magic bytes and, for XP3 archives, automatically identifies the correct encryption scheme.
# Identify an archive's format
tamago identify data.xp3
# Extract an archive (auto-detects format and encryption)
tamago extract data.xp3 output_dir
# Use format subcommands for format-specific options
tamago xp3 extract data.xp3 output_dir --encryption hash-xor --key 3
tamago det create source_dir output.det --index-format atm
# Create an archive (format must be specified)
tamago create --format xp3 source_dir output.xp3
Python API
from tamago.formats.xp3 import XP3File
# Extract an archive
with XP3File("data.xp3") as xp3:
xp3.extract_all("output_dir")
# Extract with explicit encryption
from tamago.formats.xp3.encryption import HashXorEncryption
enc = HashXorEncryption(shift=3)
with XP3File("data.xp3", encryption=enc) as xp3:
xp3.extract_all("output_dir")
# Auto-detect encryption
from tamago.formats.xp3.detect import auto_detect
enc = auto_detect("data.xp3")
with XP3File("data.xp3", encryption=enc) as xp3:
xp3.extract_all("output_dir")
# Create an archive
from pathlib import Path
with XP3File("output.xp3", "x") as xp3:
xp3.write_all(Path("source_dir"))
XP3 Encryption
XP3 archives used by KiriKiri games are often encrypted with a game-specific scheme implemented in a .tpm plugin. tamago supports the encryption used by several games (including automatic detection of the encryption).
If the game you are interested in is not supported, please raise an issue, including a VNDB link to the game.
Development
This project uses Hatch as the build system.
Setup
pip install hatch
Running tests
hatch run test # run all tests
hatch run test -k test_name # run a single test by name
hatch run cov # tests + coverage report
Linting and formatting
hatch run lint:style # check style (ruff + black)
hatch run lint:typing # type checking (mypy)
hatch run lint:fmt # auto-format (black + ruff --fix)
hatch run lint:all # style + typing
License
tamago is distributed under the terms of the MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tamagoarc-1.1.0.tar.gz.
File metadata
- Download URL: tamagoarc-1.1.0.tar.gz
- Upload date:
- Size: 232.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2fec563729cc93d523052833f9d1d1a04935bbdd3b619e7f6936161b555f4511
|
|
| MD5 |
9daf31524ec796ad88380375557443c5
|
|
| BLAKE2b-256 |
b43b4887b1bf085b2b1ad8c7f0b389990b634b83269c8387aaa025758fad3f7e
|
Provenance
The following attestation bundles were made for tamagoarc-1.1.0.tar.gz:
Publisher:
publish.yml on kenkyuuka/tamago
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tamagoarc-1.1.0.tar.gz -
Subject digest:
2fec563729cc93d523052833f9d1d1a04935bbdd3b619e7f6936161b555f4511 - Sigstore transparency entry: 1341201115
- Sigstore integration time:
-
Permalink:
kenkyuuka/tamago@0ba4a5f7036aeef81e9aaa31baaba8c2afd2c84c -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/kenkyuuka
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0ba4a5f7036aeef81e9aaa31baaba8c2afd2c84c -
Trigger Event:
release
-
Statement type:
File details
Details for the file tamagoarc-1.1.0-py3-none-any.whl.
File metadata
- Download URL: tamagoarc-1.1.0-py3-none-any.whl
- Upload date:
- Size: 224.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3aa8aba8d56d60c6ff0b23db0d1449d0cbaf6b7f7cf6a15e797ce0d85f0cc531
|
|
| MD5 |
a9e7ea0b6e9bb3dbcc5327cb6146721e
|
|
| BLAKE2b-256 |
8ed6d29cc79d7f77cf5b85414e9c17702e9b56d6c4c19a53e7cfdb8317bef71e
|
Provenance
The following attestation bundles were made for tamagoarc-1.1.0-py3-none-any.whl:
Publisher:
publish.yml on kenkyuuka/tamago
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tamagoarc-1.1.0-py3-none-any.whl -
Subject digest:
3aa8aba8d56d60c6ff0b23db0d1449d0cbaf6b7f7cf6a15e797ce0d85f0cc531 - Sigstore transparency entry: 1341201150
- Sigstore integration time:
-
Permalink:
kenkyuuka/tamago@0ba4a5f7036aeef81e9aaa31baaba8c2afd2c84c -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/kenkyuuka
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0ba4a5f7036aeef81e9aaa31baaba8c2afd2c84c -
Trigger Event:
release
-
Statement type: