{
  "game_version": 1,
  "text_version": 11, // patched to 11
  "game_name": "jak1",
  "expected_elf_name": "SCUS_971.24",

  // if you want to filter to only some object names.
  // it will make the decompiler much faster.
  "allowed_objects": [],
  "banned_objects": [],

  ////////////////////////////
  // CODE ANALYSIS OPTIONS
  ////////////////////////////

  // set to true to generate plain .asm files with MIPS disassembly, with no fancy decompilation.
  // this is fast and should succeed 100% of the time.
  "disassemble_code": false,

  // Run the decompiler
  "decompile_code": false,

  // run the first pass of the decompiler
  "find_functions": true,

  // will attempt to run the decompiled output through the OpenGOAL formatter
  // this will be skipped in offline tests
  "format_code": true,

  ////////////////////////////
  // DATA ANALYSIS OPTIONS
  ////////////////////////////

  // set to true to generate plain .asm files for data files.
  // this will display most data as hex, but will add labels/references/type pointers/strings
  // this generates a huge amount of output if you run it on the entire game.
  "disassemble_data": false,

  // unpack textures to assets folder
  "process_tpages": true,
  // write goal imports for tpages and textures
  "write_tpage_imports": false,
  // unpack game text to assets folder
  "process_game_text": true,
  // unpack game count to assets folder
  "process_game_count": true,
  // write goal imports for art groups
  "process_art_groups": false,
  // write out a json file containing the art info mapping, run this with all objects allowed
  "dump_art_group_info": false,
  // write out a json file containing the joint node mapping, run this with all objects allowed
  "dump_joint_geo_info": false,
  // write out a json file containing tpage and texture mappings, run with all objects allowed
  "dump_tex_info": false,

  ///////////////////////////
  // WEIRD OPTIONS
  ///////////////////////////

  // these options are used rarely and should usually be left at false

  // generate the symbol_map.json file.
  // this is a guess at where each symbol is first defined/used.
  "generate_symbol_definition_map": false,

  // genreate the all-types file
  "generate_all_types": false,

  // debug option for instruction decoder
  "write_hex_near_instructions": false,

  // experimental tool to extract linked lists used for region scripting in Jak 2 and Jak 3.
  "write_scripts": false,

  // hex dump of code/data files.
  "hexdump_code": false,
  "hexdump_data": false,
  // dump raw obj files
  "dump_objs": true,
  // print control flow graph
  "print_cfgs": false,

  // set to true for PAL versions. this will forcefully skip files that have some data missing at the end.
  "is_pal": false,

  ////////////////////////////
  // CONFIG FILES
  ////////////////////////////

  "type_casts_file": "decompiler/config/jak1/ntsc_v1/type_casts.jsonc",
  "anonymous_function_types_file": "decompiler/config/jak1/ntsc_v1/anonymous_function_types.jsonc",
  "var_names_file": "decompiler/config/jak1/ntsc_v1/var_names.jsonc",
  "label_types_file": "decompiler/config/jak1/ntsc_v1/label_types.jsonc",
  "stack_structures_file": "decompiler/config/jak1/ntsc_v1/stack_structures.jsonc",
  "hacks_file": "decompiler/config/jak1/ntsc_v1/hacks.jsonc",
  "inputs_file": "decompiler/config/jak1/ntsc_v1/inputs.jsonc",
  "art_info_file": "decompiler/config/jak1/ntsc_v1/art_info.jsonc",
  "import_deps_file": "decompiler/config/jak1/ntsc_v1/import_deps.jsonc",
  "all_types_file": "decompiler/config/jak1/all-types.gc",
  "art_group_dump_file": "decompiler/config/jak1/ntsc_v1/art-group-info.min.json",
  "joint_node_dump_file": "decompiler/config/jak1/ntsc_v1/joint-node-info.min.json",
  "tex_dump_file": "decompiler/config/jak1/ntsc_v1/tex-info.min.json",
  "process_stack_size_file": "decompiler/config/jak1/ntsc_v1/process_stack_size_overrides.jsonc",

  // optional: a predetermined object file name map from a file.
  // this will make decompilation naming consistent even if you only run on some objects.
  "obj_file_name_map_file": "goal_src/jak1/build/all_objs.json",

  ////////////////////////////
  // LEVEL EXTRACTION
  ////////////////////////////

  // turn this on to extract level background graphics data as .fr3 files in out/<game>/fr3
  "levels_extract": true,
  // turn this on if you want extracted levels to be saved out as .glb files in glb_out/<game>
  "rip_levels": false,
  // should we also extract collision meshes to the .fr3 files?
  // these can be displayed in-game with the OpenGOAL collision renderer
  "extract_collision": true,
  // turn this on if you want extracted level collision to be saved as .obj files in debug_out/<game>
  "rip_collision": false,
  // save game textures as .png files to decompiler_out/<game>/textures
  "save_texture_pngs": false,

  // whether or not to dump out streamed audio files to decompiler_out/<game>/audio
  "rip_streamed_audio": false,

  ////////////////////////////
  // PATCHING OPTIONS
  ////////////////////////////

  // these are options related to xdelta3 patches on specific objects
  // this allows us to get a more consistent input

  // set to true to write new patch files
  "write_patches": false,
  // set to true to apply patch files
  "apply_patches": true,
  // what to patch an object to and what the patch file is
  "object_patches": {
    "0COMMON": {
      "crc32": "DD2CD7E2",
      "in": "decompiler_out/jak1_pal/raw_obj/0COMMON.go",
      "out": "game/assets/jak1/patches/0common.xd3"
    },
    "1COMMON": {
      "crc32": "2B9C79F9",
      "in": "decompiler_out/jak1_pal/raw_obj/1COMMON.go",
      "out": "game/assets/jak1/patches/1common.xd3"
    },
    "2COMMON": {
      "crc32": "DA35C5F3",
      "in": "decompiler_out/jak1_pal/raw_obj/2COMMON.go",
      "out": "game/assets/jak1/patches/2common.xd3"
    },
    "3COMMON": {
      "crc32": "50C4A6A0",
      "in": "decompiler_out/jak1_pal/raw_obj/3COMMON.go",
      "out": "game/assets/jak1/patches/3common.xd3"
    },
    "4COMMON": {
      "crc32": "C475F525",
      "in": "decompiler_out/jak1_pal/raw_obj/4COMMON.go",
      "out": "game/assets/jak1/patches/4common.xd3"
    },
    "5COMMON": {
      "crc32": "92D44110",
      "in": "decompiler_out/jak1_pal/raw_obj/5COMMON.go",
      "out": "game/assets/jak1/patches/5common.xd3"
    },
    "6COMMON": {
      "crc32": "85B23FEE",
      "in": "decompiler_out/jak1_pal/raw_obj/6COMMON.go",
      "out": "game/assets/jak1/patches/6common.xd3"
    }
  },
  "version_overrides": {
    "ntsc_v1": {},
    "ntsc_v2": {
      "game_name": "jak1_us2",
      "type_casts_merge_file": "decompiler/config/jak1/pal/type_casts.jsonc",
      "label_types_merge_file": "decompiler/config/jak1/jp/label_types.jsonc",
      "hacks_merge_file": "decompiler/config/jak1/pal/hacks.jsonc",
      "obj_file_name_map_file": "goal_src/jak1/build/all_objs_jak1_jp.json",
      "object_patches": {}
    },
    "jp": {
      "game_name": "jak1_jp",
      "expected_elf_name": "SCPS_150.21",
      "type_casts_merge_file": "decompiler/config/jak1/pal/type_casts.jsonc",
      "label_types_merge_file": "decompiler/config/jak1/jp/label_types.jsonc",
      "hacks_merge_file": "decompiler/config/jak1/pal/hacks.jsonc",
      "obj_file_name_map_file": "goal_src/jak1/build/all_objs_jak1_jp.json",
      "object_patches": {}
    },
    "pal": {
      "game_name": "jak1_pal",
      "expected_elf_name": "SCES_503.61",
      "is_pal": true,
      "type_casts_merge_file": "decompiler/config/jak1/pal/type_casts.jsonc",
      "label_types_merge_file": "decompiler/config/jak1/pal/label_types.jsonc",
      "hacks_merge_file": "decompiler/config/jak1/pal/hacks.jsonc",
      "obj_file_name_map_file": "goal_src/jak1/build/all_objs_jak1_pal.json",
      "object_patches": {}
    }
  }
}
