.github | ||
data | ||
deps | ||
gen | ||
include/xsk | ||
src | ||
tools | ||
.gitignore | ||
.gitmodules | ||
build.bat | ||
Dockerfile | ||
generate.bat | ||
LICENSE | ||
premake5.lua | ||
README.md |
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*
- 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
-d, --dev
Enable developer mode (dev blocks & generate bytecode map).-z, --zonetool
Enable zonetool mode (use .cgsc files).-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]
- magic:
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) orpremake5 gmake2
(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
ETH: 0x6261BBE1a33F6Fec4b722DbCe2c28B4CC02c9C7B
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.