{"id":39280541,"url":"https://github.com/aclios/ajt-tools","last_synced_at":"2026-01-18T01:01:19.485Z","repository":{"id":233271427,"uuid":"786387171","full_name":"Aclios/AJT-Tools","owner":"Aclios","description":"RE Engine modding tools","archived":false,"fork":false,"pushed_at":"2025-09-10T15:42:27.000Z","size":56,"stargazers_count":12,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-10T19:46:05.941Z","etag":null,"topics":["ace-attorney","apollo-justice-trilogy","modding-tools","re-engine"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Aclios.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-04-14T09:58:41.000Z","updated_at":"2025-09-10T15:42:31.000Z","dependencies_parsed_at":"2024-04-18T16:48:17.176Z","dependency_job_id":"4e0833d0-9f9a-4d99-ad42-f07f0226a1e2","html_url":"https://github.com/Aclios/AJT-Tools","commit_stats":null,"previous_names":["aclios/ajt-tools"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Aclios/AJT-Tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aclios%2FAJT-Tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aclios%2FAJT-Tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aclios%2FAJT-Tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aclios%2FAJT-Tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Aclios","download_url":"https://codeload.github.com/Aclios/AJT-Tools/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aclios%2FAJT-Tools/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28525424,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"ssl_error","status_checked_at":"2026-01-18T00:39:39.467Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ace-attorney","apollo-justice-trilogy","modding-tools","re-engine"],"created_at":"2026-01-18T01:00:48.932Z","updated_at":"2026-01-18T01:01:19.365Z","avatar_url":"https://github.com/Aclios.png","language":"Python","funding_links":["https://www.patreon.com/FluffyQuack"],"categories":[],"sub_categories":[],"readme":"# AJT-Tools\n\nRE Engine modding tools. Developed specifically for Apollo Justice Trilogy and Ghost Trick. \nOther RE Engine games could be partially supported.\n\n### Supported formats:\n\nImport and export for the following formats are supported:\n\n- Main archive (.pak)\n- Textures (.tex)\n- Message data (.msg)\n- ASRC audio (.asrc)\n- Font (.oft)\n- Apollo Justice Trilogy script files (.user.2) - AA4, AA5 \u0026 AA6\n\n### Supported platforms\n\nThe following platforms are supported:\n\n- Android\n- Steam\n- Nintendo Switch\n- PS4\n\nThis is only relevant for .tex files, it shouldn't matter for others. Other platforms that don't swizzle textures could be supported.\n\n# Get Started\n\n- Python 3.11 or superior is required.\n\n- Install the required packages by running `python -m pip install -r requirements.txt` in a terminal.\n\n- Fill the path_init.txt with the relevant information. Examples for Apollo Justice Steam are already there.\n    - **pak_path** is the path of the main archive of the game, which should be named re_chunk_000.pak\n    - **release_list_path** is the path of the release list of the game and platform, which is required to extract files with their real name. You can find release lists of all RE Engine games here: https://github.com/Ekey/REE.PAK.Tool/tree/main/Projects.\n    - **extracted_dir** is the path of the folder where all the files of the .pak will be extracted.\n    - **mod_dir** is the path of the folder where the modded files will be written. \n    - **patch_pak_path** is the path where the patch pak file will be written. For Steam games, it should be the game folder, for Switch games it can be the mods/contents/\u003cgame_id\u003e/romfs of an emulator. This file should be named \"re_chunk_000.pak.patch_001.pak\". If such files already exist and you want to keep the game updates, name it with the higher id + 1 (If the last update is \"re_chunk_000.pak.patch_005.pak\", name it \"re_chunk_000.pak.patch_006.pak\").\n    - **language** can be set to a specific language if you don't want to extract files specific to the other languages. By default everything will be extracted (\"all\").\n\n# How to use\n\n- Run EXPORT.bat to unpack the .pak file and extract all supported assets to their respective folders.\n\n- Sort the files by removing the files you won't have to modify.\n\n- Modify the files and run IMPORT.bat. It will copy the concerned files from the extraction folder to the mod folder, import your modify files, and build the .pak.patch file from them. From now, the files will stay in the mod folder, so if you are satisfied you can remove the assets from their folder to speed up the process.\n\n- If you modified a file that isn't supported by AJT Tools (using a 3rd party tool) and want to add it in your mod, you can just simply put it in the mod folder with its correct path. BUILD PAK ONLY.pak can be used to directly build the .patch.pak file for this case of use case.\n\n# As a python module\n\nAJT Tools can also be used as a Python module.\n## Pak files\n\n```python\nfrom AJTTools import REPAk, build_pak_from_dir\n\n#extract a pak file\n\npak = REPak(\"path_to_pak\")\npak.unpack(\"output_dir\", \"release_list_path\")\n\n#build a .pak file from a folder\n\nbuild_pak_from_dir(\"mod_dir\",\".pak.patch_file_path\")\n```\n\n## Font files\n\n```python\nfrom AJTTools.plugins.font import REFont\n\nfont = REFont(\"font.oft.1\") # read the file\n\nfont.export_file(\"font.otf\") # export\n\nfont.import_file(\"newfont.otf\") # import\nfont.save(\"font.oft.1\") # save\n```\n\n## Tex files\n\n```python\nfrom AJTTools.plugins.tex import Tex\n\ntex = Tex(\"image.tex.35\") # read the file\n\ntex.export_file(\"image.png\") # export\n\ntex.import_file(\"newimage.png\") # import\ntex.save(\"image.tex.35\") # save\n```\n\n## MSG files\n\n```python\nfrom AJTTools.plugins.msg import MSGPlugin\n\n## work with csv files\n\nplugin = MSGPlugin(\"csv\")\nplugin.export_file(\"message.msg.22\",\"message.csv\") # export\nplugin.import_file(\"message.msg.22\",\"newmessage.csv\") # import/save\n\n## work with json files\n\nplugin = MSGPlugin(\"json\")\nplugin.export_file(\"message.msg.22\",\"message.json\") # export\nplugin.import_file(\"message.msg.22\",\"newmessage.json\") # import/save\n\n## work with txt files (single language)\n\nplugin = MSGPlugin(\"txt\",\"en\") #init and chose english as export/import language\nplugin.export_file(\"message.msg.22\",\"message.txt\") # export\nplugin.import_file(\"message.msg.22\",\"newmessage.txt\") # import/save\n```\n\n## Audio files (asrc)\n\n```python\nfrom AJTTools.plugins.sound import ASRC\n\nasrc = ASRC(\"se.asrc.31\") # read the file\n\nasrc.export_file(\"se\") # export, extension is added automatically depending on the format\n\nasrc.import_file(\"newse.wav\") # import\nasrc.save(\"se.asrc.31\") # save\n```\n\n## AJT Script files\n\n```python\nfrom AJTTools.plugins.script import AA4Script, AA56Script\n\n## user.2 to txt\n\nscript = AA4Script(\"script.user.2\") #aa4 script\nscript.write_txt(\"script.txt\") #export\n\nscript = AA56Script(\"script.user.2\") #aa5 and aa6 script\nscript.write_txt(\"script.txt\") #export\n\n## txt to user.2\n\nscript = AA4Script(\"script.txt\") #aa4\nscript.write_user2(\"script.user.2\")\n\nscript = AA56Script(\"script.txt\") #aa5 \u0026 6\nscript.write_user2(\"script.user.2\")\n```\n\n# Credits\n\n[REE.PAK.Tool](https://github.com/Ekey/REE.PAK.Tool/tree/main) by Ekey and [retool](https://www.patreon.com/FluffyQuack) by FluffyQuack for file format.\n\nModules and packages used:\n\n| Package   | Author   | License |\n|---      |---    |---   |\n| [etcpack](https://github.com/K0lb3/etcpak) | K0lb3 | MIT\n| [texture2ddecoder](https://github.com/K0lb3/texture2ddecoder) | K0lb3 | MIT\n| [astc-encoder-py](https://github.com/K0lb3/astc-encoder-py) | K0lb3 | MIT\n| [REMSG_Converter](https://github.com/dtlnor/REMSG_Converter) | dtlnor | MIT\n| [chardet](https://github.com/chardet/chardet) | dan-blanchard | LGPL-2.1\n| [mmh3](https://github.com/hajimes/mmh3) | hajimes | MIT\n| [Pillow](https://github.com/python-pillow/Pillow) | Jeffrey A. Clark | MIT-CMU\n| [soundfile](https://github.com/bastibe/python-soundfile) | bastibe | BSD-3-Clause\n| [zstd](https://github.com/sergey-dryabzhinsky/python-zstd) | Sergey Dryabzhinsky, Anton Stuk | BSD-2-Clause","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faclios%2Fajt-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faclios%2Fajt-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faclios%2Fajt-tools/lists"}