My set of tools. The code is more important than the features, so feel free to reuse it. π
This tool is using and providing different dependencies, see LICENSE.md for a full list.
You can download the latest release here:
- Latest Release
- Latest Dev Build (Might be unstable)
The tool checkupdate allows to check for the latest update.
Fast Files (ff) are compressed archives containing the different assets of the Call of Duty games.
The dumpers extract the fast files assets.
Supported games and assets
| Game | Reader | Handler | Pools |
|---|---|---|---|
| Black Ops 3 | β | bo3 |
rawfile, scriptparsetree |
| Black Ops 4 | β | bo4 |
aitype, arenaseasons, bgcache, character, characterbodytype, cpu_occlusion_data, customization, ddl, entitlement, entitlementlist, firstpartyentitlement, firstpartyentitlementlist, gametypetable, hierarchical_task_network, keyvaluepairs, localize_entry, luafile, comworld, entity_list, gfxworld, maptable, maptable_list, maptable_preview_images, trigger_list, objective, player_outfit, player_role_category, player_role_category_table, player_role_template, playlists, playlist_global_settings, playlist_schedule, rank, ranktable, prestige, prestigetable, rawstring, scriptbundle, scriptbundlelist, scriptparsetree, scriptparsetreedbg, sound, sprayorgestureitem, sprayorgesturelist, storagefile, storagefilelist, storeproduct, storecategory, storecategorylist, labelstore, labelstorelist, sku, streamkey, stringtable, structured_table, unlockable_item, unlockable_item_table, weapon, weapon_camo, weapon_tunables, zbarrier |
| Modern Warfare 2019 | β | mw19 |
rawfile, scriptfile (gpl*), luafile, localize |
| Black Ops Cold War | β | cw |
rawfile, scriptparsetree, using, scriptbundle, bgcache, ddl, localizeentry, keyvaluepairs, weapon_frontend, zbarrier |
| Vanguard | β | vg |
rawfile, scriptfile (gpl*), luafile, localize |
| Modern Warfare II | β | mwii |
rawfile, scriptfile (gpl*), luafile, stringtable, ddl, scriptbundle, localize |
| Modern Warfare II SP | β | mwiisp |
rawfile, scriptfile (gpl*), luafile, stringtable, ddl, scriptbundle, localize |
| Modern Warfare III | β | mwiii |
rawfile, gscobj, luafile, stringtable, ddl, scriptbundle, localize |
| ModernΒ WarfareΒ IIIΒ SP | β | mwiiisp |
rawfile, gscobj, luafile, stringtable, ddl, scriptbundle, localize |
| Black Ops 6 | β | bo6 |
rawfile, gscobj, gscgdb, luafile, aitype, scriptbundle, stringtable, keyvaluepairs, netconststrings, operator, operatorlist, reactiveoperator, operatorskin, spray, contraildata, parachutedata, ddl, aishootstyleslist, ai_token_types, ai_token_stealing_definitions, ai_token_definitions, localize, soundbank, soundbanktransient |
| Black Ops 6 SP | β | bo6sp |
rawfile, gscobj, gscgdb, stringtable, ddl, scriptbundle, netconststrings, luafile, aitype, localize |
| Black Ops 7 | β | bo7 |
rawfile, gscobj, gscgdb, luafile, aitype, scriptbundle, stringtable, keyvaluepairs, netconststrings, operator, operatorlist, reactiveoperator, operatorskin, spray, contraildata, parachutedata, ddl, aishootstyleslist, ai_token_types, ai_token_stealing_definitions, ai_token_definitions, localize, soundbank, soundbanktransient |
- gpl*: Only working within the GPL-3 distribution using xensik/gsc-tool.
The gsc handler can read scriptparsetree, gscobj or scriptfile pools from decompressed fastfiles.
See the wiki page Fast Files Dumper.
The linkers create custom fast files.
Supported games and assets
| Game | Linker | Pools |
|---|---|---|
| Black Ops 3 | bo3 |
scriptparsetree |
| Black Ops 4 | bo4 |
aitype, character, rawfile, scriptparsetree, scriptparsetreedbg, scriptparsetreeforced, structuredtable, luafile, rawstring, scriptbundle, stringtable, image, keyvaluepairs, objective, rank, ranktable, prestige, prestigetable, localize, ttf, bgcache, zbarrier |
| BlackΒ OpsΒ ColdΒ War | cw |
rawfile, scriptparsetree, scriptparsetreedbg, using, bgcache, localize, keyvaluepairs |
See the wiki page Fast Files Linker.
The GSC file format contains the scripts used by the different games.
Supported games
| Name | Rev | Decompiler | Compiler | Type(s) | Source* |
|---|---|---|---|---|---|
| Black Ops 3 (T7) | 1A | β | β | pc | None |
| Black Ops 3 (T7) | 1B | Partial | β | pc | ate47/oldcod-source |
| Black Ops 3 (T7) | 1C | β | β | pc,ps4 | ate47/bo3-source |
| Black Ops 4 (T8) | 31 | β | β | ps4 | ate47/oldcod-source |
| Black Ops 4 (T8) | 34 | β | β | pc,ps4 | ate47/oldcod-source |
| Black Ops 4 (T8) | 35 | Partial | β | pc | None |
| Black Ops 4 (T8) | 36 | β | β | pc,ps4 | ate47/bo4-source |
| Black Ops Cold War (T9) | 37 | Dc | β | pc,ps4,alpha | ate47/oldcod-source |
| Black Ops Cold War (T9) | 38 | Dc | β | pc,ps4 | ate47/bocw-source |
| Modern Warfare III (JUP) | 8A | β | β | all | ate47/mwiii-source |
| Modern Warfare III (JUP) | 8B | Dc | β | all | ate47/mwiii-source |
| Black Ops 6 (T10) | 06 | Dc | β | all | ate47/bo6-source |
| Black Ops 6 (T10) | 07 | Dc | β | all | ate47/bo6-source |
| Black Ops 6 (T10) | 0B | Dc | β | all | ate47/bo6-source |
| Black Ops 6 (T10) | 0C | Dc | β | all | ate47/bo6-source |
| Black Ops 6 (T10) | 0D | Dc | β | all | ate47/bo6-source |
| Black Ops 6 (T10) | 0E | Dc | β | all | ate47/bo6-source |
| Black Ops 6 (T10) | 10 | Dc | β | all | ate47/bo6-source |
| Black Ops 6 (T10) | 11 | Dc | β | all | ate47/bo6-source |
| Black Ops 6 (T10) | 12 | Dc | β | all | ate47/bo6-source |
| Black Ops 6 (T10) | 14 | Dc | β | bo6+bo6_v1 | ate47/bo6-source |
| Black Ops 7 (SAT) | 14 | Dc | β | bo7 | ate47/bo7-source |
| Black Ops 7 (SAT) | 16 | Dc | β | all | ate47/bo7-source |
| Black Ops 7 (SAT) | 18 | Dc | β | all | ate47/bo7-source |
| Black Ops 7 (SAT) | 19 | Dc | β | all | ate47/bo7-source |
| Black Ops 7 (SAT) | 1a | Dc | β | all | ate47/bo7-source |
- * : Some source repositories might not be public yet.
- Dc: With pre-decode, see the Using encrypted page.
- Ex: With extensions, The extensions aren't provided publicly, at least not by me.
See the wiki pages GSC Compiler or GSC Decompiler for more information.
Various games use hashes, the lookup is done using the loaded hashes.
It is suggested to run acts download_hash_index after installation to get all the default hashes.
To add more hashes, it can be done manually:
- Using a file named
strings.txtwith one hash per line - Using
.wni/.cdbfiles inbin/package_index - By downloading a .zip file containing wni or cdb files with the
acts download_hash_index [url]command.
Or they can be downloaded from multiple sources
- Using the ate47/HashIndex with the command
acts download_hash_index acts - Using the echo000/cod-name-db with the command
acts download_hash_index echo000-cndb
Multiple utilities for brute forcing hashes, replace hashes in files, scan for them or compress are available. A list can be obtained using acts list hash.
Different dlls were created to add features to existing games
File: acts-bo3.dll
Features:
- Allow loading of script debug information in the zone directory, can be generated by the decompiler or downloaded here.
This dll is made as a plugin for project-bo4/shield-development, it doesn't work as an independant addon.
File: acts-shield-plugin.dll
Features:
- Translate error messages
- Add custom GSC functions
- Allow loading GSC detours and lazy links
- Add custom LUA functions
- Allow loading custom fastfiles
File: acts-bocw.dll
Features:
- Allow loading GSC lazy links
This project is open for more features, see CONTRIBUTING.md for more information.
External tools
cmakeis required to setup the project.clang-formatis required to format the project, a formatted code is mandatory for pull requests.antlr4is required to recompile the grammar files used by the different compilers. It can be downloaded usingscripts/antlr.ps1.
Path structure
/cmake: cmake scripts/config: config files, used by tools/config/data: config files packages with acts/deps: external projects/examples: acts API examples/grammar: grammar files used by antlr4/include: includes for the acts API/licenses: used licenses/scripts: scripts used by the ci or developers/src: source directory/tools: source directory for the tools used to compile the files into the source directory
Atian Tools supports plugins, see ate47/atian-cod-tools-plugin-example for an example, the api can be obtained in the release zip or in the include/.
API examples are available in examples/.
To use the acts command in a GitHub workflow, the ate47/setup-acts action can be used.
- name: Install Atian Tools
uses: ate47/setup-acts@v1
with:
# Atian Tools version to install, latest for the latest version, latest_build
# for the latest prerelease build.
# Default: latest
version: latest
# Download the hash index with Atian Tools
# Default: false
hashindex: falseSee the Wiki to know how to use the other features
