From 10c03676ad13ca62c9832b6987b85b2c6839b3d8 Mon Sep 17 00:00:00 2001 From: Vladimir Menshakov Date: Sun, 2 Nov 2025 23:36:06 +0000 Subject: [PATCH] AGDS: add tools Add unpackers for database (.db) and resources (.grp) --- engines/agds/decrypt.py | 8 +++++++ engines/agds/unpack-db | 46 +++++++++++++++++++++++++++++++++++++++ engines/agds/unpack-grp | 48 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 102 insertions(+) create mode 100644 engines/agds/decrypt.py create mode 100755 engines/agds/unpack-db create mode 100755 engines/agds/unpack-grp diff --git a/engines/agds/decrypt.py b/engines/agds/decrypt.py new file mode 100644 index 00000000..a924315d --- /dev/null +++ b/engines/agds/decrypt.py @@ -0,0 +1,8 @@ +key = bytes(map(lambda c: ord(c), 'Vyvojovy tym AGDS varuje: Hackerovani skodi obchodu!')) +key_n = len(key) + +def decrypt(src): + r = bytearray() + for i in range(len(src)): + r.append(src[i] ^ key[i % key_n] ^ 0xff) + return r diff --git a/engines/agds/unpack-db b/engines/agds/unpack-db new file mode 100755 index 00000000..6544f399 --- /dev/null +++ b/engines/agds/unpack-db @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 + +from argparse import ArgumentParser +from struct import unpack +import sys +import os.path +from decrypt import decrypt + +argparser = ArgumentParser('Unpack ADB file') +argparser.add_argument('file') +args = argparser.parse_args() + +with open(args.file, "rb") as f: + data = bytearray(f.read()) + +size = len(data) +magic, h1, h2, h3, h4 = unpack('