mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 11:26:18 -04:00
b4113dda67
Some checks failed
Build / 🖥️ Windows (push) Has been cancelled
Build / 🐧 Linux (push) Has been cancelled
Build / 🍎 MacOS (push) Has been cancelled
Lint / 📝 Formatting (push) Has been cancelled
Lint / 📝 Required Checks (push) Has been cancelled
Lint / 📝 Optional Checks (push) Has been cancelled
This centralizes the code that both `extractor` and the decompiler executes. In the past this code was partially-duplicated, meaning that the `extractor` could only do _some_ operations and not others (ie. could not extract the audio files). I also simplified the process to enable audio streaming in the configuration. This is to support a new feature in the launcher that allows you to enable these options for the decompiler: ![image](https://github.com/open-goal/jak-project/assets/13153231/8e6c20a1-8b5b-46f0-bceb-7644f713989f)
208 lines
7.6 KiB
Plaintext
208 lines
7.6 KiB
Plaintext
{
|
|
"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": {}
|
|
}
|
|
}
|
|
}
|