PAL jak 1 decompiler profile (#891)

* [decompiler] pal "support"

* inoffensively add some PAL-updated types

* fixes!

* clarify some things for windows

* Update README.md

* dummy

* config fixes

* dummy
This commit is contained in:
ManDude 2021-10-15 23:17:51 +01:00 committed by GitHub
parent 3a1c9eaf75
commit bacf9fd130
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 12768 additions and 13 deletions

View File

@ -76,6 +76,13 @@
"name" : "Run - Decompiler - Jak 1",
"args" : [ "${workspaceRoot}/decompiler/config/jak1_ntsc_black_label.jsonc", "${workspaceRoot}/iso_data/jak1", "${workspaceRoot}/decompiler_out/jak1"]
},
{
"type" : "default",
"project" : "CMakeLists.txt",
"projectTarget" : "decompiler.exe (bin\\decompiler.exe)",
"name" : "Run - Decompiler - Jak 1 PAL",
"args" : [ "${workspaceRoot}/decompiler/config/jak1_pal.jsonc", "${workspaceRoot}/iso_data/jak1pal", "${workspaceRoot}/decompiler_out/jak1pal"]
},
{
"type" : "default",
"project" : "CMakeLists.txt",

View File

@ -31,7 +31,7 @@ if(UNIX)
-fdiagnostics-color=always")
else()
set(CMAKE_CXX_FLAGS "/EHsc")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:10000000")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:16000000,16384")
endif(UNIX)
if(WIN32)

View File

@ -185,7 +185,7 @@ Place a copy of the game's files in `iso_data`, then run the decompiler with the
Run the OpenGOAL compiler `build/goalc/goalc`. Enter `(mi)` to build the `"iso"` target, which contains everything we have so far.
### Run Game
In a separate terminal, start the runtime with `build/game/gk -fakeiso -debug`. Then, in the OpenGOAL window, run `(lt)` to connect, `(lg)` to load the game engine `(test-play)` to start the game engine. If it all works right, it will look something like this:
In a separate terminal, start the runtime with `build/game/gk -fakeiso -debug`. Then, in the OpenGOAL window, run `(mi)` to create the data for the game and give the REPL information for running code, `(lt)` to connect, `(lg)` to load the game engine and `(test-play)` to start the game engine. If it all works right, it will look something like this:
```
g > (lt)
[Listener] Socket connected established! (took 0 tries). Waiting for version...
@ -210,7 +210,7 @@ There are four main components to the project.
The first is `goalc`, which is a GOAL compiler for x86-64. Our implementation of GOAL is called OpenGOAL. All of the compiler source code is in `goalc`. To run the compiler on Linux, there is a script `gc.sh`. The compiler is controlled through a prompt which can be used to enter commands to compile, connect to a running GOAL program for interaction, run the OpenGOAL debugger, or, if you are connected to a running GOAL program, can be used as a REPL to run code interactively. In addition to compiling code files, the compiler has features to pack and build data files.
The second component to the project is the decompiler. You must have a copy of the PS2 game and place all files from the DVD into the `iso_data` folder. Then run `decomp.sh` to run the decompiler. The decompile will extract assets to the `assets` folder. These assets will be used by the compiler when building the port. The decompiler will output code and other data intended to be inspected by humans in the `decompiler_out` folder. Stuff in this folder will not be used by the compiler.
The second component to the project is the decompiler. You must have a copy of the PS2 game and place all files from the DVD into the `iso_data` folder. Then run `decomp.sh` (Linux) to run the decompiler. For Windows, it is the `decomp-jak1.bat` file, and it wants your game's DVD files in a `jak1` folder inside `iso_data`. The decompile will extract assets to the `assets` folder. These assets will be used by the compiler when building the port, and you may want to turn asset extraction off after running it once. The decompiler will output code and other data intended to be inspected by humans in the `decompiler_out` folder. Stuff in this folder will not be used by the compiler.
The third is the game source code, written in OpenGOAL. This is located in `goal_src`. All GOAL and GOOS code should be in this folder. Right now most of this is placeholders, but you can take a look at `kernel/gcommon.gc` or `goal-lib.gc` to see some in-progress source code.
@ -278,20 +278,20 @@ The final component is the "runtime", located in `game`. This is the part of the
- `iso`: Final outputs that are used by the game.
- `obj`: Object files generated by the compiler.
- `resources`: To be removed. Contains fake versions of some files required to get things booting.
- `scripts`: Utility scripts.
- `scripts`: Utility scripts. Windows-specific batch files are in a `batch` folder while Unix shell scripts are in a `shell` folder.
- `test`: Unit tests (run on GitHub Actions)
- `third-party`: Third party libraries
- CMake Code Coverage. For code coverage statistics on GitHub builds
- `fmt`. String formatting library
- `googletest`: Test framework
- `inja`: templating library used for generating test code for compiler tests
- `minilzo`: decompression code for Jak 2 and later DGOs
- `lzokay`: decompression code for Jak 2 and later DGOs
- `mman`: Windows library used to emulate `mmap` on Linux
- `run-clang-format`: Utility to check and enforce code formatting
- `run-clang-tidy`
- `zydis`: x86-64 disassembler used in the OpenGOAL debugger
- `json`: A JSON library
- `replxx`: Used for the REPL input. Support history and useful editing shortcuts.
- `replxx`: Used for the REPL input. Supports history and useful editing shortcuts.
- `svpng`: Save a PNG file

View File

@ -213,8 +213,20 @@ void ObjectFileDB::get_objs_from_dgo(const std::string& filename, const Config&
// get all obj files...
for (uint32_t i = 0; i < header.object_count; i++) {
auto obj_header = reader.read<DgoHeader>();
assert(reader.bytes_left() >= obj_header.object_count);
assert_string_empty_after(obj_header.name, 60);
if (i == header.object_count - 1) {
if (reader.bytes_left() == obj_header.object_count - 0x30) {
if (config.is_pal) {
lg::warn("Skipping {} because it is a broken PAL object", obj_header.name);
reader.ffwd(reader.bytes_left());
continue;
} else {
assert(false);
}
}
} else {
assert(reader.bytes_left() >= obj_header.object_count);
}
if (std::string(obj_header.name).find("-ag") != std::string::npos) {
lg::error(

View File

@ -125,6 +125,7 @@ class ObjectFileDB {
assert(obj_files_by_name.size() == obj_file_order.size());
for (const auto& name : obj_file_order) {
for (auto& obj : obj_files_by_name.at(name)) {
// lg::info("{}...", name);
f(obj);
}
}

View File

@ -54,6 +54,7 @@ Config read_config_file(const std::string& path_to_config_file) {
config.dump_objs = cfg.at("dump_objs").get<bool>();
config.print_cfgs = cfg.at("print_cfgs").get<bool>();
config.generate_symbol_definition_map = cfg.at("generate_symbol_definition_map").get<bool>();
config.is_pal = cfg.at("is_pal").get<bool>();
auto allowed = cfg.at("allowed_objects").get<std::vector<std::string>>();
for (const auto& x : allowed) {

View File

@ -106,6 +106,8 @@ struct Config {
bool generate_symbol_definition_map = false;
bool is_pal = false;
std::unordered_set<std::string> allowed_objects;
std::unordered_set<std::string> banned_objects;
std::unordered_map<std::string, std::unordered_map<int, std::vector<RegisterTypeCast>>>

View File

@ -593,6 +593,7 @@
(shutdown)
(list-sounds)
(unload-music)
(set-fps)
)
;; - Enums
@ -1058,7 +1059,7 @@
(ogre-end #x600)
(ogre-buzzer #x601)
(ogre-boss #x603)
(assistant-voicebox-intro-ogre-race #x605)
(sidekick-speech-hint-ogre-race #x61c)
@ -2887,6 +2888,14 @@
:flag-assert #x900000004
)
(deftype sound-rpc-set-fps (sound-rpc-cmd)
((fps uint8 :offset-assert 4)
)
:method-count-assert 9
:size-assert #x5
:flag-assert #x900000005
)
(deftype sound-rpc-list-sounds (sound-rpc-cmd)
()
:method-count-assert 9
@ -2922,6 +2931,7 @@
(set-reverb sound-rpc-set-reverb :offset 0)
(set-ear-trans sound-rpc-set-ear-trans :offset 0)
(set-flava sound-rpc-set-flava :offset 0)
(set-fps sound-rpc-set-fps :offset 0)
(shutdown sound-rpc-shutdown :offset 0)
(list-sounds sound-rpc-list-sounds :offset 0)
(unload-music sound-rpc-unload-music :offset 0)
@ -11750,11 +11760,12 @@
(fp-hud uint64 :offset-assert 560)
(no-load-wait uint64 :offset-assert 568)
(no-look-around-wait uint64 :offset-assert 576)
;;(burn-proc handle :offset-assert 584) ;; PAL only
)
:heap-base #x1e0
:method-count-assert 21
:size-assert #x248
:flag-assert #x1501e00248
:size-assert #x248 ;;#x250
:flag-assert #x1501e00248 ;;#x1501e00250
;; inherited inspect of process-drawable
(:methods
(dummy-20 (_type_ collide-cache) none 20)
@ -13488,7 +13499,7 @@
(defenum sp-field-id
:type uint16
(misc-fields-start 0)
(spt-texture 1)
(spt-anim 2)
@ -13616,6 +13627,7 @@
(bit1 1)
(start-dead 2)
(launch-asap 3)
(bit6 6)
)
(deftype sparticle-group-item (structure)
@ -15186,6 +15198,7 @@
(define-extern sound-set-sound-falloff (function sound-name int int int int))
(define-extern sound-set-flava (function uint int))
(define-extern sound-volume-off (function int))
(define-extern sound-set-fps (function uint int))
(define-extern show-iop-info (function dma-buffer int))
(define-extern show-iop-memory (function dma-buffer int))
(define-extern make-sqrt-table (function int))
@ -20021,6 +20034,7 @@
(define-extern *master-exit* symbol)
(define-extern *last-master-mode* symbol)
(define-extern *screen-filter* screen-filter)
(define-extern *first-boot* symbol) ;; PAL
;; - Unknowns

View File

@ -44,7 +44,7 @@
// generate the symbol_map.json file.
// this is a guess at where each symbol is first defined/used.
"generate_symbol_definition_map": true,
"generate_symbol_definition_map": false,
// debug option for instruction decoder
"write_hex_near_instructions": false,
@ -60,6 +60,9 @@
// 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
////////////////////////////

View File

@ -263,6 +263,7 @@
"audio_dir_file_name": "",
"streamed_audio_file_names": [
"VAGWAD.ENG"
"VAGWAD.ENG",
"VAGWAD.JAP"
]
}

View File

@ -0,0 +1,81 @@
{
"game_version": 1,
// 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": 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": false,
// unpack game text to assets folder
"process_game_text": false,
// unpack game count to assets folder
"process_game_count": false,
///////////////////////////
// WEIRD OPTIONS
///////////////////////////
// these options are used rarely and should usually be left at false
// output a file type_defs.gc which is used for the types part of all-types.gc
"regenerate_all_types": false,
// generate the symbol_map.json file.
// this is a guess at where each symbol is first defined/used.
"generate_symbol_definition_map": 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": false,
// 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": true,
////////////////////////////
// CONFIG FILES
////////////////////////////
"type_casts_file": "decompiler/config/jak1_pal/type_casts.jsonc",
"anonymous_function_types_file": "decompiler/config/jak1_pal/anonymous_function_types.jsonc",
"var_names_file": "decompiler/config/jak1_pal/var_names.jsonc",
"label_types_file": "decompiler/config/jak1_pal/label_types.jsonc",
"stack_structures_file": "decompiler/config/jak1_pal/stack_structures.jsonc",
"hacks_file": "decompiler/config/jak1_pal/hacks.jsonc",
"inputs_file": "decompiler/config/jak1_pal/inputs.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": ""
}

View File

@ -0,0 +1,765 @@
{
"gkernel": [
[16, "(function process symbol)"],
[22, "(function process symbol)"],
[25, "(function process symbol)"],
[28, "(function process symbol)"],
[30, "(function process symbol)"],
[32, "(function process symbol)"]
],
"hud": [
[10, "(function none :behavior hud)"]
],
"main": [[4, "(function none :behavior process)"]],
"process-drawable": [[29, "(function string symbol)"]],
"task-control": [
[9, "(function task-control symbol)"],
[10, "(function task-control symbol)"],
[11, "(function task-control symbol)"],
[12, "(function task-control symbol)"],
[13, "(function task-control symbol)"],
[14, "(function task-control symbol)"],
[15, "(function task-control symbol)"],
[16, "(function task-control symbol)"],
[17, "(function task-control symbol)"],
[18, "(function task-control symbol)"],
[19, "(function task-control symbol)"],
[20, "(function task-control symbol)"],
[21, "(function task-control symbol)"],
[22, "(function task-control symbol)"],
[23, "(function task-control symbol)"],
[24, "(function task-control symbol)"],
[25, "(function task-control symbol)"],
[26, "(function task-control symbol)"],
[27, "(function task-control symbol)"],
[28, "(function task-control symbol)"],
[29, "(function task-control symbol)"],
[30, "(function task-control symbol)"],
[31, "(function task-control symbol)"],
[32, "(function task-control symbol)"],
[33, "(function task-control symbol)"],
[34, "(function task-control symbol)"],
[35, "(function task-control symbol)"],
[36, "(function task-control symbol)"],
[37, "(function task-control symbol)"],
[38, "(function task-control symbol)"],
[39, "(function task-control symbol)"],
[40, "(function task-control symbol)"],
[41, "(function task-control symbol)"],
[42, "(function task-control symbol)"],
[43, "(function task-control symbol)"],
[44, "(function task-control symbol)"],
[45, "(function task-control symbol)"],
[46, "(function task-control symbol)"],
[47, "(function task-control symbol)"],
[48, "(function task-control symbol)"],
[49, "(function task-control symbol)"],
[50, "(function task-control symbol)"],
[51, "(function task-control symbol)"],
[52, "(function task-control symbol)"],
[53, "(function task-control symbol)"],
[54, "(function task-control symbol)"],
[55, "(function task-control symbol)"],
[56, "(function task-control symbol)"],
[57, "(function task-control symbol)"],
[58, "(function task-control symbol)"],
[59, "(function task-control symbol)"],
[60, "(function task-control symbol)"],
[61, "(function task-control symbol)"],
[62, "(function task-control symbol)"],
[63, "(function task-control symbol)"],
[64, "(function task-control symbol)"],
[65, "(function task-control symbol)"],
[66, "(function task-control symbol)"],
[67, "(function task-control symbol)"],
[68, "(function task-control symbol)"],
[69, "(function task-control symbol)"],
[70, "(function task-control symbol)"],
[71, "(function task-control symbol)"],
[72, "(function task-control symbol)"],
[73, "(function task-control symbol)"],
[74, "(function task-control symbol)"],
[75, "(function task-control symbol)"],
[76, "(function task-control symbol)"],
[77, "(function task-control symbol)"],
[78, "(function task-control symbol)"],
[79, "(function task-control symbol)"],
[80, "(function task-control symbol)"],
[81, "(function task-control symbol)"],
[82, "(function task-control symbol)"],
[83, "(function task-control symbol)"],
[84, "(function task-control symbol)"],
[85, "(function task-control symbol)"],
[86, "(function task-control symbol)"],
[87, "(function task-control symbol)"],
[88, "(function task-control symbol)"],
[89, "(function task-control symbol)"],
[90, "(function task-control symbol)"],
[91, "(function task-control symbol)"],
[92, "(function task-control symbol)"],
[93, "(function task-control symbol)"],
[94, "(function task-control symbol)"],
[95, "(function task-control symbol)"],
[96, "(function task-control symbol)"],
[97, "(function task-control symbol)"],
[98, "(function task-control symbol)"],
[99, "(function task-control symbol)"],
[100, "(function task-control symbol)"],
[101, "(function task-control symbol)"],
[102, "(function task-control symbol)"],
[103, "(function task-control symbol)"],
[104, "(function task-control symbol)"],
[105, "(function task-control symbol)"],
[106, "(function task-control symbol)"],
[107, "(function task-control symbol)"],
[108, "(function task-control symbol)"],
[109, "(function task-control symbol)"],
[110, "(function task-control symbol)"],
[111, "(function task-control symbol)"],
[112, "(function task-control symbol)"],
[113, "(function task-control symbol)"],
[114, "(function task-control symbol)"],
[115, "(function task-control symbol)"],
[116, "(function task-control symbol)"],
[117, "(function task-control symbol)"],
[118, "(function task-control symbol)"],
[119, "(function task-control symbol)"],
[120, "(function task-control symbol)"],
[121, "(function task-control symbol)"],
[122, "(function task-control symbol)"],
[123, "(function task-control symbol)"],
[124, "(function task-control symbol)"],
[125, "(function task-control symbol)"],
[126, "(function task-control symbol)"],
[127, "(function task-control symbol)"],
[128, "(function task-control symbol)"],
[129, "(function task-control symbol)"],
[130, "(function task-control symbol)"],
[131, "(function task-control symbol)"],
[132, "(function task-control symbol)"],
[133, "(function task-control symbol)"],
[134, "(function task-control symbol)"],
[135, "(function task-control symbol)"],
[136, "(function task-control symbol)"],
[137, "(function task-control symbol)"],
[138, "(function task-control symbol)"],
[139, "(function task-control symbol)"],
[140, "(function task-control symbol)"],
[141, "(function task-control symbol)"],
[142, "(function task-control symbol)"],
[143, "(function task-control symbol)"],
[144, "(function task-control symbol)"],
[145, "(function task-control symbol)"],
[146, "(function task-control symbol)"],
[147, "(function task-control symbol)"],
[148, "(function task-control symbol)"],
[149, "(function task-control symbol)"],
[150, "(function task-control symbol)"],
[151, "(function task-control symbol)"],
[152, "(function task-control symbol)"],
[153, "(function task-control symbol)"],
[154, "(function task-control symbol)"],
[155, "(function task-control symbol)"],
[156, "(function task-control symbol)"],
[157, "(function task-control symbol)"],
[158, "(function task-control symbol)"],
[159, "(function task-control symbol)"],
[160, "(function task-control symbol)"],
[161, "(function task-control symbol)"],
[162, "(function task-control symbol)"],
[163, "(function task-control symbol)"],
[164, "(function task-control symbol)"],
[165, "(function task-control symbol)"],
[166, "(function task-control symbol)"],
[167, "(function task-control symbol)"],
[168, "(function task-control symbol)"],
[169, "(function task-control symbol)"],
[170, "(function task-control symbol)"],
[171, "(function task-control symbol)"],
[172, "(function task-control symbol)"],
[173, "(function task-control symbol)"],
[174, "(function task-control symbol)"],
[175, "(function task-control symbol)"],
[176, "(function task-control symbol)"],
[177, "(function task-control symbol)"],
[178, "(function task-control symbol)"],
[179, "(function task-control symbol)"],
[180, "(function task-control symbol)"],
[181, "(function task-control symbol)"],
[182, "(function task-control symbol)"],
[183, "(function task-control symbol)"],
[184, "(function task-control symbol)"],
[185, "(function task-control symbol)"],
[186, "(function task-control symbol)"],
[187, "(function task-control symbol)"],
[188, "(function task-control symbol)"],
[189, "(function task-control symbol)"],
[190, "(function task-control symbol)"],
[191, "(function task-control symbol)"],
[192, "(function task-control symbol)"],
[193, "(function task-control symbol)"],
[194, "(function task-control symbol)"],
[195, "(function task-control symbol)"],
[196, "(function task-control symbol)"],
[197, "(function task-control symbol)"],
[198, "(function task-control symbol)"],
[199, "(function task-control symbol)"],
[200, "(function task-control symbol)"],
[201, "(function task-control symbol)"],
[202, "(function task-control symbol)"],
[203, "(function task-control symbol)"],
[204, "(function task-control symbol)"],
[205, "(function task-control symbol)"],
[206, "(function task-control symbol)"],
[207, "(function task-control symbol)"],
[208, "(function task-control symbol)"],
[209, "(function task-control symbol)"],
[210, "(function task-control symbol)"],
[211, "(function task-control symbol)"],
[212, "(function task-control symbol)"],
[213, "(function task-control symbol)"],
[214, "(function task-control symbol)"],
[215, "(function task-control symbol)"],
[216, "(function task-control symbol)"],
[217, "(function task-control symbol)"],
[218, "(function task-control symbol)"],
[219, "(function task-control symbol)"],
[220, "(function task-control symbol)"],
[221, "(function task-control symbol)"],
[222, "(function task-control symbol)"],
[223, "(function task-control symbol)"],
[224, "(function task-control symbol)"],
[225, "(function task-control symbol)"],
[226, "(function task-control symbol)"],
[227, "(function task-control symbol)"],
[228, "(function task-control symbol)"],
[229, "(function task-control symbol)"],
[230, "(function task-control symbol)"],
[231, "(function task-control symbol)"],
[232, "(function task-control symbol)"],
[233, "(function task-control symbol)"],
[234, "(function task-control symbol)"],
[235, "(function task-control symbol)"],
[236, "(function task-control symbol)"],
[237, "(function task-control symbol)"],
[238, "(function task-control symbol)"],
[239, "(function task-control symbol)"],
[240, "(function task-control symbol)"],
[241, "(function task-control symbol)"],
[242, "(function task-control symbol)"],
[243, "(function task-control symbol)"],
[244, "(function task-control symbol)"],
[245, "(function task-control symbol)"],
[246, "(function task-control symbol)"],
[247, "(function task-control symbol)"],
[248, "(function task-control symbol)"],
[249, "(function task-control symbol)"],
[250, "(function task-control symbol)"],
[251, "(function task-control symbol)"],
[252, "(function task-control symbol)"],
[253, "(function task-control symbol)"],
[254, "(function task-control symbol)"],
[255, "(function task-control symbol)"],
[256, "(function task-control symbol)"],
[257, "(function task-control symbol)"],
[258, "(function task-control symbol)"],
[259, "(function task-control symbol)"],
[260, "(function task-control symbol)"],
[261, "(function task-control symbol)"],
[262, "(function task-control symbol)"],
[263, "(function task-control symbol)"],
[264, "(function task-control symbol)"],
[265, "(function task-control symbol)"],
[266, "(function task-control symbol)"],
[267, "(function task-control symbol)"],
[268, "(function task-control symbol)"],
[269, "(function task-control symbol)"],
[270, "(function task-control symbol)"],
[271, "(function task-control symbol)"],
[272, "(function task-control symbol)"],
[273, "(function task-control symbol)"],
[274, "(function task-control symbol)"],
[275, "(function task-control symbol)"],
[276, "(function task-control symbol)"],
[277, "(function task-control symbol)"],
[278, "(function task-control symbol)"],
[279, "(function task-control symbol)"],
[280, "(function task-control symbol)"],
[281, "(function task-control symbol)"],
[282, "(function task-control symbol)"],
[283, "(function task-control symbol)"],
[284, "(function task-control symbol)"],
[285, "(function task-control symbol)"],
[286, "(function task-control symbol)"],
[287, "(function task-control symbol)"],
[288, "(function task-control symbol)"],
[289, "(function task-control symbol)"],
[290, "(function task-control symbol)"],
[291, "(function task-control symbol)"],
[292, "(function task-control symbol)"],
[293, "(function task-control symbol)"],
[294, "(function task-control symbol)"],
[295, "(function task-control symbol)"],
[296, "(function task-control symbol)"],
[297, "(function task-control symbol)"],
[298, "(function task-control symbol)"],
[299, "(function task-control symbol)"],
[300, "(function task-control symbol)"],
[301, "(function task-control symbol)"],
[302, "(function task-control symbol)"],
[303, "(function task-control symbol)"],
[304, "(function task-control symbol)"],
[305, "(function task-control symbol)"],
[306, "(function task-control symbol)"],
[307, "(function task-control symbol)"],
[308, "(function task-control symbol)"],
[309, "(function task-control symbol)"],
[310, "(function task-control symbol)"],
[311, "(function task-control symbol)"],
[312, "(function task-control symbol)"],
[313, "(function task-control symbol)"],
[314, "(function task-control symbol)"],
[315, "(function task-control symbol)"],
[316, "(function task-control symbol)"],
[317, "(function task-control symbol)"],
[318, "(function task-control symbol)"],
[319, "(function task-control symbol)"],
[320, "(function task-control symbol)"],
[321, "(function task-control symbol)"],
[322, "(function task-control symbol)"],
[323, "(function task-control symbol)"],
[324, "(function task-control symbol)"],
[325, "(function task-control symbol)"],
[326, "(function task-control symbol)"],
[327, "(function task-control symbol)"],
[328, "(function task-control symbol)"],
[329, "(function task-control symbol)"],
[330, "(function task-control symbol)"],
[331, "(function task-control symbol)"],
[332, "(function task-control symbol)"],
[333, "(function task-control symbol)"],
[334, "(function task-control symbol)"],
[335, "(function task-control symbol)"],
[336, "(function task-control task-control symbol)"],
[337, "(function task-control task-control symbol)"],
[338, "(function task-control symbol)"],
[339, "(function task-control symbol)"],
[340, "(function task-control symbol)"],
[341, "(function task-control symbol)"],
[342, "(function task-control symbol)"],
[343, "(function task-control symbol)"],
[344, "(function task-control symbol)"],
[345, "(function task-control symbol)"],
[346, "(function task-control symbol)"],
[347, "(function task-control symbol)"],
[348, "(function task-control symbol)"],
[349, "(function task-control symbol)"],
[350, "(function task-control symbol)"],
[351, "(function task-control symbol)"],
[352, "(function task-control symbol)"],
[353, "(function task-control symbol)"],
[354, "(function task-control symbol)"],
[355, "(function task-control symbol)"],
[356, "(function task-control symbol)"],
[357, "(function task-control symbol)"],
[358, "(function task-control symbol)"],
[359, "(function task-control symbol)"],
[360, "(function task-control symbol)"],
[361, "(function task-control symbol)"],
[362, "(function task-control task-control symbol)"],
[363, "(function task-control task-control symbol)"],
[364, "(function task-control task-control symbol)"],
[365, "(function task-control task-control symbol)"],
[366, "(function task-control symbol)"],
[367, "(function task-control symbol)"],
[368, "(function task-control symbol)"],
[369, "(function task-control symbol)"],
[370, "(function task-control symbol)"],
[371, "(function task-control symbol)"],
[372, "(function task-control symbol)"],
[373, "(function task-control symbol)"],
[374, "(function task-control symbol)"],
[375, "(function task-control symbol)"],
[376, "(function task-control symbol)"],
[377, "(function task-control symbol)"],
[378, "(function task-control symbol)"],
[379, "(function task-control symbol)"],
[380, "(function task-control symbol)"],
[381, "(function task-control symbol)"],
[382, "(function task-control symbol)"],
[383, "(function task-control symbol)"],
[384, "(function task-control symbol)"],
[385, "(function task-control symbol)"],
[386, "(function task-control symbol)"],
[387, "(function task-control symbol)"],
[388, "(function task-control symbol)"],
[389, "(function task-control symbol)"],
[390, "(function task-control symbol)"],
[391, "(function task-control symbol)"],
[392, "(function task-control symbol)"],
[393, "(function task-control symbol)"],
[394, "(function task-control symbol)"],
[395, "(function task-control symbol)"],
[396, "(function task-control symbol)"],
[397, "(function task-control symbol)"],
[398, "(function task-control symbol)"],
[399, "(function task-control symbol)"],
[400, "(function task-control symbol)"],
[401, "(function task-control symbol)"],
[402, "(function task-control symbol)"],
[403, "(function task-control symbol)"],
[404, "(function task-control symbol)"],
[405, "(function task-control symbol)"],
[406, "(function task-control symbol)"],
[407, "(function task-control symbol)"],
[408, "(function task-control symbol)"],
[409, "(function task-control symbol)"],
[410, "(function task-control symbol)"],
[411, "(function task-control symbol)"],
[412, "(function task-control symbol)"],
[413, "(function task-control symbol)"],
[414, "(function task-control task-control symbol)"],
[415, "(function task-control task-control symbol)"],
[416, "(function task-control symbol)"],
[417, "(function task-control symbol)"],
[418, "(function task-control symbol)"],
[419, "(function task-control symbol)"],
[420, "(function task-control symbol)"],
[421, "(function task-control symbol)"],
[422, "(function task-control symbol)"],
[423, "(function task-control symbol)"],
[424, "(function task-control symbol)"],
[425, "(function task-control task-control symbol)"],
[426, "(function task-control task-control symbol)"],
[427, "(function task-control symbol)"],
[428, "(function task-control symbol)"],
[429, "(function task-control symbol)"],
[430, "(function task-control symbol)"],
[431, "(function task-control symbol)"],
[432, "(function task-control task-control symbol)"],
[433, "(function task-control task-control symbol)"],
[434, "(function task-control task-control symbol)"],
[435, "(function task-control symbol)"],
[436, "(function task-control task-control symbol)"],
[437, "(function task-control task-control symbol)"],
[438, "(function task-control task-control symbol)"],
[439, "(function task-control symbol)"],
[440, "(function task-control symbol)"],
[441, "(function task-control symbol)"],
[442, "(function task-control symbol)"],
[443, "(function task-control task-control symbol)"],
[444, "(function task-control task-control symbol)"],
[445, "(function task-control symbol)"],
[446, "(function task-control task-control symbol)"],
[447, "(function task-control task-control symbol)"],
[448, "(function task-control task-control symbol)"],
[449, "(function task-control symbol)"],
[450, "(function task-control symbol)"],
[451, "(function task-control symbol)"],
[452, "(function task-control symbol)"],
[453, "(function task-control task-control symbol)"],
[454, "(function task-control task-control symbol)"],
[455, "(function task-control symbol)"],
[456, "(function task-control task-control symbol)"],
[457, "(function task-control task-control symbol)"],
[458, "(function task-control task-control symbol)"],
[459, "(function task-control symbol)"],
[460, "(function task-control symbol)"],
[461, "(function task-control symbol)"],
[462, "(function task-control symbol)"],
[463, "(function task-control symbol)"],
[464, "(function task-control symbol)"],
[465, "(function task-control symbol)"],
[466, "(function task-control symbol)"],
[467, "(function task-control symbol)"],
[468, "(function task-control symbol)"],
[469, "(function task-control symbol)"],
[470, "(function task-control symbol)"],
[471, "(function task-control symbol)"],
[472, "(function task-control symbol)"],
[473, "(function task-control symbol)"],
[474, "(function task-control task-control symbol)"],
[475, "(function task-control task-control symbol)"],
[476, "(function task-control task-control symbol)"],
[477, "(function task-control task-control symbol)"],
[478, "(function task-control symbol)"],
[479, "(function task-control symbol)"],
[480, "(function task-control symbol)"],
[481, "(function task-control symbol)"],
[482, "(function task-control symbol)"],
[483, "(function task-control symbol)"],
[484, "(function task-control symbol)"],
[485, "(function task-control symbol)"],
[486, "(function task-control symbol)"],
[487, "(function task-control symbol)"],
[488, "(function task-control symbol)"],
[489, "(function task-control symbol)"],
[490, "(function task-control symbol)"],
[491, "(function task-control symbol)"],
[492, "(function task-control symbol)"],
[493, "(function task-control symbol)"],
[494, "(function task-control symbol)"],
[495, "(function task-control symbol)"],
[496, "(function task-control symbol)"]
],
"game-info": [
[17, "(function symbol symbol continue-point symbol none)"],
[6, "(function process-drawable none)"],
[7, "(function none :behavior process-drawable)"],
[8, "(function object)"]
],
"default-menu": [
[3, "(function none)"],
[4, "(function int int symbol)"], // TODO - first arg is ignored - i think there's a decomp bug here
[5, "(function int int symbol)"], // TODO - first arg is ignored
[6, "(function int int target)"], // TODO - first arg is ignored
[8, "(function int)"],
[9, "(function continue-point)"],
[10, "(function none)"],
[11, "(function object)"],
[12, "(function object)"],
[13, "(function object)"],
[14, "(function quaternion)"],
[15, "(function quaternion)"],
[16, "(function int int basic)"], // TODO - first arg is ignored
[17, "(function int)"],
[18, "(function int)"],
[19, "(function int)"],
[20, "(function none)"],
[21, "(function int int basic)"], // TODO - first arg is ignored
[22, "(function int int basic)"], // TODO - first arg is ignored
[23, "(function int int basic)"], // TODO - first arg is ignored
[24, "(function int int float float)"], // TODO - first arg is ignored
[25, "(function int int float float)"], // TODO - first arg is ignored
[26, "(function int int float float)"], // TODO - first arg is ignored
[27, "(function int int target)"], // TODO - first arg is ignored
[28, "(function none)"],
[29, "(function none)"],
[30, "(function none)"],
[31, "(function none)"],
[32, "(function none)"],
[33, "(function none)"],
[34, "(function int)"],
[35, "(function int)"],
[60, "(function debug-menu int float float object)"], // TODO - instance type blocking this one, not 100% sure about the debug-menu, but it has a string at offset 0
[61, "(function debug-menu int float float object)"], // TODO - instance type blocking this one, not 100% sure about the debug-menu, but it has a string at offset 0
[63, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[64, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[65, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[66, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[67, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[68, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[69, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[70, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[71, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[72, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[73, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[74, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[75, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[76, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[77, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[78, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[79, "(function symbol int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
[80, "(function object)"],
[81, "(function object)"],
[82, "(function symbol int float float none)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0)
[84, "(function symbol int none)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0)
[88, "(function debug-menu debug-menu symbol)"], // not 100% sure about the debug-menu, but it has a string at offset 0
[89, "(function debug-menu debug-menu symbol)"], // not 100% sure about the debug-menu, but it has a string at offset 0
[90, "(function debug-menu debug-menu symbol)"] // not 100% sure about the debug-menu, but it has a string at offset 0
],
"memory-usage": [
[3, "(function basic symbol)"],
[2, "(function process symbol)"]
],
"anim-tester": [
[11, "(function none :behavior anim-tester)"],
[12, "(function none :behavior anim-tester)"],
[13, "(function none :behavior anim-tester)"]
],
"cam-combiner": [
[1, "(function none :behavior camera-combiner)"],
[2, "(function basic int basic event-message-block object :behavior camera-combiner)"]
],
"title-obs": [
[0, "(function none)"]
],
"misty-warehouse": [
[3, "(function symbol none :behavior silostep)"],
[4, "(function none :behavior silostep)"],
[6, "(function none :behavior camera-tracker)"],
[7, "(function none :behavior silostep)"],
[8, "(function process int symbol event-message-block none :behavior silostep)"]
],
"rigid-body": [
[5, "(function none :behavior rigid-body-platform)"],
[6, "(function none :behavior rigid-body-platform)"],
[7, "(function none :behavior rigid-body-platform)"],
[8, "(function none :behavior rigid-body-platform)"]
],
"sunken-elevator": [
[3, "(function object :behavior sunken-elevator)"],
[4, "(function int :behavior sunken-elevator)"],
[5, "(function symbol :behavior sunken-elevator)"],
[6, "(function int :behavior sunken-elevator)"]
],
"nav-enemy": [
[8, "(function none :behavior nav-enemy)"],
[9, "(function none)"], // stubbed
[10, "(function uint :behavior nav-enemy)"],
[11, "(function object :behavior nav-enemy)"],
[12, "(function none :behavior nav-enemy)"],
[13, "(function object :behavior nav-enemy)"],
[14, "(function uint :behavior nav-enemy)"],
[15, "(function object :behavior nav-enemy)"],
[16, "(function object :behavior nav-enemy)"],
[17, "(function vector :behavior nav-enemy)"],
[19, "(function object :behavior nav-enemy)"],
[20, "(function uint :behavior nav-enemy)"],
[21, "(function none :behavior nav-enemy)"],
[28, "(function symbol :behavior nav-enemy)"],
[29, "(function symbol :behavior nav-enemy)"],
[30, "(function object :behavior nav-enemy)"],
[31, "(function object :behavior nav-enemy)"],
[32, "(function vector :behavior nav-enemy)"],
[33, "(function object :behavior nav-enemy)"],
[34, "(function object :behavior nav-enemy)"],
[35, "(function object :behavior nav-enemy)"],
[36, "(function uint :behavior nav-enemy)"],
[37, "(function object :behavior nav-enemy)"],
[38, "(function object :behavior nav-enemy)"],
[39, "(function uint :behavior nav-enemy)"],
[40, "(function vector :behavior nav-enemy)"],
[41, "(function none :behavior nav-enemy)"],
[42, "(function object :behavior nav-enemy)"],
[43, "(function uint :behavior nav-enemy)"],
[44, "(function none :behavior nav-enemy)"],
[45, "(function object :behavior nav-enemy)"],
[46, "(function none :behavior nav-enemy)"],
[50, "(function none :behavior nav-enemy)"],
[51, "(function object :behavior nav-enemy)"],
[52, "(function uint :behavior nav-enemy)"],
[54, "(function object :behavior nav-enemy)"],
[55, "(function uint :behavior nav-enemy)"],
[56, "(function none :behavior nav-enemy)"],
[57, "(function object :behavior nav-enemy)"],
[58, "(function uint :behavior nav-enemy)"],
[59, "(function uint :behavior nav-enemy)"],
[60, "(function none :behavior nav-enemy)"],
[61, "(function object :behavior nav-enemy)"],
[62, "(function int :behavior nav-enemy)"]
],
"oracle": [
[1, "(function sparticle-launch-group :behavior oracle)"],
[2, "(function sparticle-launch-group :behavior oracle)"],
[3, "(function none :behavior oracle)"]
],
"time-of-day": [
[10, "(function none)"],
[12, "(function sparticle-system sparticle-cpuinfo int none)"]
],
"basebutton": [
[1, "(function symbol :behavior target)"]
],
"entity": [
[10, "(function process-drawable none)"]
],
"beach-rocks": [
[2, "(function none :behavior beach-rock)"],
[3, "(function none :behavior beach-rock)"],
[4, "(function none :behavior beach-rock)"],
[5, "(function none :behavior beach-rock)"],
[6, "(function none :behavior beach-rock)"],
[7, "(function process int symbol event-message-block none :behavior beach-rock)"]
],
"projectiles": [
[27, "(function projectile int)"]
],
"sidekick-human": [
[7, "(function sparticle-launch-control :behavior sequenceC)"],
[15, "(function sparticle-launch-control :behavior sequenceB)"],
[16, "(function sparticle-launch-control :behavior sequenceB)"]
],
"demo-obs": [
[1, "(function target)"]
],
"final-door": [
[11, "(function final-door symbol)"],
[12, "(function final-door symbol)"]
],
"plat-eco": [
[4, "(function none :behavior plat-eco)"], // trans
[5, "(function int float :behavior plat-eco)"], // enter
[6, "(function none :behavior plat-eco)"], // post
[7, "(function handle none :behavior plat-eco)"], // code
[8, "(function none :behavior plat-eco)"], // trans
[9, "(function process int symbol event-message-block object :behavior plat-eco)"], // event
[10, "(function symbol :behavior plat-eco)"], // code
[11, "(function none :behavior plat-eco)"], // trans
[12, "(function int :behavior plat-eco)"], // enter
[13, "(function process int symbol event-message-block object :behavior plat-eco)"] // event
],
"plat-flip": [
[1, "(function none :behavior plat-flip)"], // code
[2, "(function process int symbol event-message-block object :behavior plat-flip)"] // event
],
"flying-lurker": [
[37, "(function uint :behavior manipy)"],
[12, "(function uint :behavior manipy)"],
[11, "(function none :behavior process)"]
],
"ambient": [
[29, "(function process int symbol event-message-block object :behavior level-hint)"]
],
"process-taskable": [
[46, "(function process-taskable symbol)"]
],
"fishermans-boat": [
[5, "(function none :behavior fishermans-boat)"],
[21, "(function none :behavior fishermans-boat)"],
[29, "(function none :behavior fishermans-boat)"]
],
"muse": [
[3, "(function none :behavior muse)"]
],
"relocate": [
[6, "(function sparticle-system sparticle-cpuinfo none)"]
],
"yakow": [
[29, "(function none)"]
],
"placeholder-do-not-add-below": []
}

View File

@ -0,0 +1,555 @@
{
////////////////////////////
// HACKS and ASM FUNCTIONS
////////////////////////////
"types_with_bad_inspect_methods": [
"engine",
"bsp-header",
"joint-anim-matrix",
"part-tracker"
],
"no_type_analysis_functions_by_name": [],
// this limits the number of cases in a cond. The first argument is the name of the function.
// the second argument is the name of the first condition in the cond. Use print_cfg to find it out.
// The third argument is the number of cases. If you set it too small it may fail to build the CFG.
"cond_with_else_max_lengths": [
["(method 20 res-lump)", "b0", 2],
["(method 11 res-lump)", "b0", 1],
["(method 12 res-lump)", "b0", 1]
],
// if a cond with an else case is being used a value in a place where it looks wrong
// you can add the function name to this list and it will more aggressively reject this rewrite.
"aggressively_reject_cond_to_value_rewrite": [
"(method 10 res-lump)",
"(method 11 res-lump)",
"(method 12 res-lump)",
"(method 7 texture-page)"
],
// this provides a hint to the decompiler that these functions will have a lot of inline assembly.
// currently it just leaves pcpyld as an asm op.
"hint_inline_assembly_functions": ["matrix-transpose!"],
"asm_functions_by_name": [
// gcommon
"quad-copy!",
// gkernel
"(method 11 cpu-thread)",
"throw",
"return-from-thread",
"return-from-thread-dead",
"reset-and-call",
"(method 10 cpu-thread)",
"(method 0 catch-frame)",
"throw-dispatch",
"set-to-run-bootstrap",
"run-function-in-process", // not asm, but it uses the stack.
// pskernel
"return-from-exception", // F: eret
"kernel-read-function", // F: delay slot tricks
"kernel-write-function", // F: delay slot tricks
"kernel-copy-function",
"kernel-check-hardwired-addresses",
// math
"rand-uint31-gen",
// bounding box
"(method 9 bounding-box)", // F: asm branching
"(method 14 bounding-box)",
// matrix
"(method 9 matrix)", // F: asm branching
"matrix-axis-sin-cos!", // F: asm branching
"matrix-axis-sin-cos-vu!",
// geometry
"circle-circle-xz-intersect", // F: asm branching
// trigonometry
"exp", // BUG: cfg is wrong.
"atan0", // P: manual use of stack
"sincos!", // P: manual use of stack
"sincos-rad!",
// dma-h
"dma-count-until-done", // F: asm branching
"dma-sync-with-count", // F: asm branching
"dma-send-no-scratch", // F: asm branching
"dma-sync-fast",
// dma
"symlink3", // F: asm branching
"symlink2", // F: asm branching
"dma-sync-hang",
// display
"vblank-handler", // F: weird asm for interrupt handler
"vif1-handler", // F: weird asm for interrupt handler
"vif1-handler-debug",
// vector
"vector=", // asm branching
// collide-mesh-h
"(method 11 collide-mesh-cache)",
// collide-func
"moving-sphere-triangle-intersect", // P: weird branching
"collide-do-primitives", // P: asm branching
// joint
"calc-animation-from-spr", // F: asm branching
"decompress-frame-data-pair-to-accumulator", // P: asm calling
"decompress-frame-data-to-accumulator", // P: asm calling
"decompress-fixed-data-to-accumulator", // P: asm calling
"normalize-frame-quaternions", // F: asm branching, return
"clear-frame-accumulator", // F: asm branching
"cspace<-parented-transformq-joint!",
// sprite
// merc-blend-shape
"setup-blerc-chains-for-one-fragment", // F: asm branching
"merc-dma-chain-to-spr", // F: asm branching
"blerc-a-fragment",
// ripple
"ripple-matrix-scale",
"ripple-apply-wave-table",
"ripple-create-wave-table",
"ripple-execute-init",
// bones
"draw-bones-hud",
"draw-bones",
"draw-bones-check-longest-edge-asm",
"draw-bones-merc",
"bones-mtx-calc-execute",
"bones-mtx-calc",
"texscroll-execute",
// generic-effect
"generic-debug-light-proc",
"generic-none-dma-wait",
"generic-copy-vtx-dclr-dtex",
"generic-light",
"generic-envmap-only-proc",
"generic-no-light",
"generic-no-light+envmap",
"generic-no-light-dproc",
"generic-no-light-dproc-only",
"generic-no-light-proc",
"generic-interp-dproc",
"generic-envmap-dproc",
"generic-prepare-dma-single",
"generic-prepare-dma-double",
"generic-envmap-proc",
"generic-light-proc",
"generic-dma-from-spr",
"upload-vu0-program",
// generic-merc
"generic-merc-execute-all",
"generic-merc-execute-asm",
"high-speed-reject",
"mercneric-convert",
"mercneric-bittable-asm",
"mercneric-shader-asm",
"mercneric-matrix-asm",
"generic-merc-init-asm",
// generic-tie
"generic-tie-convert",
"generic-tie-convert-proc",
"generic-tie-upload-next",
"generic-tie-decompress",
"generic-tie-dma-to-spad-sync",
// shadow-cpu
"shadow-execute",
"shadow-add-double-edges",
"shadow-add-double-tris",
"shadow-add-single-edges",
"shadow-add-facing-single-tris",
"shadow-add-verts",
"shadow-find-double-edges",
"shadow-find-facing-double-tris",
"shadow-find-single-edges",
"shadow-find-facing-single-tris",
"shadow-scissor-top",
"shadow-scissor-edges",
"shadow-calc-dual-verts",
// background
"background-upload-vu0",
// draw-node
"draw-node-cull",
// shrubbery
"test-func",
"draw-inline-array-instance-shrub",
// tfrag
"stats-tfrag-asm",
"draw-inline-array-tfrag-near",
"draw-inline-array-tfrag",
// tie-methods
"draw-inline-array-prototype-tie-near-asm",
"draw-inline-array-prototype-tie-asm",
"draw-inline-array-prototype-tie-generic-asm",
"draw-inline-array-instance-tie",
// sparticle-launcher
"sp-init-fields!",
// sparticle
"memcpy",
"sp-process-block-3d",
"sp-process-block-2d",
"sp-launch-particles-var",
"particle-adgif",
"sp-init-fields!",
// time-of-day
"time-of-day-interp-colors-scratch",
"time-of-day-interp-colors",
// sky-tng
"clip-polygon-against-negative-hyperplane",
"clip-polygon-against-positive-hyperplane",
"draw-large-polygon",
// load-boundary
"render-boundary-tri",
"render-boundary-quad",
"draw-boundary-polygon",
// collide-probe
"collide-probe-instance-tie",
"collide-probe-node",
// collide-mesh
"(method 10 collide-mesh)",
"(method 13 collide-mesh)",
"(method 9 collide-mesh-cache)",
"(method 15 collide-mesh)",
"(method 14 collide-mesh)",
"(method 11 collide-mesh)",
"(method 12 collide-mesh)",
// collide-edge-grab
"(method 13 collide-edge-work)",
"(method 17 collide-edge-work)",
"(method 15 collide-edge-work)",
"(method 16 collide-edge-work)",
"(method 9 edge-grab-info)", // maybe bug
"(method 18 collide-edge-work)",
"(method 10 collide-edge-hold-list)",
// collide-shape
"(method 15 collide-shape-prim-mesh)", // BUG:
"(method 15 collide-shape-prim-sphere)", // BUG:
"(method 16 collide-shape-prim)",
"(method 15 collide-shape-prim-group)",
"(method 45 collide-shape)",
"(method 28 collide-shape-prim-mesh)", // BUG:
"(method 29 collide-shape-prim-group)",
"(method 20 collide-shape-prim-group)",
"(method 19 collide-shape-prim-sphere)",
"(method 18 collide-shape-prim-sphere)",
"(method 23 collide-shape-prim-sphere)",
"(method 23 collide-shape-prim-mesh)", // BUG: maybe
"(method 24 collide-shape-prim)",
"(method 23 collide-shape-prim-group)",
"(method 42 collide-shape)",
// collide-shape-rider
"(method 35 collide-shape)",
// cam-master BUG
"master-is-hopeful-better?",
// cam-layout BUG
"cam-layout-save-cam-trans",
// process-drawable BUG
"cspace-inspect-tree", // BUG:
"process-drawable-birth-fuel-cell", // BUG:
"(method 19 process-drawable)",
// ambient
"ambient-inspect",
// generic-obs BUG
"camera-change-to",
// target BUG
"target-falling-anim-trans",
// target2 BUG
"(anon-function 33 target2)", // BUG:
"(anon-function 67 target2)", // BUG:
"look-for-points-of-interest",
// drawable-tree
"(method 16 drawable-tree)",
// collide-cache
"(method 10 collide-puss-work)",
"(method 9 collide-puss-work)",
"(method 19 collide-cache)",
"(method 10 collide-cache-prim)",
"(method 9 collide-cache-prim)",
"(method 30 collide-cache)",
"(method 13 collide-shape-prim-group)",
"(method 13 collide-shape-prim-sphere)",
"(method 13 collide-shape-prim-mesh)",
"(method 14 collide-shape-prim-group)",
"(method 14 collide-shape-prim-sphere)",
"(method 14 collide-shape-prim-mesh)",
"(method 12 collide-shape-prim-group)", // BUG: maybe
"(method 12 collide-shape-prim-sphere)",
"(method 12 collide-shape-prim-mesh)",
"(method 29 collide-cache)",
"(method 27 collide-cache)",
"(method 14 collide-cache)",
"(method 28 collide-cache)",
"(method 26 collide-cache)",
"(method 21 collide-cache)",
"(method 32 collide-cache)",
// memory-usage BUG
//"(method 14 level)",
// navigate BUG
"(method 32 nav-control)",
// collectables BUG
"add-blue-motion",
// ocean
"draw-large-polygon-ocean",
// ocean-vu0
"ocean-generate-verts",
"ocean-interp-wave",
// nav-enemy BUG
// "(anon-function 28 nav-enemy)",
// orb-cache BUG
"(method 27 orb-cache-top)",
// ropebridge BUG
"(method 27 ropebridge)",
// all unchecked and in level DGO code
"(anon-function 11 robotboss)",
"(anon-function 18 robotboss)",
"(anon-function 49 robotboss)",
"(anon-function 21 plant-boss)",
"(anon-function 10 ice-cube)",
"(anon-function 15 ice-cube)",
"(anon-function 45 lavatube-energy)",
"mistycannon-find-best-solution",
"target-flut-falling-anim-trans",
"kermit-check-to-hit-player?",
"(anon-function 6 title-obs)",
"(anon-function 36 mistycannon)",
"(anon-function 43 maincave-obs)",
"(anon-function 2 target-tube)",
"(anon-function 5 orbit-plat)",
"(anon-function 2 ogreboss)"
],
// these functions use pairs and the decompiler
// will be less picky about types related to pairs.
"pair_functions_by_name": [
"ref",
"last",
"member",
"nmember",
"assoc",
"assoce",
"append!",
"delete!",
"delete-car!",
"insert-cons!",
"sort",
"unload-package",
"(method 4 pair)",
"nassoc",
"nassoce",
"lookup-level-info",
"(method 21 level-group)",
"(method 12 level)",
"update-sound-banks",
"(method 16 level-group)",
"bg",
"(method 18 game-info)",
"debug-menu-context-default-selection",
"debug-menu-rebuild",
"debug-menu-func-decode",
"debug-menu-make-from-template",
"debug-menu-render",
"debug-menu-context-select-next-or-prev-item",
"debug-menu-context-select-new-item",
"debug-menu-send-msg",
"debug-menu-find-from-template",
"build-continue-menu",
"(method 8 process-tree)",
"(method 16 load-state)",
"(method 15 load-state)",
"build-continue-menu",
"entity-remap-names",
"(method 21 swamp-rat-nest-dummy-a)",
"(method 21 swamp-rat-nest-dummy-b)",
"(method 21 swamp-rat-nest-dummy-c)",
"(method 27 battlecontroller)"
],
// If format is used with the wrong number of arguments,
// it will often mess up the decompilation, as the decompiler assumes
// that they used the correct number. This will override the decompiler's
// automatic detection.
"bad_format_strings": {
"ERROR: dma tag has data in reserved bits ~X~%": 0,
"#<surface f0:~m f1:~f tf+:~f tf-:~f sf:~f tvv:~m": 5,
"ERROR<GMJ>: value of symbol ~A in task-controls is not a task-control~%": 0,
"~0K~10,'-S--~5,'-DK-of-~5,'-DK--~5,'-DK-of-~5,'-DK--": 5,
" bsp ~192H~5DK ~280Hdebug~456H~5DK~%": 2,
" bsp-leaf-vis-iop ~192H~5DK~%": 1,
" bsp-leaf-vis-adj ~192H~5DK~%": 1,
" level-code ~192H~5DK~%": 1,
" tfrag ~192H~5DK ~280Htfragment~456H~5DK~%": 2,
" tie-proto ~192H~5DK ~280Hsky~456H~5DK~%": 2,
" tie-instance ~192H~5DK ~280Htie-fragment~456H~5DK~%": 2,
" shrub-proto ~192H~5DK ~280Htie-near~456H~5DK~%": 2,
" shrub-instance ~192H~5DK ~280Hshrubbery~456H~5DK~%": 2,
" collision ~192H~5DK ~280Htie-generic~456H~5DK~%": 2,
" pris-geo ~192H~5DK ~280Hpris-fragment~456H~5DK~%": 2,
" pris-anim ~192H~5DK ~280Hpris-generic~456H~5DK~%": 2,
" textures ~192H~5DK ~280Htextures~456H~5DK~%": 2,
" entity ~192H~5DK~%": 2,
" misc ~192H~5DK ~280Hsprite~456H~5DK~%": 2,
"ERROR: <asg> ~A in spool anim loop for ~A ~D, but not loaded.~": 3,
"~0k~5d/~d ~6d/~d ~6d/~d ": 6,
"~0k~s~%": 1
},
"blocks_ending_in_asm_branch": {
"closest-pt-in-triangle": [17],
// this one is all asm branches
"circle-circle-xz-intersect": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14
],
"find-knot-span": [0, 1, 2, 3, 5, 6, 7, 8, 9],
"curve-evaluate!": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
"(method 9 texture-page-dir)": [4, 5],
"adgif-shader<-texture-with-update!": [0, 1],
"display-loop": [44, 49, 66, 99],
"load-game-text-info": [12, 13, 14, 18],
"real-main-draw-hook": [75, 77],
"(method 12 perf-stat)": [0],
"(method 11 perf-stat)": [0],
"raw-ray-sphere-intersect": [0, 1, 2, 3, 4, 5],
"ray-cylinder-intersect": [0, 1, 2, 3, 4, 5],
"ray-triangle-intersect": [0, 1, 2, 3, 4],
"bsp-camera-asm": [1, 2, 3],
"level-remap-texture": [2, 3, 4, 5, 6],
"start-perf-stat-collection": [26],
"end-perf-stat-collection": [0],
"sprite-draw-distorters": [4, 5],
"draw-string":[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189],
"get-string-length":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50],
"unpack-comp-rle":[1, 3, 5, 6],
"(method 16 level)":[ 1, 5, 13, 14, 15, 19, 26, 53],
"unpack-comp-huf":[2, 4, 5, 6, 7, 8, 9],
"blerc-execute":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33],
"(method 11 fact-info-target)":[42],
"(anon-function 9 game-save)":[3, 4, 5, 6, 7, 8],
//"(anon-function 9 game-save)":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],
"particle-adgif":[0, 1, 2, 3, 4, 5, 7],
"sp-launch-particles-var":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66],
"(method 11 sparticle-launch-control)": [ 27, 28, 35, 46, 48, 49, 77],
"upload-vis-bits":[0,1,2,3,4,5, 6]
},
// Sometimes the game might use format strings that are fetched dynamically,
// for example using the game text lookup method
// Add information about those format instructions here.
// e.g. "function-name":[[op, argc], [op, argc], ...]
// where "op" is the op number for the call to format.
"dynamic_format_arg_counts": {
"(method 35 progress)":[
[44, 1],
[92, 1]
],
"(method 49 progress)":[
[35, 1]
],
"(method 37 progress)":[
[41, 1]
],
"(method 38 progress)":[
[106, 1]
],
"(method 39 progress)":[
[56, 1],
[83, 1]
],
"(method 41 progress)":[
[73, 1]
],
"(method 42 progress)":[
[41, 1]
],
"(method 43 progress)":[
[51, 1],
[94, 1]
],
"":[]
},
"mips2c_functions_by_name":[
"sp-init-fields!",
"particle-adgif",
"sp-launch-particles-var",
"sp-process-block-2d",
"sp-process-block-3d"
]
}

View File

@ -0,0 +1,269 @@
{
//////////////////////
// INPUT FILES
//////////////////////
// input is GOAL object files, possibly in containers.
// most objects are part of CGO/DGO files (both go in dgo_names). This includes levels and the engine
// the DGOs will be processed in this order. Usually it's best to have KERNEL, ENGINE, then the levels when
// you want to run on the entire game.
"dgo_names": [
"CGO/KERNEL.CGO",
"CGO/ENGINE.CGO",
"CGO/GAME.CGO",
"CGO/ART.CGO",
"DGO/BEA.DGO",
"DGO/CIT.DGO",
"CGO/COMMON.CGO",
"DGO/DAR.DGO",
"DGO/DEM.DGO",
"DGO/FIN.DGO",
"DGO/INT.DGO",
"DGO/JUB.DGO",
"DGO/JUN.DGO",
"CGO/JUNGLE.CGO",
"CGO/L1.CGO",
"DGO/FIC.DGO",
"DGO/LAV.DGO",
"DGO/MAI.DGO",
"CGO/MAINCAVE.CGO",
"DGO/MIS.DGO",
"DGO/OGR.DGO",
"CGO/RACERP.CGO",
"DGO/ROB.DGO",
"DGO/ROL.DGO",
"DGO/SNO.DGO",
"DGO/SUB.DGO",
"DGO/SUN.DGO",
"CGO/SUNKEN.CGO",
"DGO/SWA.DGO",
"DGO/TIT.DGO",
"DGO/TRA.DGO",
"DGO/VI1.DGO",
"DGO/VI2.DGO",
"DGO/VI3.DGO",
"CGO/VILLAGEP.CGO",
"CGO/WATER-AN.CGO"
],
// some objects are part of STR files (streaming data). In Jak 1 this is just animations
"str_file_names": [
"STR/BAFCELL.STR",
"STR/SWTE4.STR",
"STR/SWTE3.STR",
"STR/SWTE2.STR",
"STR/SWTE1.STR",
"STR/SNRBSBFC.STR",
"STR/SNRBIPFC.STR",
"STR/SNRBICFC.STR",
"STR/ORR3.STR",
"STR/ORR2.STR",
"STR/MICANNON.STR",
"STR/BECANNON.STR",
"STR/SWTS4.STR",
"STR/SWTS3.STR",
"STR/SWTS2.STR",
"STR/SW4.STR",
"STR/SW3.STR",
"STR/SW2.STR",
"STR/SWTS1.STR",
"STR/ORREYE.STR",
"STR/ORLEYE.STR",
"STR/SW1.STR",
"STR/MAGFCELL.STR",
"STR/GNFCELL.STR",
"STR/ORRE3.STR",
"STR/ORRE2.STR",
"STR/ORRE1.STR",
"STR/ORR1.STR",
"STR/ORLE3.STR",
"STR/ORLE2.STR",
"STR/ORI3.STR",
"STR/ORI2.STR",
"STR/DE0202.STR",
"STR/RARSANIM.STR",
"STR/RARANIM.STR",
"STR/EIFISH.STR",
"STR/ORLE1.STR",
"STR/SWTEF4.STR",
"STR/SWTEF3.STR",
"STR/SWTEF2.STR",
"STR/SWTEF1.STR",
"STR/ORI1.STR",
"STR/EIICE.STR",
"STR/EIA3.STR",
"STR/DE0191.STR",
"STR/DE0186.STR",
"STR/DE0187.STR",
"STR/EIA4.STR",
"STR/EIPOLE.STR",
"STR/RARASECO.STR",
"STR/RARA2.STR",
"STR/DE0184.STR",
"STR/DE0181.STR",
"STR/PESEXT.STR",
"STR/DE0195.STR",
"STR/EIA2.STR",
"STR/FIR1.STR",
"STR/DE0182.STR",
"STR/BIR1.STR",
"STR/HAPOPEN.STR",
"STR/EITUBE.STR",
"STR/SCR1.STR",
"STR/DE0197.STR",
"STR/DE0193.STR",
"STR/EIA1.STR",
"STR/FAR2.STR",
"STR/FAR1.STR",
"STR/DE0199.STR",
"STR/GERMONEY.STR",
"STR/BIRESOLU.STR",
"STR/GARMONEY.STR",
"STR/BIADVENT.STR",
"STR/FUCRV1.STR",
"STR/BIREJECT.STR",
"STR/WAR1.STR",
"STR/BIACCEPT.STR",
"STR/SA3R1DEC.STR",
"STR/ASR1GENE.STR",
"STR/FIREJECT.STR",
"STR/GARRACE.STR",
"STR/GEZMONEY.STR",
"STR/LRFALLIN.STR",
"STR/EXR2.STR",
"STR/GERMOLES.STR",
"STR/FUCVICTO.STR",
"STR/MIR1ORBS.STR",
"STR/SA3R1RAM.STR",
"STR/AS2R1FLU.STR",
"STR/FUCV2.STR",
"STR/MIR1GNAW.STR",
"STR/GAZMONEY.STR",
"STR/AS3REMIN.STR",
"STR/SIHISA.STR",
"STR/FIACCEPT.STR",
"STR/FIWECO.STR",
"STR/FARESOLU.STR",
"STR/ASR1RBIK.STR",
"STR/MARDONAT.STR",
"STR/GAZRACE.STR",
"STR/FUCFV1.STR",
"STR/FUCV5.STR",
"STR/SABR1CDU.STR",
"STR/FLLINTRO.STR",
"STR/SAR1ECOR.STR",
"STR/AS2R1ROB.STR",
"STR/MIR2ORBS.STR",
"STR/MARBEAMS.STR",
"STR/LOI2.STR",
"STR/SAR1GENE.STR",
"STR/BILR1.STR",
"STR/AS2R1ROO.STR",
"STR/ASR1BESW.STR",
"STR/LOLOOP.STR",
"STR/FAINTROD.STR",
"STR/GEZMOLES.STR",
"STR/V1IN.STR",
"STR/FUCV4.STR",
"STR/SAIECORO.STR",
"STR/MIR1SWIT.STR",
"STR/LOINTRO.STR",
"STR/SAR2GENE.STR",
"STR/MUVICTOR.STR",
"STR/SAR1MCAN.STR",
"STR/FUCV7.STR",
"STR/MIZ1ORBS.STR",
"STR/FUCV8.STR",
"STR/BILR2.STR",
"STR/FUCV6.STR",
"STR/FUCV3.STR",
"STR/PLLBLOWU.STR",
"STR/PLBMAIN.STR",
"STR/WARESOLU.STR",
"STR/EIRACER.STR",
"STR/MAZDONAT.STR",
"STR/MAZBEAMS.STR",
"STR/MIISWITC.STR",
"STR/FIBRTVIL.STR",
"STR/FIBRTMIS.STR",
"STR/SABR1PAR.STR",
"STR/NDINTRO.STR",
"STR/GORDOWN.STR",
"STR/GORUP.STR",
"STR/SA3IRAMS.STR",
"STR/YERESOLU.STR",
"STR/EIFLUT.STR",
"STR/GRSDSACR.STR",
"STR/EXR1.STR",
"STR/SCRESOLU.STR",
"STR/FIRESOLU.STR",
"STR/SIHITEST.STR",
"STR/GAI1.STR",
"STR/EXRESOLU.STR",
"STR/MIZ2ORBS.STR",
"STR/ASIRBIKE.STR",
"STR/GRSOBBEC.STR",
"STR/BIINTROD.STR",
"STR/GRSOBBNC.STR",
"STR/AS2IROBB.STR",
"STR/GRSOBFIN.STR",
"STR/RERESOLU.STR",
"STR/BLRESOLU.STR",
"STR/SABIPARM.STR",
"STR/EVMEND.STR",
"STR/AS2RESOL.STR",
"STR/SAIMCANN.STR",
"STR/MIIGNAWE.STR",
"STR/GRSOBBA.STR",
"STR/GRSINTRO.STR",
"STR/SAISE.STR",
"STR/SA3IDECO.STR",
"STR/ASFRESOL.STR",
"STR/EXINTROD.STR",
"STR/BILINTRO.STR",
"STR/FIINTROD.STR",
"STR/MAINTROD.STR",
"STR/SCINTROD.STR",
"STR/AS2IFLUT.STR",
"STR/ASLERESO.STR",
"STR/ASLSRESO.STR",
"STR/AS2IROOM.STR",
"STR/GRSRESOL.STR",
"STR/SABICDUS.STR",
"STR/SIHISB.STR",
"STR/ASIBESWI.STR",
"STR/BILBRESO.STR",
"STR/FIBRT1AL.STR",
"STR/AS2INTRO.STR",
"STR/GEINTROD.STR",
"STR/SAISD1.STR",
"STR/SAISA.STR",
"STR/SIHISC.STR",
"STR/MIIORBS.STR",
"STR/WAINTROD.STR",
"STR/SAISD2.STR",
"STR/GRSOPREB.STR",
"STR/GRSOBBB.STR",
"STR/SA3INTRO.STR"
],
// some objects are directly stored as files on the DVD. This is just text files.
"object_file_names": [
"TEXT/0COMMON.TXT",
"TEXT/1COMMON.TXT",
"TEXT/2COMMON.TXT",
"TEXT/3COMMON.TXT",
"TEXT/4COMMON.TXT",
"TEXT/5COMMON.TXT",
"TEXT/6COMMON.TXT"
],
// uncomment the next line to extract audio to wave files.
//"audio_dir_file_name": "jak1/VAG",
"audio_dir_file_name": "",
"streamed_audio_file_names": [
"VAGWAD.ENG",
"VAGWAD.JAP"
]
}

View File

@ -0,0 +1,808 @@
// the format is [label_name, type, special]
// if the type is pointer or inline array, special should be an integer size.
// if the type is a value type (like rgba), special should be true.
{
"vector-h": [
["L32", "vector"],
["L31", "vector"],
["L30", "vector"],
["L29", "vector"],
["L28", "vector"],
["L27", "vector"],
["L26", "vector"]
],
"quaternion-h": [["L1", "quaternion"]],
"quaternion": [
["L67", "vector"],
["L68", "vector"],
["L69", "vector"],
["L70", "vector"],
["L71", "vector"],
["L72", "vector"]
],
"geometry": [
["L112", "(pointer float)", 4]
],
"trigonometry": [
["L98", "(pointer float)", 32],
["L99", "(pointer float)", 32],
["L102", "vector"],
["L101", "vector"],
["L100", "vector"]
],
"video-h": [["L1", "video-parms"]],
"font-h": [
["L18", "matrix"],
["L17", "font-work"]
],
"display": [
["L76", "(pointer uint32)", 2]
],
"capture": [
["L12", "gs-store-image-packet"]
],
"main-h": [["L1", "frame-stats"]],
"ocean-trans-tables": [
["L1", "(inline-array vector)", 4],
["L2", "(pointer float)", 160],
["L3", "(pointer float)", 100],
["L4", "(pointer float)", 72],
["L5", "(pointer float)", 72],
["L6", "(pointer float)", 72],
["L7", "(pointer float)", 72],
["L8", "(pointer float)", 44],
["L9", "(pointer float)", 44],
["L10", "(pointer float)", 44],
["L11", "(pointer float)", 44],
["L12", "(pointer float)", 40],
["L13", "(pointer float)", 40],
["L14", "(pointer float)", 40],
["L15", "(pointer float)", 40],
["L16", "(pointer float)", 28],
["L17", "(pointer float)", 28],
["L18", "(pointer float)", 28],
["L19", "(pointer float)", 28]
],
"pat-h": [["L1", "(inline-array pat-mode-info)", 4]],
"joint-mod-h": [
["L89", "(inline-array vector)", 6],
["L90", "(inline-array vector)", 3]
],
"collide-edge-grab-h": [["L1", "collide-edge-work"]],
"assert-h": [["L4", "__assert-info-private-struct"]],
"hud-h": [["L1", "hud-parts"]],
"transformq": [
["L39", "vector"],
["L40", "vector"]
],
"cylinder": [
["L54", "vector"],
["L57", "vector"],
["L56", "vector"],
["L53", "vector"]
],
"sprite": [
["L58", "vu-function"]
],
"sprite-distort": [
["L27", "vu-function"]
],
"merc-vu1": [
["L1", "vu-function"]
],
"background": [
["L51", "vu-function"]
],
"debug": [
["L179", "vector2h"],
["L176", "(inline-array vector)", 8],
["L180", "vector"],
["L181", "vector"],
["L182", "vector"],
["L183", "vector"],
["L223", "rgba", true],
["L225", "rgba", true],
["L224", "rgba", true],
["L222", "rgba", true],
["L226", "rgba", true]
],
"shrub-work": [["L3", "instance-shrub-work"]],
"game-info": [
["L468", "rgba", true],
["L470", "rgba", true],
["L464", "vector2h"],
["L469", "rgba", true]
],
"tfrag-work": [["L1", "tfrag-work"]],
"tie-work": [
["L1", "prototype-tie-work"],
["L2", "instance-tie-work"]
],
"mood": [
["L256", "vector"],
["L257", "vector"],
["L258", "vector"],
["L259", "vector"],
["L260", "vector"],
["L261", "vector"],
["L262", "(inline-array vector)", 2],
["L263", "light-ellipse"],
["L264", "(inline-array vector)", 4],
["L265", "vector"],
["L266", "(inline-array vector)", 11],
["L267", "vector"],
["L268", "vector"],
["L269", "vector"],
["L270", "vector"],
["L271", "vector"],
["L272", "vector"],
["L273", "vector"],
["L274", "vector"],
["L275", "vector"],
["L276", "vector"],
["L277", "vector"],
["L278", "vector"],
["L279", "vector"]
],
"mood-tables": [
["L12", "mood-sun-table"],
["L13", "mood-lights-table"],
["L14", "mood-fog-table"],
["L15", "mood-fog-table"],
["L16", "mood-sun-table"],
["L17", "mood-sun-table"],
["L18", "mood-lights-table"],
["L19", "mood-fog-table"],
["L20", "mood-lights-table"],
["L21", "mood-fog-table"],
["L22", "mood-lights-table"],
["L23", "mood-fog-table"],
["L24", "mood-lights-table"],
["L25", "mood-lights-table"],
["L26", "mood-fog-table"],
["L27", "mood-sun-table"],
["L28", "mood-lights-table"],
["L29", "mood-fog-table"],
["L30", "mood-sun-table"],
["L31", "mood-lights-table"],
["L32", "mood-fog-table"],
["L33", "mood-sun-table"],
["L34", "mood-lights-table"],
["L35", "mood-fog-table"],
["L36", "mood-sun-table"],
["L37", "mood-lights-table"],
["L38", "mood-fog-table"],
["L39", "mood-sun-table"],
["L40", "mood-lights-table"],
["L41", "mood-fog-table"],
["L42", "mood-sun-table"],
["L43", "mood-lights-table"],
["L44", "mood-fog-table"],
["L45", "mood-sun-table"],
["L46", "mood-lights-table"],
["L47", "mood-fog-table"],
["L48", "mood-fog-table"],
["L49", "mood-sun-table"],
["L50", "mood-lights-table"],
["L51", "mood-fog-table"],
["L52", "mood-sun-table"],
["L53", "mood-lights-table"],
["L54", "mood-fog-table"],
["L55", "mood-sun-table"],
["L56", "mood-lights-table"],
["L57", "mood-fog-table"],
["L58", "mood-fog-table"],
["L59", "mood-sun-table"],
["L60", "mood-lights-table"],
["L61", "mood-fog-table"],
["L62", "sky-color-day"],
["L63", "sky-color-day"],
["L64", "sky-color-day"],
["L65", "sky-color-day"],
["L66", "sky-color-day"],
["L67", "sky-color-day"],
["L68", "sky-color-day"]
],
"camera": [
["L257", "(inline-array qword)", 1],
["L258", "(inline-array qword)", 1]
],
"target-util": [
["L180", "vector"],
["L181", "vector"],
["L182", "vector"],
["L183", "vector"],
["L184", "vector"],
["L186", "vector"],
["L187", "vector"],
["L188", "vector"],
["L189", "vector"],
["L190", "vector"],
["L225", "rgba", true]
],
"logic-target": [
["L227", "attack-info"],
["L231", "(pointer uint64)", 1]
],
"progress-static": [
["L121", "(array game-text-id)"]
],
"rigid-body": [
["L89", "rigid-body-platform-constants"]
],
"nav-enemy": [
["L349", "attack-info"]
],
"basebutton": [
["L97", "vector"],
["L102", "vector"]
],
"bird-lady": [
["L29", "vector"]
],
"bird-lady-beach": [
["L26", "vector"]
],
"mayor": [
["L57", "vector"]
],
"sculptor": [
["L89", "vector"]
],
"oracle": [
["L55", "vector"],
["L56", "vector"],
["L58", "vector"]
],
"evilbro": [
["L25", "vector"],
["L30", "vector"]
],
"explorer": [
["L77", "vector"]
],
"sage": [
["L91", "vector"]
],
"misty-teetertotter": [
["L26", "attack-info"],
["L27", "attack-info"]
],
"farmer": [
["L28", "vector"]
],
"gambler": [
["L52", "vector"]
],
"warrior": [
["L30", "vector"]
],
"geologist": [
["L38", "vector"]
],
"font": [
["L95", "(inline-array vector)", 250],
["L94", "(inline-array vector)", 289]
],
"text": [
["L66", "vector"],
["L67", "matrix"],
["L68", "vector4w"]
],
"ocean-tables": [
// see comment in ocean-tables.gc
["L26", "ocean-spheres"],
["L25", "ocean-colors"],
["L23", "ocean-near-indices"], // ok
["L22", "ocean-trans-indices"],
["L21", "ocean-mid-indices"],
["L19", "ocean-mid-masks"],
["L18", "ocean-spheres"],
["L17", "ocean-colors"],
["L15", "ocean-near-indices"],
["L9", "ocean-near-indices"],
["L14", "ocean-trans-indices"],
["L8", "ocean-trans-indices"],
["L13", "ocean-mid-indices"],
["L7", "ocean-mid-indices"],
["L11", "ocean-mid-masks"],
["L5", "ocean-mid-masks"],
["L4", "ocean-map"],
["L3", "ocean-map"],
["L2", "ocean-map"]
],
"ocean-frames": [["L1", "(pointer uint32)", 16384]],
"eye": [["L36", "eye-work"]],
"shadow-cpu": [["L122", "shadow-data"]],
"load-boundary": [
["L328", "(inline-array lbvtx)", 3]
],
"anim-tester": [
["L509", "(inline-array list-field)", 12]
],
"default-menu": [
["L6251", "float", true],
["L6252", "float", true],
["L6253", "float", true],
["L6254", "float", true],
["L6256", "float", true],
["L6257", "float", true],
["L6264", "float", true],
["L6267", "float", true],
["L6265", "float", true],
["L6266", "float", true],
["L6259", "float", true],
["L6268", "float", true],
["L6263", "float", true],
["L6262", "float", true],
["L6261", "float", true],
["L6255", "float", true],
["L6260", "float", true],
["L6258", "float", true],
["L6272", "uint64", true],
["L6273", "uint64", true],
["L6270", "uint64", true],
["L6269", "uint64", true],
["L6271", "uint64", true]
// ["L6268", "(array int)", true, 1] // printed as a float
],
// "default-menu": [
// ["L519", "pair", true],
// ["L1550", "pair", true],
// ["L1552", "pair", true]
// ],
// "generic-vu1": [
// ["L12", "gif-tag64", true],
// ["L15", "gif-tag64", true],
// ["L14", "gif-tag-regs", true]
// ],
"merc-blend-shape": [
["L62", "(pointer int16)", 32]
],
"miners": [
["L111", "vector"],
["L281", "vector"]
],
"entity": [
["L483", "vector2h"],
["L482", "vector2h"],
["L480", "vector2h"],
["L479", "vector2h"],
["L478", "vector2h"],
["L477", "vector2h"],
["L476", "vector2h"],
["L475", "vector4w"],
["L474", "vector4w"],
["L473", "vector4w"],
["L472", "vector4w"],
["L471", "vector4w"]
],
"assistant": [
["L71", "vector"]
],
"progress": [
["L670", "uint64", true],
["L589", "float", true],
["L590", "float", true],
["L591", "float", true],
["L592", "float", true],
["L593", "float", true],
["L594", "float", true],
["L595", "float", true],
["L596", "float", true],
["L597", "float", true],
["L598", "float", true],
["L599", "float", true],
["L600", "float", true],
["L601", "float", true],
["L602", "float", true],
["L603", "float", true],
["L604", "float", true],
["L605", "float", true],
["L606", "float", true],
["L607", "float", true],
["L608", "float", true],
["L609", "float", true],
["L610", "float", true],
["L611", "float", true],
["L612", "float", true],
["L613", "float", true],
["L614", "float", true],
["L615", "float", true],
["L617", "float", true],
["L616", "float", true],
["L618", "float", true],
["L619", "float", true],
["L620", "float", true],
["L621", "float", true],
["L622", "float", true],
["L623", "float", true],
["L624", "float", true],
["L625", "float", true],
["L626", "float", true],
["L627", "float", true],
["L628", "float", true],
["L629", "float", true],
["L630", "float", true],
["L631", "float", true],
["L632", "float", true],
["L633", "float", true],
["L634", "float", true],
["L635", "float", true],
["L636", "float", true],
["L637", "float", true],
["L638", "float", true],
["L586", "vector"],
["L584", "vector"],
["L582", "vector"],
["L580", "vector"],
["L576", "vector"],
["L578", "vector"],
["L639", "uint64", true],
["L640", "uint64", true],
["L641", "uint64", true],
["L642", "uint64", true],
["L643", "uint64", true],
["L644", "uint64", true],
["L645", "uint64", true],
["L646", "uint64", true],
["L647", "uint64", true],
["L648", "uint64", true],
["L649", "uint64", true],
["L650", "uint64", true],
["L651", "uint64", true],
["L652", "uint64", true]
],
"target-part": [
["L336", "float", true],
["L337", "float", true],
["L338", "float", true],
["L339", "float", true],
["L340", "float", true],
["L341", "uint64", true]
],
"projectiles": [
["L150", "attack-info"]
],
"generic-obs": [
["L455", "quaternion"]
],
"blocking-plane": [
["L18", "vector"],
["L19", "vector"],
["L20", "vector"]
],
"sidekick-human": [
["L131", "vector"],
["L350", "vector"],
["L940", "float", true],
["L941", "float", true],
["L942", "float", true],
["L943", "float", true],
["L944", "float", true],
["L945", "float", true],
["L946", "float", true],
["L990", "float", true],
["L991", "uint64", true],
["L992", "uint64", true],
["L993", "uint64", true],
["L994", "uint64", true]
],
"assistant-firecanyon": [
["L71", "vector"]
],
"sage-bluehut": [
["L82", "vector"]
],
"flutflut-bluehut": [
["L34", "vector"]
],
"sharkey": [
["L101", "attack-info"]
],
"assistant-citadel": [
["L28", "vector"]
],
"robotboss-h": [
["L67", "float", true],
["L68", "uint64", true],
["L69", "uint64", true]
],
"final-door": [
["L59", "vector"],
["L60", "vector"]
],
"crates": [
["L242", "float", true],
["L243", "float", true],
["L245", "float", true],
["L263", "float", true]
],
"flying-lurker": [
["L200", "(pointer uint32)", 26],
["L190", "vector"]
],
"ambient": [
["L334", "vector2h"],
["L330", "vector2h"],
["L329", "vector2h"],
["L332", "vector2h"],
["L331", "vector2h"]
],
"hint-control": [
["L45", "(array task-hint-control-group)"]
],
"sparticle-launcher": [
["L193", "adgif-shader"]
],
"process-taskable": [
["L251", "attack-info"]
],
"babak-with-cannon": [
["L92", "vector"]
],
"flutflut": [
["L94", "vector"]
],
"fishermans-boat": [
["L210", "vector"],
["L410", "attack-info"],
["L411", "vector"],
["L412", "vector"],
["L413", "vector"],
["L431", "(pointer float)", 32],
["L432", "(pointer float)", 32],
["L434", "rigid-body-platform-constants"]
],
"training-obs": [
["L175", "rigid-body-platform-constants"]
],
"bonelurker": [
["L72", "attack-info"],
["L73", "attack-info"]
],
"balloonlurker": [
["L105", "vector"],
["L113", "rigid-body-platform-constants"]
],
"assistant-village2": [
["L177", "vector"],
["L219", "attack-info"],
["L268", "vector"]
],
"citb-plat": [
["L155", "rigid-body-platform-constants"]
],
"qbert-plat": [
["L99", "rigid-body-platform-constants"]
],
"misty-conveyor": [
["L60", "vector"],
["L65", "vector"],
["L66", "vector"],
["L71", "vector"],
["L73", "attack-info"]
],
"swamp-bat": [
["L88", "matrix"],
["L99", "vector"],
["L102", "vector"],
["L103", "attack-info"]
],
"cavecrystal-light": [
["L45", "vector"],
["L46", "vector"]
],
"gnawer": [
["L216", "(inline-array gnawer-segment-info)", 10]
],
"target-tube": [
["L142", "vector"]
],
"assistant-village3": [
["L43", "vector"]
],
"sage-village3": [
["L74", "vector"]
],
"target-snowball": [
["L23", "vector"]
],
"ice-cube": [
["L212", "attack-info"],
["L213", "attack-info"],
["L215", "attack-info"]
],
"assistant-lavatube": [
["L30", "vector"]
],
"citadel-part": [
["L235", "float", true],
["L236", "float", true],
["L237", "float", true],
["L238", "float", true],
["L242", "uint64", true]
],
"village1-part": [
["L238", "float", true],
["L239", "float", true],
["L240", "float", true],
["L241", "float", true],
["L245", "uint64", true]
],
"sunken-part": [
["L220", "uint64", true]
],
"ogre-part": [
["L93", "uint64", true]
],
"collectables-part": [
["L309", "float", true],
["L310", "float", true]
],
"village1-part2": [
["L122", "float", true],
["L123", "float", true],
["L124", "float", true],
["L125", "uint64", true]
],
"village2-part": [
["L226", "float", true],
["L227", "float", true],
["L228", "float", true],
["L229", "uint64", true],
["L233", "uint64", true]
],
"village3-part": [
["L244", "uint64", true]
],
"lavatube-part": [
["L110", "uint64", true]
],
"hud-classes": [
["L279", "vector"],
["L310", "vector"],
["L318", "vector"]
],
"collectables": [
["L611", "(pointer float)", true, 1],
["L649", "(pointer float)", true, 1],
["L656", "(pointer float)", true, 1],
["L657", "(pointer float)", true, 1],
["L658", "(pointer float)", true, 1],
["L660", "(pointer float)", true, 1],
["L663", "(pointer float)", true, 1],
["L585", "vector"],
["L725", "float", true],
["L726", "float", true],
["L727", "float", true],
["L728", "uint64", true],
["L729", "uint64", true],
["L730", "uint64", true],
["L731", "uint64", true],
["L732", "uint64", true],
["L733", "uint64", true]
],
// please do not add things after this entry! git is dumb.
"object-file-that-doesnt-actually-exist-and-i-just-put-this-here-to-prevent-merge-conflicts-with-this-file": []
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -80,6 +80,7 @@
(shutdown)
(list-sounds)
(unload-music)
(set-fps)
)
;; like should match the sound type in OVERLORD
@ -307,6 +308,14 @@
:flag-assert #x900000004
)
(deftype sound-rpc-set-fps (sound-rpc-cmd)
((fps uint8 :offset-assert 4)
)
:method-count-assert 9
:size-assert #x5
:flag-assert #x900000005
)
(deftype sound-rpc-list-sounds (sound-rpc-cmd)
()
:method-count-assert 9
@ -343,6 +352,7 @@
(set-reverb sound-rpc-set-reverb :offset 0)
(set-ear-trans sound-rpc-set-ear-trans :offset 0)
(set-flava sound-rpc-set-flava :offset 0)
(set-fps sound-rpc-set-fps :offset 0)
(shutdown sound-rpc-shutdown :offset 0)
(list-sounds sound-rpc-list-sounds :offset 0)
(unload-music sound-rpc-unload-music :offset 0)

View File

@ -520,6 +520,17 @@
0
)
(defun sound-set-fps ((arg0 uint))
(#when PC_DEBUG_SOUND_ENABLE
(let ((cmd (the-as sound-rpc-set-fps (get-sound-buffer-entry))))
(set! (-> cmd command) (sound-command set-fps))
(set! (-> cmd fps) arg0)
)
)
0
)
(defun sound-volume-off ()
"Set all sound volume to zero"

View File

@ -279,6 +279,7 @@
(bit1 1)
(start-dead 2)
(launch-asap 3)
(bit6 6)
)
(deftype sparticle-group-item (structure)

View File

@ -0,0 +1,4 @@
@echo off
cd ..\..
out\build\Release\bin\decompiler decompiler\config\jak1_pal.jsonc iso_data\jak1pal decompiler_out\jak1pal
pause

View File

@ -604,6 +604,7 @@
(set-reverb sound-rpc-set-reverb :offset 0)
(set-ear-trans sound-rpc-set-ear-trans :offset 0)
(set-flava sound-rpc-set-flava :offset 0)
(set-fps sound-rpc-set-fps :offset 0)
(shutdown sound-rpc-shutdown :offset 0)
(list-sounds sound-rpc-list-sounds :offset 0)
(unload-music sound-rpc-unload-music :offset 0)