Skip to content

Repository files navigation

sonar build issues license github sponsors patreon

GSC Tool

A utility to compile & decompile IW engine game scripts.

Supported Games

  • IW5 (Call of Duty: Modern Warfare 3) PC PS3 Xbox 360
  • IW6 (Call of Duty: Ghosts) PC PS3 PS4 Xbox 360 Xbox One
  • IW7 (Call of Duty: Infinite Warfare) PC PS4 Xbox One
  • IW8 (Call of Duty: Modern Warfare (2019) / Warzone) PC PS4 PS5 Xbox One Xbox Series X|S
  • IW9 (Call of Duty: Modern Warfare II (2022) / Warzone 2) PC PS4 PS5 Xbox One Xbox Series X|S
  • S1 (Call of Duty: Advanced Warfare) PC PS3 PS4 Xbox 360 Xbox One
  • S2 (Call of Duty: WWII) PC PS4 Xbox One
  • S4 (Call of Duty: Vanguard) PC PS4 PS5 Xbox One Xbox Series X|S
  • H1 (Call of Duty: Modern Warfare Remastered) PC PS4 Xbox One
  • H2 (Call of Duty: Modern Warfare 2 Campaign Remastered) PC PS4 PS5 Xbox One Xbox Series X|S
  • T6 (Call of Duty: Black Ops II) PC PS3 Xbox 360 Wii U
  • T7 (Call of Duty: Black Ops III) PC (Decompiler)
  • T8 (Call of Duty: Black Ops 4) *WIP*
  • T9 (Call of Duty: Black Ops Cold War) *WIP*
  • T10 (Call of Duty: Black Ops 6) *WIP*
  • JUP (Call of Duty: Modern Warfare III (2023) *WIP*

Usage

gsc-tool [OPTIONS..] <path>

  • path: file or directory to process

  • options:

    -m, --mode <mode> [REQUIRED] one of: asm, disasm, comp, decomp, parse

    -g, --game <game> [REQUIRED] one of: iw5, iw6, iw7, iw8, iw9, s1, s2, s4, h1, h2, t6 t7 t8 t9 jup

    -s, --system <system> [REQUIRED] one of: pc, ps3, ps4, ps5, xb2 (360), xb3 (One), xb4 (Series X|S), wiiu

    -i, --instance <instance> Instance to use on games with .gsc/.csc (server, client). (default: server)

    -w, --workdir <path> Working directory for includes or headers. (default: .)

    -y, --dry Dry run (do not write files).

    -d, --dev Enable developer mode (dev blocks & generate bytecode map).

    -z, --zonetool Enable zonetool mode (use .cgsc files).

    --t6fixup Decompile t6 files from broken compilers.

    -h, --help Display help.

    -v, --version Display version.

Example: gsc-tool -m comp -g iw5 -s pc ./data/iw5/my_fancy_script.gsc

Mode Description Output
asm assemble a file.gscasm file.gscbin
disasm dissasemble a file.gscbin file.gscasm
comp compile a file.gsc file.gscbin
decomp decompile a file.gscbin file.gsc
parse parse a file.gsc file.gsc

File Format

If you need to extract scripts from fastfiles or game memory, use Zonetool or Jekyll.

  • gsc-tool .gscbin binary format is a serialized ScriptFile struct:

    • magic: "GSC\0" 4 byte
    • compressedLen: 4 byte usigned integer
    • len: 4 byte usigned integer
    • bytecodeLen: 4 byte usigned integer
    • buffer: byte array[compressedLen]
    • bytecode: byte array[bytecodeLen]

note: for PS3 & Xbox 360 .gscbin files (compressedLen, len, bytecodeLen) are saved as little-endian!!

  • zonetool (IW5) format made of bytecode file .cgsc and decompressed stack buffer .cgsc.stack.

  • treyarch (T6) format is a single buffer with gscobj data .gsc or .csc.

Build

  • install premake5 on your system PATH
  • clone this repository
  • update the submodules git submodule update --init --recursive
  • run prebuild script premake5 vs2022 (windows) or premake5 gmake (linux/macos)

Contribute

If you like my work, consider sponsoring/donating! Would allow me to spend more time adding new features & fixing bugs.

BTC: bc1qky7x9kpjlt6nsvt7pckc3wwzk8rk9pgtnmw98u

github sponsors patreon

Credits

This project is based on RektInator's gsc-asm. Special thanks to RektInator, JTAG & Dasfonia.

Disclaimer

This software has been created purely for the purposes of academic research. Project maintainers are not responsible or liable for misuse of the software. Use responsibly.

Releases

Sponsor this project

Packages

Used by

Contributors

Languages