diff --git a/.vs/launch.vs.json b/.vs/launch.vs.json index a7a463646c3..2d1175f261b 100644 --- a/.vs/launch.vs.json +++ b/.vs/launch.vs.json @@ -326,6 +326,19 @@ "--config-override \"{\\\"decompile_code\\\": false, \\\"levels_extract\\\": true, \\\"allowed_objects\\\": []}\"" ] }, + { + "type": "default", + "project": "CMakeLists.txt", + "projectTarget": "decompiler.exe (bin\\decompiler.exe)", + "name": "Decompiler - Jak X", + "args": [ + "${workspaceRoot}/decompiler/config/jakx/jakx_config.jsonc", + "${workspaceRoot}/iso_data", + "${workspaceRoot}/decompiler_out", + "--version", + "pal" + ] + }, { "type": "default", "project": "CMakeLists.txt", diff --git a/Taskfile.yml b/Taskfile.yml index f691c677def..7709a9e04a7 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -17,6 +17,8 @@ tasks: - 'python ./scripts/tasks/update-env.py --game jak2' set-game-jak3: - 'python ./scripts/tasks/update-env.py --game jak3' + set-game-jakx: + - 'python ./scripts/tasks/update-env.py --game jakx' set-decomp-ntscv1: desc: "aka black label" cmds: diff --git a/common/audio/audio_formats.cpp b/common/audio/audio_formats.cpp index 998070219ad..029e07353e8 100644 --- a/common/audio/audio_formats.cpp +++ b/common/audio/audio_formats.cpp @@ -57,7 +57,8 @@ void write_wave_file(const std::vector& left_samples, } std::pair, std::vector> decode_adpcm(BinaryReader& reader, - const bool stereo) { + const bool stereo, + const u32 version) { std::vector left_samples; std::vector right_samples; s32 left_sample_prev[2] = {0, 0}; @@ -85,7 +86,7 @@ std::pair, std::vector> decode_adpcm(BinaryReader& reader, break; } - if (stereo && bytes_read == 0x2000) { + if (stereo && bytes_read == (version == 3 ? 0x1000 : 0x2000)) { // switch streams processing_left_chunk = !processing_left_chunk; bytes_read = 0; diff --git a/common/audio/audio_formats.h b/common/audio/audio_formats.h index 12d710041fa..43068b449c4 100644 --- a/common/audio/audio_formats.h +++ b/common/audio/audio_formats.h @@ -34,6 +34,8 @@ void write_wave_file(const std::vector& left_samples, s32 sample_rate, const fs::path& name); -std::pair, std::vector> decode_adpcm(BinaryReader& reader, const bool mono); +std::pair, std::vector> decode_adpcm(BinaryReader& reader, + const bool mono, + const u32 version); std::vector encode_adpcm(const std::vector& samples); diff --git a/common/goal_constants.h b/common/goal_constants.h index 22ba953275b..7c025416d2a 100644 --- a/common/goal_constants.h +++ b/common/goal_constants.h @@ -71,6 +71,15 @@ constexpr int LEVEL_MAX = 10; constexpr int LEVEL_TOTAL = LEVEL_MAX + 1; } // namespace jak3 +namespace jakx { +// for now, we don't have the ability to extend the size of the symbol table +constexpr s32 GOAL_MAX_SYMBOLS = 0x4000; +// amount of levels in level heap +constexpr int LEVEL_MAX = 10; +// total amount of levels, including ones outside level heap (default-level) +constexpr int LEVEL_TOTAL = LEVEL_MAX + 1; +} // namespace jakx + constexpr s32 max_symbols(GameVersion version) { switch (version) { case GameVersion::Jak1: @@ -79,6 +88,8 @@ constexpr s32 max_symbols(GameVersion version) { return jak2::GOAL_MAX_SYMBOLS; case GameVersion::Jak3: return jak3::GOAL_MAX_SYMBOLS; + case GameVersion::JakX: + return jakx::GOAL_MAX_SYMBOLS; } } diff --git a/common/symbols.h b/common/symbols.h index 7877b518cd1..4e99d486947 100644 --- a/common/symbols.h +++ b/common/symbols.h @@ -334,6 +334,7 @@ constexpr int true_symbol_offset(GameVersion version) { return jak1_symbols::FIX_SYM_TRUE; case GameVersion::Jak2: case GameVersion::Jak3: + case GameVersion::JakX: return jak2_symbols::FIX_SYM_TRUE; } } @@ -344,6 +345,7 @@ constexpr int empty_pair_offset_from_s7(GameVersion version) { return jak1_symbols::FIX_SYM_EMPTY_PAIR; case GameVersion::Jak2: case GameVersion::Jak3: + case GameVersion::JakX: // minus 1 for the symbol table pointer's offset. return jak2_symbols::S7_OFF_FIX_SYM_EMPTY_PAIR; } diff --git a/common/type_system/TypeSystem.cpp b/common/type_system/TypeSystem.cpp index 999db34b82a..9ba91c40613 100644 --- a/common/type_system/TypeSystem.cpp +++ b/common/type_system/TypeSystem.cpp @@ -1100,6 +1100,7 @@ void TypeSystem::add_builtin_types(GameVersion version) { break; case GameVersion::Jak2: case GameVersion::Jak3: + case GameVersion::JakX: symbol_type = add_builtin_structure("object", "symbol", true); symbol_type->override_offset(1); break; diff --git a/common/util/FontUtils.cpp b/common/util/FontUtils.cpp index d8af149f3ff..94ef940d4bd 100644 --- a/common/util/FontUtils.cpp +++ b/common/util/FontUtils.cpp @@ -23,7 +23,8 @@ const std::unordered_map sTextVerEnumMap = { {"jak1-v1", GameTextVersion::JAK1_V1}, {"jak1-v2", GameTextVersion::JAK1_V2}, {"jak2", GameTextVersion::JAK2}, - {"jak3", GameTextVersion::JAK3}}; + {"jak3", GameTextVersion::JAK3}, + {"jakx", GameTextVersion::JAKX}}; const std::string& get_text_version_name(GameTextVersion version) { for (auto& [name, ver] : sTextVerEnumMap) { @@ -1926,6 +1927,21 @@ GameTextFontBank g_font_bank_jak3(GameTextVersion::JAK3, &s_replace_info_jak2, &s_passthrus_jak2); +/*! + * ================================ + * GAME TEXT FONT BANK - JAK X + * ================================ + * This font is used in: + * - Jak X + */ + +// TODO cyrillic + +GameTextFontBank g_font_bank_jakx(GameTextVersion::JAKX, + &s_encode_info_jak2, + &s_replace_info_jak2, + &s_passthrus_jak2); + /*! * ======================== * GAME TEXT FONT BANK LIST @@ -1937,7 +1953,8 @@ std::map g_font_banks = { {GameTextVersion::JAK1_V1, &g_font_bank_jak1_v1}, {GameTextVersion::JAK1_V2, &g_font_bank_jak1_v2}, {GameTextVersion::JAK2, &g_font_bank_jak2}, - {GameTextVersion::JAK3, &g_font_bank_jak3}}; + {GameTextVersion::JAK3, &g_font_bank_jak3}, + {GameTextVersion::JAKX, &g_font_bank_jakx}}; const GameTextFontBank* get_font_bank(GameTextVersion version) { return g_font_banks.at(version); @@ -1952,6 +1969,8 @@ const GameTextFontBank* get_font_bank_from_game_version(GameVersion version) { return get_font_bank(GameTextVersion::JAK2); case GameVersion::Jak3: return get_font_bank(GameTextVersion::JAK3); + case GameVersion::JakX: + return get_font_bank(GameTextVersion::JAKX); default: ASSERT_MSG(false, "Unsupported game for get_font_bank_from_game_version"); } diff --git a/common/util/dgo_util.cpp b/common/util/dgo_util.cpp index ed4f784f7ff..10a54ef80ab 100644 --- a/common/util/dgo_util.cpp +++ b/common/util/dgo_util.cpp @@ -25,7 +25,8 @@ std::string get_object_file_name(const std::string& original_name, const u8* dat const std::string art_group_text_strings[] = { fmt::format("/src/next/data/art-group{}/", versions::jak1::ART_FILE_VERSION), fmt::format("/src/jak2/final/art-group{}/", versions::jak2::ART_FILE_VERSION), - fmt::format("/src/jak3/final/art-group{}/", versions::jak3::ART_FILE_VERSION)}; + fmt::format("/src/jak3/final/art-group{}/", versions::jak3::ART_FILE_VERSION), + fmt::format("/src/jakx/final/art-group{}/", versions::jakx::ART_FILE_VERSION)}; const std::string suffix = "-ag.go"; for (auto& art_group_text : art_group_text_strings) { diff --git a/common/versions/versions.cpp b/common/versions/versions.cpp index cbb94c5fb9d..fad4e829d32 100644 --- a/common/versions/versions.cpp +++ b/common/versions/versions.cpp @@ -13,6 +13,8 @@ GameVersion game_name_to_version(const std::string& name) { return GameVersion::Jak2; } else if (name == "jak3") { return GameVersion::Jak3; + } else if (name == "jakx") { + return GameVersion::JakX; } else { ASSERT_MSG(false, fmt::format("invalid game name: {}", name)); } @@ -30,6 +32,8 @@ std::string version_to_game_name(GameVersion v) { return "jak2"; case GameVersion::Jak3: return "jak3"; + case GameVersion::JakX: + return "jakx"; default: ASSERT_MSG(false, fmt::format("no game_name for version: {} found", fmt::underlying(v))); } @@ -43,6 +47,8 @@ std::string version_to_game_name_external(GameVersion v) { return "Jak 2"; case GameVersion::Jak3: return "Jak 3"; + case GameVersion::JakX: + return "Jak X"; default: ASSERT_MSG(false, fmt::format("no game_name for version: {} found", fmt::underlying(v))); } @@ -50,7 +56,7 @@ std::string version_to_game_name_external(GameVersion v) { std::vector valid_game_version_names() { return {game_version_names[GameVersion::Jak1], game_version_names[GameVersion::Jak2], - game_version_names[GameVersion::Jak3]}; + game_version_names[GameVersion::Jak3], game_version_names[GameVersion::JakX]}; } std::string build_revision() { diff --git a/common/versions/versions.h b/common/versions/versions.h index 7c58c6f23aa..3c87fef5431 100644 --- a/common/versions/versions.h +++ b/common/versions/versions.h @@ -38,6 +38,13 @@ constexpr u32 DGO_FILE_VERSION = 1; constexpr u32 TX_PAGE_VERSION = 8; } // namespace jak3 +namespace jakx { +constexpr u32 ART_FILE_VERSION = 8; +constexpr u32 LEVEL_FILE_VERSION = 36; +constexpr u32 DGO_FILE_VERSION = 1; +constexpr u32 TX_PAGE_VERSION = 8; +} // namespace jakx + } // namespace versions // GOAL kernel version (OpenGOAL changes this version from the game's version) @@ -48,17 +55,17 @@ constexpr int KERNEL_VERSION_MINOR = 0; constexpr int IRX_VERSION_MAJOR = 2; constexpr int IRX_VERSION_MINOR = 0; -enum class GameVersion { Jak1 = 1, Jak2 = 2, Jak3 = 3 }; +enum class GameVersion { Jak1 = 1, Jak2 = 2, Jak3 = 3, JakX = 4 }; // TODO: most usages of this are currently stubs for jak 3 template struct PerGameVersion { - constexpr PerGameVersion(T jak1, T jak2, T jak3) : data{jak1, jak2, jak3} {} + constexpr PerGameVersion(T jak1, T jak2, T jak3, T jakx) : data{jak1, jak2, jak3, jakx} {} constexpr const T& operator[](GameVersion v) const { return data[(int)v - 1]; } - T data[3]; + T data[4]; }; -constexpr PerGameVersion game_version_names = {"jak1", "jak2", "jak3"}; +constexpr PerGameVersion game_version_names = {"jak1", "jak2", "jak3", "jakx"}; GameVersion game_name_to_version(const std::string& name); bool valid_game_version(const std::string& name); diff --git a/decompiler/IR2/Form.cpp b/decompiler/IR2/Form.cpp index 3cfb897524b..c65f452166a 100644 --- a/decompiler/IR2/Form.cpp +++ b/decompiler/IR2/Form.cpp @@ -3254,6 +3254,7 @@ goos::Object DefskelgroupElement::to_form_internal(const Env& env) const { } break; case GameVersion::Jak3: + case GameVersion::JakX: if (m_static_info.version != 8) { forms.push_back(pretty_print::to_symbol(fmt::format(":version {}", m_static_info.version))); } diff --git a/decompiler/IR2/Form.h b/decompiler/IR2/Form.h index 3f09a143045..614dcb05fdd 100644 --- a/decompiler/IR2/Form.h +++ b/decompiler/IR2/Form.h @@ -1822,6 +1822,8 @@ class DefpartElement : public FormElement { case GameVersion::Jak2: case GameVersion::Jak3: return field_id == 72; + case GameVersion::JakX: + return field_id == 71; default: ASSERT_MSG(false, fmt::format("unknown version for is_sp_end")); return false; diff --git a/decompiler/ObjectFile/ObjectFileDB.cpp b/decompiler/ObjectFile/ObjectFileDB.cpp index 393cb113f5a..af4e0aa9c6c 100644 --- a/decompiler/ObjectFile/ObjectFileDB.cpp +++ b/decompiler/ObjectFile/ObjectFileDB.cpp @@ -749,6 +749,8 @@ std::string ObjectFileDB::process_tpages(TextureDB& tex_db, case GameVersion::Jak3: animated_slots = jak3_animated_texture_slots(); break; + case GameVersion::JakX: + break; default: ASSERT_NOT_REACHED(); } @@ -856,10 +858,9 @@ std::string ObjectFileDB::process_all_spool_subtitles(const Config& cfg, } } -std::string ObjectFileDB::process_game_text_files(const Config& cfg) { +std::string ObjectFileDB::process_game_text_files(const Config& cfg, std::string text_string) { try { lg::info("- Finding game text..."); - std::string text_string = "COMMON"; Timer timer; int file_count = 0; int string_count = 0; @@ -867,7 +868,7 @@ std::string ObjectFileDB::process_game_text_files(const Config& cfg) { std::unordered_map> text_by_language_by_id; for_each_obj([&](ObjectFileData& data) { - if (data.name_in_dgo.substr(1) == text_string) { + if (data.name_in_dgo.ends_with(text_string)) { file_count++; auto statistics = process_game_text(data, cfg.text_version); string_count += statistics.total_text; @@ -923,7 +924,7 @@ void get_joint_info(ObjectFileDB& db, ObjectFileData& obj, JointGeo jg) { const auto& words = obj.linked_data.words_by_seg.at(MAIN_SEGMENT); for (size_t i = 0; i < jg.length; ++i) { u32 label = 0x0; - if (db.version() == GameVersion::Jak3) { + if (db.version() >= GameVersion::Jak3) { label = words.at((jg.offset / 4) + 11 + i).label_id(); } else { label = words.at((jg.offset / 4) + 7 + i).label_id(); diff --git a/decompiler/ObjectFile/ObjectFileDB.h b/decompiler/ObjectFile/ObjectFileDB.h index 574e6e28a82..38d97fa5f19 100644 --- a/decompiler/ObjectFile/ObjectFileDB.h +++ b/decompiler/ObjectFile/ObjectFileDB.h @@ -260,7 +260,7 @@ class ObjectFileDB { const Config& cfg, const fs::path& dump_out); std::string process_game_count_file(); - std::string process_game_text_files(const Config& cfg); + std::string process_game_text_files(const Config& cfg, std::string text_string = "COMMON"); std::string process_all_spool_subtitles(const Config& cfg, const fs::path& image_out); const ObjectFileData& lookup_record(const ObjectFileRecord& rec) const; diff --git a/decompiler/analysis/atomic_op_builder.cpp b/decompiler/analysis/atomic_op_builder.cpp index b4a87ad5364..bbe77f05d84 100644 --- a/decompiler/analysis/atomic_op_builder.cpp +++ b/decompiler/analysis/atomic_op_builder.cpp @@ -1799,6 +1799,7 @@ std::unique_ptr convert_5(const Instruction& i0, break; case GameVersion::Jak2: case GameVersion::Jak3: + case GameVersion::JakX: process_offset = 48; break; default: diff --git a/decompiler/analysis/cfg_builder.cpp b/decompiler/analysis/cfg_builder.cpp index d181e35c899..ae92f51d8e4 100644 --- a/decompiler/analysis/cfg_builder.cpp +++ b/decompiler/analysis/cfg_builder.cpp @@ -1430,7 +1430,7 @@ Form* try_sc_as_type_of_jak2(FormPool& pool, Function& f, const ShortCircuit* vt f.ir2.env.disable_def(b2_delay_op.dst(), f.warnings); f.ir2.env.disable_use(shift_left->expr().get_arg(0).var()); - if (f.ir2.env.version != GameVersion::Jak3) { + if (f.ir2.env.version != GameVersion::Jak3 && f.ir2.env.version != GameVersion::JakX) { f.warnings.warning("Using new Jak 2 rtype-of"); } return b0_ptr; @@ -1574,6 +1574,7 @@ Form* try_sc_as_type_of(FormPool& pool, Function& f, const ShortCircuit* vtx, Ga return try_sc_as_type_of_jak1(pool, f, vtx); case GameVersion::Jak2: case GameVersion::Jak3: + case GameVersion::JakX: return try_sc_as_type_of_jak2(pool, f, vtx); default: ASSERT(false); diff --git a/decompiler/analysis/find_defpartgroup.cpp b/decompiler/analysis/find_defpartgroup.cpp index cae544d910e..80791985df7 100644 --- a/decompiler/analysis/find_defpartgroup.cpp +++ b/decompiler/analysis/find_defpartgroup.cpp @@ -25,6 +25,8 @@ void read_static_group_data(DecompiledDataElement* src, DefpartgroupElement::StaticInfo& group) { auto lab = src->label(); // looks like: + + // Jak 3 /* .type sparticle-launch-group L81: @@ -42,6 +44,27 @@ void read_static_group_data(DecompiledDataElement* src, L82: */ + // Jak X + /* + .type sparticle-launch-group +L23: + .word 0x5dc0006 + .word 0x2105dc + .word L25 + .word L24 + .word 0x0 + .word 0x0 + .word 0x0 + .word 0x3f800000 + .word 0x3f800000 + .word 0x3f800000 + .word 0x0 + .word 0x0 + .word 0x0 + .word 0x0 + .word 0x47700000 + */ + int word_idx = (lab.offset / 4) - 1; auto& words = env.file->words_by_seg.at(lab.target_segment); @@ -125,6 +148,8 @@ void read_static_part_data(DecompiledDataElement* src, DefpartElement::StaticInfo& part) { auto lab = src->label(); // looks like: + + // Jak 3 /* .type sparticle-launcher L79: @@ -142,6 +167,24 @@ void read_static_part_data(DecompiledDataElement* src, .word 0x3f800000 */ + // Jak X + /* + .type sparticle-launcher +L11: + .word 0x0 + .word L12 + .word 0x0 +L12: + .word 0x1 + .word 0x401000 + .word 0x0 + .word 0x0 + .word 0x10006 + .word 0x41200000 + .word 0x0 + .word 0x3f800000 + */ + int start_word_idx = (lab.offset / 4) - 1; auto& words = env.file->words_by_seg.at(lab.target_segment); @@ -151,14 +194,17 @@ void read_static_part_data(DecompiledDataElement* src, env.func->warnings.error_and_throw("Reference to sparticle-launcher bad: invalid type pointer"); } + auto empty2_idx = start_word_idx + (env.version != GameVersion::JakX ? 2 : 3); + auto array_word_idx = start_word_idx + (env.version != GameVersion::JakX ? 3 : 2); + auto& empty1 = words.at(start_word_idx + 1); - auto& empty2 = words.at(start_word_idx + 2); + auto& empty2 = words.at(empty2_idx); if (empty1.kind() != LinkedWord::PLAIN_DATA || empty1.data != 0 || empty2.kind() != LinkedWord::PLAIN_DATA || empty2.data != 0) { env.func->warnings.error_and_throw("Reference to sparticle-launcher bad: accums not empty"); } - auto& array_word = words.at(start_word_idx + 3); + auto& array_word = words.at(array_word_idx); if (array_word.kind() != LinkedWord::PTR) { env.func->warnings.error_and_throw("Reference to sparticle-launcher bad: invalid array label"); } diff --git a/decompiler/analysis/find_skelgroups.cpp b/decompiler/analysis/find_skelgroups.cpp index ab3a8bb7050..cd56a6a75e2 100644 --- a/decompiler/analysis/find_skelgroups.cpp +++ b/decompiler/analysis/find_skelgroups.cpp @@ -450,14 +450,14 @@ FormElement* rewrite_defskelgroup(LetElement* elt, // (set! *hopper-sg* v1-1) ASSERT(elt->body()->size() > 0); - int last_lod = env.version == GameVersion::Jak3 ? (elt->body()->size() - 4) / 2 - 1 + int last_lod = env.version >= GameVersion::Jak3 ? (elt->body()->size() - 4) / 2 - 1 : (elt->body()->size() - 3) / 2 - 1; if (last_lod > skelgroup_info.max_lod) { env.func->warnings.error_and_throw("defskelgroup exceeds max-lod of {} ({})", skelgroup_info.max_lod, last_lod); } - auto rest_info = env.version == GameVersion::Jak3 + auto rest_info = env.version >= GameVersion::Jak3 ? get_defskelgroup_entries_jak3(elt->body(), env, elt->entries().at(0).dest) : get_defskelgroup_entries(elt->body(), env, elt->entries().at(0).dest); @@ -630,6 +630,7 @@ void run_defskelgroups(Function& top_level_func) { sg = inspect_skel_group_data_jak2(src_as_label, env); break; case GameVersion::Jak3: + case GameVersion::JakX: sg = inspect_skel_group_data_jak3(src_as_label, env); inspect_cloth_data_jak3(as_let, sg, env); break; diff --git a/decompiler/analysis/insert_lets.cpp b/decompiler/analysis/insert_lets.cpp index 29d5a420e42..4ca7fd9ace3 100644 --- a/decompiler/analysis/insert_lets.cpp +++ b/decompiler/analysis/insert_lets.cpp @@ -350,6 +350,7 @@ FormElement* rewrite_as_send_event(LetElement* in, break; case GameVersion::Jak2: case GameVersion::Jak3: + case GameVersion::JakX: // in jak 2, the event message block holds a ppointer instead. set_from_matcher = Matcher::set( Matcher::deref(Matcher::reg(block_var_reg), false, {DerefTokenMatcher::string("from")}), @@ -370,6 +371,7 @@ FormElement* rewrite_as_send_event(LetElement* in, break; case GameVersion::Jak2: case GameVersion::Jak3: + case GameVersion::JakX: set_from_form_matcher = Matcher::set( Matcher::deref(Matcher::any_reg(0), false, {DerefTokenMatcher::string("from")}), Matcher::op_fixed(FixedOperatorKind::PROCESS_TO_PPOINTER, {Matcher::any(1)})); @@ -1808,6 +1810,7 @@ FormElement* rewrite_proc_new(LetElement* in, const Env& env, FormPool& pool) { break; case GameVersion::Jak2: case GameVersion::Jak3: + case GameVersion::JakX: expected_name = fmt::format("(symbol->string (-> {} symbol))", proc_type); break; default: @@ -1958,7 +1961,7 @@ FormElement* rewrite_attack_info(LetElement* in, const Env& env, FormPool& pool) if (env.version == GameVersion::Jak2) { possible_args = possible_args_jak2; } - if (env.version == GameVersion::Jak3) { + if (env.version >= GameVersion::Jak3) { possible_args = possible_args_jak3; } @@ -2431,7 +2434,7 @@ FormElement* rewrite_with_dma_buf_add_bucket(LetElement* in, const Env& env, For // New for Jak 3: they check to see if nothing was added, and skip adding an empty DMA transfer // if so. This means the usual 2 ending let body forms are now wrapped in a `when`. - const int expected_last_let_body_size = env.version == GameVersion::Jak3 ? 1 : 2; + const int expected_last_let_body_size = env.version >= GameVersion::Jak3 ? 1 : 2; if (last_part->entries().size() != 1 || last_part->body()->size() != expected_last_let_body_size) { return nullptr; @@ -2441,7 +2444,7 @@ FormElement* rewrite_with_dma_buf_add_bucket(LetElement* in, const Env& env, For LetElement* dmatag_let; FormElement* insert_tag_call; - if (env.version == GameVersion::Jak3) { + if (env.version >= GameVersion::Jak3) { // check for the when: auto outer_when = dynamic_cast(last_part->body()->at(0)); if (!outer_when) { diff --git a/decompiler/analysis/mips2c.cpp b/decompiler/analysis/mips2c.cpp index 9fb30b3dc0f..4d9a15dd2c8 100644 --- a/decompiler/analysis/mips2c.cpp +++ b/decompiler/analysis/mips2c.cpp @@ -236,6 +236,7 @@ struct Mips2C_Output { fmt::format(" cache.{} = intern_from_c(\"{}\").c();\n", goal_to_c_name(sym), sym); break; case GameVersion::Jak3: + case GameVersion::JakX: result += fmt::format(" cache.{} = intern_from_c(-1, 0, \"{}\").c();\n", goal_to_c_name(sym), sym); break; diff --git a/decompiler/config.cpp b/decompiler/config.cpp index a47df7c4b6a..d3cc2a37518 100644 --- a/decompiler/config.cpp +++ b/decompiler/config.cpp @@ -38,7 +38,7 @@ nlohmann::json read_json_file_from_config(const nlohmann::json& json, const std: Config make_config_via_json(nlohmann::json& json) { Config config; int version_int = json.at("game_version").get(); - ASSERT(version_int == 1 || version_int == 2 || version_int == 3); + ASSERT(version_int == 1 || version_int == 2 || version_int == 3 || version_int == 4); config.game_version = (GameVersion)version_int; config.text_version = json.at("text_version").get(); config.game_name = json.at("game_name").get(); diff --git a/decompiler/config/jakx/all-types.gc b/decompiler/config/jakx/all-types.gc new file mode 100644 index 00000000000..70d2c3b1a7a --- /dev/null +++ b/decompiler/config/jakx/all-types.gc @@ -0,0 +1,56410 @@ +;; All Types + +;; TODO - some of these are likely not needed / copied from jak 2/3 + +;; type system setup +(define-extern object type) +(define-extern type type) +(define-extern structure type) +(define-extern uint128 type) +(define-extern basic type) +(define-extern pair type) +(define-extern array type) +(define-extern symbol type) +(define-extern binteger type) +(define-extern number type) +(define-extern integer type) +(define-extern uinteger type) +(define-extern float type) +(define-extern boolean type) ;; not actually added as a runtime type in jak2, but valid? supports it. +(define-extern uint16 type) +(define-extern uint32 type) +(define-extern int8 type) +(define-extern int16 type) +(define-extern int32 type) +(define-extern int64 type) +(define-extern uint8 type) +(define-extern uint64 type) +(define-extern process-tree type) +(define-extern process type) +(define-extern stack-frame type) +(define-extern global kheap) +(define-extern kheap type) +(define-extern pointer type) +(define-extern string type) + +(define-extern #t symbol) +(define-extern #f symbol) + +;; some types we need. +(declare-type sparticle-launch-group basic) +(declare-type lightning-spec basic) +(declare-type sparticle-launcher basic) +(declare-type state basic) +(declare-type res-lump basic) + +;; kernel types +(defenum link-flag + :bitfield #t + :type int32 + (output-load-msg 0) + (output-load-true-msg 1) + (execute-login 2) + (print-login 3) + (force-debug 4) + (fast-link 5) + ) + +(defenum language-enum + :type uint8 + (english 0) + (french 1) + (german 2) + (spanish 3) + (italian 4) + (commentary 5) + (japanese 6) + (korean 7) + (russian 8) + (portuguese 9) + (dutch 10) + (uk-english 11) + ) + +(define-extern *debug-segment* symbol) +(define-extern nothing (function none)) +(define-extern _format (function _varargs_ object)) +(define-extern method-set! (function type int object none)) ;; may actually return function. +(define-extern malloc (function symbol int pointer)) +(define-extern kmemopen (function kheap string none)) +(define-extern kmemclose (function none)) +(define-extern dgo-load (function string kheap link-flag int none)) +(define-extern *listener-function* (function object)) +(define-extern *enable-method-set* int) +(define-extern *kernel-symbol-warnings* symbol) + +(declare-type cpad-info basic) +(declare-type mouse-info basic) +(define-extern cpad-open (function cpad-info int cpad-info)) +(define-extern cpad-get-data (function cpad-info cpad-info)) +(define-extern scf-get-territory (function int)) ;; not actually a scf function... +(define-extern mouse-get-data (function mouse-info none)) +(define-extern file-stream-open (function file-stream string symbol file-stream)) +(define-extern file-stream-close (function file-stream file-stream)) +(define-extern file-stream-length (function file-stream int)) +(define-extern file-stream-seek (function file-stream int int int)) +(define-extern file-stream-read (function file-stream pointer int int)) +(define-extern file-stream-write (function file-stream pointer uint uint)) +(define-extern reset-path (function none)) +(define-extern flush-cache (function int none)) +(define-extern gs-store-image (function object object object)) +(define-extern sync-path (function int int int)) +(define-extern file-stream-write (function file-stream pointer uint uint)) +(define-extern file-stream-close (function file-stream file-stream)) +(define-extern new-dynamic-structure (function symbol type int structure)) +(define-extern kernel-shutdown (function int none)) +(define-extern scf-get-timeout (function int)) +(define-extern scf-get-inactive-timeout (function int)) +(define-extern syncv (function int int)) +(define-extern string->symbol (function string symbol)) +(define-extern link-begin (function pointer (pointer uint8) int kheap link-flag int)) +(define-extern link-resume (function int)) +(define-extern link-reset (function none)) +(define-extern kset-language (function language-enum int)) +(define-extern reset-graph (function int int int int none)) +(define-extern symbol->string (function symbol string)) +(define-extern loado (function string kheap object)) + +(define-extern loading-level kheap) +(define-extern dma-sync (function pointer int int int)) +(define-extern unload (function string none)) + + +(defenum kmalloc-flags + :bitfield #t + (align-16 4) + (align-64 6) + (align-256 8) + (memset 12) + (top 13) + ) + +(define-extern kmalloc (function kheap int kmalloc-flags string pointer)) + +(define-extern *kernel-boot-message* symbol) +(define-extern *kernel-boot-art-group* string) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; gcommon ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +(deftype vec4s (uint128) + "Vector of four floats, packed into a 128-bit integer as bitfields. + This behaves like a value type. + This is not the main vector type." + ((x float :offset 0) + (y float :offset 32) + (z float :offset 64) + (w float :offset 96)) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype vector (structure) + "Vector of four floats, stored in a structure. + This behaves like a reference type. + This is the main vector type." + ((data float 4 :offset-assert 0) ;; guessed by decompiler + (x float :offset 0) + (y float :offset 4) + (z float :offset 8) + (w float :offset 12) + (quad uint128 :score -1 :offset 0) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype bfloat (basic) + "Boxed (or basic?) float. Just a basic that wraps a single float." + ((data float)) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype inline-array-class (basic) + "Base class for basic inline arrays. + The stride is stored in the heap-base of the inline-array-class child class." + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + ;; this is 16-byte aligned. + ;; children of inline-array-class should define their own data which overlays this one. + (_data uint8 :score -50 :dynamic :offset 16) + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + (:methods + (new (symbol type int) _type_) ;; 0 + (push-back "Copy object to the end, then increment length. No bounds check." (_type_ object) int);; 9 + (inline-array-class-method-10 () none) ;; 10 + (clear-1 "Set length to 0, return #t." (_type_) symbol) ;; 11 + (clear-2 "Set length to 0" (_type_) int) ;; 12 + (pop-front "Remove first object by copying last object to the front, then decrement length." (_type_ int) pointer) ;; 13 + ) + ) + +(deftype inline-array-class-uint64 (inline-array-class) + "Specialization of inline-array-class for uint64. It's unclear why + this would be preferred over a normal (array uint64), since both store data the same way." + ((data uint64 :dynamic :overlay-at _data)) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + +(deftype inline-array-class-uint32 (inline-array-class) + "Specialization of inline-array-class for uint32. It's unclear why this would be preferred + over a normal (array uint32), since both store data the same way." + ((data uint32 :dynamic :overlay-at _data)) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + +(deftype int32-array (inline-array-class) + ((data int32 :inline :dynamic :offset-assert 16) + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + +#| +(deftype array (UNKNOWN) + ((allocated-length int32 :offset-assert 4) + (length int32 :offset-assert 0) + (content-type type :offset-assert 8) ;; guessed by decompiler + (data uint8 :dynamic :offset-assert 12) ;; guessed by decompiler + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 0 + :size-assert #x0 + :flag-assert #x0 + ) +|# + +(define-extern identity + "The identity function." + (function object object)) + +(define-extern 1/ + "Floating point reciprocal." + (function float float)) + +(define-extern + + "64-bit integer addition." + (function int int int)) + +(define-extern - + "64-bit integer subraction." + (function int int int)) + +(define-extern * + "32-bit signed integer multiplication." + (function int int int)) + +(define-extern / + "32-bit signed integer division." + (function int int int)) + +(define-extern ash + "64-bit arithmetic shift. (sign-extends)" + (function int int int)) + +(define-extern mod + "32-bit mod." + (function int int int)) + +(define-extern rem + "32-bit mod (same as mod)." + (function int int int)) + +(define-extern abs + "64-bit integer absolute value." + (function int int)) + +(define-extern min + "64-bit integer minimum." + (function int int int)) + +(define-extern max + "64-bit integer maximum." + (function int int int)) + +(define-extern logior + "64-bit bitwise or." + (function int int int)) + +(define-extern logand + "64-bit bitwise and." + (function int int int)) + +(define-extern lognor + "64-bit bitwise not-or." + (function int int int)) + +(define-extern logxor + "64-bit bitwise exclusive or." + (function int int int)) + +(define-extern lognot + "64-bit bitwise not." + (function int int)) + +(define-extern false-func + "Returns false." + (function symbol)) + +(define-extern true-func + "Returns true." + (function symbol)) + +(define-extern format (function _varargs_ object)) + +(define-extern basic-type? + "Return if the given basic is a given type. A child of the given type is also acceptable." + (function basic type symbol)) + +(define-extern type-type? + "Return if the first type is the second type, or a child of it." + (function type type symbol)) + +(define-extern type? + "Return if the given object is an instance of the given type. + Works on basics, bintegers, or symbols." + (function object type symbol)) + +(define-extern find-parent-method + "Find the closest parent type that has a different implementation of the given method and return that method. + If it does not exist, return `nothing` function. + This is used to implement call-parent-method." + (function type int function)) + +(define-extern ref& + "Return the n-th pair in a linked list of pairs. No bounds checking. + If it is the null pair, return #f." + (function object int object)) + +(define-extern ref + "Return the n-th item in a proper list. No bounds checking." + (function object int object)) + +(define-extern last + "Return the last object in a proper list." + (function object object)) + +(define-extern member + "See if the first argument is in the proper list of the second argument. + Checked with simple equality. + If so, return the list starting at the at point (a truthy value). + Otherwise, return #f. + (member 'b '(a b c)) -> (b c d). + (member 'w '(a b c)) -> #f" + (function object object object)) + +(define-extern nmember + "Like member, but membership is checked with the name= function to handle symbols or strings." + (function basic object object)) + +(define-extern assoc + "Search an association list for given object. Return #f if not found, otherwise the element with matching car. + (assoc 'a '((a . 1) (b . 2) (c . 3))) -> (a . 1) + (assoc 'x '((a . 1) (b . 2) (c . 3))) -> #f" + (function object object object)) + +(define-extern assoce + "Like assoc, but supports a special `else` key which is always considered a match." + (function object object object)) + +(define-extern nassoc + "Like assoc, but uses name= instead of = to check equality." + (function string object object)) + +(define-extern nassoce + "Like assoce, but uses name= instead of = to check equality." + (function string object object)) + +(define-extern append! + "Append the second argument to the end of the list (or empty pair) in the first argument." + (function object object object)) + +(define-extern delete! + "Remove an element from the given list, return the list." + (function object object pair)) + +(define-extern delete-car! + "Remove an element from the given list with a matching car. Return the list." + (function object object object)) + +(define-extern insert-cons! + "Update an association list to have the given (key . value) pair. + If a previous value exists, it is deleted first. + This function always allocates a pair through `cons` on the global heap, which can never be freed, + so it should almost never be used at runtime." + (function object object pair)) + +(define-extern sort + "Sort a list using the given comparision function. + The function can return a #t/#f value, or a positive/negative value. + For example, you could use either `-` or `<` as functions to sort integers." + (function pair (function object object object) pair)) + +(define-extern string->symbol-debug + "Convert a string to a symbol. The symbol must be known, and this cannot + create a new symbol. (in the PC port, it will still work.) + This is inteded to be used in debug only, and will not trigger a warning. + In debug, this will work for all symbols." + (function string symbol)) + +(define-extern symbol->string-debug + "Get the name of a symbol. This is intended to be used in debug only. + In debug, this will work for all symbols. (In PC port, this works always)" + (function symbol string)) + +(define-extern symbol->hash + "Convert a symbol to a unique integer value, which is just the symbol's address." + (function symbol int)) + +(define-extern quad-copy! + "Optimized memory copy. Must be 16-byte aligned. Size in 16-byte units." + (function pointer pointer int pointer)) + +(define-extern mem-copy! (function pointer pointer int pointer)) + +(define-extern mem-clear! + "Basic memory clear. Size in 1-byte units. Not an optimized version." + (function pointer int symbol)) + +(define-extern qmem-copy<-! + "Copy memory by quadword (16-bytes). Must by 16-byte aligned, size in 16-byte units. Increasing address copy. Not an optimized version." + (function pointer pointer int pointer)) + +(define-extern qmem-copy->! + "Copy memory by quadword (16-bytes). Must by 16-byte aligned, size in 16-byte units. Decreasing address copy. Not an optimized version." + (function pointer pointer int pointer)) + +(define-extern qmem-clear! + "Clear memory by quadword (16-bytes). Must by 16-byte aligned, size in 16-byte units. Not an optimized version." + (function pointer int pointer)) + +(define-extern mem-set32! + "Set memory to the given 32-bit value, repeated n times. (like C memset, but setting int32_t instead of char). + Not an optimized implementation. Must be 4-byte aligned." + (function pointer int int pointer)) + +(define-extern mem-or! + "Set the destiation to `dest = dest | src`. Size in bytes. Not an optimized version." + (function pointer pointer int pointer)) + +(define-extern fact + "Factorial." + (function int int)) + +(define-extern *print-column* binteger) +(define-extern print + "Print any boxed object (symbol, pair, basic, binteger) to #t (the REPL). No newline." + (function object object)) +(define-extern printl + "Print any boxed object (symbol, pair, basic, binteger) to #t (the REPL), followed by a newline." + (function object object)) + +(define-extern inspect + "Inspect any boxed object (symbol, pair, basic, binteger) to #t (the REPL)." + (function object object)) + +(define-extern mem-print + "Print out data in memory in hex." + (function (pointer uint32) int symbol)) +(define-extern *trace-list* pair) +(define-extern print-tree-bitmask + "Print out ASCII-art tree structure, from a bitmask of nesting levels." + (function int int symbol)) +(define-extern breakpoint-range-set! + "Unsupported function to set a CPU breakpoint." + (function uint uint uint int)) +(define-extern valid? (function object type string symbol object symbol)) + +(define-extern atoi (function pointer int)) +(define-extern atoi-string (function string int)) +(define-extern atoi-better (function pointer int)) +(define-extern itoa (function int pointer int)) +(define-extern x8toi (function pointer int)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; gstring-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern strlen (function pointer int)) +(define-extern strncmp (function pointer pointer int symbol)) +(define-extern strstr (function pointer pointer pointer)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; gkernel-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-type process-tree basic) +(declare-type process process-tree) +(declare-type thread basic) +(declare-type cpu-thread thread) +(declare-type clock basic) +(declare-type entity res-lump) +(declare-type entity-actor entity) +(declare-type event-message-block structure) +(declare-type level basic) + +(defenum process-mask + :type uint32 + :bitfield #t + (execute 0) + (freeze 1) + (pause 2) + (menu 3) + (progress 4) + (actor-pause 5) + (sleep 6) + (sleep-code 7) + (process-tree 8) + (heap-shrunk 9) + (going 10) + (kernel-run 11) + (no-kill 12) + (movie 13) + (dark-effect 14) + (target 15) + + (sidekick 16) + (crate 17) + (collectable 18) + (enemy 19) + (camera 20) + (platform 21) + (ambient 22) + (entity 23) + (projectile 24) + (bot 25) + (death 26) + (vehicle 27) + (network 28) + ) + +(deftype kernel-context (basic) + ((prevent-from-run process-mask :offset-assert 4) ;; guessed by decompiler + (require-for-run process-mask :offset-assert 8) ;; guessed by decompiler + (allow-to-run process-mask :offset-assert 12) ;; guessed by decompiler + (next-pid int32 :offset-assert 16) + (fast-stack-top pointer :offset-assert 20) ;; guessed by decompiler + (current-process process :offset-assert 24) ;; guessed by decompiler + (relocating-process basic :offset-assert 28) + (relocating-min int32 :offset-assert 32) + (relocating-max int32 :offset-assert 36) + (relocating-offset int32 :offset-assert 40) + (relocating-level level :offset-assert 44) ;; guessed by decompiler + (low-memory-message symbol :offset-assert 48) ;; guessed by decompiler + (login-object basic :offset-assert 52) + (login-art-group basic :offset-assert 56) + (login-level-index int32 :offset-assert 60) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ;; field relocating-level uses ~A with a signed load. + ) + +(deftype time-frame (int64) + () + :flag-assert #x900000008 + ) + +(deftype clock (basic) + ((index int16 :offset-assert 4) + (ref-count uint16 :offset-assert 6) + (mask process-mask :offset-assert 8) ;; guessed by decompiler + (clock-ratio float :offset-assert 12) + (accum float :offset-assert 16) + (integral-accum float :offset-assert 20) + (frame-counter time-frame :offset-assert 24) ;; time-frame + (old-frame-counter time-frame :offset-assert 32) ;; time-frame + (integral-frame-counter time-frame :offset-assert 40) ;; time-frame + (old-integral-frame-counter time-frame :offset-assert 48) ;; time-frame + (sparticle-data vector :inline :offset-assert 64) + (seconds-per-frame float :offset-assert 80) + (frames-per-second float :offset-assert 84) + (time-adjust-ratio float :offset-assert 88) + ) + :method-count-assert 24 + :size-assert #x5c + :flag-assert #x180000005c + (:methods + (new (symbol type int) _type_) ;; 0 + (update-rates! "Recompute all clock values for the given clock ratio (arg0)." (_type_ float) float) ;; 9 + (advance-by! + "Advance the clock by arg0 timeframes (as a float). + Both counters keep a separate fractional and integer counter." + (_type_ float) clock) ;; 10 + (tick! "Per-game-frame clock tick forward." (_type_) clock) ;; 11 + (save! "Save a clock's state to a buffer, return bytes used." (_type_ (pointer uint64)) int) ;; 12 + (load! "Load a clock's state from a buffer, return bytes used." (_type_ (pointer uint64)) int) ;; 13 + (copy! "Copy the frame counters and ratio from arg0." (_type_ clock) clock) ;; 14 + (reset! "Reset a clock to 1000s, rate of 1." (_type_) none) ;; 15 + (frame-mask-2 "Check if the frame count, xored with `xor-val` has its lowest bit set" (_type_ int) symbol) ;; 16 + (frame-mask-4 "Check if the frame count, xored with `xor-val` has any of its lowest 2 bits set" (_type_ int) symbol) ;; 17 + (frame-mask-8 "Check if the frame count, xored with `xor-val` has any of its lowest 3 bits set" (_type_ int) symbol) ;; 18 + (frame-mask-16 "Check if the frame count, xored with `xor-val` has any of its lowest 4 bits set" (_type_ int) symbol) ;; 19 + (frame-mask-32 "Check if the frame count, xored with `xor-val` has any of its lowest 5 bits set" (_type_ int) symbol) ;; 20 + (frame-mask-64 "Check if the frame count, xored with `xor-val` has any of its lowest 6 bits set" (_type_ int) symbol) ;; 21 + (frame-mask-128 "Check if the frame count, xored with `xor-val` has any of its lowest 7 bits set" (_type_ int) symbol) ;; 22 + (frame-mask-256 "Check if the frame count, xored with `xor-val` has any of its lowest 8 bits set" (_type_ int) symbol) ;; 23 + ) + ) + + +(deftype thread (basic) + ((name symbol :offset-assert 4) ;; guessed by decompiler + (process process :offset-assert 8) ;; guessed by decompiler + (previous thread :offset-assert 12) ;; guessed by decompiler + (suspend-hook (function cpu-thread none) :offset-assert 16) ;; guessed by decompiler + (resume-hook (function cpu-thread none) :offset-assert 20) ;; guessed by decompiler + (pc pointer :offset-assert 24) ;; guessed by decompiler + (sp pointer :offset-assert 28) ;; guessed by decompiler + (stack-top pointer :offset-assert 32) ;; guessed by decompiler + (stack-size int32 :offset-assert 36) + ) + :method-count-assert 12 + :size-assert #x28 + :flag-assert #xc00000028 + (:methods + (stack-size-set! "Adjust the size of the stack that can be stored during a suspend. Must be called before any process allocations." (_type_ int) none) ;; 9 + (thread-suspend "Suspend this thread and jump to the kernel (for use by the kernel only)" (_type_) none) ;; 10 + (thread-resume "Jump from the kernel to the restored thread. (for use by the kernel only)" (_type_) none) ;; 11 + ) + ) + +(deftype cpu-thread (thread) +;; registers modified for PC port. + ((rreg uint64 7) + (freg float 8) + (stack uint8 :dynamic) + ) + :method-count-assert 12 + :size-assert #x80 + :flag-assert #xc00000080 + (:methods + (new "Allocate a thread. If there is already a top-thread for this process, assume this is a temporary thread, and allocate on the bottom of the stack." (symbol type process symbol int pointer) _type_) ;; 0 + ) + ) + +(declare-type view basic) +(deftype process-tree (basic) + ((name string :offset-assert 4) + (mask process-mask :offset-assert 8) + (clock clock :offset-assert 12) ;; guessed by decompiler + (view view :offset-assert 16) + (parent (pointer process-tree) :offset-assert 20) ;; guessed by decompiler + (brother (pointer process-tree) :offset-assert 24) ;; guessed by decompiler + (child (pointer process-tree) :offset-assert 28) ;; guessed by decompiler + (ppointer (pointer process) :offset-assert 32) + (self process-tree :offset-assert 36) + (profile-ticks uint32 :offset-assert 40) + ) + :method-count-assert 14 + :size-assert #x2c + :flag-assert #xe0000002c + :no-runtime-type + (:methods + (new "Allocate a process-tree with the kernel clock." (symbol type string) _type_) ;; 0 + (activate "Move a process from dead to active, moving it to the given tree." (_type_ process-tree string pointer) process-tree) ;; 9 + (deactivate "Make a process dead, clean it up, remove it from the active pool, and return to dead pool." (_type_) none) ;; 10 + (init-from-entity! (_type_ entity-actor) object) ;; 11 + (run-logic? "Should this process be run? Checked by execute-process-tree." (_type_) symbol) ;; 12 + (process-tree-method-13 () none) ;; 13 + ) + ) + + +(deftype dead-pool (process-tree) + () + :method-count-assert 17 + :size-assert #x2c + :flag-assert #x110000002c + (:methods + (new "Allocate a dead pool and set up dead processes" (symbol type int int string) _type_) ;; 0 + (dead-pool-method-14 () none) ;; 14 + (get-process "Allocate a process from the pool, or #f if it fails." (_type_ type int object) process) ;; 15 + (return-process "Return a process to the pool." (_type_ process) int) ;; 16 + ) + ) + +(deftype dead-pool-heap-rec (structure) + ((process process :offset-assert 0) ;; guessed by decompiler + (prev dead-pool-heap-rec :offset-assert 4) + (next dead-pool-heap-rec :offset-assert 8) + ) + :pack-me + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) + +(deftype dead-pool-heap (dead-pool) + ((allocated-length int32 :offset-assert 44) + (compact-time uint32 :offset-assert 48) + (compact-count-targ uint32 :offset-assert 52) + (compact-count uint32 :offset-assert 56) + (fill-percent float :offset-assert 60) + (first-gap dead-pool-heap-rec :offset-assert 64) + (first-shrink dead-pool-heap-rec :offset-assert 68) + (heap kheap :inline :offset-assert 80) + (alive-list dead-pool-heap-rec :inline :offset-assert 96) + (last dead-pool-heap-rec :offset-assert 100 :overlay-at (-> alive-list prev)) + (dead-list dead-pool-heap-rec :inline :offset-assert 108) + (process-list dead-pool-heap-rec :dynamic :offset-assert 120) ;; guessed by decompiler + ) + :method-count-assert 29 + :size-assert #x78 + :flag-assert #x1d00000078 + (:methods + (new "Allocate and initialize a dead-pool-heap." (symbol type string int int) _type_) ;; 0 + (init "Allocate memory for processes and init records." (_type_ symbol int) _type_) ;; 17 + (compact "Relocate process in memory to remove gaps, increasing free memory for this dead-pool-heap." (dead-pool-heap int) int) ;; 18 + (shrink-heap "Shrink the heap of a process, allowing the dead pool heap to later reclaim the memory during a compact." (dead-pool-heap process) dead-pool-heap) ;; 19 + (churn "Relocate process in memory, to trigger memory bugs related to process relocation." (dead-pool-heap int) none) ;; 20 + (memory-used "Get the total memory used. Memory in between processes that is not used by a process is considered used." (_type_) int) ;; 21 + (memory-total "Get the total size of the heap for processes." (_type_) int) ;; 22 + (memory-free "Get the size of the unused part of the heap." (dead-pool-heap) int) ;; 23 + (compact-time "Get the compaction time (never set)." (dead-pool-heap) uint) ;; 24 + (gap-size "Get the size of the gap (possibly zero) after the given process. Use #f for the gap at the start of the pool memory." (dead-pool-heap dead-pool-heap-rec) int) ;; 25 + (gap-location "Get pointer to gap (possibly zero size) after the given process" (dead-pool-heap dead-pool-heap-rec) pointer) ;; 26 + (find-gap "Find the first process with a nonzero gap after it, after the given process." (dead-pool-heap dead-pool-heap-rec) dead-pool-heap-rec) ;; 27 + (find-gap-by-size "Find the first gap with a size at least this big" (dead-pool-heap int) dead-pool-heap-rec) ;; 28 + ) + ) + +(deftype stack-frame (basic) + ((name symbol :offset 4) + (next stack-frame :offset 8) ;; which way does this point? + ) + :size-assert #xc + :method-count-assert 9 + :flag-assert #x90000000c + ) + +(deftype catch-frame (stack-frame) + ((sp int32 :offset-assert 12) + (ra int32 :offset-assert 16) + ; (freg float 6 :offset-assert 20) ;; guessed by decompiler + ; (rreg uint128 8 :offset-assert 48) ;; guessed by decompiler + ;; In OpenGOAL, we swap a rreg for 4 more fregs. + (freg float 10) ;; only use 8 + (rreg uint128 7) ;; only use 5 + ) + :method-count-assert 9 + :size-assert #xb0 + :flag-assert #x9000000b0 + (:methods + (new (symbol type symbol function (pointer uint64)) object) ;; 0 + ) + ) + + +(deftype protect-frame (stack-frame) + ((exit (function object) :offset-assert 12) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + (:methods + (new "Allocate and set up a protect-frame. This _must_ be used on the stack." (symbol type (function object)) protect-frame) ;; 0 + ) + ) + +(deftype handle (uint64) + ((process (pointer process) :offset 0 :size 32) ;; additional level of indirection to support moving processes + (pid int32 :offset 32 :size 32) ;; unique pid to check if it's the same process or not. + (u64 uint64 :offset 0 :size 64) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype handle-wrapper (structure) + ((handle uint64 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype state (protect-frame) + ((parent state :offset-assert 16) ;; guessed by decompiler + (code function :offset-assert 20) ;; guessed by decompiler + (trans (function object) :offset-assert 24) ;; guessed by decompiler + (post function :offset-assert 28) ;; guessed by decompiler + (enter function :offset-assert 32) ;; guessed by decompiler + (event (function process int symbol event-message-block object) :offset-assert 36) ;; guessed by decompiler + ) + (:methods + (new (symbol type symbol function + (function object) + function + (function object) + (function process int symbol event-message-block object)) _type_) ;; 0 + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + ) + +(deftype event-message-block (structure) + ((to-handle uint64 :offset-assert 0) ;; handle + (to (pointer process) :offset-assert 0 :overlay-at to-handle) ;; guessed by decompiler + (from-handle uint64 :offset-assert 8) ;; handle + (from (pointer process) :offset-assert 8 :overlay-at from-handle) ;; guessed by decompiler + (param uint64 6 :offset-assert 16) ;; guessed by decompiler + (message symbol :offset-assert 64) ;; guessed by decompiler + (num-params int32 :offset-assert 68) + ) + :method-count-assert 9 + :size-assert #x48 + :flag-assert #x900000048 + ) + +(deftype event-message-block-array (inline-array-class) + ((data event-message-block :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 15 + :size-assert #x10 + :flag-assert #xf00000010 + (:methods + (send-all! (_type_) none) ;; 14 + ) + ) + +(deftype sql-result (array) + ((sql-data object :dynamic :offset 16)) + (:methods + (new (symbol type int) _type_) ;; 0 + ) + :flag-assert #x900000010 + ) + +(define-extern *sql-result* sql-result) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; gkernel ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype process (process-tree) + ((self process :override) + (pool dead-pool) + (status symbol :offset-assert 48) ;; guessed by decompiler + (pid int32) + (main-thread cpu-thread :offset-assert 56) ;; guessed by decompiler + (top-thread cpu-thread :offset-assert 60) ;; guessed by decompiler + (entity entity-actor :offset-assert 64) ;; guessed by decompiler + (level level :offset-assert 68) ;; guessed by decompiler + (state state :offset-assert 72) ;; guessed by decompiler + (prev-state state :offset-assert 76) ;; guessed by decompiler + (next-state state :offset-assert 80) ;; guessed by decompiler + (state-stack (array state) :offset-assert 84) ;; guessed by decompiler + (trans-hook function :offset-assert 88) ;; guessed by decompiler + (post-hook function :offset-assert 92) ;; guessed by decompiler + (event-hook (function process int symbol event-message-block object) :offset-assert 96) ;; guessed by decompiler + (allocated-length int32 :offset-assert 100) + (heap-base pointer :offset 112) ;; guessed by decompiler + (heap-top pointer :offset-assert 116) ;; guessed by decompiler + (heap-cur pointer :offset-assert 120) ;; guessed by decompiler + (stack-frame-top stack-frame :offset-assert 124) ;; guessed by decompiler + (connection-list connectable :inline :offset-assert 128) + (stack uint8 :dynamic :offset-assert 144) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x90 + :flag-assert #xe00000090 + (:methods + (new "Allocate a process, set up process heap, self/ppointer, clock." (symbol type string int) _type_) ;; 0 + ) + (:states + dead-state ;; 10 + ) + ) + +;; dead-pool-heap is already defined! + +(define-extern *kernel-version* binteger) +(define-extern *irx-version* binteger) +(define-extern *kernel-boot-mode* symbol) +(define-extern *kernel-boot-level* symbol) +(define-extern *deci-count* int) +(define-extern *last-loado-length* int) +(define-extern *last-loado-global-usage* int) +(define-extern *last-loado-debug-usage* int) +(define-extern *kernel-packages* pair) +(define-extern load-package + "If not already loaded, do a blocking dgo-load to load the given CGO." + (function string kheap pair)) +(define-extern unload-package + "Mark a package as unloaded. Does not actually unload." + (function string pair)) + +(define-extern *kernel-context* kernel-context) +(define-extern *dram-stack* (pointer uint8)) +(define-extern *null-kernel-context* kernel-context) +(define-extern remove-exit + "Remove the top stack frame. If you have no other stack frames, you can use this before a `go` + to skip the `exit` of the state you are currently in." + (function none :behavior process)) +(define-extern stream<-process-mask + "Print out the process-mask as a human readable string." + (function object process-mask process-mask)) +(define-extern *master-mode* symbol) +(define-extern *pause-lock* symbol) +(define-extern inspect-process-heap + "Call the inspect method on every object in the process heap." + (function process symbol)) +(define-extern return-from-thread (function none)) +(define-extern return-from-thread-dead (function none)) +(define-extern reset-and-call (function thread function object)) +(define-extern method-state + "Get a virtual state from this type by name." + (function type symbol state)) +(define-extern *global-search-name* basic) +(define-extern *global-search-count* int) +(define-extern process-by-name + "Find the first process with the given name in the process-tree." + (function string process-tree process)) +(define-extern process-not-name + "Find the first process without the given name in the process-tree." + (function string process-tree process)) +(define-extern process-count + "Count the number of processes in the given process-tree." + (function process-tree int)) +(define-extern kill-by-name "Kill all processes with the given name." (function string process-tree symbol)) +(define-extern kill-by-type "Kill all processes with the given type." (function type process-tree symbol)) +(define-extern kill-not-name "Kill all processes, except ones with the given name." (function string process-tree symbol)) +(define-extern kill-not-type "Kill all processes, except ones with the exact type." (function type process-tree symbol)) +(define-extern kill-by-type-inherited "Kill all processes, except ones that inherit from the given type." (function type process-tree symbol)) +(define-extern iterate-process-tree "Call a function on each not-dead process in the tree." (function process-tree (function object object) kernel-context object)) +(define-extern execute-process-tree "Iterate over all process, calling the run callback on each, if they should run." (function process-tree (function object object) kernel-context object)) +(define-extern search-process-tree "Return the first function in the process-tree which the callback returns #t on." (function process-tree (function process-tree object) process)) +(define-extern kernel-dispatcher "Run the GOAL kernel! Runs the function from the listener (if there is one), then all processes" (function object)) +(define-extern sync-dispatcher "Run the REPL function." (function object)) +(define-extern inspect-process-tree "Display a tree-view of a process-tree." (function process-tree int int symbol process-tree)) +(define-extern throw-dispatch (function catch-frame object none)) +(define-extern throw (function symbol object int)) +(define-extern previous-brother "Get the process before this one, at this level." (function process-tree object)) +(define-extern change-parent "Reparent a process." (function process-tree process-tree process-tree)) +(define-extern change-brother "Unused, and wrong." (function process-tree process-tree object)) +(define-extern change-to-last-brother "Move this process to the end of its brother list." (function process-tree process-tree)) +(define-extern run-function-in-process (function process function object object object object object object object)) +(define-extern set-to-run-bootstrap (function none)) +(define-extern set-to-run "Set up a process to run a given function, with the given arguments when it executes next." (function cpu-thread function object object object object object object pointer)) +(define-extern dead-state (state process)) +(define-extern entity-deactivate-handler (function process entity-actor none)) +(define-extern *deactivate-process-array* (array handle)) +(define-extern *kernel-clock* clock) +(define-extern *vis-boot* symbol) +(define-extern *null-process* process) +(define-extern *listener-process* process) +(define-extern *16k-dead-pool* dead-pool) +(define-extern *4k-dead-pool* dead-pool) +(define-extern *target-dead-pool* dead-pool) +(define-extern *camera-dead-pool* dead-pool) +(define-extern *camera-master-dead-pool* dead-pool) +(define-extern *debug-dead-pool* dead-pool-heap) +(define-extern *nk-dead-pool* dead-pool-heap) +(define-extern *default-dead-pool* dead-pool) +(define-extern *pickup-dead-pool* dead-pool) +(define-extern *dead-pool-list* pair) +(define-extern *active-pool* process-tree) +(define-extern *display-pool* process-tree) +(define-extern *camera-pool* process-tree) +(define-extern *target-pool* process-tree) +(define-extern *entity-pool* process-tree) +(define-extern *mid-pool* process-tree) +(define-extern *locker-pool* process-tree) +(define-extern *pusher-pool* process-tree) +(define-extern *bg-pool* process-tree) +(define-extern *default-pool* process-tree) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; math ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype float-type (uint32) + () + :flag-assert #x900000004 + ) + +(deftype rgba (uint32) + ((r uint8 :offset 0) + (g uint8 :offset 8) + (b uint8 :offset 16) + (a uint8 :offset 24) + ) + :flag-assert #x900000004 + :no-runtime-type + ) + +(deftype xyzw (uint128) + () + :flag-assert #x900000010 + ) + +(deftype xyzwh (uint128) + () + :flag-assert #x900000010 + ) + +(deftype random-generator (basic) + ((seed uint32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(define-extern truncate + "Round (toward zero) to an integer. + @param arg0 float to truncate" + (function float float)) +(define-extern round "Round to the nearest integer" (function float float)) +(define-extern floor "Round (down) to an integer" (function float float)) +(define-extern ceil "Round (up) to an integer" (function float float)) +(define-extern integral? "Is this number an integer?" (function float symbol)) +(define-extern fractional-part "Get the fractional part of a float." (function float float)) +(define-extern odd? "Is the number odd?" (function int symbol)) +(define-extern even? "Is the number even?" (function int symbol)) +(define-extern sawtooth-wave "Sample a sawtooth with period 1. In range (0, 1)" (function float float)) +(define-extern triangle-wave + "Sample a triangle wave. Period is 4, in range (-1, 1) (so slope is 1 or -1)." + (function float float)) +(define-extern log-x-plus-1-order9 + "Fast approximation of ln(x + 1). Probably only accurate for x in [0, 1]." + (function float float)) +(define-extern logf "Natural log." (function float float)) +(define-extern log2f "Log base 2." (function float float)) +(define-extern exp-slead (pointer float)) +(define-extern exp-strail (pointer float)) +(define-extern exp "Compute e^x." (function float float)) +(define-extern pow "Compute arg0^arg1" (function float float float)) +(define-extern print-exp "Print in the format AeB where A is in the range (1, 10)" (function float none)) +(define-extern print-time "Print a [[time-frame]] as h:mm:ss." (function object time-frame none)) +(define-extern log2 "Log base 2." (function int int)) +(define-extern seek "Move arg0 toward arg1 by at most arg2." (function float float float float)) +(define-extern seek-ease + "Move arg0 toward arg1, and slow down before reaching the end. + When farther than arg3 away, move by at most arg2. + When closer than arg3, linearly ramp down the movement amount from arg2 to 0 but no lower than arg4." + (function float float float float float float)) +(define-extern seek-ease-in-out + "Move arg0 toward arg2, and slow down at the start and end. + When within arg4 of arg1 (at the beginning of movement), ramp up speed, with a minimum speed of arg6 + When within arg5 of arg2 (at the end of movement), ramp down speed, with a minimum speed of arg5 + Normally, move at most arg3" + (function float float float float float float float float)) +(define-extern lerp "Linearly interpolate between arg0 and arg1." (function float float float float)) +(define-extern lerp-scale-old + "Linearly remap arg2 in [arg3, arg4] to [arg0, arg1]. + This is the jak 1 implementation, which I claimed was a bad implementation..." + (function float float float float float float)) +(define-extern lerp-scale + "Linearly remap arg2 in [arg3, arg4] to [arg0, arg1]. + More efficient than the -old version." + (function float float float float float float)) +(define-extern lerp-scale-clamp + "Clamp the input, then linearly remap arg2 in [arg3, arg4] to [arg0, arg1]." + (function float float float float float float)) +(define-extern lerp-clamp + "Linearly interpolate between arg0 and arg1. arg2 is clamped to [0, 1]" + (function float float float float)) +(define-extern rgba-lerp (function rgba rgba rgba rgba)) +(define-extern seekl "Move arg0 toward arg1, by at most arg2." (function int int int int)) +(define-extern rand-vu-init "Initialize the VU0 random generator." (function float float)) +(define-extern rand-vu "Get a random number in [0, 1) and advance the random generator." (function float)) +(define-extern rand-vu-nostep + "Get the number currently in the random generator. + This will be equal to the last call of (rand-vu). + This will not update the random generator." + (function float)) +(define-extern rand-vu-float-range "Get a random float in between arg0 and arg1." (function float float float)) +(define-extern rand-vu-percent? "Get a boolean that's true with the given probability (in 0, 1)." (function float symbol)) +(define-extern rand-vu-int-range "Get an integer in the given range (inclusive)." (function int int int)) +(define-extern rand-vu-int-count "Get an integer in the range [0, max)." (function int int)) +(define-extern rand-vu-int-count-excluding + "Get an integer in the range [0, arg0). + If bit n is set in arg1, exclude this value from being returned." + (function int int int)) +(define-extern rand-vu-int-range-exclude + "Get an integer in the range [0, arg0), excluding arg2. + Note that this doesn't use bits like rand-vu-int-count-excluding." + (function int int int int)) +(define-extern *random-generator* random-generator) +(define-extern rand-uint31-gen + "Generate a supposedly random integer. + Note, this might not quite be right. + But the highest bit is always zero, like it says + and it looks kinda random to me." + (function random-generator uint)) +(define-extern cube-root "Cube root with cool trick that I don't understand." (function float float)) +(define-extern int-noise "Generate random-ish floats in range -1, 1." (function int float)) +(define-extern smooth-step + "Interpolate between 0, 1 with a cubic polynomial. + These are picked so f(0) = 0, f(1) = 1, f'(0) = f'(1) = 0." + (function float float)) +(define-extern smooth-interp + "Remap arg2 from (arg3, arg4) to (arg0, arg1), using cubic interpolation. + Satisfies: + - f(arg3) = arg0 + - f(arg4) = arg1 + - f'(arg3) = f'(arg4) = 0" + (function float float float float float float)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; vector-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +(deftype bit-array (basic) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (_pad uint8 :offset-assert 12) + (bytes uint8 :dynamic :offset 12) + ) + :method-count-assert 13 + :size-assert #xd + :flag-assert #xd0000000d + (:methods + (new "Allocate a new bit-array with room arg0 bits." (symbol type int) _type_) ;; 0 + (get-bit "Get the nth bit as a boolean." (_type_ int) symbol) ;; 9 + (clear-bit "Set the nth bit to 0." (_type_ int) int) ;; 10 + (set-bit "Set the nth bit to 1." (_type_ int) int) ;; 11 + (clear-all! "Set all bits to 0." (_type_) _type_) ;; 12 + ) + ) + + +(deftype vector16ub (structure) + ((data uint8 16 :offset-assert 0) ;; guessed by decompiler + (quad uint128 :offset 0) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype vector4ub (structure) + ((data uint8 4 :offset-assert 0) ;; guessed by decompiler + (x uint8 :offset 0) + (y uint8 :offset 1) + (z uint8 :offset 2) + (w uint8 :offset 3) + (clr uint32 :offset 0) + ) + :pack-me + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype vector4b (structure) + ((data int8 4 :offset-assert 0) ;; guessed by decompiler + (x int8 :offset 0) + (y int8 :offset 1) + (z int8 :offset 2) + (w int8 :offset 3) + (clr int32 :offset 0) + ) + :pack-me + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype vector2ub (structure) + ((data uint8 2 :offset-assert 0) ;; guessed by decompiler + (x uint8 :offset 0) + (y uint8 :offset 1) + (clr uint16 :offset 0) + ) + :pack-me + :method-count-assert 9 + :size-assert #x2 + :flag-assert #x900000002 + ) + +(deftype vector2b (structure) + ((data int8 2 :offset-assert 0) ;; guessed by decompiler + (x int8 :offset 0) + (y int8 :offset 1) + (clr int16 :offset 0) + ) + :method-count-assert 9 + :size-assert #x2 + :flag-assert #x900000002 + ) + +(deftype vector2h (structure) + ((data int16 2 :offset-assert 0 :score -1) + (x int16 :offset 0) + (y int16 :offset 2) + ) + :pack-me + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype vector2uh (structure) + ((data uint16 2 :offset-assert 0) ;; guessed by decompiler + (x uint16 :offset 0) + (y uint16 :offset 2) + (val uint32 :offset 0) + ) + :pack-me + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype vector3h (structure) + ((data int16 3 :offset-assert 0) ;; guessed by decompiler + (x int16 :offset 0) + (y int16 :offset 2) + (z int16 :offset 4) + ) + :method-count-assert 9 + :size-assert #x6 + :flag-assert #x900000006 + ) + +(deftype vector3uh (structure) + ((data uint16 3 :offset-assert 0) ;; guessed by decompiler + (x uint16 :offset 0) + (y uint16 :offset 2) + (z uint16 :offset 4) + ) + :method-count-assert 9 + :size-assert #x6 + :flag-assert #x900000006 + ) + +(deftype vector2w (structure) + ((data int32 2 :offset-assert 0) ;; guessed by decompiler + (x int32 :offset 0) + (y int32 :offset 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype vector3w (structure) + ((data int32 3 :offset-assert 0) ;; guessed by decompiler + (x int32 :offset 0) + (y int32 :offset 4) + (z int32 :offset 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) + +(deftype vector4w (structure) + ((data int32 4 :offset-assert 0) ;; guessed by decompiler + (x int32 :offset 0) + (y int32 :offset 4) + (z int32 :offset 8) + (w int32 :offset 12) + (dword uint64 2 :offset 0) ;; guessed by decompiler + (quad uint128 :offset 0) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype vector2 (structure) + ((data float 2 :offset-assert 0) ;; guessed by decompiler + (x float :offset 0) + (y float :offset 4) + ) + :allow-misaligned + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype vector3 (structure) + ((data float 3 :offset-assert 0) ;; guessed by decompiler + (x float :offset 0) + (y float :offset 4) + (z float :offset 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) + +(deftype vector4 (structure) + ((data float 4 :offset-assert 0 :score -1) ;; guessed by decompiler + (x float :offset 0) + (y float :offset 4) + (z float :offset 8) + (w float :offset 12) + (dword uint64 2 :offset 0) ;; guessed by decompiler + (quad uint128 :offset 0) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype vector4w-2 (structure) + ((data int32 8 :offset-assert 0 :score -2) + (quad uint128 2 :offset 0 :score -1) + (vector vector4w 2 :inline :offset 0) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype vector4w-3 (structure) + ((data int32 12 :offset-assert 0 :score -2) + (quad uint128 3 :offset 0 :score -1) + (vector vector4w 3 :inline :offset 0) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype vector4w-4 (structure) + ((data int32 16 :offset-assert 0 :score -2) + (quad uint128 4 :offset 0 :score -1) + (vector vector4w 4 :inline :offset 0 :score 999) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +(deftype vector4h (structure) + ((data int16 4 :offset-assert 0) ;; guessed by decompiler + (x int16 :offset 0) + (y int16 :offset 2) + (z int16 :offset 4) + (w int16 :offset 6) + (long uint64 :offset 0) + ) + :pack-me + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype vector4uh (structure) + ((data uint16 4 :offset-assert 0) + (x uint16 :offset 0) + (y uint16 :offset 2) + (z uint16 :offset 4) + (w uint16 :offset 6) + (long uint64 :offset 0) + ) + :pack-me + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype vector8h (structure) + ((data int16 8 :offset-assert 0) ;; guessed by decompiler + (quad uint128 :offset 0) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype vector16b (structure) + ((data int8 16 :offset-assert 0) ;; guessed by decompiler + (quad uint128 :offset 0) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype vector4s-3 (structure) + ((data float 12 :offset-assert 0) ;; guessed by decompiler + (quad uint128 3 :offset 0) ;; guessed by decompiler + (vector vector 3 :inline :offset 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype vector-array (inline-array-class) + ((data vector :inline :dynamic :offset-assert 16 :score 10) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + +(deftype rgbaf (vector) + ((r float :offset 0) + (g float :offset 4) + (b float :offset 8) + (a float :offset 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype plane (vector) + ((a float :offset 0) + (b float :offset 4) + (c float :offset 8) + (d float :offset 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype sphere (vector) + ((r float :offset 12 :score 1) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype isphere (vec4s) + () + :flag-assert #x900000010 + ) + +(deftype box8s (structure) + ((data float 8 :offset-assert 0) + (quad uint128 2 :offset 0) + (vector vector 2 :offset 0) + (min vector :inline :offset 0) + (max vector :inline :offset 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype box8s-array (inline-array-class) + ((data box8s :inline :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + +(deftype vertical-planes (structure) + ((data uint128 4 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +(deftype vertical-planes-array (basic) + ((length uint32 :offset-assert 4) + (data vertical-planes :inline :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype qword (structure) + ((data uint32 4 :offset-assert 0) + (byte uint8 16 :offset 0) + (hword uint16 8 :offset 0) + (word uint32 4 :offset 0) + (dword uint64 2 :offset 0) + (quad uint128 :offset 0) + (vector vector :inline :offset 0 :score -100) + (vector4w vector4w :inline :offset 0) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype vector3s (structure) + ((data float 3 :offset-assert 0) + (x float :offset 0) + (y float :offset 4) + (z float :offset 8) + ) + :pack-me + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) + +(define-extern *null-vector* vector) +(define-extern *identity-vector* vector) +(define-extern *x-vector* vector) +(define-extern *y-vector* vector) +(define-extern *z-vector* vector) +(define-extern *up-vector* vector) +(define-extern vector-dot + "Take the dot product of two vectors. + Only does the x, y, z compoments. + Originally handwritten assembly to space out loads and use FPU accumulator" + (function vector vector float)) +(define-extern vector-dot-vu "Take the dot product (xyz only). Using VU0." (function vector vector float)) +(define-extern vector4-dot + "Take the dot product of two vectors. + Does the x, y, z, and w compoments" + (function vector vector float)) +(define-extern vector4-dot-vu "Take the dot product (xyzw). Using VU0." (function vector vector float)) +(define-extern vector-xz-dot (function vector vector float)) +(define-extern vector+! "Set dst = a + b. The w component of dst is set to 0." (function vector vector vector vector)) +(define-extern vector-! "Set dst = a - b. The w componenent of dst is set to 0." (function vector vector vector vector)) +(define-extern vector-zero! "Set xyzw to 0." (function vector vector)) +(define-extern vector-reset! "Set vector to <0,0,0,1>." (function vector vector)) +(define-extern vector-copy! "Copy arg1 to arg0." (function vector vector vector)) +(define-extern vector-xz-! (function vector vector vector vector)) +(define-extern vector-xz+! (function vector vector vector vector)) +(define-extern vector-vector-project-compute-length! (function vector vector vector vector)) +(define-extern vector-vector-perpendicular! (function vector vector vector vector)) +(define-extern vector-length< (function vector float symbol)) +(define-extern vector-length> (function vector float symbol)) +(define-extern *zero-vector* vector) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; texture-upload ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-type texture basic) +(declare-type adgif-shader structure) + +(define-extern *generic-envmap-texture* texture) +(define-extern *default-envmap-shader* adgif-shader) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; texture-finish ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; menu2-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-type curve-color basic) +(declare-type curve-color-fast curve-color) +(declare-type curve2d basic) +(declare-type curve2d-fast curve2d) + +(define-extern *range-jakxexplo-color* curve-color-fast) +(define-extern *range-jakxexplo-alpha* curve2d-fast) +(define-extern *range-jakxexplo-scale-x* curve2d-fast) +(define-extern *range-jakxexplo-scale-y* curve2d-fast) +(define-extern *curve-jakxexplo-alpha* curve2d-fast) +(define-extern *curve-jakxexplo-scale-x* curve2d-fast) +(define-extern *curve-jakxexplo-scale-y* curve2d-fast) +;; (define-extern *part-jakx-explosion-texture-curve-settings* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; menu2 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype chat-window-menu (base-menu) + () + :method-count-assert 65 + :size-assert #x218 + :flag-assert #x4101900218 + (:state-methods + running ;; 52 + ) + ) +|# + +;; (define-extern *last-menu-action* object) +;; (define-extern default-base-menu-post function) +;; (define-extern base-menu-event-handler function) +;; (define-extern base-menu-init-by-other function) +;; (define-extern menu-clear-strip function) +;; (define-extern METERS_PER_TEXEL object) +;; (define-extern find-first-selectable function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; intro-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern spt-func-part-sparks-bits-local function) +;; (define-extern *range-carexplo-cu-dust-color* curve-color-fast) +;; (define-extern *range-carexplo-cu-dust-alpha* curve2d-fast) +;; (define-extern *range-carexplo-cu-dust-scale-x* curve2d-fast) +;; (define-extern *range-carexplo-cu-dust-scale-y* curve2d-fast) +;; (define-extern *curve-carexplo-cu-dust-alpha* curve2d-fast) +;; (define-extern *curve-carexplo-cu-dust-scale-x* curve2d-fast) +;; (define-extern *curve-carexplo-cu-dust-scale-y* curve2d-fast) +;; (define-extern *part-intro-car-explo-closeup-dust-in-curve-settings* object) +;; (define-extern *range-intro-carexplo-cu-color* curve-color-fast) +;; (define-extern *range-intro-carexplo-cu-alpha* curve2d-fast) +;; (define-extern *range-intro-carexplo-cu-scale-x* curve2d-fast) +;; (define-extern *range-intro-carexplo-cu-scale-y* curve2d-fast) +;; (define-extern *curve-intro-carexplo-cu-alpha* curve2d-fast) +;; (define-extern *curve-intro-carexplo-cu-scale-x* curve2d-fast) +;; (define-extern *curve-intro-carexplo-cu-scale-y* curve2d-fast) +;; (define-extern *part-intro-car-explo-closeup-texture-curve-settings* object) +;; (define-extern spt-birth-func-brightness-outro-smoke function) +;; (define-extern *range-carexplo-fnl-dust-color* curve-color-fast) +;; (define-extern *range-carexplo-fnl-dust-alpha* curve2d-fast) +;; (define-extern *range-carexplo-fnl-dust-scale-x* curve2d-fast) +;; (define-extern *range-carexplo-fnl-dust-scale-y* curve2d-fast) +;; (define-extern *curve-carexplo-fnl-dust-alpha* curve2d-fast) +;; (define-extern *curve-carexplo-fnl-dust-scale-x* curve2d-fast) +;; (define-extern *curve-carexplo-fnl-dust-scale-y* curve2d-fast) +;; (define-extern *part-outro-b-final-explosion-dust-in-curve-settings* object) +;; (define-extern *range-outro-carexplo-fnl-color* curve-color-fast) +;; (define-extern *range-outro-carexplo-fnl-alpha* curve2d-fast) +;; (define-extern *range-outro-carexplo-fnl-scale-x* curve2d-fast) +;; (define-extern *range-outro-carexplo-fnl-scale-y* curve2d-fast) +;; (define-extern *curve-outro-carexplo-fnl-alpha* curve2d-fast) +;; (define-extern *curve-outro-carexplo-fnl-scale-x* curve2d-fast) +;; (define-extern *curve-outro-carexplo-fnl-scale-y* curve2d-fast) +;; (define-extern *part-outro-b-final-explosion-texture-curve-settings* object) +;; (define-extern *range-carexplo-dust-color* curve-color-fast) +;; (define-extern *range-carexplo-dust-alpha* curve2d-fast) +;; (define-extern *range-carexplo-dust-scale-x* curve2d-fast) +;; (define-extern *range-carexplo-dust-scale-y* curve2d-fast) +;; (define-extern *curve-carexplo-dust-alpha* curve2d-fast) +;; (define-extern *curve-carexplo-dust-scale-x* curve2d-fast) +;; (define-extern *curve-carexplo-dust-scale-y* curve2d-fast) +;; (define-extern *part-intro-car-explosion-dust-in-curve-settings* object) +;; (define-extern *range-intro-carexplo-color* curve-color-fast) +;; (define-extern *range-intro-carexplo-alpha* curve2d-fast) +;; (define-extern *range-intro-carexplo-scale-x* curve2d-fast) +;; (define-extern *range-intro-carexplo-scale-y* curve2d-fast) +;; (define-extern *curve-intro-carexplo-alpha* curve2d-fast) +;; (define-extern *curve-intro-carexplo-scale-x* curve2d-fast) +;; (define-extern *curve-intro-carexplo-scale-y* curve2d-fast) +;; (define-extern *part-intro-car-explosion-texture-curve-settings* object) +;; (define-extern *range-intro-carexplo2-scale-x* curve2d-fast) +;; (define-extern *range-intro-carexplo2-scale-y* curve2d-fast) +;; (define-extern *part-intro-car-explosion-texture2-curve-settings* object) +;; (define-extern spt-func-part-outro-b-dashboard function) +;; (define-extern spt-func-part-outro-b-dashboard-sparks function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; intro-scenes2 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype krasmale (process-drawable) + ((extra-id uint32 :offset-assert 248) + (anim basic :offset-assert 252) + ) + :method-count-assert 51 + :size-assert #x100 + :flag-assert #x3300700100 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype krasfemale (process-drawable) + ((extra-id uint32 :offset-assert 248) + (anim basic :offset-assert 252) + ) + :method-count-assert 51 + :size-assert #x100 + :flag-assert #x3300700100 + (:state-methods + idle ;; 50 + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; intro-scenes ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; intro-scenes3 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; task-scenes ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; menu2-b ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; race-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern spt-func-part-super-turbo-charges function) +;; (define-extern spt-func-part-red-pellet-charges function) +;; (define-extern spt-func-part-pellet-collect-blue-blurs function) +;; (define-extern spt-func-part-pellet-collect-light-blurs function) +;; (define-extern spt-birth-func-brightness-collectoid-dust function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; race-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype this-way (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype wrong-way-linebot (process-drawable) + ((initial-quat quaternion :inline :offset-assert 256) + (initial-pos vector :inline :offset-assert 272) + (hover-sound uint32 :offset-assert 288) + (l-control UNKNOWN 3 :offset-assert 292) + (my-vehicle uint64 :offset-assert 304) + (spawn-part uint64 :offset-assert 312) + (vehicle-part uint64 :offset-assert 320) + (sound-id uint32 :offset-assert 328) + ) + :method-count-assert 53 + :size-assert #x14c + :flag-assert #x3500c0014c + (:methods + (wrong-way-linebot-method-52 () none) ;; 52 + ) + (:state-methods + idle ;; 50 + shoot ;; 51 + ) + ) +|# + +#| +(deftype wrong-way (process-drawable) + ((base-y float :offset-assert 248) + (height-offset float :offset-assert 252) + (start-position vector :inline :offset-assert 256) + (bot uint64 :offset-assert 272) + (alarm-sound uint32 :offset-assert 280) + (friendly basic :offset-assert 284) + (kill-player-quick basic :offset-assert 288) + ) + :method-count-assert 55 + :size-assert #x124 + :flag-assert #x3700a00124 + (:methods + (wrong-way-method-53 () none) ;; 53 + (wrong-way-method-54 () none) ;; 54 + ) + (:state-methods + idle ;; 50 + enter ;; 52 + exit ;; 51 + ) + ) +|# + +#| +(deftype starting-linebot (process-drawable) + ((initial-quat quaternion :inline :offset-assert 256) + (initial-pos vector :inline :offset-assert 272) + (offset vector :inline :offset-assert 288) + (red-projection basic :offset-assert 304) + (race-started basic :offset-assert 308) + ) + :method-count-assert 52 + :size-assert #x138 + :flag-assert #x3400b00138 + (:methods + (starting-linebot-method-51 () none) ;; 51 + ) + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype race-banner (process-drawable) + ((mat matrix :inline :offset-assert 256) + (end-pos vector :inline :offset-assert 320) + (explode-sound uint32 :offset-assert 336) + (base-y float :offset-assert 340) + (banner UNKNOWN 5 :offset-assert 344) + (blend-up-height float :offset-assert 364) + (last-index int8 :offset-assert 368) + (index int8 :offset-assert 369) + ) + :method-count-assert 53 + :size-assert #x172 + :flag-assert #x3500f00172 + (:methods + (race-banner-method-52 () none) ;; 52 + ) + (:state-methods + banner-countdown ;; 50 + banner-go ;; 51 + ) + ) +|# + +#| +(deftype finish-banner (race-banner) + () + :method-count-assert 54 + :size-assert #x172 + :flag-assert #x3600f00172 + (:state-methods + banner-finish ;; 53 + ) + ) +|# + +;; (define-extern wrong-way-linebot-init-by-other function) +;; (define-extern wrong-way-linebot-spawn function) +;; (define-extern set-position-and-orientation function) +;; (define-extern set-children-position-and-orientation function) +;; (define-extern wrong-way-event-handler function) +;; (define-extern check-for-kill-player function) +;; (define-extern check-for-player-dead function) +;; (define-extern wrong-way-init-by-other function) +;; (define-extern wrong-way-spawn function) +;; (define-extern *race-banner-subtract* object) +;; (define-extern starting-linebot-init-by-other function) +;; (define-extern starting-linebot-spawn function) +;; (define-extern race-banner-handler function) +;; (define-extern race-banner-init-by-other function) +;; (define-extern race-banner-spawn function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; camera-facing-quad ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype camera-facing-quad (prim-client) + ((pos vector :inline :offset-assert 16) + (height float :offset-assert 32) + (width float :offset-assert 36) + (strip basic :offset-assert 40) + (color uint32 :offset-assert 44) + ) + :method-count-assert 14 + :size-assert #x30 + :flag-assert #xe00000030 + (:methods + (camera-facing-quad-method-10 () none) ;; 10 + (camera-facing-quad-method-11 () none) ;; 11 + (camera-facing-quad-method-12 () none) ;; 12 + (camera-facing-quad-method-13 () none) ;; 13 + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; task-arrow ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype task-arrow (process-drawable) + ((color uint32 :offset-assert 248) + (pos vector :inline :offset-assert 256) + (theta float :offset-assert 272) + (phi float :offset-assert 276) + (dist float :offset-assert 280) + (smoothed-dist float :offset-assert 284) + (max-dist float :offset-assert 288) + (flags task-arrow-flags :offset-assert 292) ;; guessed by decompiler + (map-icon uint16 :offset-assert 296) + (minimap connection-minimap :offset-assert 300) + (base-quat quaternion :inline :offset-assert 304) + (base-scale float :offset-assert 320) + (rod-of-god-scale float :offset-assert 324) + (moving symbol :offset-assert 328) ;; guessed by decompiler + (death-pending? symbol :offset-assert 332) ;; guessed by decompiler + (alpha float :offset-assert 336) + (choir-sound ambient-sound :offset-assert 340) ;; guessed by decompiler + (rod-quad basic :offset-assert 344) + ) + :method-count-assert 55 + :size-assert #x15c + :flag-assert #x3700d0015c + (:methods + (task-arrow-method-53 () none) ;; 53 + (task-arrow-method-54 () none) ;; 54 + ) + (:state-methods + idle ;; 50 + leave ;; 52 + die ;; 51 + ) + ) +|# + +;; (define-extern task-arrow-init-by-other function) ;; (function task-arrow-params object :behavior task-arrow) +;; (define-extern task-arrow-spawn function) ;; (function task-arrow-params process-tree process) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; race-manager ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *race-state* object) ;; race-state + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-anim ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (deftype net-anim-path (uint8) +;; () +;; :flag-assert #x900000001 +;; ) + +#| +(deftype net-anim-state (structure) + ((timestamp int32 :offset-assert 0) + (anim-idx int16 :offset-assert 4) + (anim-offset float :offset-assert 8) + (anim-rate float :offset-assert 12) + (vel vector :inline :offset-assert 16) + (path-info uint8 :offset-assert 32) + (path-offset float :offset-assert 36) + (anim-looped basic :offset-assert 40) + (need-snap basic :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype net-anim-result (structure) + ((now int32 :offset-assert 0) + (moved vector :inline :offset-assert 16) + (path-pos float :offset-assert 32) + (path-pos-dist float :offset-assert 36) + (cur-frame float :offset-assert 40) + (cur-loops int32 :offset-assert 44) + (anim-wrapped basic :offset-assert 48) + (path-wrapped basic :offset-assert 52) + (projected-end-time int32 :offset-assert 56) + (total-frames int32 :offset-assert 60) + (moved-no-frac vector :inline :offset-assert 64) + (vels uint32 :offset-assert 80) + (last-snap-time int32 :offset-assert 84) + ) + :method-count-assert 9 + :size-assert #x58 + :flag-assert #x900000058 + ) +|# + +#| +(deftype net-anim-control (structure) + ((active net-anim-state :inline :offset-assert 0) + (result net-anim-result :inline :offset-assert 48) + (path-array uint32 :offset-assert 136) + ) + :method-count-assert 12 + :size-assert #x8c + :flag-assert #xc0000008c + (:methods + (net-anim-control-method-9 () none) ;; 9 + (net-anim-control-method-10 () none) ;; 10 + (net-anim-control-method-11 () none) ;; 11 + ) + ) +|# + +;; (define-extern encode-net-anim-state function) +;; (define-extern decode-net-anim-state function) +;; (define-extern safe-mod function) +;; (define-extern get-dist-based-path-pos function) +;; (define-extern get-anim-offset function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-enemy-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype net-enemy-transition (structure) + ((timestamp int32 :offset-assert 0) + (name basic :offset-assert 4) + (preempt basic :offset-assert 8) + (data-len int32 :offset-assert 12) + (buf-data UNKNOWN 64 :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) +|# + +#| +(deftype net-enemy-anim-info (structure) + ((name basic :offset-assert 0) + (anim-idx int32 :offset-assert 4) + (forward-vel vector :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype net-enemy-info (structure) + ((flags uint64 :offset-assert 0) + (inverse-mass float :offset-assert 8) + (ragdoll-info ragdoll-setup :offset-assert 12) + (max-health float :offset-assert 16) + (damage-scale float :offset-assert 20) + (respawn-delay int32 :offset-assert 24) + (smooth-root-trans float :offset-assert 28) + (smooth-root-quat float :offset-assert 32) + (fatal-impact-impulse float :offset-assert 36) + (min-fatal-impact-enemy-vel float :offset-assert 40) + (time-before-evaporate int32 :offset-assert 44) + (time-before-respawn int32 :offset-assert 48) + (anim-info basic :offset-assert 52) + (kill-score int32 :offset-assert 56) + (wound-score-scale float :offset-assert 60) + (allow-vehicle-penetrate basic :offset-assert 64) + (min-ground-offset float :offset-assert 68) + (ground-probe-lod-dist float :offset-assert 72) + (show-kill-score int32 :offset-assert 76) + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) +|# + +#| +(deftype net-enemy (process-focusable) + ((flags uint64 :offset-assert 256) + (info net-enemy-info :offset-assert 264) + (ragdoll-proc uint64 :offset-assert 272) + (health float :offset-assert 280) + (local-damage float :offset-assert 284) + (killed-by int8 :offset-assert 288) + (last-health-send-time int32 :offset-assert 292) + (net-anim net-anim-control :inline :offset-assert 304) + (minimap connection-minimap :offset-assert 444) + (transitions UNKNOWN 3 :offset-assert 448) + (transition-ct int32 :offset-assert 688) + (last-attack-time int32 :offset-assert 692) + (vehicle-penetrate-time int32 :offset-assert 696) + (paths basic :offset-assert 700) + (pending-impulse-valid basic :offset-assert 704) + (pending-impulse rigid-body-impact :inline :offset-assert 720) + (last-transition-time int32 :offset-assert 788) + (last-attack-id int32 :offset-assert 792) + (vel-for-ragdoll vector :inline :offset-assert 800) + (nav-poly nav-poly :offset-assert 816) + (snap-flags uint64 :offset-assert 824) + (prev-pos vector :inline :offset-assert 832) + (forward-path-vector vector :inline :offset-assert 848) + (enemy-link list-link :inline :offset-assert 864) + ) + :method-count-assert 87 + :size-assert #x368 + :flag-assert #x5702e00368 + (:methods + (net-enemy-method-59 () none) ;; 59 + (net-enemy-method-60 () none) ;; 60 + (net-enemy-method-61 () none) ;; 61 + (net-enemy-method-62 () none) ;; 62 + (net-enemy-method-63 () none) ;; 63 + (net-enemy-method-64 () none) ;; 64 + (net-enemy-method-65 () none) ;; 65 + (net-enemy-method-66 () none) ;; 66 + (net-enemy-method-67 () none) ;; 67 + (net-enemy-method-68 () none) ;; 68 + (net-enemy-method-69 () none) ;; 69 + (net-enemy-method-70 () none) ;; 70 + (net-enemy-method-71 () none) ;; 71 + (net-enemy-method-72 () none) ;; 72 + (net-enemy-method-73 () none) ;; 73 + (net-enemy-method-74 () none) ;; 74 + (net-enemy-method-75 () none) ;; 75 + (net-enemy-method-76 () none) ;; 76 + (net-enemy-method-77 () none) ;; 77 + (net-enemy-method-78 () none) ;; 78 + (net-enemy-method-79 () none) ;; 79 + (net-enemy-method-80 () none) ;; 80 + (net-enemy-method-81 () none) ;; 81 + (net-enemy-method-82 () none) ;; 82 + (net-enemy-method-83 () none) ;; 83 + (net-enemy-method-84 () none) ;; 84 + (net-enemy-method-85 () none) ;; 85 + (net-enemy-method-86 () none) ;; 86 + ) + ) +|# + +;; (define-extern *tmp-construct-transition* object) +;; (define-extern net-enemy-init-remote function) +;; (define-extern *msg-map-net-enemy* array) +;; (define-extern *net-process-class-info-net-enemy* object) +;; (define-extern *net-enemy-list* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-powerup ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *tmp-powerup-motion-info* net-powerup-motion-info) +;; (define-extern *dynamic-powerups* object) +;; (define-extern powerup-build-static-hash function) +;; (define-extern powerup-build-dynamic-hash function) +;; (define-extern *powerup-collide-results* object) +;; (define-extern powerup-check-collision function) +;; (define-extern powerup-motion-parabola function) +;; (define-extern net-powerup-init-by-other function) +;; (define-extern spawn-powerup function) +;; (define-extern eject-powerup function) +;; (define-extern eject-test function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-powerups ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype eco-powerup-draw (powerup-draw) + ((vehicle-handle uint64 :offset-assert 264) + ) + :method-count-assert 57 + :size-assert #x110 + :flag-assert #x3900800110 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype eco-light (process) + ((name basic :offset-assert 0) + (mask process-mask :offset-assert 4) + (clock basic :offset-assert 8) + (view basic :offset-assert 12) + (parent uint32 :offset-assert 16) + (brother uint32 :offset-assert 20) + (child uint32 :offset-assert 24) + (ppointer uint32 :offset-assert 28) + (self basic :offset-assert 32) + (profile-ticks uint32 :offset-assert 36) + (pool basic :offset-assert 40) + (status basic :offset-assert 44) + (pid int32 :offset-assert 48) + (main-thread basic :offset-assert 52) + (top-thread basic :offset-assert 56) + (entity basic :offset-assert 60) + (level basic :offset-assert 64) + (state basic :offset-assert 68) + (prev-state basic :offset-assert 72) + (next-state basic :offset-assert 76) + (state-stack basic :offset-assert 80) + (trans-hook basic :offset-assert 84) + (post-hook basic :offset-assert 88) + (event-hook basic :offset-assert 92) + (allocated-length int32 :offset-assert 96) + (heap-base uint32 :offset-assert 108) + (heap-top uint32 :offset-assert 112) + (heap-cur uint32 :offset-assert 116) + (stack-frame-top basic :offset-assert 120) + (heap kheap :inline :offset-assert 108) + (connection-list connectable :inline :offset-assert 124) + (stack UNKNOWN :dynamic :offset-assert 140) + ) + :method-count-assert 15 + :size-assert #x90 + :flag-assert #xf00000090 + (:methods + (eco-light-method-9 () none) ;; 9 + (eco-light-method-10 () none) ;; 10 + (eco-light-method-11 () none) ;; 11 + (eco-light-method-12 () none) ;; 12 + (eco-light-method-13 () none) ;; 13 + (eco-light-method-14 () none) ;; 14 + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-eco ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *eco-mgr* object) +;; (define-extern *eco-ct* object) +;; (define-extern *eco-array* array) +;; (define-extern *eco-static-hash* object) +;; (define-extern *eco-dynamic-hash* object) +;; (define-extern *eco-nearby-ct* object) +;; (define-extern *eco-nearby-array* array) +;; (define-extern *eco-last-processed* object) +;; (define-extern eco-mgr-init-by-other function) +;; (define-extern init-local-net-eco-mgr function) +;; (define-extern compute-veh-eco-owner-score function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-eco-types ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype eco-blue (eco) + ((launcher UNKNOWN 5 :offset-assert 248) + (birth-accum UNKNOWN 5 :offset-assert 268) + ) + :method-count-assert 56 + :size-assert #x120 + :flag-assert #x3800900120 + (:state-methods + running ;; 50 + ) + ) +|# + +#| +(deftype eco-yellow (eco) + ((launcher basic :offset-assert 248) + (birth-accum float :offset-assert 252) + ) + :method-count-assert 56 + :size-assert #x100 + :flag-assert #x3800700100 + (:state-methods + running ;; 50 + ) + ) +|# + +#| +(deftype eco-red (eco) + ((launcher basic :offset-assert 248) + (birth-accum float :offset-assert 252) + ) + :method-count-assert 56 + :size-assert #x100 + :flag-assert #x3800700100 + (:state-methods + running ;; 50 + ) + ) +|# + +#| +(deftype eco-green (eco) + ((launcher basic :offset-assert 248) + (birth-accum float :offset-assert 252) + ) + :method-count-assert 56 + :size-assert #x100 + :flag-assert #x3800700100 + (:state-methods + running ;; 50 + ) + ) +|# + +;; (define-extern *eco-blue-debris-params* debris-static-params) +;; (define-extern *eco-blue-base-quat* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-simple-destruct ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *net-simple-destruct-ct* object) +;; (define-extern *net-simple-destruct-indices* object) +;; (define-extern *tmp-was-allocated* object) +;; (define-extern *destruct-powerup-names* array) +;; (define-extern get-destruct-perm function) +;; (define-extern count-powerups function) +;; (define-extern rand-spawn-pickup function) +;; (define-extern spawn-pickups-from-destructible function) +;; (define-extern init-local-net-simple-destruct-mgr function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-enemy ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern play-anim-along-path function) +;; (define-extern advance-anim-by-motion function) +;; (define-extern *tmp-transition* object) +;; (define-extern net-enemy-default-handler function) +;; (define-extern kill-all-enemies function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; explosion ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *explosion-effect-suppress* object) +;; (define-extern explosion-init-by-other function) ;; (function explosion-init-params object :behavior explosion) +;; (define-extern explosion-spawn-legacy-version function) ;; (function process-drawable type explosion-init-params (pointer process)) +;; (define-extern explosion-spawn function) ;; (function explosion-init-params process-drawable none) +;; (define-extern find-closest-solid-sphere-prim function) ;; (function collide-shape vector collide-spec collide-shape-prim) +;; (define-extern *explosion-debug-sphere* object) ;; sphere +;; (define-extern explosion-handle-touch-with-ccheck function) +;; (define-extern explosion-handle-touch-without-ccheck function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-weapons-data ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern V_YELLOW_GUIDED_MISSILE_STANDOFF_TIME object) +;; (define-extern V_WPN_SHIELD_COLOR_LEVEL_I object) +;; (define-extern V_WPN_SHIELD_COLOR_LEVEL_II object) +;; (define-extern *v-wpn-available-yellow* array) +;; (define-extern *v-wpn-available-red* array) +;; (define-extern *v-wpn-available-purple* array) +;; (define-extern *weapon-select-table-yellow-even* object) +;; (define-extern *weapon-select-table-red-even* object) +;; (define-extern *weapon-select-table-yellow-default* object) +;; (define-extern *weapon-select-table-red-default* object) +;; (define-extern *weapon-select-table-yellow-training* object) +;; (define-extern *weapon-select-table-red-training* object) +;; (define-extern *weapon-select-table-red-deathrace* object) +;; (define-extern *weapon-select-table-yellow-deathrace* object) +;; (define-extern *weapon-select-table-yellow-race-first* object) +;; (define-extern *weapon-select-table-red-race-first* object) +;; (define-extern *weapon-select-table-yellow-race-second* object) +;; (define-extern *weapon-select-table-red-race-second* object) +;; (define-extern *weapon-select-table-yellow-race-middle* object) +;; (define-extern *weapon-select-table-red-race-middle* object) +;; (define-extern *weapon-select-table-yellow-race-penultimate* object) +;; (define-extern *weapon-select-table-red-race-penultimate* object) +;; (define-extern *weapon-select-table-yellow-race-last* object) +;; (define-extern *weapon-select-table-red-race-last* object) +;; (define-extern *weapon-select-table-yellow-deathmatch-leading* object) +;; (define-extern *weapon-select-table-red-deathmatch-leading* object) +;; (define-extern *weapon-select-table-yellow-deathmatch-middle* object) +;; (define-extern *weapon-select-table-red-deathmatch-middle* object) +;; (define-extern *weapon-select-table-yellow-deathmatch-tailing* object) +;; (define-extern *weapon-select-table-red-deathmatch-tailing* object) +;; (define-extern *weapon-select-table-red-boss-battle* object) +;; (define-extern *weapon-select-table-yellow-boss-battle* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-hud ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype in-game-hud (hud) + ((real-items basic :offset-assert 6364) + (items basic :offset-assert 6368) + (manager basic :offset-assert 6372) + (inited-strings-count int32 :offset-assert 6376) + ) + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + (:methods + (in-game-hud-method-30 () none) ;; 30 + (in-game-hud-method-31 () none) ;; 31 + (in-game-hud-method-32 () none) ;; 32 + ) + ) +|# + +#| +(deftype hud-item (basic) + ((alpha uint8 :offset-assert 4) + (real-alpha uint8 :offset-assert 5) + (position-x int16 :offset-assert 6) + (position-y int16 :offset-assert 8) + (real-position-x int16 :offset-assert 10) + (real-position-y int16 :offset-assert 12) + (width int16 :offset-assert 14) + (height int16 :offset-assert 16) + (real-width int16 :offset-assert 18) + (real-height int16 :offset-assert 20) + (zval uint16 :offset-assert 22) + (real-scale int16 :offset-assert 24) + (scale int16 :offset-assert 26) + (flags int32 :offset-assert 28) + (effect basic :offset-assert 32) + (parent basic :offset-assert 36) + ) + :method-count-assert 24 + :size-assert #x28 + :flag-assert #x1800000028 + (:methods + (hud-item-method-9 () none) ;; 9 + (hud-item-method-10 () none) ;; 10 + (hud-item-method-11 () none) ;; 11 + (hud-item-method-12 () none) ;; 12 + (hud-item-method-13 () none) ;; 13 + (hud-item-method-14 () none) ;; 14 + (hud-item-method-15 () none) ;; 15 + (hud-item-method-16 () none) ;; 16 + (hud-item-method-17 () none) ;; 17 + (hud-item-method-18 () none) ;; 18 + (hud-item-method-19 () none) ;; 19 + (hud-item-method-20 () none) ;; 20 + (hud-item-method-21 () none) ;; 21 + (hud-item-method-22 () none) ;; 22 + (hud-item-method-23 () none) ;; 23 + ) + ) +|# + +#| +(deftype hud-effect (basic) + ((message basic :offset-assert 4) + (active basic :offset-assert 8) + (pending basic :offset-assert 12) + (delay int32 :offset-assert 16) + (receive-time int32 :offset-assert 20) + (item basic :offset-assert 24) + ) + :method-count-assert 15 + :size-assert #x1c + :flag-assert #xf0000001c + (:methods + (hud-effect-method-9 () none) ;; 9 + (hud-effect-method-10 () none) ;; 10 + (hud-effect-method-11 () none) ;; 11 + (hud-effect-method-12 () none) ;; 12 + (hud-effect-method-13 () none) ;; 13 + (hud-effect-method-14 () none) ;; 14 + ) + ) +|# + +#| +(deftype hud-manager (basic) + () + :method-count-assert 12 + :size-assert #x4 + :flag-assert #xc00000004 + (:methods + (hud-manager-method-9 () none) ;; 9 + (hud-manager-method-10 () none) ;; 10 + (hud-manager-method-11 () none) ;; 11 + ) + ) +|# + +#| +(deftype basic-manager (hud-manager) + ((exit-start-time int32 :offset-assert 4) + (exit-time int32 :offset-assert 8) + (previous-time int32 :offset-assert 12) + ) + :method-count-assert 12 + :size-assert #x10 + :flag-assert #xc00000010 + ) +|# + +#| +(deftype hud-region (structure) + ((offset-x float :offset-assert 0) + (offset-y float :offset-assert 4) + (width float :offset-assert 8) + (height float :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype hud-item-string (hud-item) + ((string hud-string :offset-assert 40) + (text-id uint32 :offset-assert 44) + (font-effect uint8 :offset-assert 48) + (font-effect-color uint8 :offset-assert 49) + (color uint8 :offset-assert 50) + (font-flags uint16 :offset-assert 52) + (has-outline basic :offset-assert 56) + ) + :method-count-assert 29 + :size-assert #x3c + :flag-assert #x1d0000003c + (:methods + (hud-item-string-method-24 () none) ;; 24 + (hud-item-string-method-25 () none) ;; 25 + (hud-item-string-method-26 () none) ;; 26 + (hud-item-string-method-27 () none) ;; 27 + (hud-item-string-method-28 () none) ;; 28 + ) + ) +|# + +#| +(deftype hud-item-sprite (hud-item) + ((scale-x int16 :offset-assert 26) + (real-scale-x int16 :offset-assert 24) + (sprite hud-sprite :offset-assert 40) + (real-scale-y int16 :offset-assert 44) + (scale-y int16 :offset-assert 46) + (color vector4w :inline :offset-assert 48) + (tex-id uint32 :offset-assert 64) + (sprite-flags uint16 :offset-assert 68) + (angle float :offset-assert 72) + ) + :method-count-assert 25 + :size-assert #x4c + :flag-assert #x190000004c + (:methods + (hud-item-sprite-method-24 () none) ;; 24 + ) + ) +|# + +#| +(deftype hud-item-group (hud-item) + ((items basic :offset-assert 40) + ) + :method-count-assert 24 + :size-assert #x2c + :flag-assert #x180000002c + ) +|# + +;; (define-extern *debug-hud* object) +;; (define-extern *display-boxes* object) +;; (define-extern *current-hud* object) +;; (define-extern *default-box* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; hud-effects ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-effect-group (hud-effect) + ((items basic :offset-assert 28) + ) + :method-count-assert 15 + :size-assert #x20 + :flag-assert #xf00000020 + ) +|# + +#| +(deftype hud-effect-slide (hud-effect) + ((slide-type uint64 :offset-assert 32) + (slide-time float :offset-assert 40) + (start-time int32 :offset-assert 44) + (message-is-enter basic :offset-assert 48) + ) + :method-count-assert 15 + :size-assert #x34 + :flag-assert #xf00000034 + ) +|# + +#| +(deftype hud-effect-move (hud-effect) + ((offset-x float :offset-assert 28) + (offset-y float :offset-assert 32) + (move-time float :offset-assert 36) + (start-time int32 :offset-assert 40) + ) + :method-count-assert 15 + :size-assert #x2c + :flag-assert #xf0000002c + ) +|# + +#| +(deftype hud-effect-font-effect (hud-effect) + ((font-effect uint8 :offset-assert 28) + ) + :method-count-assert 15 + :size-assert #x1d + :flag-assert #xf0000001d + ) +|# + +#| +(deftype hud-effect-throb (hud-effect) + ((start-time int32 :offset-assert 28) + (throb-time int32 :offset-assert 32) + (u float :offset-assert 36) + (scale float :offset-assert 40) + (throb-alpha float :offset-assert 44) + (max-alpha float :offset-assert 48) + ) + :method-count-assert 15 + :size-assert #x34 + :flag-assert #xf00000034 + ) +|# + +#| +(deftype hud-effect-fade (hud-effect) + ((fade-time float :offset-assert 28) + (start-time int32 :offset-assert 32) + (fade-out-on basic :offset-assert 36) + ) + :method-count-assert 15 + :size-assert #x28 + :flag-assert #xf00000028 + ) +|# + +#| +(deftype hud-effect-scale (hud-effect) + ((scale-time float :offset-assert 28) + (target-scale float :offset-assert 32) + (start-scale float :offset-assert 36) + (start-time int32 :offset-assert 40) + (dont-move-me basic :offset-assert 44) + ) + :method-count-assert 15 + :size-assert #x30 + :flag-assert #xf00000030 + ) +|# + +#| +(deftype hud-effect-emit-score-icon (hud-effect) + ((point-value int16 :offset-assert 28) + ) + :method-count-assert 15 + :size-assert #x1e + :flag-assert #xf0000001e + ) +|# + +#| +(deftype hud-effect-trigger-sound (hud-effect) + ((soundname uint16 :offset-assert 28) + ) + :method-count-assert 15 + :size-assert #x1e + :flag-assert #xf0000001e + ) +|# + +#| +(deftype hud-effect-trigger-score-sound (hud-effect) + ((soundname uint16 :offset-assert 28) + ) + :method-count-assert 15 + :size-assert #x1e + :flag-assert #xf0000001e + ) +|# + +#| +(deftype hud-text-effect-sound (hud-effect) + ((soundname uint16 :offset-assert 28) + (next-play-time int32 :offset-assert 32) + (length int32 :offset-assert 36) + (force-length int32 :offset-assert 40) + (player-rank int32 :offset-assert 44) + (increment int32 :offset-assert 48) + ) + :method-count-assert 15 + :size-assert #x34 + :flag-assert #xf00000034 + ) +|# + +#| +(deftype hud-effect-offscreen (hud-effect) + ((offscreen-type uint64 :offset-assert 32) + ) + :method-count-assert 15 + :size-assert #x28 + :flag-assert #xf00000028 + ) +|# + +;; (define-extern *last-play-time* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; hud-widgets ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-player-icon (hud-item-group) + ((player-id int32 :offset-assert 44) + ) + :method-count-assert 25 + :size-assert #x30 + :flag-assert #x1900000030 + (:methods + (hud-player-icon-method-24 () none) ;; 24 + ) + ) +|# + +#| +(deftype hud-player-icon-name (hud-player-icon) + () + :method-count-assert 25 + :size-assert #x30 + :flag-assert #x1900000030 + ) +|# + +#| +(deftype hud-clock (hud-item-group) + ((clock-id int8 :offset-assert 44) + (count-up basic :offset-assert 48) + (fixed-time? basic :offset-assert 52) + (show-before-red basic :offset-assert 56) + (red-time int32 :offset-assert 60) + (text-id uint32 :offset-assert 64) + (fixed-time-val int32 :offset-assert 68) + ) + :method-count-assert 25 + :size-assert #x48 + :flag-assert #x1900000048 + (:methods + (hud-clock-method-24 () none) ;; 24 + ) + ) +|# + +#| +(deftype hud-medal (hud-item-group) + ((score-as-time basic :offset-assert 44) + ) + :method-count-assert 24 + :size-assert #x30 + :flag-assert #x1800000030 + ) +|# + +#| +(deftype hud-lap (hud-item-group) + ((show-total-laps basic :offset-assert 44) + (is-net-player-race basic :offset-assert 48) + (total-laps int8 :offset-assert 52) + (current-laps int8 :offset-assert 53) + ) + :method-count-assert 24 + :size-assert #x36 + :flag-assert #x1800000036 + ) +|# + +#| +(deftype hud-position (hud-item-group) + ((race-position int32 :offset-assert 44) + ) + :method-count-assert 24 + :size-assert #x30 + :flag-assert #x1800000030 + ) +|# + +#| +(deftype hud-item-player-name (hud-item-string) + () + :method-count-assert 29 + :size-assert #x3c + :flag-assert #x1d0000003c + ) +|# + +#| +(deftype hud-item-player-score (hud-item-string) + () + :method-count-assert 29 + :size-assert #x3c + :flag-assert #x1d0000003c + ) +|# + +#| +(deftype hud-item-number (hud-item-string) + ((value int32 :offset-assert 60) + ) + :method-count-assert 29 + :size-assert #x40 + :flag-assert #x1d00000040 + ) +|# + +#| +(deftype hud-item-score (hud-item-group) + ((player-id int32 :offset-assert 44) + (initial-player-id int32 :offset-assert 48) + (previous-score int32 :offset-assert 52) + (initial-texture-id uint32 :offset-assert 56) + ) + :method-count-assert 24 + :size-assert #x3c + :flag-assert #x180000003c + ) +|# + +#| +(deftype hud-score-single (hud-item-group) + ((need-event-before-update basic :offset-assert 44) + (other-human basic :offset-assert 48) + (display-score int32 :offset-assert 52) + ) + :method-count-assert 25 + :size-assert #x38 + :flag-assert #x1900000038 + (:methods + (hud-score-single-method-24 () none) ;; 24 + ) + ) +|# + +#| +(deftype hud-leader-score (hud-item-group) + ((force-visible basic :offset-assert 44) + (only-humans basic :offset-assert 48) + ) + :method-count-assert 24 + :size-assert #x34 + :flag-assert #x1800000034 + ) +|# + +#| +(deftype hud-item-score-list (hud-item-group) + ((ignore-self basic :offset-assert 44) + (active-net-player-count int32 :offset-assert 48) + ) + :method-count-assert 24 + :size-assert #x34 + :flag-assert #x1800000034 + ) +|# + +#| +(deftype hud-localized-string (hud-item-string) + () + :method-count-assert 29 + :size-assert #x3c + :flag-assert #x1d0000003c + ) +|# + +#| +(deftype hud-place-event (hud-item-group) + ((should-be-visible basic :offset-assert 44) + (hide-titles basic :offset-assert 48) + ) + :method-count-assert 24 + :size-assert #x34 + :flag-assert #x1800000034 + ) +|# + +#| +(deftype hud-item-string-big (hud-item-string) + () + :method-count-assert 29 + :size-assert #x3c + :flag-assert #x1d0000003c + ) +|# + +#| +(deftype hud-slowmo (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-top-split-bar (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-side-split-bar (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern team-has-local-humans? function) +;; (define-extern get-player-id-by-team function) +;; (define-extern *hud-slowmo* array) +;; (define-extern *hud-slowmo-proc* object) +;; (define-extern spawn-hud-slowmo function) +;; (define-extern *hud-top-split-bar* array) +;; (define-extern *hud-top-split-bar-proc* object) +;; (define-extern spawn-hud-top-split-bar function) +;; (define-extern *hud-side-split-bar* array) +;; (define-extern *hud-side-split-bar-proc* object) +;; (define-extern spawn-hud-side-split-bar function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; hud-results ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-results-base (hud-item-group) + ((spawn-time int32 :offset-assert 44) + (start-time int32 :offset-assert 48) + (grand-prix basic :offset-assert 52) + (grand-prix-totals basic :offset-assert 56) + ) + :method-count-assert 24 + :size-assert #x3c + :flag-assert #x180000003c + ) +|# + +#| +(deftype hud-rank-name-score (hud-item-group) + ((player-id int32 :offset-assert 44) + (grand-prix basic :offset-assert 48) + (grand-prix-totals basic :offset-assert 52) + ) + :method-count-assert 25 + :size-assert #x38 + :flag-assert #x1900000038 + (:methods + (hud-rank-name-score-method-24 () none) ;; 24 + ) + ) +|# + +#| +(deftype hud-results (hud-results-base) + ((i-got-medal uint8 :offset-assert 60) + (stats-type uint64 :offset-assert 64) + ) + :method-count-assert 25 + :size-assert #x50 + :flag-assert #x1900000050 + (:methods + (hud-results-method-24 () none) ;; 24 + ) + ) +|# + +#| +(deftype hud-medal-results (hud-results-base) + ((i-got-medal uint8 :offset-assert 60) + (has-sent-inc-event basic :offset-assert 64) + ) + :method-count-assert 25 + :size-assert #x44 + :flag-assert #x1900000044 + (:methods + (hud-medal-results-method-24 () none) ;; 24 + ) + ) +|# + +#| +(deftype hud-name-score (hud-item-group) + ((player-id int32 :offset-assert 44) + (stat-type uint64 :offset-assert 48) + ) + :method-count-assert 24 + :size-assert #x38 + :flag-assert #x1800000038 + ) +|# + +#| +(deftype hud-team-score-list (hud-item-group) + ((team-id int32 :offset-assert 44) + (team-score int32 :offset-assert 48) + ) + :method-count-assert 24 + :size-assert #x34 + :flag-assert #x1800000034 + ) +|# + +#| +(deftype hud-team-score-results (hud-results-base) + ((i-got-medal uint8 :offset-assert 60) + (stats-type uint64 :offset-assert 64) + (red-team-score int32 :offset-assert 72) + (blue-team-score int32 :offset-assert 76) + ) + :method-count-assert 24 + :size-assert #x50 + :flag-assert #x1800000050 + ) +|# + +#| +(deftype hud-results-background-item (hud-item-group) + () + :method-count-assert 24 + :size-assert #x2c + :flag-assert #x180000002c + ) +|# + +#| +(deftype hud-results-background (hud-item-group) + () + :method-count-assert 24 + :size-assert #x2c + :flag-assert #x180000002c + ) +|# + +#| +(deftype hud-results-medal (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-results-view-0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-results-view-1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-results-team-view-0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-results-team-view-1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern score-is-time function) +;; (define-extern set-stats-text function) +;; (define-extern *had-gold* object) +;; (define-extern is-nonstandard-mode-ignore-split? function) +;; (define-extern is-nonstandard-mode? function) +;; (define-extern *reset-hud-results* object) +;; (define-extern *last-game-mgr-grand-prix* object) +;; (define-extern *hud-results-medal* array) +;; (define-extern *hud-results-medal-proc* object) +;; (define-extern spawn-hud-results-medal function) +;; (define-extern *hud-results-view-0* array) +;; (define-extern *hud-results-view-0-proc* object) +;; (define-extern spawn-hud-results-view-0 function) +;; (define-extern *hud-results-view-1* array) +;; (define-extern *hud-results-view-1-proc* object) +;; (define-extern spawn-hud-results-view-1 function) +;; (define-extern *hud-results-team-view-0* array) +;; (define-extern *hud-results-team-view-0-proc* object) +;; (define-extern spawn-hud-results-team-view-0 function) +;; (define-extern *hud-results-team-view-1* array) +;; (define-extern *hud-results-team-view-1-proc* object) +;; (define-extern spawn-hud-results-team-view-1 function) +;; (define-extern spawn-hud-results-team function) +;; (define-extern spawn-hud-results function) +;; (define-extern calc-player-rank function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; hud-results-grand-prix ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-results-grand-prix (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-results-grand-prix-totals (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-results-medal-1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern calc-grand-prix-score function) +;; (define-extern *hud-results-grand-prix* array) +;; (define-extern *hud-results-grand-prix-proc* object) +;; (define-extern spawn-hud-results-grand-prix function) +;; (define-extern *hud-results-grand-prix-totals* array) +;; (define-extern *hud-results-grand-prix-totals-proc* object) +;; (define-extern spawn-hud-results-grand-prix-totals function) +;; (define-extern grand-prix-totals-on? function) +;; (define-extern *hud-results-medal-1* array) +;; (define-extern *hud-results-medal-1-proc* object) +;; (define-extern spawn-hud-results-medal-1 function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; hud-high-scores ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-high-score (hud-item-group) + ((position int32 :offset-assert 44) + ) + :method-count-assert 24 + :size-assert #x30 + :flag-assert #x1800000030 + ) +|# + +#| +(deftype hud-high-scores (hud-results-base) + () + :method-count-assert 24 + :size-assert #x3c + :flag-assert #x180000003c + ) +|# + +#| +(deftype high-scores-list (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-background (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-background-top-view-0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-background-top-view-1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-background-side-view-0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-background-side-view-1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern *high-scores-list* array) +;; (define-extern *high-scores-list-proc* object) +;; (define-extern spawn-high-scores-list function) +;; (define-extern spawn-high-score-hud function) +;; (define-extern high-scores-on? function) +;; (define-extern *hud-background* array) +;; (define-extern *hud-background-proc* object) +;; (define-extern spawn-hud-background function) +;; (define-extern *hud-background-top-view-0* array) +;; (define-extern *hud-background-top-view-0-proc* object) +;; (define-extern spawn-hud-background-top-view-0 function) +;; (define-extern *hud-background-top-view-1* array) +;; (define-extern *hud-background-top-view-1-proc* object) +;; (define-extern spawn-hud-background-top-view-1 function) +;; (define-extern *hud-background-side-view-0* array) +;; (define-extern *hud-background-side-view-0-proc* object) +;; (define-extern spawn-hud-background-side-view-0 function) +;; (define-extern *hud-background-side-view-1* array) +;; (define-extern *hud-background-side-view-1-proc* object) +;; (define-extern spawn-hud-background-side-view-1 function) +;; (define-extern spawn-hud-results-background function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; hud-cash ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-cash-stats (hud-item-group) + ((stat-type uint64 :offset-assert 48) + (time int32 :offset-assert 56) + (last-time int32 :offset-assert 60) + ) + :method-count-assert 28 + :size-assert #x40 + :flag-assert #x1c00000040 + (:methods + (hud-cash-stats-method-24 () none) ;; 24 + (hud-cash-stats-method-25 () none) ;; 25 + (hud-cash-stats-method-26 () none) ;; 26 + (hud-cash-stats-method-27 () none) ;; 27 + ) + ) +|# + +#| +(deftype end-menu (hud-item-group) + ((selection int8 :offset-assert 44) + ) + :method-count-assert 24 + :size-assert #x2d + :flag-assert #x180000002d + ) +|# + +#| +(deftype hud-game-end-grand-prix (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-game-end-view-0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-game-end-side-view-0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-game-end-top-view-0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype cash-hud (hud-item-group) + ((spawn-time int32 :offset-assert 44) + (start-time int32 :offset-assert 48) + ) + :method-count-assert 24 + :size-assert #x34 + :flag-assert #x1800000034 + ) +|# + +#| +(deftype hud-cash-stats-single (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-cash-stats-top-view-0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-cash-stats-top-view-1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-cash-stats-side-view-0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-cash-stats-side-view-1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern medal-uses-score? function) +;; (define-extern get-medal-ignore-gamestate function) +;; (define-extern settings-multiplier function) +;; (define-extern cup-multiplier function) +;; (define-extern medal-instead-of-place? function) +;; (define-extern *last-cash-game-mgr-for-player-0* object) +;; (define-extern *last-cash-game-mgr-for-player-1* object) +;; (define-extern *hud-game-end-grand-prix* array) +;; (define-extern *hud-game-end-grand-prix-proc* object) +;; (define-extern spawn-hud-game-end-grand-prix function) +;; (define-extern *hud-game-end-view-0* array) +;; (define-extern *hud-game-end-view-0-proc* object) +;; (define-extern spawn-hud-game-end-view-0 function) +;; (define-extern *hud-game-end-side-view-0* array) +;; (define-extern *hud-game-end-side-view-0-proc* object) +;; (define-extern spawn-hud-game-end-side-view-0 function) +;; (define-extern *hud-game-end-top-view-0* array) +;; (define-extern *hud-game-end-top-view-0-proc* object) +;; (define-extern spawn-hud-game-end-top-view-0 function) +;; (define-extern spawn-hud-game-end function) +;; (define-extern end-game-menu-on? function) +;; (define-extern *hud-cash-stats-single* array) +;; (define-extern *hud-cash-stats-single-proc* object) +;; (define-extern spawn-hud-cash-stats-single function) +;; (define-extern *hud-cash-stats-top-view-0* array) +;; (define-extern *hud-cash-stats-top-view-0-proc* object) +;; (define-extern spawn-hud-cash-stats-top-view-0 function) +;; (define-extern *hud-cash-stats-top-view-1* array) +;; (define-extern *hud-cash-stats-top-view-1-proc* object) +;; (define-extern spawn-hud-cash-stats-top-view-1 function) +;; (define-extern *hud-cash-stats-side-view-0* array) +;; (define-extern *hud-cash-stats-side-view-0-proc* object) +;; (define-extern spawn-hud-cash-stats-side-view-0 function) +;; (define-extern *hud-cash-stats-side-view-1* array) +;; (define-extern *hud-cash-stats-side-view-1-proc* object) +;; (define-extern spawn-hud-cash-stats-side-view-1 function) +;; (define-extern reset-hud-cash-time function) +;; (define-extern spawn-hud-cash-stats function) +;; (define-extern cash-stats-on? function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; hud-widgets-2 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-indicate-death (hud-item-group) + () + :method-count-assert 25 + :size-assert #x2c + :flag-assert #x190000002c + (:methods + (hud-indicate-death-method-24 () none) ;; 24 + ) + ) +|# + +#| +(deftype death-indicator-record (structure) + ((on basic :offset-assert 0) + (handle uint64 :offset-assert 8) + (spawn-time int32 :offset-assert 16) + (previous-time int32 :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) +|# + +#| +(deftype hud-manager-death-indicator (hud-manager) + ((death-indicators-queue UNKNOWN 20 :offset-assert 8) + (death-indicators-queue-size int8 :offset-assert 648) + ) + :method-count-assert 15 + :size-assert #x289 + :flag-assert #xf00000289 + (:methods + (hud-manager-death-indicator-method-12 () none) ;; 12 + (hud-manager-death-indicator-method-13 () none) ;; 13 + (hud-manager-death-indicator-method-14 () none) ;; 14 + ) + ) +|# + +#| +(deftype death-indicator-single0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype death-indicator-single1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype death-indicator-single2 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype death-indicator-single3 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype death-indicator-single4 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype death-indicator-view-10 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype death-indicator-view-11 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype death-indicator-view-12 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype death-indicator-view-13 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype death-indicator-view-14 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype death-indicator-view-20 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype death-indicator-view-21 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype death-indicator-view-22 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype death-indicator-view-23 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype death-indicator-view-24 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern *hud-manager-death-indicator-1* hud-manager-death-indicator) +;; (define-extern *hud-manager-death-indicator-2* hud-manager-death-indicator) +;; (define-extern *death-indicator-single0* array) +;; (define-extern *death-indicator-single0-proc* object) +;; (define-extern spawn-death-indicator-single0 function) +;; (define-extern *death-indicator-single1* array) +;; (define-extern *death-indicator-single1-proc* object) +;; (define-extern spawn-death-indicator-single1 function) +;; (define-extern *death-indicator-single2* array) +;; (define-extern *death-indicator-single2-proc* object) +;; (define-extern spawn-death-indicator-single2 function) +;; (define-extern *death-indicator-single3* array) +;; (define-extern *death-indicator-single3-proc* object) +;; (define-extern spawn-death-indicator-single3 function) +;; (define-extern *death-indicator-single4* array) +;; (define-extern *death-indicator-single4-proc* object) +;; (define-extern spawn-death-indicator-single4 function) +;; (define-extern spawn-unused-death-indicator-single function) +;; (define-extern *death-indicator-view-10* array) +;; (define-extern *death-indicator-view-10-proc* object) +;; (define-extern spawn-death-indicator-view-10 function) +;; (define-extern *death-indicator-view-11* array) +;; (define-extern *death-indicator-view-11-proc* object) +;; (define-extern spawn-death-indicator-view-11 function) +;; (define-extern *death-indicator-view-12* array) +;; (define-extern *death-indicator-view-12-proc* object) +;; (define-extern spawn-death-indicator-view-12 function) +;; (define-extern *death-indicator-view-13* array) +;; (define-extern *death-indicator-view-13-proc* object) +;; (define-extern spawn-death-indicator-view-13 function) +;; (define-extern *death-indicator-view-14* array) +;; (define-extern *death-indicator-view-14-proc* object) +;; (define-extern spawn-death-indicator-view-14 function) +;; (define-extern spawn-unused-death-indicator-view-1 function) +;; (define-extern *death-indicator-view-20* array) +;; (define-extern *death-indicator-view-20-proc* object) +;; (define-extern spawn-death-indicator-view-20 function) +;; (define-extern *death-indicator-view-21* array) +;; (define-extern *death-indicator-view-21-proc* object) +;; (define-extern spawn-death-indicator-view-21 function) +;; (define-extern *death-indicator-view-22* array) +;; (define-extern *death-indicator-view-22-proc* object) +;; (define-extern spawn-death-indicator-view-22 function) +;; (define-extern *death-indicator-view-23* array) +;; (define-extern *death-indicator-view-23-proc* object) +;; (define-extern spawn-death-indicator-view-23 function) +;; (define-extern *death-indicator-view-24* array) +;; (define-extern *death-indicator-view-24-proc* object) +;; (define-extern spawn-death-indicator-view-24 function) +;; (define-extern spawn-unused-death-indicator-view-2 function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; hud-widgets-3 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-points-combo (hud-item-group) + ((combo-points int32 :offset-assert 44) + (combo-size int32 :offset-assert 48) + (since-update-time int32 :offset-assert 52) + (since-exit-time int32 :offset-assert 56) + (sent-exit-event basic :offset-assert 60) + ) + :method-count-assert 24 + :size-assert #x40 + :flag-assert #x1800000040 + ) +|# + +#| +(deftype hud-points-combo-display0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-points-combo-display1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-points-combo-display2 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-points-combo-display3 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-points-combo-display4 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype text-display-manager (basic-manager) + () + :method-count-assert 12 + :size-assert #x10 + :flag-assert #xc00000010 + ) +|# + +#| +(deftype hud-item-info-string (hud-item-string) + () + :method-count-assert 29 + :size-assert #x3c + :flag-assert #x1d0000003c + ) +|# + +#| +(deftype text-display-deflected-view-1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype text-display-deflected-view-2 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype text-display-sblastered-view-1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype text-display-sblastered-view-2 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype text-display-supernova-backfire-view-1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype text-display-supernova-backfire-view-2 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-points-icon (hud-item-group) + ((start vector :inline :offset-assert 48) + (end vector :inline :offset-assert 64) + (position vector :inline :offset-assert 80) + (sent-exit basic :offset-assert 96) + (sent-update basic :offset-assert 100) + (move-time int32 :offset-assert 104) + (points int32 :offset-assert 108) + (min-scale float :offset-assert 112) + ) + :method-count-assert 24 + :size-assert #x74 + :flag-assert #x1800000074 + ) +|# + +#| +(deftype hud-points-icon-display0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-points-icon-display1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-points-icon-display2 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-points-icon-display3 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-points-icon-display4 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern *hud-points-combo-display0* array) +;; (define-extern *hud-points-combo-display0-proc* object) +;; (define-extern spawn-hud-points-combo-display0 function) +;; (define-extern *hud-points-combo-display1* array) +;; (define-extern *hud-points-combo-display1-proc* object) +;; (define-extern spawn-hud-points-combo-display1 function) +;; (define-extern *hud-points-combo-display2* array) +;; (define-extern *hud-points-combo-display2-proc* object) +;; (define-extern spawn-hud-points-combo-display2 function) +;; (define-extern *hud-points-combo-display3* array) +;; (define-extern *hud-points-combo-display3-proc* object) +;; (define-extern spawn-hud-points-combo-display3 function) +;; (define-extern *hud-points-combo-display4* array) +;; (define-extern *hud-points-combo-display4-proc* object) +;; (define-extern spawn-hud-points-combo-display4 function) +;; (define-extern spawn-unused-hud-points-combo-display function) +;; (define-extern *text-display-deflected-view-1* array) +;; (define-extern *text-display-deflected-view-1-proc* object) +;; (define-extern spawn-text-display-deflected-view-1 function) +;; (define-extern *text-display-deflected-view-2* array) +;; (define-extern *text-display-deflected-view-2-proc* object) +;; (define-extern spawn-text-display-deflected-view-2 function) +;; (define-extern *text-display-sblastered-view-1* array) +;; (define-extern *text-display-sblastered-view-1-proc* object) +;; (define-extern spawn-text-display-sblastered-view-1 function) +;; (define-extern *text-display-sblastered-view-2* array) +;; (define-extern *text-display-sblastered-view-2-proc* object) +;; (define-extern spawn-text-display-sblastered-view-2 function) +;; (define-extern display-sblastered-text-to-view function) +;; (define-extern *text-display-supernova-backfire-view-1* array) +;; (define-extern *text-display-supernova-backfire-view-1-proc* object) +;; (define-extern spawn-text-display-supernova-backfire-view-1 function) +;; (define-extern *text-display-supernova-backfire-view-2* array) +;; (define-extern *text-display-supernova-backfire-view-2-proc* object) +;; (define-extern spawn-text-display-supernova-backfire-view-2 function) +;; (define-extern display-supernova-backfire-text-to-view function) +;; (define-extern change-to-screen-space function) +;; (define-extern *hud-points-icon-display0* array) +;; (define-extern *hud-points-icon-display0-proc* object) +;; (define-extern spawn-hud-points-icon-display0 function) +;; (define-extern *hud-points-icon-display1* array) +;; (define-extern *hud-points-icon-display1-proc* object) +;; (define-extern spawn-hud-points-icon-display1 function) +;; (define-extern *hud-points-icon-display2* array) +;; (define-extern *hud-points-icon-display2-proc* object) +;; (define-extern spawn-hud-points-icon-display2 function) +;; (define-extern *hud-points-icon-display3* array) +;; (define-extern *hud-points-icon-display3-proc* object) +;; (define-extern spawn-hud-points-icon-display3 function) +;; (define-extern *hud-points-icon-display4* array) +;; (define-extern *hud-points-icon-display4-proc* object) +;; (define-extern spawn-hud-points-icon-display4 function) +;; (define-extern spawn-unused-hud-points-icon-display function) +;; (define-extern set-to-upper-right function) +;; (define-extern create-points-icon-from-screen-pos function) +;; (define-extern create-points-icon function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; hud-widgets-4 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype text-display-nice-shot (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-headset-talker (hud-item-group) + ((decoder-talk-times UNKNOWN 8 :offset-assert 44) + ) + :method-count-assert 24 + :size-assert #x4c + :flag-assert #x180000004c + ) +|# + +#| +(deftype hud-headset-talker-race (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-headset-talker-other (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern *text-display-nice-shot* array) +;; (define-extern *text-display-nice-shot-proc* object) +;; (define-extern spawn-text-display-nice-shot function) +;; (define-extern display-nice-shot-to-view function) +;; (define-extern *hud-headset-talker-race* array) +;; (define-extern *hud-headset-talker-race-proc* object) +;; (define-extern spawn-hud-headset-talker-race function) +;; (define-extern *hud-headset-talker-other* array) +;; (define-extern *hud-headset-talker-other-proc* object) +;; (define-extern spawn-hud-headset-talker-other function) +;; (define-extern *last-talker-ids* object) +;; (define-extern spawn-hud-headset-talker function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; in-game-menu-hud ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype in-game-menu-struct (structure) + ((last-selection-index int8 :offset-assert 0) + (confirmation-sym basic :offset-assert 4) + ) + :method-count-assert 10 + :size-assert #x8 + :flag-assert #xa00000008 + (:methods + (in-game-menu-struct-method-9 () none) ;; 9 + ) + ) +|# + +#| +(deftype hud-bar-slider (hud-item-group) + () + :method-count-assert 25 + :size-assert #x2c + :flag-assert #x190000002c + (:methods + (hud-bar-slider-method-24 () none) ;; 24 + ) + ) +|# + +#| +(deftype in-game-menu-hud (hud-item-group) + ((start-time uint64 :offset-assert 48) + (selection-index int8 :offset-assert 56) + (old-clock-ratio UNKNOWN 22 :offset-assert 60) + (sound-id uint32 :offset-assert 148) + ) + :method-count-assert 26 + :size-assert #x98 + :flag-assert #x1a00000098 + (:methods + (in-game-menu-hud-method-24 () none) ;; 24 + (in-game-menu-hud-method-25 () none) ;; 25 + ) + ) +|# + +#| +(deftype in-game-menu-hud-options (in-game-menu-hud) + () + :method-count-assert 26 + :size-assert #x98 + :flag-assert #x1a00000098 + ) +|# + +#| +(deftype hud-in-game-menu-view-0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-in-game-menu-view-1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-in-game-menu-view-2 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-in-game-menu-view-shared-0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-in-game-menu-view-shared-1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-in-game-menu-view-shared-2 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-in-game-menu-networked-view-0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-in-game-menu-networked-view-1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-in-game-menu-networked-view-2 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern *in-game-menu-process* object) +;; (define-extern *in-game-menu-on?* object) +;; (define-extern in-game-menu-allowed? function) +;; (define-extern *in-game-menu-struct* object) +;; (define-extern *hud-in-game-menu-view-0* array) +;; (define-extern *hud-in-game-menu-view-0-proc* object) +;; (define-extern spawn-hud-in-game-menu-view-0 function) +;; (define-extern *hud-in-game-menu-view-1* array) +;; (define-extern *hud-in-game-menu-view-1-proc* object) +;; (define-extern spawn-hud-in-game-menu-view-1 function) +;; (define-extern *hud-in-game-menu-view-2* array) +;; (define-extern *hud-in-game-menu-view-2-proc* object) +;; (define-extern spawn-hud-in-game-menu-view-2 function) +;; (define-extern *hud-in-game-menu-view-shared-0* array) +;; (define-extern *hud-in-game-menu-view-shared-0-proc* object) +;; (define-extern spawn-hud-in-game-menu-view-shared-0 function) +;; (define-extern *hud-in-game-menu-view-shared-1* array) +;; (define-extern *hud-in-game-menu-view-shared-1-proc* object) +;; (define-extern spawn-hud-in-game-menu-view-shared-1 function) +;; (define-extern *hud-in-game-menu-view-shared-2* array) +;; (define-extern *hud-in-game-menu-view-shared-2-proc* object) +;; (define-extern spawn-hud-in-game-menu-view-shared-2 function) +;; (define-extern spawn-hud-in-game-menu function) +;; (define-extern *hud-in-game-menu-networked-view-0* array) +;; (define-extern *hud-in-game-menu-networked-view-0-proc* object) +;; (define-extern spawn-hud-in-game-menu-networked-view-0 function) +;; (define-extern *hud-in-game-menu-networked-view-1* array) +;; (define-extern *hud-in-game-menu-networked-view-1-proc* object) +;; (define-extern spawn-hud-in-game-menu-networked-view-1 function) +;; (define-extern *hud-in-game-menu-networked-view-2* array) +;; (define-extern *hud-in-game-menu-networked-view-2-proc* object) +;; (define-extern spawn-hud-in-game-menu-networked-view-2 function) +;; (define-extern spawn-hud-in-game-menu-networked function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; in-game-menu-hud2 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-in-game-menu-options-view-0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-in-game-menu-options-view-1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-in-game-menu-options-view-2 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern *hud-in-game-menu-options-view-0* array) +;; (define-extern *hud-in-game-menu-options-view-0-proc* object) +;; (define-extern spawn-hud-in-game-menu-options-view-0 function) +;; (define-extern *hud-in-game-menu-options-view-1* array) +;; (define-extern *hud-in-game-menu-options-view-1-proc* object) +;; (define-extern spawn-hud-in-game-menu-options-view-1 function) +;; (define-extern *hud-in-game-menu-options-view-2* array) +;; (define-extern *hud-in-game-menu-options-view-2-proc* object) +;; (define-extern spawn-hud-in-game-menu-options-view-2 function) +;; (define-extern spawn-hud-in-game-menu-options function) +;; (define-extern in-game-menu-startup function) +;; (define-extern in-game-menu-on? function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-game-mgr ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype intro-hud-view (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype special-intro-hud-view (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern *intro-hud-view* array) +;; (define-extern *intro-hud-view-proc* object) +;; (define-extern spawn-intro-hud-view function) +;; (define-extern *special-intro-hud-view* array) +;; (define-extern *special-intro-hud-view-proc* object) +;; (define-extern spawn-special-intro-hud-view function) +;; (define-extern spawn-special-intro-hud function) +;; (define-extern spawn-intro-hud function) +;; (define-extern set-battle-camera-matrix function) +;; (define-extern cam-battle-intro-player-update function) +;; (define-extern cam-battle-intro-update function) +;; (define-extern update-framing function) +;; (define-extern do-battle-intro function) +;; (define-extern cam-battle-intro state) +;; (define-extern print-intro-text function) +;; (define-extern cam-event-intro-update function) +;; (define-extern do-event-intro function) +;; (define-extern cam-event-intro state) +;; (define-extern calc-team-score function) +;; (define-extern net-game-mgr-default-handler function) +;; (define-extern reset-game-now function) +;; (define-extern check-body-part-award function) +;; (define-extern net-game-mgr-init-local function) +;; (define-extern late-join-spawn-players function) +;; (define-extern wait-for-all-net-players function) +;; (define-extern play-mode-startup-hook function) +;; (define-extern get-game-mgr-type function) +;; (define-extern spawn-game-mgr function) +;; (define-extern *backup-player-ladder-stats* object) +;; (define-extern *tmp-awards* object) +;; (define-extern *award-table* array) +;; (define-extern overall-score-amount-to-gamble function) +;; (define-extern award-overall-score function) +;; (define-extern got-other-players function) +;; (define-extern quit-game-stats-update function) +;; (define-extern current-level-difficulty function) +;; (define-extern difficulty-stats function) +;; (define-extern are-we-in-time-trial-mode? function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-race ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype race-mesh-debug (process) + ((mesh basic :offset-assert 144) + ) + :method-count-assert 16 + :size-assert #x94 + :flag-assert #x1000100094 + (:methods + (race-mesh-debug-method-9 () none) ;; 9 + (race-mesh-debug-method-10 () none) ;; 10 + (race-mesh-debug-method-11 () none) ;; 11 + (race-mesh-debug-method-12 () none) ;; 12 + (race-mesh-debug-method-13 () none) ;; 13 + (race-mesh-debug-method-14 () none) ;; 14 + ) + (:state-methods + idle ;; 15 + ) + ) +|# + +;; (define-extern *starting-race-grid* object) +;; (define-extern shuffle-race-grid function) +;; (define-extern change-to-eye-position function) +;; (define-extern set-race-camera-matrix function) +;; (define-extern cam-race-intro-update function) +;; (define-extern cam-race-intro state) +;; (define-extern set-race-end-camera function) +;; (define-extern get-race-line-info function) +;; (define-extern adjust-position-to-above-ground function) +;; (define-extern cam-race-end-side-view function) +;; (define-extern cam-race-end-low-fixed function) +;; (define-extern cam-race-end-high-aiming function) +;; (define-extern do-race-end function) +;; (define-extern cam-race-end state) +;; (define-extern get-nearest-race-point function) +;; (define-extern net-game-mgr-race-startup function) +;; (define-extern race-info-find-ground function) +;; (define-extern race-mesh-debug-init-by-other function) +;; (define-extern spawn-race-mesh-debug function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-race-hud ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype damage-record (structure) + ((player-id int32 :offset-assert 0) + (part basic :offset-assert 4) + (start-time int32 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype rotation-record (structure) + ((index1 int32 :offset-assert 0) + (index2 int32 :offset-assert 4) + (start-time int32 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype hud-player-positions (hud-item-group) + ((player-position-list UNKNOWN 6 :offset-assert 44) + (player-count int32 :offset-assert 68) + (rotations UNKNOWN 3 :offset-assert 72) + (used-rotations int32 :offset-assert 120) + (damage-records UNKNOWN 6 :offset-assert 124) + (used-damage-records int32 :offset-assert 220) + (horizontal basic :offset-assert 224) + ) + :method-count-assert 36 + :size-assert #xe4 + :flag-assert #x24000000e4 + (:methods + (hud-player-positions-method-24 () none) ;; 24 + (hud-player-positions-method-25 () none) ;; 25 + (hud-player-positions-method-26 () none) ;; 26 + (hud-player-positions-method-27 () none) ;; 27 + (hud-player-positions-method-28 () none) ;; 28 + (hud-player-positions-method-29 () none) ;; 29 + (hud-player-positions-method-30 () none) ;; 30 + (hud-player-positions-method-31 () none) ;; 31 + (hud-player-positions-method-32 () none) ;; 32 + (hud-player-positions-method-33 () none) ;; 33 + (hud-player-positions-method-34 () none) ;; 34 + (hud-player-positions-method-35 () none) ;; 35 + ) + ) +|# + +#| +(deftype hud-player-progress (hud-item-group) + () + :method-count-assert 26 + :size-assert #x2c + :flag-assert #x1a0000002c + (:methods + (hud-player-progress-method-24 () none) ;; 24 + (hud-player-progress-method-25 () none) ;; 25 + ) + ) +|# + +#| +(deftype hud-race-stats-single (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-race-stats-top-view-0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-race-stats-side-view-0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-race-stats-view-1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern *hud-race-stats-single* array) +;; (define-extern *hud-race-stats-single-proc* object) +;; (define-extern spawn-hud-race-stats-single function) +;; (define-extern *hud-race-stats-top-view-0* array) +;; (define-extern *hud-race-stats-top-view-0-proc* object) +;; (define-extern spawn-hud-race-stats-top-view-0 function) +;; (define-extern *hud-race-stats-side-view-0* array) +;; (define-extern *hud-race-stats-side-view-0-proc* object) +;; (define-extern spawn-hud-race-stats-side-view-0 function) +;; (define-extern *hud-race-stats-view-1* array) +;; (define-extern *hud-race-stats-view-1-proc* object) +;; (define-extern spawn-hud-race-stats-view-1 function) +;; (define-extern spawn-hud-race-stats function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-deathrace ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-deathrace-stats-single (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-deathrace-stats-multi (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-deathrace-stats-split-view-0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-deathrace-stats-split-view-1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern *hud-deathrace-stats-single* array) +;; (define-extern *hud-deathrace-stats-single-proc* object) +;; (define-extern spawn-hud-deathrace-stats-single function) +;; (define-extern *hud-deathrace-stats-multi* array) +;; (define-extern *hud-deathrace-stats-multi-proc* object) +;; (define-extern spawn-hud-deathrace-stats-multi function) +;; (define-extern *hud-deathrace-stats-split-view-0* array) +;; (define-extern *hud-deathrace-stats-split-view-0-proc* object) +;; (define-extern spawn-hud-deathrace-stats-split-view-0 function) +;; (define-extern *hud-deathrace-stats-split-view-1* array) +;; (define-extern *hud-deathrace-stats-split-view-1-proc* object) +;; (define-extern spawn-hud-deathrace-stats-split-view-1 function) +;; (define-extern spawn-hud-deathrace-stats-split function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-rushhour ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-rushhour-stats-view-0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-rushhour-stats-view-1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern *rushhour-drone-colors* array) +;; (define-extern *hud-rushhour-stats-view-0* array) +;; (define-extern *hud-rushhour-stats-view-0-proc* object) +;; (define-extern spawn-hud-rushhour-stats-view-0 function) +;; (define-extern *hud-rushhour-stats-view-1* array) +;; (define-extern *hud-rushhour-stats-view-1-proc* object) +;; (define-extern spawn-hud-rushhour-stats-view-1 function) +;; (define-extern spawn-hud-rushhour-stats function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-boss-battle ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-boss-meter (hud-item-group) + ((player-id int32 :offset-assert 44) + (health float :offset-assert 48) + ) + :method-count-assert 24 + :size-assert #x34 + :flag-assert #x1800000034 + ) +|# + +#| +(deftype boss-hud (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern *boss-hud* array) +;; (define-extern *boss-hud-proc* object) +;; (define-extern spawn-boss-hud function) +;; (define-extern *boss-battle-continue-busy* object) +;; (define-extern boss-battle-continue function) +;; (define-extern boss-battle-task function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; race-sabotage ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype sabotage-sequence (process) + ((net-player uint64 :offset-assert 144) + (vehicle uint64 :offset-assert 152) + (fire-tracker uint64 :offset-assert 160) + (shoot basic :offset-assert 168) + (explode basic :offset-assert 172) + (event-time uint64 :offset-assert 176) + (text-time uint64 :offset-assert 184) + (suppress-text basic :offset-assert 192) + ) + :method-count-assert 17 + :size-assert #xc4 + :flag-assert #x11004000c4 + (:methods + (sabotage-sequence-method-9 () none) ;; 9 + (sabotage-sequence-method-10 () none) ;; 10 + (sabotage-sequence-method-11 () none) ;; 11 + (sabotage-sequence-method-12 () none) ;; 12 + (sabotage-sequence-method-13 () none) ;; 13 + (sabotage-sequence-method-14 () none) ;; 14 + (sabotage-sequence-method-16 () none) ;; 16 + ) + (:state-methods + idle ;; 15 + ) + ) +|# + +;; (define-extern sabotage-sequence-trans function) +;; (define-extern sabotage-sequence-init-by-other function) +;; (define-extern sabotage-sequence-start function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; hud-oneoff ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hoff-text-floater (process) + ((screen-from vector :inline :offset-assert 144) + (float-rate float :offset-assert 160) + (duration uint64 :offset-assert 168) + (state-time uint64 :offset-assert 176) + (context basic :offset-assert 184) + (text basic :offset-assert 188) + ) + :method-count-assert 16 + :size-assert #xc0 + :flag-assert #x10003000c0 + (:methods + (hoff-text-floater-method-9 () none) ;; 9 + (hoff-text-floater-method-10 () none) ;; 10 + (hoff-text-floater-method-11 () none) ;; 11 + (hoff-text-floater-method-12 () none) ;; 12 + (hoff-text-floater-method-13 () none) ;; 13 + (hoff-text-floater-method-14 () none) ;; 14 + ) + (:state-methods + run ;; 15 + ) + ) +|# + +#| +(deftype hoff-text-floater-init-params (structure) + ((world-from vector :inline :offset-assert 0) + (float-rate float :offset-assert 16) + (duration uint32 :offset-assert 20) + (in-view int32 :offset-assert 24) + (in-static-string basic :offset-assert 28) + (alloc-string-length uint8 :offset-assert 32) + (color uint8 :offset-assert 33) + (scale float :offset-assert 36) + (flags uint16 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2a + :flag-assert #x90000002a + ) +|# + +;; (define-extern hoff-text-floater-init-by-other function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-deathmatch ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype spawn-point (process) + ((name basic :offset-assert 0) + (mask process-mask :offset-assert 4) + (clock basic :offset-assert 8) + (view basic :offset-assert 12) + (parent uint32 :offset-assert 16) + (brother uint32 :offset-assert 20) + (child uint32 :offset-assert 24) + (ppointer uint32 :offset-assert 28) + (self basic :offset-assert 32) + (profile-ticks uint32 :offset-assert 36) + (pool basic :offset-assert 40) + (status basic :offset-assert 44) + (pid int32 :offset-assert 48) + (main-thread basic :offset-assert 52) + (top-thread basic :offset-assert 56) + (entity basic :offset-assert 60) + (level basic :offset-assert 64) + (state basic :offset-assert 68) + (prev-state basic :offset-assert 72) + (next-state basic :offset-assert 76) + (state-stack basic :offset-assert 80) + (trans-hook basic :offset-assert 84) + (post-hook basic :offset-assert 88) + (event-hook basic :offset-assert 92) + (allocated-length int32 :offset-assert 96) + (heap-base uint32 :offset-assert 108) + (heap-top uint32 :offset-assert 112) + (heap-cur uint32 :offset-assert 116) + (stack-frame-top basic :offset-assert 120) + (heap kheap :inline :offset-assert 108) + (connection-list connectable :inline :offset-assert 124) + (stack UNKNOWN :dynamic :offset-assert 140) + ) + :method-count-assert 15 + :size-assert #x90 + :flag-assert #xf00000090 + (:methods + (spawn-point-method-9 () none) ;; 9 + (spawn-point-method-10 () none) ;; 10 + (spawn-point-method-11 () none) ;; 11 + (spawn-point-method-12 () none) ;; 12 + (spawn-point-method-13 () none) ;; 13 + (spawn-point-method-14 () none) ;; 14 + ) + ) +|# + +#| +(deftype hud-deathmatch-single (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-deathmatch-split-view-0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-deathmatch-split-view-1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-deathmatch-score-drop-view-10 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-deathmatch-score-drop-view-11 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-deathmatch-score-drop-view-20 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-deathmatch-score-drop-view-21 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern *hud-deathmatch-single* array) +;; (define-extern *hud-deathmatch-single-proc* object) +;; (define-extern spawn-hud-deathmatch-single function) +;; (define-extern *hud-deathmatch-split-view-0* array) +;; (define-extern *hud-deathmatch-split-view-0-proc* object) +;; (define-extern spawn-hud-deathmatch-split-view-0 function) +;; (define-extern *hud-deathmatch-split-view-1* array) +;; (define-extern *hud-deathmatch-split-view-1-proc* object) +;; (define-extern spawn-hud-deathmatch-split-view-1 function) +;; (define-extern spawn-hud-deathmatch-split function) +;; (define-extern *hud-deathmatch-score-drop-view-10* array) +;; (define-extern *hud-deathmatch-score-drop-view-10-proc* object) +;; (define-extern spawn-hud-deathmatch-score-drop-view-10 function) +;; (define-extern *hud-deathmatch-score-drop-view-11* array) +;; (define-extern *hud-deathmatch-score-drop-view-11-proc* object) +;; (define-extern spawn-hud-deathmatch-score-drop-view-11 function) +;; (define-extern spawn-unused-hud-deathmatch-score-drop-view-1 function) +;; (define-extern *hud-deathmatch-score-drop-view-20* array) +;; (define-extern *hud-deathmatch-score-drop-view-20-proc* object) +;; (define-extern spawn-hud-deathmatch-score-drop-view-20 function) +;; (define-extern *hud-deathmatch-score-drop-view-21* array) +;; (define-extern *hud-deathmatch-score-drop-view-21-proc* object) +;; (define-extern spawn-hud-deathmatch-score-drop-view-21 function) +;; (define-extern spawn-unused-hud-deathmatch-score-drop-view-2 function) +;; (define-extern spawn-hud-deathmatch-score-drop function) +;; (define-extern spawn-hud-deathmatch function) +;; (define-extern get-best-defensive-powerup function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-assassin ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-hud-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype fx-struct (structure) + ((offset-x int32 :offset-assert 0) + (offset-y int32 :offset-assert 4) + (scale-x basic :offset-assert 8) + (scale-y basic :offset-assert 12) + (alpha basic :offset-assert 16) + (angle basic :offset-assert 20) + (total-time uint32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype hud-vehicle (hud) + ((weapon-texture UNKNOWN 49 :offset-assert 6364) + (gun-texture basic :offset-assert 6364) + (missile-texture basic :offset-assert 6368) + (grenade-texture basic :offset-assert 6372) + (taserram-texture basic :offset-assert 6376) + (mine-texture basic :offset-assert 6380) + (shield-texture basic :offset-assert 6384) + (target-texture UNKNOWN 2 :offset-assert 6560) + (slot-roulette-active? UNKNOWN 2 :offset-assert 6568) + (button-out? UNKNOWN 2 :offset-assert 6576) + (weapon-picked? UNKNOWN 2 :offset-assert 6584) + (slot-roulette-start-time UNKNOWN 2 :offset-assert 6592) + (roulette-counter UNKNOWN 2 :offset-assert 6600) + (weapon-color UNKNOWN 2 :offset-assert 6608) + (selected-weapon UNKNOWN 2 :offset-assert 6610) + (powerup-level int32 :offset-assert 6612) + (last-light-level int8 :offset-assert 6616) + (light-bar-part-right-init basic :offset-assert 6620) + (light-bar-part-right-filled basic :offset-assert 6624) + (light-bar-part-left-init basic :offset-assert 6628) + (light-bar-part-left-filled basic :offset-assert 6632) + (current-light-eco float :offset-assert 6636) + (current-green-eco float :offset-assert 6640) + (current-blue-eco float :offset-assert 6644) + (slot-weapon-color UNKNOWN 2 :offset-assert 6648) + (incoming? basic :offset-assert 6652) + (light-eco-level float :offset-assert 6656) + (light-eco-level-fx-start-time uint32 :offset-assert 6660) + (split-screen-offset-left-x float :offset-assert 6664) + (split-screen-offset-right-x float :offset-assert 6668) + (split-screen-offset-y float :offset-assert 6672) + (hud-right-ammo-counter-1 hud-sprite :inline :offset-assert 3056) + (hud-right-ammo-counter-2 hud-sprite :inline :offset-assert 3120) + (hud-right-light-underlay hud-sprite :inline :offset-assert 3184) + (hud-right-light-ctrl-1 hud-sprite :inline :offset-assert 3248) + (hud-right-light-ctrl-2 hud-sprite :inline :offset-assert 3312) + (hud-right-light-ctrl-3 hud-sprite :inline :offset-assert 3376) + (hud-right-light-bar hud-sprite :inline :offset-assert 3440) + (hud-right-turbo-underlay hud-sprite :inline :offset-assert 3504) + (hud-right-turbo-ctrl-1 hud-sprite :inline :offset-assert 3568) + (hud-right-turbo-ctrl-2 hud-sprite :inline :offset-assert 3632) + (hud-right-turbo-bar hud-sprite :inline :offset-assert 3696) + (hud-right-display-weapon-field hud-sprite :inline :offset-assert 3760) + (hud-right-upper-left hud-sprite :inline :offset-assert 3824) + (hud-right-upper-right hud-sprite :inline :offset-assert 3888) + (hud-right-lower-right hud-sprite :inline :offset-assert 3952) + (hud-right-lower-left hud-sprite :inline :offset-assert 4016) + (hud-right-ammo-counter-overlay hud-sprite :inline :offset-assert 4080) + (hud-right-ammo-counter-overlay-2 hud-sprite :inline :offset-assert 4144) + (hud-right-weapon-icon-shadow hud-sprite :inline :offset-assert 4208) + (hud-right-weapon-icon hud-sprite :inline :offset-assert 4272) + (hud-right-display-shine hud-sprite :inline :offset-assert 4336) + (hud-left-ammo-counter-1 hud-sprite :inline :offset-assert 4400) + (hud-left-ammo-counter-2 hud-sprite :inline :offset-assert 4464) + (hud-left-light-underlay hud-sprite :inline :offset-assert 4528) + (hud-left-light-ctrl-1 hud-sprite :inline :offset-assert 4592) + (hud-left-light-ctrl-2 hud-sprite :inline :offset-assert 4656) + (hud-left-light-ctrl-3 hud-sprite :inline :offset-assert 4720) + (hud-left-light-bar hud-sprite :inline :offset-assert 4784) + (hud-left-health-underlay hud-sprite :inline :offset-assert 4848) + (hud-left-health-ctrl-1 hud-sprite :inline :offset-assert 4912) + (hud-left-health-ctrl-2 hud-sprite :inline :offset-assert 4976) + (hud-left-health-bar hud-sprite :inline :offset-assert 5040) + (hud-left-display-weapon-field hud-sprite :inline :offset-assert 5104) + (hud-left-upper-left hud-sprite :inline :offset-assert 5168) + (hud-left-upper-right hud-sprite :inline :offset-assert 5232) + (hud-left-lower-left hud-sprite :inline :offset-assert 5296) + (hud-left-lower-right hud-sprite :inline :offset-assert 5360) + (hud-left-ammo-counter-overlay hud-sprite :inline :offset-assert 5424) + (hud-left-ammo-counter-overlay-2 hud-sprite :inline :offset-assert 5488) + (hud-left-weapon-icon-shadow hud-sprite :inline :offset-assert 5552) + (hud-left-weapon-icon hud-sprite :inline :offset-assert 5616) + (hud-left-display-shine hud-sprite :inline :offset-assert 5680) + (hud-turbo-disabled hud-sprite :inline :offset-assert 5744) + ) + :method-count-assert 40 + :size-assert #x1a14 + :flag-assert #x2819901a14 + (:methods + (hud-vehicle-method-30 () none) ;; 30 + (hud-vehicle-method-31 () none) ;; 31 + (hud-vehicle-method-32 () none) ;; 32 + (hud-vehicle-method-33 () none) ;; 33 + (hud-vehicle-method-34 () none) ;; 34 + (hud-vehicle-method-35 () none) ;; 35 + (hud-vehicle-method-36 () none) ;; 36 + (hud-vehicle-method-37 () none) ;; 37 + (hud-vehicle-method-38 () none) ;; 38 + (hud-vehicle-method-39 () none) ;; 39 + ) + ) +|# + +;; (define-extern *default-fast-curve* curve2d-fast) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-hud ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-vehicle-large-bar (hud-item-group) + ((u float :offset-assert 44) + (angle float :offset-assert 48) + (side uint64 :offset-assert 56) + ) + :method-count-assert 25 + :size-assert #x40 + :flag-assert #x1900000040 + (:methods + (hud-vehicle-large-bar-method-24 () none) ;; 24 + ) + ) +|# + +#| +(deftype hud-vehicle-eco-bar (hud-item-group) + ((u float :offset-assert 44) + (angle float :offset-assert 48) + (side uint64 :offset-assert 56) + (part-filled basic :offset-assert 64) + (part-init basic :offset-assert 68) + ) + :method-count-assert 26 + :size-assert #x48 + :flag-assert #x1a00000048 + (:methods + (hud-vehicle-eco-bar-method-24 () none) ;; 24 + (hud-vehicle-eco-bar-method-25 () none) ;; 25 + ) + ) +|# + +#| +(deftype hud-vehicle-ammo (hud-item-group) + ((side uint64 :offset-assert 48) + ) + :method-count-assert 24 + :size-assert #x38 + :flag-assert #x1800000038 + ) +|# + +#| +(deftype hud-weapon-field (hud-item-group) + ((side uint64 :offset-assert 48) + (spinning basic :offset-assert 56) + (next-change-time int32 :offset-assert 60) + (weapon-selection uint8 :offset-assert 64) + (powerup-level int32 :offset-assert 68) + (overdraw-number int32 :offset-assert 72) + (yellow-back basic :offset-assert 76) + (neutral-back basic :offset-assert 80) + (red-back basic :offset-assert 84) + (hud-transparent-01 basic :offset-assert 88) + (hud-w-peashooter-01 basic :offset-assert 92) + (hud-w-leadfoot-01 basic :offset-assert 96) + (hud-w-chain-gun-01 basic :offset-assert 100) + (hud-w-coil-gun-01 basic :offset-assert 104) + (hud-w-tracking-missile-double-01 basic :offset-assert 108) + (hud-w-tracking-missile-quad-01 basic :offset-assert 112) + (hud-w-skullsplitter-01 basic :offset-assert 116) + (hud-w-fragmentation-01 basic :offset-assert 120) + (hud-w-suc-seeker-01 basic :offset-assert 124) + (hud-w-sup-suc-seeker-01 basic :offset-assert 128) + (hud-w-chickendrone-01 basic :offset-assert 132) + (hud-w-homing-drone-01 basic :offset-assert 136) + (hud-w-mine-magna-01 basic :offset-assert 140) + (hud-w-mine-01 basic :offset-assert 144) + (hud-w-smokescreen-01 basic :offset-assert 148) + (hud-w-pcell-01 basic :offset-assert 152) + (hud-w-smokescreen-electric-01 basic :offset-assert 156) + (hud-w-oilslick-01 basic :offset-assert 160) + (hud-w-stelnova-01 basic :offset-assert 164) + (hud-w-firewall-01 basic :offset-assert 168) + (hud-w-angrybot-01 basic :offset-assert 172) + (hud-w-dumbbot-01 basic :offset-assert 176) + (hud-w-turbozap-01 basic :offset-assert 180) + (hud-w-ultraturbo-01 basic :offset-assert 184) + (hud-w-lilbuddy-01 basic :offset-assert 188) + (hud-w-demondrone-01 basic :offset-assert 192) + (hud-w-shield-deflexor-01 basic :offset-assert 196) + (hud-w-shield-deathtouch-01 basic :offset-assert 200) + (hud-w-earthshaker-01 basic :offset-assert 204) + (hud-w-stelnova-01 basic :offset-assert 164) + (hud-w-clone-car-01 basic :offset-assert 212) + ) + :method-count-assert 25 + :size-assert #xd8 + :flag-assert #x19000000d8 + (:methods + (hud-weapon-field-method-24 () none) ;; 24 + ) + ) +|# + +#| +(deftype hud-vehicle-left (hud-item-group) + () + :method-count-assert 24 + :size-assert #x2c + :flag-assert #x180000002c + ) +|# + +#| +(deftype hud-vehicle-right (hud-item-group) + () + :method-count-assert 24 + :size-assert #x2c + :flag-assert #x180000002c + ) +|# + +#| +(deftype vehicle-hud-view-0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype vehicle-hud-view-1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern *vehicle-hud-view-0* array) +;; (define-extern *vehicle-hud-view-0-proc* object) +;; (define-extern spawn-vehicle-hud-view-0 function) +;; (define-extern *vehicle-hud-view-1* array) +;; (define-extern *vehicle-hud-view-1-proc* object) +;; (define-extern spawn-vehicle-hud-view-1 function) +;; (define-extern spawn-vehicle-hud function) +;; (define-extern kill-vehicle-hud function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; hud-widgets-powerhang ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-item-power-slide-distance-tenths (hud-item-string) + ((distance float :offset-assert 60) + ) + :method-count-assert 29 + :size-assert #x40 + :flag-assert #x1d00000040 + ) +|# + +#| +(deftype hud-item-power-slide-distance (hud-item-string) + ((distance float :offset-assert 60) + ) + :method-count-assert 29 + :size-assert #x40 + :flag-assert #x1d00000040 + ) +|# + +#| +(deftype power-slide-hud-single (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-item-hang-time-tenths-seconds (hud-item-string) + ((seconds float :offset-assert 60) + ) + :method-count-assert 29 + :size-assert #x40 + :flag-assert #x1d00000040 + ) +|# + +#| +(deftype hud-item-hang-time-seconds (hud-item-string) + ((seconds float :offset-assert 60) + ) + :method-count-assert 29 + :size-assert #x40 + :flag-assert #x1d00000040 + ) +|# + +#| +(deftype hang-time-hud-single (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern *power-slide-hud-single* array) +;; (define-extern *power-slide-hud-single-proc* object) +;; (define-extern spawn-power-slide-hud-single function) +;; (define-extern *hang-time-hud-single* array) +;; (define-extern *hang-time-hud-single-proc* object) +;; (define-extern spawn-hang-time-hud-single function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-wheel ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype vehicle-wheel-init-params (structure) + ((vehicle basic :offset-assert 0) + (skel skeleton-group :offset-assert 4) ;; guessed by decompiler + (level symbol :offset-assert 8) ;; guessed by decompiler + (radius float :offset-assert 12) + (position vector :inline :offset-assert 16) + (rotation quaternion :inline :offset-assert 32) + (scale vector :inline :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) +|# + +#| +(deftype vehicle-wheel (rigid-body-object) + ((camera-dist float :offset-assert 288) + ) + :method-count-assert 93 + :size-assert #x124 + :flag-assert #x5d00a00124 + (:methods + (vehicle-wheel-method-92 () none) ;; 92 + ) + (:state-methods + idle ;; 59 + die ;; 91 + explode ;; 89 + fade-out ;; 90 + ) + ) +|# + +;; (define-extern *vehicle-wheel-constants* object) ;; rigid-body-object-constants +;; (define-extern vehicle-wheel-init-by-other function) ;; (function vehicle-wheel-init-params object :behavior vehicle-wheel) +;; (define-extern vehicle-wheel-spawn function) ;; (function process vehicle-wheel-init-params vehicle-wheel) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern birth-func-set-pos-vel function) +;; (define-extern birth-func-adopt-velocity-vehicle function) +;; (define-extern sparticle-adopt-accel-vehicle function) +;; (define-extern *range-carexplo-dust-color* curve-color-fast) +;; (define-extern *range-carexplo-dust-alpha* curve2d-fast) +;; (define-extern *range-carexplo-dust-scale-x* curve2d-fast) +;; (define-extern *range-carexplo-dust-scale-y* curve2d-fast) +;; (define-extern *curve-carexplo-dust-alpha* curve2d-fast) +;; (define-extern *curve-carexplo-dust-scale-x* curve2d-fast) +;; (define-extern *curve-carexplo-dust-scale-y* curve2d-fast) +;; (define-extern *part-car-explosion-dust-in-curve-settings* object) +;; (define-extern *range-carexplo-color* curve-color-fast) +;; (define-extern *range-carexplo-alpha* curve2d-fast) +;; (define-extern *range-carexplo-scale-x* curve2d-fast) +;; (define-extern *range-carexplo-scale-y* curve2d-fast) +;; (define-extern *curve-carexplo-alpha* curve2d-fast) +;; (define-extern *curve-carexplo-scale-x* curve2d-fast) +;; (define-extern *curve-carexplo-scale-y* curve2d-fast) +;; (define-extern *part-car-explosion-texture-curve-settings* object) +;; (define-extern sparticle-motion-blur-dirt function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern spt-birth-func-brightness-buggy-rocks function) ;; (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none) +;; (define-extern spt-birth-func-part-buggy-rocks function) ;; (function sparticle-system sparticle-cpuinfo sparticle-launchinfo object object none) +;; (define-extern spt-birth-func-part-dbuggy-debris function) ;; (function sparticle-system sparticle-cpuinfo sparticle-launchinfo object object none) +;; (define-extern spt-birth-func-brightness-buggy-snow function) +;; (define-extern spt-birth-func-part-wv-snow function) +;; (define-extern spt-birth-func-part-wv-grass function) +;; (define-extern *range-wv-wsplash-color* curve-color-fast) ;; curve-color-fast +;; (define-extern *range-wv-wsplash-alpha* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-wv-wsplash-scale-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-wv-wsplash-scale-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-wv-wsplash-alpha* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-wv-wsplash-scale-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-wv-wsplash-scale-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *part-wv-water-splash-curve-settings* object) ;; particle-curve-settings + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-weapons-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern birth-func-explosion-adopt-velocity function) +;; (define-extern birth-func-explosion-aligned-velocity function) +;; (define-extern birth-func-vws-adopt-velocity function) +;; (define-extern spt-birth-func-brightness-oil function) +;; (define-extern spt-func-part-oil-emit function) +;; (define-extern spt-func-part-oil-emit-sparkle function) +;; (define-extern check-scorp-shell-level1 function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern check-scorp-shell-level2 function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern *curve-toad-linear-up-red* object) ;; curve2d-piecewise +;; (define-extern *trail-color-curve-grenade-yellow* curve-color-fast) +;; (define-extern *curve-grenade-linear-toad-trail* curve2d-fast) ;; curve2d-fast +;; (define-extern *grenade-1-trail* object) +;; (define-extern *trail-color-curve-grenade-purple* curve-color-fast) +;; (define-extern *grenade-2-trail* object) +;; (define-extern *curve-yellow-tracker-linear-up-red* object) +;; (define-extern *trail-color-curve-yellow-tracker-grenade* curve-color-fast) +;; (define-extern *trail-color-curve-red-mine* curve-color-fast) +;; (define-extern *curve-yellow-tracker-linear-trail* curve2d-fast) +;; (define-extern *yellow-tracking-rocket-trail* object) +;; (define-extern *curve-missile-linear-up* curve2d-fast) +;; (define-extern *trail-color-curve-car-missile* curve-color-fast) +;; (define-extern *trail-color-curve-car-missile-II* curve-color-fast) +;; (define-extern *curve-missile-trail-width* curve2d-fast) +;; (define-extern *car-missile-trail* object) +;; (define-extern *car-missile-trail-II* object) +;; (define-extern *trail-color-curve-success-seeker* curve-color-fast) +;; (define-extern *success-seeker-trail* object) +;; (define-extern *curve-mine-width* object) +;; (define-extern *trail-color-purple-mine* curve-color-fast) +;; (define-extern *trail-color-red-mine* curve-color-fast) +;; (define-extern *mine-trail-red* object) +;; (define-extern *mine-trail-purple* object) +;; (define-extern shield-flash-part-callback function) +;; (define-extern *weapon-drone-glow-template* object) +;; (define-extern *weapon-drone-visor-template* object) +;; (define-extern *wasted-missile-colors* object) +;; (define-extern *wasted-missile-vec* object) +;; (define-extern *wasted-missile-origin?* object) +;; (define-extern birth-func-wasted-missile function) +;; (define-extern birth-func-copy-rotate-z-to-rot-z function) +;; (define-extern spt-birth-func-b-part-turbo-suppressed function) +;; (define-extern spt-func-part-turbo-suppressed function) +;; (define-extern birth-func-adopt-velocity function) +;; (define-extern sparticle-adopt-accel function) +;; (define-extern sparticle-seek-owner function) +;; (define-extern birth-func-dark-eco-bubble function) +;; (define-extern spt-func-bubble-alternate function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-effects ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype wvehicle-wheel-launcher-spec (structure) + ((mat matrix :offset-assert 0) + (particle-system sparticle-system :offset-assert 4) ;; guessed by decompiler + (streak-system basic :offset-assert 8) + (launcher sparticle-launcher :offset-assert 12) ;; guessed by decompiler + (num-spec sp-field-init-spec :offset-assert 16) + (r-spec sp-field-init-spec :offset-assert 20) + (g-spec sp-field-init-spec :offset-assert 24) + (b-spec sp-field-init-spec :offset-assert 28) + (a-spec sp-field-init-spec :offset-assert 32) + (scale-x-spec sp-field-init-spec :offset-assert 36) + (scale-y-spec sp-field-init-spec :offset-assert 40) + (fade-a-spec sp-field-init-spec :offset-assert 44) + (timer-spec sp-field-init-spec :offset-assert 48) + (ptr-part-birth-accum uint32 :offset-assert 52) + (ptr-streak-birth-accum uint32 :offset-assert 56) + ) + :method-count-assert 9 + :size-assert #x3c + :flag-assert #x90000003c + ) +|# + +#| +(deftype wvehicle-part-work (structure) + ((streak spark-launch-params :inline :offset-assert 0) + (local-mat matrix :inline :offset-assert 80) + (world-mat matrix :inline :offset-assert 144) + (velocity vector :inline :offset-assert 208) + (side-dir vector :inline :offset-assert 224) + (up-dir vector :inline :offset-assert 240) + (forward-dir vector :inline :offset-assert 256) + (wheel-axis vector :inline :offset-assert 272) + (surface-pos vector :inline :offset-assert 288) + (part-vel vector :inline :offset-assert 304) + (pos-l vector :inline :offset-assert 320) + (pos-r vector :inline :offset-assert 336) + (offset vector :inline :offset-assert 352) + (zero-offset vector :inline :offset-assert 368) + (prev-pos vector :inline :offset-assert 384) + (cull-plane vector :inline :offset-assert 400) + (cam-velocity vector :inline :offset-assert 416) + (world-pos vector :inline :offset-assert 432) + (dir vector :inline :offset-assert 448) + (rgb rgbaf :inline :offset-assert 464) + (surface-type uint8 :offset-assert 480) + (wheel-rev-speed float :offset-assert 484) + (wheel-speed float :offset-assert 488) + (wheel-radius float :offset-assert 492) + (wheel-width float :offset-assert 496) + (part-num float :offset-assert 500) + (rand-val float :offset-assert 504) + (streak-ratio float :offset-assert 508) + (streak-num float :offset-assert 512) + (streak-color-index uint32 :offset-assert 516) + (duration float :offset-assert 520) + (scale float :offset-assert 524) + (slip float :offset-assert 528) + (up-force float :offset-assert 532) + (alpha float :offset-assert 536) + (alpha-range float :offset-assert 540) + (vel-scale float :offset-assert 544) + (vel-range float :offset-assert 548) + (speed float :offset-assert 552) + (y-accel float :offset-assert 556) + (cur-time uint32 :offset-assert 560) + (ups float :offset-assert 564) + (dirt-launcher wvehicle-wheel-launcher-spec :inline :offset-assert 568) + (dust-launcher wvehicle-wheel-launcher-spec :inline :offset-assert 628) + (spray-launcher wvehicle-wheel-launcher-spec :inline :offset-assert 688) + (ripple-launcher wvehicle-wheel-launcher-spec :inline :offset-assert 748) + (snow-launcher wvehicle-wheel-launcher-spec :inline :offset-assert 808) + (grass-launcher wvehicle-wheel-launcher-spec :inline :offset-assert 868) + (dummy-spec sp-field-init-spec :inline :offset-assert 928) + ) + :method-count-assert 9 + :size-assert #x3b0 + :flag-assert #x9000003b0 + ) +|# + +#| +(deftype tire-trail-crumb (light-trail-breadcrumb) + ((pos vector :inline :offset-assert 0) + (birth-time uint32 :offset-assert 12) + (offset vector :inline :offset-assert 16) + (uu float :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype tire-trail (light-trail) + ((crumb-array (array uint8) :offset-assert 4) ;; guessed by decompiler + (crumb-size uint8 :offset-assert 8) + (crumb-count int16 :offset-assert 10) + (max-crumb-count int16 :offset-assert 12) + (appearance light-trail-composition :offset-assert 16) + (start-marker uint64 :offset-assert 24) + (end-marker uint64 :offset-assert 32) + (decision uint64 :offset-assert 40) ;; light-trail-decision + (total-distance-traveled float :offset-assert 48) + (strip prim-strip :offset-assert 52) ;; guessed by decompiler + (strip2 prim-strip :offset-assert 56) ;; guessed by decompiler + (cache-vector vector 4 :offset-assert 64) ;; guessed by decompiler + ) + :method-count-assert 25 + :size-assert #x80 + :flag-assert #x1900000080 + (:methods + (tire-trail-method-23 () none) ;; 23 ;; (tire-trail-method-23 (_type_ vector vector float) none) + (tire-trail-method-24 () none) ;; 24 + ) + ) +|# + +#| +(deftype tire-trail-tracker (light-trail-tracker) + () + :method-count-assert 24 + :size-assert #xbc + :flag-assert #x18003000bc + (:methods + (tire-trail-tracker-method-22 () none) ;; 22 + (tire-trail-tracker-method-23 () none) ;; 23 + ) + (:state-methods + tracking ;; 15 + ) + ) +|# + +;; (define-extern *wheel-trail-info* object) ;; light-trail-composition +;; (define-extern tire-trail-tracker-init-by-other function) ;; (function light-trail-tracker-spawn-params object :behavior tire-trail-tracker) +;; (define-extern spawn-tire-trail-tracker function) ;; (function process light-trail-tracker-spawn-params tire-trail-tracker) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-sounds ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype wvehicle-sound-loop-params (structure) + ((speed float :offset-assert 0) + (weight float :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype wvehicle-sound-work (structure) + ((roll-basis-params wvehicle-sound-loop-params 6 :offset-assert 0) ;; guessed by decompiler + (slide-basis-params wvehicle-sound-loop-params 2 :offset-assert 96) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) +|# + +#| +(deftype update-engine-mix-state-params (structure) + ((info-array uint32 :offset-assert 0) + (info-count int8 :offset-assert 4) + (sound-select int8 :offset-assert 5) + (rpm float :offset-assert 8) + (volume float :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype update-engine-loop-state-work (structure) + ((i-loop int8 :offset-assert 0) + (info vehicle-sound-engine-loop-info :offset-assert 4) + (volume float :offset-assert 8) + (pitch float :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype update-engine-mix-state-work (structure) + ((loops UNKNOWN 2 :offset-assert 0) + (xover1 float :offset-assert 32) + (xover2 float :offset-assert 36) + (crossover float :offset-assert 40) + (ups float :offset-assert 44) + (active-loop-count int8 :offset-assert 48) + (i-min int8 :offset-assert 49) + (i-max int8 :offset-assert 50) + ) + :method-count-assert 9 + :size-assert #x33 + :flag-assert #x900000033 + ) +|# + +;; (define-extern update-engine-mix-state function) +;; (define-extern *debug-engine-sound-work* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; vehicle-reticle ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype reticle-sprite-info (structure) + ((offset-x float :offset-assert 0) + (offset-y float :offset-assert 4) + (tex-id uint32 :offset-assert 8) + (color vector4w :inline :offset-assert 16) + (scale-x float :offset-assert 32) + (scale-y float :offset-assert 36) + (angle float :offset-assert 40) + (flags uint16 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x2e + :flag-assert #x90000002e + ) +|# + +#| +(deftype vehicle-reticle-base (process) + ((owner uint64 :offset-assert 144) + (state-time uint64 :offset-assert 152) + ) + :method-count-assert 15 + :size-assert #xa0 + :flag-assert #xf001000a0 + (:methods + (vehicle-reticle-base-method-9 () none) ;; 9 + (vehicle-reticle-base-method-10 () none) ;; 10 + (vehicle-reticle-base-method-11 () none) ;; 11 + (vehicle-reticle-base-method-12 () none) ;; 12 + (vehicle-reticle-base-method-13 () none) ;; 13 + (vehicle-reticle-base-method-14 () none) ;; 14 + ) + ) +|# + +#| +(deftype vehicle-reticle-on-me (vehicle-reticle-base) + ((targeted-by uint64 :offset-assert 160) + (hsprites-base UNKNOWN 3 :offset-assert 176) + (hsprites-missinc-static UNKNOWN 2 :offset-assert 368) + (hsprites-missinc-spinner UNKNOWN 1 :offset-assert 496) + (hsprites-missinc-converge UNKNOWN 2 :offset-assert 560) + (hsprites-peacemaker-converge UNKNOWN 4 :offset-assert 688) + (side-parts-kickout float :offset-assert 944) + (missile-by uint64 :offset-assert 952) + (missile-by-last-seen uint64 :offset-assert 960) + (missile-closest-dist float :offset-assert 968) + (lockon-sound uint32 :offset-assert 972) + ) + :method-count-assert 20 + :size-assert #x3d0 + :flag-assert #x14034003d0 + (:state-methods + idle ;; 15 + missile-incoming ;; 16 + missile-incoming-abort ;; 17 + peacemaker-incoming ;; 18 + peacemaker-incoming-abort ;; 19 + ) + ) +|# + +#| +(deftype vehicle-reticle-on-them (vehicle-reticle-base) + ((hsprites UNKNOWN 11 :offset-assert 160) + (spinner-rate uint64 :offset-assert 864) + (lockon-sound uint32 :offset-assert 872) + ) + :method-count-assert 17 + :size-assert #x36c + :flag-assert #x1102e0036c + (:state-methods + idle ;; 15 + vehicle-target ;; 16 + ) + ) +|# + +;; (define-extern reticle-wad-on-me-base array) +;; (define-extern reticle-wad-on-me-missile-static array) +;; (define-extern reticle-wad-on-me-missile-spinner array) +;; (define-extern reticle-wad-on-me-missile-converge array) +;; (define-extern reticle-wad-on-me-peacemaker-converge array) +;; (define-extern reticle-wad-on-him-base array) +;; (define-extern reticle-on-him-spinner object) +;; (define-extern reticle-on-him-color-enemy object) +;; (define-extern reticle-on-him-spinner-color-enemy object) +;; (define-extern reticle-allowed? function) +;; (define-extern vehicle-reticle-base-init-by-other function) +;; (define-extern vehicle-reticle-base-trans function) +;; (define-extern v-reticle-update-missile function) +;; (define-extern vehicle-reticle-on-me-init-by-other function) +;; (define-extern vehicle-reticle-on-me-helper-missile-inc function) +;; (define-extern vehicle-reticle-on-me-helper-peacemaker-inc function) +;; (define-extern vehicle-reticle-on-them-init-by-other function) +;; (define-extern targeting-reticle-for-this-weapon-type? function) +;; (define-extern targeting-reticle-line-of-sight? function) +;; (define-extern draw-reticle-on-them function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *freeze-hangtime* object) +;; (define-extern wv-player-post-move-update function) +;; (define-extern find-nearest-camera function) +;; (define-extern estimate-eng-torque-from-gear function) +;; (define-extern plot-engine-torque-curve function) +;; (define-extern plot-x-with-transform function) +;; (define-extern vehicle-handle->net-player function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-events ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern handle-weapon-removed-event function) +;; (define-extern handle-weapon-moved-event function) +;; (define-extern wv-weapon-pickup-helper function) +;; (define-extern wv-pickup-handler function) +;; (define-extern wv-set-handler function) +;; (define-extern wv-query-handler function) +;; (define-extern wv-go-handler function) +;; (define-extern wv-weapon-handler function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-util ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype vehicle-respawn-invul (process) + ((vehicle uint64 :offset-assert 144) + ) + :method-count-assert 16 + :size-assert #x98 + :flag-assert #x1000100098 + (:methods + (vehicle-respawn-invul-method-9 () none) ;; 9 + (vehicle-respawn-invul-method-10 () none) ;; 10 + (vehicle-respawn-invul-method-11 () none) ;; 11 + (vehicle-respawn-invul-method-12 () none) ;; 12 + (vehicle-respawn-invul-method-13 () none) ;; 13 + (vehicle-respawn-invul-method-14 () none) ;; 14 + ) + (:state-methods + idle ;; 15 + ) + ) +|# + +#| +(deftype vehicle-suppress-look (process) + ((vehicle uint64 :offset-assert 144) + ) + :method-count-assert 16 + :size-assert #x98 + :flag-assert #x1000100098 + (:methods + (vehicle-suppress-look-method-9 () none) ;; 9 + (vehicle-suppress-look-method-10 () none) ;; 10 + (vehicle-suppress-look-method-11 () none) ;; 11 + (vehicle-suppress-look-method-12 () none) ;; 12 + (vehicle-suppress-look-method-13 () none) ;; 13 + (vehicle-suppress-look-method-14 () none) ;; 14 + ) + (:state-methods + idle ;; 15 + ) + ) +|# + +;; (define-extern whoosh-shake-camera function) +;; (define-extern vehicle-respawn-invul-init-by-other function) +;; (define-extern vehicle-respawn-invul-spawn function) +;; (define-extern vehicle-suppress-look-init-by-other function) +;; (define-extern suppress-look-start function) +;; (define-extern local-space-proc-vehicle-turbo function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-ai ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype spring-tracker (structure) + ((speed float :offset-assert 0) + (spring-constant float :offset-assert 4) + ) + :method-count-assert 10 + :size-assert #x8 + :flag-assert #xa00000008 + (:methods + (spring-tracker-method-9 () none) ;; 9 + ) + ) +|# + +;; (define-extern get-portal-corner-point function) +;; (define-extern consider-attacking function) +;; (define-extern *wvehicle-ai-steering-params* array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-states ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *old-vector* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-physics ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype wvehicle-wheel-work (structure) + ((side-dir vector :inline :offset-assert 0) + (forward-dir vector :inline :offset-assert 16) + (velocity vector :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype wvehicle-physics-work (structure) + ((wheel-work-array UNKNOWN 4 :offset-assert 0) + (mat matrix :inline :offset-assert 192) + (force vector :inline :offset-assert 256) + (velocity vector :inline :offset-assert 272) + (vel-dir vector :inline :offset-assert 288) + (world-pos vector :inline :offset-assert 304) + (local-pos vector :inline :offset-assert 320) + (tmp vector :inline :offset-assert 336) + (p-body vector :inline :offset-assert 352) + (axis vector :inline :offset-assert 368) + (ground-pos vector :inline :offset-assert 384) + (forward-dir vector :inline :offset-assert 400) + (side-dir vector :inline :offset-assert 416) + (wheel-axis vector :inline :offset-assert 432) + (wsphere sphere :inline :offset-assert 448) + (vel-len float :offset-assert 464) + (forward-vel float :offset-assert 468) + (friction-coef float :offset-assert 472) + (wheel-radius float :offset-assert 476) + (gravity-mag float :offset-assert 480) + (downforce float :offset-assert 484) + (side-force float :offset-assert 488) + (forward-force float :offset-assert 492) + (max-forward-tire-grip float :offset-assert 496) + (max-side-tire-grip float :offset-assert 500) + (inertia-eff float :offset-assert 504) + (ground-torque float :offset-assert 508) + (braking-torque float :offset-assert 512) + (total-torque float :offset-assert 516) + (limit-braking-torque float :offset-assert 520) + (max-braking-torque float :offset-assert 524) + (traction-factor float :offset-assert 528) + (tire-traction float :offset-assert 532) + (surface-drag float :offset-assert 536) + (cur-time uint32 :offset-assert 540) + ) + :method-count-assert 9 + :size-assert #x220 + :flag-assert #x900000220 + ) +|# + +#| +(deftype wvehicle-probe-work (structure) + ((mat matrix :inline :offset-assert 0) + (world-pos vector :inline :offset-assert 64) + (probe-dir vector :inline :offset-assert 80) + (tmp vector :inline :offset-assert 96) + (ground-normal-sum vector :inline :offset-assert 112) + (probe-uu float :offset-assert 128) + (wheel-radius float :offset-assert 132) + (water-y float :offset-assert 136) + (surface-type uint8 :offset-assert 140) + (surface-depth float :offset-assert 144) + (material uint64 :offset-assert 152) + (cquery collide-query :inline :offset-assert 160) + ) + :method-count-assert 9 + :size-assert #x2bc + :flag-assert #x9000002bc + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; hud-player-indicators ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-health (hud-item-group) + ((health float :offset-assert 44) + ) + :method-count-assert 25 + :size-assert #x30 + :flag-assert #x1900000030 + (:methods + (hud-health-method-24 () none) ;; 24 + ) + ) +|# + +#| +(deftype hud-indicator (hud-item-group) + ((target uint64 :offset-assert 48) + (target-position vector :inline :offset-assert 64) + (id int32 :offset-assert 80) + (enemy-distance float :offset-assert 84) + (hud-direction-arrow-01 basic :offset-assert 88) + (hud-namebar-shape-01 basic :offset-assert 92) + (offscreen basic :offset-assert 96) + (only-direction-arrows basic :offset-assert 100) + (fade-at-distance basic :offset-assert 104) + (no-direction-indicator basic :offset-assert 108) + (indicator-alpha float :offset-assert 112) + ) + :method-count-assert 27 + :size-assert #x74 + :flag-assert #x1b00000074 + (:methods + (hud-indicator-method-24 () none) ;; 24 + (hud-indicator-method-25 () none) ;; 25 + (hud-indicator-method-26 () none) ;; 26 + ) + ) +|# + +#| +(deftype hud-player-indicators (hud-item-group) + () + :method-count-assert 25 + :size-assert #x2c + :flag-assert #x190000002c + (:methods + (hud-player-indicators-method-24 () none) ;; 24 + ) + ) +|# + +#| +(deftype hud-artifact-indicators (hud-player-indicators) + () + :method-count-assert 25 + :size-assert #x2c + :flag-assert #x190000002c + ) +|# + +#| +(deftype hud-assassin-indicators (hud-item-group) + () + :method-count-assert 24 + :size-assert #x2c + :flag-assert #x180000002c + ) +|# + +#| +(deftype hud-player-indicators-view0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-player-indicators-view1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-artifact-indicators-view0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-artifact-indicators-view1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-assassin-indicators-view0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-assassin-indicators-view1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern *hud-player-indicators-view0* array) +;; (define-extern *hud-player-indicators-view0-proc* object) +;; (define-extern spawn-hud-player-indicators-view0 function) +;; (define-extern *hud-player-indicators-view1* array) +;; (define-extern *hud-player-indicators-view1-proc* object) +;; (define-extern spawn-hud-player-indicators-view1 function) +;; (define-extern spawn-unused-hud-player-indicators-view function) +;; (define-extern *hud-artifact-indicators-view0* array) +;; (define-extern *hud-artifact-indicators-view0-proc* object) +;; (define-extern spawn-hud-artifact-indicators-view0 function) +;; (define-extern *hud-artifact-indicators-view1* array) +;; (define-extern *hud-artifact-indicators-view1-proc* object) +;; (define-extern spawn-hud-artifact-indicators-view1 function) +;; (define-extern spawn-unused-hud-artifact-indicators-view function) +;; (define-extern *hud-assassin-indicators-view0* array) +;; (define-extern *hud-assassin-indicators-view0-proc* object) +;; (define-extern spawn-hud-assassin-indicators-view0 function) +;; (define-extern *hud-assassin-indicators-view1* array) +;; (define-extern *hud-assassin-indicators-view1-proc* object) +;; (define-extern spawn-hud-assassin-indicators-view1 function) +;; (define-extern spawn-unused-hud-assassin-indicators-view function) +;; (define-extern hud-indicators-spawn function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-race ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern check-travel function) +;; (define-extern *previous-angle* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-net ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wcar-projectiles ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype v-toad-shot (net-projectile) + ((trail-tracker uint64 :offset-assert 568) ;; handle + (blast-radius float :offset-assert 576) + (powerup-level uint8 :offset-assert 580) + (initial-velocity vector :inline :offset-assert 592) + (vehicle-perigee float :offset-assert 608) + ) + :method-count-assert 76 + :size-assert #x264 + :flag-assert #x4c01e00264 + (:methods + (v-toad-shot-method-75 () none) ;; 75 + ) + (:state-methods + impact ;; 52 + die ;; 50 + ) + ) +|# + +;; (define-extern v-toad-shot-init-remote function) +;; (define-extern *msg-map-v-toad-shot* array) +;; (define-extern *net-process-class-info-v-toad-shot* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-weapons-proj ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype mine-a (process-focusable) + ((shooter uint64 :offset-assert 256) + (destination-point vector :inline :offset-assert 272) + (destination-rot quaternion :inline :offset-assert 288) + (traj trajectory :inline :offset-assert 304) + (beepy uint32 :offset-assert 344) + (trail-tracker uint64 :offset-assert 352) + (warning basic :offset-assert 360) + ) + :method-count-assert 64 + :size-assert #x16c + :flag-assert #x4000e0016c + (:methods + (mine-a-method-62 () none) ;; 62 + (mine-a-method-63 () none) ;; 63 + ) + (:state-methods + idle ;; 59 + falling ;; 60 + die ;; 61 + ) + ) +|# + +#| +(deftype mine-b (process-focusable) + ((shooter uint64 :offset-assert 256) + (glued-to uint64 :offset-assert 264) + (destination-point vector :inline :offset-assert 272) + (destination-rot quaternion :inline :offset-assert 288) + (traj trajectory :inline :offset-assert 304) + (cached-rp-trans vector :inline :offset-assert 352) + (trail-tracker uint64 :offset-assert 368) + (beepy uint32 :offset-assert 376) + (attach-point int32 :offset-assert 380) + (looseness int32 :offset-assert 384) + (expires-on uint64 :offset-assert 392) + (warning basic :offset-assert 400) + ) + :method-count-assert 67 + :size-assert #x194 + :flag-assert #x4301100194 + (:methods + (mine-b-method-65 () none) ;; 65 + (mine-b-method-66 () none) ;; 66 + ) + (:state-methods + idle ;; 59 + leaping-onto ;; 61 + attached ;; 62 + falling ;; 60 + shake-off ;; 63 + die ;; 64 + ) + ) +|# + +#| +(deftype v-yellow-guided-missile (net-projectile) + ((trail-tracker uint64 :offset-assert 568) + (blast-radius float :offset-assert 576) + (initial-velocity float :offset-assert 580) + (time-of-next-pitch uint64 :offset-assert 584) + (time-strike-standoff int32 :offset-assert 592) + (next-rot quaternion :inline :offset-assert 608) + (previous-target uint64 :offset-assert 624) + (pred net-predictor-simple :inline :offset-assert 640) + (defer-kaboom uint64 :offset-assert 952) + (last-hit uint64 :offset-assert 960) + ) + :method-count-assert 81 + :size-assert #x3c8 + :flag-assert #x51034003c8 + (:methods + (v-yellow-guided-missile-method-78 () none) ;; 78 + (v-yellow-guided-missile-method-79 () none) ;; 79 + (v-yellow-guided-missile-method-80 () none) ;; 80 + ) + (:state-methods + moving ;; 53 + tracking ;; 77 + wild ;; 76 + impact ;; 52 + dissipate ;; 51 + launching ;; 75 + die ;; 50 + ) + ) +|# + +;; (define-extern mine-a-init-remote function) +;; (define-extern *msg-map-mine-a* array) +;; (define-extern *net-process-class-info-mine-a* object) +;; (define-extern mine-a-init-by-other function) +;; (define-extern mine-b-init-remote function) +;; (define-extern *msg-map-mine-b* array) +;; (define-extern *net-process-class-info-mine-b* object) +;; (define-extern mine-b-common-trans function) +;; (define-extern *mine-b-hack* object) +;; (define-extern mine-b-init-by-other function) +;; (define-extern v-yellow-guided-missile-init-remote function) +;; (define-extern *msg-map-v-yellow-guided-missile* array) +;; (define-extern *net-process-class-info-v-yellow-guided-missile* object) +;; (define-extern guided-missile-moving-event-handler function) +;; (define-extern guided-missile-base-trans function) +;; (define-extern v-yellow-defaultgun-hitspang-params object) +;; (define-extern v-wpn-yellow-chaingun-1-hitspang-params object) +;; (define-extern v-wpn-yellow-chaingun-2-hitspang-params object) +;; (define-extern v-wpn-bulldog-hitspang-params object) +;; (define-extern rapid-fire-callback-gun-hitspang function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-weapons-oil ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype smoke-particle (structure) + ((pos vector :inline :offset-assert 0) + (vel vector :inline :offset-assert 16) + (size-delta float :offset-assert 28) + (size float :offset-assert 12) + (decay float :offset-assert 32) + (rot float :offset-assert 36) + (rot-delta float :offset-assert 40) + (color uint32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype particle-buffer (prim-client) + ((tex-id uint32 :offset-assert 4) + (smoke-part-count int32 :offset-assert 8) + (smoke-parts UNKNOWN 50 :offset-assert 16) + (strip basic :offset-assert 2416) + (single-strip UNKNOWN 3 :offset-assert 2420) + ) + :method-count-assert 14 + :size-assert #x980 + :flag-assert #xe00000980 + (:methods + (particle-buffer-method-10 () none) ;; 10 + (particle-buffer-method-11 () none) ;; 11 + (particle-buffer-method-12 () none) ;; 12 + (particle-buffer-method-13 () none) ;; 13 + ) + ) +|# + +#| +(deftype smoke-system (process-nettable) + ((owning-vehicle uint64 :offset-assert 192) + (part-count float :offset-assert 200) + (emit-rate float :offset-assert 204) + (start-time int32 :offset-assert 208) + (last-pos vector :inline :offset-assert 224) + (buffer basic :offset-assert 240) + (smoke-screen-sound uint32 :offset-assert 244) + (lightning-sound-id uint32 :offset-assert 248) + (last-size float :offset-assert 252) + (damage float :offset-assert 256) + (last-lightning-sphere-pos vector :inline :offset-assert 272) + (part-subsampler basic :offset-assert 288) + (smoke-electric basic :offset-assert 292) + (smoke-matrix matrix :inline :offset-assert 304) + ) + :method-count-assert 44 + :size-assert #x170 + :flag-assert #x2c00e00170 + (:methods + (smoke-system-method-43 () none) ;; 43 + ) + (:state-methods + idle ;; 42 + ) + ) +|# + +#| +(deftype z-index (structure) + ((z float :offset-assert 0) + (index int32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype lightning-sphere (process-drawable) + ((last-touched-by uint64 :offset-assert 248) + (start-time int32 :offset-assert 256) + (damage float :offset-assert 260) + (l-control basic :offset-assert 264) + (lightning-time int32 :offset-assert 268) + (start vector :inline :offset-assert 272) + (end vector :inline :offset-assert 288) + (zap-target uint64 :offset-assert 304) + (lightning-on basic :offset-assert 312) + (sound-id uint32 :offset-assert 316) + (owner-handle uint64 :offset-assert 320) + ) + :method-count-assert 51 + :size-assert #x148 + :flag-assert #x3300c00148 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype v-wpn-red-smoke (vehicle-weapon-slot) + ((smoke-system uint64 :offset-assert 264) + (wait-time int32 :offset-assert 272) + ) + :method-count-assert 62 + :size-assert #x114 + :flag-assert #x3e00900114 + (:methods + (v-wpn-red-smoke-method-61 () none) ;; 61 + ) + (:state-methods + idle ;; 50 + wait-delay ;; 60 + ) + ) +|# + +#| +(deftype strip-segment (structure) + ((strip-length int8 :offset-assert 0) + (strip-index int8 :offset-assert 1) + (birth-time int32 :offset-assert 4) + (points UNKNOWN 3 :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) +|# + +#| +(deftype oil-trail (prim-client) + ((tex-id uint32 :offset-assert 4) + (segment-count int32 :offset-assert 8) + (last-segment-last-point vector :inline :offset-assert 16) + (last-segment-first-point vector :inline :offset-assert 32) + (segments UNKNOWN 50 :offset-assert 48) + (strip basic :offset-assert 3248) + ) + :method-count-assert 17 + :size-assert #xcb4 + :flag-assert #x1100000cb4 + (:methods + (oil-trail-method-10 () none) ;; 10 + (oil-trail-method-11 () none) ;; 11 + (oil-trail-method-12 () none) ;; 12 + (oil-trail-method-13 () none) ;; 13 + (oil-trail-method-14 () none) ;; 14 + (oil-trail-method-15 () none) ;; 15 + (oil-trail-method-16 () none) ;; 16 + ) + ) +|# + +#| +(deftype slip-object (process-drawable) + ((start-time int32 :offset-assert 248) + (damage float :offset-assert 252) + (fire-sound basic :offset-assert 256) + (owner-handle uint64 :offset-assert 264) + ) + :method-count-assert 51 + :size-assert #x110 + :flag-assert #x3300800110 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype oil-slick (process-drawable) + ((vehicle uint64 :offset-assert 248) + ) + :method-count-assert 51 + :size-assert #x100 + :flag-assert #x3300700100 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype oil-emitter (process) + ((emitting basic :offset-assert 144) + (owning-vehicle uint64 :offset-assert 152) + (oil-trail basic :offset-assert 160) + (last-surface-pos vector :inline :offset-assert 176) + (last-slip-spawn-pos vector :inline :offset-assert 192) + (current-segment strip-segment :inline :offset-assert 208) + (slip-distance-emit float :offset-assert 272) + (state-time int32 :offset-assert 276) + (spill-sound-id uint32 :offset-assert 280) + (damage float :offset-assert 284) + (oil-slick uint64 :offset-assert 288) + ) + :method-count-assert 19 + :size-assert #x128 + :flag-assert #x1300a00128 + (:methods + (oil-emitter-method-9 () none) ;; 9 + (oil-emitter-method-10 () none) ;; 10 + (oil-emitter-method-11 () none) ;; 11 + (oil-emitter-method-12 () none) ;; 12 + (oil-emitter-method-13 () none) ;; 13 + (oil-emitter-method-14 () none) ;; 14 + (oil-emitter-method-16 () none) ;; 16 + (oil-emitter-method-17 () none) ;; 17 + (oil-emitter-method-18 () none) ;; 18 + ) + (:state-methods + emit-oil ;; 15 + ) + ) +|# + +#| +(deftype oil-flame-emitter (oil-emitter) + ((last-flame-spawn-pos vector :inline :offset-assert 304) + (flame-distance-emit float :offset-assert 320) + ) + :method-count-assert 19 + :size-assert #x144 + :flag-assert #x1300c00144 + ) +|# + +#| +(deftype v-wpn-red-oil (vehicle-weapon-slot) + ((oil-emitter uint64 :offset-assert 264) + (wait-time int32 :offset-assert 272) + ) + :method-count-assert 62 + :size-assert #x114 + :flag-assert #x3e00900114 + (:methods + (v-wpn-red-oil-method-61 () none) ;; 61 + ) + (:state-methods + idle ;; 50 + wait-delay ;; 60 + ) + ) +|# + +;; (define-extern smoke-system-local-space function) +;; (define-extern sift-down function) +;; (define-extern heap-sort function) +;; (define-extern clear-strip function) +;; (define-extern lightning-sphere-init-by-other function) +;; (define-extern lightning-sphere-spawn function) +;; (define-extern vector+float*-ignore-w! function) +;; (define-extern smoke-update function) +;; (define-extern smoke-render function) +;; (define-extern smoke-spawn function) +;; (define-extern smoke-system-init-by-other function) +;; (define-extern smoke-system-spawn function) +;; (define-extern slip-object-init-by-other function) +;; (define-extern slip-object-spawn function) +;; (define-extern oil-slick-init-by-other function) +;; (define-extern oil-slick-spawn function) +;; (define-extern oil-trail-emit function) +;; (define-extern oil-emitter-init-by-other function) +;; (define-extern oil-emitter-spawn function) +;; (define-extern oil-flame-emitter-init-by-other function) +;; (define-extern oil-flame-emitter-spawn function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-weapons ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype muzzle-flash (process-drawable) + ((glued-to uint64 :offset-assert 248) + (glued-joint int32 :offset-assert 256) + (local-rotation quaternion :inline :offset-assert 272) + ) + :method-count-assert 52 + :size-assert #x120 + :flag-assert #x3400900120 + (:state-methods + idle ;; 51 + lit ;; 50 + ) + ) +|# + +#| +(deftype v-wpn-yellow-chain-gun (vehicle-weapon-slot) + ((last-fire-event uint64 :offset-assert 264) + (firecontrol basic :offset-assert 272) + (blam uint32 :offset-assert 276) + ) + :method-count-assert 61 + :size-assert #x118 + :flag-assert #x3d00900118 + (:state-methods + idle ;; 50 + firing ;; 60 + ) + ) +|# + +#| +(deftype v-wpn-yellow-default-gun (vehicle-weapon-slot) + ((last-fire-event uint64 :offset-assert 264) + (firecontrol basic :offset-assert 272) + (blam uint32 :offset-assert 276) + ) + :method-count-assert 61 + :size-assert #x118 + :flag-assert #x3d00900118 + (:state-methods + idle ;; 50 + firing ;; 60 + ) + ) +|# + +#| +(deftype v-wpn-yellow-grenade (vehicle-weapon-slot) + ((next-shot-allowed uint64 :offset-assert 264) + (next-to-fire uint8 :offset-assert 272) + ) + :method-count-assert 60 + :size-assert #x111 + :flag-assert #x3c00900111 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype v-wpn-yellow-guided-missile (vehicle-weapon-slot) + ((next-shot-allowed uint64 :offset-assert 264) + (next-to-fire uint8 :offset-assert 272) + (targ-list UNKNOWN 4 :offset-assert 280) + (run-targeting-this-frame int8 :offset-assert 312) + ) + :method-count-assert 61 + :size-assert #x139 + :flag-assert #x3d00b00139 + (:state-methods + idle ;; 50 + firing ;; 60 + ) + ) +|# + +#| +(deftype v-wpn-yellow-seismic-blaster (vehicle-weapon-slot) + ((fire-at uint32 :offset-assert 264) + (on-hud-indic int8 :offset-assert 268) + ) + :method-count-assert 62 + :size-assert #x10d + :flag-assert #x3e0080010d + (:state-methods + idle ;; 50 + firing ;; 60 + backfiring ;; 61 + ) + ) +|# + +;; (define-extern vws-focus-search-base function) +;; (define-extern gunmount-common-trans function) +;; (define-extern gunmount-common-post function) +;; (define-extern gunmount-drawable-init-by-other function) +;; (define-extern gunmount-event-handler function) +;; (define-extern muzzle-flash-event-handler function) +;; (define-extern muzzle-flash-init-by-other function) +;; (define-extern gunmount-get-change-anim function) +;; (define-extern gunmount-generic-event-handler function) +;; (define-extern v-wpn-yellow-chain-gun-I-rapid-fire-control-params object) +;; (define-extern v-wpn-yellow-chain-gun-II-rapid-fire-control-params object) +;; (define-extern hack-sparticle-track-gun function) +;; (define-extern v-wpn-yellow-default-gun-rapid-fire-control-params object) +;; (define-extern v-wpn-yellow-guided-missile-init-remote function) +;; (define-extern *msg-map-v-wpn-yellow-guided-missile* array) +;; (define-extern *net-process-class-info-v-wpn-yellow-guided-missile* object) +;; (define-extern guided-missile-gen-proj-no-targ-helper function) +;; (define-extern guided-missile-gen-proj-targ-helper function) +;; (define-extern seismic-blaster-affects-player? function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-weapons-aux ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype red-sentry-bot (process-focusable) + ((destination-point vector :inline :offset-assert 256) + (destination-rot quaternion :inline :offset-assert 272) + (traj trajectory :inline :offset-assert 288) + (next-target-poll uint64 :offset-assert 328) + (targ-handle uint64 :offset-assert 336) + (yaw float :offset-assert 344) + (pitch float :offset-assert 348) + (expire-at int32 :offset-assert 352) + (hitpoints float :offset-assert 356) + (hitpoints-last float :offset-assert 360) + (hitpoints-prev-msg-time uint64 :offset-assert 368) + (flash UNKNOWN 2 :offset-assert 376) + (last-fired uint64 :offset-assert 392) + (gun-loop uint32 :offset-assert 400) + (warning basic :offset-assert 404) + (firecontrol basic :offset-assert 408) + (ammo int16 :offset-assert 412) + (powerup-level uint8 :offset-assert 414) + (shooter-id int8 :offset-assert 415) + ) + :method-count-assert 67 + :size-assert #x1a0 + :flag-assert #x43011001a0 + (:methods + (red-sentry-bot-method-64 () none) ;; 64 + (red-sentry-bot-method-65 () none) ;; 65 + (red-sentry-bot-method-66 () none) ;; 66 + ) + (:state-methods + falling ;; 59 + idle ;; 60 + firing ;; 61 + firing-missiles ;; 62 + die ;; 63 + ) + ) +|# + +;; (define-extern red-sentry-bot-init-remote function) +;; (define-extern *msg-map-red-sentry-bot* array) +;; (define-extern *net-process-class-info-red-sentry-bot* object) +;; (define-extern v-wpn-sentrybot-rapid-fire-control-params object) +;; (define-extern sentrybot-poke-yaw! function) +;; (define-extern sentrybot-poke-pitch! function) +;; (define-extern red-sentry-bot-init-by-other function) +;; (define-extern red-sentry-bot-common-trans function) +;; (define-extern red-sentry-bot-poll-target function) +;; (define-extern sentry-bot-base-handler function) +;; (define-extern v-wpn-yellow-bulldog-rapid-fire-control-params object) +;; (define-extern v-wpn-yellow-bulldog-II-rapid-fire-control-params object) +;; (define-extern drone-compute-pos! function) +;; (define-extern drone-trans-set-pos function) +;; (define-extern drone-trans-twitchy-rot function) +;; (define-extern drone-trans-rot-at-target function) +;; (define-extern drone-base-post function) +;; (define-extern vehicle-weapon-drone-init-by-other function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-weapons2 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype v-wpn-red-turbo-preventor (vehicle-weapon-slot) + ((sound-id uint32 :offset-assert 264) + (player-id int8 :offset-assert 268) + (snd-loop uint32 :offset-assert 272) + ) + :method-count-assert 61 + :size-assert #x114 + :flag-assert #x3d00900114 + (:state-methods + idle ;; 50 + firing ;; 60 + ) + ) +|# + +#| +(deftype v-wpn-red-mine-launcher (vehicle-weapon-slot) + ((salvo-count uint8 :offset-assert 261) + (last-fired uint64 :offset-assert 264) + ) + :method-count-assert 61 + :size-assert #x110 + :flag-assert #x3d00800110 + (:state-methods + idle ;; 50 + firing ;; 60 + ) + ) +|# + +#| +(deftype v-wpn-red-sentry-gun (vehicle-weapon-slot) + () + :method-count-assert 60 + :size-assert #x105 + :flag-assert #x3c00800105 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype v-wpn-red-drone-gun (vehicle-weapon-slot) + () + :method-count-assert 61 + :size-assert #x105 + :flag-assert #x3d00800105 + (:state-methods + idle ;; 50 + firing ;; 60 + ) + ) +|# + +;; (define-extern mine-compute-landing-point! function) +;; (define-extern spawn-mine function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-weapons3 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype v-wpn-purple-shield (vehicle-weapon-slot) + ((mysound uint32 :offset-assert 264) + (zap-interval uint64 :offset-assert 272) + (jiggle-start uint64 :offset-assert 280) + (jiggle-amplitude float :offset-assert 288) + ) + :method-count-assert 61 + :size-assert #x124 + :flag-assert #x3d00a00124 + (:state-methods + idle ;; 50 + firing ;; 60 + ) + ) +|# + +#| +(deftype v-wpn-red-tractor-beam (vehicle-weapon-slot) + ((firing-at uint64 :offset-assert 264) + (duration-left int32 :offset-assert 272) + (using-side uint8 :offset-assert 276) + (part-on-me basic :offset-assert 224) + (part-on-target basic :offset-assert 280) + ) + :method-count-assert 61 + :size-assert #x11c + :flag-assert #x3d0090011c + (:state-methods + idle ;; 50 + firing ;; 60 + ) + ) +|# + +;; (define-extern shield-jiggle-scale! function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-weapons-util ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern v-wpn-base-init-by-other function) +;; (define-extern warning-hud-draw function) +;; (define-extern v-wpn-type->color function) +;; (define-extern v-wpn-type->gunmount-config function) +;; (define-extern v-wpn-missile-init-by-other function) +;; (define-extern make-vehicle-weapon-slot function) +;; (define-extern v-wpn-choose-increasing-lethality function) +;; (define-extern v-wpn-get-mask function) +;; (define-extern v-wpn-num-available function) +;; (define-extern v-wpn-choose-random function) +;; (define-extern v-wpn-get-available-types function) +;; (define-extern race-player-behind-more-than function) +;; (define-extern v-wpn-get-selection-table function) +;; (define-extern v-wpn-mask-selection-table! function) +;; (define-extern v-wpn-pack-msg function) +;; (define-extern v-wpn-unpack-msg! function) +;; (define-extern vehicle-get-weapon-level function) +;; (define-extern global-turbo-suppressor-set! function) +;; (define-extern should-suppress-eco? function) +;; (define-extern rapid-fire-control-emitter-from-world function) +;; (define-extern rapid-fire-control-initialize-from-vehicle function) +;; (define-extern is-friendly-fire-helper function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wcar-skel ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wcar ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *wcar-explosion-info* vehicle-explosion-info) ;; vehicle-explosion-info +;; (define-extern *v-mongoose-constants* object) +;; (define-extern *v-falcon-constants* object) +;; (define-extern *v-wombat-constants* object) +;; (define-extern *v-possum-constants* object) +;; (define-extern *v-bobcat-constants* object) +;; (define-extern *v-cougar-constants* object) +;; (define-extern *v-wolf-constants* object) +;; (define-extern *v-bear-constants* object) +;; (define-extern *v-leopard-constants* object) +;; (define-extern *v-panther-constants* object) +;; (define-extern *v-tiger-constants* object) +;; (define-extern *v-cheetah-constants* object) +;; (define-extern *v-gila-constants* object) +;; (define-extern *v-snake-constants* object) ;; rigid-body-vehicle-constants +;; (define-extern *v-daxtermobile-constants* object) +;; (define-extern *v-drone-constants* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; vehicle-antenna ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype joint-mod-set-rot-local (joint-mod-base) + ((flags uint16 :offset-assert 0) + (node-index int16 :offset-assert 2) + (proc uint32 :offset-assert 4) + (callback basic :offset-assert 8) + (rotation quaternion :inline :offset-assert 16) + ) + :method-count-assert 12 + :size-assert #x20 + :flag-assert #xc00000020 + ) +|# + +#| +(deftype vehicle-antenna-state (structure) + ((data UNKNOWN 6 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x60 + :flag-assert #x900000060 + ) +|# + +#| +(deftype vehicle-antenna (process-drawable) + ((vehicle uint64 :offset-assert 248) + (attach-local-pos vector :inline :offset-assert 256) + (attach-rot quaternion :inline :offset-assert 272) + (jmod-antenna UNKNOWN 4 :offset-assert 288) + (jmod-tail joint-mod-set-rot-local :inline :offset-assert 416) + (sim-state vehicle-antenna-state :inline :offset-assert 448) + (ant-tip-pos vector :inline :offset-assert 448) + (ant-tip-vel vector :inline :offset-assert 464) + (spring-pos vector :inline :offset-assert 480) + (spring-vel vector :inline :offset-assert 496) + (tail-pos vector :inline :offset-assert 512) + (tail-vel vector :inline :offset-assert 528) + (i-tip-node int8 :offset-assert 544) + (use-tail? basic :offset-assert 548) + ) + :method-count-assert 55 + :size-assert #x228 + :flag-assert #x3701a00228 + (:methods + (vehicle-antenna-method-52 () none) ;; 52 + (vehicle-antenna-method-53 () none) ;; 53 + (vehicle-antenna-method-54 () none) ;; 54 + ) + (:state-methods + idle ;; 50 + die ;; 51 + ) + ) +|# + +;; (define-extern *vehicle-antenna-state* object) +;; (define-extern vehicle-antenna-init-by-other function) +;; (define-extern vehicle-antenna-spawn function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wcar-base ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype wcar-base (wvehicle) + ((jmod-shock-tops UNKNOWN 4 :offset-assert 4672) + (jmod-shock-mids UNKNOWN 4 :offset-assert 4800) + ) + :method-count-assert 272 + :size-assert #x13c0 + :flag-assert #x110133013c0 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wcar-mongoose ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype v-mongoose (wcar-base) + () + :method-count-assert 272 + :size-assert #x13c0 + :flag-assert #x110133013c0 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wcar-falcon ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype v-falcon (wcar-base) + () + :method-count-assert 272 + :size-assert #x13c0 + :flag-assert #x110133013c0 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wcar-wombat ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype v-wombat (wcar-base) + () + :method-count-assert 272 + :size-assert #x13c0 + :flag-assert #x110133013c0 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wcar-possum ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype v-possum (wcar-base) + () + :method-count-assert 272 + :size-assert #x13c0 + :flag-assert #x110133013c0 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wcar-bobcat ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype v-bobcat (wcar-base) + () + :method-count-assert 272 + :size-assert #x13c0 + :flag-assert #x110133013c0 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wcar-cougar ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype v-cougar (wcar-base) + () + :method-count-assert 272 + :size-assert #x13c0 + :flag-assert #x110133013c0 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wcar-wolf ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype v-wolf (wcar-base) + () + :method-count-assert 272 + :size-assert #x13c0 + :flag-assert #x110133013c0 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wcar-bear ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype v-bear (wcar-base) + () + :method-count-assert 272 + :size-assert #x13c0 + :flag-assert #x110133013c0 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wcar-leopard ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype v-leopard (wcar-base) + () + :method-count-assert 272 + :size-assert #x13c0 + :flag-assert #x110133013c0 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wcar-panther ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype v-panther (wcar-base) + () + :method-count-assert 272 + :size-assert #x13c0 + :flag-assert #x110133013c0 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wcar-tiger ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype v-tiger (wcar-base) + () + :method-count-assert 272 + :size-assert #x13c0 + :flag-assert #x110133013c0 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wcar-cheetah ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype v-cheetah (wcar-base) + () + :method-count-assert 272 + :size-assert #x13c0 + :flag-assert #x110133013c0 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wcar-gila ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype v-gila (wcar-base) + () + :method-count-assert 272 + :size-assert #x13c0 + :flag-assert #x110133013c0 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wcar-snake ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype v-snake (wcar-base) + () + :method-count-assert 272 + :size-assert #x13c0 + :flag-assert #x110133013c0 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wcar-daxtermobile ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype v-daxtermobile (wcar-base) + () + :method-count-assert 272 + :size-assert #x13c0 + :flag-assert #x110133013c0 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; drift ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype drive-data (structure) + ((angles vector :inline :offset-assert 0) + (pos vector :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype drift-editor (process) + ((angles euler-angles :inline :offset-assert 144) + (counter int32 :offset-assert 160) + (editor-start-time uint32 :offset-assert 164) + (all-data-array UNKNOWN 5 :offset-assert 168) + (drive-data-array uint32 :offset-assert 168) + (wheel-front-left-data-array uint32 :offset-assert 172) + (wheel-front-right-data-array uint32 :offset-assert 176) + (wheel-rear-left-data-array uint32 :offset-assert 180) + (wheel-rear-right-data-array uint32 :offset-assert 184) + (release-start-trigger basic :offset-assert 188) + (odd-even int8 :offset-assert 192) + ) + :method-count-assert 19 + :size-assert #xc1 + :flag-assert #x13004000c1 + (:methods + (drift-editor-method-9 () none) ;; 9 + (drift-editor-method-10 () none) ;; 10 + (drift-editor-method-11 () none) ;; 11 + (drift-editor-method-12 () none) ;; 12 + (drift-editor-method-13 () none) ;; 13 + (drift-editor-method-14 () none) ;; 14 + (drift-editor-method-18 () none) ;; 18 + ) + (:state-methods + init-state ;; 15 + run-state ;; 16 + write-file ;; 17 + ) + ) +|# + +;; (define-extern *drift-file-stream* file-stream) +;; (define-extern *drift-editor* object) +;; (define-extern drift-editor-init-by-other function) +;; (define-extern start-drift function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; race-mesh ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; race-line ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype race-line-get-points (structure) + ((points UNKNOWN 4 :offset-assert 0) + (index int32 :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x44 + :flag-assert #x900000044 + ) +|# + +;; (define-extern test-find-line-info function) +;; (define-extern test-find-closest-point function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; race-ai-tuning ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-type race-ai-tuning-info structure) + +(define-extern *generic-ai-tuning* (array race-ai-tuning-info)) +(define-extern *snow-ai-tuning* (array race-ai-tuning-info)) +(define-extern *kras-ai-tuning* (array race-ai-tuning-info)) +(define-extern *spargus-ai-tuning* (array race-ai-tuning-info)) +(define-extern *jungle-ai-tuning* (array race-ai-tuning-info)) +(define-extern *haven-ai-tuning* (array race-ai-tuning-info)) +(define-extern *sewer-ai-tuning* (array race-ai-tuning-info)) +(define-extern *drome-ai-tuning* (array race-ai-tuning-info)) +(define-extern *dromdoc-ai-tuning* (array race-ai-tuning-info)) +(define-extern *kratour-ai-tuning* (array race-ai-tuning-info)) +(define-extern *havtour-ai-tuning* (array race-ai-tuning-info)) +(define-extern *canyon-ai-tuning* (array race-ai-tuning-info)) +(define-extern *spatour-ai-tuning* (array race-ai-tuning-info)) +(define-extern *docks-ai-tuning* (array race-ai-tuning-info)) +(define-extern *icepass-ai-tuning* (array race-ai-tuning-info)) +(define-extern *havsew-ai-tuning* (array race-ai-tuning-info)) +(define-extern *peak-ai-tuning* (array race-ai-tuning-info)) +(define-extern *icetour-ai-tuning* (array race-ai-tuning-info)) +(define-extern *dockkra-ai-tuning* (array race-ai-tuning-info)) +(define-extern *ice-ai-tuning* (array race-ai-tuning-info)) +(define-extern *temple-ai-tuning* (array race-ai-tuning-info)) +(define-extern *canspar-ai-tuning* (array race-ai-tuning-info)) +(define-extern *havjung-ai-tuning* (array race-ai-tuning-info)) +(define-extern *spartem-ai-tuning* (array race-ai-tuning-info)) +(define-extern *iceberg-ai-tuning* (array race-ai-tuning-info)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; minimap ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype engine-minimap (engine-pers) + ((UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 15 + :size-assert #x20 + :flag-assert #xf00000020 + ) +|# + +;; (define-extern *minimap* object) ;; minimap +;; (define-extern *minimap-class-list* object) ;; (inline-array minimap-class-node) +;; (define-extern lookup-minimap-texture-by-name function) ;; (function string string (pointer texture-page) texture) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; jakx-init ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern jakx-login function) +;; (define-extern jakx-activate function) +;; (define-extern jakx-deactivate function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; types-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype basic-reserved (basic) + () + :method-count-assert 29 + :size-assert #x4 + :flag-assert #x1d00000004 + (:methods + (basic-reserved-method-9 () none) ;; 9 ;; (basic-reserved-method-9 () none) + (basic-reserved-method-10 () none) ;; 10 ;; (basic-reserved-method-10 () none) + (basic-reserved-method-11 () none) ;; 11 ;; (basic-reserved-method-11 () none) + (basic-reserved-method-12 () none) ;; 12 ;; (basic-reserved-method-12 () none) + (basic-reserved-method-13 () none) ;; 13 ;; (basic-reserved-method-13 () none) + (basic-reserved-method-14 () none) ;; 14 ;; (basic-reserved-method-14 () none) + (basic-reserved-method-15 () none) ;; 15 ;; (basic-reserved-method-15 () none) + (basic-reserved-method-16 () none) ;; 16 ;; (basic-reserved-method-16 () none) + (basic-reserved-method-17 () none) ;; 17 ;; (basic-reserved-method-17 () none) + (basic-reserved-method-18 () none) ;; 18 ;; (basic-reserved-method-18 () none) + (basic-reserved-method-19 () none) ;; 19 ;; (basic-reserved-method-19 () none) + (basic-reserved-method-20 () none) ;; 20 ;; (basic-reserved-method-20 () none) + (basic-reserved-method-21 () none) ;; 21 ;; (basic-reserved-method-21 () none) + (basic-reserved-method-22 () none) ;; 22 ;; (basic-reserved-method-22 () none) + (basic-reserved-method-23 () none) ;; 23 ;; (basic-reserved-method-23 () none) + (basic-reserved-method-24 () none) ;; 24 ;; (basic-reserved-method-24 () none) + (basic-reserved-method-25 () none) ;; 25 ;; (basic-reserved-method-25 () none) + (basic-reserved-method-26 () none) ;; 26 ;; (basic-reserved-method-26 () none) + (basic-reserved-method-27 () none) ;; 27 ;; (basic-reserved-method-27 () none) + (basic-reserved-method-28 () none) ;; 28 ;; (basic-reserved-method-28 () none) + ) + ) +|# + +;; (deftype part-id (uint32) +;; () +;; :flag-assert #x900000004 +;; ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; vu1-macros ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; gravity-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; bounding-box-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype bounding-box (structure) + ((min vector :inline :offset-assert 0) + (max vector :inline :offset-assert 16) + ) + :method-count-assert 22 + :size-assert #x20 + :flag-assert #x1600000020 + (:methods + (add-spheres! "Add count spheres." (_type_ (inline-array sphere) int) int) ;; 9 + (add-box! "Expand the box as needed to contain the given box." (_type_ bounding-box) int) ;; 10 + (add-point! "Expand the box as needed to contain the given point." (_type_ vector) none) ;; 11 + (intersects-line-segment? + "Check intersection in xz plane, using liang-barsky. Not sure if this actually + a useful check or not..." + (_type_ vector vector) symbol) ;; 12 + (set-from-point-offset! "Set to the smallest box containing arg0, (arg0 + arg1)" (_type_ vector vector) none) ;; 13 + (set-from-point-offset-pad! "Set the box to contain arg0, arg0 + offset, with some padding." (_type_ vector vector float) int) ;; 14 + (set-to-point! "Set the box to be a single point." (_type_ vector) none) ;; 15 + (set-from-sphere! "Set the box to contain a single sphere." (_type_ sphere) none) ;; 16 + (set-from-spheres! + "Reset box to hold the given spheres. + Note: this implementation could be optimized." + (_type_ (inline-array sphere) int) int) ;; 17 + (get-bounding-sphere "Get a bounding sphere for a bounding box." (_type_ vector) vector) ;; 18 + (inside-xyz? "Is the point in the box?" (bounding-box vector) symbol) ;; 19 + (inside-xz? "Is the point in the box? Check xz only." (bounding-box vector) symbol) ;; 20 + (inside-box? "Is the other box contained entirely inside the box?" (bounding-box bounding-box) symbol) ;; 21 + ) + ) + +(deftype bounding-box2 (structure) + ((min vector2 :inline :offset-assert 0) + (max vector2 :inline :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype bounding-box4w (structure) + ((min vector4w :inline :offset-assert 0) + (max vector4w :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype bounding-box-both (structure) + ((box bounding-box :inline :offset-assert 0) + (box4w bounding-box4w :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +(deftype bounding-box-array (inline-array-class) + ((data bounding-box :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; matrix-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +(deftype matrix (structure) + "A 4x4 matrix, stored in row-major order. + some, but not all, functions assume that a matrix is an affine transform. + others assume that the rotation has no scale or shear (and that its inverse is its transpose)." + ((data float 16 :offset-assert 0 :score -3) ;; guessed by decompiler + (vector vector 4 :offset 0 :score -2) ;; guessed by decompiler + (quad uint128 4 :offset 0 :score -1) ;; guessed by decompiler + (rvec vector :inline :offset 0) + (uvec vector :inline :offset 16) + (fvec vector :inline :offset 32) + (trans vector :inline :offset 48) + ) + :method-count-assert 10 + :size-assert #x40 + :flag-assert #xa00000040 + (:methods + (transform-vectors! + "Transform many vectors. This acts like w = 1, even if it isn't. The value of w is copied." + (_type_ (inline-array vector) (inline-array vector) int) none) ;; 9 + ) + ) + +(deftype matrix3 (structure) + "A 3x3 matrix, stored in row-major order. + NOTE: the rows each have an extra 4-bytes of padding, + so this is really a 3x4 matrix. + This type is rarely used." + ((data float 12 :offset-assert 0 :score -1) ;; guessed by decompiler + (vector vector 3 :inline :offset 0) ;; guessed by decompiler + (quad uint128 3 :offset 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype matrix4h (structure) + "A matrix stored using 16-bit integers. + Note that these usually have different scaling for the 4th row which + contains the translation in an affine transform. + So you generally should not unpack these to floats without knowing where they came from + and how they were originally packed (for example, in tie/shrub)." + ((data int16 16 :offset-assert 0 :score -1) ;; guessed by decompiler + (vector4h vector4h 4 :offset 0) ;; guessed by decompiler + (long int64 4 :offset 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(define-extern matrix-copy! "Copy arg1 to arg0" (function matrix matrix matrix)) +(define-extern matrix<-vector-yz-exact! (function matrix vector vector matrix)) +(define-extern matrix<-vector-yz! (function matrix vector vector matrix)) +(define-extern matrix<-vector-z! (function matrix vector matrix)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; quaternion-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype quaternion (structure) + "Quaternion. Stored in xyzw order." + ((data float 4 :offset-assert 0 :score -1) ;; guessed by decompiler + (x float :offset 0) + (y float :offset 4) + (z float :offset 8) + (w float :offset 12) + (vec vector :inline :offset 0) + (quad uint128 :offset 0) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(define-extern *unity-quaternion* quaternion) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; euler-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype euler-angles (vector) + "Just uses the same xyzw and data array as vector. + The `w` stores an integer that seems to have + bitfields for... something? Like maybe the order? + Euler angles are mostly unused, and the code is a bit of disaster." + () + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(define-extern EulSafe + "Maybe euler angle storage orders? + What is this naming convention?" + (array int32)) +(define-extern EulNext (array int32)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; transform-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype transformq (structure) + ((trans vector :inline :offset-assert 0) + (rot vector :inline :offset-assert 16) + (scale vector :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype trsq (basic) + ((trans vector :inline :offset-assert 16) + (rot vector :inline :offset-assert 32) + (scale vector :inline :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; trigonometry-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; geometry-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype curve (structure) + ((cverts (inline-array vector) :offset-assert 0) ;; guessed by decompiler + (num-cverts int32 :offset-assert 4) + (knots (pointer float) :offset-assert 8) ;; guessed by decompiler + (num-knots int32 :offset-assert 12) + (length float :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) + +(deftype line-intersection-val (structure) + ((tt0 float :offset-assert 0) + (tt1 float :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype border-plane (basic) + ((name symbol :offset-assert 4) ;; guessed by decompiler + (action basic :offset-assert 8) + (slot int8 :offset-assert 12) + (trans vector :inline :offset-assert 16) + (normal vector :inline :offset-assert 32) + ) + :method-count-assert 11 + :size-assert #x30 + :flag-assert #xb00000030 + (:methods + (debug-draw (_type_) int) ;; 9 + (point-past-plane? (_type_ vector) symbol) ;; 10 + ) + ) + +(deftype lissajous (structure) + ((x-mag float :offset-assert 0) + (y-mag float :offset-assert 4) + (theta float :offset-assert 8) + (wx float :offset-assert 12) + (wy float :offset-assert 16) + (period-shift float :offset-assert 20) + (theta-rate float :offset-assert 24) + ) + :pack-me + :method-count-assert 10 + :size-assert #x1c + :flag-assert #xa0000001c + (:methods + (lissajous-method-9 (_type_ vector) vector) ;; 9 + ) + ) + +(deftype lissajous-interp (structure) + ((current lissajous :inline :offset-assert 0) + (dest lissajous :inline :offset-assert 28) + (rate lissajous :inline :offset-assert 56) + ) + :method-count-assert 11 + :size-assert #x54 + :flag-assert #xb00000054 + (:methods + (lissajous-interp-method-9 (_type_ vector) vector) ;; 9 + (lissajous-interp-method-10 (_type_) float) ;; 10 + ) + ) + +(deftype ellipsoid (vector) + ((height float :offset 4) + (width float :offset 0) + (length float :offset 8) + (h float :offset 4) + (l float :offset 8) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(define-extern point-in-ellipsoid? (function ellipsoid vector float)) +(define-extern ellipsoid-random-point-on! (function ellipsoid vector vector vector)) +(define-extern ellipsoid-normal-at! (function ellipsoid vector vector vector)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; transformq-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype trsqv (trsq) + "A transform with: + - type information (child of [[basic]]) + - rotation stored as quaternion + - velocity information. + This is a very commonly used type to represent the position of an in-game object. + The `root` of a process-drawable (the parent 'in-game object' type) is a [[trsqv]]. + Additionally, the collision system uses [[trsqv]] as the parent type for foreground + collision objects ([[collide-shape]], [[collide-shape-moving]]). + As a result, this type has a lot of weird methods and extra stuff hidden in it." + ((pause-adjust-distance meters :offset 4) + (nav-radius meters :offset 8) + (transv vector :inline :offset-assert 64) + (rotv vector :inline :offset-assert 80) + (scalev vector :inline :offset-assert 96) + (dir-targ quaternion :inline :offset-assert 112) + (angle-change-time uint64 :offset-assert 128) ;; time-frame + (old-y-angle-diff float :offset-assert 136) + ) + :method-count-assert 28 + :size-assert #x8c + :flag-assert #x1c0000008c + (:methods + (seek-toward-heading-vec! + "Adjust the orientation to point along dir, only changing our yaw. + The vel is a maximum velocity limit. + The frame count is the time constant (first order). + There's some logic to avoid rapidly changing directions" + (_type_ vector float time-frame) quaternion) ;; 9 + (set-heading-vec! + "Makes us look in the arg0 direction immediately. Pitch will be unchanged." + (_type_ vector) quaternion) ;; 10 + (seek-to-point-toward-point! + "Seek toward pointing toward arg0 from our current location." + (_type_ vector float time-frame) quaternion) ;; 11 + (point-toward-point! "Immediately point toward arg0." (_type_ vector) quaternion) ;; 12 + (seek-toward-yaw-angle! "Seek toward the given yaw angle." (_type_ float float time-frame) quaternion) ;; 13 + (set-yaw-angle-clear-roll-pitch! + "Immediately clear our roll and pitch and set yaw to the given angle." + (_type_ float) quaternion) ;; 14 + (set-roll-to-grav! + "Set our roll so that our local down aligns with standard gravity." + (_type_ float) quaternion) ;; 15 + (set-roll-to-grav-2! + "Set our roll so that our local down aligns with standard gravity." + (_type_ float) quaternion) ;; 16 + (rotate-toward-orientation! + "Adjust our orientation toward target, subject to some rate limits. + For Jak 1, I said: + I don't think this is a very robust function and probably doesn't work right in cases + where an axis flips by 180 degrees. + But now they use matrix-from-two-vectors-the-long-way-smooth to fix it! Good job. + This additionally uses the fancy logic of matrix-from-two-vectors-smooth." + (_type_ quaternion float float int int float) quaternion) ;; 17 + (set-quaternion! "Set this [[trsqv]]'s quaternion." (_type_ quaternion) quaternion) ;; 18 + (set-heading-vec-clear-roll-pitch! + "Set our rotation to point along the given heading, with no roll or pitch." + (_type_ vector) quaternion) ;; 19 + (point-toward-point-clear-roll-pitch! + "Set our orientation to point toward arg0, clearing roll and pitch." + (_type_ vector) quaternion) ;; 20 + (rot->dir-targ! + "Set the target direction for this [[trsqv]] to its quaternion." + (_type_) quaternion) ;; 21 + (y-angle "Get the y angle for this [[trsqv]]'s quaternion." (_type_) float) ;; 22 + (global-y-angle-to-point + "Get the angle in the xz plane from the position of this trsqv to the point arg0 + (ignores our current yaw)." + (_type_ vector) float) ;; 23 + (relative-y-angle-to-point + "Get the y angle between the current orientation and arg0 + (how much we'd have to yaw to point at arg0)." + (_type_ vector) float) ;; 24 + (roll-relative-to-gravity "Get our roll, relative to 'down' from gravity." (_type_) float) ;; 25 + (set-and-limit-velocity (_type_ int vector float) trsqv) ;; 26 + (get-quaternion "Get the quat for this [[trsqv]]." (_type_) quaternion) ;; 27 + ) + ) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; bounding-box ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype liang-barsky-line-clip-params (structure) + ((te float :offset-assert 0) + (tl float :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(define-extern box-vector-enside? "Is the point in the box? On the edge doesn't count." (function bounding-box vector symbol)) +(define-extern box-vector-inside? "Is the point in the box? On the edge counts." (function bounding-box vector symbol)) +(define-extern liang-barsky-line-clipt "Clip test in 1 dimension. Is arg1 in arg2?" (function liang-barsky-line-clip-params float float symbol)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; matrix ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; matrix is already defined! + +;; matrix3 is already defined! + +(define-extern matrix-identity! "Set dst to the identity matrix." (function matrix matrix)) +(define-extern *identity-matrix* matrix) +(define-extern *hermite-matrix* matrix) +(define-extern matrix+! + "Set dst = src1 + src2. It is okay for any arguments to be the same data. + This is not an efficient implementation." + (function matrix matrix matrix matrix)) +(define-extern matrix-! + "Set dst = src1 - src1. It is okay for any arugments to be the same data. + This is not an efficient implementation." + (function matrix matrix matrix matrix)) +(define-extern matrix*! + "Set dst = src1 * src2. It is okay for any arguments to be the same data. + This is a moderately efficient implementation." + (function matrix matrix matrix matrix)) +(define-extern matrixp*! + "Set dst = src1 * src2. NOTE: this function is a wrapper around matrix*! + that adds no additional functionality. It seems to be a leftover from + a time when matrix*! wasn't safe to use in place. This is unused." + (function matrix matrix matrix matrix)) +(define-extern vector-matrix*! "Set dst = vec * mat. dst may be equal to src." (function vector vector matrix vector)) +(define-extern vector-norm-matrix*! (function vector vector matrix vector)) +(define-extern vector-rotate*! + "Set dst to be the input vector rotated by the rotation part of mat. + The input matrix should be a homogeneous transform with a rotation matrix as its upper-left 3x3. + dst may be equal to src." + (function vector vector matrix vector)) +(define-extern vector3s-matrix*! + "Set dst to be ([src 1.0] * mat).xyz. Doesn't touch the w of dst. + dst and vec can be the same memory" + (function vector3s vector3s matrix vector3s)) +(define-extern vector3s-rotate*! + "Set dst to vec rotated by the rotation in the homogeneous transform mat. + mat should not have a scale/shear (the upper 3x3 should be a pure rotation)." + (function vector3s vector3s matrix vector3s)) +(define-extern matrix-transpose! "Set dst = src^T. src and dst can be the same." (function matrix matrix matrix)) +(define-extern matrix-inverse-of-rot-trans! + "Set dst = src^-1, assuming src is a homogeneous tranform with only rotation/translation. + NOTE: THIS FUNCTION REQUIRES dst != src" + (function matrix matrix matrix)) +(define-extern matrix-4x4-inverse! + "Invert a 4x4 matrix. This assumes that the input is a homogeneous transform. + Src and dst can be the same." + (function matrix matrix matrix)) +(define-extern matrix-translate! "Set dst to a homogeneous transform with only a translation of trans." (function matrix vector matrix)) +(define-extern matrix-translate+! + "Add the given translation to the translation of homogenous transform mat src + and store in dst. It is okay for dst = src." + (function matrix matrix vector matrix)) +(define-extern matrix-scale! + "Set dst to a homogenous transform with only a scale. The x,y,z components + of scale become the x,y,z scaling factors" + (function matrix vector matrix)) +(define-extern scale-matrix! + "Scale an existing matrix. Okay for dst = src. The scaling is applied per row. + This means the x component of scale is used to scale the first row of src. + The w component of scale is used." + (function matrix vector matrix matrix)) +(define-extern matrix-inv-scale! + "Set dst to a homogeneous transform with only a scale. + The x,y,z components of scale are inverted and used as the x,y,z scaling factors" + (function matrix vector matrix)) +(define-extern column-scale-matrix! + "Scale an existing matrix. Okay for dst = src. The scaling is applied column-wise. + Meaning the x component of scale will scale the first column of src." + (function matrix vector matrix matrix)) +(define-extern matrix-rotate-x! + "Set dst to a homogeneous transform matrix for a rotation around the x-axis (degrees)." + (function matrix float matrix)) +(define-extern matrix-rotate-y! + "Set dst to a homoegeneous transform matrix for a rotation around the y axis (degrees)." + (function matrix float matrix)) +(define-extern matrix-rotate-z! + "Set dst to a homogeneous transform matrix for a rotation around the z-axis (degrees)." + (function matrix float matrix)) +(define-extern matrix-rotate-zyx! "Rotate in z,y,x order." (function matrix vector matrix)) +(define-extern matrix-rotate-xyz-2! + "Jak 1 version of matrix-rotate-xyz. Slower than the one below." + (function matrix vector matrix)) +(define-extern matrix-rotate-xyz! "Rotate in x,y,z order." (function matrix vector matrix)) +(define-extern matrix-rotate-zxy! "Rotate in z,x,y order." (function matrix vector matrix)) +(define-extern matrix-rotate-yxz! "Rotate in y,x,z order." (function matrix vector matrix)) +(define-extern matrix-rotate-yzx! "Rotate in y,z,x order." (function matrix vector matrix)) +(define-extern matrix-rotate-yxy! + "Rotate. I believe in yxy order? Compared to the other rotations, this one + is quite a bit more optimized and avoid repeated trig operations." + (function matrix vector matrix)) +(define-extern matrix-rotate-yx! "Rotate by y then x." (function matrix float float matrix)) +(define-extern matrix-axis-sin-cos-vu! + "Create an axis-angle rotation matrix. But given the sin/cos of the angle. Uses the VU." + (function matrix vector float float none)) +(define-extern matrix-axis-sin-cos! + "Create an axis-angle rotation matrix. But given the sin/cos of the angle." + (function matrix vector float float matrix)) +(define-extern matrix-axis-angle! "Create an axis-angle rotation matrix." (function matrix vector float matrix)) +(define-extern matrix-lerp! "Lerp an entire matrix, coefficient-wise." (function matrix matrix matrix float matrix)) +(define-extern matrix-3x3-determinant "Compute the determinant of a 3x3 matrix." (function matrix float)) +(define-extern matrix3-determinant "Unused. Not sure if this has limitations compared to the above version." (function matrix float)) +(define-extern matrix-3x3-inverse! + "Compute the inverse of a 3x3 matrix. Not very efficient. + Requires src != dst." + (function matrix matrix matrix)) +(define-extern matrix-3x3-inverse-transpose! + "Invert and transpose. + Requires dst != src." + (function matrix matrix matrix)) +(define-extern matrix3-inverse-transpose! + "Unused. Not sure if this has limitations compared to other version." + (function matrix matrix matrix)) +(define-extern matrix-3x3-normalize! "Unused." (function matrix matrix matrix)) +(define-extern matrix-4x4-determinant + "Take the determinant of a 4x4 matrix, but this is wrong." + (function matrix float)) +(define-extern matrix-4x4-inverse-transpose! + "Invert and transpose an entire 4x4. I think has no restrictions, other than dst != src. Unused. + The answer is wrong. The determinant function is wrong." + (function matrix matrix matrix)) +(define-extern matrix-y-angle + "If mat has its upper 3x3 as a rotation, gets the y axis rotation." + (function matrix float)) +(define-extern matrix->trans "Multiply xyz by 1/w."(function matrix vector vector)) +(define-extern matrix<-trans "Set the translation." (function matrix vector matrix)) +(define-extern matrix->scale "Get the scale of a matrix." (function matrix vector vector)) +(define-extern matrix-remove-scale! (function matrix matrix vector matrix)) +(define-extern matrix<-scale "Set the scale of a matrix by rescaling." (function matrix vector matrix)) +(define-extern matrix->quat + "Convert matrix to quaternion, works for matrix with scale. + unlike matrix->quaternion." + (function matrix quaternion quaternion)) +(define-extern matrix<-quat "Modify the rotation part of a transform." (function matrix quaternion matrix)) +(define-extern matrix-extract-rotation! (function matrix matrix matrix)) +(define-extern matrix->transformq + "Create a transformq from a matrix. Allowing scale, etc." + (function transformq matrix transformq)) +(define-extern matrix-mirror! "Make a matrix that mirrors. Arguments are unclear." (function matrix vector vector matrix)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; matrix-compose ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern matrix-fur-compose (function matrix vector vector vector matrix)) +(define-extern matrix-fu-compose (function matrix vector vector matrix)) +(define-extern matrix-fr-compose (function matrix vector vector matrix)) +(define-extern matrix-ur-compose (function matrix vector vector vector matrix)) +(define-extern matrix-f-u-compose (function matrix vector vector matrix)) +(define-extern matrix-f-r-compose (function matrix vector vector matrix)) +(define-extern matrix-u-f-compose (function matrix vector vector matrix)) +(define-extern matrix-u-r-compose (function matrix vector vector matrix)) +(define-extern matrix-r-f-compose (function matrix vector vector vector matrix)) +(define-extern matrix-r-u-compose (function matrix vector vector vector matrix)) +(define-extern matrix-f-compose (function matrix vector matrix)) +(define-extern matrix-u-compose (function matrix vector vector vector matrix)) +(define-extern matrix-r-compose (function matrix vector vector vector matrix)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; transform ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; quaternion ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; quaternion is already defined! + +(define-extern quaternion-axis-angle! + "Construct a quaternion from an axis and angle. The axis should be normalized." + (function quaternion float float float float quaternion)) +(define-extern quaternion-vector-angle! + "Construct a quaternion from an axis and angle. The axis should be normalized." + (function quaternion vector float quaternion)) +(define-extern vector-angle<-quaternion! + "Convert the quaternion arg1 to axis-angle form and store in arg0 (angle goes in w)" + (function vector quaternion vector)) +(define-extern quaternion-look-at! "Look along arg1, with arg2 as up." (function quaternion vector vector quaternion)) +(define-extern quaternion-zero! "Set quaternion to all 0's." (function quaternion quaternion)) +(define-extern quaternion-identity! "Set quaternion to 0,0,0,1 (identity)." (function quaternion quaternion)) +(define-extern quaternion-i! "Create unit i quaternion." (function quaternion quaternion)) +(define-extern quaternion-j! "Create unit j quaternion." (function quaternion quaternion)) +(define-extern quaternion-k! "Create unit k quaternion." (function quaternion quaternion)) +(define-extern quaternion-copy! "Set arg0 = arg1." (function quaternion quaternion quaternion)) +(define-extern quaternion-set! "Set arg0 = [arg1, arg2, arg3, arg4]." (function quaternion float float float float quaternion)) +(define-extern quaternion+! "Add quaternions as vectors." (function quaternion quaternion quaternion quaternion)) +(define-extern quaternion-! "Subtract quaternions as vectors." (function quaternion quaternion quaternion quaternion)) +(define-extern quaternion-negate! "Set arg0 = -arg1." (function quaternion quaternion quaternion)) +(define-extern quaternion-conjugate! + "Set arg0 to the conjugate of arg1 (negate only ijk). + If arg1 is normalized, this is equivalent to the inverse + NOTE: this gives you the inverse rotation." + (function quaternion quaternion quaternion)) +(define-extern quaternion-float*! "Multiply each element." (function quaternion quaternion float quaternion)) +(define-extern quaternion-float/! "Divide each element." (function quaternion quaternion float quaternion)) +(define-extern quaternion-norm2 "Get the squared norm of a quaternion." (function quaternion float)) +(define-extern quaternion-norm "Get the norm of a quaternion." (function quaternion float)) +(define-extern quaternion-normalize! "Normalize a quaternion." (function quaternion quaternion)) +(define-extern quaternion-inverse! + "Invert a quaternion. The inverse will satisfy q * q^-1 = identity, even if q is not normalized. + If your quaternion is normalized, it is faster/more accurate to do quaternion-conjugate!" + (function quaternion quaternion quaternion)) +(define-extern quaternion-dot + "Treat quaternions as vectors and take the dot product." + (function quaternion quaternion float)) +(define-extern quaternion*! "Real quaternion multiplication." (function quaternion quaternion quaternion quaternion)) +(define-extern quaternion-right-mult-matrix! + "Place quaternion coefficients into a matrix. + You can convert a quaternion to a matrix by taking the product of this + right-mult and left-mult matrix, but this method is not used. + Instead, quaternion->matrix is a more efficient implementation." + (function matrix quaternion matrix)) +(define-extern quaternion-left-mult-matrix! + "Place quaternion coefficients into a matrix. Unused." + (function matrix quaternion matrix)) +(define-extern quaternion->matrix "Convert quaternion to matrix." (function matrix quaternion matrix)) +(define-extern quaternion->matrix-2 "Unused alternate quaternion->matrix function." (function matrix quaternion matrix)) +(define-extern matrix->quaternion "Convert a rotation matrix to a quaternion." (function quaternion matrix quaternion)) +(define-extern matrix-with-scale->quaternion + "Convert a matrix with a rotation and scale into a quaternion (just the rotation)." + (function quaternion matrix quaternion)) +(define-extern quaternion-vector-len + "Assuming quaternion is normalized, get the length of the xyz part." + (function quaternion float)) +(define-extern quaternion-log! "Take the log of a quaternion. Unused." (function quaternion quaternion quaternion)) +(define-extern quaternion-exp! "Quaternion exponentiation. Unused." (function quaternion quaternion quaternion)) +(define-extern quaternion-slerp! + "Real quaternion slerp. Spherical-linear interpolation is a nice way to interpolate + between quaternions." + (function quaternion quaternion quaternion float quaternion)) +(define-extern quaternion-pseudo-slerp! + "This is a bad interpolation between quaternions. It lerps then normalizes. + It will behave extremely poorly for 180 rotations. + It is unused." + (function quaternion quaternion quaternion float quaternion)) +(define-extern quaternion-pseudo-seek + "Seek one quaternion toward another. Not using real slerp, so this is only good if the quaternions + are pretty similar." + (function quaternion quaternion quaternion float quaternion)) +(define-extern quaternion-smooth-seek! "Another hacky rotation interpolation." (function quaternion quaternion quaternion float quaternion)) +(define-extern quaternion-zxy! + "Make a quaternion from a sequence of z, x, y axis rotations." + (function quaternion vector quaternion)) +(define-extern vector-x-quaternion! + "Get the first row of the rotation matrix for this quaternion." + (function vector quaternion vector)) +(define-extern vector-y-quaternion! + "Get the second row of the rotation matrix for this quaternion." + (function vector quaternion vector)) +(define-extern vector-z-quaternion! + "Get the third row of the rotation matrix for this quaternion." + (function vector quaternion vector)) +(define-extern quaternion-x-angle + "Get the x rotation angle. Not very efficient." + (function quaternion float)) +(define-extern quaternion-y-angle + "Get the y rotation angle. Not very efficient." + (function quaternion float)) +(define-extern quaternion-z-angle + "Get the z rotation angle. Not very efficient." + (function quaternion float)) +(define-extern quaternion-vector-y-angle + "Not sure. Angle between quaternion and axis, projected in xz plane?" + (function quaternion vector float)) +(define-extern quaternion-rotate-local-x! + "Rotate existing quaternion along x axis." + (function quaternion quaternion float quaternion)) +(define-extern quaternion-rotate-local-y! + "Rotate existing quaternion along y axis." + (function quaternion quaternion float quaternion)) +(define-extern quaternion-rotate-local-z! + "Rotate existing quaternion along z axis." + (function quaternion quaternion float quaternion)) +(define-extern quaternion-rotate-y! + "Rotate existing quaternion along y axis (right multiply)." + (function quaternion quaternion float quaternion)) +(define-extern quaternion-rotate-x! + "Rotate existing quaternion along x axis (right multiply)." + (function quaternion quaternion float quaternion)) +(define-extern quaternion-rotate-z! + "Rotate existing quaternion along z axis (right multiply)." + (function quaternion quaternion float quaternion)) +(define-extern quaternion-delta-y "Difference in yaw between two quaternions." (function quaternion quaternion float)) +(define-extern quaternion-rotate-y-to-vector! (function quaternion quaternion quaternion float quaternion)) +(define-extern vector-rotate-around-axis! + "Rotate along y so z-axis points to match another. Use arg3 as the max rotation amount." + (function vector quaternion float vector vector)) +(define-extern vector-rotate-x! "Rotate vector along x axis." (function vector vector float vector)) +(define-extern vector-rotate-y! "Rotate vector along y axis." (function vector vector float vector)) +(define-extern vector-rotate-y-fast! (function vector vector float float vector)) +(define-extern vector-rotate-z! "Rotate vector along z axis." (function vector vector float vector)) +(define-extern vector-y-angle "Get the yaw angle of a vector." (function vector float)) +(define-extern vector-x-angle "Get the pitch angle of a vector." (function vector float)) +(define-extern quaternion<-rotate-y-vector "Create a quaternion representing only the yaw of the given vector." (function quaternion vector quaternion)) +(define-extern quaternion-validate + "Verify that a quaternion is valid, print an error if the length is off by more than 1%.." + (function quaternion none)) +(define-extern quaternion-xz-angle + "Yet another function to compute the yaw of a quaternion. This is a particularly inefficient version." + (function quaternion float)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; euler ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern set-eul! function) ;; (function euler-angles float float float int euler-angles) +;; (define-extern eul->matrix function) ;; (function matrix euler-angles matrix) +;; (define-extern matrix->eul function) ;; (function euler-angles matrix int euler-angles) +;; (define-extern eul->quat function) ;; (function quaternion euler-angles quaternion) +;; (define-extern quat->eul function) ;; (function euler-angles quaternion int euler-angles) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; trigonometry ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern radmod "Wrap arg0 to be within (-pi, pi)." (function float float)) +(define-extern deg- + "Compute arg0-arg1, unwrapped, using rotation units. + Result should be in the range (-180, 180)" + (function float float float)) +(define-extern deg-diff + "Very similar to the function above, but computes arg1 - arg0 instead." + (function float float float)) +(define-extern deg-seek + "Move in toward target by at most max-diff, using rotation units" + (function float float float float)) +(define-extern deg-seek-smooth + "Step amount of the way from in to target, by at most max-diff, using rotation units" + (function float float float float float)) +(define-extern deg-lerp-clamp + "Map [0, 1] to min-val, max-val, handling wrapping and saturating, using rotation units." + (function float float float float)) +(define-extern binary-table (array float)) +(define-extern sincos-table (array float)) +(define-extern sin + "Compute the sine of an angle in rotation units. Unwraps it." + (function float float)) +(define-extern sin-rad + "Compute the sine of an angle in radians. + No unwrap is done, should be in -pi, pi" + (function float float)) +(define-extern *sin-poly-vec* vector) +(define-extern *sin-poly-vec2* vector) +(define-extern vector-sin-rad! + "Taylor series approximation of sine on all 4 elements in a vector. + Inputs should be in radians, in -pi to pi. + Somehow their coefficients are a little bit off. + Like the first coefficient, which should obviously be 1, is not quite 1." + (function vector vector vector)) +(define-extern cos-rad + "Cosine with taylor series. Input is in radians, in -pi, pi. + - TODO constants" + (function float float)) +(define-extern *cos-poly-vec* vector) +(define-extern vector-cos-rad! + "Compute the cosine of all 4 vector elements. + Radians, with no wrapping. Uses taylor series with 4 coefficients." + (function vector vector vector)) +(define-extern vector-sincos-rad! + "Compute the sine and cosine of each element of src, storing it in dst-sin and dst-cos. + This is more efficient than separate calls to sin and cos. + Inputs should be radians in -pi to pi." + (function vector vector vector int)) +(define-extern sincos-rad! + "Compute the sine and cosine of x, store it in the output array. + Has the cosine bug." + (function vector float int)) +(define-extern sincos! + "Compute the sine and cosine of x, store it in the output array. + The input is in rotation units, and is unwrapped properly. + Also has the cosine bug" + (function vector float int)) +(define-extern vector-rad<-vector-deg! + "Convert a vector in rotation units to radians, and unwrap. + Input can be anything, output will be -2pi to pi." + (function vector vector none)) +(define-extern vector-rad<-vector-deg/2! + "Divide the input by two, and then convert from rotation units to radians, unwrapping. + Not sure why this really needs to be separate the from previous function..." + (function vector vector int)) +(define-extern vector-sincos! + "Compute sine and cosine of each element in a vector, in rotation units" + (function vector vector vector int)) +(define-extern tan-rad + "This function appears to be named wrong and actually operates on rotation units." + (function float float)) +(define-extern cos "Cosine of rotation units." (function float float)) +(define-extern tan "Correctly named tangent of rotation units." (function float float)) +(define-extern atan0 + "Inverse tangent, to rotation units. y,x order. Does not handle signs correctly. + Do not use this function directly, instead use atan2." + (function float float float)) +(define-extern atan-series-rad "A helper function for atan." (function float float)) +(define-extern atan-rad "Inverse tangent in radians." (function float float)) +(define-extern sign-bit "Return 1 if bit 31 is set, otherwise 0." (function int int)) +(define-extern sign-float + "Return 1 if arg0 is positive or zero, -1 otherwise. + Fast (no branching)." + (function float float)) +(define-extern sign + "Similar to above, but returns 0 if input is 0. + But is more complicated." + (function float float)) +(define-extern atan2-rad "Atan for radians." (function float float float)) +(define-extern atan "Atan for rotation units. Signs behave like atan.." (function float float float)) +(define-extern asin "Inverse sine, rotation units." (function float float)) +(define-extern acos "Inverse cosine. Returns rotation units." (function float float)) +(define-extern acos-rad "Inverse cosine, radians." (function float float)) +(define-extern sinerp + "Map amount to min,max using sine. Kinda weird, usually people use cosine." + (function float float float float)) +(define-extern sinerp-clamp "Like sinerp, but clamp to min,max." (function float float float float)) +(define-extern coserp "Weird lerp with cosine (over 90 degrees?)." (function float float float float)) +(define-extern coserp-clamp + "Weird 90 degree lerp with cosine, clamped to min,max." + (function float float float float)) +(define-extern coserp180 "Classic lerp with cosine." (function float float float float)) +(define-extern coserp180-clamp "Classic coserp with saturation." (function float float float float)) +(define-extern ease-in-out + "Weird coserp like mapping from 0 to 1 as progress goes from 0 to total." + (function int int float)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; math-fx ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; res-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; TODO confirm, this is just copied from jak3 which copied from jak1 +(deftype res-tag (uint128) + "Metadata about a property in a [[res-lump]], such as name, element type and element count." + ((name symbol :offset 0) + (key-frame float :offset 32) + (elt-type type :offset 64) + (data-offset uint16 :offset 96) + (elt-count uint32 :offset 112 :size 15) + (inlined? uint8 :offset 127 :size 1) ;; guess. + ) + :flag-assert #x900000010 + ) + +;; made-up type +(deftype res-tag-pair (uint64) + "The indices of two [[res-tag]]s. If the specific key-frame time is in between two + res-tags, this type is used to return the indices of the first res-tag before and after + the specified time." + ((lo int32 :offset 0) + (hi int32 :offset 32) + ) + ) + +;; +++res-h:res-lump-flags +(defenum res-lump-flags + :type uint16 + :bitfield #t + (sorted 0) + (rlf1 1) + ) +;; ---res-h:res-lump-flags + +(declare-type entity-links structure) + +(deftype res-lump (basic) + ((length int32 :offset-assert 4) + (allocated-length int16 :offset-assert 8) + (flags res-lump-flags :offset-assert 10) ;; res-lump-flags + (data-base pointer :offset-assert 12) ;; guessed by decompiler + (data-top pointer :offset-assert 16) ;; guessed by decompiler + (data-size int32 :offset-assert 20) + (extra entity-links :offset-assert 24) ;; guessed by decompiler + (tag (pointer res-tag) :offset-assert 28) ;; guessed by decompiler + ) + :method-count-assert 22 + :size-assert #x20 + :flag-assert #x1600000020 + ;; field extra uses ~A with a signed load. + (:methods + (new (symbol type int int) _type_) ;; 0 + (get-property-data + "Returns an address to a given property's data at a specific time stamp, or default on error. + @param name is the name of the property you want, mode is its lookup mode ('interp 'base 'exact), time is the timestamp. + @param default is the default result returned in the case of an error. + @param tag-addr is an address to a res-tag. The current base tag is written to this. Ignored if tag-addr is #f + @param buf-addr is an address to the data buffer used to write interpolated data to. It must have enough space! Only necessary for 'interp mode." + (_type_ symbol symbol float pointer (pointer res-tag) pointer) pointer :no-virtual) ;; 9 + (get-property-struct + "Returns a given struct property's value at a specific time stamp, or default on error. + @param name is the name of the property you want, `mode` is its lookup mode ('interp 'base 'exact), `time` is the timestamp. + @param default is the default result returned in the case of an error. + @param tag-addr is an address to a [[res-tag]]. The current base tag is written to this. Ignored if tag-addr is #f. + @param buf-addr is an address to the data buffer used to write interpolated data to. + It must have enough space! Only necessary for 'interp mode." + (_type_ symbol symbol float structure (pointer res-tag) pointer) structure :no-virtual) ;; 10 + (get-property-value + "Returns a given value property's value at a specific time stamp, or default on error. + @param name is the name of the property you want, `mode` is its lookup mode ('interp 'base 'exact), `time` is the timestamp. + @param default is the default result returned in the case of an error. + @param tag-addr is an address to a res-tag. The current base tag is written to this. Ignored if `tag-addr` is #f. + @param buf-addr is an address to the data buffer used to write interpolated data to. + It must have enough space! Only necessary for 'interp mode." + (_type_ symbol symbol float uint128 (pointer res-tag) pointer) uint128 :no-virtual) ;; 11 + (get-property-value-float (_type_ symbol symbol float float (pointer res-tag) pointer) float) ;; 12 + (get-tag-index-data "Get the data address of the n'th tag." (_type_ int) pointer) ;; 13 + (get-tag-data "Get the data address of the specified tag." (_type_ res-tag) pointer) ;; 14 + (allocate-data-memory-for-tag! + "Find space for the data described by arg0 in this. + Returns a tag with data-offset set correctly for this res-lump. + If the lump already contains memory for the given tag, and it is big enough, + it will be reused. Alignment will be at least 8 bytes. + If the input tag has elt-count = 0, it will return a tag for elt-count = 1." + (_type_ res-tag) res-tag) ;; 15 + (sort! "Sort all tags based on name, then key-frame." (_type_) _type_) ;; 16 + (add-data! + "Given a tag and a pointer to its data, copy it to this res-lump. + This doesn't seem to do the right thing if the given tag is a non-inline tag + with > 1 element." + (_type_ res-tag pointer) res-lump) ;; 17 + (add-32bit-data! "Add a single 32-bit value using [[add-data!]]." (_type_ res-tag object) res-lump) ;; 18 + (lookup-tag-idx + "Look up the index of the tag containing with the given name and timestamp. + Correct lookups return a res-tag-pair, which contains one tag index in the lower 32 bits and one in the upper 32 bits. + Depending on the mode, they may be the same, or they may be two tags that you should interpolate + between, if the exact time was not found. + + @param name-sym should be the name of the thing you want. + @param time is for the timestamp you want. + If mode = 'base, then both the indices are the same and the timestamp is ignored. + If mode = 'interp, then it tries to get closest below/closest above (or both the same, if exact match found). + If mode = 'exact, then it requires an exact timestamp match and both indices are the same. + If things go wrong, returns a negative number." + (_type_ symbol symbol float) res-tag-pair :no-virtual) ;; 19 + (make-property-data + "Returns (a pointer to) the value data of a property with the tag-pair. + If tag-pair does not represent an exact point in the timeline, then the data is interpolated based on time + with the result written into buf. buf must have enough space to copy all of the data. + Otherwise, simply returns an address to the resource binary." + (_type_ float res-tag-pair pointer) pointer) ;; 20 + (get-curve-data! + "Read curve data and write it to curve-target. Return #t if both + control points and knots data was succesfully read, #f otherwise." + (_type_ curve symbol symbol float) symbol) ;; 21 + ) + ) + +(define-extern *res-key-string* string) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; gsound-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defenum sound-command + :type uint16 + (load-bank 0) + (unload-bank 1) + (load-music 2) + (unload-music 3) + (play 4) + (pause-sound 5) + (stop-sound 6) + (continue-sound 7) + (set-param 8) + (set-master-volume 9) + (pause-group 10) + (stop-group 11) + (continue-group 12) + (get-irx-version 13) + (set-language 14) + (set-reverb 15) + (shutdown 16) + (list-sounds 17) + (set-fps 18) + (iop-mem 19) + (cancel-dgo 20) + (set-stereo-mode 21) + (set-globals 22) + ) + +;; +++gsound-h:sound-group +(defenum sound-group + :bitfield #t + :type uint8 + (sfx) + (music) + (dialog) ;; same as jak 1 dialog + (sog3) + (ambient) + (dialog2) ;; more dialog + (special) + (sog7) + ) +;; ---gsound-h:sound-group + +(deftype sound-stream-name (structure) + ((name uint8 48 :offset-assert 0) ;; guessed by decompiler + ) + :pack-me + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype sound-id (uint32) + () + :flag-assert #x900000004 + ) + +(deftype sound-bank-id (uint32) + () + :flag-assert #x900000004 + ) + +(deftype sound-name (uint128) + ((lo uint64 :offset 0) ;; added to help with cases where they access it by u64. + (hi uint64 :offset 64) + ) + :flag-assert #x900000010 + ) + +(deftype sound-rpc-cmd (structure) + ((rsvd1 uint16 :offset-assert 0) + (command sound-command :offset-assert 2) ;; sound-command + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype sound-play-params (structure) + ((mask uint8 :offset-assert 0) ;; uint16 + (group uint8 :offset-assert 1) + (volume int16 :offset-assert 2) ;; int32 + (pitch-mod int16 :offset-assert 4) + (bend int16 :offset-assert 6) + (pan int16 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xa + :flag-assert #x90000000a + ) + +(deftype sound-rpc-bank-cmd (sound-rpc-cmd) + ((bank-name sound-name :offset-assert 16) ;; sound-name + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype sound-rpc-test-cmd (sound-rpc-cmd) + ((ee-addr pointer :offset-assert 4) ;; guessed by decompiler + (param0 uint16 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xa + :flag-assert #x90000000a + ) + +(deftype sound-rpc-sound-cmd (sound-rpc-cmd) + ((id sound-id :offset-assert 4) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype sound-rpc-group-cmd (sound-rpc-cmd) + ((group uint32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype sound-rpc-load-bank (sound-rpc-bank-cmd) + ((ee-addr pointer :offset-assert 32) ;; guessed by decompiler + (mode uint32 :offset-assert 36) + (priority uint32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) + +(deftype sound-rpc-load-music (sound-rpc-bank-cmd) + () + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype sound-rpc-unload-bank (sound-rpc-cmd) + ((mode uint32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype sound-rpc-play (sound-rpc-sound-cmd) + ((name sound-name :offset-assert 16) ;; sound-name + (params sound-play-params :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x2a + :flag-assert #x90000002a + ) + +(deftype sound-rpc-pause-sound (sound-rpc-sound-cmd) + () + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype sound-rpc-stop-sound (sound-rpc-sound-cmd) + () + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype sound-rpc-continue-sound (sound-rpc-sound-cmd) + () + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype sound-rpc-set-param (sound-rpc-sound-cmd) + ((params sound-play-params :inline :offset-assert 16) + (auto-time int32 :offset-assert 28) + (auto-from int32 :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) + +(deftype sound-rpc-set-master-volume (sound-rpc-group-cmd) + ((volume int32 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) + +(deftype sound-rpc-pause-group (sound-rpc-group-cmd) + () + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype sound-rpc-stop-group (sound-rpc-group-cmd) + () + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype sound-rpc-continue-group (sound-rpc-group-cmd) + () + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype sound-rpc-cancel-dgo (sound-rpc-group-cmd) + ((id uint32 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) + +(deftype sound-rpc-get-irx-version (sound-rpc-cmd) + ((major uint32 :offset-assert 4) + (minor uint32 :offset-assert 8) + (ee-addr pointer :offset-assert 12) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype sound-rpc-set-language (sound-rpc-cmd) + ((lang uint32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype sound-rpc-set-stereo-mode (sound-rpc-cmd) + ((mode int32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype sound-rpc-set-reverb (sound-rpc-cmd) + ((core uint8 :offset-assert 4) + (reverb int32 :offset-assert 8) + (left uint32 :offset-assert 12) + (right uint32 :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) + +(deftype sound-rpc-set-ear-trans (sound-rpc-cmd) + ((ear-trans1 int32 3 :offset-assert 4) ;; guessed by decompiler + (ear-trans0 int32 3 :offset-assert 16) ;; guessed by decompiler + (cam-trans int32 3 :offset-assert 28) ;; guessed by decompiler + (cam-forward int32 3 :offset-assert 40) ;; guessed by decompiler + (cam-left int32 3 :offset-assert 52) ;; guessed by decompiler + (cam-scale int32 :offset-assert 64) + (cam-inverted int32 :offset-assert 68) + ) + :method-count-assert 9 + :size-assert #x48 + :flag-assert #x900000048 + ) + +(deftype sound-rpc-shutdown (sound-rpc-cmd) + () + :method-count-assert 9 + :size-assert #x4 + :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-set-globals (sound-rpc-cmd) + ((cam-inverted uint8 :offset-assert 4) + (music-pitch-mod int16 :offset-assert 6) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype sound-rpc-list-sounds (sound-rpc-cmd) + () + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype sound-rpc-unload-music (sound-rpc-cmd) + () + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype sound-rpc-union (structure) + ((data uint32 12 :offset-assert 0) ;; guessed by decompiler + (load-bank sound-rpc-load-bank :offset-assert 0 :overlay-at data) + (unload-bank sound-rpc-unload-bank :offset-assert 0 :overlay-at data) + (play sound-rpc-play :offset-assert 0 :overlay-at data) + (pause-sound sound-rpc-pause-sound :offset-assert 0 :overlay-at data) + (stop-sound sound-rpc-stop-sound :offset-assert 0 :overlay-at data) + (continue-sound sound-rpc-continue-sound :offset-assert 0 :overlay-at data) + (set-param sound-rpc-set-param :offset-assert 0 :overlay-at data) + (set-master-volume sound-rpc-set-master-volume :offset-assert 0 :overlay-at data) + (pause-group sound-rpc-pause-group :offset-assert 0 :overlay-at data) + (stop-group sound-rpc-stop-group :offset-assert 0 :overlay-at data) + (continue-group sound-rpc-continue-group :offset-assert 0 :overlay-at data) + (get-irx-version sound-rpc-get-irx-version :offset-assert 0 :overlay-at data) + (set-language sound-rpc-set-language :offset-assert 0 :overlay-at data) + (set-reverb sound-rpc-set-reverb :offset-assert 0 :overlay-at data) + (set-fps sound-rpc-set-fps :offset-assert 0 :overlay-at data) + (set-globals sound-rpc-set-globals :offset-assert 0 :overlay-at data) + (shutdown sound-rpc-shutdown :offset-assert 0 :overlay-at data) + (list-sounds sound-rpc-list-sounds :offset-assert 0 :overlay-at data) + (unload-music sound-rpc-unload-music :offset-assert 0 :overlay-at data) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype sound-info (structure) + ((flags uint32 :offset-assert 0) + (num-instances uint32 :offset-assert 4) + (index uint32 :offset-assert 8) + (name sound-name :offset-assert 16) + (group uint8 :offset-assert 32) + (fo-power float :offset-assert 36) + (fo-min float :offset-assert 40) + (fo-max float :offset-assert 44) + (volume float :offset-assert 48) + (pan float :offset-assert 52) + (priority int8 :offset-assert 56) + (duck-amount float :offset-assert 60) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +(deftype sound-spec (sound-play-params) + ((auto-time int32 :offset-assert 12) + (auto-from int32 :offset-assert 16) + (info sound-info :offset-assert 20) + (info-index uint32 :offset-assert 24) + (trans vector :inline :offset-assert 32) ;; int32 4 + (flags uint16 :offset-assert 48) + (fo-min float :offset-assert 52) ;; int16 + (fo-max float :offset-assert 56) ;; int16 + (fo-power float :offset-assert 60) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +(deftype sound-handle (structure) + ((proc handle :offset-assert 0) + (flags uint64 :offset-assert 8) + (fader-cur float :offset-assert 16) + (fader-targ float :offset-assert 20) + (dist float :offset-assert 24) + (viewport int8 :offset-assert 28) + (num-instances uint8 :offset-assert 29) + (svc uint8 :offset-assert 30) + (index uint8 :offset-assert 31) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype sound-instance (sound-spec) + ((last-update uint64 :offset-assert 64) + (joint uint8 :offset-assert 72) + (sh sound-handle :offset-assert 76) + (id uint32 :offset-assert 80) + (pan-angle float :offset-assert 84) + (volumef float :offset-assert 88) + ) + :method-count-assert 9 + :size-assert #x5c + :flag-assert #x90000005c + ) + +(defenum sound-bank-mode + :type uint32 + (none 0) + (unknown 1) + (common 2) + (mode 3) + (full 4) + (half 5) + (halfa 6) + (halfb 7) + (halfc 8) + (virtual 9) + (higha 10) + (mida 11) + (midb 12) + (lowb 13) + (lowc 14) + (lowd 15) + (lowe 16) + (lowf 17) + ) + +(deftype sound-bank-state (structure) + ((name symbol :offset-assert 0) ;; guessed by decompiler + (mode sound-bank-mode :offset-assert 4) ;; guessed by decompiler + (high basic :offset-assert 8) + (str-name basic :offset-assert 12) + ) + :pack-me + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(defenum stream-status + :type uint32 + :bitfield #t + (ss1 1) ;; id-is-playing + (ss4 4) ;; is-playing + (ss6 6) ;; id-is-playing + (ss9 9) + ) + +(deftype sound-iop-info (structure) + ((freemem uint32 :offset-assert 0) + (freemem2 uint32 :offset-assert 4) + (nocd uint32 :offset-assert 8) + (dirtycd uint32 :offset-assert 12) + (chinfo uint8 48 :offset-assert 16) ;; guessed by decompiler + (id-info sound-id 48 :offset-assert 64) + (pad uint32 2 :offset-assert 256) + (music-position uint32 :offset-assert 264) + (music-status stream-status :offset-assert 268) + (music-name sound-stream-name :inline :offset-assert 272) ;; field could not be read. + (stream-position uint32 4 :offset-assert 320) ;; guessed by decompiler + (stream-status stream-status 4 :offset-assert 336) ;; guessed by decompiler + (stream-name sound-stream-name 4 :inline :offset-assert 352) ;; guessed by decompiler + (stream-id sound-id 4 :offset-assert 544) ;; guessed by decompiler + (sound-bank0 uint8 16 :offset-assert 560) + (sound-bank1 uint8 16) + (sound-bank2 uint8 16) + (sound-bank3 uint8 16) + (sound-bank4 uint8 16) + (sound-bank5 uint8 16) + (sound-bank6 uint8 16) + (sound-bank7 uint8 16) + (endpad uint128) ;;added + ) + :method-count-assert 9 + :size-assert #x2c0 + :flag-assert #x9000002c0 + ) + +(deftype ambient-sound (basic) + ((playing-id sound-id :offset-assert 4) ;; guessed by decompiler + (entity entity :offset-assert 8) ;; guessed by decompiler + (sound-count int32 :offset-assert 12) + (spec sound-spec :inline :offset-assert 16) + (play-time time-frame :offset-assert 80) ;; time-frame + (time-base time-frame :offset-assert 88) ;; time-frame + (time-random time-frame :offset-assert 96) ;; time-frame + ) + :method-count-assert 17 + :size-assert #x68 + :flag-assert #x1100000068 + (:methods + (new "Set up ambient-sound. Can use an entity-actor (grabs from lump), sound-spec, or name as a string." (symbol type basic vector float) _type_) ;; 0 + (update! "Per-frame update of ambient sound." (_type_) int) ;; 9 + (change-sound! "Change the sound being played." (_type_ sound-name) int) ;; 10 + (update-trans! "Change the trans of the sound." (_type_ vector) int) ;; 11 + (update-vol! "Change the volume of the sound." (_type_ float) int) ;; 12 + (update-pitch-mod! (_type_ float) none) ;; 13 + (set-falloff-far! (_type_ float) none) ;; 14 + (set-falloff-mode! (_type_ int) none) ;; 15 + (stop! (_type_) int) ;; 16 + ) + ) + +(define-extern *debug-sound-sliders* object) +(define-extern *music-volume-ducked-by-sound* object) +(define-extern *music-lock* object) +(define-extern *current-sound-id* sound-id) +(define-extern *sound-iop-info* sound-iop-info) +(define-extern *jukebox-time* time-frame) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; sound-info ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern *sound-info* (array sound-info)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; timer-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (deftype timer-mode (uint32) +;; () +;; :flag-assert #x900000004 +;; ) + +#| +(deftype timer-bank (structure) + ((count uint32 :offset-assert 0) + (mode timer-mode :offset-assert 16) ;; guessed by decompiler + (comp uint32 :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) +|# + +#| +(deftype timer-hold-bank (timer-bank) + ((hold uint32 :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x34 + :flag-assert #x900000034 + ) +|# + +#| +(deftype stopwatch (basic) + ((prev-time-elapsed uint64 :offset-assert 8) ;; time-frame + (start-time uint64 :offset-assert 16) ;; time-frame + (begin-level int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype sce-cd-clock (structure) + ((stat uint8 :offset-assert 0) + (second uint8 :offset-assert 1) + (minute uint8 :offset-assert 2) + (hour uint8 :offset-assert 3) + (pad uint8 :offset-assert 4) + (day uint8 :offset-assert 5) + (month uint8 :offset-assert 6) + (year uint8 :offset-assert 7) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +;; (define-extern *ticks-per-frame* object) ;; int +;; (define-extern timer-init function) ;; (function timer-bank timer-mode int) +;; (define-extern bcd-conv function) +;; (define-extern *month-days* object) +;; (define-extern is-leap function) +;; (define-extern mdy-to-day function) +;; (define-extern rtclock-to-secs function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; vif-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype vif-stat (uint32) + ((UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +;; (deftype vif-fbrst (uint32) +;; () +;; :flag-assert #x900000004 +;; ) + +;; (deftype vif-err (uint32) +;; () +;; :flag-assert #x900000004 +;; ) + +#| +(deftype vif-bank (structure) + ((stat uint32 :offset-assert 0) + (fbrst uint32 :offset-assert 16) + (err vif-err :offset-assert 32) ;; guessed by decompiler + (mark uint32 :offset-assert 48) + (cycle uint32 :offset-assert 64) + (mode uint32 :offset-assert 80) + (num uint32 :offset-assert 96) + (mask uint32 :offset-assert 112) + (code uint32 :offset-assert 128) + (itops uint32 :offset-assert 144) + (base uint32 :offset-assert 160) + (offset uint32 :offset-assert 176) + (tops uint32 :offset-assert 192) + (itop uint32 :offset-assert 208) + (top uint32 :offset-assert 224) + (r0 uint32 :offset-assert 256) + (r1 uint32 :offset-assert 272) + (r2 uint32 :offset-assert 288) + (r3 uint32 :offset-assert 304) + (c0 uint32 :offset-assert 320) + (c1 uint32 :offset-assert 336) + (c2 uint32 :offset-assert 352) + (c3 uint32 :offset-assert 368) + ) + :method-count-assert 9 + :size-assert #x174 + :flag-assert #x900000174 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; dma-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype dma-chcr (uint32) + "Memory mapped DMA channel control register. Typically used to start and check on DMA transfer." + ((dir uint8 :offset 0 :size 1) + (mod uint8 :offset 2 :size 2) + (asp uint8 :offset 4 :size 2) + (tte uint8 :offset 6 :size 1) + (tie uint8 :offset 7 :size 1) + (str uint8 :offset 8 :size 1) + (tag uint16 :offset 16 :size 16) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype dma-bank (structure) + "Bank of memory mapped DMA registers for a single channel. Used to control DMA." + ((chcr dma-chcr :offset 0) ;; guessed by decompiler + (madr uint32 :offset 16) + (qwc uint32 :offset 32) + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) + +(deftype dma-bank-source (dma-bank) + "DMA channel registers for a DMA channel supporting source-chain." + ((tadr uint32 :offset 48) + ) + :method-count-assert 9 + :size-assert #x34 + :flag-assert #x900000034 + ) + +(deftype dma-bank-vif (dma-bank-source) + "DMA channel registers for a DMA channel with call/ret stack." + ((as0 uint32 :offset 64) + (as1 uint32 :offset 80) + ) + :method-count-assert 9 + :size-assert #x54 + :flag-assert #x900000054 + ) + +(deftype dma-bank-spr (dma-bank-source) + "DMA channel registers for a DMA channel supporting scratchpad transfer." + ((sadr uint32 :offset 128) + ) + :method-count-assert 9 + :size-assert #x84 + :flag-assert #x900000084 + ) + +(deftype dma-ctrl (uint32) + "Main DMA control register, shared for all channels." + ((dmae uint8 :offset 0 :size 1) + (rele uint8 :offset 1 :size 1) + (mfd uint8 :offset 2 :size 2) + (sts uint8 :offset 4 :size 2) + (std uint8 :offset 6 :size 2) + (rcyc uint8 :offset 8 :size 3) + ) + :flag-assert #x900000004 + ) + +(deftype dma-enable (uint32) + ((cpnd uint8 :offset 16 :size 1) + ) + :flag-assert #x900000004 + ) + +(deftype dma-sqwc (uint32) + ((sqwc uint8 :offset 0 :size 8) + (tqwc uint8 :offset 16 :size 8) + ) + :flag-assert #x900000004 + ) + +(deftype dma-bank-control (structure) + "Memory mapping for shared DMA registers." + ((ctrl dma-ctrl :offset-assert 0) ;; guessed by decompiler + (stat uint32 :offset 16) + (pcr uint32 :offset 32) + (sqwc dma-sqwc :offset 48) ;; guessed by decompiler + (rbsr uint32 :offset 64) + (rbor uint32 :offset 80) + (stadr uint32 :offset 96) + (enabler uint32 :offset 5408) + (enablew uint32 :offset 5520) + ) + :method-count-assert 9 + :size-assert #x1594 + :flag-assert #x900001594 + ) + +(deftype vu-code-block (basic) + "Unused type for some VU code. vu-function is used instead." + ((name basic :offset-assert 4) + (code uint32 :offset-assert 8) + (size int32 :offset-assert 12) + (dest-address uint32 :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) + +(deftype vu-stat (uint64) + () + :flag-assert #x900000008 + ) + +(defenum dma-tag-id + :bitfield #f + :type uint8 + (refe 0) ;; addr=ADDR, ends after this transfer + (cnt 1) ;; addr=after tag, next-tag=after data + (next 2) ;; addr=after tag, next-tag=ADDR + (ref 3) ;; addr=ADDR, next-tag=after tag + (refs 4) ;; ref, but stall controled + (call 5) ;; + (ret 6) ;; + (end 7) ;; next, but ends. + ) + +(deftype dma-tag (uint64) + "The 64-bit tag used by the DMA system." + ((qwc uint16 :offset 0 :size 16) + (pce uint8 :offset 26 :size 2) + (id dma-tag-id :offset 28 :size 3) + (irq uint8 :offset 31 :size 1) + (addr uint32 :offset 32 :size 31) + (spr uint8 :offset 63 :size 1) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype dma-bucket (structure) + "A linked list of DMA data, typically all in the same category. Used to organize the full DMA chain." + ((tag uint64 :offset-assert 0) ;; dma-tag + (last (pointer dma-tag) :offset-assert 8) ;; guessed by decompiler + (dummy uint32 :offset-assert 12) + (next uint32 :offset 4) + (clear uint64 :offset-assert 8 :overlay-at last) + (vif0 uint32 :offset-assert 8 :overlay-at last) + (vif1 uint32 :offset-assert 12 :overlay-at dummy) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype vif-mask (uint32) + ((m0 uint8 :offset 0 :size 2) + (m1 uint8 :offset 2 :size 2) + (m2 uint8 :offset 4 :size 2) + (m3 uint8 :offset 6 :size 2) + (m4 uint8 :offset 8 :size 2) + (m5 uint8 :offset 10 :size 2) + (m6 uint8 :offset 12 :size 2) + (m7 uint8 :offset 14 :size 2) + (m8 uint8 :offset 16 :size 2) + (m9 uint8 :offset 18 :size 2) + (m10 uint8 :offset 20 :size 2) + (m11 uint8 :offset 22 :size 2) + (m12 uint8 :offset 24 :size 2) + (m13 uint8 :offset 26 :size 2) + (m14 uint8 :offset 28 :size 2) + (m15 uint8 :offset 30 :size 2) + ) + :flag-assert #x900000004 + ) + +(deftype vif-stcycl-imm (uint16) + "The imm field of a VIF code using STCYCL, which adjusts the pattern for storing data." + ((cl uint8 :offset 0 :size 8) + (wl uint8 :offset 8 :size 8) + ) + :flag-assert #x900000002 + ) + +(deftype vif-unpack-imm (uint16) + "The imm field of a VIF code using UNPACK, which transfers data to VU memory." + ((addr uint16 :offset 0 :size 10) + (usn uint8 :offset 14 :size 1) + (flg uint8 :offset 15 :size 1) + ) + :flag-assert #x900000002 + ) + +;; all these have mask (only applies to unpacks) and interrupt not set. +(defenum vif-cmd + :bitfield #f + :type uint8 + (nop 0) ;; no-op, can still have irq set. + (stcycl 1) ;; set write recycle register + (offset 2) ;; set offset register + (base 3) ;; set base register + (itop 4) ;; set data pointer register (itops) + (stmod 5) ;; set mode register + (mskpath3 6) ;; set path 3 mask + (mark 7) ;; set mark register + (pc-port 8) ;; special tag for PC Port data. + (flushe 16) ;; wait for end of microprogram + (flush 17) ;; wait for end of microprogram and transfer (path1/path2) + (flusha 19) ;; wait for end of microprogram and transfer (path1/path2/path3) + (mscal 20) ;; activate microprogram (call) + (mscalf 21) ;; flushe and activate (call) + (mscnt 23) ;; activate microprogram (continue) + (stmask 32) ;; set MASK register. + (strow 48) ;; set filling data + (stcol 49) ;; set filling data + (mpg 74) ;; transfer microprogram + (direct 80) ;; straight to GIF. + (directhl 81) + (unpack-s-32 96) + (unpack-s-16 97) + (unpack-s-8 98) + ;; 99 is invllid + (unpack-v2-32 100) + (unpack-v2-16 101) + (unpack-v2-8 102) + ;; 103 is invalid + (unpack-v3-32 104) + (unpack-v3-16 105) + (unpack-v3-8 106) + ;; 107 is invalid + (unpack-v4-32 108) + (unpack-v4-16 109) + (unpack-v4-8 110) + (unpack-v4-5 111) + (cmd-mask 239) ;; not sure what this is. + ) + +;; this makes a copy of the above type, but uses a uint32. +(defenum vif-cmd-32 + :bitfield #f + :type uint32 + :copy-entries vif-cmd + ) + +(deftype vif-tag (uint32) + "A tag consumed by the VIF, which accepts DMA data." + ((imm uint16 :offset 0 :size 16) + (num uint8 :offset 16 :size 8) + (cmd vif-cmd :offset 24 :size 7) + (irq uint8 :offset 31 :size 1) + (msk uint8 :offset 28 :size 1) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(define-extern dma-sync-fast (function dma-bank none)) +(define-extern dma-send-no-scratch (function dma-bank uint32 uint32 none)) +(define-extern dma-sync-with-count (function dma-bank (pointer int32) int)) +(define-extern dma-count-until-done (function dma-bank (pointer int32) int)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; video-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype video-params (structure) + "Parameters for the framebuffer." + ((set-video-mode symbol :offset-assert 0) ;; guessed by decompiler + (reset-video-mode symbol :offset-assert 4) ;; guessed by decompiler + (relative-x-scale float :offset 16) + (display-dx int32 :offset-assert 20) + (display-dy int32 :offset-assert 24) + (display-sy int32 :offset-assert 28) + (relative-x-scale-reciprical float :offset-assert 32) + (smode2 uint64 :offset-assert 40) + (aspect-ratio basic :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x34 + :flag-assert #x900000034 + ) + +(define-extern *video-params* video-params) ;; + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; vu1-user-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; +++vu1-user-h:tpage-category +(defenum tpage-category + :type int8 + (tfrag 0) ;; + (pris 1) + (shrub 2) + (alpha 3) + (water 4) + (warp 5) + (pris2 6) + (sprite 7) + (hud 8) + ) +;; ---vu1-user-h:tpage-category + +;; +++vu1-user-h:tpage-category-u32 +(defenum tpage-category-u32 + :type uint32 + :copy-entries tpage-category + ) +;; ---vu1-user-h:tpage-category-u32 + +;; +++vu1-user-h:bucket-id +;; -l- +(defenum bucket-id + :type int32 + ) + +;; ---vu1-user-h:bucket-id + +(defenum bucket-id-16 + :type int16 + :copy-entries bucket-id + ) + +;; +++vu1-user-h:texture-enable-mask +(defenum texture-enable-mask + :type uint64 + :bitfield #t + ) +;; ---vu1-user-h:texture-enable-mask + +;; +++vu1-user-h:texture-enable-mask-u32 +(defenum texture-enable-mask-u32 + :type uint32 + :bitfield #t + :copy-entries texture-enable-mask + ) +;; ---vu1-user-h:texture-enable-mask-u32 + +;; +++vu1-user-h:vu1-renderer-mask +;; TODO stolen from Jak 2 (and it was all wrong...) (and now stolen from Jak 3, fun!) +(defenum vu1-renderer-mask + :type uint64 + :bitfield #t + (rn0) + (rn1) + (rn2) + (sky) + (rn4) + (rn5) + (hfrag) + (hfrag-scissor) + (tfrag) + (tie-scissor) + (tie) + (etie) + (etie-scissor) + (tie-vanish) + (generic) ;; right + (merc) ;; right + (emerc) ;; right + (shrubbery) + (shrub-near) + (billboard) + (shrub-vanish) + (tfrag-trans) + (tie-scissor-trans) + (tie-trans) + (etie-trans) + (etie-scissor-trans) + (tfrag-water) + (tie-scissor-water) + (tie-water) + (etie-water) + (etie-scissor-water) + (sprite) + (rn32) + (rn33) + (rn34) + (rn35) + (rn36) + (rn37) + ) +;; ---vu1-user-h:vu1-renderer-mask + +(deftype dma-foreground-sink (basic) + "A specification for where a foreground renderer should output its DMA data." + ((bucket bucket-id :offset-assert 4) ;; bucket-id + (foreground-texture-page tpage-category :offset-assert 8) ;; tpage-category + (foreground-texture-level int8 :offset-assert 9) + (foreground-output-bucket int8 :offset-assert 10) + ) + :method-count-assert 9 + :size-assert #xb + :flag-assert #x90000000b + ) + +(deftype generic-bucket-state (structure) + "The state of buffers for the generic renderer. + When generating generic DMA data, you must know the previous state + of the VU's memory to properly double-buffer the input and output data." + ((gifbuf-adr uint32 :offset-assert 0) + (inbuf-adr uint32 :offset-assert 4) + ) + :pack-me + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype generic-dma-foreground-sink (dma-foreground-sink) + "A specification for where a foreground generic renderer should output DMA data, + and the state of the VU memory buffers at the end of the bucket." + ((state generic-bucket-state :inline :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; profile-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-type dma-buffer structure) + +(deftype profile-segment (structure) + "Confusingly, this has two uses. Either a single event, or a summary of all events within a category." + ((name symbol :offset-assert 0) ;; guessed by decompiler + (start-time int16 :offset-assert 4) + (end-time int16 :offset-assert 6) + (count uint8 :offset-assert 8) + (vu-count uint8 :offset-assert 9) + (depth uint16 :offset-assert 10) + (color rgba :offset-assert 12) ;; guessed by decompiler + (code-time uint16 :offset-assert 4 :overlay-at start-time) + (vu-time uint16 :offset-assert 6 :overlay-at end-time) + ) + :allow-misaligned + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype profile-collapse (structure) + "An array of 'summaries'. Each entry in data is a summary of all events within a category." + ((count int32 :offset-assert 0) + (data profile-segment 48 :inline :offset-assert 4) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x304 + :flag-assert #x900000304 + ) + +(deftype profile-segment-array (basic) + "All profiling data for a frame, stored as a tree of events. There is one for the VU, and one for the EE." + ((count int16 :offset-assert 4) + (depth int8 :offset-assert 6) + (max-depth int8 :offset-assert 7) + (base-time int16 :offset-assert 8) + (segment profile-segment 9 :offset-assert 12) ;; guessed by decompiler + (data profile-segment 2100 :inline :offset-assert 48) ;; guessed by decompiler + ) + :method-count-assert 13 + :size-assert #x8370 + :flag-assert #xd00008370 + (:methods + (get-total-time "Get the duration of the top-level event (typically, the whole frame)" (_type_) int) ;; 9 + (start-frame! "Restart the profiler for the start of a frame." (_type_) none) ;; 10 + (start-segment! "Start an event." (_type_ symbol rgba) none) ;; 11 + (end-segment! "Stop the most recently started event." (_type_) none) ;; 12 + ) + ) + +(deftype profile-array (structure) + "The EE and VU profilers, and the drawing code." + ((data profile-segment-array 2 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 12 + :size-assert #x8 + :flag-assert #xc00000008 + (:methods + (postprocess-data! "Create the collapsed summary of the collected data." (_type_) none) ;; 9 + (draw-bars! "Generate DMA data for drawing the profile bars." (_type_ dma-buffer int) none) ;; 10 + (draw-text! "Generate DMA data for drawing the profile information screen." (_type_) none) ;; 11 + ) + ) + +(deftype profile-spec (structure) + "Specification for a profile category." + ((name symbol :offset-assert 0) ;; guessed by decompiler + (color rgba :offset-assert 4) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(define-extern *profile-gap-color* rgba) ;; +(define-extern *profile-all-color* rgba) ;; rgba +(define-extern *profile-blit-color* rgba) ;; rgba +(define-extern *profile-sky-color* rgba) ;; rgba +(define-extern *profile-ocean-color* rgba) ;; rgba +(define-extern *profile-tfrag-color* rgba) ;; rgba +(define-extern *profile-texture-color* rgba) ;; rgba +(define-extern *profile-tie-color* rgba) +(define-extern *profile-generic-color* rgba) +(define-extern *profile-merc-color* rgba) ;; rgba +(define-extern *profile-shrubbery-color* rgba) +(define-extern *profile-particle-color* rgba) +(define-extern *profile-debug-color* rgba) ;; rgba +(define-extern *profile-other-color* rgba) +(define-extern *profile-joints-color* rgba) ;; rgba +(define-extern *profile-draw-hook-color* rgba) ;; rgba +(define-extern *profile-background-color* rgba) ;; rgba +(define-extern *profile-foreground-color* rgba) ;; rgba +(define-extern *profile-bones-color* rgba) ;; rgba +(define-extern *profile-actors-color* rgba) ;; rgba +(define-extern *profile-collide-color* rgba) ;; rgba +(define-extern *profile-nav-color* rgba) ;; rgba +(define-extern *profile-camera-color* rgba) ;; rgba +(define-extern *profile-gs-sync-color* rgba) +(define-extern *profile-array* profile-array) ;; profile-array +(define-extern *profile-collapse* profile-collapse) ;; profile-collapse +(define-extern *profile-interrupt-segment* profile-segment-array) ;; profile-segment-array +(define-extern *profile-interrupt-start* symbol) ;; symbol + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; dma ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern dma-sync-hang (function dma-bank none)) +(define-extern dma-sync-crash (function dma-bank none)) +(define-extern dma-send (function dma-bank uint uint none)) +(define-extern dma-send-chain (function dma-bank-source uint none)) +(define-extern dma-send-chain-no-tte (function dma-bank-source uint none)) +(define-extern dma-send-chain-no-flush (function dma-bank-source uint none)) +(define-extern dma-send-to-spr (function uint uint uint symbol none)) +(define-extern dma-send-to-spr-no-flush (function uint uint uint symbol none)) +(define-extern dma-send-from-spr (function uint uint uint symbol none)) +(define-extern dma-send-from-spr-no-flush (function uint uint uint symbol none)) +(define-extern dma-initialize (function none)) +(define-extern clear-vu0-mem (function none)) +(define-extern clear-vu1-mem (function none)) +(define-extern dump-vu1-mem (function none)) +(define-extern dump-vu1-range (function uint uint symbol)) +(define-extern reset-vif1-path (function none)) +(define-extern ultimate-memcpy (function pointer pointer uint none)) +(define-extern symlink2 (function none)) +(define-extern symlink3 (function none)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; dma-buffer ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype dma-packet (structure) + "The header for a DMA transfer, containing an DMA tag, and VIF tags." + ((dma dma-tag :offset-assert 0) ;; dma-tag + (vif0 vif-tag :offset-assert 8) ;; guessed by decompiler + (vif1 vif-tag :offset-assert 12) ;; guessed by decompiler + (quad uint128 :offset-assert 0 :overlay-at dma) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype dma-packet-array (inline-array-class) + "Unused dma array. Unclear how it should be used." + ((data dma-packet :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + +(deftype dma-gif (structure) + "Believed unused GIF header type." + ((gif uint64 2 :offset-assert 0) ;; guessed by decompiler + (gif0 uint64 :overlay-at (-> gif 0) :score 1) + (gif1 uint64 :overlay-at (-> gif 1) :score 1) + (quad uint128 :offset-assert 0 :overlay-at gif) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype dma-gif-packet (structure) + "The header for a DMA transfer that goes directly to GIF, containing DMA, VIF, GIF tags." + ((dma-vif dma-packet :inline :offset-assert 0) + (gif uint64 2 :offset-assert 16) ;; guessed by decompiler + (gif0 uint64 :offset 16 :score -1) + (gif1 uint64 :offset 24 :score -1) + (quad uint128 2 :offset-assert 0 :overlay-at dma-vif) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype dma-buffer (basic) + "A buffer for DMA data." + ((allocated-length int32 :offset-assert 4) + (base pointer :offset-assert 8) ;; guessed by decompiler + (end pointer :offset-assert 12) ;; guessed by decompiler + (real-buffer-end int32 :offset-assert 16) + (data-buffer uint8 :dynamic :offset 16) ;; added + (data uint64 1 :offset 32) ;; guessed by decompiler + ) + (:methods + (new "Allocate a DMA buffer to hold the given size" (symbol type int) _type_) ;; 0 + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + (:methods + (new (symbol type int) _type_) ;; 0 + ) + ) + +(define-extern dma-buffer-inplace-new + "Create a dma-buffer in-place. Does not set the type of the dma-buffer object." + (function dma-buffer int dma-buffer)) +(define-extern dma-buffer-length + "Get length used in quadwords, rounded up." + (function dma-buffer int)) +(define-extern dma-buffer-free + "Get the number of free quadwords between base and end pointers." + (function dma-buffer int)) +(define-extern dma-buffer-add-vu-function + "Add DMA tags to load the given VU function. The destination in vu instruction memory + is specific inside the vu-function. This does NOT copy the vu-function into the buffer, + but creates a reference to the existing VU function." (function dma-buffer vu-function int symbol)) +(define-extern dma-buffer-send + "Send the DMA buffer! DOES NOT TRANSFER TAG, you probably want dma-buffer-send-chain instead." + (function dma-bank dma-buffer none)) +(define-extern dma-buffer-send-chain + "Send the DMA buffer! Sends the tags, so this is suitable for the main graphics chain." + (function dma-bank-source dma-buffer none)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; dma-bucket ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern dma-buffer-add-buckets "Initialize an array of dma-buckets in a DMA buffer." (function dma-buffer int (inline-array dma-bucket))) +(define-extern dma-buffer-patch-buckets "Patch together DMA buckets after they have been filled." (function dma-bucket int dma-bucket)) +(define-extern dma-bucket-insert-tag "Add a dma chain to the bucket." (function (inline-array dma-bucket) bucket-id pointer (pointer dma-tag) pointer)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; dma-disasm ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype vif-disasm-element (structure) + ((mask uint32 :offset-assert 0) + (tag vif-cmd-32 :offset-assert 4) ;; guessed by decompiler + (val uint32 :offset-assert 8) + (print uint32 :offset-assert 12) + (string1 string :offset-assert 16) ;; guessed by decompiler + (string2 string :offset-assert 20) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) +|# + +;; (define-extern *vif-disasm-table* array) ;; (array vif-disasm-element) +;; (define-extern disasm-vif-details function) ;; (function symbol (pointer uint8) vif-cmd int symbol) +;; (define-extern disasm-vif-tag function) ;; (function (pointer vif-tag) int symbol symbol int) +;; (define-extern disasm-dma-tag function) ;; (function dma-tag symbol none) +;; (define-extern *dma-disasm* object) ;; symbol +;; (define-extern disasm-dma-list function) ;; (function dma-packet symbol symbol symbol int symbol) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; view-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-type camera-master process) +(declare-type camera-combiner process) +(declare-type math-camera basic) + +(declare-type process-nettable process) +(declare-type process-drawable process-nettable) +(declare-type process-focusable process-drawable) +(declare-type target process-focusable) + +(deftype view (basic) + ((index int8 :offset-assert 4) + (control-scheme uint8 :offset-assert 5) + (camera camera-master :offset-assert 8) + (camera-combiner camera-combiner :offset-assert 12) + (target basic :offset-assert 16) + (math-camera math-camera :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) + +(define-extern *view-count* int) +(define-extern *view-assert* symbol) +(define-extern *views* (array view)) +(define-extern *view-context-stack* (array int32)) +(define-extern *view-context-stack-ptr* int) +(define-extern *view-default* int) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; pad ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype scf-time (structure) + ((stat uint8 :offset-assert 0) + (second uint8 :offset-assert 1) + (minute uint8 :offset-assert 2) + (hour uint8 :offset-assert 3) + (week uint8 :offset-assert 4) + (day uint8 :offset-assert 5) + (month uint8 :offset-assert 6) + (year uint8 :offset-assert 7) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype hw-cpad (basic) + ((valid uint8 :offset-assert 4) + (status uint8 :offset-assert 5) + (button0 uint16 :offset-assert 6) + (rightx uint8 :offset-assert 8) + (righty uint8 :offset-assert 9) + (leftx uint8 :offset-assert 10) + (lefty uint8 :offset-assert 11) + (abutton uint8 12 :offset-assert 12) ;; guessed by decompiler + (dummy uint8 12 :offset-assert 24) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) +|# + +#| +(deftype cpad-info (hw-cpad) + ((number int32 :offset-assert 36) + (cpad-file int32 :offset-assert 40) + (button0-abs pad-buttons 3 :offset-assert 44) ;; guessed by decompiler + (button0-shadow-abs pad-buttons 1 :offset-assert 56) ;; guessed by decompiler + (button0-rel pad-buttons 3 :offset-assert 60) ;; guessed by decompiler + (stick0-dir float :offset-assert 72) + (stick0-speed float :offset-assert 76) + (new-pad int32 :offset-assert 80) + (state int32 :offset-assert 84) + (align uint8 6 :offset-assert 88) ;; guessed by decompiler + (direct uint8 6 :offset-assert 94) ;; guessed by decompiler + (buzz-val uint8 2 :offset-assert 100) ;; guessed by decompiler + (buzz-pause-val uint8 1 :offset-assert 102) ;; guessed by decompiler + (buzz-pause-time uint8 :offset-assert 103) + (buzz-time time-frame 2 :offset-assert 104) ;; guessed by decompiler + (buzz symbol :offset-assert 120) ;; guessed by decompiler + (buzz-act int32 :offset-assert 124) + (change-time uint64 :offset-assert 128) ;; time-frame + (real-change-time uint64 :offset-assert 136) ;; time-frame + (old-rightx uint8 2 :offset-assert 144) ;; guessed by decompiler + (old-righty uint8 2 :offset-assert 146) ;; guessed by decompiler + (old-leftx uint8 2 :offset-assert 148) ;; guessed by decompiler + (old-lefty uint8 2 :offset-assert 150) ;; guessed by decompiler + ) + :method-count-assert 10 + :size-assert #x98 + :flag-assert #xa00000098 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type int) _type_) + (cpad-info-method-9 () none) ;; 9 ;; (adjust-to-screen-flip (_type_) int) + ) + ) +|# + +#| +(deftype cpad-list (basic) + ((num-cpads int32 :offset-assert 4) + (cpads cpad-info 2 :offset-assert 8) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype mouse-info (basic) + ((active symbol :offset-assert 4) ;; guessed by decompiler + (cursor symbol :offset-assert 8) ;; guessed by decompiler + (valid symbol :offset-assert 12) ;; guessed by decompiler + (id uint8 :offset-assert 16) + (status uint16 :offset-assert 18) + (button0 uint16 :offset-assert 20) + (deltax int8 :offset-assert 22) + (deltay int8 :offset-assert 23) + (wheel uint8 :offset-assert 24) + (change-time uint64 :offset-assert 32) ;; time-frame + (button0-abs mouse-buttons 3 :offset-assert 40) ;; guessed by decompiler + (button0-shadow-abs mouse-buttons 1 :offset-assert 52) ;; guessed by decompiler + (button0-rel mouse-buttons 3 :offset-assert 56) ;; guessed by decompiler + (pos vector 2 :offset-assert 80) ;; guessed by decompiler + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (posx float :offset-assert 80) + (posy float :offset-assert 84) + (oldposx float :offset-assert 96) + (oldposy float :offset-assert 100) + (speedx float :offset-assert 92) + (speedy float :offset-assert 108) + ) + :method-count-assert 9 + :size-assert #x70 + :flag-assert #x900000070 + ) +|# + +#| +(deftype keybd-info (basic) + ((active symbol :offset-assert 4) ;; guessed by decompiler + (valid symbol :offset-assert 8) ;; guessed by decompiler + (kdata uint8 16 :offset-assert 12) ;; guessed by decompiler + (keys uint8 256 :offset-assert 28) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x11c + :flag-assert #x90000011c + ) +|# + +(define-extern *cheat-mode* symbol) +;; (define-extern cpad-invalid! function) ;; (function cpad-info cpad-info) +;; (define-extern analog-input function) ;; (function int float float float float float) +;; (define-extern cpad-set-buzz! function) ;; (function cpad-info int int time-frame none) +;; (define-extern *cpad-list* object) ;; cpad-list +;; (define-extern *cpad-debug* object) ;; symbol +;; (define-extern service-cpads function) ;; (function cpad-list) +;; (define-extern buzz-stop! function) ;; (function int none) +;; (define-extern *mouse* object) ;; mouse-info +;; (define-extern service-mouse function) ;; (function none) +;; (define-extern *keybd* object) ;; keybd-info +;; (define-extern service-keybd function) ;; (function none) +;; (define-extern *usb-to-ascii-map* object) +;; (define-extern *keybd-last-key* object) +;; (define-extern *keybd-hold-ct* object) +;; (define-extern *keybd-ungetc* object) +;; (define-extern keybd-read-ascii function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; gs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; +++gs:gs-psm +(defenum gs-psm + :bitfield #f + :type uint8 + (ct32 0) + (ct24 1) + (ct16 2) + (ct16s 10) + (mt8 19) + (mt4 20) + (mt8h 27) + (mt4hl 36) + (mt4hh 44) + (mz32 48) + (mz24 49) + (mz16 50) + (mz16s 58) + ) +;; ---gs:gs-psm + +;; +++gs:gs-reg +(defenum gs-reg + :type uint8 + (prim 0) + (rgbaq 1) + (st 2) + (uv 3) + (xyzf2 4) + (xyz2 5) + (tex0-1 6) + (tex0-2 7) + (clamp-1 8) + (clamp-2 9) + (fog 10) + (xyzf3 12) + (xyz3 13) + (tex1-1 20) + (tex1-2 21) + (tex2-1 22) + (tex2-2 23) + (xyoffset-1 24) + (xyoffset-2 25) + (prmodecont 26) + (prmode 27) + (texclut 28) + (scanmsk 34) + (miptbp1-1 52) + (miptbp1-2 53) + (miptbp2-1 54) + (miptbp2-2 55) + (texa 59) + (fogcol 61) + (texflush 63) + (scissor-1 64) + (scissor-2 65) + (alpha-1 66) + (alpha-2 67) + (dimx 68) + (dthe 69) + (colclamp 70) + (test-1 71) + (test-2 72) + (pabe 73) + (fba-1 74) + (fba-2 75) + (frame-1 76) + (frame-2 77) + (zbuf-1 78) + (zbuf-2 79) + (bitbltbuf 80) + (trxpos 81) + (trxreg 82) + (trxdir 83) + (hwreg 84) + (signal 96) + (finish 97) + (label 98) + (hack 127) + ) +;; ---gs:gs-reg + +;; +++gs:gs-reg64 +(defenum gs-reg64 + :type uint64 + :copy-entries gs-reg + ) +;; ---gs:gs-reg64 + +;; +++gs:gs-reg32 +(defenum gs-reg32 + :type uint32 + :copy-entries gs-reg + ) +;; ---gs:gs-reg32 + +;; +++gs:gs-prim-type +(defenum gs-prim-type + :type uint8 + (point 0) + (line 1) + (line-strip 2) + (tri 3) + (tri-strip 4) + (tri-fan 5) + (sprite 6) + ) +;; ---gs:gs-prim-type + +(deftype gs-pmode (uint64) + ((en1 uint8 :offset 0 :size 1) + (en2 uint8 :offset 1 :size 1) + (crtmd uint8 :offset 2 :size 3) + (mmod uint8 :offset 5 :size 1) + (amod uint8 :offset 6 :size 1) + (slbg uint8 :offset 7 :size 1) + (alp uint8 :offset 8 :size 8) + ) + :flag-assert #x900000008 + ) + +(deftype gs-smode2 (uint64) + ((int uint8 :offset 0 :size 1) + (ffmd uint8 :offset 1 :size 1) + (dpms uint8 :offset 2 :size 2) + ) + :flag-assert #x900000008 + ) + +(deftype gs-display-fb (uint64) + ((fbp uint16 :offset 0 :size 9) + (fbw uint8 :offset 9 :size 6) + (psm gs-psm :offset 15 :size 5) + (dbx uint16 :offset 32 :size 11) + (dby uint16 :offset 43 :size 11) + ) + :flag-assert #x900000008 + ) + +(deftype gs-display (uint64) + "the GS's DISPLAY registers make settings for the display position on the screen regarding + information on Rectangular Area Read Output Circuit n for the PCRTC. + write-only" + ((dx uint16 :offset 0 :size 12) + (dy uint16 :offset 12 :size 11) + (magh uint8 :offset 23 :size 4) + (magv uint8 :offset 27 :size 2) + (dw uint16 :offset 32 :size 12) + (dh uint16 :offset 44 :size 11) + ) + :flag-assert #x900000008 + ) + +(deftype gs-bgcolor (uint64) + "The GS's BGCOLOR register sets the background color of the PCRTC with RGB value. + write-only" + ((r uint8 :offset 0) + (g uint8 :offset 8) + (b uint8 :offset 16) + ) + :flag-assert #x900000008 + ) + +(deftype gs-csr (uint64) + "The GS's CSR register sets and obtains various GS statuses. + read-write. The fields have different effects depending on whether they're being read from + or written to. + + Bits 5 and 6 (0x20 and 0x40) should be zero." + ((signal uint8 :offset 0 :size 1) + (finish uint8 :offset 1 :size 1) + (hsint uint8 :offset 2 :size 1) + (vsint uint8 :offset 3 :size 1) + (edwint uint8 :offset 4 :size 1) + (flush uint8 :offset 8 :size 1) + (reset uint8 :offset 9 :size 1) + (nfield uint8 :offset 12 :size 1) + (field uint8 :offset 13 :size 1) + (fifo uint8 :offset 14 :size 2) + (rev uint8 :offset 16 :size 8) + (id uint8 :offset 24 :size 8) + ) + :flag-assert #x900000008 + ) + +(deftype gs-bank (structure) + "Memory layout of the GS's privileged registers (mapped to EE memory). + It is missing the SIGLBLID/LABELID register at 4224 (useless anyway?)" + ((pmode gs-pmode :offset-assert 0) ;; gs-pmode + (smode2 gs-smode2 :offset 32) ;; gs-smode2 + (dspfb1 gs-display-fb :offset 112) ;; gs-display-fb + (display1 gs-display :offset 128) ;; gs-display + (dspfb2 gs-display-fb :offset 144) ;; gs-display-fb + (display2 gs-display :offset 160) ;; gs-display + (extbuf uint64 :offset 176) + (extdata uint64 :offset 192) + (extwrite uint64 :offset 208) + (bgcolor gs-bgcolor :offset 224) ;; gs-bgcolor + (csr gs-csr :offset 4096) ;; gs-csr + (imr uint64 :offset 4112) + (busdir uint64 :offset 4160) + ) + :method-count-assert 9 + :size-assert #x1048 + :flag-assert #x900001048 + ) + +(deftype gs-frame (uint64) + ((fbp uint16 :offset 0 :size 9) + (fbw uint8 :offset 16 :size 6) + (psm gs-psm :offset 24 :size 6) + (fbmsk uint32 :offset 32 :size 32) + ) + :flag-assert #x900000008 + ) + +(deftype gs-zbuf (uint64) + "The GS's ZBUF registers make various settings regarding Z buffer." + ((zbp uint16 :offset 0 :size 9) + (psm gs-psm :offset 24 :size 4) + (zmsk uint8 :offset 32 :size 1) + ) + :flag-assert #x900000008 + ) + +(deftype gs-xy-offset (uint64) + "The GS's XYOFFSET registers set the offset value for converting from the primitive coordinate + system to the window coordinate system." + ((ofx uint16 :offset 0 :size 16) + (ofy uint16 :offset 32 :size 16) + ) + :flag-assert #x900000008 + ) + +(deftype gs-scissor (uint64) + "The GS's SCISSOR registers specify the scissoring area. The coordinate values for + the upper-left/lower-right points of the enabled drawing area are specified by the window + coordinate system." + ((scax0 uint16 :offset 0 :size 11) + (scax1 uint16 :offset 16 :size 11) + (scay0 uint16 :offset 32 :size 11) + (scay1 uint16 :offset 48 :size 11) + ) + :flag-assert #x900000008 + ) + +(deftype gs-prmode-cont (uint64) + "The GS's PRMODECONT register sets whether to use primitive attributes (IIP, TME, FGE, ABE, + AA1, FST, CTXT, FIX) specified by the PRMODE register or the PRIM register." + ((ac uint8 :offset 0 :size 1) + ) + :flag-assert #x900000008 + ) + +(deftype gs-color-clamp (uint64) + "The GS's COLCLAMP register stores settings as to whether clamping for the RGB value of the + pixel is performed." + ((clamp uint8 :offset 0 :size 1) + ) + :flag-assert #x900000008 + ) + +(deftype gs-dthe (uint64) + "The GS's DTHE register stores settings for dithering (performed/not performed)." + ((dthe uint8 :offset 0 :size 1)) + :flag-assert #x900000008 + ) + +;; +++gs:gs-atest +(defenum gs-atest + :type uint8 + (never 0) + (always 1) + (less 2) + (less-equal 3) + (equal 4) + (greater-equal 5) + (greater 6) + (not-equal 7) + ) +;; ---gs:gs-atest + +;; +++gs:gs-ztest +(defenum gs-ztest + :type uint8 + (never 0) + (always 1) + (greater-equal 2) + (greater 3) + ) +;; ---gs:gs-ztest + +(deftype gs-test (uint64) + "The GS's TEST register performs settings related to the pixel test." + ((ate uint8 :offset 0 :size 1) ;; alpha test enable + (atst gs-atest :offset 1 :size 3) ;; alpha test method + (aref uint8 :offset 4 :size 8) ;; alpha val reference + (afail uint8 :offset 12 :size 2) ;; processing method on alpha test fail + (date uint8 :offset 14 :size 1) ;; dest alpha test enable + (datm uint8 :offset 15 :size 1) ;; dest alpha test mode + (zte uint8 :offset 16 :size 1) ;; depth test enable + (ztst gs-ztest :offset 17 :size 2) ;; depth test method + ) + :flag-assert #x900000008 + ) + +(deftype gs-prim (uint64) + ((prim gs-prim-type :offset 0 :size 3) + (iip uint8 :offset 3 :size 1) + (tme uint8 :offset 4 :size 1) + (fge uint8 :offset 5 :size 1) + (abe uint8 :offset 6 :size 1) + (aa1 uint8 :offset 7 :size 1) + (fst uint8 :offset 8 :size 1) + (ctxt uint8 :offset 9 :size 1) + (fix uint8 :offset 10 :size 1) + ) + :flag-assert #x900000008 + ) + +(deftype gs-rgbaq (uint64) + "The GS's RGBAQ register sets the RGBA value of the vertex and the Q value of the normalized + texture coordinates." + ((r uint8 :offset 0 :size 8) + (g uint8 :offset 8 :size 8) + (b uint8 :offset 16 :size 8) + (a uint8 :offset 24 :size 8) ;; 0x80 --> 1.0 + (q float :offset 32 :size 32) ;; affects some LOD behavior apparently? + ) + :flag-assert #x900000008 + ) + +(deftype gs-xyz (uint64) + ((x uint16 :offset 0 :size 16) ;; Q4 fixed point + (y uint16 :offset 16 :size 16) ;; Q4 fixed point + (z uint32 :offset 32 :size 32) + ) + :flag-assert #x900000008 + ) + +(deftype gs-uv (uint64) + "The GS's UV register specifies the texel coordinate (UV) values of the vertex." + ((u uint16 :offset 0 :size 16) ;; Q4 fixed point + (v uint16 :offset 16 :size 16) ;; Q4 fixed point + ) + :flag-assert #x900000008 + ) + +(deftype gs-st (uint64) + "The GS's ST register sets the S and T values of the vertex texture coordinates. + The value Q is specified by the RGBAQ register." + ((s float :offset 0 :size 32) + (t float :offset 32 :size 32) + ) + :flag-assert #x900000008 + ) + +(deftype gs-xyzf (uint64) + ((x uint16 :offset 0 :size 16) ;; Q4 fixed point + (y uint16 :offset 16 :size 16) ;; Q4 fixed point + (z uint32 :offset 32 :size 24) + (f uint8 :offset 56 :size 8) ;; fog coeff + ) + :flag-assert #x900000008 + ) + +(deftype gs-adcmd (structure) + ((word uint32 4 :offset-assert 0 :score -10) ;; guessed by decompiler + (quad uint128 :offset 0 :score -10) + (data uint64 :offset 0 :score -10) + (cmds gs-reg64 :offset 8 :score 10) ;; gs-reg64 + (cmd uint8 :offset 8) + (x uint32 :offset 0) + (y uint32 :offset 4) + (z uint32 :offset 8) + (w uint32 :offset 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype gs-trxpos (uint64) + "The GS's TRXPOS register specifies the position and + scanning direction of the rectangular area + in each buffer where buffer transmission is performed." + ((ssax uint16 :offset 0 :size 11) + (ssay uint16 :offset 16 :size 11) + (dsax uint16 :offset 32 :size 11) + (dsay uint16 :offset 48 :size 11) + (dir uint8 :offset 59 :size 2) + ) + :flag-assert #x900000008 + ) + +(deftype gs-trxreg (uint64) + "The GS's TRXREG register specifies the size of the rectangular area, where the transmission + between buffers is implemented, in units of pixels. + The pixel mode must be the one set by the BITBLTBUF register." + ((rrw uint16 :offset 0 :size 12) + (rrh uint16 :offset 32 :size 12) + ) + :flag-assert #x900000008 + ) + +(deftype gs-trxdir (uint64) + "The GS's TRXDIR register specifies the transmission direction in the transmission between + buffers, and activates transmission. + Appropriate settings must be made by the BITBLTBUF/TRXPOS/TRXREG before activating + the transmission." + ((xdir uint8 :offset 0 :size 2) + ) + :flag-assert #x900000008 + ) + +(deftype gs-bitbltbuf (uint64) + "The GS's BITBLTBUF register stores buffer-related settings for transmission source and + destination during transmission between buffers." + ((sbp uint16 :offset 0 :size 14) + (sbw uint8 :offset 16 :size 6) + (spsm uint8 :offset 24 :size 6) + (dbp uint16 :offset 32 :size 14) + (dbw uint8 :offset 48 :size 6) + (dpsm gs-psm :offset 56 :size 6) + ) + :flag-assert #x900000008 + ) + +(deftype gs-tex0 (uint64) + "The GS's TEX0 registers set various kinds of information regarding the textures to be used." + ((tbp0 uint16 :offset 0 :size 14) + (tbw uint8 :offset 14 :size 6) + (psm uint8 :offset 20 :size 6) + (tw uint8 :offset 26 :size 4) + (th uint8 :offset 30 :size 4) + (tcc uint8 :offset 34 :size 1) + (tfx uint8 :offset 35 :size 2) + (cbp uint16 :offset 37 :size 14) + (cpsm uint8 :offset 51 :size 4) + (csm uint8 :offset 55 :size 1) + (csa uint8 :offset 56 :size 5) + (cld uint8 :offset 61 :size 3) + ) + :flag-assert #x900000008 + ) + +(deftype gs-tex1 (uint64) + "The GS's TEX1 registers set information on the sampling method of the textures." + ((lcm uint8 :offset 0 :size 1) + (mxl uint8 :offset 2 :size 3) + (mmag uint8 :offset 5 :size 1) + (mmin uint8 :offset 6 :size 3) + (mtba uint8 :offset 9 :size 1) + (l uint8 :offset 19 :size 2) + (k int16 :offset 32 :size 12) + ) + :flag-assert #x900000008 + ) + +(deftype gs-texa (uint64) + "The GS's TEXA register sets the Alpha value to be referred to when the Alpha value of the + texture is not an 8-bit value." + ((ta0 uint8 :offset 0 :size 8) + (aem uint8 :offset 15 :size 1) + (ta1 uint8 :offset 32 :size 8) + ) + :flag-assert #x900000008 + ) + +(deftype gs-texclut (uint64) + "The GS's TEXCLUT register specifies the CLUT position in the buffer when the CLUT storage mode + is CSM=1 (CSM2 mode)." + ((cbw uint8 :offset 0 :size 6) + (cou uint8 :offset 6 :size 6) + (cov uint16 :offset 12 :size 10) + ) + :flag-assert #x900000008 + ) + +(deftype gs-miptbp (uint64) + "the GS's MIPTBP registers set the buffer pointer and buffer width of textures when performing + MIPMAP. MIPTBP1 sets levels 1 to 3, MIPTBP2 sets levels 4 to 6." + ((tbp1 uint16 :offset 0 :size 14) + (tbw1 uint8 :offset 14 :size 6) + (tbp2 uint16 :offset 20 :size 14) + (tbw2 uint8 :offset 34 :size 6) + (tbp3 uint16 :offset 40 :size 14) + (tbw3 uint8 :offset 54 :size 6) + ) + :flag-assert #x900000008 + ) + +(deftype gs-alpha (uint64) + ((a uint8 :offset 0 :size 2) + (b uint8 :offset 2 :size 2) + (c uint8 :offset 4 :size 2) + (d uint8 :offset 6 :size 2) + (fix uint8 :offset 32 :size 8) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +;; +++gs:gs-tex-wrap-mode +(defenum gs-tex-wrap-mode + :type uint8 + (repeat 0) + (clamp 1) + (region-clamp 2) + (region-repeat 3) + ) +;; ---gs:gs-tex-wrap-mode + +(deftype gs-clamp (uint64) + ((wms gs-tex-wrap-mode :offset 0 :size 2) + (wmt gs-tex-wrap-mode :offset 2 :size 2) + (minu uint16 :offset 4 :size 10) + (maxu uint16 :offset 14 :size 10) + (minv uint16 :offset 24 :size 10) + (maxv uint16 :offset 34 :size 10) + ) + :flag-assert #x900000008 + ) + +(deftype gs-fog (uint64) + ((f uint8 :offset 56 :size 8) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype gs-fogcol (uint64) + ((fcr uint8 :offset 0 :size 8) + (fcg uint8 :offset 8 :size 8) + (fcb uint8 :offset 16 :size 8) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype gif-ctrl (uint32) + ((rst uint8 :offset 0 :size 1) + (pse uint8 :offset 3 :size 1) + ) + :flag-assert #x900000004 + ) + +(deftype gif-mode (uint32) + ((m3r uint8 :offset 0 :size 1) + (imt uint8 :offset 2 :size 1) + ) + :flag-assert #x900000004 + ) + +(deftype gif-stat (uint32) + ((m3r uint8 :offset 0 :size 1) + (m3p uint8 :offset 1 :size 1) + (imt uint8 :offset 2 :size 1) + (pse uint8 :offset 3 :size 1) + (ip3 uint8 :offset 5 :size 1) + (p3q uint8 :offset 6 :size 1) + (p2q uint8 :offset 7 :size 1) + (p1q uint8 :offset 8 :size 1) + (oph uint8 :offset 9 :size 1) + (apath uint8 :offset 10 :size 2) + (dir uint8 :offset 12 :size 1) + (fqc uint8 :offset 24 :size 5) + ) + :flag-assert #x900000004 + ) + +(deftype gif-cnt (uint32) + ((loopcnt uint16 :offset 0 :size 15) + (regcnt uint8 :offset 16 :size 4) + (vuaddr uint16 :offset 20 :size 10) + ) + :flag-assert #x900000004 + ) + +(deftype gif-p3cnt (uint32) + ((p3cnt uint16 :offset 0 :size 15) + ) + :flag-assert #x900000004 + ) + +(deftype gif-p3tag (uint32) + ((loopcnt uint16 :offset 0 :size 15) + (eop uint8 :offset 15 :size 1) + ) + :flag-assert #x900000004 + ) + +(deftype gif-bank (structure) + ((ctrl gif-ctrl :offset 0) ;; guessed by decompiler + (mode gif-mode :offset 16) ;; guessed by decompiler + (stat gif-stat :offset 32) ;; guessed by decompiler + (tag0 uint32 :offset 64) + (tag1 uint32 :offset 80) + (tag2 uint32 :offset 96) + (tag3 uint32 :offset 112) + (cnt gif-cnt :offset 128) ;; guessed by decompiler + (p3cnt gif-p3cnt :offset 144) ;; guessed by decompiler + (p3tag gif-p3tag :offset 160) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #xa4 + :flag-assert #x9000000a4 + ) + +;; +++gs:gif-flag +(defenum gif-flag + :type uint8 + (packed 0) + (reg-list 1) + (image 2) + (disable 3) + ) +;; ---gs:gif-flag + +(deftype gif-tag-prim (uint32) + ((id uint16 :offset 0 :size 14) + (pre uint8 :offset 14 :size 1) + (prim gs-prim :offset 15 :size 11) + (flg gif-flag :offset 26 :size 2) + (nreg uint8 :offset 28 :size 4) + ) + :flag-assert #x900000004 + ) + +(deftype gif-tag-count (uint32) + ((nloop uint16 :offset 0 :size 15) + (eop uint8 :offset 15 :size 1) + ) + :flag-assert #x900000004 + ) + +;; +++gs:gif-reg-id +(defenum gif-reg-id + :type uint8 + (prim 0) + (rgbaq 1) + (st 2) + (uv 3) + (xyzf2 4) + (xyz2 5) + (tex0-1 6) + (tex0-2 7) + (clamp-1 8) + (clamp-2 9) + (fog 10) + (xyzf3 12) + (xyz3 13) + (a+d 14) + (nop 15) + ) +;; ---gs:gif-reg-id + +(deftype gif-tag64 (uint64) + ((nloop uint16 :offset 0 :size 15) + (eop uint8 :offset 15 :size 1) + (id uint16 :offset 32 :size 14) + (pre uint8 :offset 46 :size 1) + (prim gs-prim :offset 47 :size 11) + (flg gif-flag :offset 58 :size 2) + (nreg uint8 :offset 60 :size 4) + ) + :flag-assert #x900000008 + ) + +(deftype gif-tag (uint128) + ((nloop uint16 :offset 0 :size 15) + (eop uint8 :offset 15 :size 1) + (id uint16 :offset 32 :size 14) + (pre uint8 :offset 46 :size 1) + (prim uint16 :offset 47 :size 11) + (flg gif-flag :offset 58 :size 2) + (nreg uint8 :offset 60 :size 4) + (regs0 gif-reg-id :offset 64 :size 4) + (regs1 gif-reg-id :offset 68 :size 4) + (regs2 gif-reg-id :offset 72 :size 4) + (regs3 gif-reg-id :offset 76 :size 4) + (regs4 gif-reg-id :offset 80 :size 4) + (regs5 gif-reg-id :offset 84 :size 4) + (regs6 gif-reg-id :offset 88 :size 4) + (regs7 gif-reg-id :offset 92 :size 4) + (regs8 gif-reg-id :offset 96 :size 4) + (regs9 gif-reg-id :offset 100 :size 4) + (regs10 gif-reg-id :offset 104 :size 4) + (regs11 gif-reg-id :offset 108 :size 4) + (regs12 gif-reg-id :offset 112 :size 4) + (regs13 gif-reg-id :offset 116 :size 4) + (regs14 gif-reg-id :offset 120 :size 4) + (regs15 gif-reg-id :offset 124 :size 4) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype gif-tag-regs (uint64) + ((regs0 gif-reg-id :offset 0 :size 4) + (regs1 gif-reg-id :offset 4 :size 4) + (regs2 gif-reg-id :offset 8 :size 4) + (regs3 gif-reg-id :offset 12 :size 4) + (regs4 gif-reg-id :offset 16 :size 4) + (regs5 gif-reg-id :offset 20 :size 4) + (regs6 gif-reg-id :offset 24 :size 4) + (regs7 gif-reg-id :offset 28 :size 4) + (regs8 gif-reg-id :offset 32 :size 4) + (regs9 gif-reg-id :offset 36 :size 4) + (regs10 gif-reg-id :offset 40 :size 4) + (regs11 gif-reg-id :offset 44 :size 4) + (regs12 gif-reg-id :offset 48 :size 4) + (regs13 gif-reg-id :offset 52 :size 4) + (regs14 gif-reg-id :offset 56 :size 4) + (regs15 gif-reg-id :offset 60 :size 4) + ) + ) + +(deftype gif-tag-regs-32 (uint32) + ((regs0 gif-reg-id :offset 0 :size 4) + (regs1 gif-reg-id :offset 4 :size 4) + (regs2 gif-reg-id :offset 8 :size 4) + (regs3 gif-reg-id :offset 12 :size 4) + (regs4 gif-reg-id :offset 16 :size 4) + (regs5 gif-reg-id :offset 20 :size 4) + (regs6 gif-reg-id :offset 24 :size 4) + (regs7 gif-reg-id :offset 28 :size 4) + ) + ) + +(deftype gs-gif-tag (structure) + ((qword qword :inline :offset-assert 0 :score -1) ;; uint128 + (tag gif-tag64 :offset 0) ;; gif-tag64 + (regs gif-tag-regs :offset 8) ;; gif-tag-regs + (dword uint64 2 :offset 0) ;; guessed by decompiler + (word uint32 4 :offset 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype gif-packet (basic) + "Unused type for building a dynamically sized gif packet." + ((reg-count int32 :offset-assert 4) + + (gif-tag gs-gif-tag :inline :offset-assert 16) ;; added + (gif-tag0 uint128 :offset 16) + (args uint64 1 :offset-assert 32) ;; guessed by decompiler + ) + (:methods + (new (symbol type int) _type_) ;; 0 + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + ) + +(deftype draw-context (basic) + ((orgx int32 :offset-assert 4) + (orgy int32 :offset-assert 8) + (orgz int32 :offset-assert 12) + (width int32 :offset-assert 16) + (height int32 :offset-assert 20) + (color rgba 4 :offset-assert 24) + ) + (:methods + (new (symbol type int int int int rgba) _type_) ;; 0 + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + ) + +(deftype gs-packed-rgba (vector4w) + ((r int32 :offset 0) + (g int32 :offset 4) + (b int32 :offset 8) + (a int32 :offset 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype gs-packed-xyzw (vector) + ((ix int32 :offset 0 :score 10) + (iy int32 :offset 4 :score 10) + (iz int32 :offset 8 :score 10) + (iw int32 :offset 12 :score 10) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype gs-packed-stq (vector) + ((tex-s float :offset 0) + (tex-t float :offset 4) + (tex-q float :offset 8) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype gs-packed-uv (vector) + ((u int16 :offset 0) + (v int16 :offset 4) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype gs-packed-gt (structure) + ((stq gs-packed-stq :inline :offset 0) + (rgba gs-packed-rgba :inline :offset 16) + (xyzw gs-packed-xyzw :inline :offset 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype gs-packed-gt4 (structure) + ((data gs-packed-gt 4 :inline :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #xc0 + :flag-assert #x9000000c0 + ) + +(define-extern psm-size "Convert texture format to some type of size." (function gs-psm int)) +(define-extern psm-page-height "Convert texture format to some type of page height." (function gs-psm int)) +(define-extern psm->string "Get the name of a texture format." (function gs-psm string)) +(define-extern *fog-color* rgba) +(define-extern open-gif-packet "Initialize an existing gif-packet for 0 registers." (function gif-packet gif-packet)) +(define-extern add-reg-gif-packet "Add a register + value to the packet." (function gif-packet int int none)) +(define-extern close-gif-packet "Finish adding registers." (function gif-packet int gif-packet)) +(define-extern draw-context-set-xy "Set the origin of the draw context." (function draw-context int int none)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; display-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype display-frame (basic) + ((buffer dma-buffer 11 :offset-assert 4) ;; guessed by decompiler + (calc-buf dma-buffer :offset 8) ;; guessed by decompiler + (vu1-buf dma-buffer :offset 8) ;; guessed by decompiler + (debug-buf dma-buffer :offset 36) ;; guessed by decompiler + (global-buf dma-buffer :offset 40) ;; guessed by decompiler + (bucket-group (inline-array dma-bucket) :offset 44) ;; (inline-array dma-bucket) + (profile-array profile-array :inline :offset 48) + (start-time uint64 :offset 56) + (run-time uint64 :offset 64) + ) + :method-count-assert 9 + :size-assert #x48 + :flag-assert #x900000048 + (:methods + (new (symbol type) _type_) ;; 0 + ) + ) + +(deftype display (basic) + ((on-screen int32 :offset-assert 4) + (last-screen int32 :offset-assert 8) + (frames display-frame 2 :offset-assert 12) ;; guessed by decompiler + (bgcolor gs-bgcolor :offset-assert 24) ;; gs-bgcolor + (pmode gs-pmode :offset-assert 32) ;; gs-pmode + (clock clock 22 :offset-assert 40) ;; guessed by decompiler + (session-clock clock :offset 40) ;; guessed by decompiler + (game-clock clock :offset 44) ;; guessed by decompiler + (base-clock clock :offset 48) ;; guessed by decompiler + (real-clock clock :offset 52) ;; guessed by decompiler + (frame-clock clock :offset 56) ;; guessed by decompiler + (real-frame-clock clock :offset 60) ;; guessed by decompiler + (target-clock clock :offset 64) ;; guessed by decompiler + (entity-clock clock :offset 68) ;; guessed by decompiler + (part-clock clock :offset 72) ;; guessed by decompiler + (bg-clock clock :offset 76) ;; guessed by decompiler + (camera-clock clock :offset 80) ;; guessed by decompiler + (total-game-clock clock :offset 84) ;; guessed by decompiler + (user0-clock clock :offset 88) ;; guessed by decompiler + (user1-clock clock :offset 92) ;; guessed by decompiler + (user2-clock clock :offset 96) ;; guessed by decompiler + (user3-clock clock :offset 100) ;; guessed by decompiler + (user4-clock clock :offset 104) ;; guessed by decompiler + (user5-clock clock :offset 108) ;; guessed by decompiler + (user6-clock clock :offset 112) ;; guessed by decompiler + (user7-clock clock :offset 116) ;; guessed by decompiler + (user8-clock clock :offset 120) ;; guessed by decompiler + (user9-clock clock :offset 124) ;; guessed by decompiler + (time-factor float :offset-assert 128) + (dog-ratio float :offset-assert 132) + (vblank-start-time int64 2 :offset-assert 136) ;; guessed by decompiler + (total-run-time uint64 :offset-assert 152) + (run-half-speed symbol :offset-assert 160) ;; guessed by decompiler + (vu1-enable-user vu1-renderer-mask :offset-assert 168) ;; vu1-renderer-mask + (vu1-enable-user-menu vu1-renderer-mask :offset-assert 176) ;; vu1-renderer-mask + (force-sync uint32 :offset-assert 184) + (mem-reserve-size uint32 :offset-assert 188) + (dma-buffer-overflow symbol :offset-assert 192) ;; guessed by decompiler + (default-end-buffer basic :offset-assert 196) + (init-buffer-zbuf-on symbol :offset-assert 200) + (init-buffer-zbuf-off symbol :offset-assert 204) + ) + :method-count-assert 10 + :size-assert #xd0 + :flag-assert #xa000000d0 + (:methods + (new (symbol type int int int int int) _type_) ;; 0 + (set-time-ratios (_type_ float) float) ;; 9 + ) + ) + +(define-extern *pre-draw-hook* (function object none)) +(define-extern *post-draw-hook* (function dma-buffer none)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; geometry ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern vector-flatten! + "Get the projection of src onto a plane with the given normal + The normal should have magnitude 1.0." + (function vector vector vector vector)) +(define-extern vector-reflect! "Reflect a vector off of a plane." (function vector vector vector vector)) +(define-extern vector-reflect-flat! + "This is a weird one. It doesn't care about the value of src dot normal + and it effectively replaces the component of src normal to the plane with + the plane's normal. I think this requires src/normal to both be unit vectors + in order to make sense. + NOTE: src should point from positive halfspace to negative otherwise it + doesn't work." + (function vector vector vector vector)) +(define-extern vector-reflect-flat-above! + "Not really a reflect. Same as flatten." + (function vector vector vector vector)) +(define-extern vector-reflect-flat-gravity! (function vector vector vector vector vector)) +(define-extern vector-segment-distance-point! + "Compute the distance from a point to the closest point on the line segment. + arg0 is the point. arg1/arg2 are the endpoints of the line segment. + arg3 is an optional output closest point." + (function vector vector vector vector float)) +(define-extern vector-segment-xz-distance-point! (function vector vector vector vector float)) +(define-extern vector-line-distance + "Weird function: given a point arg1, and an infinite line connecting arg2 and arg1, compute the distance + from arg0 to that line." + (function vector vector vector float)) +(define-extern vector-line-distance-point! + "Same as above function, but returns the point on arg2/arg1 in arg3 (ignored if #f)" + (function vector vector vector vector float)) +(define-extern vector-line-xz-distance-point! (function vector vector vector vector float)) +(define-extern vector-segment-overlap + "Seems to compute (v1 - v0).dot(v2 - v1), but in a weird way." + (function vector vector vector float)) +(define-extern line-sphere-intersection? + "Does [arg1, arg2] intersect sphere arg0?" + (function vector vector vector symbol)) +(define-extern nearest-dist2-between-moving-points (function vector vector vector vector float float)) +(define-extern vector-orient-by-quat! + "Rotate a vector by a quaternion." + (function vector vector quaternion vector)) +(define-extern vector-inv-orient-by-quat! + "Rotate a vector by the inverse rotation." + (function vector vector quaternion vector)) +(define-extern vector-cap-rotation! (function vector vector vector float vector)) +(define-extern vector-interp-angle! (function vector vector vector float vector)) +(define-extern forward-down->inv-matrix + "Create a matrix representing an inverse transform where arg1 is forward (+z) + and arg2 is down (-y). Will have the pitch of forward." + (function matrix vector vector matrix)) +(define-extern forward-down-nopitch->inv-matrix + "Create a matrix representing an inverse transform where arg1 is forward (+z) + and arg2 is down (-y). Will not use the pitch of forward." + (function matrix vector vector matrix)) +(define-extern forward-up->inv-matrix + "Create a matrix representing an inverse transform where arg1 is forward (+z) + and arg2 is up (+y). Will use the pitch of forward." + (function matrix vector vector matrix)) +(define-extern forward-up-nopitch->inv-matrix + "Create a matrix representing an inverse transform where arg1 is forward (+z) + and arg2 is up (+y). Will not use the pitch of forward." + (function matrix vector vector matrix)) +(define-extern forward-up-nopitch->quaternion + "Create a quaternion representing a transform where arg1 is forward (+z) + and arg2 is up (+y). Will not use the pitch of forward." + (function quaternion vector vector quaternion)) +(define-extern forward-up->quaternion + "Create a quaternion representing a transform where arg1 is forward (+z) + and arg2 is up (+y). Will use the pitch of forward." + (function quaternion vector vector quaternion)) +(define-extern quaternion-from-two-vectors! + "Create a quaternion representing the rotation between two vectors." + (function quaternion vector vector quaternion)) +(define-extern quaternion-from-two-vectors-partial! + "Create a quaternion representing the rotation between two vectors, + doing arg3 fraction of the total rotation." + (function quaternion vector vector float quaternion)) +(define-extern quaternion-from-two-vectors-max-angle! + "Create a quaternion representing the rotation between two vectors, + allowing at most a rotation of arg3 degrees." + (function quaternion vector vector float quaternion)) +(define-extern quaternion-from-two-vectors-max-angle-partial! + "Create a quaternion representing the arg4 fraction of the rotation between two vectors, + allowing at most a rotation of arg3 degrees." + (function quaternion vector vector float float quaternion)) +(define-extern matrix-from-two-vectors! + "Create a rotation matrix representing the rotation between two vectors." + (function matrix vector vector matrix)) +(define-extern matrix-from-two-vectors-max-angle! + "Create a rotation matrix representing the rotation between two vectors, + allowing at most a rotation of arg3 degrees." + (function matrix vector vector float matrix)) +(define-extern matrix-from-two-vectors-smooth! + "This function can help smoothly rotate from a current heading vector to a target one. + It returns a rotation to move arg1 closer to arg2, subject to two different speed limits. + arg3 is a rotations-per-frame rate. This limit takes frame rate into account (when lagging, the rotation is larger) + arg4 is a 'slow down when getting close to the end' limit. + This is used in rotate-toward-orientation, which is much improved from jak 1." + (function matrix vector vector float int matrix)) +(define-extern matrix-from-two-vectors-the-long-way-smooth! + "Same as above, but rotates you away from the target. + Note that the 'near the end' smoothing will apply when you're near the target." + (function matrix vector vector float int matrix)) +(define-extern quaternion-from-two-vectors-smooth! + "Same as above, but returns a quaternion." + (function quaternion vector vector float int quaternion)) +(define-extern matrix-from-two-vectors-max-angle-partial! + "Create a rotation matrix representing the given fraction of the rotation between two heading vectors, + rotating by at most the given angle." + (function matrix vector vector float float matrix)) +(define-extern matrix-from-two-vectors-partial-linear! + "Create a rotation matrix representing doing arg3 fraction of the rotation between two vectors." + (function matrix vector vector float matrix)) +(define-extern matrix-remove-z-rot "Remove the z rotation component of a rotation." (function matrix vector matrix)) +(define-extern matrix-rot-diff! + "Get the difference of rotation between two matrices, expressed as a quaternion." + (function vector matrix matrix float)) +(define-extern quaternion-seek + "Strange quaternion rotate toward function. arg3 is ignored. arg4 is the max seek amount." + (function quaternion quaternion quaternion float float quaternion)) +(define-extern vector-deg-seek + "Make one vector closer to another, doing at most a rotation by arg3 degrees." + (function vector vector vector float vector)) +(define-extern vector-deg-slerp + "Slerp for vectors. (imagine that they are the z axis of two frames)" + (function vector vector vector float vector)) +(define-extern vector-vector-deg-slerp! "Unused. No clue what this does." (function vector vector vector float vector vector)) +(define-extern normal-of-plane + "Given three points on a plane, compute the plane's normal." + (function vector vector vector vector vector)) +(define-extern vector-3pt-cross! + "Cross product of 2 - 1 and 3 - 1. (will give a normal to the plane, but not of magnitude 1)" + (function vector vector vector vector vector)) +(define-extern closest-pt-in-triangle + "arg2 is the vertices of the triangle, arg3 is the normal, arg1 is the input point, arg0 is the output." + (function vector vector matrix vector none)) +(define-extern point-in-triangle-cross + "Check if point is in the triangle using cross product check (so you have to get the order of points right)." + (function vector vector vector vector vector symbol)) +(define-extern point-in-plane-<-point+normal! + "Very strange function. Takes a plane, in point-normal form, then returns some other point on that plane. + It will move 1m in two of {x, y, z} directions. The direction not moved in is the one which is closest to point-in-triangle-cross + in the same direction of the normal (this prevent moving huge distances for nearly vertical planes for example)." + (function vector vector vector vector)) +(define-extern circle-circle-xz-intersect + "This function is unused and really complicated, so not implementing it for now." + (function sphere sphere vector vector int)) +(define-extern circle-test "Test the circle-circle-xz-intersect function." (function none)) +(define-extern vector-circle-tangent-new "Unused." (function vector vector vector vector none)) +(define-extern vector-circle-tangent "Also unused." (function vector vector vector vector none)) +(define-extern find-knot-span + "Binary serach over knots to find which contains the value float in (arg0 arg1). Unused." + (function int int float (inline-array vector) int)) +(define-extern calculate-basis-functions-vector! + "Calculate polynomial basis for a given control point." + (function vector int float (pointer float) vector)) +(define-extern curve-evaluate! + "Evaluate a curve. + arg0 is the output + arg1 is the input. + arg2 is control vertices. + arg3 is the number of control vertices. + arg4 is the knot points. + arg5 is the number of knots." + (function vector float (inline-array vector) int (pointer float) int vector)) +(define-extern curve-get-pos! + "Get the position on the curve at the given input." + (function vector float curve vector)) +(define-extern curve-length + "Compute the approximate curve length as the sum of distances between knots." + (function curve float)) +(define-extern curve-copy! "Shallow copy a curve." (function curve curve curve)) +(define-extern curve-closest-point + "Get the input value for the point on the curve. Approximate! And is O(n_knots)." + (function curve vector float float int float float)) +(define-extern vector-plane-distance "Unused." (function vector plane vector float)) +(define-extern intersect-ray-plane + "arg1 is ray direction, arg3 is plane normal, others don't really make sense to me." + (function vector vector vector vector float)) +(define-extern line-line-find-intersection-xz (function vector vector vector vector vector float)) +(define-extern segment-segment-find-intersection-xz (function vector vector vector vector float)) +(define-extern generate-rand-vector-on-sphere (function vector vector)) +(define-extern ellipsoid-get-foci (function ellipsoid vector vector float)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; timer ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern timer-count function) ;; (function timer-bank uint) +;; (define-extern disable-irq function) ;; (function none) +;; (define-extern enable-irq function) ;; (function none) +;; (define-extern stopwatch-init function) ;; (function stopwatch int) +;; (define-extern stopwatch-reset function) ;; (function stopwatch int) +;; (define-extern stopwatch-start function) ;; (function stopwatch int) +;; (define-extern stopwatch-stop function) ;; (function stopwatch none) +;; (define-extern stopwatch-begin function) ;; (function stopwatch int) +;; (define-extern stopwatch-end function) ;; (function stopwatch none) +;; (define-extern stopwatch-elapsed-ticks function) ;; (function stopwatch time-frame) +;; (define-extern stopwatch-elapsed-seconds function) ;; (function stopwatch float) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; vector ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern vector-cross! + "Compute the cross product. The w component is set to junk." + (function vector vector vector vector)) +(define-extern vector-xz-cross! + "Compute the cross product of the xz components of inputs." + (function vector vector vector vector)) +(define-extern vector+float! + "Add float to each component of vector. The w component is set to 1" + (function vector vector float vector)) +(define-extern vector*! "Elementwise product. Set w = 1." (function vector vector vector vector)) +(define-extern vector+*! + "set arg0 = arg1 + (arg3 * arg2). The w component will be set to 1." + (function vector vector vector float vector)) +(define-extern vector-*! + "Set arg0 = arg1 - (arg3 * arg2). The w component will be set to 1." + (function vector vector vector float vector)) +(define-extern vector/! + "Set arg0 = arg1 / arg2. The w component will be set to 1. + The implementation is kind of crazy." + (function vector vector vector vector)) +(define-extern vector-float*! + "Multiply all values in a vector by arg2. Set w to 1." + (function vector vector float vector)) +(define-extern vector-average! + "Set arg0 to the average of arg1 and arg2. Set w to 1." + (function vector vector vector vector)) +(define-extern vector+float*! "arg0 = arg1 + arg2 * arg3." (function vector vector vector float vector)) +(define-extern vector--float*! + "Set arg0 = arg1 - (arg2 * arg3). The w component will be set to 1. + Is this different from vector-*!" + (function vector vector vector float vector)) +(define-extern vector-min! (function vector vector vector vector)) +(define-extern vector-max! (function vector vector vector vector)) +(define-extern vector-float/! + "Divide all components by arg2. The w component will be set to 1." + (function vector vector float vector)) +(define-extern vector-negate! "Negate xyz, set w to 1." (function vector vector vector)) +(define-extern vector-negate-in-place! "Negate xyz. Doesn't touch w." (function vector vector)) +(define-extern vector= + "Are the two vectors equal? Does not compare the w component. + The implementation is cool." + (function vector vector symbol)) +(define-extern vector-delta + "Sum of the elementwise absolute value of differences." + (function vector vector float)) +(define-extern vector-seek! + "Seek arg0 toward arg1. The arg0 is both read and written. + arg2 is saturated to (0, 1)" + (function vector vector float vector)) +(define-extern vector-smooth-seek! + "Smoothly seek vec toward target. + The step always points toward the target and has length (dist * alpha). + If the step is longer than max-step, the step is projected onto a _square_ with side length arg2. + Note that this doesn't project to a circle like the function below..." + (function vector vector float vector)) +(define-extern vector-seek-2d-xz-smooth! + "Smoothly seek vec's x and z components toward target. + The step always points toward the target and has length (dist * alpha). + If the step is longer than max-step, the step is projected onto a circle of radius max-step. + Doesn't touch y or w." + (function vector vector float float vector)) +(define-extern vector-seek-2d-yz-smooth! + "Smoothly seek vec's y and z components toward target. + The step always points toward the target and has length (dist * alpha). + If the step is longer than max-step, the step is projected onto a circle of radius max-step. + Doesn't touch x or w." + (function vector vector float float vector)) +(define-extern vector-seek-3d-smooth! + "Smoothly seek vec's x, y, and z components toward target. + The step always points toward the target and has length (dist * alpha). + If the step is longer than max-step, the step is projected onto a circle of radius max-step. + Doesn't touch w." + (function vector vector float float vector)) +(define-extern seek-with-smooth + "Move value closer to target. + If we are within deadband, just go straight to target. + If not, try to go alpha*err. If that is a larger step than max-step, limit to max-step" + (function float float float float float float)) +(define-extern vector-identity! "Set arg0 to 1, 1, 1, 1." (function vector vector)) +(define-extern vector-seconds + "Convert from actual seconds to the seconds unit." + (function vector vector vector)) +(define-extern vector-seconds! + "Convert from actual seconds to seconds, in place." + (function vector vector)) +(define-extern vector-v! + "Convert a velocity to a displacement per frame. The velocity should be in X/actual_second. + Uses the current process clock." + (function vector vector)) +(define-extern vector-v+! + "Euler forward step, using the current display time settings." + (function vector vector vector vector)) +(define-extern vector-v*float+! + "Euler forward step, scaling velocity by velocity-scale." + (function vector vector vector float vector)) +(define-extern vector-v++! + "Update position in place, using display's current timing." + (function vector vector vector)) +(define-extern vector-v*float! + "Go from velocity to delta-p per frame, scaling by scale." + (function vector vector float vector)) +(define-extern vector-v*float++! + "Update position with given velocity, scaled by scale." + (function vector vector float vector)) +(define-extern vector-to-ups! + "Go from units per frame to units per second?" + (function vector vector vector)) +(define-extern vector-from-ups! + "Go from units per second to units per frame?" + (function vector vector vector)) +(define-extern vector-length + "Get the length of the xyz part." + (function vector float)) +(define-extern vector-length-squared + "Get the squared length of the xyz part." + (function vector float)) +(define-extern vector-xz-length-squared + "Get the length of the xz part, squared." + (function vector float)) +(define-extern vector-xz-length "Get the length of the xz part." (function vector float)) +(define-extern vector-vector-distance + "Subtract the xyz parts and get the norm." + (function vector vector float)) +(define-extern vector-vector-distance-squared + "Squared norm of the difference of the xyz parts." + (function vector vector float)) +(define-extern vector-vector-xz-distance "Distance on the xz plane." (function vector vector float)) +(define-extern vector-vector-xy-distance "distance on the xy plane." (function vector vector float)) +(define-extern vector-vector-xz-distance-squared "Distance on the xz plane squared." (function vector vector float)) +(define-extern vector-vector-planar-distance (function vector vector vector float)) +(define-extern vector-normalize! + "Modify arg0 in place to have length arg1 for its xyz components. The w part is not changed." + (function vector float vector)) +(define-extern vector-normalize-ret-len! + "Modify arg0 in place to have length arg1 for its xyz components. + The w part isn't changed and the _original_ length is returned." + (function vector float float)) +(define-extern vector-normalize-copy! + "Normalize, but not in place. + This implementation is very good compared to the vector-normalize! one. + The w component is set to 1." + (function vector vector float vector)) +(define-extern vector-xz-normalize! "Normalize, xz components only." (function vector float vector)) +(define-extern vector-xz-normalize-copy! "Normalize, xz components only." (function vector vector float vector)) +(define-extern vector-length-max! + "Make vector at most arg1 length (xyz only). + If it is larger, project onto sphere. + Doesn't touch w" + (function vector float vector)) +(define-extern vector-xz-length-max! + "Make vector at most arg1 length (xz only). + It it is larger, project onto circle. + Doesn't touch w or y." + (function vector float vector)) +(define-extern vector-rotate-around-x! "Rotate a vector around the x axis." (function vector vector float vector)) +(define-extern vector-rotate-around-y! "Rotate a vector around the y axis." (function vector vector float vector)) +(define-extern vector-rotate90-around-y! "Rotate a vector 90 degrees around y." (function vector vector vector)) +(define-extern vector-rotate-around-z! "Rotate a vector around the z axis." (function vector vector float vector)) +(define-extern rotate-y<-vector+vector + "Get the y rotation between vectors. These should have the same length." + (function vector vector float)) +(define-extern rotate-x<-vector+vector + "Get the x rotation between vectors. These should have the same length." + (function vector vector float)) +(define-extern rotate-z<-vector+vector + "Get the z rotation between vectors. These should have the same length." + (function vector vector float)) +(define-extern rotate-vector-to-vector (function vector vector vector vector)) +(define-extern vector-cvt.w.s! "Convert float to int32. Truncate." (function vector vector vector)) +(define-extern vector-cvt.s.w! "Convert float to int32." (function vector vector vector)) +(define-extern rot-zxy-from-vector! + "I think this gives you a vector of euler angles to rotate some unit vector + to arg1." + (function vector vector vector)) +(define-extern rot-zyx-from-vector! + "I think this gives you a vector of euler angles to rotate some unit vector + to arg1." + (function vector vector vector)) +(define-extern vector-world-to-local! (function vector vector vector quaternion vector)) +(define-extern vector-local-to-world! (function vector vector vector quaternion vector)) +(define-extern vector-lerp! + "Linearly interpolate between two vectors. Alpha isn't clamped. + w will be set to 1." + (function vector vector vector float vector)) +(define-extern vector-lerp-clamp! + "Linearly interpolate between two vectors, clamping alpha to 0, 1. + w will be set to 1." + (function vector vector vector float vector)) +(define-extern vector4-lerp! + "Interpolate all 4 elements of a vector. Alpha is not clamped." + (function vector vector vector float vector)) +(define-extern vector4-lerp-clamp! + "Interpolate all 4 elements of a vector. Alpha is clamped to [0, 1]." + (function vector vector vector float vector)) +(define-extern vector4w-lerp! (function vector4w vector4w vector4w float vector4w)) +(define-extern vector-degi + "Convert a vector (in _rotations_) to degrees units, stored in an int. + Truncates to the nearest _rotation_. + Neither the input or output is a commonly used form. + Unsurprisingly, this strange function is never used." + (function vector vector vector)) +(define-extern vector-degf + "Convert a vector (in integer degree units) to floating point rotations. + Truncates to the nearest _rotation_. + Like the previous function, this is stupid and unused." + (function vector vector vector)) +(define-extern vector-degmod + "This one is actually right. Wraps degrees units (in floats, like they should be) + to +/- half a rotation." + (function vector vector vector)) +(define-extern vector-deg-diff + "Wrapped difference, degrees units. Will have the usual 16-bit accuracy issue." + (function vector vector vector none)) +(define-extern vector-deg-lerp-clamp! + "Apply deg-lerp-clamp to the xyz components of a vector. Sets w = 1." + (function vector vector vector float vector)) +(define-extern vector3s-copy! (function vector vector vector)) +(define-extern vector3s+! (function vector vector vector vector)) +(define-extern vector3s*float! (function vector vector float vector)) +(define-extern vector3s-! (function vector vector vector vector)) +(define-extern vector4-add! "Add 2 vector4s." (function vector4 vector4 vector4 none)) +(define-extern vector4-sub! "Subtract 2 vector4s." (function vector4 vector4 vector4 none)) +(define-extern vector4-mul! "Multiple 2 vector4s." (function vector4 vector4 vector4 none)) +(define-extern vector4-scale! "arg0 = arg1 * arg2." (function vector4 vector4 float none)) +(define-extern vector4-madd! "arg0 = arg1 + arg2 * arg3." (function vector4 vector4 vector4 float none)) +(define-extern vector4-msub! "arg0 = arg1 - arg2 * arg3." (function vector4 vector4 vector4 float none)) +(define-extern vector4-array-add! "Apply vector4-add! to all arrays." (function (inline-array vector4) (inline-array vector4) (inline-array vector4) int none)) +(define-extern vector4-array-sub! "Apply vector4-sub! to all arrays." (function (inline-array vector4) (inline-array vector4) (inline-array vector4) int none)) +(define-extern vector4-array-mul! "Apply vector4-mul! to all arrays." (function (inline-array vector4) (inline-array vector4) (inline-array vector4) int none)) +(define-extern vector4-array-scale! "Apply vector4-scale! to all arrays." (function (inline-array vector4) (inline-array vector4) float int none)) +(define-extern vector4-array-madd! "Apply vector4-madd! to all arrays." (function (inline-array vector4) (inline-array vector4) (inline-array vector4) float int none)) +(define-extern vector4-array-msub! "Apply vector4-msub! to all arrays." (function (inline-array vector4) (inline-array vector4) (inline-array vector4) float int none)) +(define-extern vector4-array-lerp! "Apply vector4-lerp! to all arrays." (function (inline-array vector4) (inline-array vector4) (inline-array vector4) float int symbol)) +(define-extern spheres-overlap? "Do the spheres overlap?" (function sphere sphere symbol)) +(define-extern sphere<-vector! + "Set the position of the sphere to arg1. Does not change the radius." + (function sphere vector sphere)) +(define-extern sphere<-vector+r! + "Set the position of the sphere from arg1 and the radius from arg2." + (function sphere vector float sphere)) +(define-extern rand-vu-sphere-point! + "Get a random point on the sphere at the origin with radius arg1. + The point is on the surface of the sphere." + (function vector float vector)) +(define-extern rand-vu-sphere-point-uniform! (function vector float vector)) +(define-extern vector-vector-angle-safe + "Get the angle between two vectors, with some 'safety' applied..." + (function vector vector float)) +(define-extern vector-get-unique! (function vector vector vector)) +(define-extern vector-get-closest-perpendicular! (function vector vector vector vector)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; file-io ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; +++file-io:file-kind +(defenum file-kind + :bitfield #f + (level-bt 0) ;; aka bsp-header. + (art-group 1) + (tpage 2) + (dir-tpage 3) + (level-vs 4) + (tx 5) + (vis 6) + (map 7) + ) +;; ---file-io:file-kind + +(deftype file-stream (basic) + ((flags uint32 :offset-assert 4) + (mode symbol :offset-assert 8) + (name string :offset-assert 12) + (file uint32 :offset-assert 16) + ) + (:methods + (new (symbol type string symbol) _type_) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) + +(deftype file-info (basic) + ((file-type (pointer string) :offset-assert 4) ;; guessed by decompiler + (file-name string :offset-assert 8) ;; guessed by decompiler + (major-version uint32 :offset-assert 12) + (minor-version uint32 :offset-assert 16) + (maya-file-name string :offset-assert 20) ;; guessed by decompiler + (tool-debug string :offset-assert 24) ;; guessed by decompiler + (mdb-file-name string :offset-assert 28) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(define-extern file-stream-read-string + "Fill a string with data from a file stream. + Note: this function does not work." + (function file-stream string string)) +(define-extern *file-temp-string* string) +(define-extern make-file-name + "Get a file name to open a file with the given kind and name. + The art-group-version argument can be used to override the version + of the art-group. Set it to 0 or less to use the default version. + Similar to MakeFileName in C. + Note: file type enum is different between C and GOAL. + File versions should match those in versions.h. + Uses a single *file-temp-string* buffer, shared with make-vfile-name. + arg3 is unused." + (function file-kind string int symbol string)) +(define-extern make-vfile-name + "Make virtual? file name. This makes a name that the kernel knows how to + handle in a specific way. This function is not used." + (function file-kind string string)) +(define-extern file-info-correct-version? + "Check if the version and kind in the info is valid. The `version-override` can specify a + non-default version, or set to 0 for the default version." + (function file-info file-kind int symbol)) +(define-extern *sqlpipe-file-path-send* file-stream) +(define-extern *sqlpipe-file-path-recv* file-stream) +(define-extern *sqlpipe-file-buffer* pointer) +(define-extern file-stream-read-complete + "Read file into a pointer until it reaches a limit, or until file stream is complete. + Returns actual amount read." + (function file-stream pointer int int)) +(define-extern sqlpipe-query (function string sql-result)) +(define-extern old-sql-query (function string sql-result)) +(define-extern sql-query (function string sql-result)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; loader-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-type art basic) +(declare-type art-group art) +(define-extern art-group type) + +(deftype load-dir (basic) + "`load-dir` is an array of references to loaded things. + It's used to handle art groups that are loaded as part of a level load." + ((lev level :offset-assert 4) + (string-array (array string) :offset-assert 8) ;; these are the names + (data-array (array basic) :score -50 :offset-assert 12) ;; this is the file data. + ) + :method-count-assert 11 + :size-assert #x10 + :flag-assert #xb00000010 + (:methods + (new (symbol type int level) _type_) ;; 0 + (load-to-heap-by-name (_type_ string symbol kheap int) art-group) ;; 9 + (set-loaded-art (_type_ art-group) art-group) ;; 10 + ) + ) + +(deftype load-dir-art-group (load-dir) + "Specialization of load-dir for `art-group`s." + ((art-group-array (array art-group) :offset 12) + ) + :flag-assert #xb00000010 + (:methods + (new (symbol type int level) _type_) ;; 0 + ) + ) + +(deftype external-art-buffer (basic) + ((index int32 :offset-assert 4) + (other external-art-buffer :offset-assert 8) ;; guessed by decompiler + (status symbol :offset-assert 12) ;; guessed by decompiler + (locked? symbol :offset-assert 16) ;; guessed by decompiler + (login? symbol :offset-assert 20) ;; guessed by decompiler + (frame-lock symbol :offset-assert 24) ;; guessed by decompiler + (init-heap (function external-art-buffer object) :offset-assert 28) ;; guessed by decompiler + (heap kheap :inline :offset-assert 32) + (pending-load-file string :offset-assert 48) ;; guessed by decompiler + (pending-load-file-part int32 :offset-assert 52) + (pending-load-file-owner uint64 :offset-assert 56) ;; handle + (pending-load-file-priority float :offset-assert 64) + (load-file string :offset-assert 68) ;; guessed by decompiler + (load-file-part int32 :offset-assert 72) + (load-file-owner uint64 :offset-assert 80) ;; handle + (load-file-priority float :offset-assert 88) + (buf pointer :offset-assert 92) ;; guessed by decompiler + (len int32 :offset-assert 96) + (art-group art-group :offset-assert 100) ;; guessed by decompiler + (art-data uint32 :offset 100) + ) + :method-count-assert 16 + :size-assert #x68 + :flag-assert #x1000000068 + (:methods + (new (symbol type int function symbol) _type_) ;; 0 + (set-pending-file (_type_ string int handle float) int) ;; 9 + (update (_type_) int) ;; 10 + (inactive? (_type_) symbol) ;; 11 + (file-status (_type_ string int) symbol) ;; 12 + (link-file (_type_ art-group) art-group) ;; 13 + (unlink-file (_type_ art-group) int) ;; 14 + (unlock! (_type_) int) ;; 15 + ) + ) + +(deftype spool-anim (basic) + "A `spool-anim` is metadata for an animation that will be loaded in chunks + to a pair of external-art-buffers." + ((name string :offset 16) ;; guessed by decompiler + (anim-name string :offset-assert 20) ;; guessed by decompiler + (buffer external-art-buffer :offset 20 :score -1) ;; added + (parts int32 :offset-assert 24) + (hint-id int32 :offset 24) + (priority float :offset-assert 28) + (owner uint64 :offset-assert 32) ;; handle + (command-list pair :offset-assert 40) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) + +(deftype external-art-control (basic) + "The `external-art-control` manages loading chunks from `spool-anim`s to `external-art-buffer`." + ((buffer external-art-buffer 2 :offset-assert 4) ;; guessed by decompiler + (rec spool-anim 3 :inline :offset-assert 16) ;; guessed by decompiler + (spool-lock uint64 :offset-assert 160) ;; handle + (reserve-buffer external-art-buffer :offset-assert 168) ;; guessed by decompiler + (reserve-buffer-count int16 :offset-assert 172) + (dma-reserve-buffer-count int16 :offset-assert 174) + (active-stream string :offset-assert 176) ;; guessed by decompiler + (queue-stream (array spool-anim) :offset-assert 180) ;; guessed by decompiler + (frame-mask uint32 :offset-assert 184) + (dma-reserve-heap kheap :inline :offset-assert 192) + ) + :method-count-assert 16 + :size-assert #xd0 + :flag-assert #x10000000d0 + (:methods + (new (symbol type) _type_) ;; 0 + (update (_type_ symbol) int) ;; 9 + (clear-rec (_type_) int) ;; 10 + (spool-push (_type_ string int process float) int) ;; 11 + (file-status (_type_ string int) symbol) ;; 12 + (reserve-alloc (_type_) kheap) ;; 13 + (reserve-free (_type_ kheap) int) ;; 14 + (none-reserved? (_type_) symbol) ;; 15 + ) + ) + +(deftype subtitle-range (basic) + ((start-frame float :offset-assert 4) + (end-frame float :offset-assert 8) + (message basic 12 :offset-assert 12) ;; guessed by decompiler + ;;(UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 9 + :size-assert #x3c + :flag-assert #x90000003c + ) + +(deftype subtitle-image (basic) + ((width uint16 :offset-assert 4) + (height uint16 :offset-assert 6) + (palette rgba 16 :offset 16) ;; guessed by decompiler + (data uint8 :dynamic :offset-assert 80) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; texture-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-type texture-page basic) + +(deftype texture-id (uint32) + "Unique identifier for a texture + as the tpage number and index of the texture within the tpage." + ((index uint16 :offset 8 :size 12) + (page uint16 :offset 20 :size 12) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype texture-pool-segment (structure) + "A chunk of VRAM." + ((dest uint32 :offset-assert 0) + (size uint32 :offset-assert 4) + ) + :allow-misaligned + :pack-me + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype texture-pool (basic) + ((top int32 :offset-assert 4) + (cur int32 :offset-assert 8) + (allocate-func (function texture-pool texture-page kheap int texture-page) :offset-assert 12) ;; guessed by decompiler + (font-palette int32 :offset-assert 16) + (segment texture-pool-segment 4 :inline :offset-assert 20) ;; guessed by decompiler + (segment-near texture-pool-segment :inline :offset 20) + (segment-common texture-pool-segment :inline :offset 28) + (common-page texture-page 32 :offset-assert 52) ;; guessed by decompiler + (common-page-mask int32 :offset-assert 180) + (update-sprites-flag symbol :offset-assert 184) ;; guessed by decompiler + (update-flag symbol :offset-assert 188) ;; guessed by decompiler + (texture-enable-user texture-enable-mask :offset-assert 192) ;; texture-enable-mask + (texture-enable-user-menu texture-enable-mask :offset-assert 200) ;; texture-enable-mask + (ids uint32 128 :offset-assert 208) ;; guessed by decompiler + ) + :method-count-assert 28 + :size-assert #x2d0 + :flag-assert #x1c000002d0 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type) _type_) + (texture-pool-method-9 () none) ;; 9 ;; (initialize! (_type_) _type_) + (texture-pool-method-10 () none) ;; 10 ;; (print-usage (_type_) _type_) + (texture-pool-method-11 () none) ;; 11 ;; (setup-font-texture (_type_) none) + (texture-pool-method-12 () none) ;; 12 ;; (allocate-defaults (_type_) none) + (texture-pool-method-13 () none) ;; 13 ;; (login-level-textures (_type_ level int (pointer texture-id)) none) + (texture-pool-method-14 () none) ;; 14 ;; (add-level-tpage-dma (_type_ level tpage-category bucket-id) none) + (texture-pool-method-15 () none) ;; 15 ;; (allocate-vram-words! (_type_ int) int) + (texture-pool-method-16 () none) ;; 16 ;; (allocate-segment (_type_ texture-pool-segment int) texture-pool-segment) + (texture-pool-method-17 () none) ;; 17 ;; (unload-page (_type_ texture-page) none) + (texture-pool-method-18 () none) ;; 18 ;; (get-common-page-slot-by-id (_type_ int) int) + (texture-pool-method-19 () none) ;; 19 ;; (update-warp-and-hud (_type_) none) + (texture-pool-method-20 () none) ;; 20 ;; (update-sprites (_type_) none) + (texture-pool-method-21 () none) ;; 21 ;; (mark-hud-warp-sprite-dirty (_type_) none) + (texture-pool-method-22 () none) ;; 22 ;; (lay-out-sprite-tex (_type_) none) + (texture-pool-method-23 () none) ;; 23 ;; (lay-out-hud-tex (_type_) none) + (texture-pool-method-24 () none) ;; 24 ;; (lay-out-warp-tex (_type_) none) + (texture-pool-method-25 () none) ;; 25 ;; (clear-ids (_type_) none) + (texture-pool-method-26 () none) ;; 26 + (texture-pool-method-27 () none) ;; 27 + ) + ) + +(deftype texture-mask (structure) + "Mask where each bit indicates if some part of a tpage is used, by a texture. + Additionally, the w component holds a minimum distance. The texture is only needed + if the distance to the object is smaller than this." + ((mask vector4w :inline :offset-assert 0) + (dist float :offset 12 :score 1) + (long uint64 2 :offset 0) ;; guessed by decompiler + (quad uint128 :offset 0) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype texture-masks (structure) + "Grouping of three masks, corresponding to the 3 segments of the texture. + So mask 0 is needed if segment 0 of the texture is needed, etc..." + ((data texture-mask 3 :inline :offset-assert 0) ;; guessed by decompiler + (level basic :offset 8) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype texture-masks-array (inline-array-class) + "Group of all texture-masks for a given tpage." + ((data texture-masks :dynamic :inline :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + +(deftype texture (basic) + "Metadata for a texture." + ((w int16 :offset-assert 4) + (h int16 :offset-assert 6) + (num-mips uint8 :offset-assert 8) + (tex1-control uint8 :offset-assert 9) + (psm uint8 :offset-assert 10) ;; gs-psm + (mip-shift uint8 :offset-assert 11) + (clutpsm uint16 :offset-assert 12) + (dest uint16 7 :offset-assert 14) ;; guessed by decompiler + (clutdest uint16 :offset-assert 28) + (width uint8 7 :offset-assert 30) ;; guessed by decompiler + (name string :offset-assert 40) ;; guessed by decompiler + (size uint32 :offset-assert 44) + (uv-dist float :offset-assert 48) + (pad uint32 3 :offset-assert 52) ;; guessed by decompiler + (masks texture-masks :inline :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x70 + :flag-assert #x900000070 + ) + +(deftype texture-page-segment (structure) + "Metadata for a 'segment' of a texture page. + Each texture page has 3 segments - smaller number segments have higher detail mips." + ((block-data pointer :offset-assert 0) ;; guessed by decompiler + (size uint32 :offset-assert 4) + (dest uint32 :offset-assert 8) + ) + :allow-misaligned + :pack-me + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) + +;; +++texture-h:tex-upload-mode +(defenum tex-upload-mode + (none -3) + (seg0-1 -2) + (seg0-1-2 -1) + (seg0 0) + (seg2 2) + ) +;; ---texture-h:tex-upload-mode + +(deftype texture-page (basic) + "A collection of textures. There is a tpage per category per level. + These tpages are loaded from the DVD. + e.g.: prison tfrag is its own tpage. + The tpage has multiple textures, and 3 segments. + Lower number segments are larger and have hi-res versions of textures." + ((info file-info :offset-assert 4) ;; guessed by decompiler + (name string :offset-assert 8) ;; guessed by decompiler + (id uint32 :offset-assert 12) + (length int32 :offset-assert 16) + (mip0-size uint32 :offset-assert 20) + (size uint32 :offset-assert 24) + (segment texture-page-segment 3 :inline :offset-assert 28) ;; guessed by decompiler + (dram-size uint32 :offset-assert 64) + (vram-size uint32 :offset-assert 68) + (pad uint32 14 :offset-assert 72) ;; guessed by decompiler + (data texture :dynamic :offset-assert 128) ;; guessed by decompiler + ) + :method-count-assert 15 + :size-assert #x80 + :flag-assert #xf00000080 + (:methods + (texture-page-method-9 () none) ;; 9 ;; (remove-data-from-heap (_type_ kheap) _type_) + (texture-page-method-10 () none) ;; 10 ;; (get-leftover-block-count (_type_ int int) int) + (texture-page-method-11 () none) ;; 11 ;; (relocate-dests! (_type_ int int) none) + (texture-page-method-12 () none) ;; 12 ;; (add-to-dma-buffer (_type_ dma-buffer tex-upload-mode) int) + (texture-page-method-13 () none) ;; 13 ;; (upload-now! (_type_ tex-upload-mode) none) + (texture-page-method-14 () none) ;; 14 + ) + ) + +(deftype shader-ptr (uint32) + "A pointer to an adgif-shader, stored in bits 8-32. This allows them to fit into + an adgif shader easily." + ((first-8 uint8 :offset 0 :size 8) ;; added + (shader uint32 :offset 8 :size 24) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype texture-link (structure) + "An overlay structure containing a shader-ptr that points to the next adgif-shader + in a linked list." + ((next shader-ptr :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype texture-page-dir-entry (structure) + "An entry for a texture in the texture-page-dir. + The texture-page-dir contains an entry for each tpage. + Each entry contains a reference to the tpage, and a linked list of shaders + using it." + ((length int16 :offset-assert 0) + (status uint16 :offset-assert 2) + (page texture-page :offset-assert 4) ;; guessed by decompiler + (link texture-link :offset-assert 8) ;; guessed by decompiler + ) + :pack-me + :allow-misaligned + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) + +(deftype texture-page-dir (basic) + "The list of all texture pages. + This is static data loaded from the DVD at boot." + ((length int32) + (entries texture-page-dir-entry 1 :inline) + ) + :method-count-assert 11 + :size-assert #x14 + :flag-assert #xb00000014 + (:methods + (texture-page-dir-method-9 () none) ;; 9 ;; (unlink-shaders-in-heap (_type_ kheap) int) + (texture-page-dir-method-10 () none) ;; 10 + ) + ) + +(deftype texture-relocate-later (basic) + "Unused in Jak 2, but metadata for postponing tpage copies until a second frame, + to have a smaller impact on frame times when loading." + ((memcpy symbol :offset-assert 4) ;; guessed by decompiler + (dest uint32 :offset-assert 8) + (source uint32 :offset-assert 12) + (move uint32 :offset-assert 16) + (entry texture-page-dir-entry :offset-assert 20) + (page texture-page :offset-assert 24) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) + +;; +++texture-h:link-test-flags +(defenum link-test-flags + :type uint32 + :bitfield #t + ) +;; ---texture-h:link-test-flags + +(deftype adgif-shader (structure) + "GS texturing/blending settings, called adgif-shader. + These are used by many different renderers and partially managed by the texture system. + For example, the texture system will automatically update tbp to point to the location + of the texture." + ((quad qword 5 :offset-assert 0 :score -100) ;; guessed by decompiler + (prims gs-reg64 10 :offset 0 :score -100) ;; guessed by decompiler + (reg-0 uint8 :offset 8) ;; gs-reg + (reg-1 uint8 :offset 24) ;; gs-reg + (reg-2 uint8 :offset 40) ;; gs-reg + (reg-3 uint8 :offset 56) ;; gs-reg + (reg-4 uint8 :offset 72) ;; gs-reg + (tex0 uint64 :offset 0) ;; gs-tex0 + (tex1 uint64 :offset 16) ;; gs-tex1 + (miptbp1 uint64 :offset 32) ;; gs-miptbp + (clamp uint64 :offset 48) ;; gs-clamp + (clamp-reg uint64 :offset 56) ;; gs-reg64 + (alpha uint64 :offset 64) ;; gs-miptbp + (link-test link-test-flags :offset 8) ;; guessed by decompiler + (texture-id texture-id :offset 24) ;; guessed by decompiler + (next shader-ptr :offset 40) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) + +(deftype adgif-shader-array (inline-array-class) + ((data adgif-shader :inline :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + +(deftype texture-base (structure) + "Metadata about an area of VRAM set aside for fancy dynamic texture effects + (sky, eye, etc)." + ((vram-page uint32 :offset-assert 0) + (vram-block uint32 :offset-assert 4) + (vram-word uint32 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) + +(deftype texture-page-translate-item (structure) + ((bucket int32 :offset-assert 0) ;; bucket-id + (level-index uint32 :offset-assert 4) + (level-texture-page tpage-category-u32 :offset-assert 8) ;; guessed by decompiler + (texture-user texture-enable-mask-u32 :offset-assert 12) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(define-extern *texture-masks* texture-masks) +(define-extern *texture-masks-array* texture-masks-array) +(define-extern texture-mip->segment + "Figure out which segment of a tpage a given mip level of a texture will be in. + arg0 is the mip level, arg1 is the total number of mips. + Higher mip level is lower detail." + (function int int int)) +(define-extern *texture-relocate-later* texture-relocate-later) +(define-extern *texture-page-dir* texture-page-dir) +(define-extern ct32-24-block-table (array int32)) +(define-extern mz32-24-block-table (array int32)) +(define-extern ct16-block-table (array int32)) +(define-extern ct16s-block-table (array int32)) +(define-extern mz16-block-table (array int32)) +(define-extern mz16s-block-table (array int32)) +(define-extern mt8-block-table (array int32)) +(define-extern mt4-block-table (array int32)) +(define-extern *texture-page-translate* (array texture-page-translate-item)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; texture-anim-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype texture-anim-layer (structure) + ((extra vector :inline :offset 240) + (func (function dma-buffer uint int int texture-anim-layer float int) :offset-assert 256) ;; guessed by decompiler + (func-id symbol :offset-assert 256 :overlay-at func) ;; guessed by decompiler + (init-func (function texture-anim-layer int) :offset-assert 260) ;; guessed by decompiler + (init-func-id symbol :offset-assert 260 :overlay-at init-func) ;; guessed by decompiler + (tex texture :offset-assert 264) ;; guessed by decompiler + (start-time float :offset-assert 268) + (end-time float :offset-assert 272) + (tex-name string :offset-assert 276) ;; guessed by decompiler + (test gs-test :offset-assert 280) ;; gs-test + (alpha gs-alpha :offset-assert 288) ;; gs-alpha + (clamp gs-clamp :offset-assert 296) ;; gs-clamp + (start-vectors vector 5 :inline :offset 80 :score -10) ;; added + + (start-color vector :inline :offset 80) + (start-scale vector2 :inline :offset 96) + (start-offset vector2 :inline :offset 104) + (start-st-scale vector2 :inline :offset 112) + (start-st-offset vector2 :inline :offset 120) + (start-qs vector :inline :offset 128) + (start-rot degrees :offset 144) ;; degrees + (start-st-rot degrees :offset 148) ;; degrees + (end-vectors vector 5 :inline :offset 160 :score -10) ;; added + + (end-color vector :inline :offset 160) + (end-scale vector2 :inline :offset 176) + (end-offset vector2 :inline :offset 184) + (end-st-scale vector2 :inline :offset 192) + (end-st-offset vector2 :inline :offset 200) + (end-qs vector :inline :offset 208) + (end-rot degrees :offset 224) ;; degrees + (end-st-rot degrees :offset 228) ;; degrees + ) + :method-count-assert 11 + :size-assert #x130 + :flag-assert #xb00000130 + (:methods + (initialize-texture! (_type_) _type_) ;; 9 + (clear-texture! (_type_) _type_) ;; 10 + ) + ) + +(deftype texture-anim (structure) + ((num-layers uint32 :offset-assert 0) + (func (function dma-buffer texture-anim int) :offset-assert 4) ;; guessed by decompiler + (func-id symbol :offset-assert 4 :overlay-at func) ;; guessed by decompiler + (init-func (function texture-anim int) :offset-assert 8) ;; guessed by decompiler + (init-func-id symbol :offset-assert 8 :overlay-at init-func) ;; guessed by decompiler + (mip-func basic :offset-assert 12) + (mip-func-id basic :offset-assert 12 :overlay-at mip-func) + (time-func basic :offset-assert 16) + (time-func-id basic :offset-assert 16 :overlay-at time-func) + (tex texture :offset-assert 20) ;; guessed by decompiler + (tex-name string :offset-assert 24) ;; guessed by decompiler + (extra vector :inline :offset-assert 32) + (color rgba :offset-assert 48) ;; guessed by decompiler + (frame-time float :offset-assert 52) + (frame-delta float :offset-assert 56) + (frame-mod float :offset-assert 60) + (test gs-test :offset-assert 64) ;; gs-test + (alpha gs-alpha :offset-assert 72) ;; gs-alpha + (clamp gs-clamp :offset-assert 80) ;; gs-clamp + (data texture-anim-layer :dynamic :offset-assert 88) ;; guessed by decompiler + ) + :method-count-assert 11 + :size-assert #x58 + :flag-assert #xb00000058 + (:methods + (init-textures! (_type_) _type_) ;; 9 + (clear-textures! (_type_) _type_) ;; 10 + ) + ) + +(deftype texture-anim-array (array) + ((array-data texture-anim :dynamic :offset-assert 16) + ) + :method-count-assert 11 + :size-assert #x10 + :flag-assert #xb00000010 + (:methods + (init! (_type_) _type_) ;; 9 + (clear! (_type_) _type_) ;; 10 + ) + ) + +(deftype texture-anim-work (structure) + ((erase-tmpl dma-gif-packet :inline :offset-assert 0) + (draw-tmpl dma-gif-packet :inline :offset-assert 32) + (draw2-tmpl dma-gif-packet :inline :offset-assert 64) + (sprite-tmpl dma-gif-packet :inline :offset-assert 96) + (fill-tmpl dma-gif-packet :inline :offset-assert 128) + (adgif-tmpl dma-gif-packet :inline :offset-assert 160) + (corner0 vector :inline :offset-assert 192) + (corner1 vector :inline :offset-assert 208) + (corner2 vector :inline :offset-assert 224) + (corner3 vector :inline :offset-assert 240) + (const vector :inline :offset-assert 256) + (color vector4w :inline :offset-assert 272) + (random vector4w 8 :inline :offset-assert 288) ;; guessed by decompiler + (random-index uint8 :offset-assert 416) + (color80808040 vector4w :inline :offset-assert 432) + (color80808060 vector4w :inline :offset-assert 448) + (color80808000 vector4w :inline :offset-assert 464) + (st0000 vector :inline :offset-assert 480) + (st0505 vector :inline :offset-assert 496) + (st1010 vector :inline :offset-assert 512) + (uv00 vector4w :inline :offset-assert 528) + (uv44 vector4w :inline :offset-assert 544) + (uv88 vector4w :inline :offset-assert 560) + (uv1010 vector4w :inline :offset-assert 576) + (uv2020 vector4w :inline :offset-assert 592) + (uv4040 vector4w :inline :offset-assert 608) + (uv8080 vector4w :inline :offset-assert 624) + (xy0000 vector4w :inline :offset-assert 640) + (xy4040 vector4w :inline :offset-assert 656) + (xy0040 vector4w :inline :offset-assert 672) + (xy2060 vector4w :inline :offset-assert 688) + (xy2040 vector4w :inline :offset-assert 704) + (xy3050 vector4w :inline :offset-assert 720) + (xy3040 vector4w :inline :offset-assert 736) + (xy3848 vector4w :inline :offset-assert 752) + (xy3840 vector4w :inline :offset-assert 768) + (xy4048 vector4w :inline :offset-assert 784) + (xy3048 vector4w :inline :offset-assert 800) + (xy3850 vector4w :inline :offset-assert 816) + (xy4060 vector4w :inline :offset-assert 832) + ) + :method-count-assert 9 + :size-assert #x350 + :flag-assert #x900000350 + ) + +(deftype clut16x16 (structure) + ((clut rgba 256 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x400 + :flag-assert #x900000400 + ) + +(deftype noise8x8 (structure) + ((image uint8 64 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +(deftype noise16x16 (structure) + ((image uint8 256 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x100 + :flag-assert #x900000100 + ) + +(deftype noise32x32 (structure) + ((image uint8 1024 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x400 + :flag-assert #x900000400 + ) + +(deftype noise64x64 (structure) + ((image uint8 4096 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x1000 + :flag-assert #x900001000 + ) + +(deftype noise128x128 (structure) + ((image uint8 16384 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x4000 + :flag-assert #x900004000 + ) + +(deftype fog8x256 (structure) + ((image uint8 256 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x100 + :flag-assert #x900000100 + ) + +(deftype fog-texture-work (structure) + ((fog-height float :offset-assert 0) + (fog-near float :offset-assert 4) + (fog-far float :offset-assert 8) + (fog-delta float :offset-assert 12) + (alpha-near float :offset-assert 16) + (alpha-far float :offset-assert 20) + (alpha-delta float :offset-assert 24) + (color rgba :offset-assert 28) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(define-extern *clut-translate* (pointer uint8)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lights-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype vu-lights (structure) + ((direction vector 3 :inline :offset-assert 0) ;; guessed by decompiler + (color vector 3 :inline :offset-assert 48) ;; guessed by decompiler + (ambient vector :inline :offset-assert 96) + ) + :method-count-assert 9 + :size-assert #x70 + :flag-assert #x900000070 + ) + +(deftype light (structure) + "extra: {?, shadow, ?, ?}" + ((direction vector :inline :offset-assert 0) + (color rgbaf :inline :offset-assert 16) + (extra vector :inline :offset-assert 32) + (level float :offset-assert 32 :overlay-at (-> extra x)) + (luminance float :offset-assert 40 :overlay-at (-> extra z)) + (priority float :offset-assert 44 :overlay-at (-> extra w)) + (bytes uint8 4 :offset-assert 36 :overlay-at (-> extra y)) ;; guessed by decompiler + (mask uint16 :offset-assert 36 :overlay-at bytes) + (palette-index int8 :offset-assert 39 :overlay-at (-> bytes 3)) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype light-shadow-mask (uint32) + () + :flag-assert #x900000004 + ) + +(deftype light-sphere (structure) + ((name string :offset-assert 0) ;; guessed by decompiler + (bsphere vector :inline :offset-assert 16) + (direction vector :inline :offset-assert 32) + (color vector :inline :offset-assert 48) + (decay-start float :offset 4) + (ambient-point-ratio float :offset 8) + (brightness float :offset 12) + (bytes uint8 4 :offset 60) ;; guessed by decompiler + (mask uint16 :offset 60) + (palette-index int8 :offset 63) + (shadow uint32 :offset 32 :score 1) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +(deftype light-hash-bucket (structure) + ((index uint16 :offset-assert 0) + (count uint16 :offset-assert 2) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype light-hash (basic) + ((num-lights uint16 :offset-assert 4) + (num-indices uint16 :offset-assert 6) + (num-buckets uint16 :offset-assert 8) + (bucket-step uint8 2 :offset-assert 10) ;; guessed by decompiler + (base-trans vector :inline :offset-assert 16) + (axis-scale vector :inline :offset-assert 32) + (dimension-array vector4w :inline :offset-assert 48) + (bucket-array (inline-array light-hash-bucket) :offset-assert 64) ;; guessed by decompiler + (index-array pointer :offset-assert 68) ;; guessed by decompiler + (light-sphere-array (inline-array light-sphere) :offset-assert 72) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x4c + :flag-assert #x90000004c + ) + +(deftype light-hash-work (structure) + ((ones vector4w :inline :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype light-group (structure) + ((dir0 light :inline :offset-assert 0) + (dir1 light :inline :offset-assert 48) + (dir2 light :inline :offset-assert 96) + (ambi light :inline :offset-assert 144) + (lights light 4 :inline :offset 0) ;; added + ) + :method-count-assert 9 + :size-assert #xc0 + :flag-assert #x9000000c0 + ) + +(define-extern *light-hash* light-hash) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; trail-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype trail-node (structure) + ((next-id int16 :offset-assert 0) + (prev-id int16 :offset-assert 2) + (parent-id int16 :offset-assert 4) + (x int16 :offset-assert 6) + (y int16 :offset-assert 8) + (z int16 :offset-assert 10) + (first-conn uint16 :offset-assert 12) + (cost-from-start uint16 :offset-assert 14) + (cost-to-goal uint16 :offset-assert 16) + (flags uint8 :offset-assert 18) ;; trail-node-flag + (conn-count uint8 :offset-assert 19) + ) + :method-count-assert 12 + :size-assert #x14 + :flag-assert #xc00000014 + (:methods + (trail-node-method-9 () none) ;; 9 ;; (get-dist-score (_type_ vector) uint) + (trail-node-method-10 () none) ;; 10 ;; (debug-draw (_type_ int) symbol) + (trail-node-method-11 () none) ;; 11 ;; (get-position (_type_ vector) vector) + ) + ) +|# + +#| +(deftype trail-visgroup (structure) + ((first-node uint16 :offset-assert 0) + (node-count uint8 :offset-assert 2) + (pad uint8 :offset-assert 3) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype trail-blocker (structure) + ((plane plane :inline :offset-assert 0) + (center vector :inline :offset-assert 16) + (radius-squared float :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype trail-conn (structure) + ((head-id uint16 :offset-assert 0) + (tail-id uint16 :offset-assert 2) + (flags uint8 :offset-assert 4) ;; conn-flag + (visgroup-id uint8 :offset-assert 5) + (cost uint16 :offset-assert 6) + ) + :method-count-assert 10 + :size-assert #x8 + :flag-assert #xa00000008 + (:methods + (trail-conn-method-9 () none) ;; 9 ;; (debug-draw (_type_ trail-graph int) none) + ) + ) +|# + +#| +(deftype trail-conn-hash-cell (structure) + ((first-conn uint16 :offset-assert 0) + (conn-count uint8 :offset-assert 2) + (pov-count uint8 :offset-assert 3) + (first-pov uint16 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x6 + :flag-assert #x900000006 + ) +|# + +#| +(deftype trail-conn-search (structure) + ((best-conn-id int32 :offset-assert 0) + (best-dist float :offset-assert 4) + (src-pos vector :offset-assert 8) + (conn-pos vector :offset-assert 12) + (debug-cells-searched int32 :offset-assert 16) + (debug-conns-searched int32 :offset-assert 20) + (bounds bounding-box4w :inline :offset-assert 32) + (cell-quads qword 2 :offset-assert 64) ;; guessed by decompiler + (conn-quads qword 7 :offset-assert 96) ;; guessed by decompiler + (cell-bits vector16ub 2 :offset-assert 64) ;; guessed by decompiler + (conn-bits vector16ub 2 :offset-assert 96) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #xd0 + :flag-assert #x9000000d0 + ) +|# + +#| +(deftype trail-conn-hash (basic) + ((cell-width meters :offset-assert 4) + (origin vector :inline :offset-assert 16) + (cell (inline-array trail-conn-hash-cell) :offset-assert 32) ;; guessed by decompiler + (conn-ids (pointer uint16) :offset-assert 36) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + ) +|# + +#| +(deftype trail-cached-search-info (structure) + ((goal-conn-id int16 :offset-assert 0) + (orig-goal-pos vector :inline :offset-assert 16) + (conn-goal-pos vector :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype trail-cached-start-pov (structure) + ((last-updated uint64 :offset-assert 0) ;; time-frame + (pov-can-see-start uint64 :offset-assert 8) + (next-node-id int32 :offset-assert 16) + (start-pos vector :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype trail-graph (basic) + ((mode uint8 :offset-assert 4) + (search-id uint32 :offset-assert 8) + (open-head-id int16 :offset-assert 12) + (goal-conn-id int16 :offset-assert 14) + (goal-node-id int16 :offset-assert 16) + (over-under-thresh float :offset-assert 20) + (over-under-above-too-low float :offset-assert 24) + (over-under-below-too-high float :offset-assert 28) + (pov-node-count uint16 :offset-assert 32) + (node-count uint16 :offset-assert 34) + (conn-count uint16 :offset-assert 36) + (blocker-count uint16 :offset-assert 38) + (conn-mask uint8 :offset-assert 40) + (node (inline-array trail-node) :offset-assert 44) ;; guessed by decompiler + (conn (inline-array trail-conn) :offset-assert 48) ;; guessed by decompiler + (blocker (inline-array trail-blocker) :offset-assert 52) ;; guessed by decompiler + (conn-ids (pointer uint16) :offset-assert 56) ;; guessed by decompiler + (visgroup (inline-array trail-conn-hash-cell) :offset-assert 60) ;; guessed by decompiler + (visnode-ids (pointer uint16) :offset-assert 64) ;; guessed by decompiler + (conn-hash trail-conn-hash :offset-assert 68) ;; guessed by decompiler + (cell-pov-bit-arrays (pointer uint64) :offset-assert 72) ;; guessed by decompiler + (pov-can-see-goal uint64 :offset-assert 80) + (cached-start-pov trail-cached-start-pov :inline :offset-assert 96) + (orig-start-pos vector :inline :offset-assert 144) + (orig-goal-pos vector :inline :offset-assert 160) + (conn-start-pos vector :inline :offset-assert 176) + (conn-goal-pos vector :inline :offset-assert 192) + (open-quads qword 6 :offset-assert 208) ;; guessed by decompiler + (closed-quads qword 6 :offset-assert 304) ;; guessed by decompiler + (open-bits vector16ub 2 :offset-assert 208) ;; guessed by decompiler + (closed-bits vector16ub 2 :offset-assert 304) ;; guessed by decompiler + ) + :method-count-assert 34 + :size-assert #x190 + :flag-assert #x2200000190 + (:methods + (trail-graph-method-9 () none) ;; 9 ;; (trail-graph-method-9 (_type_ int) int) + (trail-graph-method-10 () none) ;; 10 ;; (trail-graph-method-10 (_type_ int) symbol) + (trail-graph-method-11 () none) ;; 11 ;; (trail-graph-method-11 (_type_ int int) trail-node) + (trail-graph-method-12 () none) ;; 12 ;; (trail-graph-method-12 (_type_ trail-node vector) symbol) + (trail-graph-method-13 () none) ;; 13 ;; (trail-graph-method-13 (_type_ vector vector) symbol) + (trail-graph-method-14 () none) ;; 14 ;; (debug-draw (_type_) symbol) + (trail-graph-method-15 () none) ;; 15 ;; (trail-graph-method-15 (_type_ int) symbol) + (trail-graph-method-16 () none) ;; 16 ;; (trail-graph-method-16 (_type_ int (pointer uint16) vector vector rgba float) symbol) + (trail-graph-method-17 () none) ;; 17 ;; (trail-graph-method-17 (_type_ vector vector) int) + (trail-graph-method-18 () none) ;; 18 ;; (trail-graph-method-18 (_type_ vector) int) + (trail-graph-method-19 () none) ;; 19 ;; (trail-graph-method-19 (_type_) none) + (trail-graph-method-20 () none) ;; 20 ;; (trail-graph-method-20 (_type_ uint vector) vector) + (trail-graph-method-21 () none) ;; 21 ;; (trail-graph-method-21 (_type_ (pointer uint16) int (pointer int32) (pointer float)) int) + (trail-graph-method-22 () none) ;; 22 ;; (trail-graph-method-22 (_type_ int int) symbol) + (trail-graph-method-23 () none) ;; 23 ;; (trail-graph-method-23 (_type_) symbol) + (trail-graph-method-24 () none) ;; 24 ;; (trail-graph-method-24 (_type_ uint vector int int) symbol) + (trail-graph-method-25 () none) ;; 25 ;; (trail-graph-method-25 (_type_ int) int) + (trail-graph-method-26 () none) ;; 26 ;; (trail-graph-method-26 (_type_) int) + (trail-graph-method-27 () none) ;; 27 ;; (trail-graph-method-27 (_type_) int) + (trail-graph-method-28 () none) ;; 28 ;; (trail-graph-method-28 (_type_ trail-conn-search int int) symbol) + (trail-graph-method-29 () none) ;; 29 ;; (trail-graph-method-29 (_type_ vector vector trail-cached-search-info) int) + (trail-graph-method-30 () none) ;; 30 ;; (trail-graph-method-30 (_type_) int) + (trail-graph-method-31 () none) ;; 31 ;; (trail-graph-method-31 (_type_ int) none) + (trail-graph-method-32 () none) ;; 32 ;; (trail-graph-method-32 (_type_) uint) + (trail-graph-method-33 () none) ;; 33 ;; (trail-graph-method-33 (_type_ int) symbol) + ) + ) +|# + +;; (define-extern *trail-graph* object) ;; trail-graph + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; connect ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype connectable (structure) + "A connectable is the linked-list node part of a connection. + The connections themselves are owned by the engine. + + The `next0`/`prev0` references are used for how this belongs in the connectable list + belonging to the [[engine]]. These terminate on special nodes stored in the engine: + `alive-list`/`alive-list-end` for the active connections, and `dead-list`/`dead-list-end` + for the inactive. + + The `next1`/`prev1` references are used to build a linked list _per process_. + The head of this list is the inline connectable in process and it ends with `#f`. + This is a bit confusing at first, but these belong to two linked lists... + These terminate on both ends with `#f`." + ((next0 connectable :offset-assert 0) + (prev0 connectable :offset-assert 4) + (next1 connectable :offset-assert 8) + (prev1 connectable :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(declare-type engine basic) + +(deftype connection (connectable) + ((param0 basic :offset-assert 16) + (param1 basic :offset-assert 20) + (param2 int32 :offset-assert 24) ;; guessed by decompiler + (param3 int32 :offset-assert 28) ;; guessed by decompiler + (quad uint128 2 :offset 0) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x20 + :flag-assert #xe00000020 + ;; field param1 uses ~A with a signed load. field param2 uses ~A with a signed load. field param3 uses ~A with a signed load. + (:methods + (get-engine + "Get the engine for this connection. This must be used on a live connection." + (connection) engine) ;; 9 + (get-process "Get the process for this connection." (connection) process) ;; 10 + (belongs-to-engine? + "Check to see if this connection is located in the data section of the engine. + This works on dead or alive connections." + (connection engine) symbol) ;; 11 + (belongs-to-process? "Does this connection belong to the given process?" (connection process) symbol) ;; 12 + (move-to-dead "Move this connection from the alive list to the dead list." (connection) connection) ;; 13 + ) + ) + +(deftype engine (basic) + "An engine is a collection of connections. + You can iterate over the connections, or run them. + The engine is dynamically sized based on how many connections it can store. + + New for Jak 2: You can use a child class of [[connection]]." + ((name symbol :offset-assert 4) ;; guessed by decompiler + (engine-time uint64 :offset 16) ;; time-frame + (allocated-length int16 :offset 10) + (length int16 :offset 8) + (element-type type :offset 12) ;; guessed by decompiler + (alive-list connectable :inline :offset-assert 32) + (alive-list-end connectable :inline :offset-assert 48) + (dead-list connectable :inline :offset-assert 64) + (dead-list-end connectable :inline :offset-assert 80) + (data connection :inline :dynamic :offset-assert 96) ;; guessed by decompiler + ) + :method-count-assert 26 + :size-assert #x60 + :flag-assert #x1a00000060 + (:methods + (new (symbol type symbol int type) _type_) ;; 0 + (inspect-all-connections "inspect all of the connections." (engine) engine) ;; 9 + (apply-to-connections + "Apply arg0 to all connections for the engine. + It's okay to have arg0 remove the connection." + (engine (function connectable none)) int) ;; 10 + (apply-to-connections-reverse + "Apply arg0 to all connections, reverse order. + Do not use arg0 to remove yourself from the list." + (engine (function connectable none)) int) ;; 11 + (execute-connections "Run the engine!" (engine object) int) ;; 12 + (execute-connections-and-move-to-dead + "Run the engine! If any objects return `'dead`, remove them." + (engine object) int) ;; 13 + (execute-connections-if-needed + "Execute connections, but only if it hasn't been done on this frame." + (engine object) int) ;; 14 + (add-connection + "Add a connection between this engine and a given process." + (engine process object object object object) connection) ;; 15 + (remove-from-process "Remove all connections from process for this engine." (engine process) int) ;; 16 + (remove-matching + "Call the given function on each connection and the engine. + If it returns truthy, `move-to-dead` that connection." + (engine (function connection engine symbol)) int) ;; 17 + (remove-all "Remove all connections from an engine." (engine) int) ;; 18 + (remove-by-param0 "Remove all connections with param0 matching arg0." (engine object) int) ;; 19 + (remove-by-param1 "Remove all connections with param1 matching arg0." (engine int) int) ;; 20 + (remove-by-param2 "Remove all connections with param2 matching arg0." (engine int) int) ;; 21 + (get-first-connectable (engine) connectable) ;; 22 + (get-last-connectable (engine) connectable) ;; 23 + (get-next-connectable (_type_ connectable) connectable) ;; 24 + (get-prev-connectable (_type_ connectable) connectable) ;; 25 + ) + ) + +(deftype connection-pers (structure) + "This is another engine system, very similar to the first, but not specific to a process. + Each connection has a `key`, which is like the process, but unlike normal engine, + the key's don't track which engine-pers they belong to. + + Unlike [[engine]], users can use [[engine-pers]] as a parent class." + ((next connection-pers :offset-assert 0) + (key object :offset-assert 4) ;; guessed by decompiler + (update-time uint64 :offset-assert 8) ;; time-frame + (param object 4 :offset-assert 16) ;; guessed by decompiler + (param-int32 int32 4 :offset 16) ;; guessed by decompiler + (param-int64 int64 2 :offset 16) ;; guessed by decompiler + (param-float float 4 :offset 16) ;; guessed by decompiler + (param-quat uint128 :offset 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ;; field key uses ~A with a signed load. + ) + +(deftype engine-pers (basic) + ((name symbol :offset-assert 4) ;; guessed by decompiler + (length int16 :offset-assert 8) + (allocated-length int16 :offset-assert 10) + (element-type type :offset-assert 12) ;; guessed by decompiler + (execute-time uint64 :offset-assert 16) ;; time-frame + (alive-list connection-pers :offset-assert 24) + (dead-list connection-pers :offset-assert 28) + (data connection-pers :inline :dynamic :offset-assert 32) ;; guessed by decompiler + ) + :method-count-assert 15 + :size-assert #x20 + :flag-assert #xf00000020 + (:methods + (new (symbol type symbol int type) _type_) ;; 0 + (schedule-callback + "Get a connection for this key. + If no connection exists, add it. + Schedule an update to happen in arg1 seconds." + (_type_ object time-frame) connection-pers) ;; 9 + (kill-callback "Called when a connection is removed." (_type_ connection-pers) none) ;; 10 + (kill-by-key "Remove connections with this key, calling `kill-callback`." (_type_ object) none) ;; 11 + (kill-matching + "Call the given function on each connection. If it returns truthy, kill that connection." + (_type_ (function engine-pers connection-pers object object symbol) object object) none) ;; 12 + (update-callback + "Called when a connection is run. + Users can override this as needed." + (_type_) none) ;; 13 + (run-pending-updates! + "Run updates if they scheduled. If something is found that has no pending update, kill it. + Note that we won't kill things on this call if they fail to update their `update-time`. + They will survive until the next call to `run-pending-updates`! + (or you can modify their `update-time` before that to prevent them from being killed.)" + (_type_ time-frame) none) ;; 14 + ) + ) + +(define-extern connection-process-apply + "Apply a function to all connectables of a process." + (function process (function object none) symbol)) +(define-extern process-disconnect "Disconnect all connections for the given process." (function process int)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; mood-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype mood-channel (structure) + ((data float 24 :offset-assert 0) ;; guessed by decompiler + (vecs vector4 6 :inline :offset 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x60 + :flag-assert #x900000060 + ) + +(deftype mood-channel-group (structure) + ((data mood-channel 4 :inline :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x180 + :flag-assert #x900000180 + ) + +(deftype mood-fog (structure) + ((fog-color vector :inline :offset-assert 0) + (fog-dists vector :inline :offset-assert 16) + (fog-start meters :offset-assert 16 :overlay-at (-> fog-dists x)) + (fog-end meters :offset-assert 20 :overlay-at (-> fog-dists y)) + (fog-max float :offset-assert 24 :overlay-at (-> fog-dists z)) + (fog-min float :offset-assert 28 :overlay-at (-> fog-dists w)) + (erase-color vector :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype mood-fog-table (structure) + ((data mood-fog 8 :inline :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x180 + :flag-assert #x900000180 + ) + +(deftype mood-color (structure) + ((lgt-color vector :inline :offset-assert 0) + (amb-color vector :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype mood-direction-table (structure) + ((data vector 4 :inline :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +(deftype mood-color-table (structure) + ((data mood-color 8 :inline :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x100 + :flag-assert #x900000100 + ) + +(deftype mood-sky-table (structure) + ((data vector 8 :inline :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) + +(deftype mood-clouds (structure) + ((cloud-min float :offset-assert 0) + (cloud-max float :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype mood-weather (structure) + ((data float 2 :offset-assert 0) ;; guessed by decompiler + (cloud float :offset 0) + (fog float :offset 4) + ) + :pack-me + :allow-misaligned + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype mood-iweather (structure) + ((data int32 2 :offset-assert 0) ;; guessed by decompiler + (cloud int32 :offset 0) + (fog int32 :offset 4) + ) + :allow-misaligned + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype mood-range (structure) + ((data float 4 :offset-assert 0 :score -1) ;; guessed by decompiler + (min-cloud float :offset 0) + (max-cloud float :offset 4) + (min-fog float :offset 8) + (max-fog float :offset 12) + (quad uint128 :offset 0) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype mood-filters-table (structure) + ((data vector 8 :inline :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) + +(declare-type sky-color-day structure) +(deftype mood-table (basic) + ((mood-fog-table mood-fog-table :offset-assert 4) + (mood-color-table mood-color-table :offset-assert 8) + (mood-channel-group mood-channel-group :offset-assert 12) + (mood-direction-table mood-direction-table :offset-assert 16) + (mood-sky-table mood-sky-table :offset-assert 20) + (mood-interp-table sky-color-day :offset-assert 24) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) + +(deftype light-state (structure) + ((time float :offset-assert 0) + (fade float :offset-assert 4) + ) + :pack-me + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype flicker-state (structure) + ((flicker-off uint8 :offset-assert 0) + (flicker-on uint8 :offset-assert 1) + ) + :allow-misaligned + :method-count-assert 9 + :size-assert #x2 + :flag-assert #x900000002 + ) + +(deftype florescent-state (structure) + ((value float :offset-assert 0) + (delay int8 :offset-assert 4) + (delay2 int8 :offset-assert 5) + ) + :method-count-assert 9 + :size-assert #x6 + :flag-assert #x900000006 + ) + +(deftype electricity-state (structure) + ((value float :offset-assert 0) + (scale float :offset-assert 4) + ) + :pack-me + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype pulse-state (structure) + ((pulse float :offset-assert 0) + (brightness float :offset-assert 4) + (target-brightness float :offset-assert 8) + (speed float :offset-assert 12) + ) + :pack-me + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype strobe-state (structure) + ((time float :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype flames-state (structure) + ((time float :offset-assert 0) + (index uint8 :offset-assert 4) + (length uint8 :offset-assert 5) + (height uint8 :offset-assert 6) + ) + :pack-me + :method-count-assert 9 + :size-assert #x7 + :flag-assert #x900000007 + ) + +(deftype mood-context-core (structure) + ((current-fog mood-fog :inline :offset-assert 0) + (current-sky-color vector :inline :offset-assert 48) + (current-env-color vector :inline :offset-assert 64) + (current-prt-color vector :inline :offset-assert 80) + (current-shadow-color vector :inline :offset-assert 96) + ) + :method-count-assert 9 + :size-assert #x70 + :flag-assert #x900000070 + ) + +(deftype mood-context-core2 (mood-context-core) + ((light-group light-group 8 :inline :offset-assert 112) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x670 + :flag-assert #x900000670 + ) + +(deftype mood-context-core3 (mood-context-core2) + ((times vector 8 :inline :offset-assert 1648) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x6f0 + :flag-assert #x9000006f0 + ) + +(deftype mood-context (mood-context-core3) + ((itimes vector4w 4 :inline :offset-assert 1776) ;; guessed by decompiler + (state uint32 32 :offset-assert 1840) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x7b0 + :flag-assert #x9000007b0 + ) + +(deftype mood-control-work (structure) + ((color vector4w :inline :offset-assert 0) + (weather mood-weather :inline :offset-assert 16) + (iweather mood-iweather :inline :offset-assert 24) + (interp mood-weather :inline :offset-assert 32) + (index int32 4 :offset-assert 40) ;; guessed by decompiler + (color-interp float :offset-assert 56) + (color-index int32 2 :offset-assert 60) ;; guessed by decompiler + (channel-interp float :offset-assert 68) + (channel-index int32 2 :offset-assert 72) ;; guessed by decompiler + (cloud-interp float :offset-assert 80) + (cloud-index int32 2 :offset-assert 84) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x5c + :flag-assert #x90000005c + ) + +(deftype mood-control (mood-table) + ((mood-clouds mood-clouds :offset-assert 28) + (current-interp mood-weather :inline :offset-assert 32) + (target-interp mood-weather :inline :offset-assert 40) + (speed-interp mood-weather :inline :offset-assert 48) + (range mood-range :inline :offset-assert 64) + (time-until-random mood-weather :inline :offset-assert 80) + (time-until-random-min mood-weather :inline :offset-assert 88) + (time-until-random-max mood-weather :inline :offset-assert 96) + (current-special-interp float :offset-assert 104) + (target-special-interp float :offset-assert 108) + (rate-special-interp float :offset-assert 112) + (display-flag symbol :offset-assert 116) ;; guessed by decompiler + (override-weather-flag basic :offset-assert 120) + (pad int32 :offset-assert 124) + (override mood-weather :inline :offset-assert 128) + (lightning-index int32 :offset-assert 136) + (lightning-val int32 :offset-assert 140) + (lightning-time int32 :offset-assert 144) + (lightning-time2 float :offset-assert 148) + (lightning-time3 float :offset-assert 152) + (lightning-flash float :offset-assert 156) + (lightning-id sound-id :offset-assert 160) ;; guessed by decompiler + (lightning-count0 uint32 :offset-assert 164) + (lightning-count1 uint32 :offset-assert 168) + (lightning-count2 uint32 :offset-assert 172) + (rain-id sound-id :offset-assert 176) ;; guessed by decompiler + (sound-pitch float :offset-assert 180) + (fogs mood-fog-table 9 :offset-assert 184) ;; guessed by decompiler + (colors mood-color-table 3 :offset-assert 220) ;; guessed by decompiler + (channels mood-channel-group 3 :offset-assert 232) ;; guessed by decompiler + (clouds mood-clouds 9 :offset-assert 244) ;; guessed by decompiler + ) + :method-count-assert 25 + :size-assert #x118 + :flag-assert #x1900000118 + (:methods + (init-weather! (_type_) none) ;; 9 + (set-cloud-and-fog-interp! (_type_ float float float float) none) ;; 10 ;; (update-mood-weather! (_type_ float float float float) none) + (update-mood-range! (_type_ float float float float) none) ;; 11 + (set-time-for-random-weather! (_type_ float float) none) ;; 12 + (set-special-interps! + "Sets the `*-special-interp` values with the given values + @param! this The [[mood-control]] + @param target-interp Clamped between 0.0 and 1.0 + @param rate-interp Value to set [[this::rate-special-interp]] + @param set-current-interp? Uses `target-interp` to set [[this::current-special-interp] + @returns [[none]]" + (_type_ float float symbol) none) ;; 13 + (weather-event-concluded? ;; TODO - guess at name + "@returns [[#t]] if [[this::override-weather-flag]] is set, we aren't in a cutscene and [[this::current-special-interp]] is equal to `0.0`" + (_type_) symbol) ;; 14 ;; (apply-mood-color (_type_ mood-control-work) none) + (set-lightning-time! (_type_ int int float) none) ;; 15 ;; (apply-mood-channels (_type_ mood-control-work) none) + (apply-mood-clouds-and-fog (_type_ mood-control-work) none) ;; 16 ;; (adjust-num-clouds! (_type_ mood-control-work) none) + (apply-mood-fog (_type_ mood-control-work mood-color-table mood-color-table mood-color-table float) none) ;; 17 + (apply-fog-height (_type_ mood-control-work float float float float) none) ;; 18 + (apply-mood-colors (_type_ mood-control-work) none) ;; 19 + (mood-control-method-20 (_type_ mood-control-work mood-color-table mood-color-table mood-color-table float) none) ;; 20 + (apply-mood-channels (_type_ mood-control-work) none) ;; 21 + (adjust-num-clouds (_type_ mood-control-work) none) ;; 22 + (gen-lightning-and-thunder! (_type_ int) none) ;; 23 + (play-or-stop-lightning-sfx! (_type_ sound-spec vector) none) ;; 24 + ) + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; level-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-type bsp-header basic) + +;; +++level-h:vis-info-flag +(defenum vis-info-flag + :type uint32 + :bitfield #t + (dummy0 0) + (dummy1 1) + (dummy2 2) + (dummy3 3) + (dummy4 4) + (dummy5 5) + (dummy6 6) + (dummy7 7) + (dummy8 8) + (dummy9 9) + (dummy10 10) + (dummy11 11) + (dummy12 12) + (dummy13 13) + (dummy14 14) + (dummy15 15) + (dummy16 16) + (dummy17 17) + (dummy18 18) + (dummy19 19) + (dummy20 20) + (dummy21 21) + (dummy22 22) + (dummy23 23) + (dummy24 24) + (dummy25 25) + (dummy26 26) + (dummy27 27) + (dummy28 28) + (in-iop 29) + (loading 30) + (vis-valid 31) + ) +;; ---level-h:vis-info-flag + +(deftype level-vis-info (basic) + ((level level :offset-assert 4) ;; guessed by decompiler + (from-level symbol :offset-assert 8) ;; guessed by decompiler + (from-bsp bsp-header :offset-assert 12) ;; guessed by decompiler + (flags vis-info-flag :offset-assert 16) + (length uint32 :offset-assert 20) + (allocated-length uint32 :offset-assert 24) + (dictionary-length uint32 :offset-assert 28) + (dictionary uint32 :offset-assert 32) + (string-block uint32 :offset-assert 36) + (ramdisk uint32 :offset-assert 40) + (vis-bits uint32 4 :offset-assert 44) ;; guessed by decompiler + (current-vis-string uint32 4 :offset-assert 60) ;; guessed by decompiler + (vis-string uint32 :dynamic :offset-assert 76) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x4c + :flag-assert #x90000004c + ) + +(deftype level-borrow-info (basic) + ((borrow-size uint16 3 :offset-assert 4) ;; guessed by decompiler + ;; (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (borrow-info object 3 :offset-assert 12) ;; guessed by decompiler + ;; (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) + +;; +++level-h:level-memory-mode +(defenum level-memory-mode + :type uint32 + ) +;; ---level-h:level-memory-mode + +;; +++level-h:task-mask +(defenum task-mask + :type uint32 + :bitfield #t + (task0 0) + (task1 1) + (task2 2) + (task3 3) + (task4 4) + (task5 5) + (task6 6) + (task7 7) + (done 8) + (dummy0 9) + (network 10) + (vehicle 11) + (special 12) + (primary0 13) + (ctywide 14) + (never 15) + (movie0 16) + (movie1 17) + (movie2 18) + ) +;; ---level-h:task-mask + +;; +++level-h:level-flags +(defenum level-flags + :type uint32 + :bitfield #t + ) +;; ---level-h:level-flags + +(deftype level-load-info (basic) + ((name-list symbol 4 :offset-assert 4 :score -1) ;; guessed by decompiler + (name symbol :offset 4) ;; guessed by decompiler + (visname symbol :offset 8) ;; guessed by decompiler + (nickname symbol :offset 12) ;; guessed by decompiler + (dbname symbol :offset 4) ;; guessed by decompiler + (taskname symbol :offset 16) ;; guessed by decompiler + (index int16 :offset-assert 20) + (task-level uint8 :offset-assert 22) + (race-minimap uint8 :offset-assert 23) + (level-flags level-flags :offset-assert 24) ;; guessed by decompiler + (packages pair :offset-assert 28) ;; guessed by decompiler + (memory-mode level-memory-mode :offset-assert 32) ;; guessed by decompiler + (mood-func symbol :offset-assert 36) ;; guessed by decompiler + (special-mood symbol :offset-assert 40) ;; guessed by decompiler + (ocean symbol :offset-assert 44) ;; guessed by decompiler + (ocean-height float :offset-assert 48) + (status-cache uint16 :offset-assert 52) + (status-cache-sync uint16 :offset-assert 54) + (draw-priority float :offset-assert 56) + (base-task-mask task-mask :offset-assert 60) + (continues pair :offset-assert 64) ;; guessed by decompiler + (callback-list pair :offset-assert 68) ;; guessed by decompiler + (borrow level-borrow-info :offset-assert 72) ;; guessed by decompiler + (bottom-height meters :offset-assert 76) + (mood-range mood-range :offset-assert 80) ;; guessed by decompiler + ) + :method-count-assert 11 + :size-assert #x54 + :flag-assert #xb00000054 + (:methods + (get-callback-symbol-value-by-slot! "Look up value of symbol in callback-list with the given int as the car. Print warning if symbol's value is 0." (_type_ int) object) ;; 9 + (get-callback-by-slot! "Look up value in callback-list with the given int as the car and return it. Doesn't derefence the symbol." (_type_ int) object) ;; 10 + ) + ) + +(declare-type drawable basic) +(deftype login-state (basic) + ((state int32 :offset-assert 4) + (pos uint32 :offset-assert 8) + (elts uint32 :offset-assert 12) + (elt drawable 16 :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) + +(declare-type entity-links-array inline-array-class) +(declare-type dgo-header structure) +(declare-type game-text-info structure) +(declare-type text-id uint32) +(deftype level (basic) + ((name symbol :offset-assert 4) ;; guessed by decompiler + (load-name symbol :offset-assert 8) ;; guessed by decompiler + (nickname symbol :offset-assert 12) ;; guessed by decompiler + (index int32 :offset-assert 16) + (status symbol :offset-assert 20) ;; guessed by decompiler + (borrow-level level 3 :offset-assert 24) ;; guessed by decompiler + (borrow-from-level level :offset-assert 36) ;; guessed by decompiler + (heap kheap :inline :offset-assert 48) + (borrow-heap kheap 3 :inline :offset-assert 64) ;; guessed by decompiler + (bsp bsp-header :offset-assert 112) ;; guessed by decompiler + (art-group load-dir-art-group :offset-assert 116) ;; guessed by decompiler + (info level-load-info :offset-assert 120) ;; guessed by decompiler + (texture-page-dir texture-page-dir-entry 11 :inline :offset 128) + (loaded-texture-page texture-page 16 :offset-assert 260) ;; guessed by decompiler + (loaded-texture-page-count int32 :offset-assert 324) + (entity entity-links-array :offset-assert 328) ;; guessed by decompiler + (closest-object meters 10 :offset-assert 332) + (upload-size int32 19 :offset 408) ;; guessed by decompiler + (inside-boxes? symbol :offset-assert 484) + (display? symbol :offset-assert 488) ;; guessed by decompiler + (render? symbol :offset-assert 492) ;; guessed by decompiler + (meta-inside? symbol :offset-assert 496) ;; guessed by decompiler + (force-inside? symbol :offset-assert 500) ;; guessed by decompiler + (load-id uint32 :offset-assert 504) + (mood-context mood-context :offset-assert 508) + (mood-func (function mood-context float int none) :offset-assert 512) ;; guessed by decompiler + (mood-init (function mood-context none) :offset-assert 516) ;; guessed by decompiler + (vis-bits pointer 2 :offset-assert 520) ;; guessed by decompiler + (all-visible? symbol :offset-assert 528) ;; guessed by decompiler + (force-all-visible? symbol :offset-assert 532) ;; guessed by decompiler + (linking symbol :offset-assert 536) ;; guessed by decompiler + (vis-info level-vis-info 8 :offset-assert 540) ;; guessed by decompiler + (vis-self-index int32 :offset-assert 572) + (vis-adj-index int32 :offset-assert 576) + (vis-buffer pointer :offset-assert 580) ;; guessed by decompiler + (mem-usage-block memory-usage-block :offset-assert 584) ;; guessed by decompiler + (mem-usage int32 :offset-assert 588) + (code-memory-start pointer :offset-assert 592) ;; guessed by decompiler + (code-memory-end pointer :offset-assert 596) ;; guessed by decompiler + (load-start-time uint64 :offset-assert 600) + (load-stop-time uint64 :offset-assert 608) + (load-buffer uint32 2 :offset-assert 616) ;; guessed by decompiler + (load-buffer-size uint32 :offset-assert 624) + (load-buffer-last dgo-header :offset-assert 628) + (load-buffer-mode level-memory-mode :offset-assert 632) ;; guessed by decompiler + (display-start-time uint64 :offset-assert 640) + (memory-mask uint32 :offset-assert 648) + ;; (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (task-mask task-mask :offset-assert 652) + (tfrag-gs-test gs-test :offset-assert 656) ;; gs-test + (texture-dirty-masks texture-mask 11 :inline :offset-assert 672) ;; guessed by decompiler + (texture-mask texture-mask 19 :inline :offset-assert 848) ;; guessed by decompiler + (tfrag-last-calls uint32 6 :offset-assert 1152) ;; guessed by decompiler + (texture-anim-array texture-anim-array 11 :offset-assert 1176) ;; guessed by decompiler + (light-hash light-hash :offset-assert 1220) ;; guessed by decompiler + (draw-priority float :offset-assert 1224) + (draw-index int32 :offset-assert 1228) + (part-engine engine :offset-assert 1232) ;; guessed by decompiler + (user-object basic 4 :offset-assert 1236) ;; guessed by decompiler + ;; (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (loaded-text-info-count int32 :offset-assert 1252) + (loaded-text-info game-text-info 16 :offset-assert 1256) ;; guessed by decompiler + (level-type type :offset-assert 1320) ;; guessed by decompiler + (load-order uint64 :offset-assert 1328) + (slot int32 :offset-assert 1336) + (filter-num uint32 :offset-assert 1340) + (filter-name string 16 :offset-assert 1344) + (filter-look uint8 16 :offset-assert 1408) + (buffer kheap :offset-assert 1424) + ) + :method-count-assert 30 + :size-assert #x594 + :flag-assert #x1e00000594 + (:methods + (level-method-9 () none) ;; 9 ;; (deactivate (_type_) _type_) + (level-method-10 () none) ;; 10 ;; (unload! (_type_) _type_) + (level-method-11 () none) ;; 11 ;; (is-object-visible? (_type_ int) symbol) + (level-method-12 () none) ;; 12 ;; (level-method-12 () none) + (level-method-13 () none) ;; 13 ;; (bsp-name (_type_) symbol) + (level-method-14 () none) ;; 14 ;; (compute-memory-usage! (_type_ symbol) memory-usage-block) + (level-method-15 () none) ;; 15 ;; (inside-bsp? (_type_) symbol) + (level-method-16 () none) ;; 16 ;; (update-vis! (_type_ level-vis-info uint (pointer uint8)) symbol) + (level-method-17 () none) ;; 17 ;; (load-continue (_type_) _type_) + (level-method-18 () none) ;; 18 ;; (load-begin (_type_) _type_) + (level-method-19 () none) ;; 19 ;; (login-begin (_type_) _type_) + (level-method-20 () none) ;; 20 ;; (debug-print-region-splitbox (_type_ vector object) none) + (level-method-21 () none) ;; 21 ;; (get-art-group-by-name (_type_ string) art-group) + (level-method-22 () none) ;; 22 ;; (set-proto-vis! (_type_ symbol) int) + (lookup-text (_type_ text-id symbol) symbol) ;; 23 + (level-method-24 () none) ;; 24 ;; (level-method-24 () none) + (level-method-25 () none) ;; 25 ;; (birth (_type_) _type_) + (level-method-26 () none) ;; 26 ;; (level-status-update! (_type_ symbol) _type_) + (level-method-27 () none) ;; 27 ;; (load-common-package (_type_) none) + (level-method-28 () none) ;; 28 ;; (init-vis-from-bsp (_type_) none) + (level-method-29 () none) ;; 29 ;; (vis-clear (_type_) none) + ) + ) + +(deftype level-group (basic) + ((length int32 :offset-assert 4) + (top-level level :offset 12) ;; added + (entity-link entity-links :offset-assert 16) + (border? symbol :offset-assert 20) ;; guessed by decompiler + (vis? symbol :offset-assert 24) ;; guessed by decompiler + (want-level level :offset-assert 28) + (receiving-level level :offset-assert 32) + (load-commands pair :offset-assert 36) ;; guessed by decompiler + (play? symbol :offset-assert 40) ;; guessed by decompiler + (prev-target-pos vector 2 :inline :offset-assert 48) + (curr-target-pos vector 2 :inline :offset-assert 80) + (prev-camera-pos vector 2 :inline :offset-assert 112) + (curr-camera-pos vector 2 :inline :offset-assert 144) + (heap kheap :inline :offset-assert 176) + (car-heap kheap :inline :offset-assert 192) + (driver-heap kheap :inline :offset-assert 208) + (cars-heap kheap :inline :offset-assert 224) + (sound-bank sound-bank-state 7 :inline :offset-assert 240) ;; guessed by decompiler + (disk-load-timing? symbol :offset-assert 352) ;; guessed by decompiler + (load-level symbol :offset-assert 356) ;; guessed by decompiler + (load-size uint32 :offset-assert 360) + (load-time float :offset-assert 364) + (load-login-time float :offset-assert 368) + (draw-level-count int32 :offset-assert 372) + (draw-level level 19 :offset-assert 376) ;; guessed by decompiler + (draw-index-map uint8 19 :offset-assert 452) ;; guessed by decompiler + (shared-ties basic :offset-assert 472) + (status-cache-sync uint16 :offset-assert 476) + (load-order uint64 :offset-assert 480) + (wide-level symbol 2 :offset-assert 488) + (tfrag-login-level basic :offset-assert 496) + (level level 19 :inline :offset 544) ;; guessed by decompiler + ;; (data UNKNOWN 19 :offset-assert 548) + (level0 level :inline :offset-assert 544 :overlay-at (-> level 0)) + (level1 level :inline :offset-assert 1984 :overlay-at (-> level 1)) + (level2 level :inline :offset-assert 3424 :overlay-at (-> level 2)) + (level3 level :inline :offset-assert 4864 :overlay-at (-> level 3)) + (level4 level :inline :offset-assert 6304 :overlay-at (-> level 4)) + (level5 level :inline :offset-assert 7744 :overlay-at (-> level 5)) + (car0 level :inline :offset-assert 9184 :overlay-at (-> level 6)) + (car1 level :inline :offset-assert 10624 :overlay-at (-> level 7)) + (car2 level :inline :offset-assert 12064 :overlay-at (-> level 8)) + (car3 level :inline :offset-assert 13504 :overlay-at (-> level 9)) + (car4 level :inline :offset-assert 14944 :overlay-at (-> level 10)) + (car5 level :inline :offset-assert 16384 :overlay-at (-> level 11)) + (driver0 level :inline :offset-assert 17824 :overlay-at (-> level 12)) + (driver1 level :inline :offset-assert 19264 :overlay-at (-> level 13)) + (driver2 level :inline :offset-assert 20704 :overlay-at (-> level 14)) + (driver3 level :inline :offset-assert 22144 :overlay-at (-> level 15)) + (driver4 level :inline :offset-assert 23584 :overlay-at (-> level 16)) + (driver5 level :inline :offset-assert 25024 :overlay-at (-> level 17)) + (level-default level :inline :offset-assert 26464 :overlay-at (-> level 18)) + (pad2 uint32) + ) + :method-count-assert 34 + :size-assert #x6d04 + :flag-assert #x2200006d04 + (:methods + (level-group-method-9 () none) ;; 9 ;; (level-get (_type_ symbol) level) + (level-group-method-10 () none) ;; 10 ;; (level-get-with-status (_type_ symbol) level) + (level-group-method-11 () none) ;; 11 ;; (get-level-by-heap-ptr-and-status (_type_ pointer symbol) level) + (level-group-method-12 () none) ;; 12 ;; (level-get-for-use (_type_ symbol symbol) level) + (level-group-method-13 () none) ;; 13 ;; (activate-levels! (_type_) int) + (level-group-method-14 () none) ;; 14 ;; (debug-print-entities (_type_ symbol type string) none) + (level-group-method-15 () none) ;; 15 ;; (debug-draw-actors (_type_ symbol) none) + (level-group-method-16 () none) ;; 16 ;; (assign-draw-indices (_type_) none) + (level-group-method-17 () none) ;; 17 ;; (actors-update (_type_) none) + (level-group-method-18 () none) ;; 18 ;; (update-nav-meshes-method (_type_) none) + (level-group-method-19 () none) ;; 19 ;; (level-update (_type_) none) + (level-group-method-20 () none) ;; 20 ;; (level-get-target-inside (_type_) level) + (level-group-method-21 () none) ;; 21 ;; (init-level-system (_type_ symbol) none) + (level-group-method-22 () none) ;; 22 ;; (art-group-get-by-name (_type_ string (pointer level)) art-group) + (level-group-method-23 () none) ;; 23 ;; (update-vis-volumes (_type_) none) + (level-group-method-24 () none) ;; 24 ;; (level-group-method-24 (_type_) none) + (level-group-method-25 () none) ;; 25 ;; (print-volume-sizes (_type_) none) + (level-group-method-26 () none) ;; 26 ;; (status-of-level-and-borrows (_type_ symbol symbol) symbol) + (level-group-method-27 () none) ;; 27 ;; (do-nothing (_type_) none) + (level-group-method-28 () none) ;; 28 ;; (load-in-progress? (_type_) symbol) + (level-group-method-29 () none) ;; 29 ;; (is-load-allowed? (_type_ (pointer symbol)) symbol) + (level-group-method-30 () none) ;; 30 ;; (level-get-most-disposable (_type_) level) + (level-group-method-31 () none) ;; 31 + (level-group-method-32 () none) ;; 32 + (level-group-method-33 () none) ;; 33 + ) + ) + +(define-extern *level* level-group) +(define-extern *draw-index* int) +(define-extern *level-index* int) +(define-extern *city-mode* symbol) +(define-extern *lobby-levels* (array level)) +(define-extern *lobby-levels-display* (array level)) +(define-extern *lobby-levels-tmp* (array level)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; minimap-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype minimap-class-node (structure) + ((default-position vector :inline :offset-assert 0) + (flags minimap-flag :offset-assert 16) + (name string :offset-assert 20) ;; guessed by decompiler + (icon-xy vector2ub :inline :offset-assert 24) + (class uint16 :offset-assert 26) ;; minimap-class + (scale float :offset-assert 28) + (color rgba :offset-assert 32) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) +|# + +#| +(deftype connection-minimap (connection-pers) + ((next connection-minimap :offset-assert 0) + (handle uint64 :offset-assert 8) ;; handle + (position vector :offset-assert 16) + (alpha float :offset-assert 20) + (flags minimap-flag :offset-assert 24) + (class minimap-class-node :offset-assert 28) + (node uint16 :offset-assert 32) + (edge-ry int16 :offset-assert 34) + (last-world-pos vector :inline :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ;; field key uses ~A with a signed load. + ) +|# + +;; engine-minimap is already defined! + +#| +(deftype minimap-draw-work (structure) + ((buf dma-buffer :offset-assert 0) ;; guessed by decompiler + (global-flags uint32 :offset-assert 4) + (draw-pos vector4w :inline :offset-assert 16) + (mat matrix :inline :offset-assert 32) + (corner vector 4 :offset-assert 96) ;; guessed by decompiler + (vec vector :inline :offset-assert 160) + (pos vector :inline :offset-assert 176) + (mid-val float :offset-assert 192) + ) + :method-count-assert 9 + :size-assert #xc4 + :flag-assert #x9000000c4 + ) +|# + +#| +(deftype minimap (structure) + ((draw-tmpl dma-gif-packet :inline :offset-assert 0) + (sprite-tmpl dma-gif-packet :inline :offset-assert 32) + (sprite2-tmpl dma-gif-packet :inline :offset-assert 64) + (adgif-tmpl dma-gif-packet :inline :offset-assert 96) + (color vector4w :inline :offset-assert 128) + (tex-coords bounding-box2 :inline :offset-assert 144) + (race-corner vector :inline :offset-assert 160) + (mat matrix :inline :offset-assert 176) + (tex-offset vector2 :inline :offset-assert 240) + (race-tex texture :offset-assert 248) ;; guessed by decompiler + (race-scale float :offset-assert 252) + (meters-per-texel float :offset-assert 256) + (icon-inv-scale float :offset-assert 260) + (fade float :offset-assert 264) + (goal-time float :offset-assert 268) + (engine engine-minimap :offset-assert 272) ;; guessed by decompiler + (engine-key uint32 :offset-assert 276) + ) + :method-count-assert 16 + :size-assert #x118 + :flag-assert #x1000000118 + (:methods + (minimap-method-9 () none) ;; 9 ;; (debug-draw (_type_) none) + (minimap-method-10 () none) ;; 10 ;; (get-trail-for-connection (_type_ connection-minimap symbol) minimap-trail) + (minimap-method-11 () none) ;; 11 ;; (get-icon-draw-pos (_type_ connection-minimap minimap-trail vector float vector) symbol) + (minimap-method-12 () none) ;; 12 ;; (add-icon! (_type_ process uint int vector int) connection-minimap) + (minimap-method-13 () none) ;; 13 ;; (free-trail-by-connection (_type_ connection-minimap) none) + (minimap-method-14 () none) ;; 14 ;; (update-trails (_type_) none) + (minimap-method-15 () none) ;; 15 ;; (draw-1 (_type_ dma-buffer vector4w symbol) none) + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; main-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-type debug-menu-context basic) + +;; +++main-h:collide-spec +(defenum collide-spec + :bitfield #t + :type uint32 + (backgnd 0) + (jak 1) + (bot 2) + (crate 3) + (civilian 4) + (enemy 5) + (obstacle 6) + (vehicle-sphere 7) + (vehicle-debris 8) + (hit-by-player-list 9) + (hit-by-others-list 10) + (player-list 11) + (water 12) + (collectable 13) + (blocking-plane 14) + (projectile 15) + (jak-vulnerable 16) + (camera-blocker 17) + (los-blocker 18) + (nav-mesh 19) + (pusher 20) + (bot-targetable 21) + (special-obstacle 22) + (coliseum-ball 23) + (obstacle-for-jak 24) + (impenetrable-obj 25) + (shield 26) + (vehicle-sphere-no-probe 27) + ) +;; ---main-h:collide-spec + +;; +++main-h:strip-lines-controls +(defenum strip-lines-controls + :type int64 + ) +;; ---main-h:strip-lines-controls + +;; +++main-h:scene-controls +(defenum scene-controls + :type int64 + :bitfield #t + ) +;; ---main-h:scene-controls + +;; +++main-h:bot-marks-controls +(defenum bot-marks-controls + :type int64 + ) +;; ---main-h:bot-marks-controls + +;; +++main-h:race-marks-controls +(defenum race-marks-controls + :type int64 + ) +;; ---main-h:race-marks-controls + +;; +++main-h:race-selection +(defenum race-selection + :type int64 + (rs1 1) + (rs2 2) + (rs3 3) + (rs4 4) + (rs5 5) + (rs6 6) + ) +;; ---main-h:race-selection + +;; +++main-h:subdivide-setting +(defenum subdivide-setting + :type int64 + ) +;; ---main-h:subdivide-setting + +(deftype frame-stats (structure) + ((field-time time-frame 2 :offset-assert 0) ;; guessed by decompiler + (field int32 :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) + +(deftype screen-filter (basic) + ((draw? symbol :offset-assert 4) ;; guessed by decompiler + (bucket int32 :offset-assert 8) ;; bucket-id + (depth int32 :offset-assert 12) + (ztest uint64 :offset-assert 16) + (color vector :inline :offset-assert 32) + (color-src vector :inline :offset-assert 48) + (color-dest vector :inline :offset-assert 64) + (extra vector :inline :offset-assert 80) + (speed float :offset-assert 80 :overlay-at (-> extra x)) + (current-interp float :offset-assert 84 :overlay-at (-> extra y)) + (lock-vsync? symbol :offset-assert 96) ;; guessed by decompiler + (idx int32 :offset-assert 100) + (frames int32 :offset-assert 104) + ) + :method-count-assert 12 + :size-assert #x6c + :flag-assert #xc0000006c + (:methods + (draw "Add DMA data to our bucket to draw the filter." (_type_) none) ;; 9 + (screen-filter-method-10 () none) ;; 10 ;; (setup (_type_ vector vector float bucket-id int int symbol) none) + (disable (_type_) none) ;; 11 + ) + ) + +(deftype col-rend (basic) + ((draw? symbol :offset-assert 4) ;; guessed by decompiler + (outline? symbol :offset-assert 8) ;; guessed by decompiler + (show-back-faces? symbol :offset-assert 12) ;; guessed by decompiler + (show-normals? symbol :offset-assert 16) ;; guessed by decompiler + (ghost-hidden? symbol :offset-assert 20) ;; guessed by decompiler + (show-only uint32 :offset-assert 24) + (show-only-mask uint32 :offset-assert 28) + (cspec collide-spec :offset-assert 32) ;; guessed by decompiler + (track uint8 :offset-assert 36) + (bbox-radius float :offset-assert 40) + (bbox-center vector :inline :offset-assert 48) + (camera-to-bbox-dist float :offset-assert 64) + ) + :method-count-assert 10 + :size-assert #x44 + :flag-assert #xa00000044 + (:methods + (draw (_type_) none) ;; 9 + ) + ) + +(define-extern *stats-poly* symbol) +(define-extern *stats-memory* symbol) +(define-extern *stats-memory-short* symbol) +(define-extern *stats-memory-level-index* int) +(define-extern *stats-collide* symbol) +(define-extern *stats-bsp* symbol) +(define-extern *stats-buffer* symbol) +(define-extern *stats-target* symbol) +(define-extern *stats-profile-bars* symbol) +(define-extern *stats-perf* symbol) +(define-extern *stats-sound* symbol) +(define-extern *artist-all-visible* symbol) +(define-extern *artist-flip-visible* symbol) +(define-extern *artist-fix-visible* symbol) +(define-extern *artist-fix-frustum* symbol) +(define-extern *artist-error-spheres* symbol) +(define-extern *artist-use-menu-subdiv* symbol) +(define-extern *display-profile* symbol) +(define-extern *display-sidekick-stats* symbol) +(define-extern *display-quad-stats* symbol) +(define-extern *display-tri-stats* symbol) +(define-extern *display-ground-stats* symbol) +(define-extern *display-collision-marks* symbol) +(define-extern *display-collide-cache* symbol) +(define-extern *display-render-collision* symbol) +(define-extern *display-hipri-collision-marks* symbol) +(define-extern *display-edge-collision-marks* symbol) +(define-extern *display-geo-marks* symbol) +(define-extern *display-target-marks* symbol) +(define-extern *target-rc-board-controls* symbol) +(define-extern *display-collide-history* int) +(define-extern *amy-cam* symbol) +(define-extern *display-xyz-axes* symbol) +(define-extern *display-cam-collide-history* symbol) +(define-extern *record-cam-collide-history* symbol) +(define-extern *display-cam-master-marks* symbol) +(define-extern *display-cam-other* symbol) +(define-extern *display-camera-marks* symbol) +(define-extern *camera-no-mip-correction* symbol) +(define-extern *camera-turbo-free* symbol) +(define-extern *suppress-vehicle-respawn* symbol) +(define-extern *display-cam-los-info* symbol) +(define-extern *display-cam-los-debug* symbol) +(define-extern *display-cam-los-marks* symbol) +(define-extern *display-cam-coll-marks* symbol) +(define-extern *display-camera-info* symbol) +(define-extern *display-camera-old-stats* symbol) +(define-extern *display-camera-last-attacker* symbol) +(define-extern *display-file-info* symbol) +(define-extern *display-actor-marks* symbol) +(define-extern *display-sprite-info* symbol) +(define-extern *display-sprite-marks* symbol) +(define-extern *display-sprite-spheres* symbol) +(define-extern *display-bsp-errors* symbol) +(define-extern *display-entity-errors* symbol) +(define-extern *display-capture-mode* symbol) +(define-extern *display-instance-info* symbol) +(define-extern *display-deci-count* symbol) +(define-extern *sync-dma* symbol) +(define-extern *display-strip-lines* strip-lines-controls) +(define-extern *display-battle-marks* symbol) +(define-extern *display-joint-axes* symbol) +(define-extern *display-nav-marks* symbol) +(define-extern *display-nav-network* symbol) +(define-extern *display-path-marks* symbol) +(define-extern *display-vol-marks* symbol) +(define-extern *display-water-marks* symbol) +(define-extern *display-nav-mesh* symbol) +(define-extern *display-race-mesh* symbol) +(define-extern *display-ai-tuning* symbol) +(define-extern *display-actor-pointer* symbol) +(define-extern *display-actor-vis* symbol) +(define-extern *display-actor-graph* symbol) +(define-extern *display-traffic-height-map* symbol) +(define-extern *display-trail-graph* symbol) +(define-extern *display-color-bars* symbol) +(define-extern *display-bug-report* symbol) +(define-extern *display-level-border* symbol) +(define-extern *display-memcard-info* symbol) +(define-extern *display-split-boxes* symbol) +(define-extern *display-split-box-info* symbol) +(define-extern *display-texture-distances* symbol) +(define-extern *display-texture-download* symbol) +(define-extern *display-art-control* symbol) +(define-extern *display-gui-control* symbol) +(define-extern *display-level-spheres* symbol) +(define-extern *time-of-day-fast* symbol) +(define-extern *display-iop-info* symbol) +(define-extern *slow-frame-rate* symbol) +(define-extern *display-region-marks* symbol) +(define-extern *execute-regions* symbol) +(define-extern *disable-bot* symbol) +(define-extern *debug-reverb* symbol) +(define-extern *debug-whoosh* symbol) +(define-extern *debug-engine-sounds* symbol) +(define-extern *debug-pause* symbol) +(define-extern *debug-view-anims* symbol) +(define-extern *debug-unkillable* symbol) +(define-extern *debug-player-vehicle-unkillable* symbol) +(define-extern *debug-actor* process) +(define-extern *debug-force-highspeed* symbol) +(define-extern *gun-marks* symbol) +(define-extern *debug-split-screen* symbol) +(define-extern *ignore-want-load-display* symbol) +(define-extern *bug-report-output-mode* symbol) +(define-extern *draw-debug-boxes* symbol) +(define-extern *hide-menus* symbol) +(define-extern *list-all-scenes* object) ;; TODO +(define-extern *display-scene-control* scene-controls) +(define-extern *display-bot-marks* bot-marks-controls) +(define-extern *display-race-marks* race-marks-controls) +(define-extern *race-record-path* symbol) +(define-extern *select-race* race-selection) +(define-extern *select-race-path* int) +(define-extern *bot-record-path* int) +(define-extern *subdivide-draw-mode* subdivide-setting) +(define-extern *subdivide-scissor-draw-mode* subdivide-setting) +(define-extern *subdivide-foreground-draw-mode* subdivide-setting) +(define-extern *subdivide-ocean-draw-mode* subdivide-setting) +(define-extern *dproc* process) +(define-extern *run* symbol) +(define-extern *teleport* symbol) +(define-extern *teleport-count* int) +(define-extern *draw-hook* (function none)) +(define-extern *debug-hook* pair) +(define-extern *menu-hook* (function debug-menu-context)) +(define-extern *progress-hook* (function none)) +(define-extern *dma-timeout-hook* (function none)) +(define-extern *frame-stats* frame-stats) +(define-extern *col-rend* col-rend) +(define-extern debug-actor? (function object symbol)) +(define-extern *record-fma* object) ;; TODO +(define-extern *record-fma-use-path* object) ;; TODO +(define-extern *record-fma-path-mode* object) ;; TODO +(define-extern *record-fma-path-high-res* object) ;; TODO +(define-extern *record-fma-path-dry-run* object) ;; TODO +(define-extern *record-fma-real* object) ;; TODO +(define-extern *record-fma-low-res* object) ;; TODO +(define-extern *record-fma-start* object) ;; TODO +(define-extern *record-fma-end* object) ;; TODO +(define-extern *record-fma-pal* object) ;; TODO +(define-extern *profile-slot* object) ;; TODO +(define-extern *game-mode* symbol) +(define-extern *lobby-local-players* object) ;; TODO +(define-extern *first-boot* symbol) +(define-extern *cheat-temp* (pointer int32)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; traffic-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype vehicle-spawn-params (structure) + ((behavior uint64 :offset-assert 0) + (nav-mesh basic :offset-assert 8) + (position vector :inline :offset-assert 16) + (rotation quaternion :inline :offset-assert 32) + (velocity vector :inline :offset-assert 48) + (handle uint64 :offset-assert 64) + (handle-parent uint64 :offset-assert 72) + (user-data uint32 :offset-assert 80) + (entity basic :offset-assert 84) + (flags uint32 :offset-assert 88) + (player-id int8 :offset-assert 92) + (level-slot int8 :offset-assert 93) + (driver-type uint8 :offset-assert 94) + (driver-slot int8 :offset-assert 95) + (impact-callback basic :offset-assert 96) + (proc basic :offset-assert 100) + ) + :method-count-assert 9 + :size-assert #x68 + :flag-assert #x900000068 + ) +|# + +;; (define-extern *vehicle-manager* object) ;; vehicle-manager +;; (define-extern vehicle-type->string function) +;; (define-extern driver-type->string function) +;; (define-extern type-from-driver-type function) +;; (define-extern level-from-driver-type function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; game-task-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; +++game-task-h:game-task +(defenum game-task + :type uint8 + :bitfield #f + (none 0) + (complete 1) + (dummy0 2) + (eco-blue-button 3) + (eco-yellow-button 4) + (eco-red-button 5) + (city-start 6) + (kras-training 7) + (spargus-race 8) + (docks-deathrace 9) + (kcross-deathmatch 10) + (spargus-timebox 11) + (dromdoc-race 12) + (cliffs-artifact 13) + (drome-race 14) + (ice-deathrace 15) + (peak-football 16) + (ice-race 17) + (jungle-timebox 18) + (snow-deathrace 19) + (temple-race 20) + (kcross-hunt 21) + (icepass-rushhour 22) + (kras-race 23) + (spargus-deathrace 24) + (docks-football 25) + (coliseum-deathmatch 26) + (sewer-race 27) + (canspar-race 28) + (kras-football 29) + (atoll-artifact 30) + (dockkra-timebox 31) + (snow-race 32) + (jungle-race 33) + (drome-deathrace 34) + (cliffs-hunt 35) + (desarena-deathmatch 36) + (canyon-rushhour 37) + (havjung-race 38) + (kras-deathrace 39) + (spartem-race 40) + (jungle-deathrace 41) + (iceberg-race 42) + (desisle-deathmatch 43) + (haven-race 44) + (canyon-timebox 45) + (kcross-artifact 46) + (kratour-race 47) + (havtour-race 48) + (dockkra-deathrace 49) + (ice-timebox 50) + (canyon-race 51) + (desarena-artifact 52) + (canspar-rushhour 53) + (dromdoc-football 54) + (cliffs-deathmatch 55) + (spatour-race 56) + (kras-timebox 57) + (kcross-ctf 58) + (docks-race 59) + (spartem-deathrace 60) + (peak-timebox 61) + (snobowl-deathmatch 62) + (drome-rushhour 63) + (icepass-race 64) + (spargus-football 65) + (havsew-timebox 66) + (dromdoc-deathrace 67) + (peak-race 68) + (temple-deathrace 69) + (dromdoc-rushhour 70) + (havsew-race 71) + (coliseum-artifact 72) + (canyon-deathrace 73) + (sewer-timebox 74) + (cliffs-ctf 75) + (kras-rushhour 76) + (atoll-deathmatch 77) + (spargus-rushhour 78) + (drome-football 79) + (icetour-race 80) + (havsew-deathrace 81) + (snobowl-artifact 82) + (canspar-timebox 83) + (temple-football 84) + (desisle-ctf 85) + (peak-deathrace 86) + (dockkra-race 87) + (coliseum-assassin 88) + (kcross-assassin 89) + (atoll-assassin 90) + (cliffs-assassin 91) + (desarena-assassin 92) + (desisle-assassin 93) + (snobowl-assassin 94) + (snow-rushhour 95) + (icepass-deathrace 96) + (jungle-rushhour 97) + (snow-football 98) + (docks-timebox 99) + (desarena-ctf 100) + (dockkra-football 101) + (drome-timebox 102) + (temple-timebox 103) + (sewer-rushhour 104) + (spartem-football 105) + (snow-timebox 106) + (icepass-football 107) + (snobowl-ctf 108) + (dromdoc-timebox 109) + (canspar-football 110) + (havsew-rushhour 111) + (ice-football 112) + (coliseum-ctf 113) + (atoll-hunt 114) + (havjng-football 115) + (haven-deathrace 116) + (iceberg-football 117) + (havjung-rushhour 118) + (sewer-football 119) + (desisle-hunt 120) + (jungle-football 121) + (haven-football 122) + (havjung-timebox 123) + (docks-rushhour 124) + (haven-timebox 125) + (kras-timetrial 126) + (docks-timetrial 127) + (drome-timetrial 128) + (dockkra-timetrial 129) + (dromdoc-timetrial 130) + (kratour-timetrial 131) + (jungle-timetrial 132) + (haven-timetrial 133) + (sewer-timetrial 134) + (havjung-timetrial 135) + (havsew-timetrial 136) + (havtour-timetrial 137) + (spargus-timetrial 138) + (canyon-timetrial 139) + (temple-timetrial 140) + (canspar-timetrial 141) + (spartem-timetrial 142) + (spatour-timetrial 143) + (snow-timetrial 144) + (peak-timetrial 145) + (ice-timetrial 146) + (iceberg-timetrial 147) + (icepass-timetrial 148) + (icetour-timetrial 149) + (sewer-deathrace 150) + (desarena-king-of-hill 151) + (ice-training 152) + (cliffs-training 153) + (snow-training2 154) + (jungle-training 155) + (coliseum-king-of-hill 156) + (snowbowl-king-of-hill 157) + (cliffs-king-of-hill 158) + (havjung-deathrace 159) + (haven-rushhour 160) + (kcross-king-of-hill 161) + (havsew-football 162) + (dockkra-rushhour 163) + (canyon-football 164) + (canspar-deathrace 165) + (spartem-timebox 166) + (spartem-rushhour 167) + (temple-rushhour 168) + (icepass-timebox 169) + (iceberg-timebox 170) + (ice-rushhour 171) + (iceberg-deathrace 172) + (iceberg-rushhour 173) + (peak-rushhour 174) + (atoll-ctf 175) + (desisle-artifact 176) + (kratour-boss-battle 177) + (brdroom-intro-b 178) + (city-win 179) + (artist-artist 180) + (max 181) + ) +;; ---game-task-h:game-task + +;; +++game-task-h:game-task-node +(defenum game-task-node + :type uint16 + (none 0) + (city-start-start 1) + (city-start-introduction 2) + (city-start-resolution 3) + (kras-training-task 4) + (spargus-race-task 5) + (docks-deathrace-task 6) + (kcross-deathmatch-task 7) + (spargus-timebox-task 8) + (dromdoc-race-task 9) + (cliffs-artifact-task 10) + (drome-race-task 11) + (ice-deathrace-task 12) + (peak-football-task 13) + (ice-race-task 14) + (jungle-timebox-task 15) + (snow-deathrace-task 16) + (temple-race-task 17) + (kcross-hunt-task 18) + (icepass-rushhour-task 19) + (kras-race-task 20) + (spargus-deathrace-task 21) + (docks-football-task 22) + (coliseum-deathmatch-task 23) + (sewer-race-task 24) + (canspar-race-task 25) + (kras-football-task 26) + (atoll-artifact-task 27) + (dockkra-timebox-task 28) + (snow-race-task 29) + (jungle-race-task 30) + (drome-deathrace-task 31) + (cliffs-hunt-task 32) + (desarena-deathmatch-task 33) + (canyon-rushhour-task 34) + (havjung-race-task 35) + (kras-deathrace-task 36) + (spartem-race-task 37) + (jungle-deathrace-task 38) + (iceberg-race-task 39) + (desisle-deathmatch-task 40) + (haven-race-task 41) + (canyon-timebox-task 42) + (kcross-artifact-task 43) + (kratour-race-task 44) + (havtour-race-task 45) + (dockkra-deathrace-task 46) + (ice-timebox-task 47) + (canyon-race-task 48) + (desarena-artifact-task 49) + (canspar-rushhour-task 50) + (dromdoc-football-task 51) + (cliffs-deathmatch-task 52) + (spatour-race-task 53) + (kras-timebox-task 54) + (kcross-ctf-task 55) + (docks-race-task 56) + (spartem-deathrace-task 57) + (peak-timebox-task 58) + (snobowl-deathmatch-task 59) + (drome-rushhour-task 60) + (icepass-race-task 61) + (spargus-football-task 62) + (havsew-timebox-task 63) + (dromdoc-deathrace-task 64) + (peak-race-task 65) + (temple-deathrace-task 66) + (dromdoc-rushhour-task 67) + (havsew-race-task 68) + (coliseum-artifact-task 69) + (canyon-deathrace-task 70) + (sewer-timebox-task 71) + (cliffs-ctf-task 72) + (kras-rushhour-task 73) + (atoll-deathmatch-task 74) + (spargus-rushhour-task 75) + (drome-football-task 76) + (icetour-race-task 77) + (havsew-deathrace-task 78) + (snobowl-artifact-task 79) + (canspar-timebox-task 80) + (temple-football-task 81) + (desisle-ctf-task 82) + (peak-deathrace-task 83) + (dockkra-race-task 84) + (coliseum-assassin-task 85) + (kcross-assassin-task 86) + (atoll-assassin-task 87) + (cliffs-assassin-task 88) + (desarena-assassin-task 89) + (desisle-assassin-task 90) + (snobowl-assassin-task 91) + (snow-rushhour-task 92) + (icepass-deathrace-task 93) + (jungle-rushhour-task 94) + (snow-football-task 95) + (docks-timebox-task 96) + (desarena-ctf-task 97) + (dockkra-football-task 98) + (drome-timebox-task 99) + (temple-timebox-task 100) + (sewer-rushhour-task 101) + (spartem-football-task 102) + (snow-timebox-task 103) + (icepass-football-task 104) + (snobowl-ctf-task 105) + (dromdoc-timebox-task 106) + (canspar-football-task 107) + (havsew-rushhour-task 108) + (ice-football-task 109) + (coliseum-ctf-task 110) + (atoll-hunt-task 111) + (havjung-football-task 112) + (haven-deathrace-task 113) + (iceberg-football-task 114) + (havjung-rushhour-task 115) + (sewer-football-task 116) + (desisle-hunt-task 117) + (jungle-football-task 118) + (haven-football-task 119) + (havjung-timebox-task 120) + (docks-rushhour-task 121) + (haven-timebox-task 122) + (kras-timetrial-task 123) + (docks-timetrial-task 124) + (drome-timetrial-task 125) + (dockkra-timetrial-task 126) + (dromdoc-timetrial-task 127) + (kratour-timetrial-task 128) + (jungle-timetrial-task 129) + (haven-timetrial-task 130) + (sewer-timetrial-task 131) + (havjung-timetrial-task 132) + (havsew-timetrial-task 133) + (havtour-timetrial-task 134) + (spargus-timetrial-task 135) + (canyon-timetrial-task 136) + (temple-timetrial-task 137) + (canspar-timetrial-task 138) + (spartem-timetrial-task 139) + (spatour-timetrial-task 140) + (snow-timetrial-task 141) + (peak-timetrial-task 142) + (ice-timetrial-task 143) + (iceberg-timetrial-task 144) + (icepass-timetrial-task 145) + (icetour-timetrial-task 146) + (sewer-deathrace-task 147) + (desarena-king-of-hill-task 148) + (ice-training-task 149) + (cliffs-training-task 150) + (snow-training2-task 151) + (jungle-training-task 152) + (coliseum-king-of-hill-task 153) + (snobowl-king-of-hill-task 154) + (cliffs-king-of-hill-task 155) + (havjung-deathrace-task 156) + (haven-rushhour-task 157) + (kcross-king-of-hill-task 158) + (havsew-football-task 159) + (dockkra-rushhour-task 160) + (canyon-football-task 161) + (canspar-deathrace-task 162) + (spartem-timebox-task 163) + (spartem-rushhour-task 164) + (temple-rushhour-task 165) + (icepass-timebox-task 166) + (iceberg-timebox-task 167) + (ice-rushhour-task 168) + (iceberg-deathrace-task 169) + (iceberg-rushhour-task 170) + (peak-rushhour-task 171) + (atoll-ctf-task 172) + (desisle-artifact-task 173) + (kratour-boss-battle-task 174) + (brdroom-intro-b-task 175) + (city-win-task 176) + (artist-artist-task 177) + ) +;; ---game-task-h:game-task-node + +;; +++game-task-h:game-task-action +(defenum game-task-action + :bitfield #f + :type uint8 + (hide 0) + (idle 1) + (say 2) + (talk 3) + (show 4) + (trade 5) + (play 6) + (menu 7) + ) +;; ---game-task-h:game-task-action + +;; +++game-task-h:game-task-actor +(defenum game-task-actor + :type uint8 + (none 0) + (minimap 1) + (oracle-oracle 2) + (daxter 3) + (damus-arena 4) + (damus-waspal 5) + (damus-desert 6) + (damus-wasdoors 7) + (damus-wascity 8) + (damus-ruins 9) + (kleever-arena 10) + (kleever-wasdoors 11) + (kleever-pen 12) + (seem-wascity 13) + (seem-temple 14) + (ashelin-oasis 15) + (ashelin-talkbox 16) + (ashelin-freehq 17) + (veger-cave 18) + (veger-ruins 19) + (torn-hiphog 20) + (torn-hiptable 21) + (torn-hipbar 22) + (torn-hipbooth 23) + (torn-freehq 24) + (tess-gungame 25) + (samos-talkbox 26) + (sig-talkbox 27) + (sig-wasdoors 28) + (sig-nest 29) + (pecker-onintent 30) + (onin-onintent 31) + (onin-talkbox 32) + (keira-garage 33) + (was-pre-game-wascityb 34) + (kleever-wascityb 35) + (seem-wascitya 36) + (gun-gungame 37) + (vin-vinroom 38) + (power-game-vinroom 39) + (jinx-hiphog 40) + (samos-genb 41) + (wascity-turret 42) + (monk-wascity 43) + (seem-leaper 44) + (wascity-leaper 45) + (was-pre-game-deserte 46) + (samos-freehq 47) + (onin-freehq 48) + (keira-freehq 49) + (keira-genb 50) + (monk-mummy 51) + (pecker 52) + (samos-onintent 53) + (unused-slot-8 54) + (unused-slot-9 55) + (unused-slot-10 56) + (unused-slot-11 57) + (unused-slot-12 58) + (unused-slot-13 59) + (unused-slot-14 60) + (unused-slot-15 61) + (unused-slot-16 62) + (unused-slot-17 63) + (unused-slot-18 64) + (unused-slot-19 65) + (unused-slot-20 66) + (unused-slot-21 67) + (unused-slot-22 68) + (unused-slot-23 69) + (unused-slot-24 70) + (unused-slot-25 71) + (unused-slot-26 72) + (unused-slot-27 73) + (unused-slot-28 74) + (unused-slot-29 75) + (unused-slot-30 76) + (unused-slot-31 77) + ) +;; ---game-task-h-game-task-actor + +;; +++game-task-h:game-task-node-command +(defenum game-task-node-command + :type uint8 + (none 0) + (add-sidekick 1) + (sub-sidekick 2) + (add-board 3) + (sub-board 4) + (add-gun-red-1 5) + (add-gun-red-2 6) + (add-gun-red-3 7) + (add-gun-red-ammo-1 8) + (add-gun-red-ammo-2 9) + (add-gun-yellow-1 10) + (add-gun-yellow-2 11) + (add-gun-yellow-3 12) + (add-gun-yellow-ammo-1 13) + (add-gun-yellow-ammo-2 14) + (add-gun-blue-1 15) + (add-gun-blue-2 16) + (add-gun-blue-3 17) + (add-gun-blue-ammo-1 18) + (add-gun-blue-ammo-2 19) + (add-gun-dark-1 20) + (add-gun-dark-2 21) + (add-gun-dark-3 22) + (add-gun-dark-ammo-1 23) + (add-gun-dark-ammo-2 24) + (add-pass-front-gate 25) + (add-pass-port-mh 26) + (add-pass-port-inda 27) + (add-pass-inda-indb 28) + (add-pass-indb-sluma 29) + (add-pass-slumb-genb 30) + (add-darkeco 31) + (add-darkjak 32) + (add-darkjak-smack 33) + (add-darkjak-bomb0 34) + (add-darkjak-bomb1 35) + (add-darkjak-tracking 36) + (add-darkjak-invinc 37) + (add-lighteco 38) + (add-lightjak 39) + (add-lightjak-regen 40) + (add-lightjak-freeze 41) + (add-lightjak-shield 42) + (add-lightjak-swoop 43) + (add-board-training 44) + (add-board-launch 45) + (add-board-trail 46) + (add-board-zap 47) + (sub-board-trail 48) + (add-artifact-invis 49) + (add-armor-0 50) + (add-armor-1 51) + (add-armor-2 52) + (add-armor-3 53) + (add-amulet-1 54) + (add-amulet-2 55) + (add-amulet-3 56) + (add-light-eco-crystal 57) + (add-dark-eco-crystal 58) + (add-seal 59) + (add-cypher-gliph 60) + (add-star-map 61) + (add-vehicle-toad 62) + (add-vehicle-snake 63) + (add-vehicle-scorpion 64) + (add-vehicle-turtle 65) + (add-vehicle-rhino 66) + (add-av-cube 67) + (add-av-reflector 68) + (add-av-prism 69) + (add-av-generator 70) + (add-av-map 71) + (add-jakc 72) + ) +;; ---game-task-h:game-task-node-command + +;; +++game-task-h:game-task-node-flag +(defenum game-task-node-flag + :type uint32 ;; guess + :bitfield #t + (closed 0) + (data 1) + (close-task 2) + (unlocked 3) + (abs-task-mask 4) + (set-task-mask 5) + (clear-task-mask 6) + (cup1 7) + (cup2 8) + (cup3 9) + (cup4 10) + (intro-b 11) + (icelands 12) + (haven-city 13) + (kras-city 14) + (spargus 15) + (qualifier 16) + (grand-prix 17) + (boss-battle 18) + (score-lower-is-better 19) + ) +;; ---game-task-h:game-task-node-flag + +;; +++game-task-h:game-task-icon +(defenum game-task-icon + :type uint8 + (gaticon-00) + (gaticon-01) + (gaticon-02) + (gaticon-03) + (gaticon-04) + (gaticon-05) + (gaticon-06) + (gaticon-07) + (gaticon-08) + (gaticon-09) + (gaticon-10) + (gaticon-11) + (gaticon-12) + (gaticon-13) + (gaticon-14) + (gaticon-15) + (gaticon-16) + (gaticon-17) + (gaticon-18) + (gaticon-19) + (gaticon-20) + (gaticon-21) + (gaticon-22) + (gaticon-23) + (gaticon-24) + (gaticon-25) + (gaticon-26) + (gaticon-27) + (gaticon-28) + (gaticon-29) + (gaticon-30) + (gaticon-31) + (gaticon-32) + (gaticon-33) + (gaticon-34) + (gaticon-35) + (gaticon-36) + (gaticon-37) + (gaticon-38) + (gaticon-39) + (gaticon-40) + (gaticon-41) + (gaticon-42) + (gaticon-43) + (gaticon-44) + (gaticon-45) + (gaticon-46) + (gaticon-47) + (gaticon-48) + (gaticon-49) + (gaticon-50) + (gaticon-51) + (gaticon-52) + (gaticon-53) + (gaticon-54) + (gaticon-55) + (gaticon-56) + (gaticon-57) + (gaticon-58) + (gaticon-59) + (gaticon-60) + (gaticon-61) + (gaticon-62) + (gaticon-63) + (gaticon-64) + (gaticon-65) + (gaticon-66) + (gaticon-67) + (gaticon-68) + (gaticon-69) + (gaticon-70) + (gaticon-71) + (gaticon-72) + (gaticon-73) + (gaticon-74) + (gaticon-75) + (gaticon-76) + (gaticon-77) + (gaticon-78) + (gaticon-79) + (gaticon-80) + (gaticon-81) + (gaticon-82) + (gaticon-83) + (gaticon-84) + (gaticon-85) + (gaticon-86) + (gaticon-87) + (gaticon-88) + (gaticon-89) + (gaticon-90) + (gaticon-91) + (gaticon-92) + (gaticon-93) + (gaticon-94) + (gaticon-95) + (gaticon-96) + (gaticon-97) + (gaticon-98) + (gaticon-99) + (gaticon-100) + (gaticon-101) + (gaticon-102) + (gaticon-103) + (gaticon-104) + (gaticon-105) + (gaticon-106) + (gaticon-107) + (gaticon-108) + (gaticon-109) + (gaticon-110) + (gaticon-111) + (gaticon-112) + (gaticon-113) + (gaticon-114) + (gaticon-115) + (gaticon-116) + (gaticon-117) + (gaticon-118) + (gaticon-119) + (gaticon-120) + (gaticon-121) + (gaticon-122) + (gaticon-123) + (gaticon-124) + (gaticon-125) + (gaticon-126) + (gaticon-127) + (gaticon-128) + (gaticon-129) + (gaticon-130) + (gaticon-131) + (gaticon-132) + (gaticon-133) + (gaticon-134) + (gaticon-135) + (gaticon-136) + (gaticon-137) + (gaticon-138) + (gaticon-139) + (gaticon-140) + (gaticon-141) + (gaticon-142) + (gaticon-143) + (gaticon-144) + (gaticon-145) + (gaticon-146) + (gaticon-147) + (gaticon-148) + (gaticon-149) + (gaticon-150) + (gaticon-151) + (gaticon-152) + (gaticon-153) + (gaticon-154) + (gaticon-155) + (gaticon-156) + (gaticon-157) + (gaticon-158) + (gaticon-159) + (gaticon-160) + (gaticon-161) + (gaticon-162) + (gaticon-163) + (gaticon-164) + (gaticon-165) + (gaticon-166) + (gaticon-167) + (gaticon-168) + (gaticon-169) + (gaticon-170) + (gaticon-171) + (gaticon-172) + (gaticon-173) + (gaticon-174) + (gaticon-175) + (gaticon-176) + (gaticon-177) + (gaticon-178) + (gaticon-179) + (gaticon-180) + (gaticon-181) + (gaticon-182) + (gaticon-183) + (gaticon-184) + (gaticon-185) + (gaticon-186) + (gaticon-187) + (gaticon-188) + (gaticon-189) + (gaticon-190) + (gaticon-191) + (gaticon-192) + (gaticon-193) + (gaticon-194) + (gaticon-195) + (gaticon-196) + (gaticon-197) + (gaticon-198) + (gaticon-199) + ) +;; ---game-task-h:game-task-icon + +;; +++game-task-h:game-task-medal +(defenum game-task-medal + :type uint8 + (none 0) + (bronze 1) + (silver 2) + (gold 3) + ) +;; ---game-task-h:game-task-medal + +(deftype task-level-info (structure) + ((flags uint32 :offset-assert 0) + (text-id uint32 :offset-assert 4) + (venue-text-id uint32 :offset-assert 8) + (caps-text-id uint32 :offset-assert 12) + (tex-name string :offset-assert 16) + (race-mesh-name string :offset-assert 20) + (race-banner-name string :offset-assert 24) + (race-ai-tuning-name string :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(declare-type text-id uint32) + +(define-extern *net-play-mode-names* (array symbol)) +(define-extern *net-play-mode-text-ids* object) +(define-extern *net-play-mode-icon-string* (array string)) +(define-extern *task-level* (array symbol)) +(define-extern *task-level-info* (array task-level-info)) +(define-extern *driver-list-cup1* array) +(define-extern *driver-list-cup1-gp* array) +(define-extern *driver-list-cup1-temp* array) +(define-extern *driver-list-cup2* array) +(define-extern *driver-list-cup2-gp* array) +(define-extern *driver-list-cup3* array) +(define-extern *driver-list-cup3-capture* array) +(define-extern *driver-list-cup3-gp* array) +(define-extern *driver-list-cup4-capture* array) +(define-extern *driver-list-cup4-gp* array) +(define-extern *driver-list-boss* array) +(define-extern *driver-list-training* array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; task-control-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype game-task-event (basic) + ((actor game-task-actor :offset-assert 4) + (action game-task-action :offset-assert 5) + (tex game-task-icon :offset-assert 6) ;; added + (icon uint16 :offset 6 :score -100) + (flags uint8 :offset 7) + (skull-cost uint8 :offset 7) + (scene string :offset-assert 8) + (distance meters :offset-assert 12) + ) + :flag-assert #x900000010 + ) + +(deftype game-task-node-stats (structure) + ((death-count uint8 :offset-assert 0) + (vehicle uint8 :offset-assert 1) + (medal uint8 :offset-assert 2) + (ranking uint8 :offset-assert 3) + (score float :offset-assert 4) + (time float :offset-assert 8) + (duration float :offset-assert 12) + (order uint16 :offset-assert 16) + (end-mode uint16 :offset-assert 18) + (cash uint32 :offset-assert 20) + (tuning uint32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) + +(deftype game-task-advanced-options (structure) + ((data uint8 8 :offset-assert 0) + (weapons uint32 :offset 0) + (flags uint8 :offset 4) + (param1 uint8 :offset 5) + (param2 uint8 :offset 6) + (param3 uint8 :offset 7) + (lword uint64 :offset 0) + ) + :pack-me + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype game-task-node-info (basic) + ((level symbol :offset-assert 4) ;; guessed by decompiler + (task game-task :offset-assert 8) + (net-play-mode uint8 :offset 9) + (name string :offset 12) ;; guessed by decompiler + (max-humans int8 :offset-assert 16) + (max-cpu int8 :offset-assert 17) + (min-players int8 :offset-assert 18) + (when-open (array game-task-event) :offset-assert 20) ;; guessed by decompiler + (flags game-task-node-flag :offset-assert 24) + (task-mask task-mask :offset-assert 28) + (borrow pair :offset-assert 32) ;; guessed by decompiler + (close-time uint32 :offset-assert 36) + (description text-id :offset-assert 40) ;; guessed by decompiler + (intro-scene basic :offset-assert 44) + (outro-scene basic :offset-assert 48) + (time-of-day int32 :offset-assert 52) + (task-sound-description basic :offset-assert 56) + (ipu basic :offset-assert 60) + (gold-array float 2 :offset-assert 64) + (silver-array float 2 :offset-assert 72) + (bronze-array float 2 :offset-assert 80) + (gold float :offset 64) + (silver float :offset 72) + (bronze float :offset 80) + (gold-hero float :offset 68) + (silver-hero float :offset 76) + (bronze-hero float :offset 84) + (medals-data uint32 :offset-assert 88) + (medals uint8 4 :offset 88) + (unlocked uint8 :offset 90) + (game-score-index uint8 :offset 91) + (adv-score int16 :offset-assert 92) + (exb-score int16 :offset-assert 94) + (ai-tuning-indices basic :offset-assert 96) + (sound-bank basic :offset-assert 100) + (play-count uint32 :offset-assert 104) + (time-limit uint32 :offset-assert 108) + (ai-difficulty uint8 :offset-assert 112) + (ai-easier-after uint8 :offset-assert 113) + (ai-min-difficulty uint8 :offset-assert 114) + (ai-difficulty-step uint8 :offset-assert 115) + (default-advanced-options game-task-advanced-options :inline :offset-assert 120) + (user-advanced-options game-task-advanced-options :inline :offset-assert 128) + (default-advanced-options-adventure game-task-advanced-options :inline :offset-assert 136) + (adventure-drivers basic :offset-assert 144) + (race-start-speech basic :offset-assert 148) + (gp-start-speech basic :offset-assert 152) + (gp-win-speech basic :offset-assert 156) + (gp-finish-speech basic :offset-assert 160) + (high-scores-default (array float) :offset-assert 164) + (high-scores (array float) :offset-assert 168) + ) + :method-count-assert 14 + :size-assert #xac + :flag-assert #xe000000ac + (:methods + (game-task-node-info-method-9 () none) ;; 9 ;; (get-idx-in-task-list (_type_) int) + (game-task-node-info-method-10 () none) ;; 10 ;; (open! (_type_ symbol) int) + (game-task-node-info-method-11 () none) ;; 11 ;; (game-task-node-info-method-11 (_type_ symbol) none) + (game-task-node-info-method-12 () none) ;; 12 ;; (game-task-node-info-method-12 (_type_) symbol) + (game-task-node-info-method-13 () none) ;; 13 ;; (eval-game-task-cmd! (_type_) none) + ) + ) + +(deftype game-task-info (basic) + ((name string :offset-assert 4) ;; guessed by decompiler + (task-level uint8 :offset-assert 8) + (text-name text-id :offset-assert 12) ;; guessed by decompiler + (text-id-long uint32 :offset-assert 16) + (single-player basic :offset-assert 20) + (kiosk-play-node game-task-node :offset-assert 24) ;; game-task-node + (play-node game-task-node :offset-assert 26) ;; game-task-node + (play-continue string :offset-assert 28) ;; guessed by decompiler + (split-continue string :offset-assert 32) + (kiosk-play-continue object :offset-assert 36) ;; guessed by decompiler + (kiosk-online-play-continue string :offset-assert 40) + ) + :method-count-assert 10 + :size-assert #x2c + :flag-assert #xa0000002c + ;; field kiosk-play-continue uses ~A with a signed load. field kiosk-online-play-continue uses ~A with a signed load. + (:methods + (get-play-list-idx (_type_) int) ;; 9 + ) + ) + +(deftype game-task-control (basic) + ((counter uint32 :offset-assert 4) + (actor game-task-actor :offset-assert 8) + (current-node game-task-node :offset-assert 10) + (current-event game-task-event :offset-assert 12) + ) + :flag-assert #xa00000010 + (:methods + (new (symbol type game-task-actor) _type_) ;; 0 + (get-current-task-event (_type_) game-task-event) ;; 9 + ) + ) + +(deftype ambient-control (structure) + ((last-ambient-time time-frame :offset-assert 0) ;; time-frame + (last-ambient string :offset-assert 8) ;; guessed by decompiler + (last-ambient-id sound-id :offset-assert 12) ;; guessed by decompiler + ) + :method-count-assert 12 + :size-assert #x10 + :flag-assert #xc00000010 + (:methods + (ambient-control-method-9 () none) ;; 9 + (ambient-control-method-10 () none) ;; 10 + (ambient-control-method-11 () none) ;; 11 + ) + ) + +(deftype game-movie (structure) + ((name string :offset-assert 0) + (score uint16 :offset-assert 4) + (flags uint16 :offset-assert 6) + (cup uint32 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) + +(deftype grand-prix (structure) + ((name basic :offset-assert 0) + (score uint16 :offset-assert 4) + (flags uint16 :offset-assert 6) + (saved-data2 uint16 2 :offset-assert 8) + (saved-data uint32 :offset 8) + (trophy uint16 :offset 8) + (play-count uint16 :offset 10) + (drivers symbol :offset-assert 12) + (task uint16 3 :offset-assert 16) + (task1 uint16 :offset 16) + (task2 uint16 :offset 18) + (task3 uint16 :offset 20) + (cup uint32 :offset-assert 24) + (intro string :offset-assert 28) + (outro string :offset-assert 32) + (ai-tuning-indices1 pair :offset-assert 36) + (ai-tuning-indices2 pair :offset-assert 40) + (ai-tuning-indices3 pair :offset-assert 44) + (sound-description string :offset-assert 48) + (boss uint16 :offset-assert 52) + (boss-drivers symbol :offset-assert 56) + ) + :method-count-assert 9 + :size-assert #x3c + :flag-assert #x90000003c + ) + +(define-extern game-task->string (function game-task string)) +(define-extern c-string->game-task (function string game-task)) +(define-extern game-task-actor->string (function game-task-actor string)) +(define-extern game-task-action->string (function game-task-action string)) +(define-extern game-task-medal->string (function game-task-medal string)) +(define-extern game-task-node-flag->string (function game-task-node-flag string)) +(define-extern game-task-node-command->string (function game-task-node-command string)) + +(define-extern *traffic-engine* symbol) + +(define-extern *game-movie* (array game-movie)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; car-info-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype car-layer-textures (structure) + (;;(data UNKNOWN 6 :offset-assert 0) + (dest basic :offset-assert 0) + (base basic :offset-assert 4) + (stripe basic :offset-assert 8) + (detail basic :offset-assert 12) + (damage basic :offset-assert 16) + (wheel-dest basic :offset 0) + (wheel-base basic :offset 4) + (wheel-blur basic :offset 8) + (tread-dest basic :offset 12) + (tread-base basic :offset 16) + (tread-blur basic :offset-assert 20) + ) + :pack-me + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) + +(deftype car-textures (structure) + ((data car-layer-textures 14 :inline :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x150 + :flag-assert #x900000150 + ) + +(deftype car-rgb-color (vector4w) + ((red int32 :offset 0) + (green int32 :offset 4) + (blue int32 :offset 8) + (alpha int32 :offset 12) + ) + :method-count-assert 12 + :size-assert #x10 + :flag-assert #xc00000010 + (:methods + (car-rgb-color-method-9 () none) ;; 9 + (car-rgb-color-method-10 () none) ;; 10 + (car-rgb-color-method-11 () none) ;; 11 + ) + ) + +(deftype car-hsv-color (vector) + ((hue float :offset 0) + (saturation float :offset 4) + (value float :offset 8) + ) + :method-count-assert 10 + :size-assert #x10 + :flag-assert #xa00000010 + (:methods + (car-hsv-color-method-9 () none) ;; 9 + ) + ) + +(deftype car-part-info (structure) + ((short-name-id uint32 :offset-assert 0) + (name-id uint32 :offset-assert 4) + (task uint16 :offset-assert 8) + (flags uint8 :offset-assert 10) + (medal uint8 :offset-assert 11) + (part-id uint8 :offset-assert 12) + (pad uint8 :offset-assert 13) + ) + :method-count-assert 9 + :size-assert #xe + :flag-assert #x90000000e + ) + +(deftype tuning-info (uint32) + () + :flag-assert #x900000004 + ) + +(deftype upgrade-info (structure) + ((cost float :offset-assert 0) + (base uint8 :offset-assert 4) + (max uint8 :offset-assert 5) + (rookie uint8 :offset-assert 6) + (pro uint8 :offset-assert 7) + (cost-increment float :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) + +(deftype upgrade-info-array (structure) + ((data upgrade-info 4 :inline :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +(deftype car-upgrade-info-array (structure) + ((data upgrade-info-array 15 :inline :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x3c0 + :flag-assert #x9000003c0 + ) + +(deftype car-info (structure) + ((base-color car-rgb-color :inline :offset-assert 0) + (stripe-color car-rgb-color :inline :offset-assert 16) + (car-type int8 :offset-assert 32) + (current-parts uint8 11 :offset-assert 33) + (tuning uint32 :offset-assert 44) + (flags uint32 :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x34 + :flag-assert #x900000034 + ) + +(deftype car-info-save (structure) + ((car-type int8 :offset-assert 0) + (base-color uint32 :offset-assert 4) + (stripe-color uint32 :offset-assert 8) + (parts uint8 11 :offset-assert 12) + (tuning uint32 :offset-assert 24) + (flags uint32 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype car-info-full (car-info) + ((level basic :offset-assert 52) + (wheel-blur float :offset-assert 56) + (tread-texture basic :offset-assert 60) + (textures car-textures :offset-assert 64) + (first-tbp uint32 :offset-assert 68) + (last-tbp uint32 :offset-assert 72) + (damage uint8 14 :offset-assert 76) + (lights vu-lights :inline :offset-assert 96) + (shield-vu-lights vu-lights :inline :offset-assert 208) + (shield-light-group light-group :inline :offset-assert 320) + ) + :method-count-assert 22 + :size-assert #x200 + :flag-assert #x1600000200 + (:methods + (car-info-full-method-9 () none) ;; 9 + (car-info-full-method-10 () none) ;; 10 + (car-info-full-method-11 () none) ;; 11 + (car-info-full-method-12 () none) ;; 12 + (car-info-full-method-13 () none) ;; 13 + (car-info-full-method-14 () none) ;; 14 + (car-info-full-method-15 () none) ;; 15 + (car-info-full-method-16 () none) ;; 16 + (car-info-full-method-17 () none) ;; 17 + (car-info-full-method-18 () none) ;; 18 + (car-info-full-method-19 () none) ;; 19 + (car-info-full-method-20 () none) ;; 20 + (car-info-full-method-21 () none) ;; 21 + ) + ) + +(deftype car-info-array (structure) + ((data car-info 15 :inline :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x3c0 + :flag-assert #x9000003c0 + ) + +(deftype car-level-array (basic) + ((data car-info-full 6 :inline :offset-assert 16) + (textures car-textures 6 :inline :offset-assert 3088) + ) + :method-count-assert 10 + :size-assert #x13f0 + :flag-assert #xa000013f0 + (:methods + (car-level-array-method-9 () none) ;; 9 + ) + ) + +;; (define-extern *car-type-names* array) +;; (define-extern type-from-vehicle-type function) ;; (function vehicle-type type) +;; (define-extern level-name-from-vehicle-type function) +;; (define-extern car-type-from-vehicle-type function) +;; (define-extern vehicle-type-from-car-type function) +;; (define-extern car-type-from-level-name function) +;; (define-extern vehicle-type-from-level-name function) +;; (define-extern vehicle-type-from-name function) +;; (define-extern *car-part-names* array) +;; (define-extern *car-part-translate-array* array) +;; (define-extern *car-part-translate-names* array) +;; (define-extern *car-look-names* array) +;; (define-extern *car-layer-names* array) +;; (define-extern *car-string-name* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; car-tables ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *car-look-mask-array* array) +;; (define-extern *car-part-info-arrays* array) +;; (define-extern *car-level-array* car-level-array) +;; (define-extern *car-default-base-color* array) +;; (define-extern *car-default-stripe-color* array) +;; (define-extern *car-upgrade-info* object) +;; (define-extern *car-part-type-to-text-table* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; capture-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype gs-store-image-packet (structure) + ((vifcode vif-tag 4 :offset-assert 0) ;; guessed by decompiler + (giftag gif-tag :offset-assert 16) ;; gif-tag + (bitbltbuf gs-bitbltbuf :offset-assert 32) ;; gs-bitbltbuf + (bitbltbuf-addr gs-reg64 :offset-assert 40) ;; gs-reg64 + (trxpos gs-trxpos :offset-assert 48) ;; gs-trxpos + (trxpos-addr gs-reg64 :offset-assert 56) ;; gs-reg64 + (trxreg gs-trxreg :offset-assert 64) ;; gs-trxreg + (trxreg-addr gs-reg64 :offset-assert 72) ;; gs-reg64 + (finish uint64 :offset-assert 80) + (finish-addr gs-reg64 :offset-assert 88) ;; gs-reg64 + (trxdir gs-trxdir :offset-assert 96) ;; gs-trxdir + (trxdir-addr gs-reg64 :offset-assert 104) ;; gs-reg64 + ) + :method-count-assert 9 + :size-assert #x70 + :flag-assert #x900000070 + ) + +#| +(deftype screen-shot-work (structure) + ((count int16 :offset-assert 0) + (size int16 :offset-assert 2) + (name string :offset-assert 4) ;; guessed by decompiler + (highres-enable symbol :offset-assert 8) ;; guessed by decompiler + (highres-objects-enable basic :offset-assert 12) + (hud-enable symbol :offset-assert 16) ;; guessed by decompiler + (letterbox-enable basic :offset-assert 20) + (debug-enable basic :offset-assert 24) + (dir basic :offset-assert 28) + (dir-checked? basic :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) +|# + +;; (define-extern *screen-shot-work* object) ;; screen-shot-work +;; (define-extern *image-name* object) ;; string +;; (define-extern *capture-tga-buffer* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; math-camera-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype vis-gif-tag (structure) + ((fog0 uint32 :offset-assert 0) + (strip uint32 :offset-assert 4) + (regs uint32 :offset-assert 8) + (fan uint32 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype cull-info (structure) + ((x-fact float :offset-assert 0) + (y-fact float :offset-assert 4) + (z-fact float :offset-assert 8) + (cam-radius float :offset-assert 12) + (cam-x float :offset-assert 16) + (cam-y float :offset-assert 20) + (xz-dir-ax float :offset-assert 24) + (xz-dir-az float :offset-assert 28) + (xz-dir-bx float :offset-assert 32) + (xz-dir-bz float :offset-assert 36) + (xz-cross-ab float :offset-assert 40) + (yz-dir-ay float :offset-assert 44) + (yz-dir-az float :offset-assert 48) + (yz-dir-by float :offset-assert 52) + (yz-dir-bz float :offset-assert 56) + (yz-cross-ab float :offset-assert 60) + ) + :allow-misaligned + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +(deftype math-camera (basic) + ((d meters :offset-assert 4) + (f meters :offset-assert 8) + (fov degrees :offset-assert 12) ;; degrees + (x-ratio float :offset-assert 16) + (y-ratio float :offset-assert 20) + (x-pix float :offset-assert 24) + (x-clip float :offset-assert 28) + (x-clip-ratio-in float :offset-assert 32) + (x-clip-ratio-over float :offset-assert 36) + (y-pix float :offset-assert 40) + (y-clip float :offset-assert 44) + (y-clip-ratio-in float :offset-assert 48) + (y-clip-ratio-over float :offset-assert 52) + (cull-info cull-info :inline :offset-assert 56) + (fog-start meters :offset-assert 120) + (fog-end meters :offset-assert 124) + (fog-max float :offset-assert 128) + (fog-min float :offset-assert 132) + (reset int32 :offset-assert 136) + (smooth-step float :offset-assert 140) + (smooth-t float :offset-assert 144) + (perspective matrix :inline :offset-assert 160) + (isometric matrix :inline :offset-assert 224) + (sprite-2d matrix :inline :offset-assert 288) + (sprite-2d-hvdf vector :inline :offset-assert 352) + (camera-rot matrix :inline :offset-assert 368) + (inv-camera-rot matrix :inline :offset-assert 432) + (inv-camera-rot-smooth matrix :inline :offset-assert 496) + (inv-camera-rot-smooth-from quaternion :inline :offset-assert 560) + (camera-temp matrix :inline :offset-assert 576) + (prev-camera-temp matrix :inline :offset-assert 640) + (prev-inv-camera-rot matrix :inline :offset-assert 704) + (prev-trans vector :inline :offset-assert 768) + (hmge-scale vector :inline :offset-assert 784) + (inv-hmge-scale vector :inline :offset-assert 800) + (hvdf-off vector :inline :offset-assert 816) + (guard vector :inline :offset-assert 832) + (vis-gifs vis-gif-tag 4 :offset-assert 848) ;; guessed by decompiler + (giftex uint128 :offset 848) + (gifgr uint128 :offset 864) + (giftex-trans uint128 :offset 880) + (gifgr-trans uint128 :offset 896) + (pfog0 float :offset-assert 912) + (pfog1 float :offset-assert 916) + (trans vector :inline :offset-assert 928) + (plane plane 4 :inline :offset-assert 944) ;; guessed by decompiler + (guard-plane plane 4 :inline :offset-assert 1008) ;; guessed by decompiler + (shrub-mat matrix :inline :offset-assert 1072) + (quat-other quaternion :inline :offset-assert 1136) + (trans-other vector :inline :offset-assert 1152) + (shrub-mat-other matrix :inline :offset-assert 1168) + (camera-temp-other matrix :inline :offset-assert 1232) + (camera-rot-other matrix :inline :offset-assert 1296) + (camera-rot-other-sky matrix :inline :offset-assert 1360) + (camera-rot-other-sprite matrix :inline :offset-assert 1424) + (inv-camera-rot-other matrix :inline :offset-assert 1488) + (plane-other plane 4 :inline :offset-assert 1552) ;; guessed by decompiler + (guard-plane-other plane 4 :inline :offset-assert 1616) ;; guessed by decompiler + (mirror-trans vector :inline :offset-assert 1680) + (mirror-normal vector :inline :offset-assert 1696) + (fov-correction-factor float :offset-assert 1712) + ) + :method-count-assert 10 + :size-assert #x6b4 + :flag-assert #xa000006b4 + (:methods + (new (symbol type) _type_) ;; 0 + (math-camera-method-9 () none) ;; 9 + ) + ) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; viewport-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype viewport (structure) + ((fog-corner vector 4 :inline :offset-assert 0) + (min-fog-corner vector :inline :offset-assert 64) + (max-fog-corner vector :inline :offset-assert 80) + (prev-inv-camera-rot matrix :inline :offset-assert 96) + (motion-vector vector :inline :offset-assert 160) + (math-camera math-camera :offset-assert 176) + (index int32 :offset-assert 180) + (frame gs-frame :offset-assert 184) + (frame-a gs-frame :offset-assert 192) + (zbuf-on gs-zbuf :offset-assert 200) + (zbuf-off gs-zbuf :offset-assert 208) + (scissor gs-scissor :offset-assert 216) + (clamp gs-clamp :offset-assert 224) + (tex0 gs-tex0 :offset-assert 232) + (tex0-24 gs-tex0 :offset-assert 240) + (copy-frame gs-frame :offset-assert 248) + (copy-tex0 gs-tex0 :offset-assert 256) + (copy-dma dma-buffer :offset-assert 264) + (hflip-zbuf-dma dma-buffer :offset-assert 268) ;; dma-buffer? + (glow-frame-1 uint64 :offset-assert 272) ;; gs-frame ?? + (glow-tex0-1 uint64 :offset-assert 280) ;; gs-tex0 ?? + (glow-frame-2 uint64 :offset-assert 288) ;; gs-frame ?? + (glow-tex0-2 uint64 :offset-assert 296) ;; gs-tex0 ?? + (shadow-texoffset vector :inline :offset-assert 304) + (shadow-texscale vector :inline :offset-assert 320) + (shadow-invert-frame uint64 :offset-assert 336) ;; gs-frame ?? + (shadow-dma-frame uint64 :offset-assert 344) ;; gs-frame ?? + (shadow-dma-tex0 uint64 :offset-assert 352) ;; gs-tex0 ?? + (shadow-dma basic :offset-assert 360) ;; dma-buffer ?? + (warp-shader adgif-shader :inline :offset-assert 368) + (blur-forward-dma basic :offset-assert 448) ;; dma-buffer ?? + (blur-reverse-dma basic :offset-assert 452) ;; dma-buffer ?? + (blur-finish-dma basic :offset-assert 456) ;; dma-buffer ?? + (blur-sx int32 :offset-assert 460) + (blur-sy int32 :offset-assert 464) + (blur-hx int32 :offset-assert 468) + (blur-hy int32 :offset-assert 472) + (blur-cx int32 :offset-assert 476) + (blur-cy int32 :offset-assert 480) + (blur-frame-0 uint64 :offset-assert 488) ;; gs-frame ?? + (blur-frame-1 uint64 :offset-assert 496) ;; gs-frame ?? + (blur-frame-a uint64 :offset-assert 504) ;; gs-frame ?? + (blur-tex0-0 uint64 :offset-assert 512) ;; gs-tex0 ?? + (blur-tex0-1 uint64 :offset-assert 520) ;; gs-tex0 ?? + (blur-tex0-a uint64 :offset-assert 528) ;; gs-tex0 ?? + (blur-clamp uint64 :offset-assert 536) ;; gs-clamp ?? + (blur-scissor uint64 :offset-assert 544) ;; gs-scissor ?? + (blur-scale float :offset-assert 552) + (screen-maxx int32 :offset-assert 556) + (screen-maxy int32 :offset-assert 560) + (screen-sx int32 :offset-assert 564) + (screen-sy int32 :offset-assert 568) + (screen-hx int32 :offset-assert 572) + (screen-hy int32 :offset-assert 576) + (screen-qx int32 :offset-assert 580) + (screen-qy int32 :offset-assert 584) + (screen-cx int32 :offset-assert 588) + (screen-cy int32 :offset-assert 592) + (ratio-x float :offset-assert 596) + (ratio-y float :offset-assert 600) + (minx-on-screen int32 :offset 672) + (miny-on-screen int32 :offset 676) + (scissor-on-screen uint64 :offset 680) ;; gs-scissor ?? + ) + :method-count-assert 16 + :size-assert #x2b0 + :flag-assert #x10000002b0 + (:methods + (viewport-method-9 () none) ;; 9 + (viewport-method-10 () none) ;; 10 + (viewport-method-11 () none) ;; 11 + (viewport-method-12 () none) ;; 12 + (viewport-method-13 () none) ;; 13 + (viewport-method-14 () none) ;; 14 + (viewport-method-15 () none) ;; 15 + ) + ) + +(deftype viewport-array (structure) + ((mode uint32 :offset-assert 0) + (num-viewports uint32 :offset-assert 4) + (current-viewport-index uint32 :offset-assert 8) + (data viewport 3 :inline :offset 16) + (default viewport :inline :offset 1392) + ) + :method-count-assert 12 + :size-assert #x820 + :flag-assert #xc00000820 + (:methods + (viewport-array-method-9 (_type_ viewport) none) ;; 9 + (viewport-array-method-10 () none) ;; 10 + (viewport-array-method-11 () none) ;; 11 + ) + ) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; blit-displays-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype blit-displays-work (structure) + ((adgif-tmpl dma-gif-packet :inline :offset-assert 0) + (sprite-tmpl dma-gif-packet :inline :offset-assert 32) + (contrast-tmpl dma-gif-packet :inline :offset-assert 64) + (sprite-slow-tmpl dma-gif-packet :inline :offset-assert 96) + (screen-tmpl dma-gif-packet :inline :offset-assert 128) + (blur-tmpl dma-gif-packet :inline :offset-assert 160) + (blur-tmpl2 dma-gif-packet :inline :offset-assert 192) + (line-tmpl dma-gif-packet :inline :offset-assert 224) + (scan-tmpl dma-gif-packet :inline :offset-assert 256) + (color vector4w :inline :offset-assert 288) + (line-color uint64 :offset-assert 304) + (scan-colors vector4w 15 :offset-assert 320) ;; guessed by decompiler + (vu1-enable-user-menu uint64 :offset-assert 560) ;; vu1-renderer-mask + (texture-enable-user-menu uint32 :offset-assert 568) + (horizontal-flip-flag symbol :offset-assert 572) ;; guessed by decompiler + (scan-alpha float :offset-assert 576) + (scanline uint32 :offset-assert 580) + (progress-interp float :offset-assert 584) + (progress-interp-dest float :offset-assert 588) + (progress-interp-speed float :offset-assert 592) + ) + :method-count-assert 27 + :size-assert #x254 + :flag-assert #x1b00000254 + (:methods + (blit-displays-work-method-9 () none) ;; 9 ;; (blit-displays-work-method-9 () none) + (blit-displays-work-method-10 () none) ;; 10 ;; (blit-displays-work-method-10 () none) + (blit-displays-work-method-11 () none) ;; 11 ;; (blit-displays-work-method-11 () none) + (blit-displays-work-method-12 () none) ;; 12 ;; (blit-displays-work-method-12 () none) + (blit-displays-work-method-13 () none) ;; 13 ;; (blit-displays-work-method-13 () none) + (blit-displays-work-method-14 () none) ;; 14 ;; (blit-displays-work-method-14 () none) + (blit-displays-work-method-15 () none) ;; 15 ;; (blit-displays-work-method-15 () none) + (blit-displays-work-method-16 () none) ;; 16 ;; (blit-displays-work-method-16 () none) + (blit-displays-work-method-17 () none) ;; 17 ;; (blit-displays-work-method-17 (_type_ vector int float symbol) none) + (blit-displays-work-method-18 () none) ;; 18 ;; (blit-displays-work-method-18 () none) + (blit-displays-work-method-19 () none) ;; 19 ;; (blit-displays-work-method-19 (_type_) none) + (blit-displays-work-method-20 () none) ;; 20 ;; (blit-displays-work-method-20 (_type_) none) + (blit-displays-work-method-21 () none) ;; 21 ;; (get-menu-mode (_type_) symbol) + (blit-displays-work-method-22 () none) ;; 22 ;; (get-screen-copied (_type_) symbol) + (blit-displays-work-method-23 () none) ;; 23 ;; (get-horizontal-flip-flag (_type_) symbol) + (blit-displays-work-method-24 () none) ;; 24 ;; (set-menu-mode (_type_ symbol) symbol) + (blit-displays-work-method-25 () none) ;; 25 ;; (set-screen-copied (_type_ symbol) symbol) + (blit-displays-work-method-26 () none) ;; 26 ;; (set-horizontal-flip-flag (_type_ symbol) symbol) + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; sparks-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype spark (structure) + ((pos vector :inline :offset-assert 0) + (age float :offset 12) + (vel vector :inline :offset-assert 16) + (length float :offset 28) + (accel vector :inline :offset-assert 32) + (alpha float :offset 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype spark-vport (structure) + ((mat matrix 4 :inline :offset-assert 0) + (hvdf-offset vector :inline :offset-assert 256) + (hmge-scale vector :inline :offset-assert 272) + (frame qword :inline :offset-assert 288) + (zbuf qword :inline :offset-assert 304) + (scissor qword :inline :offset-assert 320) + (pfog0 vector :inline :offset-assert 336) + ) + :method-count-assert 9 + :size-assert #x160 + :flag-assert #x900000160 + ) + +(deftype spark-color-group (structure) + ((colors vector 4 :inline :offset-assert 0) + (alpha gs-adcmd :inline :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) + +(deftype spark-constants (structure) + ((vport spark-vport 2 :inline :offset-assert 0) + (adgif-tag qword :inline :offset-assert 704) + (prim-tags vector 3 :inline :offset-assert 720) + (color-groups spark-color-group 13 :inline :offset-assert 768) + (friction float :offset-assert 1808) + (scale float :offset-assert 1812) + (matrix-count int32 :offset-assert 1816) + (set-matrix-time int32 :offset-assert 1820) + ) + :method-count-assert 9 + :size-assert #x720 + :flag-assert #x900000720 + ) + +(deftype spark-vert (structure) + ((color vector :inline :offset-assert 0) + (pos vector :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype spark-line-packet (structure) + ((tag qword :inline :offset-assert 0) + (alpha qword :inline :offset-assert 16) + (verts spark-vert 4 :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #xa0 + :flag-assert #x9000000a0 + ) + +(deftype spark-viewport-packet (structure) + ((tag qword :inline :offset-assert 0) + (frame qword :inline :offset-assert 16) + (zbuf qword :inline :offset-assert 32) + (scissor qword :inline :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +(deftype spark-launch-params (structure) + ((pos vector :inline :offset-assert 0) + (vel vector :inline :offset-assert 16) + (accel vector :inline :offset-assert 32) + (age float :offset-assert 48) + (alpha float :offset-assert 52) + (y-floor float :offset-assert 56) + (length float :offset-assert 60) + (color-index uint32 :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x44 + :flag-assert #x900000044 + ) + +(deftype sparks-work (basic) + ((next-free int32 :offset-assert 4) + (constants spark-constants :inline :offset-assert 16) + (start vector :inline :offset-assert 1840) + (vel vector :inline :offset-assert 1856) + (accel vector :inline :offset-assert 1872) + (test basic :offset-assert 1888) + (vecs vector 4 :inline :offset-assert 1904) + (y-floor float 512 :offset-assert 1968) + (data spark 512 :inline :offset-assert 4016) + ) + :method-count-assert 20 + :size-assert #x6fb0 + :flag-assert #x1400006fb0 + (:methods + (sparks-work-method-9 () none) ;; 9 + (sparks-work-method-10 () none) ;; 10 + (sparks-work-method-11 () none) ;; 11 + (sparks-work-method-12 () none) ;; 12 + (sparks-work-method-13 () none) ;; 13 + (sparks-work-method-14 () none) ;; 14 + (sparks-work-method-15 () none) ;; 15 + (sparks-work-method-16 () none) ;; 16 + (sparks-work-method-17 () none) ;; 17 + (sparks-work-method-18 () none) ;; 18 + (sparks-work-method-19 () none) ;; 19 + ) + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; math-camera ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype fog-corrector (structure) + "The math-camera matrices are used to compute fogging values, which are a per-vertex uint8 that + tells the GS how 'foggy' the color should be. This should be proportional to how far away the vertex + is. There is a scaling factor applied so the fog intensity isn't affected by the field of view angle. + + The fog-corrector stores a fog-end fog-start value that is corrected for the field of view. + The actual correction factor is computed in cam-update.gc. + Without this corrector, the fogginess of the world would change as the FOV changes + (for example, when Jak gets on the zoomer, the FOV changes slightly)." + ((fog-end float :offset-assert 0) + (fog-start float :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(define-extern fog-corrector-setup "Set the fog corrector based on the supplied math-camera." (function fog-corrector math-camera none)) +(define-extern *math-camera-fog-correction* fog-corrector) +(define-extern update-math-camera + "Compute some one-time camera constants. + These should only change when changing aspect ratio." + (function math-camera symbol symbol float math-camera)) +(define-extern *math-camera* math-camera) +(define-extern math-cam-start-smoothing "Unused camera smoothing." (function float float quaternion)) +(define-extern move-target-from-pad + "Unused function to adjust trans based on inputs from the pad. + This function must be extremely old because it takes a non-quaternion transform, + and all [[target]] stuff uses quaternions." + (function transformq int transformq)) +(define-extern transform-point-vector! + "Apply camera transformation to a point. Return true if it is visible or not. + This returns the point in GS coords, but as float instead of int, so it's + not really useful. See [[transform-point-qword!]] for more details." + (function vector vector symbol)) +(define-extern transform-point-qword! + "Apply camera transformation to point, returning fixed point 28.4 position + that can be given to the GS directly." + (function vector4w vector symbol)) +(define-extern transform-point-vector-scale! + "Similar to transform-point-qword! but returns the scale factor instead." + (function vector vector float)) +(define-extern reverse-transform-point! + "Likely transform arg3 from screen space to world coords, using arg1/arg2 for... something." + (function vector vector vector vector none)) +(define-extern init-for-transform + "Sets up VU0 registers with camera info. + This is probably a very old function and it's only used by camera debug. + It stashes some data in vector float registers that must be there before calling transform-float-point." + (function matrix none)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; view ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern view-push-context (function int int)) +(define-extern view-pop-context (function int int)) +(define-extern view-get-active-target (function basic)) +(define-extern view-get-target (function int basic)) +(define-extern view-set-active-target (function basic basic)) +(define-extern view-get-active-camera (function camera-master)) +(define-extern view-get-camera (function int camera-master)) +(define-extern view-set-active-camera (function camera-master camera-master)) +(define-extern view-get-active-camera-combiner (function camera-combiner)) +(define-extern view-get-camera-combiner (function int camera-combiner)) +(define-extern view-set-active-camera-combiner (function camera-combiner camera-combiner)) +(define-extern view-get-active-math-camera (function math-camera)) +(define-extern view-get-math-camera (function int math-camera)) +(define-extern view-set-active-math-camera (function math-camera math-camera)) +(define-extern view-get-real-active (function view)) +(define-extern view-get-active (function view)) +(define-extern view-get-index (function view int)) +(define-extern view-get-active-index (function int)) +(define-extern view-get-real-active-index (function int)) +(define-extern view-print (function view none)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; viewport ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern *viewport-array* viewport-array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; font-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; +++font-h:font-flags +(defenum font-flags + :type uint32 + :bitfield #t + (shadow 0) + (kerning 1) + (middle 2) + (middle-vert 3) + (right 4) + (large 5) + (pc-hack 6) + (ff7 7) + (font-flag-9 9) + (font-flag-11 11) + ) +;; ---font-h:font-flags + +;; +++font-h:font-color +(defenum font-color + :type uint32 + (default 0) + (white 1) + (transparent 2) + (red 3) + (orange 4) + (yellow 5) + (green 6) + (blue 7) + (cyan 8) + (pink 9) + (menu-selected 10) + (menu-selected-parent 11) + (menu 12) + (menu-parent 13) + (menu-func-bad 14) + (menu-flag-on 15) + (menu-flag-on-parent 16) + (menu-flag-off 17) + (menu-flag-off-parent 18) + (menu-invalid 19) + (flat-yellow 20) + (font-color-21 21) + (pad-back 22) + (pad-shine 23) + (pad-square 24) + (pad-circle 25) + (pad-triangle 26) + (pad-x 27) + (progress-old-blue 28) + (progress-old-yellow 29) + (progress-old-selected 30) + (progress-old-percent 31) + (font-color-32 32) + (font-color-33 33) + (font-color-34 34) + (font-color-35 35) + (font-color-36 36) + (font-color-37 37) + (font-color-38 38) + (font-color-39 39) + (font-color-40 40) + (font-color-41 41) + (font-color-42 42) + (font-color-43 43) + (font-color-44 44) + ) +;; ---font-h:font-color + +(deftype font-char-effect (structure) + ((scale-x float :offset-assert 0) + (scale-y float :offset-assert 4) + (angle float :offset-assert 8) + (trans-x float :offset-assert 12) + (trans-y float :offset-assert 16) + (color vector4w :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype char-color (structure) + ((color rgba 4 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype font-context (basic) + ((y-spacing float :offset-assert 4) + (alpha float :offset-assert 8) + (ialpha int32 :offset-assert 12) + (flags font-flags :offset-assert 16) ;; guessed by decompiler + (origin vector :inline :offset-assert 32) + (calc-origin vector :inline :offset-assert 48) + (strip-gif vector :inline :offset-assert 64) + (calc-mat matrix :inline :offset-assert 80) + (width float :offset-assert 144) + (height float :offset-assert 148) + (meters-per-texel float :offset-assert 152) + (start-line uint32 :offset-assert 156) + (scaled-width float :offset-assert 160) + (scaled-height float :offset-assert 164) + (projection float :offset-assert 168) + (scale float :offset-assert 172) + (mat matrix :offset-assert 176) + (effect-time float :offset-assert 180) + (color uint8 :offset-assert 184) ;; font-color + (effect uint8 :offset-assert 185) + (effect-color uint8 :offset-assert 186) + ) + :method-count-assert 30 + :size-assert #xbb + :flag-assert #x1e000000bb + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type matrix int int float font-color font-flags) _type_) + (font-context-method-9 () none) ;; 9 ;; (set-mat! (font-context matrix) font-context) + (font-context-method-10 () none) ;; 10 ;; (set-origin! (font-context int int) font-context) + (font-context-method-11 () none) ;; 11 ;; (set-depth! (font-context int) font-context) + (font-context-method-12 () none) ;; 12 ;; (set-w! (font-context float) font-context) + (font-context-method-13 () none) ;; 13 ;; (set-width! (font-context int) font-context) + (font-context-method-14 () none) ;; 14 ;; (set-height! (font-context int) font-context) + (font-context-method-15 () none) ;; 15 ;; (set-projection! (font-context float) font-context) + (font-context-method-16 () none) ;; 16 ;; (set-color! (font-context font-color) font-context) + (font-context-method-17 () none) ;; 17 ;; (set-flags! (font-context font-flags) font-context) + (font-context-method-18 () none) ;; 18 ;; (set-start-line! (font-context uint) font-context) + (font-context-method-19 () none) ;; 19 ;; (set-scale! (font-context float) font-context) + (font-context-method-20 () none) ;; 20 ;; (set-alpha! (font-context float) font-context) + (font-context-method-21 () none) ;; 21 + (font-context-method-22 () none) ;; 22 + (font-context-method-23 () none) ;; 23 + (font-context-method-24 () none) ;; 24 + (font-context-method-25 () none) ;; 25 + (font-context-method-26 () none) ;; 26 + (font-context-method-27 () none) ;; 27 + (font-context-method-28 () none) ;; 28 + (font-context-method-29 () none) ;; 29 + ) + ) + +(deftype char-packet (structure) + ((tag dma-gif-packet :inline :offset-assert 0) + (font dma-packet :inline :offset-assert 32) + (color0 vector :inline :offset-assert 48) + (st0 vector :inline :offset-assert 64) + (pos0 vector :inline :offset-assert 80) + (st1 vector :inline :offset-assert 96) + (pos1 vector :inline :offset-assert 112) + (color2 vector :inline :offset-assert 128) + (st2 vector :inline :offset-assert 144) + (pos2 vector :inline :offset-assert 160) + (st3 vector :inline :offset-assert 176) + (pos3 vector :inline :offset-assert 192) + ) + :method-count-assert 9 + :size-assert #xd0 + :flag-assert #x9000000d0 + ) + +(deftype char-ad-packet (structure) + ((tag dma-gif-packet :inline :offset-assert 0) + (font dma-packet :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype char-2d-packet (structure) + ((tag dma-gif-packet :inline :offset-assert 0) + (font dma-packet :inline :offset-assert 32) + (color vector :inline :offset-assert 48) + (st0 vector :inline :offset-assert 64) + (pos0 vector :inline :offset-assert 80) + (st1 vector :inline :offset-assert 96) + (pos1 vector :inline :offset-assert 112) + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) + +(deftype char-2d-packet-no-packed (structure) + ((tag dma-gif-packet :inline :offset-assert 0) + (color0 uint64 :offset-assert 32) + (st0 uint64 :offset-assert 40) + (pos0 uint64 :offset-assert 48) + (st1 uint64 :offset-assert 56) + (pos1 uint64 :offset-assert 64) + (color1 uint64 :offset-assert 72) + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) + +(deftype char-packet-no-packed (structure) + ((tag dma-gif-packet :inline :offset-assert 0) + (prim uint64 :offset-assert 32) + (color0 uint64 :offset-assert 40) + (st0 uint64 :offset-assert 48) + (pos0 uint64 :offset-assert 56) + (st1 uint64 :offset-assert 64) + (pos1 uint64 :offset-assert 72) + (st2 uint64 :offset-assert 80) + (pos2 uint64 :offset-assert 88) + (st3 uint64 :offset-assert 96) + (pos3 uint64 :offset-assert 104) + ) + :method-count-assert 9 + :size-assert #x70 + :flag-assert #x900000070 + ) + +(deftype char-3d-packet (structure) + ((tag dma-gif-packet :inline :offset-assert 0) + (font dma-packet :inline :offset-assert 32) + (color vector :inline :offset-assert 48) + (st0 vector :inline :offset-assert 64) + (pos0 vector :inline :offset-assert 80) + (st1 vector :inline :offset-assert 96) + (pos1 vector :inline :offset-assert 112) + (color2 vector :inline :offset-assert 128) + (st2 vector :inline :offset-assert 144) + (pos2 vector :inline :offset-assert 160) + (st3 vector :inline :offset-assert 176) + (pos3 vector :inline :offset-assert 192) + ) + :method-count-assert 9 + :size-assert #xd0 + :flag-assert #x9000000d0 + ) + +(deftype font-work (structure) + ((char-2d-tmpl dma-gif-packet :inline :offset-assert 0) + (char-2d-no-packed-tmpl dma-gif-packet :inline :offset-assert 32) + (char-3d-tmpl dma-gif-packet :inline :offset-assert 64) + (char-ad-tmpl dma-gif-packet :inline :offset-assert 96) + (char-no-packed-tmpl dma-gif-packet :inline :offset-assert 128) + (char-tmpl dma-gif-packet :inline :offset-assert 160) + (small-font-0-tmpl uint64 2 :offset-assert 192) ;; guessed by decompiler + (small-font-1-tmpl uint64 2 :offset-assert 208) ;; guessed by decompiler + (small-font-2-tmpl uint64 2 :offset-assert 224) ;; guessed by decompiler + (small-font-3-tmpl uint64 2 :offset-assert 240) ;; guessed by decompiler + (large-font-0-tmpl uint64 2 :offset-assert 256) ;; guessed by decompiler + (large-font-1-tmpl uint64 2 :offset-assert 272) ;; guessed by decompiler + (large-font-2-tmpl uint64 2 :offset-assert 288) ;; guessed by decompiler + (large-font-3-tmpl uint64 2 :offset-assert 304) ;; guessed by decompiler + (size1-small vector :inline :offset-assert 320) + (size2-small vector :inline :offset-assert 336) + (size3-small vector :inline :offset-assert 352) + (size1-large vector :inline :offset-assert 368) + (size2-large vector :inline :offset-assert 384) + (size3-large vector :inline :offset-assert 400) + (size-st1 vector :inline :offset-assert 416) + (size-st2 vector :inline :offset-assert 432) + (size-st3 vector :inline :offset-assert 448) + (origin-right vector :inline :offset-assert 464) + (origin-center vector :inline :offset-assert 480) + (save vector :inline :offset-assert 496) + (save-color vector :inline :offset-assert 512) + (save-color2 vector :inline :offset-assert 528) + (current-color vector4w :inline :offset-assert 544) + (current-colorq uint64 :offset 544) + (current-color2 vector4w :inline :offset-assert 560) + (current-color2q uint64 :offset 560) + (effect-colors vector4w 2 :inline :offset-assert 576) + (color-shadow vector4w :inline :offset-assert 608) + (color-outline vector4w :inline :offset-assert 624) + (justify vector 256 :inline :offset-assert 640) ;; guessed by decompiler + (hvdf-offset vector :inline :offset-assert 4736) + (hvdf-shadow vector :inline :offset-assert 4752) + (hvdf-outline vector 4 :inline :offset-assert 4768) + (hvdf-outline0 vector :inline :offset 4768) + (hvdf-outline1 vector :inline :offset 4784) + (hvdf-outline2 vector :inline :offset 4800) + (hvdf-outline3 vector :inline :offset 4816) + (save-pos0 vector :inline :offset-assert 4832) + (save-pos1 vector :inline :offset-assert 4848) + (save-pos2 vector :inline :offset-assert 4864) + (save-pos3 vector :inline :offset-assert 4880) + (color-table char-color 74 :inline :offset-assert 4896) ;; guessed by decompiler + (current-font-0-tmpl uint64 2 :offset-assert 6080) ;; guessed by decompiler + (current-font-1-tmpl uint64 2 :offset-assert 6096) ;; guessed by decompiler + (current-font-2-tmpl uint64 2 :offset-assert 6112) ;; guessed by decompiler + (current-font-3-tmpl uint64 2 :offset-assert 6128) ;; guessed by decompiler + (screen-min vector2w :inline :offset-assert 6144) + (screen-max vector2w :inline :offset-assert 6160) + (last-color uint8 :offset-assert 6168) ;; font-color + (save-last-color uint8 :offset-assert 6169) ;; font-color + (buf basic :offset-assert 6172) + (str-ptr uint32 :offset-assert 6176) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x1824 + :flag-assert #x900001824 + ) + +(define-extern *font-work* font-work) +(define-extern font-set-tex0 (function (pointer gs-tex0) texture int int int none)) +(define-extern set-font-color (function font-color int rgba rgba rgba int)) +(define-extern *font-default-matrix* matrix) +(define-extern *font-default-matrix-3d* matrix) +(define-extern *font-context* font-context) +(define-extern *font-context* font-context) +(define-extern *font-char-effect* font-char-effect) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; decomp-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype decomp-work (structure) + ((buffer0 uint8 2048 :offset-assert 0) ;; guessed by decompiler + (buffer1 uint8 2048 :offset-assert 2048) ;; guessed by decompiler + (indices uint16 2048 :offset-assert 4096) ;; guessed by decompiler + (temp-indices uint16 2048 :offset-assert 8192) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x3000 + :flag-assert #x900003000 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; time-of-day-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype palette-fade-control (structure) + ((trans vector :inline :offset-assert 0) + (fade float :offset-assert 16) + (actor-dist float :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) +|# + +#| +(deftype palette-fade-controls (basic) + ((control palette-fade-control 8 :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 11 + :size-assert #x110 + :flag-assert #xb00000110 + (:methods + (palette-fade-controls-method-9 () none) ;; 9 ;; (reset! (_type_) none) + (palette-fade-controls-method-10 () none) ;; 10 ;; (set-fade! (_type_ int float float vector) object) + ) + ) +|# + +#| +(deftype time-of-day-proc (process) + ((hours int32 :offset-assert 144) + (minutes int32 :offset-assert 148) + (seconds int32 :offset-assert 152) + (old-frame uint64 :offset-assert 160) + (current-frame uint64 :offset-assert 168) + (frames uint64 :offset-assert 176) + (time-of-day float :offset-assert 184) + (old-frame-save uint64 :offset-assert 192) + (current-frame-save uint64 :offset-assert 200) + (frames-save uint64 :offset-assert 208) + (time-of-day-save float :offset-assert 216) + (time-ratio float :offset-assert 220) + (dest-time-ratio float :offset-assert 224) + (dest-time-delta float :offset-assert 228) + (sun-count int32 :offset-assert 232) + (sun sparticle-launch-control :offset-assert 236) ;; guessed by decompiler + (green-sun-count int32 :offset-assert 240) + (green-sun sparticle-launch-control :offset-assert 244) ;; guessed by decompiler + (moon-count int32 :offset-assert 248) + (moon sparticle-launch-control :offset-assert 252) ;; guessed by decompiler + (start-timer int32 :offset-assert 256) + ) + :method-count-assert 15 + :size-assert #x104 + :flag-assert #xf00800104 + (:methods + (time-of-day-proc-method-9 () none) ;; 9 + (time-of-day-proc-method-10 () none) ;; 10 + (time-of-day-proc-method-11 () none) ;; 11 + (time-of-day-proc-method-12 () none) ;; 12 + (time-of-day-proc-method-13 () none) ;; 13 + (time-of-day-proc-method-14 () none) ;; 14 + ) + ) +|# + +#| +(deftype time-of-day-palette (basic) + ((width int32 :offset-assert 4) + (height int32 :offset-assert 8) + (pad int32 :offset-assert 12) + (data int32 1 :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) +|# + +#| +(deftype time-of-day-context (basic) + ((interp float 18 :offset-assert 4) ;; guessed by decompiler + (current-fog mood-fog :inline :offset-assert 80) + (current-sky-color vector :inline :offset-assert 128) + (current-env-color vector :inline :offset-assert 144) + (current-prt-color vector :inline :offset-assert 160) + (current-shadow-color vector :inline :offset-assert 176) + (light-group light-group 8 :offset-assert 192) ;; guessed by decompiler + (current-clouds mood-clouds :inline :offset-assert 1728) + (times vector 8 :offset-assert 1744) ;; guessed by decompiler + (title-light-group light-group :inline :offset-assert 1872) + (rim-light-group light-group :inline :offset-assert 2064) + (front-rear-light-group light-group :inline :offset-assert 2256) + (fog-override mood-fog :inline :offset-assert 2448) + (filter vector :inline :offset-assert 2496) + (filter-color vector :inline :offset-assert 2512) + (time float :offset-assert 2528) + (target-interp float :offset-assert 2532) + (erase-color rgba :offset-assert 2536) ;; guessed by decompiler + (sky symbol :offset-assert 2540) ;; guessed by decompiler + (special-mood basic :offset-assert 2544) + (use-camera-other basic :offset-assert 2548) + (title-updated symbol :offset-assert 2552) ;; guessed by decompiler + (mode time-of-day-palette-id :offset-assert 2556) ;; guessed by decompiler + (override-enable basic :offset-assert 2560) + (override-palette uint32 :offset-assert 2564) + (max-rain float :offset-assert 2568) + (exterior-level basic :offset-assert 2572) + (ocean-alpha float :offset-assert 2576) + (shadow-override float :offset-assert 2580) + (fog-override-interp float :offset-assert 2584) + ) + :method-count-assert 9 + :size-assert #xa1c + :flag-assert #x900000a1c + ) +|# + +#| +(deftype time-of-day-dma (structure) + ((outa uint32 256 :offset-assert 0) ;; guessed by decompiler + (outb uint32 256 :offset-assert 1024) ;; guessed by decompiler + (banka uint32 256 :offset-assert 2048) ;; guessed by decompiler + (bankb uint32 256 :offset-assert 3072) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x1000 + :flag-assert #x900001000 + ) +|# + +;; (define-extern *palette-fade-controls* object) ;; palette-fade-controls +;; (define-extern *time-of-day-context* time-of-day-context) ;; time-of-day-context + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; profile ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype profile-work (structure) + ((sprite-tmpl dma-gif-packet :inline :offset-assert 0) + (line-tmpl dma-gif-packet :inline :offset-assert 32) + (last-index int32 :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x44 + :flag-assert #x900000044 + ) +|# + +;; (define-extern *profile-spec-array* object) ;; (inline-array profile-spec) +;; (define-extern *profile-translate-array* array) ;; (pointer uint64) +;; (define-extern *profile-work* object) ;; profile-work +;; (define-extern *profile-x* object) ;; int +;; (define-extern *profile-y* object) ;; int +;; (define-extern *profile-w* object) ;; int +;; (define-extern *profile-h* object) ;; int +;; (define-extern *profile-ticks* object) ;; symbol + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; display ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern get-current-time "Get the base-clock time." (function time-frame)) +(define-extern get-integral-current-time "Get the number of frames that have happened." (function time-frame)) +(define-extern get-real-current-time (function time-frame)) +(define-extern set-display "Allocate and initialize clocks for the display." (function display display)) +(define-extern allocate-dma-buffers "Allocate the main, debug, and calc dma buffers." (function display display)) +(define-extern draw-sprite2d-xy "Draw a sprite primitive with the given color and dimensions." (function dma-buffer int int int int rgba int none)) +(define-extern draw-sprite2d-xy-absolute + "Draw a sprite primitive, setting the gs-xzyf register to exactly the values specified (no offset/clamp)." + (function dma-buffer int int int int rgba int none)) +(define-extern draw-quad2d "Draw a quad that fills the entire context." (function dma-buffer draw-context none)) +(define-extern screen-gradient "Fill the screen with a sprite with the given colors." (function dma-buffer rgba rgba rgba rgba none)) +(define-extern vif1-handler-debug + "Handle the VIF1 interrupt. + The mark register of VIF will be set to the bucket that is now starting." + (function int none)) +(define-extern vif1-handler (function none)) +(define-extern vblank-handler "Record the time of the last two vblanks." (function int)) +(define-extern set-display-gs-state (function dma-buffer int int int int int dma-buffer)) +(define-extern set-display-gs-state-offset (function dma-buffer int int int int int int int dma-buffer)) +(define-extern reset-display-gs-state (function display dma-buffer display)) +(define-extern *vu0-dma-list* dma-buffer) +(define-extern *display* display) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; text-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; +++text-h:text-id +(defenum text-id + :type uint32 + ) +;; ---text-h:text-id + +(deftype game-text (structure) + ((id text-id :offset-assert 0) ;; guessed by decompiler + (index uint32 :offset-assert 4) + ) + :pack-me + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype game-text-info (basic) + ((length int32 :offset-assert 4) + (language-id int32 :offset-assert 8) + (group-name string :offset-assert 12) ;; guessed by decompiler + (dic-index (pointer uint32) :offset-assert 16) + (dic-data (pointer uint8) :offset-assert 20) + (text (pointer game-text) :offset-assert 24) + (text-data (pointer uint8) :offset-assert 28) + ) + :method-count-assert 13 + :size-assert #x20 + :flag-assert #xd00000020 + (:methods + (lookup-text! (_type_ game-text symbol) symbol) ;; 9 ;; (lookup-text! (_type_ text-id symbol) string) + (game-text-info-method-10 (_type_ text-id symbol) none) ;; 10 + (game-text-info-method-11 (_type_ string) string) ;; 11 + (game-text-info-method-12 () none) ;; 12 + ) + ) + +(define-extern *text-group-names* (array string)) +(define-extern *common-text-heap* kheap) +(define-extern *common-text* game-text-info) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; camera-defs-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype camera-bank (basic) + ((collide-move-rad float :offset-assert 4) + (joypad uint32 :offset-assert 8) + (min-detectable-velocity float :offset-assert 12) + (attack-timeout uint64 :offset-assert 16) ;; time-frame + (default-string-max-y meters :offset-assert 24) + (default-string-min-y meters :offset-assert 28) + (default-string-max-z meters :offset-assert 32) + (default-string-min-z meters :offset-assert 36) + (default-string-push-z meters :offset-assert 40) + (default-tilt-adjust deg :offset-assert 44) ;; degrees + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype camera-master-bank (basic) + ((onscreen-head-height meters :offset-assert 4) + (onscreen-foot-height meters :offset-assert 8) + (target-height meters :offset-assert 12) + (up-move-to-pitch-ratio-in-air float :offset-assert 16) + (down-move-to-pitch-ratio-in-air float :offset-assert 20) + (up-move-to-pitch-on-ground float :offset-assert 24) + (down-move-to-pitch-on-ground float :offset-assert 28) + (pitch-off-blend float :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) +|# + +;; (define-extern *CAMERA-bank* camera-bank) ;; camera-bank +;; (define-extern *CAMERA_MASTER-bank* camera-master-bank) ;; camera-master-bank + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; settings-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-type resetter-spec structure) +(deftype user-setting-data (structure) + ((border-mode symbol :offset-assert 0) ;; guessed by decompiler + (process-mask process-mask :offset-assert 4) ;; guessed by decompiler + (common-page int32 :offset-assert 8) + (language language-enum :offset-assert 12) ;; language-enum + (vibration symbol :offset 24) + (play-hints symbol :offset-assert 28) + (movie (pointer process) :offset-assert 32) ;; guessed by decompiler + (talking (pointer process) :offset-assert 36) ;; guessed by decompiler + (spooling (pointer process) :offset-assert 40) ;; guessed by decompiler + (hint (pointer process) :offset-assert 44) ;; guessed by decompiler + (ambient (pointer process) :offset-assert 48) ;; guessed by decompiler + (video-mode symbol :offset-assert 52) ;; guessed by decompiler + (aspect-ratio symbol :offset-assert 56) ;; guessed by decompiler + (auto-save symbol :offset 72) ;; guessed by decompiler + (rotate-arena-minimap symbol :offset-assert 76) + (bg-r float :offset-assert 80) + (bg-g float :offset-assert 84) + (bg-b float :offset-assert 88) + (bg-a float :offset-assert 92) + (bg-a-speed float :offset-assert 96) + (bg-a-force float :offset-assert 100) + (blur-a float :offset-assert 104) + (blur-a-speed float :offset-assert 108) + (allow-progress symbol :offset-assert 112) ;; guessed by decompiler + (allow-in-game-menu basic :offset-assert 116) + (allow-pause symbol :offset-assert 120) ;; guessed by decompiler + (fog-override symbol :offset-assert 124) + (allow-look-around symbol :offset-assert 128) + (movie-name symbol :offset 136) ;; guessed by decompiler + (weather symbol :offset-assert 140) ;; guessed by decompiler + (mouse symbol :offset-assert 144) + (cursor symbol :offset-assert 148) + (keybd symbol :offset-assert 152) + (task-mask task-mask :offset-assert 156) + (region-mode symbol :offset-assert 160) + (speed-mult float :offset-assert 164) + (features uint64 :offset-assert 168) ;; game-feature + (vehicles uint64 :offset-assert 176) ;; game-vehicles + (sfx-volume float :offset-assert 184) + (sfx-volume-movie float :offset-assert 188) + (music-volume float :offset-assert 192) + (music-volume-movie float :offset-assert 196) + (dialog-volume float :offset-assert 200) + (dialog-volume-talker float :offset-assert 204) + (ambient-volume float :offset-assert 208) + (ambient-volume-movie float :offset-assert 212) + (dynamic-ambient-volume float :offset-assert 216) + (talker-volume float :offset-assert 220) + (mode-sound-bank uint32 :offset-assert 224) ;; guessed by decompiler + (sound-reverb float :offset-assert 228) + (sound-reverb-mode int32 :offset-assert 232) + (sound-reverb-seek-speed float :offset-assert 236) + (stereo-mode int32 :offset-assert 240) + (music symbol :offset-assert 244) ;; guessed by decompiler + (spool-anim spool-anim :offset-assert 248) ;; guessed by decompiler + (task-manager (pointer process) :offset-assert 252) ;; guessed by decompiler + (task symbol :offset-assert 256) ;; guessed by decompiler + (airlock symbol :offset-assert 260) ;; guessed by decompiler + (minimap uint32 :offset-assert 264) + (allow-continue symbol :offset-assert 268) ;; guessed by decompiler + (spotlight-color rgba :offset-assert 272) + (highlight-color rgba :offset-assert 276) + (subtitle symbol :offset-assert 280) ;; guessed by decompiler + (doorway symbol :offset-assert 284) ;; guessed by decompiler + (gem symbol :offset-assert 288) ;; guessed by decompiler + (half-speed symbol :offset-assert 292) ;; guessed by decompiler + (gun-buoy symbol :offset-assert 296) ;; guessed by decompiler + (double-jump symbol :offset-assert 300) ;; guessed by decompiler + (pilot symbol :offset-assert 304) ;; guessed by decompiler + (pilot-exit symbol :offset-assert 308) ;; guessed by decompiler + (pilot-death symbol :offset-assert 312) ;; guessed by decompiler + (speech-control symbol :offset-assert 316) ;; guessed by decompiler + (vehicle-hijacking symbol :offset-assert 320) ;; guessed by decompiler + (endlessfall symbol :offset-assert 324) ;; guessed by decompiler + (rain float :offset-assert 328) + (snow float :offset-assert 332) + (exclusive-load symbol :offset-assert 336) ;; guessed by decompiler + (render symbol :offset-assert 340) ;; guessed by decompiler + (allow-timeout symbol :offset-assert 344) ;; guessed by decompiler + (mirror symbol :offset-assert 348) ;; guessed by decompiler + (movie-skip-frame float :offset-assert 352) + (allow-blackout symbol :offset-assert 356) ;; guessed by decompiler + (race-minimap int32 :offset-assert 360) + (beard symbol :offset-assert 364) ;; guessed by decompiler + (ignore-target symbol :offset-assert 368) ;; guessed by decompiler + (subtitle-language uint8 :offset-assert 372) ;; language-enum + (sound-bank-load symbol :offset-assert 376) ;; guessed by decompiler + (allow-error symbol :offset-assert 380) ;; guessed by decompiler + (under-water-pitch-mod float :offset-assert 384) + (scanlines float :offset-assert 388) + (restart-info resetter-spec :offset-assert 392) ;; guessed by decompiler + (fail-info resetter-spec :offset-assert 396) ;; guessed by decompiler + (death-info resetter-spec :offset-assert 400) ;; guessed by decompiler + (quit-info resetter-spec :offset-assert 404) ;; guessed by decompiler + (extra-bank-count uint32 :offset-assert 408) + (extra-bank pair 3 :offset-assert 412) ;; guessed by decompiler + (borrow-count uint32 :offset-assert 424) + (borrow pair 3 :offset-assert 428) ;; guessed by decompiler + (exclusive-task-count uint32 :offset-assert 440) + (exclusive-task int32 3 :offset-assert 444) ;; guessed by decompiler + (level-trans-time int32 :offset-assert 456) + (fog-special-interp-targ float :offset-assert 460) + (fog-special-interp-rate float :offset-assert 464) + (traffic-spawn symbol :offset-assert 468) + (stop-vehicle? symbol :offset-assert 472) + (part-bounds-check symbol :offset-assert 476) + (letterbox float :offset-assert 480) + (letterbox-speed float :offset-assert 484) + (minimap-level symbol :offset-assert 488) + (duststorm-push-player? symbol :offset-assert 492) + (dust-storm-fog-scalar float :offset-assert 496) + (dust-storm-sound-scalar float :offset-assert 500) + (citizen-fights symbol :offset-assert 504) + (allow-logo symbol :offset-assert 508) + (brightness float :offset-assert 512) + (contrast float :offset-assert 516) + (stop-boats? symbol :offset-assert 520) + (borrow-city-count uint32 :offset-assert 524) + (borrow-city pair 3 :offset-assert 528) ;; guessed by decompiler + (faction-command-count uint32 :offset-assert 540) + (faction-command pair 3 :offset-assert 544) + (kg-enemy-settings symbol :offset 560) + (ff-enemy-settings symbol :offset-assert 564) + (mh-enemy-settings symbol :offset-assert 568) + (city-heap-load float :offset-assert 572) + (gun-target-guards? symbol :offset-assert 576) + (freeze-screen symbol :offset-assert 580) + (borrow-hold-perm-count uint32 :offset-assert 584) + (borrow-hold-perm pair 3 :offset-assert 588) + (borrow-hold-count uint32 :offset-assert 600) + (borrow-hold pair 3 :offset-assert 604) + (player-control-override symbol :offset 620) + (player-control-mask uint32 :offset-assert 624) + (airlock-command pair :offset 632) + (sky-override symbol :offset-assert 636) + (global-wind symbol :offset-assert 640) + (ambient-wind-scalar float :offset-assert 644) + (halfpipe-jump-mult float :offset-assert 648) + (audio-language uint8 :offset-assert 652) ;; language-enum + (city-sound pair 3 :offset 660) + (board-max-speed float :offset-assert 672) + (hide-crates? symbol :offset 680) + (pickups symbol :offset-assert 684) + (sound-ear handle :offset-assert 688) + (sound-ear-scale float :offset-assert 696) + (special-volume float :offset-assert 700) + (dive symbol :offset-assert 704) + (timer-warn-seconds uint32 :offset-assert 708) + (gem-pool-index int32 :offset-assert 712) + (unique-vehicle-mission-critical symbol :offset-assert 716) + (turbo symbol :offset-assert 720) + (gun-eject symbol :offset-assert 724) + (disable-parking-spots? symbol :offset-assert 728) + (gem-seek-target-dir symbol :offset-assert 732) + (nuke-active? symbol :offset 740) + (disable-guard-chatter symbol :offset-assert 744) + (override-capture-mode? symbol :offset-assert 748) + (mpeg-mode? symbol :offset-assert 752) + (fog-mult float :offset-assert 756) + (fog-speed float :offset-assert 760) + (blur-enabled? symbol :offset-assert 764) + (event-finished? symbol :offset-assert 768) + ) + :method-count-assert 11 + :size-assert #x304 + :flag-assert #xb00000304 + (:methods + (user-setting-data-method-9 (_type_ engine engine-pers engine) user-setting-data) ;; 9 + (user-setting-data-method-10 (_type_ object symbol float uint) user-setting-data) ;; 10 + ) + ) + +;; +++settings-h:cam-slave-options +(defenum cam-slave-options + :type uint64 + :bitfield #t + (BUTT_CAM 0) + (SAME_SIDE 1) + (MOVE_SPHERICAL 2) + (ALLOW_Z_ROT 3) + (JUMP_PITCHES 4) + (COLLIDE 5) + (FIND_HIDDEN_TARGET 6) + (DRAG 7) + (PLAYER_MOVING_CAMERA 8) + (LINE_OF_SIGHT 9) + (MOVEMENT_BLOCKED 10) + (SHRINK_MAX_ANGLE 11) + (GOTO_GOOD_POINT 12) + (BIKE_MODE 13) + (NO_ROTATE 14) + (STICKY_ANGLE 15) + (BLOCK_RIGHT_STICK 16) + (ALLOW_SHIFT_BUTTONS 17) + (GUN_CAM 18) + (WIDE_FOV 19) + (RAPID_TRACKING 20) + (EASE_SPLINE_IDX 21) + (VERTICAL_FOLLOW_MATCHES_CAMERA 22) + (HAVE_BUTT_HANDLE 23) + (BOMBBOT 24) + (JUMP_LAG 25) + ) +;; ---settings-h:cam-slave-options + +;; +++settings-h:cam-master-options +(defenum cam-master-options + :type uint64 + :bitfield #t + (HAVE_TARGET) ;; 1 + (SET_COMBINER_AXIS) ;; 2 + (FLIP_COMBINER) ;; 4 + (HAVE_EASE_TO_POS) ;; 8 + (IN_BASE_REGION) ;; 10 + (IGNORE_ANALOG) ;; 20 + (BLOCK_RIGHT_STICK) ;; 40 + (USE_L1_R1) ;; 80 + (READ_BUTTONS) + (IMMEDIATE_STRING_MIN_MAX) + ) +;; ---settings-h:cam-master-options + +(deftype cam-setting-data (structure) + ((fov degrees :offset-assert 0) ;; degrees + (pov-handle handle :offset 16) ;; handle + (pov-bone int32 :offset-assert 24) + (pov-offset vector :inline :offset-assert 32) + (string-default symbol :offset-assert 48) ;; symbol + (string-max-length meters :offset-assert 52) + (string-min-length meters :offset-assert 56) + (string-max-height meters :offset-assert 60) + (string-min-height meters :offset-assert 64) + (string-cliff-height meters :offset-assert 68) + (string-camera-floor meters :offset-assert 72) + (string-camera-ceiling meters :offset-assert 76) + (gun-max-height meters :offset-assert 80) + (gun-min-height meters :offset-assert 84) + (string-local-down vector :inline :offset-assert 96) + (slave-options cam-slave-options :offset-assert 112) + (matrix-blend-max-angle degrees :offset-assert 120) ;; degrees + (matrix-blend-max-partial float :offset-assert 124) + (string-spline-max-move meters :offset-assert 128) + (string-spline-accel meters :offset-assert 132) + (string-spline-max-move-player meters :offset-assert 136) + (string-spline-accel-player meters :offset-assert 140) + (string-startup-vector vector :inline :offset-assert 144) + (use-string-startup-vector symbol :offset-assert 160) ;; guessed by decompiler + (look-at-point vector :inline :offset-assert 176) + (use-look-at-point symbol :offset-assert 192) ;; guessed by decompiler + (target-height meters :offset-assert 196) + (foot-offset meters :offset-assert 200) + (head-offset meters :offset-assert 204) + (teleport-on-entity-change symbol :offset-assert 208) ;; symbol + (entity-name string :offset-assert 212) + (cam-slope string :offset-assert 216) + (entity-or-mode-changed symbol :offset-assert 220) ;; symbol + (master-options cam-master-options :offset-assert 224) + (entity-mask uint32 :offset-assert 232) + (mode-name symbol :offset-assert 236) ;; guessed by decompiler + (real-entity-name string :offset-assert 240) + (cam-mode symbol :offset-assert 244) ;; guessed by decompiler + (interp-time uint32 :offset-assert 248) + (no-intro symbol :offset-assert 252) ;; guessed by decompiler + (use-point-of-interest symbol :offset-assert 256) ;; guessed by decompiler + (point-of-interest vector :inline :offset-assert 272) + (handle-of-interest handle :offset-assert 288) ;; handle + (mouse-tumble-point vector :inline :offset-assert 304) + (use-mouse-tumble-point symbol :offset-assert 320) ;; guessed by decompiler + (mouse-input symbol :offset-assert 324) ;; guessed by decompiler + (cpad1-skip-buttons symbol :offset-assert 328) ;; guessed by decompiler + (butt-handle uint64 :offset-assert 336) ;; handle + (butt-angle float :offset-assert 344) + (extra-follow-height float :offset-assert 348) + (interp-time-priority uint32 :offset-assert 352) + (string-max-length-default symbol :offset-assert 356) ;; guessed by decompiler + (string-min-length-default symbol :offset-assert 360) ;; guessed by decompiler + (string-max-height-default symbol :offset-assert 364) ;; guessed by decompiler + (string-min-height-default symbol :offset-assert 368) ;; guessed by decompiler + (flip-vertical symbol :offset-assert 372) ;; guessed by decompiler + (flip-horizontal symbol :offset-assert 376) ;; guessed by decompiler + (fov-priority float :offset 384) + (ocean-off basic :offset-assert 388) + (ocean-override basic :offset-assert 392) + (crash-cam-force-freeze basic :offset-assert 396) + ) + :method-count-assert 11 + :size-assert #x190 + :flag-assert #xb00000190 + ;; field cam-slave-options is likely a value type. field cam-master-options is likely a value type. + (:methods + (cam-setting-data-method-9 () none) ;; 9 ;; (cam-setting-data-method-9 (_type_ engine engine-pers engine) _type_) + (cam-setting-data-method-10 () none) ;; 10 ;; (cam-setting-data-method-10 (_type_ object (pointer process) float int) _type_) + ) + ) + +(deftype cam-setting-state (structure) + ((current cam-setting-data :inline :offset-assert 0) + (target cam-setting-data :inline :offset-assert 400) + (default cam-setting-data :inline :offset-assert 800) + ) + :method-count-assert 9 + :size-assert #x4b0 + :flag-assert #x9000004b0 + ) + +(deftype engine-group (structure) + ((engine engine :offset-assert 0) + (engine-pers engine-pers :offset-assert 4) + (engine-hi engine :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) + +(deftype setting-control (basic) + ((user-current user-setting-data :inline :offset-assert 16) + (user-target user-setting-data :inline :offset-assert 800) + (user-default user-setting-data :inline :offset-assert 1584) + (cam-settings cam-setting-state 4 :inline :offset-assert 2368) + (engine engine :offset-assert 7168) ;; guessed by decompiler + (engine-pers engine-pers :offset-assert 7172) ;; guessed by decompiler + (engine-hi engine :offset-assert 7176) ;; guessed by decompiler + (cam-engines engine-group 4 :offset-assert 7180) + ) + :method-count-assert 25 + :size-assert #x1c1c + :flag-assert #x1900001c1c + (:methods + (new (symbol type int) _type_) ;; 0 + (setting-control-method-9 () none) ;; 9 ;; (add-setting (_type_ process symbol object object object) connection) + (setting-control-method-10 () none) ;; 10 ;; (persist-with-delay (_type_ symbol time-frame symbol symbol float int) none) + (setting-control-method-11 () none) ;; 11 ;; (set-setting (_type_ process symbol object object object) connection) + (setting-control-method-12 () none) ;; 12 ;; (remove-setting (_type_ process symbol) none) + (add-setting (_type_ process symbol object object object) connection) ;; 13 ;; (kill-persister (_type_ engine-pers object) none) + (persist-with-delay (_type_ symbol time-frame symbol symbol float int) int) ;; 14 ;; (setting-control-method-14 (_type_ object) connectable) + (set-setting (_type_ process symbol object object object) connection) ;; 15 ;; (get-setting (_type_ object) connectable) + (remove-setting (_type_ process symbol) none) ;; 16 ;; (remove-setting-by-arg0 (_type_ object) none) + (setting-control-method-17 (_type_ process symbol) int) ;; 17 ;; (set-setting-by-param (_type_ symbol object object object) connection) + (setting-control-method-18 () none) ;; 18 ;; (apply-settings (_type_) user-setting-data) + (move-connection-to-dead (_type_ connection) int) ;; 19 ;; (update (_type_) user-setting-data) + (setting-control-method-20 () none) ;; 20 + (remove-setting-by-arg0 (_type_ object) int) ;; 21 + (set-setting-by-param (_type_ symbol object object object) connection) ;; 22 + (setting-control-method-23 (_type_) none) ;; 23 + (setting-control-method-24 () none) ;; 24 + ) + ) + +(define-extern *settings-dialog-volume* object) +(define-extern *settings-music-volume* object) +(define-extern *settings-sfx-volume* object) +(define-extern *settings-music-seek-speed* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; memory-usage-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defenum mem-usage-id + :bitfield #f + :type uint32 + ) + +(deftype memory-usage-info (structure) + ((name string :offset-assert 0) ;; guessed by decompiler + (count int32 :offset-assert 4) + (used int32 :offset-assert 8) + (total int32 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype memory-usage-block (basic) + ((work-bsp basic :offset-assert 4) + (length int32 :offset-assert 8) + (data memory-usage-info 112 :inline :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 12 + :size-assert #x710 + :flag-assert #xc00000710 + (:methods + (reset! (_type_) _type_) ;; 9 + (calculate-total (_type_) int) ;; 10 + (print-mem-usage (_type_ level object) _type_) ;; 11 + ) + ) + +(define-extern *mem-usage* memory-usage-block) +(define-extern *dma-mem-usage* memory-usage-block) +(define-extern *temp-mem-usage* memory-usage-block) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; sky-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype sky-color-hour (structure) + ((snapshot1 int32 :offset-assert 0) + (snapshot2 int32 :offset-assert 4) + (morph-start float :offset-assert 8) + (morph-end float :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype sky-color-day (structure) + ((hour sky-color-hour 24 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x180 + :flag-assert #x900000180 + ) +|# + +#| +(deftype sky-sun-data (structure) + ((data uint128 4 :offset-assert 0) ;; guessed by decompiler + (pos vector :inline :offset-assert 0) + (r-sun float :offset-assert 16) + (r-halo float :offset-assert 20) + (r-aurora float :offset-assert 24) + (c-sun-start rgba :offset-assert 32) ;; guessed by decompiler + (c-sun-end rgba :offset-assert 48) ;; guessed by decompiler + (c-halo-start rgba :offset-assert 36) ;; guessed by decompiler + (c-halo-end rgba :offset-assert 52) ;; guessed by decompiler + (c-aurora-start rgba :offset-assert 40) ;; guessed by decompiler + (c-aurora-end rgba :offset-assert 56) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) +|# + +#| +(deftype sky-moon-data (structure) + ((data uint128 2 :offset-assert 0) ;; guessed by decompiler + (pos vector :inline :offset-assert 0) + (scale vector :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype sky-orbit (structure) + ((high-noon float :offset-assert 0) + (tilt float :offset-assert 4) + (rise float :offset-assert 8) + (dist float :offset-assert 12) + (min-halo float :offset-assert 16) + (max-halo float :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) +|# + +#| +(deftype sky-upload-data (structure) + ((data uint128 12 :offset-assert 0) ;; guessed by decompiler + (sun sky-sun-data 2 :offset-assert 0) ;; guessed by decompiler + (moon sky-moon-data :inline :offset-assert 128) + ) + :method-count-assert 9 + :size-assert #xc0 + :flag-assert #x9000000c0 + ) +|# + +(deftype sky-vertex (structure) + ((pos vector :inline :offset-assert 0) + (stq vector :inline :offset-assert 16) + (col vector :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +#| +(deftype cloud-vertex (structure) + ((pos vector :inline :offset-assert 0) + (stq vector :inline :offset-assert 16) + (col vector :inline :offset-assert 32) + (nrm vector :inline :offset-assert 48) + (stq2 vector :inline :offset-assert 64) + (col2 vector :inline :offset-assert 80) + (nrm2 vector :inline :offset-assert 96) + ) + :method-count-assert 9 + :size-assert #x70 + :flag-assert #x900000070 + ) +|# + +#| +(deftype cloud-vert-array (structure) + ((data cloud-vertex 100 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x2bc0 + :flag-assert #x900002bc0 + ) +|# + +#| +(deftype haze-vertex (structure) + ((pos vector :inline :offset-assert 0) + (nrm vector :inline :offset-assert 16) + (col vector :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype haze-vert-array (structure) + ((data haze-vertex 36 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x6c0 + :flag-assert #x9000006c0 + ) +|# + +#| +(deftype cloud-lights (structure) + ((sun0-normal vector :inline :offset-assert 0) + (sun1-normal vector :inline :offset-assert 16) + (moon-normal vector :inline :offset-assert 32) + (ambi-color vector :inline :offset-assert 48) + (ambi-color-lower vector :inline :offset-assert 64) + (sun0-color vector :inline :offset-assert 80) + (sun1-color vector :inline :offset-assert 96) + (moon-color vector :inline :offset-assert 112) + (sun0-color-lower vector :inline :offset-assert 128) + (sun0-scale float :offset-assert 144) + (sun1-scale float :offset-assert 148) + (moon-scale float :offset-assert 152) + ) + :method-count-assert 9 + :size-assert #x9c + :flag-assert #x90000009c + ) +|# + +#| +(deftype haze-lights (structure) + ((sun0-normal vector :inline :offset-assert 0) + (sun1-normal vector :inline :offset-assert 16) + (moon-normal vector :inline :offset-assert 32) + (ambi-color vector :inline :offset-assert 48) + (sun0-color vector :inline :offset-assert 64) + (sun1-color vector :inline :offset-assert 80) + (moon-color vector :inline :offset-assert 96) + (sun0-scale float :offset-assert 112) + (sun1-scale float :offset-assert 116) + (moon-scale float :offset-assert 120) + ) + :method-count-assert 9 + :size-assert #x7c + :flag-assert #x90000007c + ) +|# + +#| +(deftype sky-work (structure) + ((adgif-tmpl dma-gif-packet :inline :offset-assert 0) + (draw-tmpl dma-gif-packet :inline :offset-assert 32) + (draw-tmpl2 dma-gif-packet :inline :offset-assert 64) + (fog-tmpl dma-gif-packet :inline :offset-assert 96) + (blend-tmpl dma-gif-packet :inline :offset-assert 128) + (sprite-tmpl dma-gif-packet :inline :offset-assert 160) + (sprite-tmpl2 dma-gif-packet :inline :offset-assert 192) + (sun-coords vector 2 :offset-assert 224) ;; guessed by decompiler + (green-coords vector 2 :offset-assert 256) ;; guessed by decompiler + (moon0-coords vector 2 :offset-assert 288) ;; guessed by decompiler + (moon1-coords vector 2 :offset-assert 320) ;; guessed by decompiler + (moon2-coords vector 2 :offset-assert 352) ;; guessed by decompiler + (star-coords vector 2 :offset-assert 384) ;; guessed by decompiler + (sun-colors vector4w 2 :offset-assert 416) ;; guessed by decompiler + (green-colors vector4w 2 :offset-assert 448) ;; guessed by decompiler + (moon-colors vector4w 3 :offset-assert 480) ;; guessed by decompiler + (star-colors vector4w 16 :offset-assert 528) ;; guessed by decompiler + (st-coords vector 2 :offset-assert 784) ;; guessed by decompiler + (random vector4w 8 :offset-assert 816) ;; guessed by decompiler + (giftag-base dma-gif :inline :offset-assert 944) + (giftag-haze dma-gif :inline :offset-assert 960) + (giftag-roof dma-gif :inline :offset-assert 976) + (giftag-clouds dma-gif :inline :offset-assert 992) + (giftag-ocean dma-gif :inline :offset-assert 1008) + (fog vector :inline :offset-assert 1024) + (sky float 8 :offset-assert 1040) ;; guessed by decompiler + (time float :offset-assert 1072) + (off-s uint16 :offset-assert 1076) + (off-t uint16 :offset-assert 1078) + (orbit sky-orbit 3 :offset-assert 1080) ;; guessed by decompiler + (upload-data sky-upload-data :inline :offset-assert 1184) + (ambi-color vector :inline :offset-assert 1376) + (ambi-color-lower vector :inline :offset-assert 1392) + (sun0-color vector :inline :offset-assert 1408) + (sun1-color vector :inline :offset-assert 1424) + (moon-color vector :inline :offset-assert 1440) + (sun0-color-lower vector :inline :offset-assert 1456) + (cam-mat matrix :inline :offset-assert 1472) + (star-mat matrix :inline :offset-assert 1536) + (vec0 vector4w :inline :offset-assert 1600) + (vec1 vector4w :inline :offset-assert 1616) + (cloud-lights cloud-lights :inline :offset-assert 1632) + (haze-lights haze-lights :inline :offset-assert 1792) + (buf dma-buffer :offset-assert 1916) ;; guessed by decompiler + (stars vector 512 :offset-assert 1920) ;; guessed by decompiler + (disable-day-star basic :offset-assert 10112) + ) + :method-count-assert 37 + :size-assert #x2784 + :flag-assert #x2500002784 + (:methods + (sky-work-method-9 () none) ;; 9 ;; (init-sun-data! (_type_ int float float float) none) + (sky-work-method-10 () none) ;; 10 ;; (init-orbit-settings! (_type_ int float float float float float float) none) + (sky-work-method-11 () none) ;; 11 ;; (update-colors-for-time (_type_ float) none) + (sky-work-method-12 () none) ;; 12 ;; (update-time-and-speed (_type_ float float) none) + (sky-work-method-13 () none) ;; 13 ;; (draw-erase (_type_ dma-buffer vector) none) + (sky-work-method-14 () none) ;; 14 ;; (draw (_type_) none) + (sky-work-method-15 () none) ;; 15 ;; (update-camera-matrix (_type_ matrix) none) + (sky-work-method-16 () none) ;; 16 ;; (update-template-colors (_type_) none) + (sky-work-method-17 () none) ;; 17 ;; (init-regs-for-large-polygon-draw (_type_) none) + (sky-work-method-18 () none) ;; 18 ;; (init-regs-for-sky-asm (_type_) none) + (sky-work-method-19 () none) ;; 19 ;; (cloud-vtx-light-update (_type_ vector vector cloud-lights vector vector) none) + (sky-work-method-20 () none) ;; 20 ;; (cloud-vtx-tex-update (_type_ vector vector vector cloud-lights) none) + (sky-work-method-21 () none) ;; 21 ;; (adjust-cloud-lighting (_type_) none) + (sky-work-method-22 () none) ;; 22 ;; (cloud-vtx1-to-sky (_type_ sky-vertex cloud-vertex) none) + (sky-work-method-23 () none) ;; 23 ;; (cloud-vtx2-to-sky (_type_ sky-vertex cloud-vertex) none) + (sky-work-method-24 () none) ;; 24 ;; (draw-clouds (_type_ dma-buffer) none) + (sky-work-method-25 () none) ;; 25 ;; (apply-haze-light (_type_ vector vector haze-lights float) none) + (sky-work-method-26 () none) ;; 26 ;; (adjust-haze-lighting (_type_) none) + (sky-work-method-27 () none) ;; 27 ;; (haze-vtx-to-sky (_type_ sky-vertex sky-vertex haze-vertex) none) + (sky-work-method-28 () none) ;; 28 ;; (draw-haze (_type_ dma-buffer) none) + (sky-work-method-29 () none) ;; 29 ;; (sun-dma (_type_ dma-buffer) none) + (sky-work-method-30 () none) ;; 30 ;; (green-sun-dma (_type_ dma-buffer) none) + (sky-work-method-31 () none) ;; 31 ;; (moon-dma (_type_ dma-buffer) none) + (sky-work-method-32 () none) ;; 32 ;; (day-star-dma (_type_ dma-buffer) none) + (sky-work-method-33 () none) ;; 33 ;; (setup-stars (_type_ matrix sky-upload-data) none) + (sky-work-method-34 () none) ;; 34 ;; (stars-transform-asm (_type_) none) + (sky-work-method-35 () none) ;; 35 ;; (stars-dma (_type_ dma-buffer) none) + (sky-work-method-36 () none) ;; 36 ;; (draw-roof (_type_ dma-buffer) none) + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ocean-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype ocean-corner (structure) + ((bsphere sphere :inline :offset-assert 0) + (start-corner vector :inline :offset-assert 16) + (y-scales vector :inline :offset-assert 32) + (alphas vector :inline :offset-assert 48) + (colors uint32 4 :offset-assert 64) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) +|# + +#| +(deftype ocean-wave-info (structure) + ((frequency float :offset-assert 0) + (amplitude float :offset-assert 4) + (wave-speed float :offset-assert 8) + (angle float :offset-assert 12) + (kx float :offset-assert 16) + (ky float :offset-assert 20) + (w float :offset-assert 24) + (flags int32 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype ocean-vertex (structure) + ((pos vector :inline :offset-assert 0) + (stq vector :inline :offset-assert 16) + (col vector :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype ocean-spheres (structure) + ((spheres sphere 36 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x240 + :flag-assert #x900000240 + ) +|# + +#| +(deftype ocean-colors (structure) + ((colors rgba 2548 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x27d0 + :flag-assert #x9000027d0 + ) +|# + +#| +(deftype ocean-colors-float (structure) + ((colors vector 2548 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x9f40 + :flag-assert #x900009f40 + ) +|# + +#| +(deftype ocean-mid-mask (structure) + ((mask uint8 8 :offset-assert 0) ;; guessed by decompiler + (dword uint64 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype ocean-mid-indices (basic) + ((data uint16 36 :offset-assert 4) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x4c + :flag-assert #x90000004c + ) +|# + +#| +(deftype ocean-mid-masks (basic) + ((data (inline-array ocean-mid-mask) :offset-assert 4) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype ocean-trans-mask (structure) + ((mask uint8 4 :offset-assert 0) ;; guessed by decompiler + (word int32 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype ocean-trans-index (structure) + ((parent int16 :offset-assert 0) + (child int16 :offset-assert 2) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype ocean-trans-indices (basic) + ((data ocean-trans-index 2304 :offset-assert 4) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x2404 + :flag-assert #x900002404 + ) +|# + +#| +(deftype ocean-near-index (structure) + ((data uint16 16 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype ocean-near-indices (basic) + ((data (inline-array ocean-near-index) :offset-assert 4) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype ocean-near-colors (structure) + ((color0 vector :inline :offset-assert 0) + (color1 vector :inline :offset-assert 16) + (color2 vector :inline :offset-assert 32) + (color3 vector :inline :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) +|# + +#| +(deftype ocean-trans-strip (structure) + ((verts uint128 10 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #xa0 + :flag-assert #x9000000a0 + ) +|# + +#| +(deftype ocean-trans-strip-array (structure) + ((data ocean-trans-strip 4 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x280 + :flag-assert #x900000280 + ) +|# + +#| +(deftype ocean-wave-data (structure) + ((data uint8 1024 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x400 + :flag-assert #x900000400 + ) +|# + +#| +(deftype ocean-wave-frames (structure) + ((frame ocean-wave-data 64 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x0 + :heap-base #x1 + :flag-assert #x900010000 + ) +|# + +#| +(deftype ocean-texture-constants (structure) + ((giftag qword :inline :offset-assert 0) ;; gs-gif-tag :inline + (buffers vector4w :inline :offset-assert 16) + (dests vector4w :inline :offset-assert 32) + (start vector :inline :offset-assert 48) + (offsets vector :inline :offset-assert 64) + (constants vector :inline :offset-assert 80) + (cam-nrm vector :inline :offset-assert 96) + ) + :method-count-assert 9 + :size-assert #x70 + :flag-assert #x900000070 + ) +|# + +#| +(deftype ocean-mid-vertex (structure) + ((stq vector :inline :offset-assert 0) + (col vector :inline :offset-assert 16) + (pos vector :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype ocean-mid-constants (structure) + ((hmge-scale vector :inline :offset-assert 0) + (inv-hmge-scale vector :inline :offset-assert 16) + (hvdf-offset vector :inline :offset-assert 32) + (fog vector :inline :offset-assert 48) + (constants vector :inline :offset-assert 64) + (constants2 vector :inline :offset-assert 80) + (drw-fan qword :inline :offset-assert 96) ;; gs-gif-tag :inline + (env-fan qword :inline :offset-assert 112) ;; gs-gif-tag :inline + (drw-adgif qword :inline :offset-assert 128) ;; gs-gif-tag :inline + (drw-texture adgif-shader :inline :offset-assert 144) + (drw-strip-0 qword :inline :offset-assert 224) ;; gs-gif-tag :inline + (drw-strip-1 qword :inline :offset-assert 240) ;; gs-gif-tag :inline + (env-adgif qword :inline :offset-assert 256) ;; gs-gif-tag :inline + (env-texture adgif-shader :inline :offset-assert 272) + (env-strip qword :inline :offset-assert 352) ;; gs-gif-tag :inline + (env-color vector :inline :offset-assert 368) + (index-table vector4w 8 :offset-assert 384) ;; guessed by decompiler + (pos0 vector :inline :offset-assert 512) + (pos1 vector :inline :offset-assert 528) + (pos2 vector :inline :offset-assert 544) + (pos3 vector :inline :offset-assert 560) + ) + :method-count-assert 9 + :size-assert #x240 + :flag-assert #x900000240 + ) +|# + +#| +(deftype ocean-mid-upload (structure) + ((rot matrix :inline :offset-assert 0) + (matrix matrix :inline :offset-assert 64) + (colors uint128 108 :offset-assert 128) ;; guessed by decompiler + (masks uint128 2 :offset-assert 1856) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x760 + :flag-assert #x900000760 + ) +|# + +#| +(deftype ocean-mid-upload2 (structure) + ((rot matrix :inline :offset-assert 0) + (matrix matrix :inline :offset-assert 64) + (count vector4w :inline :offset-assert 128) + (tex0 vector :inline :offset-assert 144) + (tex1 vector :inline :offset-assert 160) + (tex2 vector :inline :offset-assert 176) + (tex3 vector :inline :offset-assert 192) + (clr0 vector :inline :offset-assert 208) + (clr1 vector :inline :offset-assert 224) + (clr2 vector :inline :offset-assert 240) + (clr3 vector :inline :offset-assert 256) + (verts uint128 18 :offset-assert 272) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x230 + :flag-assert #x900000230 + ) +|# + +#| +(deftype ocean-mid-work (structure) + ((env0 vector :inline :offset-assert 0) + (env1 vector :inline :offset-assert 16) + (env2 vector :inline :offset-assert 32) + (hmg0 vector :inline :offset-assert 48) + (hmg1 vector :inline :offset-assert 64) + (hmg2 vector :inline :offset-assert 80) + (indices uint128 16 :offset-assert 96) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x160 + :flag-assert #x900000160 + ) +|# + +#| +(deftype ocean-near-constants (structure) + ((hmge-scale vector :inline :offset-assert 0) + (inv-hmge-scale vector :inline :offset-assert 16) + (hvdf-offset vector :inline :offset-assert 32) + (fog vector :inline :offset-assert 48) + (constants vector :inline :offset-assert 64) + (constants2 vector :inline :offset-assert 80) + (constants3 vector :inline :offset-assert 96) + (constants4 vector :inline :offset-assert 112) + (constants5 vector :inline :offset-assert 128) + (drw-fan qword :inline :offset-assert 144) ;; gs-gif-tag :inline + (drw2-fan qword :inline :offset-assert 160) ;; gs-gif-tag :inline + (env-fan qword :inline :offset-assert 176) ;; gs-gif-tag :inline + (drw-adgif qword :inline :offset-assert 192) ;; gs-gif-tag :inline + (drw-texture adgif-shader :inline :offset-assert 208) + (drw-strip qword :inline :offset-assert 288) ;; gs-gif-tag :inline + (env-adgif qword :inline :offset-assert 304) ;; gs-gif-tag :inline + (env-texture adgif-shader :inline :offset-assert 320) + (env-strip qword :inline :offset-assert 400) ;; gs-gif-tag :inline + (env-color vector :inline :offset-assert 416) + (drw2-adgif qword :inline :offset-assert 432) ;; gs-gif-tag :inline + (drw2-tex0 qword :inline :offset-assert 448) + (drw2-frame qword :inline :offset-assert 464) + (drw2-strip qword :inline :offset-assert 480) ;; gs-gif-tag :inline + (drw3-adgif qword :inline :offset-assert 496) ;; gs-gif-tag :inline + (drw3-frame qword :inline :offset-assert 512) ;; gs-adcmd :inline + (index-table vector4w 4 :offset-assert 528) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x250 + :flag-assert #x900000250 + ) +|# + +#| +(deftype ocean-near-upload (structure) + ((rot matrix :inline :offset-assert 0) + (matrix matrix :inline :offset-assert 64) + (masks uint128 2 :offset-assert 128) ;; guessed by decompiler + (start-height vector4w :inline :offset-assert 160) + (start-st vector :inline :offset-assert 176) + (near-colors ocean-near-colors :inline :offset-assert 192) + ) + :method-count-assert 9 + :size-assert #x100 + :flag-assert #x900000100 + ) +|# + +#| +(deftype ocean-near-vertex (structure) + ((stq vector :inline :offset-assert 0) + (clr vector :inline :offset-assert 16) + (pos vector :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype ocean-near-work (structure) + ((verts-ptr vector :inline :offset-assert 0) + (indices uint128 16 :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x110 + :flag-assert #x900000110 + ) +|# + +#| +(deftype ocean-height-array (structure) + ((data float 1024 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x1000 + :flag-assert #x900001000 + ) +|# + +#| +(deftype ocean-map (structure) + ((start-corner vector :inline :offset-assert 0) + (far-color vector :inline :offset-assert 16) + (ocean-colors ocean-colors :offset-assert 32) + (ocean-mid-indices ocean-mid-indices :offset-assert 36) ;; guessed by decompiler + (ocean-trans-indices ocean-trans-indices :offset-assert 40) ;; guessed by decompiler + (ocean-near-indices ocean-near-indices :offset-assert 44) ;; guessed by decompiler + (ocean-mid-masks ocean-mid-masks :offset-assert 48) ;; guessed by decompiler + ) + :method-count-assert 11 + :size-assert #x34 + :flag-assert #xb00000034 + (:methods + (ocean-map-method-9 () none) ;; 9 ;; (set-height! (_type_ float) none) + (ocean-map-method-10 () none) ;; 10 ;; (get-base-height (_type_) float) + ) + ) +|# + +#| +(deftype ocean (ocean-map) + ((off symbol :offset-assert 52) ;; guessed by decompiler + (near-off symbol :offset-assert 56) ;; guessed by decompiler + (far-on symbol :offset-assert 60) ;; guessed by decompiler + (all-on symbol :offset-assert 64) ;; guessed by decompiler + (ocean-facing uint32 :offset-assert 68) + (mid-mask-ptrs pointer 36 :offset-assert 72) ;; guessed by decompiler + (mid-camera-masks uint64 36 :offset-assert 216) ;; guessed by decompiler + (trans-mask-ptrs pointer 64 :offset-assert 504) ;; guessed by decompiler + (trans-camera-masks ocean-trans-mask 16 :offset-assert 760) ;; guessed by decompiler + (trans-temp-masks uint32 16 :offset-assert 824) ;; guessed by decompiler + (haze-lights haze-lights :inline :offset-assert 896) + (near-mask-indices uint16 16 :offset-assert 1020) ;; guessed by decompiler + (mid-minx uint8 :offset-assert 1052) + (mid-maxx uint8 :offset-assert 1053) + (mid-minz uint8 :offset-assert 1054) + (mid-maxz uint8 :offset-assert 1055) + (near-minx uint8 :offset-assert 1056) + (near-maxx uint8 :offset-assert 1057) + (near-minz uint8 :offset-assert 1058) + (near-maxz uint8 :offset-assert 1059) + (temp-minx uint8 :offset-assert 1060) + (temp-maxx uint8 :offset-assert 1061) + (temp-minz uint8 :offset-assert 1062) + (temp-maxz uint8 :offset-assert 1063) + (tex1 uint64 :offset-assert 1064) ;; gs-tex1 + (tex1-near uint64 :offset-assert 1072) ;; gs-tex1 + (wait-to-vu0 uint32 :offset-assert 1080) + ) + :method-count-assert 84 + :size-assert #x43c + :flag-assert #x540000043c + (:methods + (ocean-method-11 () none) ;; 11 ;; (get-height (_type_ vector symbol) float) + (ocean-method-12 () none) ;; 12 ;; (draw! (_type_) none) + (ocean-method-13 () none) ;; 13 ;; (update-map (_type_) none) + (ocean-method-14 () none) ;; 14 ;; (interp-wave (_type_ ocean-wave-info uint float) none) + (ocean-method-15 () none) ;; 15 ;; (ocean-method-15 (_type_ matrix matrix) none) + (ocean-method-16 () none) ;; 16 ;; (generate-verts (_type_ ocean-vert-array ocean-height-array) none) + (ocean-method-17 () none) ;; 17 ;; (add-colors! (_type_ vector ocean-vertex) none) + (ocean-method-18 () none) ;; 18 ;; (ocean-method-18 (_type_ (pointer ocean-colors) (pointer ocean-colors)) none) + (ocean-method-19 () none) ;; 19 ;; (init-buffer! (_type_ dma-buffer) none) + (ocean-method-20 () none) ;; 20 ;; (end-buffer! (_type_ dma-buffer) none) + (ocean-method-21 () none) ;; 21 ;; (set-corners! (_type_ float float) float) + (ocean-method-22 () none) ;; 22 ;; (ocean-near-add-call (_type_ dma-buffer int) none) + (ocean-method-23 () none) ;; 23 ;; (ocean-near-add-call-flush (_type_ dma-buffer int) none) + (ocean-method-24 () none) ;; 24 ;; (ocean-near-setup-constants (_type_ ocean-near-constants) none) + (ocean-method-25 () none) ;; 25 ;; (ocean-near-add-constants (_type_ dma-buffer) none) + (ocean-method-26 () none) ;; 26 ;; (ocean-near-add-heights (_type_ dma-buffer) none) + (ocean-method-27 () none) ;; 27 ;; (ocean-near-add-matrices (_type_ dma-buffer vector) none) + (ocean-method-28 () none) ;; 28 ;; (ocean-near-add-upload (_type_ dma-buffer uint uint) none) + (ocean-method-29 () none) ;; 29 ;; (draw-ocean-near (_type_ dma-buffer) none) + (ocean-method-30 () none) ;; 30 ;; (ocean-trans-camera-masks-bit? (_type_ uint uint) symbol) + (ocean-method-31 () none) ;; 31 ;; (ocean-trans-mask-ptrs-bit? (_type_ int int) symbol) + (ocean-method-32 () none) ;; 32 ;; (ocean-trans-mask-ptrs-set! (_type_ uint uint) symbol) + (ocean-method-33 () none) ;; 33 ;; (ocean-trans-add-upload-table (_type_ dma-buffer uint uint int int symbol) none) + (ocean-method-34 () none) ;; 34 ;; (ocean-trans-add-upload-strip (_type_ dma-buffer uint uint int int int) none) + (ocean-method-35 () none) ;; 35 ;; (ocean-transition-check (_type_ ocean-trans-mask int int vector) none) + (ocean-method-36 () none) ;; 36 ;; (ocean-make-trans-camera-masks (_type_ uint uint uint uint) none) + (ocean-method-37 () none) ;; 37 ;; (ocean-trans-add-upload (_type_ dma-buffer uint uint) none) + (ocean-method-38 () none) ;; 38 ;; (draw-ocean-transition-seams (_type_ dma-buffer) none) + (ocean-method-39 () none) ;; 39 ;; (ocean-trans-add-constants (_type_ dma-buffer) none) + (ocean-method-40 () none) ;; 40 ;; (draw-ocean-transition (_type_ dma-buffer) none) + (ocean-method-41 () none) ;; 41 ;; (ocean-mid-add-call (_type_ dma-buffer int) none) + (ocean-method-42 () none) ;; 42 ;; (ocean-mid-add-call-flush (_type_ dma-buffer uint) none) + (ocean-method-43 () none) ;; 43 ;; (ocean-matrix*! (_type_ matrix matrix matrix) matrix) + (ocean-method-44 () none) ;; 44 ;; (ocean-vector-matrix*! (_type_ vector vector matrix) vector) + (ocean-method-45 () none) ;; 45 ;; (ocean-mid-add-matrices (_type_ dma-buffer vector) none) + (ocean-method-46 () none) ;; 46 ;; (ocean-mid-check (_type_ pointer int int vector) symbol) + (ocean-method-47 () none) ;; 47 ;; (ocean-mid-setup-constants (_type_ ocean-mid-constants) none) + (ocean-method-48 () none) ;; 48 ;; (ocean-mid-add-constants (_type_ dma-buffer) none) + (ocean-method-49 () none) ;; 49 ;; (ocean-mid-camera-masks-bit? (_type_ uint uint) symbol) + (ocean-method-50 () none) ;; 50 ;; (ocean-mid-mask-ptrs-bit? (_type_ uint uint) symbol) + (ocean-method-51 () none) ;; 51 ;; (ocean-mid-camera-masks-set! (_type_ uint uint) symbol) + (ocean-method-52 () none) ;; 52 ;; (ocean-mid-add-upload (_type_ dma-buffer int int int int float) none) + (ocean-method-53 () none) ;; 53 ;; (ocean-mid-add-upload-table (_type_ dma-buffer uint uint (pointer float) int symbol) none) + (ocean-method-54 () none) ;; 54 ;; (ocean-mid-add-upload-top (_type_ dma-buffer uint uint) none) + (ocean-method-55 () none) ;; 55 ;; (ocean-mid-add-upload-middle (_type_ dma-buffer uint uint) none) + (ocean-method-56 () none) ;; 56 ;; (ocean-mid-add-upload-bottom (_type_ dma-buffer uint uint) none) + (ocean-method-57 () none) ;; 57 ;; (ocean-seams-add-constants (_type_ dma-buffer) none) + (ocean-method-58 () none) ;; 58 ;; (draw-ocean-mid-seams (_type_ dma-buffer) none) + (ocean-method-59 () none) ;; 59 ;; (draw-ocean-mid (_type_ dma-buffer) none) + (ocean-method-60 () none) ;; 60 ;; (ocean-method-60 (_type_ dma-buffer) none) + (ocean-method-61 () none) ;; 61 ;; (ocean-method-61 (_type_ dma-buffer) none) + (ocean-method-62 () none) ;; 62 ;; (ocean-method-62 (_type_ dma-buffer) none) + (ocean-method-63 () none) ;; 63 ;; (ocean-method-63 (_type_ dma-buffer) none) + (ocean-method-64 () none) ;; 64 ;; (ocean-method-64 (_type_ dma-buffer) none) + (ocean-method-65 () none) ;; 65 ;; (ocean-method-65 (_type_ dma-buffer) none) + (ocean-method-66 () none) ;; 66 ;; (ocean-method-66 (_type_ dma-buffer) none) + (ocean-method-67 () none) ;; 67 ;; (ocean-method-67 (_type_ dma-buffer) none) + (ocean-method-68 () none) ;; 68 ;; (render-ocean-far (_type_ dma-buffer int) none) + (ocean-method-69 () none) ;; 69 ;; (draw-ocean-far (_type_ dma-buffer) none) + (ocean-method-70 () none) ;; 70 ;; (ocean-texture-setup-constants (_type_ ocean-texture-constants) none) + (ocean-method-71 () none) ;; 71 ;; (ocean-texture-add-constants (_type_ dma-buffer) none) + (ocean-method-72 () none) ;; 72 ;; (ocean-texture-add-envmap (_type_ dma-buffer) none) + (ocean-method-73 () none) ;; 73 ;; (ocean-texture-add-verts (_type_ dma-buffer int) none) + (ocean-method-74 () none) ;; 74 ;; (ocean-texture-add-verts-last (_type_ dma-buffer int int) none) + (ocean-method-75 () none) ;; 75 ;; (ocean-texture-add-call-start (_type_ dma-buffer) none) + (ocean-method-76 () none) ;; 76 ;; (ocean-texture-add-call-rest (_type_ dma-buffer) none) + (ocean-method-77 () none) ;; 77 ;; (ocean-texture-add-call-done (_type_ dma-buffer) none) + (ocean-method-78 () none) ;; 78 ;; (draw-ocean-texture (_type_ dma-buffer int) none) + (ocean-method-79 () none) ;; 79 ;; (ocean-method-79 (_type_ (pointer rgba)) none) + (ocean-method-80 () none) ;; 80 ;; (ocean-method-80 (_type_ dma-buffer) none) + (ocean-method-81 () none) ;; 81 ;; (draw-envmap-debug (_type_ dma-buffer) none) + (ocean-method-82 () none) ;; 82 ;; (ocean-method-82 (_type_ dma-buffer float) int) + (ocean-method-83 () none) ;; 83 ;; (ocean-method-83 (_type_ dma-buffer sky-upload-data vector4w float) none) + ) + ) +|# + +;; (define-extern *ocean-map* object) ;; ocean-map +;; (define-extern *ocean* object) ;; ocean + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; car-textures ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype car-texture-work (structure) + ((adgif-tmpl dma-gif-packet :inline :offset-assert 0) + (sprite-tmpl dma-gif-packet :inline :offset-assert 32) + (white vector4w :inline :offset-assert 64) + (blur vector4w :inline :offset-assert 80) + ) + :method-count-assert 9 + :size-assert #x60 + :flag-assert #x900000060 + ) +|# + +#| +(deftype car-name-info (structure) + ((name basic :offset-assert 0) + (part-dest-name basic :offset-assert 4) + (part-source-name basic :offset-assert 8) + (look-name basic :offset-assert 12) + (layer-name basic :offset-assert 16) + (damage int32 :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) +|# + +;; (define-extern *car-texture-work* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; texture ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype texture-page-dir (basic) + () + :method-count-assert 11 + :size-assert #x14 + :flag-assert #xb00000014 + (:methods + (texture-page-dir-method-9 () none) ;; 9 ;; (unlink-shaders-in-heap (_type_ kheap) int) + (texture-page-dir-method-10 () none) ;; 10 + ) + ) +|# + +(define-extern texture-bpp "Get the bits-per-pixel in the given texture format" (function gs-psm int)) +(define-extern texture-qwc "Get the number of quadwords needed for a given texture size and format. + Does not consider weird PS2 memory layout stuff." + (function int int gs-psm int)) +(define-extern physical-address "Strip off high 8-bits of a pointer, to bypass the uncached memory mappings. + This gives an address suitable for DMAing from main memory." + (function pointer pointer)) +(define-extern dma-buffer-add-ref-texture "Upload a texture, by reference. Doesn't copy the texture into the DMA buffer - just a reference, + so it is up to the user to make sure the texture is valid during DMA time. + Doesn't set up GIF for receiving textures." + (function dma-buffer pointer int int gs-psm none)) + +(define-extern gs-find-block "Lookup offset of block in PS2's swizzled VRAM, as a block index." + (function int int gs-psm int)) +(define-extern gs-page-width "Get the width of a page, in pixels, for the given texture format." + (function gs-psm int)) +(define-extern gs-page-height "Get the height of a page, in pixels, for the given texture format." + (function gs-psm int)) +(define-extern gs-block-width "Get the width of a block, in pixels, for the texture format." + (function gs-psm int)) +(define-extern gs-block-height "Get the height of a block, in pixels, for the texture format." (function gs-psm int)) +(define-extern gs-largest-block "Get the highest block index used by a texture." (function int int gs-psm int)) +(define-extern gs-blocks-used "Get the number of blocks used by a texture. + If the texture isn't an even number of pages, the partially completed + page will be counted as the largest used block. + (gaps in this page are counted as used)" + (function int int gs-psm int)) +(define-extern texture-page-default-allocate + "Texture allocation function for textures that permanently live in VRAM. + The texture data is immediately uploaded, then discarded from the heap. + This should only be called during startup." + (function texture-pool texture-page kheap int texture-page)) +(define-extern texture-page-common-allocate + "Texture allocation function for textures that share the common segment. + The texture remains in RAM, and is uploaded to VRAM as needed as part + of the main drawing DMA chain." + (function texture-pool texture-page kheap int texture-page)) +(define-extern texture-page-font-allocate + "Texture allocation function for font. This temporarily stores them in the common segment, + removes them from RAM. This is a bit of hack. Later font setup code expects the font texture + to be in common, and they will eventually be moved into the upper 8-bits of the depth buffer." + (function texture-pool texture-page kheap int texture-page)) +;; (define-extern locate-sub function) +;; (define-extern warp-locate-sub function) +(define-extern texture-page-common-boot-allocate + "Allocator function for texture loaded at startup time. + For jak 3, this seems to always do default-allocate (permanently in vram?)" + (function texture-pool texture-page kheap int texture-page)) +(define-extern upload-vram-data "Add DMA to later upload a texture, by reference. Sets up the GIF for receiving the texture." + (function dma-buffer int pointer int int none)) +(define-extern upload-vram-pages "Add DMA to upload a texture page. Will only upload the portion of data that is not already present in VRAM. + This is the old Jak 1 background texture uploading system, which had this near/far concept + for different mip levels. By jak 2, the background system switched to masks and uses + the -pris variant of this function." + (function texture-pool texture-pool-segment texture-page tex-upload-mode bucket-id int)) +;; (define-extern upload-vram-pages-car function) +(define-extern update-vram-pages + "Likely a debug function for checking the logic of upload-vram-pages. Unused" + (function texture-pool texture-pool-segment texture-page tex-upload-mode int)) +(define-extern upload-vram-pages-pris + "Similar to upload-vram-pages, but skips the near/far mode and instead uses masks. + The foreground/background renderers will generate masks telling us which textures are used. + This lets us skip uploading entire textures, or mip levels that won't need. + (side note: this optimization is what causes many of the texturing issues in pcsx2, + where the ps2 and pcsx2 disagree on the mip level to use.)" + (function texture-pool texture-pool-segment texture-page bucket-id (pointer int32) int)) +(define-extern texture-page-level-allocate + "Allocation function for level textures." + (function texture-pool texture-page kheap int texture-page)) +(define-extern texture-page-size-check "Check the size of level textures." (function texture-pool level symbol int)) +(define-extern upload-textures "Set up DMA for all texture uploads for this frame." (function texture-pool none)) +(define-extern *txt-dma-list* dma-buffer) +(define-extern texture-relocate "Move a texture in VRAM." (function dma-buffer texture int gs-psm int dma-buffer)) +(define-extern relocate-later + "Unused in jak 2 and likely unsed in jak 3. Feature to postpone some texture copying until + a later frame. This is only used in cases when texture data must be memcpy'd in RAM, to patch up a hole left + by some data that is now permanently in VRAM, and no longer needed. + Note that Jak2/Jak3 don't have this problem since level textures are now never permanent" + (function symbol)) +(define-extern texture-page-login + "'Login' (initialize) a texture page with the pool. + This has a trick - it doesn't actually require you to pass a texture-page object - instead you pass an ID. + If the texture was loaded at all, it will already be known to the texture pool, and this function will do nothing. + However, if the texture is not present, it will be loaded through a call to `loado`, for use in development." + (function texture-id (function texture-pool texture-page kheap int texture-page) kheap texture-page-dir-entry)) +(define-extern lookup-texture-by-id "Get a texture by ID, loading it if needed (for debugging only)." (function texture-id texture)) +(define-extern lookup-texture-by-id-fast "Get a texture by ID. #f if it does not exist." (function texture-id texture)) +(define-extern lookup-texture-by-name "Get a loaded texture by name. Slow." (function string string (pointer texture-page) texture)) +(define-extern lookup-texture-id-by-name "Get the ID of a loaded texture by name. Slow." (function string string texture-id)) +(define-extern lookup-level-texture-by-name "Get a texture from a given level, by name." (function string level (pointer texture-page) texture)) +(define-extern lookup-tex-id-from-texture "Get the texture ID of a given texture. Slow." (function texture texture-id)) +(define-extern lookup-level-texture-id-by-name "Get the texture ID of a given texture in a level. Slow." (function string level int texture-id)) +(define-extern *shader-list* pair) ;; +(define-extern *edit-shader* texture-id) ;; +(define-extern link-texture-by-id + "Add this adgif shader to the linked list of shaders associated with the given texture ID. + Will allocate the link array if it's not already." + (function texture-id adgif-shader texture-page-dir-entry)) +;; (define-extern unlink-textures-by-level function) +(define-extern adgif-shader<-texture! (function adgif-shader texture adgif-shader)) +(define-extern adgif-shader-update! "Update k based on uv-dist" (function adgif-shader texture none)) +(define-extern adgif-shader<-texture-with-update! (function adgif-shader texture adgif-shader)) +(define-extern hack-texture "adjust some values of a texture, likely for debug." (function texture float)) +(define-extern adgif-shader-login "set up an adgif shader with the texture-pool, so it points to the right vram address. + Will remap textures through the level remap table. + If texture is missing, will load it on debug hardware." (function adgif-shader texture)) +(define-extern adgif-shader-login-no-remap + "Set up an adgif shader with the texture-pool, so it points to the right vram adress. + This does not do level tpage remapping, so the texture should be one that's not loaded in a combine level tpage." + (function adgif-shader texture)) +(define-extern adgif-shader-login-fast + "Set up an adgif shader with the texture-pool, so it points to the right vram address. + Will remap through the level table, so can be used to refer to textures inside 'squashed' + level tpages. + Will not load texture if it is missing." (function adgif-shader texture)) +(define-extern adgif-shader-login-no-remap-fast + "Set up an adgif shader with the texture-pool, so it points to the right vram address. + Will not remap through the level tpage table. + Will not load texture if it is missing." (function adgif-shader texture)) +(define-extern adgif-shader<-texture-simple! "Simple adgif-shader to texture, just sets vram address and format stuff. + Intended for use with fancy texture stuff that will later set the other regs." + (function adgif-shader texture adgif-shader)) +(define-extern set-dirty-mask! (function level int int int none)) +(define-extern texture-page-dir-inspect (function texture-page-dir symbol texture-page-dir)) +(define-extern *texture-pool* texture-pool) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; mspace-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype joint (basic) + "A joint from an animated skeleton. This defines the graph of the skeleton, and also the bind pose + used for the mesh data. The joints are shared between all instances of the same model." + ((name basic :offset-assert 4) + (number int32 :offset-assert 8) + (parent joint :offset-assert 12) ;; guessed by decompiler + (bind-pose matrix :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) + +(deftype bone-cache (structure) + "Unused type. Existed in Jak 1, but wasn't used there." + ((bone-matrix uint32 :offset-assert 0) + (parent-matrix uint32 :offset-assert 4) + (dummy uint32 :offset-assert 8) + (frame uint32 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype bone (structure) + "The location and scale of a bone in an animated skeleton. Each instance of a skeleton + has its own copy of the bones. This data is used for collision checking or other gameplay math, + but, despite the name, isn't directly used in rendering." + ((transform matrix :inline :offset-assert 0) + (position vector :inline :offset 48) + (scale vector :inline :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) + +(deftype skeleton (inline-array-class) + "Skeleton is an array of bones for the entire character. The bones are stored in an inline array so they can be + easily dma'd to the scratchpad later." + ((bones bone :inline :dynamic :offset-assert 16) + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + +(deftype cspace (structure) + "A cspace describes how to control a bone. It contains a reference to the joint, bone, and a callback function. + The callback function is used to take the joint transforms out of the joint animation, then update the bone." + ((parent cspace :offset-assert 0) + (joint joint :offset-assert 4) ;; guessed by decompiler + (joint-num int16 :offset-assert 8) + (geo drawable :offset-assert 12) ;; guessed by decompiler + (bone bone :offset-assert 16) + (param0 (function cspace transformq none) :offset-assert 20) ;; guessed by decompiler + (param1 basic :offset-assert 24) + (param2 basic :offset-assert 28) + ) + :method-count-assert 10 + :size-assert #x20 + :flag-assert #xa00000020 + ;; field param1 uses ~A with a signed load. field param2 uses ~A with a signed load. + (:methods + (new (symbol type drawable) _type_) ;; 0 + (reset-and-assign-geo! (_type_ drawable) _type_) ;; 9 + ) + ) + +(deftype cspace-array (inline-array-class) + ((data cspace :dynamic :inline :offset-assert 16 :score 1) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; drawable-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-type region-prim-list structure) + +(deftype drawable (basic) + "Base class for `drawable` scene graph system. + This base class is really abused in many ways, and the meaning of the various methods differ depending + on the exact type. Not even the ID and bsphere here are always populated. + This is used for very high level organization of different rendering data types, and also very low-level + culling/rendering optimizations. It supports both array-of-references and inline-array containers with precise + control over memory layout for use with DMA." + ((id int16 :offset-assert 4) + (bsphere vector :inline :offset-assert 16) + ) + :method-count-assert 17 + :size-assert #x20 + :flag-assert #x1100000020 + (:methods + (login "Initialize the object after it is loaded." (_type_) _type_);; 9 + (draw "Draw the drawable, and typically its children. + This usually means adding stuff to a list to be drawn later, rather than expensive drawing here." (_type_) none) ;; 10 + (drawable-method-11 (_type_) none) ;; 11 ;; (fill-collide-list-from-box (_type_ int collide-list collide-query) int) + (drawable-method-12 (_type_) none) ;; 12 ;; (fill-collide-list-from-line-sphere (_type_ int collide-list collide-query) int) + (collect-stats "Collect triangle/perf statistics for rendering. + This is only called when viewing stats. + The vis-bits and culling registers are loaded during this time." (_type_) none) ;; 13 + (debug-draw "Debug-draw a drawable and its children. Typically uses the debug-draw functions." (_type_) none) ;; 14 + (unpack-vis (_type_ (pointer int8) (pointer int8)) (pointer int8)) ;; 15 + (collect-regions "Fill the region-prim-list with regions that intersect the sphere." (_type_ sphere int region-prim-list) none) ;; 16 + ) + ) + +(deftype drawable-error (drawable) + "A drawable which just represents an error. When drawn, it simply displays a sphere with an error message." + ((name string :offset-assert 32) ;; guessed by decompiler + ) + :method-count-assert 17 + :size-assert #x24 + :flag-assert #x1100000024 + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; drawable-group-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype drawable-group (drawable) + "Base class for an array of references to other drawables. + These are typically used for very high-level organization of drawable." + ((length int16 :offset 6) + (data drawable :dynamic :offset-assert 32) ;; guessed by decompiler + ;; (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 17 + :size-assert #x20 + :flag-assert #x1100000020 + (:methods + (new (symbol type int) _type_) ;; 0 + ) + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; drawable-inline-array-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype drawable-inline-array (drawable) + ((length int16 :offset 6) + ) + :method-count-assert 17 + :size-assert #x20 + :flag-assert #x1100000020 + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; draw-node-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype draw-node (drawable) + "Node in a bounding volume heirarchy. This is a base class, and there are no children. + The child is a pointer to the start of inline array of drawables (note: not a drawable-inline-array, literally a bunch of plain drawables) + The size of this array is child-count. The type is either more draw-nodes, or, some other drawable like tfragment, depending on the flags. + Different renderers have different restrictions on the tree structure, like max child count, or if all children have the same depth. + Generally, tfrag/collide use a very rigid equal depth, max 8 children rule, but with shrub, anything goes. + This is a very awkward data structure to traverse, but it is designed for fast view frustum culling. + Note that there can be multiple ways to reach drawables in here in some cases - for example you can follow + this tree, or check one of the depth arrays found in tfrag. + " + ((child-count uint8 :offset 6) + (flags uint8 :offset 7) + (child drawable :offset 8) ;; guessed by decompiler + (distance float :offset 12) + ) + :method-count-assert 17 + :size-assert #x20 + :flag-assert #x1100000020 + ;; field distance is a float printed as hex? + ) + +(deftype drawable-inline-array-node (drawable-inline-array) + "Top level container for a BVH made of draw-nodes." + ((data draw-node 1 :inline) + (pad uint32) + ) + :flag-assert #x1100000044 + ) + +(deftype draw-node-dma (structure) + "DMA buffer layout for draw node culling routine, which copies draw-nodes directly to scratchpad in bulk. + This would not work with the memory layout of shrub." + ((banka draw-node 32 :inline :offset-assert 0) ;; guessed by decompiler + (bankb draw-node 32 :inline :offset-assert 1024) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x800 + :flag-assert #x900000800 + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; drawable-tree-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype drawable-tree (drawable-group) + () + :flag-assert #x1100000020 + ) + +(deftype drawable-tree-array (drawable-group) + () + :flag-assert #x1100000020 + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; drawable-actor-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype drawable-actor (drawable) + "Wrapper around an entity-actor to put it in the drawable system. + Note that this is never used to actually draw actors - it is just used as a list of all entity-actors + for the entity/birth system." + ((actor entity-actor :offset 8) ;; guessed by decompiler + ) + :method-count-assert 17 + :size-assert #x20 + :flag-assert #x1100000020 + ) + +(deftype drawable-tree-actor (drawable-tree) + "Adapter for putting the actors in the tree-array." + () + :flag-assert #x1100000020 + ) + +(deftype drawable-inline-array-actor (drawable-inline-array) + "Array of drawable-actors." + ((data drawable-actor 1 :inline) + (pad uint8 4)) + :flag-assert #x1100000044 + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; region-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-type region-prim-area structure) + +(deftype region (structure) + "A region is a closed volume that you can, enter, exit, and be inside. + This stores a unique, and script functions for a single region. + These are stored separately from the actual geometry to allow the geometry to be smaller + and fit in scratchpad/cache better." + ((id uint32 :offset-assert 0) + (on-enter pair :offset-assert 4) ;; guessed by decompiler + (on-inside pair :offset-assert 8) ;; guessed by decompiler + (on-exit pair :offset-assert 12) ;; guessed by decompiler + ) + :method-count-assert 10 + :size-assert #x10 + :flag-assert #xa00000010 + ;; field on-enter uses ~A with a signed load. field on-inside uses ~A with a signed load. field on-exit uses ~A with a signed load. + (:methods + (point-in-region-debug! "Debug check to see if point is in region. This is not efficient, since it has to find the parent geometry of this region." (_type_ vector) symbol) ;; 9 + ) + ) + +(deftype region-array (inline-array-class) + "Array of region." + ((data region :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + +(deftype drawable-region-prim (drawable) + "Base class for a region + geometry. + Note that all child classes of this must be 32-bytes." + ((region region :offset 8) + ) + :method-count-assert 20 + :size-assert #x20 + :flag-assert #x1400000020 + (:methods + (debug-draw-region (_type_ int) none) ;; 17 + (track-region (_type_ region-prim-area) symbol) ;; 18 + (within-area? "@returns Whether or not the object overlaps with the provided [[region-prim-area]]'s extent" (_type_ region-prim-area) symbol) ;; 19 + ) + ) + +(deftype drawable-tree-region-prim (drawable-tree) + "Top-level container for all regions of a level." + ((name symbol :offset 8) + (data2 drawable-inline-array :dynamic :offset 32 :score 1)) + :method-count-assert 19 + :size-assert #x20 + :flag-assert #x1300000020 + (:methods + (drawable-tree-region-prim-method-17 (_type_ vector) symbol) ;; 17 + (debug-print (_type_ vector object) none) ;; 18 + ) + ) + +(deftype drawable-inline-array-region-prim (drawable-inline-array) + "Inline array of drawable-region-prim. This actually stores child classes, but they are + exactly the same size as the parent, so it's okay." + ((data drawable-region-prim 1 :inline :offset-assert 32) + (pad uint8 4)) + :flag-assert #x1100000044 + ) + +(deftype drawable-region-sphere (drawable-region-prim) + "Region where the bsphere of the drawable is the volume." + () + :method-count-assert 20 + :size-assert #x20 + :flag-assert #x1400000020 + ) + +(deftype region-face-data (structure) + "Data to store a single planar face, as a normal and list of vertices." + ((normal vector :inline :offset-assert 0) + (normal-offset float :offset-assert 12 :overlay-at (-> normal w)) + (num-points uint32 :offset-assert 16) + (points vector :dynamic :inline :offset-assert 32) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype drawable-region-face (drawable-region-prim) + "A drawable-region which is just a face. Unclear if `on-inside` is used." + ((data region-face-data :offset 12) + ) + :method-count-assert 20 + :size-assert #x20 + :flag-assert #x1400000020 + ) + +(deftype region-face-array (inline-array-class) + "An array of faces that hopefully make a closed volume." + ((data drawable-region-face :dynamic :inline :offset 16) ;; guessed by decompiler + (pad uint32) + ) + :method-count-assert 14 + :size-assert #x14 + :flag-assert #xe00000014 + ) + +(deftype drawable-region-volume (drawable-region-prim) + "A drawable-region which is a bunch of faces that represent a closed volume." + ((faces region-face-array :offset 12) ;; guessed by decompiler + ) + :method-count-assert 20 + :size-assert #x20 + :flag-assert #x1400000020 + ) + +(deftype region-prim-list (structure) + "A list of drawable-region-prim. This is the return type of queries like `which regions contain this point?`" + ((num-items int32 :offset-assert 0) + (items drawable-region-prim 320 :offset-assert 4) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x504 + :flag-assert #x900000504 + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; advanced-options ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; generic-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype gsf-vertex (structure) + "Vertex used by generic. GSF = generic stripped fragment?" + ((data uint32 8 :offset-assert 0) ;; guessed by decompiler + (byte uint8 32 :offset 0) ;; guessed by decompiler + (quad uint128 2 :offset 0) ;; guessed by decompiler + (vt qword :inline :offset 0) + (pos vector3s :inline :offset 0) + (tex vector2uh :inline :offset 12) + (nrm vector3s :inline :offset 16) + (nc qword :inline :offset 16) + (clr vector4ub :inline :offset 28) + (dtex vector2uh :inline :offset 16) + (dclr vector4ub :inline :offset 20) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype gsf-fx-vertex (structure) + "Color/texture data only. Possibly used to share with a gsf-vertex with + the same position/normal." + ((clr vector4ub :inline :offset-assert 0) + (tex vector2uh :inline :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype gsf-header (structure) + "Header for generic data." + ((num-strips uint8 :offset-assert 0) + (num-new-vtxs uint8 :offset-assert 1) + (num-dps uint16 :offset-assert 2) + (num-vtxs uint16 :offset-assert 4) + (strip-table uint8 10 :offset-assert 6) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype gsf-ik (structure) + ((index uint8 :offset-assert 0) + (no-kick uint8 :offset-assert 1) + ) + :method-count-assert 9 + :size-assert #x2 + :flag-assert #x900000002 + ) + +(deftype gsf-info (structure) + ((ptr-iks uint32 :offset-assert 0) + (ptr-verts uint32 :offset-assert 4) + (ptr-fx uint32 :offset-assert 8) + (dummy2 uint32 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype gsf-buffer (structure) + ((data uint8 8192 :offset-assert 0) ;; guessed by decompiler + (info gsf-info :inline :offset 0) + (header gsf-header :inline :offset 16) + (work-area uint8 :dynamic :offset 32) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x2000 + :flag-assert #x900002000 + ) + +(deftype generic-frag (structure) + ((start-pos uint16 :offset-assert 0) + (end-pos uint16 :offset-assert 2) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype generic-strip (structure) + ((pos uint16 :offset-assert 0) + (len uint16 :offset-assert 2) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype generic-envmap-saves (structure) + ((index-mask vector4w :inline :offset-assert 0) + (verts uint128 12 :offset-assert 16) ;; guessed by decompiler + (kicks uint128 4 :offset-assert 208) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x110 + :flag-assert #x900000110 + ) + +(deftype generic-interp-job (structure) + ((job-type uint16 :offset-assert 0) + (num uint16 :offset-assert 2) + (first uint16 :offset-assert 4) + (pad uint16 :offset-assert 6) + (ptr-data uint32 :offset-assert 8) + (morph-z uint16 :offset-assert 12) + (morph-w uint16 :offset-assert 14) + ) + :pack-me + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype generic-saves (structure) + ((ptr-dma uint32 :offset-assert 0) + (ptr-vtxs uint32 :offset-assert 4) + (ptr-clrs uint32 :offset-assert 8) + (ptr-texs uint32 :offset-assert 12) + (ptr-env-clrs uint32 :offset-assert 16) + (ptr-env-texs uint32 :offset-assert 20) + (cur-outbuf uint32 :offset-assert 24) + (ptr-fx-buf uint32 :offset-assert 28) + (xor-outbufs uint32 :offset-assert 32) + (num-dps uint32 :offset-assert 36) + (qwc uint32 :offset-assert 40) + (gsf-buf gsf-buffer :offset-assert 44) + (ptr-shaders uint32 :offset-assert 48) + (ptr-env-shader uint32 :offset-assert 52) + (is-envmap uint16 :offset-assert 56) + (is-translucent uint16 :offset-assert 58) + (basep uint32 :offset-assert 60) + (ptr-interp-job generic-interp-job :offset-assert 64) + (gifbuf-adr uint32 :offset-assert 68) + (inbuf-adr uint32 :offset-assert 72) + (fade-val uint32 :offset-assert 76) + (time-of-day-color rgba :offset-assert 80) ;; guessed by decompiler + (to-vu0-waits uint32 :offset-assert 84) + (to-spr-waits uint32 :offset-assert 88) + (from-spr-waits uint32 :offset-assert 92) + (envmap generic-envmap-saves :inline :offset-assert 96) + ) + :method-count-assert 9 + :size-assert #x170 + :flag-assert #x900000170 + ) + +(deftype generic-gif-tag (structure) + ((data uint32 4 :offset-assert 0) ;; guessed by decompiler + (qword qword :inline :offset 0) + (fan-prim gif-tag-prim :offset 0) ;; guessed by decompiler + (str-prim gif-tag-prim :offset 4) ;; guessed by decompiler + (regs gif-tag-regs-32 :offset 8) ;; guessed by decompiler + (num-strips uint32 :offset 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype generic-envmap-consts (structure) + ((consts vector :inline :offset-assert 0) + (strgif generic-gif-tag :inline :offset-assert 16) + (colors vector4w :inline :offset-assert 32) + (shader adgif-shader :inline :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) + +(deftype generic-consts (structure) + ((dma-header dma-packet :inline :offset-assert 0) + (vif-header uint32 4 :offset-assert 16) ;; guessed by decompiler + (dma-ref-vtxs dma-packet :inline :offset-assert 32) + (dma-cnt-call dma-packet :inline :offset-assert 48) + (matrix matrix :inline :offset-assert 64) + (base-strgif generic-gif-tag :inline :offset-assert 128) + (alpha-opaque gs-adcmd :inline :offset-assert 144) + (alpha-translucent gs-adcmd :inline :offset-assert 160) + (ztest-normal gs-adcmd :inline :offset-assert 176) + (ztest-opaque gs-adcmd :inline :offset-assert 192) + (adcmd-offsets uint8 16 :offset-assert 208) ;; guessed by decompiler + ;;(adcmds UNKNOWN 4 :offset-assert 144) + (stcycle-tag uint32 :offset-assert 224) + (unpack-vtx-tag uint32 :offset-assert 228) + (unpack-clr-tag uint32 :offset-assert 232) + (unpack-tex-tag uint32 :offset-assert 236) + (mscal-tag uint32 :offset-assert 240) + (flush-tag uint32 :offset-assert 244) + (reset-cycle-tag uint32 :offset-assert 248) + (dummy0 uint32 :offset-assert 252) + (dma-tag-cnt uint64 :offset-assert 256) + (envmap generic-envmap-consts :inline :offset-assert 272) + (light-consts vector :inline :offset-assert 400) + (texture-offset uint16 8 :offset-assert 416) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x1b0 + :flag-assert #x9000001b0 + ) + +(deftype generic-storage (structure) + ((data uint128 16 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x100 + :flag-assert #x900000100 + ) + +#| +(deftype gsf-vertex-array (UNKNOWN) + ((vtx gsf-vertex :dynamic :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 0 + :size-assert #x0 + :flag-assert #x0 + ) +|# + +#| +(deftype gsf-fx-vertex-array (UNKNOWN) + ((data gsf-fx-vertex :dynamic :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 0 + :size-assert #x0 + :flag-assert #x0 + ) +|# + +(deftype gsf-vertex-array (structure) + ((vtx gsf-vertex :dynamic :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x0 + :flag-assert #x900000000 + ) + +(deftype gsf-fx-vertex-array (structure) + ((data gsf-fx-vertex :dynamic :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x0 + :flag-assert #x900000000 + ) + +(define-extern *gsf-buffer* gsf-buffer) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; cloth-art-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype cloth-pt (structure) + ((pt vector :inline :offset-assert 0) + (u float :offset-assert 16) + (v float :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) + +(deftype anchor-transform (structure) + ((offset vector :inline :offset-assert 0) + (joint-name string :offset-assert 16) ;; guessed by decompiler + (joint int16 :offset-assert 20) + (constraint-index int16 :offset-assert 22) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) + +(deftype sphere-transform (structure) + ((offset vector :inline :offset-assert 0) + (joint-name string :offset-assert 16) ;; guessed by decompiler + (radius float :offset-assert 20) + (joint int16 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1a + :flag-assert #x90000001a + ) + +(deftype disc-transform (structure) + ((offset vector :inline :offset-assert 0) + (normal vector :inline :offset-assert 16) + (joint-name basic :offset-assert 32) + (radius float :offset-assert 36) + (joint int16 :offset-assert 40) + (start-particle-index int16 :offset-assert 42) + (end-particle-index int16 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x2e + :flag-assert #x90000002e + ) + +(deftype anchor-transform-array (inline-array-class) + ((data anchor-transform :dynamic :inline :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + +(deftype sphere-transform-array (inline-array-class) + ((data sphere-transform :dynamic :inline :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + +(deftype disc-transform-array (inline-array-class) + ((data disc-transform :dynamic :inline :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + +(deftype cloth-thickness-array (inline-array-class) + ((data uint8 :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + +;; +++cloth-art-h:cloth-flag +(defenum cloth-flag + :type uint64 + :bitfield #t + ) +;; ---cloth-art-h:cloth-flag + +(deftype cloth-params (structure) + ((mesh int16 :offset-assert 0) + (gravity-constant meters :offset-assert 4) ;; meters + (wind-constant float :offset-assert 8) + (cloth-width uint16 :offset-assert 12) + (num-sphere-constraints uint16 :offset-assert 14) + (num-disc-constraints uint16 :offset-assert 16) + (num-anchor-points uint16 :offset-assert 18) + (flags cloth-flag :offset-assert 24) ;; cloth-flag + (tex-name string :offset-assert 32) ;; guessed by decompiler + (tex-name2 string :offset-assert 36) ;; guessed by decompiler + (tex-name3 string :offset-assert 40) ;; guessed by decompiler + (alt-tex-name string :offset-assert 44) ;; guessed by decompiler + (alt-tex-name2 string :offset-assert 48) ;; guessed by decompiler + (alt-tex-name3 string :offset-assert 52) ;; guessed by decompiler + (cloth-thickness float :offset-assert 56) + (initial-xform int16 :offset-assert 60) + (drag float :offset-assert 64) + (ball-collision-radius float :offset-assert 68) ;; meters + (num-iterations int8 :offset-assert 72) + (timestep-frequency int8 :offset-assert 73) + (secret-disable uint64 :offset-assert 80) ;; game-secrets + ) + :method-count-assert 9 + :size-assert #x58 + :flag-assert #x900000058 + ) + +(deftype cloth-base (basic) + () + :method-count-assert 11 + :size-assert #x4 + :flag-assert #xb00000004 + (:methods + (update! (_type_) int) ;; 9 + (setup-from-params! (_type_ cloth-params handle) int) ;; 10 + ) + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; art-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype joint-anim (basic) + "Base class for all joint animations. These are animations that store joint transforms." + ((name string :offset-assert 4) ;; guessed by decompiler + (number int16 :offset-assert 8) + (length int16 :offset-assert 10) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) + +(deftype joint-anim-matrix (joint-anim) + "Joint animation which stores matrices directly. Not used." + ((data matrix :inline :dynamic :offset 16)) + :flag-assert #x900000010 + ) + +(deftype joint-anim-transformq (joint-anim) + "Joint animation which stores transformq's directly. Not used." + ((data transformq :dynamic :inline :offset-assert 16) ;; guessed by decompiler + ;; (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype joint-anim-drawable (joint-anim) + "Mysterious unused joint animation type." + ((data drawable :dynamic :offset-assert 12) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) + +(deftype joint-anim-frame (structure) + "Frame containing all joint transforms. Note that there are two special frames: align and prejoint. + The 'align' frame is used for the complicated animation alignment system, which allows the animation to move + a character, among other things. The prejoint is just the root of the skeleton. + The remaining transformq's are the joint transforms you'd expect." + ((matrices matrix 2 :inline :offset-assert 0) ;; guessed by decompiler + (data transformq :dynamic :inline :offset-assert 128) ;; guessed by decompiler + ) + (:methods + (new (symbol type int) _type_) + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) + +(deftype joint-anim-compressed-hdr (structure) + "Header for the compressed joint animation format." + ((control-bits uint32 14 :offset-assert 0) ;; guessed by decompiler + (num-joints uint32 :offset-assert 56) + (matrix-bits uint32 :offset-assert 60) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +(deftype joint-anim-compressed-fixed (structure) + ((hdr joint-anim-compressed-hdr :inline :offset-assert 0) + (offset-64 uint32 :offset-assert 64) + (offset-32 uint32 :offset-assert 68) + (offset-16 uint32 :offset-assert 72) + (reserved uint32 :offset-assert 76) + (data vector 133 :inline :offset-assert 80) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x8a0 + :flag-assert #x9000008a0 + ) + +(deftype joint-anim-compressed-frame (structure) + ((offset-64 uint32 :offset-assert 0) + (offset-32 uint32 :offset-assert 4) + (offset-16 uint32 :offset-assert 8) + (reserved uint32 :offset-assert 12) + (data vector 133 :inline :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x860 + :flag-assert #x900000860 + ) + +(deftype joint-anim-compressed-control (structure) + ((num-frames uint16 :offset-assert 0) + (flags uint16 :offset-assert 2) + (fixed-qwc uint32 :offset-assert 4) + (frame-qwc uint32 :offset-assert 8) + (fixed joint-anim-compressed-fixed :offset-assert 12) + (data joint-anim-compressed-frame :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype art (basic) + "Base class for anything considered `art`. This is typically foreground model data. + This can be either an art container containing more arts, or an actual art thing (art-element)." + ((name string :offset 8) ;; guessed by decompiler + (length int32 :offset 12) + (extra res-lump :offset 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x14 + :flag-assert #xe00000014 + (:methods + (login (_type_) _type_) ;; 9 + (art-method-10 (_type_) _type_) ;; 10 + (get-art-by-name-method "Look inside this art for an art with the given name and type. Return #f if not found" (_type_ string type) basic) ;; 11 + (get-art-idx-by-name-method "Look inside this art for an art with the given name and type and return the index of the art. Return #f if not found." (_type_ string type) int) ;; 12 + (contains-art-for-other-group? "Some art groups have placeholder #f's for some art that will be loaded separately as needed. + Does this art group contain art that needs to be added to another group?" (_type_) symbol) ;; 13 + ) + ) + +(deftype art-element (art) + "Base class Art which is not a container of more art." + ((master-art-group-name string :offset-assert 20) ;; guessed by decompiler + (master-art-group-index int32 :offset-assert 24) + (pad uint8 20) + ) + :method-count-assert 14 + :size-assert #x30 + :flag-assert #xe00000030 + ) + +(deftype art-mesh-anim (art-element) + "An unused mesh animation." + ((data basic :dynamic)) + :flag-assert #xe00000030 + ) + +(declare-type merc-eye-anim-block structure) +(deftype art-joint-anim (art-element) + "Art for a joint animation. Also contains the eye animation." + ((eye-anim merc-eye-anim-block :offset 28) + (blend-shape-anim (pointer int8) :offset 32) ;; guessed by decompiler + (frames joint-anim-compressed-control :offset 36) + (speed float :offset 48) + (artist-base float :offset-assert 52) + (artist-step float :offset-assert 56) + ) + :method-count-assert 14 + :size-assert #x3c + :flag-assert #xe0000003c + ;; field blend-shape-anim uses ~A with a signed load. + ) + +(deftype art-group (art) + "Art which is a list of more art. The -ag files are an art group with all the art needed for a + actor, like the mesh, animations, shadow mesh, skeleton, etc." + ((info file-info :offset 4) + (data art-element :score -1 :dynamic :offset 32) ;; might just be art? + ) + :flag-assert #x1000000020 + (:methods + (relocate (_type_ kheap (pointer uint8)) none :replace) ;; 7 + (link-art-to-master (_type_) art-group) + (unlink-art-to-master (_type_) int) + ) + ) + +(deftype art-mesh-geo (art-element) + "Unused art format for a mesh. This might have been for the renderer that came before merc." + ((data basic :dynamic :offset-assert 48) + ) + :flag-assert #xe00000030 + ) + +(deftype art-joint-geo (art-element) + "Collection of joints for an actor." + ((data joint :dynamic :offset-assert 48) + ) + :flag-assert #xe00000030 + ) + +(deftype art-cloth-geo (art-element) + ((anchor-transforms anchor-transform-array :offset-assert 48) ;; guessed by decompiler + (sphere-transforms sphere-transform-array :offset-assert 52) ;; guessed by decompiler + (disc-transforms disc-transform-array :offset-assert 56) ;; guessed by decompiler + (cloth-thickness cloth-thickness-array :offset-assert 60) ;; guessed by decompiler + (thickness-scalar float :offset-assert 64) + (num-points int32 :offset 12) + (mesh cloth-pt :dynamic :inline :offset 80) ;; todo + ) + :method-count-assert 14 + :size-assert #x50 + :flag-assert #xe00000050 + ) + +(deftype skeleton-group (art-group) + "Unlike other art types, the skeleton-groups are defined in GOAL code. + This stores settings like the name of the art-group, shadow/level-of-detail settings, etc." + ((art-group-name string :offset-assert 32) ;; guessed by decompiler + (jgeo int16 :offset-assert 36) + (janim int16 :offset-assert 38) + (bounds vector :inline :offset-assert 48) + (radius meters :offset-assert 60 :overlay-at (-> bounds w)) + (mgeo int16 6 :offset-assert 64) ;; guessed by decompiler + (max-lod int32 :offset-assert 76) + (lod-dist float 6 :offset-assert 80) ;; guessed by decompiler + (longest-edge meters :offset-assert 104) + (texture-level int8 :offset-assert 108) + (version int8 :offset-assert 109) + (shadow int16 :offset-assert 110) + (shadow-joint-index int8 :offset-assert 112) + (origin-joint-index int8 :offset-assert 113) + (sort int8 :offset-assert 114) + (light-index uint8 :offset-assert 115) + (clothing (array cloth-params) :offset-assert 116) ;; guessed by decompiler + (global-effects uint8 :offset-assert 120) + ) + :method-count-assert 17 + :size-assert #x79 + :flag-assert #x1100000079 + (:methods + (add-to-loading-level (_type_) skeleton-group) ;; 16 + ) + ) + +(declare-type merc-ctrl structure) +(deftype lod-group (structure) + "A single level of detail mesh." + ((geo merc-ctrl :offset-assert 0) ;; guessed by decompiler + (dist meters :offset-assert 4) + ) + :pack-me + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype lod-set (structure) + "All the different level-of-detail meshes for an actor." + ((lod lod-group 6 :inline :offset-assert 0) ;; guessed by decompiler + (max-lod int8 :offset-assert 48) + ) + :allow-misaligned + :method-count-assert 10 + :size-assert #x31 + :flag-assert #xa00000031 + (:methods + (setup-lods! (_type_ skeleton-group art-group entity) _type_) ;; 9 + ) + ) + +(defenum draw-control-status + :type uint32 + :bitfield #t + (close-to-screen 0) + (no-draw 1) + (no-draw-temp 2) + (on-screen 3) + (uninited 4) + (no-draw-bounds 5) + (no-closest-distance 6) + (math-skel 7) + (force-vu1 8) + (no-draw-bounds2 9) + (force-fade 10) + (warp-cross-fade 11) + (lod-set 12) + (disable-fog 13) + (hud 14) + (no-bounds-check 15) + (suppress-vport-0 16) + (suppress-vport-1 17) + (disable-shadow 18) + ) + +(defenum draw-control-data-format + :type uint8 + :bitfield #f + (pris 0) + (merc 1) + ) + +(defenum draw-control-global-effect + :type uint8 + :bitfield #t + (bit-0 0) + (bit-1 1) + (title-light 2) + (rim-lights 3) + (front-rear-lights 4) + (shield-lights 5) + (disable-envmap 6) + (no-textures 7) + ) + +(declare-type ripple-control basic) +(declare-type shadow-geo structure) +(declare-type shadow-control structure) +(declare-type cloth-base basic) +(declare-type verlet-particle-system cloth-base) +(declare-type cloth-system verlet-particle-system) +(declare-type joint-control basic) + +(deftype draw-control (basic) + "The draw-control is a collection of all the stuff that the foreground rendering system needs to draw something. + Each process-drawable has a draw-control." + ((process process-drawable :offset-assert 4) ;; guessed by decompiler + (status draw-control-status :offset-assert 8) + (data-format draw-control-data-format :offset-assert 12) ;; draw-control-data-format + (global-effect draw-control-global-effect :offset-assert 13) + (art-group art-group :offset-assert 16) ;; guessed by decompiler + (jgeo art-joint-geo :offset-assert 20) ;; guessed by decompiler + (mgeo merc-ctrl :offset-assert 24) ;; guessed by decompiler + (dma-add-func (function process-drawable draw-control symbol object none) :offset-assert 28) ;; guessed by decompiler + (skeleton skeleton :offset-assert 32) ;; guessed by decompiler + (lod-set lod-set :inline :offset-assert 36) + ;;(lod UNKNOWN 6 :offset-assert 36) + (max-lod int8 :offset 84) + (force-lod int8 :offset-assert 85) + (cur-lod int8 :offset-assert 86) + (cur-lods int8 2 :offset-assert 87) + (effect-masks uint64 2 :offset-assert 96) + (prev-seg-mask uint64 :offset-assert 112) + (want-lod int8 :offset-assert 120) + (ripple ripple-control :offset-assert 124) ;; guessed by decompiler + (longest-edge meters :offset-assert 128) + (longest-edge? uint32 :offset 128) + (light-index uint8 :offset-assert 132) + (shadow-mask uint8 :offset-assert 133) + (level-index uint8 :offset-assert 134) + (death-draw-overlap uint8 :offset-assert 135) + (death-timer uint8 :offset-assert 136) + (death-timer-org uint8 :offset-assert 137) + (death-vertex-skip uint16 :offset-assert 138) + (death-effect uint32 :offset-assert 140) + (shadow shadow-geo :offset-assert 144) ;; guessed by decompiler + (shadow-ctrl shadow-control :offset-assert 148) ;; guessed by decompiler + (distance meters :offset-assert 152) + (origin vector :inline :offset-assert 160) + (bounds vector :inline :offset-assert 176) + (radius meters :offset 188) + (color-mult rgbaf :inline :offset-assert 192) + (color-emissive rgbaf :inline :offset-assert 208) + (effect-mask uint64 :offset-assert 224) + (seg-mask uint64 :offset-assert 232) + (origin-joint-index uint8 :offset-assert 240) + (shadow-joint-index uint8 :offset-assert 241) + (force-fade uint8 :offset-assert 242) + (default-texture-page uint8 :offset-assert 243) + (shadow-values uint32 :offset-assert 244) + (cloth-instances (array cloth-system) :offset-assert 248) ;; guessed by decompiler + (lights vu-lights :offset-assert 252) + (envmap-override float :offset-assert 256) + ) + :method-count-assert 16 + :size-assert #x104 + :flag-assert #x1000000104 + ;; field draw-control-global-effect is likely a value type. + (:methods + (new (symbol type process symbol) _type_) ;; 0 + (get-skeleton-origin (_type_) vector) ;; 9 + (lod-set! (_type_ int) none) ;; 10 + (lods-assign! (_type_ lod-set) none) ;; 11 + (setup-masks (_type_ int int) none) ;; 12 + (setup-cspace-and-add (_type_ art-joint-geo symbol) cspace-array) ;; 13 + (draw-control-method-14 (_type_ cspace-array joint-control) none) ;; 14 + (do-joint-math (_type_ cspace-array joint-control) none) ;; 15 + ) + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; generic-vu1-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype pris-mtx (structure) + "Matrix for merc rendering. Named after the earlier 'pris' renderer. + Contains a transformation matrix for vertices, one for normals, and a scale. + This matrix is likely not used by generic VU1, but is used by the merc -> generic converter." + ((data float 32 :offset-assert 0) ;; guessed by decompiler + (vector vector 8 :offset 0) ;; guessed by decompiler + (t-mtx matrix :inline :offset 0) + (n-mtx matrix3 :inline :offset 64) + (scale vector :inline :offset 112) + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) + +(deftype generic-pris-mtx-save (structure) + ((loc-mtx pris-mtx :inline :offset-assert 0) + (par-mtx pris-mtx :inline :offset-assert 128) + (dif-mtx pris-mtx :inline :offset-assert 256) + ) + :method-count-assert 9 + :size-assert #x180 + :flag-assert #x900000180 + ) + +(deftype generic-constants (structure) + "Constant data sent to VU1 for generic rendering." + ((fog vector :inline :offset-assert 0) + (adgif gs-gif-tag :inline :offset-assert 16) ;; gs-gif-tag :inline + (hvdf-offset vector :inline :offset-assert 32) + (hmge-scale vector :inline :offset-assert 48) + (invh-scale vector :inline :offset-assert 64) + (guard vector :inline :offset-assert 80) + (flush qword :inline :offset-assert 96) + (stores qword :inline :offset-assert 112) + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) + +(deftype generic-shrub-constants (structure) + ((shrub-giftag generic-gif-tag :inline :offset-assert 0) + (shrub-adnop qword :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype gcf-shader (structure) + ((adgif uint128 5 :offset-assert 0) ;; guessed by decompiler + (shader adgif-shader :inline :offset 0) + (pos uint32 :offset 12) + (num uint32 :offset 28) + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) + +(deftype gcf-control (structure) + ((matrix matrix :inline :offset-assert 0) + (giftag generic-gif-tag :inline :offset-assert 64) + (adnops gs-adcmd 2 :inline :offset-assert 80) ;; guessed by decompiler + (num-strips uint32 :offset 76) + (num-dps uint32 :offset 92) + (kick-offset uint32 :offset 108) + (shader gcf-shader :inline :dynamic :offset-assert 112) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x70 + :flag-assert #x900000070 + ) + +(deftype gcf-vertex (structure) + ((tex vector4w :inline :offset-assert 0) + (clr gs-packed-rgba :inline :offset-assert 16) + (pos gs-packed-xyzw :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; merc-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype ripple-merc-query (inline-array-class) + "Information about which merc vertices to apply the 'ripple' effect to." + ((start-vertex int32 :offset-assert 16) + (vertex-skip int32 :offset-assert 20) + (vertex-count int32 :offset-assert 24) + (current-loc int32 :offset-assert 28) + (data vector :inline :dynamic :offset-assert 32) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x20 + :flag-assert #xe00000020 + ) + +(deftype merc-byte-header (structure) + "Header for a single [[merc-fragment]] uploaded to the VU." + ((srcdest-off uint8 :offset-assert 0) + (rgba-off uint8 :offset-assert 1) + (lump-off uint8 :offset-assert 2) + (fp-off uint8 :offset-assert 3) + (mat1-cnt uint8 :offset-assert 4) + (mat2-cnt uint8 :offset-assert 5) + (mat3-cnt uint8 :offset-assert 6) + (samecopy-cnt uint8 :offset-assert 7) + (crosscopy-cnt uint8 :offset-assert 8) + (strip-len uint8 :offset-assert 9) + (mm-quadword-fp-off uint8 :offset-assert 10) + (mm-quadword-size uint8 :offset-assert 11) + (perc-off uint8 :offset-assert 12) + (mat-slot uint8 10 :offset-assert 13) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x17 + :flag-assert #x900000017 + ) + +(deftype merc-fragment (structure) + "A single merc fragment that fits into VU memory." + ((header merc-byte-header :inline :offset-assert 0) + (rest uint8 1 :offset-assert 23) ;; guessed by decompiler + ) + :method-count-assert 10 + :size-assert #x18 + :flag-assert #xa00000018 + (:methods + (login-adgifs (_type_) merc-fragment) ;; 9 + ) + ) + +(deftype merc-vtx (structure) + "A packed merc vertex." + ((mat-0 uint8 :offset-assert 0) + (mat-1 uint8 :offset-assert 1) + (nrm-x uint8 :offset-assert 2) + (pos-x uint8 :offset-assert 3) + (dst-0 uint8 :offset-assert 4) + (dst-1 uint8 :offset-assert 5) + (nrm-y uint8 :offset-assert 6) + (pos-y uint8 :offset-assert 7) + (tex-s uint8 :offset-assert 8) + (tex-t uint8 :offset-assert 9) + (nrm-z uint8 :offset-assert 10) + (pos-z uint8 :offset-assert 11) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) + +(deftype merc-fp-header (structure) + "Merc header for a [[merc-fragment]]'s floating point data." + ((x-add float :offset-assert 0) + (y-add float :offset-assert 4) + (z-add float :offset-assert 8) + (shader-cnt uint8 :offset-assert 12) + (kick-info-offset uint8 :offset-assert 13) + (kick-info-step uint8 :offset-assert 14) + (hword-cnt uint8 :offset-assert 15) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype merc-mat-dest (structure) + "Metadata for a merc matrix upload." + ((matrix-number uint8 :offset-assert 0) + (matrix-dest uint8 :offset-assert 1) + ) + :pack-me + :method-count-assert 9 + :size-assert #x2 + :flag-assert #x900000002 + ) + +(deftype merc-fragment-control (structure) + "Data about a [[merc-fragment]] needed for merc DMA generation." + ((unsigned-four-count uint8 :offset-assert 0) + (lump-four-count uint8 :offset-assert 1) + (fp-qwc uint8 :offset-assert 2) + (mat-xfer-count uint8 :offset-assert 3) + (mat-dest-data merc-mat-dest :dynamic :inline :offset-assert 4) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype merc-blend-ctrl (structure) + "Information about the vertices of a model modified by BLERC." + ((blend-vtx-count uint8 :offset-assert 0) + (nonzero-index-count uint8 :offset-assert 1) + (bt-index uint8 :dynamic :offset-assert 2) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x2 + :flag-assert #x900000002 + ) + +(deftype mei-envmap-tint (structure) + "Data for the extra 'envmap tint' effect." + ((fade0 float :offset-assert 0) + (fade1 float :offset-assert 4) + (tint rgba :offset-assert 8) ;; guessed by decompiler + (dummy int32 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype mei-texture-scroll (structure) + "Data for the extra 'texscroll' effect." + ((max-dist float :offset-assert 0) + (st-int-scale uint8 :offset-assert 4) + (time-factor uint8 :offset-assert 5) + (scroll-dir uint8 :offset-assert 6) + (cached-time uint8 :offset-assert 7) + (time-delta uint8 :offset-assert 8) + (dummy uint8 7 :offset-assert 9) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype mei-ripple (structure) + "Data for the extra 'ripple' effect." + ((x-base float :offset-assert 0) + (z-base float :offset-assert 4) + (grid-size float :offset-assert 8) + (angle float :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype merc-extra-info (structure) + "Info for merc extra effects." + ((envmap-tint-offset uint8 :offset-assert 0) + (shader-offset uint8 :offset-assert 1) + (texture-scroll-offset uint8 :offset-assert 2) + (ripple-offset uint8 :offset-assert 3) + (dummy uint8 12 :offset-assert 4) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +;; moved from end of merc-h definitions +(deftype merc-blend-data (structure) ;; was unknown! + "Packed BLERC data." + ((int8-data int8 :dynamic :offset-assert 0) ;; guessed by decompiler + ) + ) + +(deftype merc-effect (structure) + "A collection of [[merc-fragment]]s with data for any extra effects." + ((frag-geo merc-fragment :offset-assert 0) + (frag-ctrl merc-fragment-control :offset-assert 4) + (blend-data merc-blend-data :offset-assert 8) + (blend-ctrl merc-blend-ctrl :offset-assert 12) + (merc-effect-version uint8 :offset-assert 16) + (effect-bits uint8 :offset-assert 17) ;; effect-bits + (frag-count uint16 :offset-assert 18) + (blend-frag-count uint16 :offset-assert 20) + (tri-count uint16 :offset-assert 22) + (dvert-count uint16 :offset-assert 24) + (texture-index uint8 :offset-assert 26) + (effect-usage uint8 :offset-assert 27) + (extra-info merc-extra-info :offset-assert 28) + ) + :method-count-assert 10 + :size-assert #x20 + :flag-assert #xa00000020 + (:methods + (merc-effect-method-9 () none) ;; 9 ;; (login-adgifs (_type_) none) + ) + ) + +(deftype merc-eye-ctrl (structure) + "Eye info for both eyes of a merc model." + ((eye-slot int8 :offset-assert 0) + (shader-offset int8 :offset-assert 1) + (shader-count int8 :offset-assert 2) + (eye-ctrl-index int8 :offset-assert 3) + (shader adgif-shader 6 :inline :offset-assert 16) ;; guessed by decompiler + (left-iris-shader adgif-shader :inline :offset 16) + (left-pupil-shader adgif-shader :inline :offset 96) + (left-lid-shader adgif-shader :inline :offset 176) + (right-iris-shader adgif-shader :inline :offset 256) + (right-pupil-shader adgif-shader :inline :offset 336) + (right-lid-shader adgif-shader :inline :offset 416) + ) + :method-count-assert 9 + :size-assert #x1f0 + :flag-assert #x9000001f0 + ) + +(deftype merc-eye-anim-frame (structure) + "A single frame of a merc eye animation." + ((pupil-trans-x int8 :offset-assert 0) + (pupil-trans-y int8 :offset-assert 1) + (blink int8 :offset-assert 2) + (iris-scale int8 :offset 4) + (pupil-scale int8 :offset 5) + (lid-scale int8 :offset 6) + (dword uint64 :offset 0) + ) + :pack-me + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype merc-eye-anim-block (structure) + "A list of eye animation frames." + ((max-frame int16 :offset-assert 0) + (data merc-eye-anim-frame :inline :dynamic :offset-assert 8) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype texture-usage-group (structure) + ((data texture-masks 7 :inline :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x150 + :flag-assert #x900000150 + ) + +(deftype merc-ctrl-header (structure) + "The header for a [[merc-ctrl]], + containing metadata about the model used for drawing." + ((xyz-scale float :offset-assert 0) + (st-magic uint32 :offset-assert 4) + (st-out-a uint32 :offset-assert 8) + (st-out-b uint32 :offset-assert 12) + (st-vif-add uint32 :offset-assert 16) + (st-int-off uint16 :offset-assert 20) + (st-int-scale uint16 :offset-assert 22) + (effect-count uint32 :offset-assert 24) + (blend-target-count uint32 :offset-assert 28) + (fragment-count uint16 :offset-assert 32) + (tri-count uint16 :offset-assert 34) + (matrix-count uint8 :offset-assert 36) + (shader-count uint8 :offset-assert 37) + (transform-vertex-count uint16 :offset-assert 38) + (dvert-count uint16 :offset-assert 40) + (one-mat-count uint16 :offset-assert 42) + (two-mat-count uint16 :offset-assert 44) + (two-mat-reuse-count uint16 :offset-assert 46) + (three-mat-count uint16 :offset-assert 48) + (three-mat-reuse-count uint16 :offset-assert 50) + (shader-upload-count uint8 :offset-assert 52) + (matrix-upload-count uint8 :offset-assert 53) + (same-copy-count uint16 :offset-assert 54) + (cross-copy-count uint16 :offset-assert 56) + (num-verts uint16 :offset-assert 58) + (longest-edge float :offset-assert 60) + (eye-ctrl merc-eye-ctrl :offset-assert 64) + (pad uint32 3 :offset-assert 68) ;; guessed by decompiler + (masks-padding texture-masks :inline :offset-assert 80) + (texture-usage-group texture-usage-group :offset 80) + (dummy-bytes uint8 :dynamic :offset 32) ;; guessed by decompiler + (envmap-tint uint32 :offset 32) + (query basic :offset 36) + (needs-clip uint8 :offset 40) + (use-isometric uint8 :offset 41) + (use-attached-shader uint8 :offset 42) + (display-triangles uint8 :offset 43) + (death-vertex-skip uint16 :offset 44) + (death-start-vertex uint16 :offset 46) + (death-effect uint32 :offset 48) + (use-translucent uint8 :offset 52) + (display-this-fragment uint8 :offset 53) + (use-warp uint8 :offset 54) + (ignore-alpha uint8 :offset 55) + (force-fade uint8 :offset 56) + (disable-fog uint8 :offset 57) + (disable-envmap uint8 :offset 58) + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ;; field xyz-scale is a float printed as hex? + ) + +(deftype merc-ctrl (art-element) + "The merc data for a single model as it's stored in an art group. + Consists of a header and a list of [[merc-effect]]s." + ((num-joints int32 :offset 12) + (seg-table (array uint64) :offset 28) ;; guessed by decompiler + (header merc-ctrl-header :inline :offset-assert 48) + (effect merc-effect :dynamic :inline :offset-assert 176) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #xb0 + :flag-assert #xe000000b0 + ) + +(deftype merc-vu1-low-mem (structure) + ((tri-strip-gif gs-gif-tag :inline :offset-assert 0) ;; gs-gif-tag :inline + (ad-gif gs-gif-tag :inline :offset-assert 16) ;; gs-gif-tag :inline + (hvdf-offset vector :inline :offset-assert 32) + (perspective uint128 4 :offset-assert 48) ;; guessed by decompiler + (fog vector :inline :offset-assert 112) + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) + +(deftype emerc-vu1-low-mem (structure) + ((tri-strip-gif gs-gif-tag :inline :offset-assert 0) ;; gs-gif-tag :inline + (ad-gif gs-gif-tag :inline :offset-assert 16) ;; gs-gif-tag :inline + (hvdf-offset vector :inline :offset-assert 32) + (perspective vector 4 :inline :offset-assert 48) ;; guessed by decompiler + (fog vector :inline :offset-assert 112) + (unperspect vector :inline :offset-assert 128) + ) + :method-count-assert 9 + :size-assert #x90 + :flag-assert #x900000090 + ) + +(deftype texture-login-data (structure) + ((default-texture-index int32 :offset-assert 0) + (current-texture-index int32 :offset-assert 4) + (texture-usage-group texture-usage-group :offset-assert 8) + (merc-ctrl-header merc-ctrl-header :offset-assert 12) + (name basic :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) + +(deftype ripple-wave (structure) + ((scale float :offset-assert 0) + (offs float :offset-assert 4) + (xdiv int16 :offset-assert 8) + (zdiv int16 :offset-assert 10) + (speed float :offset-assert 12) + (xmul float :offset-assert 16) + (zmul float :offset-assert 20) + (delta float :offset-assert 24) + ) + :pack-me + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) + +(deftype ripple-wave-set (basic) + ((count int32 :offset-assert 4) + (converted basic :offset-assert 8) + (normal-scale float :offset-assert 12) + (wave ripple-wave 4 :inline :offset-assert 16) ;; guessed by decompiler + (frame-save uint64 :offset-assert 128) + ) + :method-count-assert 9 + :size-assert #x88 + :flag-assert #x900000088 + ) + +(deftype ripple-control (basic) + ((global-scale float :offset-assert 4) + (last-frame-scale float :offset-assert 8) + (close-fade-dist float :offset-assert 12) + (far-fade-dist float :offset-assert 16) + (faded-scale float :offset-assert 20) + (individual-normal-scale float :offset-assert 24) + (waveform ripple-wave-set :offset-assert 28) ;; guessed by decompiler + (send-query symbol :offset-assert 32) ;; guessed by decompiler + (query ripple-merc-query :offset-assert 36) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + ) + +(deftype death-info (basic) + ((vertex-skip uint16 :offset-assert 4) + (timer uint8 :offset-assert 6) + (overlap uint8 :offset-assert 7) + (effect uint32 :offset-assert 8) + (sound string :offset-assert 12) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(define-extern merc-fragment-fp-data + "Get the floating point data of a [[merc-fragment]]." + (function merc-fragment merc-fp-header)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; generic-merc-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype merc-matrix (structure) + ((quad uint128 8 :offset-assert 0) ;; guessed by decompiler + (vector vector 8 :inline :offset 0 :score 1) ;; guessed by decompiler + (tag uint64 :offset 0) + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) + +(deftype generic-merc-tag (dma-packet) + ((next-ptr uint32 :offset 12) + (size uint32 :offset 8) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype generic-merc-ctrl (structure) + ((tag generic-merc-tag :inline :offset-assert 0) + (lights vu-lights :inline :offset-assert 16) + (header merc-ctrl-header :inline :offset-assert 128) + (effect merc-effect :inline :offset-assert 256) + ) + :method-count-assert 9 + :size-assert #x120 + :flag-assert #x900000120 + ) + +(deftype generic-merc-ctrl-with-sfx (generic-merc-ctrl) + ((sfx-data uint128 11 :offset-assert 288) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x1d0 + :flag-assert #x9000001d0 + ) + +(deftype generic-merc-input (structure) + ((geo-tag generic-merc-tag :inline :offset-assert 0) + (geo-block uint8 1296 :offset-assert 16) ;; guessed by decompiler + (byte-header merc-byte-header :inline :offset 16) + (matrix merc-matrix 9 :inline :offset-assert 1312) ;; guessed by decompiler + (control generic-merc-ctrl-with-sfx :inline :offset-assert 2464) + (end-tag generic-merc-tag :inline :offset-assert 2928) + (shader adgif-shader :inline :offset-assert 2944) + ) + :method-count-assert 9 + :size-assert #xbd0 + :flag-assert #x900000bd0 + ) + +(deftype generic-merc-output (structure) + ((info gsf-info :inline :offset-assert 0) + (header gsf-header :inline :offset-assert 16) + (index-kick-table uint16 80 :offset-assert 32) ;; guessed by decompiler + (index-table uint8 160 :offset 32) ;; guessed by decompiler + (inverse-table uint8 256 :offset-assert 192) ;; guessed by decompiler + (vertex-table gsf-vertex 72 :inline :offset-assert 448) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #xac0 + :flag-assert #x900000ac0 + ) + +(deftype generic-merc-dcache (structure) + ((output-a generic-merc-output :inline :offset-assert 0) + (output-b generic-merc-output :inline :offset-assert 2752) + (inv-table-1 uint8 544 :offset-assert 5504) ;; guessed by decompiler + (inv-table-7 uint8 544 :offset-assert 6048) ;; guessed by decompiler + (inv-safety uint8 16 :offset-assert 6592) ;; guessed by decompiler + (effect-data uint8 1584 :offset-assert 6608) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x2000 + :flag-assert #x900002000 + ) + +(deftype gm-shadow (structure) + ((perspective matrix :inline :offset-assert 0) + (isometric matrix :inline :offset-assert 64) + (inv-camera-rot matrix :inline :offset-assert 128) + (envmap-shader adgif-shader :inline :offset-assert 192) + (current-chain uint32 :offset-assert 272) + (next-chain uint32 :offset-assert 276) + (buf-index uint32 :offset-assert 280) + (fragment-count uint32 :offset-assert 284) + (write-limit int32 :offset-assert 288) + (indexed-input-base generic-merc-input :offset-assert 292) + (other-input-base generic-merc-input :offset-assert 296) + (indexed-output-base generic-merc-output :offset-assert 300) + (other-output-base generic-merc-output :offset-assert 304) + (p-input uint32 :offset-assert 308) + (gsf-buf generic-merc-dcache :offset-assert 312) + (p-fheader merc-fp-header :offset-assert 316) + (curr-chain basic :offset-assert 320) + (mercneric-convert basic :offset-assert 324) + (generic-prepare-dma-single basic :offset-assert 328) + (generic-prepare-dma-double basic :offset-assert 332) + (generic-light-proc basic :offset-assert 336) + (generic-envmap-proc basic :offset-assert 340) + (high-speed-reject basic :offset-assert 344) + (dummy-0 uint32 :offset-assert 348) + (hsr-xmult vector :inline :offset-assert 352) + (hsr-ymult vector :inline :offset-assert 368) + (warp-consts vector :inline :offset-assert 384) + (warp-nums vector :inline :offset-assert 400) + ) + :method-count-assert 9 + :size-assert #x1a0 + :flag-assert #x9000001a0 + ) + +(deftype generic-merc-work (structure) + ((input-a generic-merc-input :inline :offset-assert 0) + (input-b generic-merc-input :inline :offset-assert 3024) + (ctrl generic-merc-ctrl-with-sfx :inline :offset-assert 6048) + (shadow gm-shadow :inline :offset-assert 6512) + (stack uint128 16 :offset-assert 6928) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x1c10 + :flag-assert #x900001c10 + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; generic-tie-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype generic-tie-instance (structure) + ((matrix-tag dma-packet :inline :offset-assert 0) + (matrix-data vector 6 :inline :offset-assert 16) ;; guessed by decompiler + (index-tag dma-packet :inline :offset-assert 112) + (indices uint8 224 :offset-assert 128) ;; guessed by decompiler + (end-tag dma-packet :inline :offset-assert 352) + ) + :method-count-assert 9 + :size-assert #x170 + :flag-assert #x900000170 + ) + +(deftype generic-tie-input (structure) + ((palette-tag dma-packet :inline :offset-assert 0) + (palette rgba 128 :offset-assert 16) ;; guessed by decompiler + (model-tag dma-packet :inline :offset-assert 528) + (model vector 146 :inline :offset-assert 544) ;; guessed by decompiler + (matrix-tag dma-packet :inline :offset-assert 2880) + (matrix-data vector 6 :inline :offset-assert 2896) ;; guessed by decompiler + (index-tag dma-packet :inline :offset-assert 2992) + (indices uint8 224 :offset-assert 3008) ;; guessed by decompiler + (end-tag dma-packet :inline :offset-assert 3232) + ) + :method-count-assert 9 + :size-assert #xcb0 + :flag-assert #x900000cb0 + ) + +(deftype generic-tie-run-control (structure) + ((skip-bp2 uint8 :offset-assert 0) + (skip-ips uint8 :offset-assert 1) + (gifbuf-skip uint8 :offset-assert 2) + (strips uint8 :offset-assert 3) + (target-bp1 uint8 :offset-assert 4) + (target-bp2 uint8 :offset-assert 5) + (target-ip1 uint8 :offset-assert 6) + (target-ip2 uint8 :offset-assert 7) + (target-bps uint8 :offset-assert 8) + (target-ips uint8 :offset-assert 9) + (is-generic uint8 :offset-assert 10) + (reserved uint8 :offset-assert 11) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) + +(deftype generic-tie-base-point (structure) + ((data uint16 8 :offset-assert 0) ;; guessed by decompiler + (quad uint128 :offset 0) + (x int16 :offset 0) + (y int16 :offset 2) + (z int16 :offset 4) + (d0 int16 :offset 6) + (vtx uint64 :offset 0) + (u int16 :offset 8) + (v int16 :offset 10) + (tex uint32 :offset 8) + (w int16 :offset 12) + (d1 int16 :offset 14) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype generic-tie-bps (structure) + ((bp generic-tie-base-point 4 :inline :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +(deftype generic-tie-interp-point (structure) + ((data uint16 12 :offset-assert 0) ;; guessed by decompiler + ;(quad uint128 :offset 0) ;; misaligned? + (x int16 :offset 0) + (y int16 :offset 2) + (z int16 :offset 4) + (d0 int16 :offset 6) + (vtx0 uint64 :offset 0) + (dx int16 :offset 8) + (dy int16 :offset 10) + (dz int16 :offset 12) + (unused int16 :offset 14) + (vtx1 uint64 :offset 8) + (u int16 :offset 16) + (v int16 :offset 18) + (tex uint32 :offset 16) + (w int16 :offset 20) + (d1 int16 :offset 22) + ) + :pack-me + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) + +(deftype generic-tie-ips (structure) + ((ip generic-tie-interp-point 2 :inline :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype generic-tie-header (structure) + ((effect uint8 :offset-assert 0) + (interp-table-size uint8 :offset-assert 1) + (num-bps uint8 :offset-assert 2) + (num-ips uint8 :offset-assert 3) + (tint-color uint32 :offset-assert 4) + (index-table-offset uint16 :offset-assert 8) + (kick-table-offset uint16 :offset-assert 10) + (normal-table-offset uint16 :offset-assert 12) + (interp-table-offset uint16 :offset-assert 14) + (gsf-header gsf-header :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype generic-tie-matrix (structure) + ((matrix matrix :inline :offset-assert 0) + (morph vector :inline :offset-assert 64) + (fog qword :inline :offset-assert 80) + ) + :method-count-assert 9 + :size-assert #x60 + :flag-assert #x900000060 + ) + +(deftype generic-tie-normal (structure) + ((x int8 :offset-assert 0) + (y int8 :offset-assert 1) + (z int8 :offset-assert 2) + (dummy int8 :offset-assert 3) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype generic-tie-control (structure) + ((ptr-palette uint32 :offset-assert 0) + (ptr-shaders uint32 :offset-assert 4) + (ptr-runctrl generic-tie-run-control :offset-assert 8) + (ptr-verts uint32 :offset-assert 12) + (ptr-generic generic-tie-header :offset-assert 16) + (ptr-dps uint32 :offset-assert 20) + (ptr-kicks uint32 :offset-assert 24) + (ptr-normals uint32 :offset-assert 28) + (ptr-interp uint32 :offset-assert 32) + (ptr-mtxs generic-tie-matrix :offset-assert 36) + (ptr-cinds uint32 :offset-assert 40) + (next-instance uint32 :offset-assert 44) + (next-model uint32 :offset-assert 48) + (next-is-model uint32 :offset-assert 52) + (tie-type uint32 :offset-assert 56) + ) + :method-count-assert 9 + :size-assert #x3c + :flag-assert #x90000003c + ) + +(deftype generic-tie-stats (structure) + ((num-bps uint32 :offset-assert 0) + (num-ips uint32 :offset-assert 4) + (num-dps uint32 :offset-assert 8) + (num-shaders uint32 :offset-assert 12) + (num-models uint32 :offset-assert 16) + (num-instances uint32 :offset-assert 20) + (num-waits uint32 :offset-assert 24) + (num-qwc uint32 :offset-assert 28) + (max-qwc uint32 :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) + +(deftype generic-tie-calls (structure) + ((generic-prepare-dma-double basic :offset-assert 0) + (generic-envmap-dproc basic :offset-assert 4) + (generic-interp-dproc basic :offset-assert 8) + (generic-no-light-dproc basic :offset-assert 12) + ) + :pack-me + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype generic-tie-shadow (structure) + ((out-buf gsf-buffer :offset-assert 0) + (cur-buf uint32 :offset-assert 4) + (tie-type int32 :offset-assert 8) + (ptr-inst uint32 :offset-assert 12) + (ptr-buf uint32 :offset-assert 16) + (inst-xor int32 :offset-assert 20) + (end-of-chain uint32 :offset-assert 24) + (write-limit uint32 :offset-assert 28) + (calls generic-tie-calls :inline :offset-assert 32) + ) + :pack-me + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype generic-tie-work (structure) + ((control generic-tie-control :inline :offset-assert 0) + (interp-job generic-interp-job :inline :offset-assert 60) + (shadow generic-tie-shadow :inline :offset-assert 76) + (input-a generic-tie-input :inline :offset-assert 128) + (input-b generic-tie-input :inline :offset-assert 3376) + (inst-buf generic-tie-instance :inline :offset-assert 6624) + (palette-buf rgba 128 :offset-assert 6992) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x1d50 + :flag-assert #x900001d50 + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; generic-work-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype generic-input-buffer (structure) + ((data uint128 473 :offset-assert 0) ;; guessed by decompiler + (merc generic-merc-work :inline :offset 0) + (tie generic-tie-work :inline :offset 0) + ) + :method-count-assert 9 + :size-assert #x1d90 + :flag-assert #x900001d90 + ) + +(deftype generic-debug (structure) + ((locks uint32 4 :offset-assert 0) ;; guessed by decompiler + (timer uint32 32 :offset-assert 16) ;; guessed by decompiler + (count uint32 32 :offset-assert 144) ;; guessed by decompiler + (vps uint32 32 :offset-assert 272) ;; guessed by decompiler + (buffer int32 :offset-assert 400) + (start-addr int32 :offset-assert 404) + (lock int32 :offset-assert 408) + ) + :method-count-assert 9 + :size-assert #x19c + :flag-assert #x90000019c + ) + +(deftype generic-vu1-header (structure) + ((matrix matrix :inline :offset-assert 0) + (strgif generic-gif-tag :inline :offset-assert 64) + (adcmds gs-adcmd 2 :inline :offset-assert 80) ;; guessed by decompiler + (adnop1 gs-adcmd :inline :offset 80) + (adnop2 gs-adcmd :inline :offset 96) + (dps uint16 :offset 92) + (kickoff uint16 :offset 108) + (strips uint16 :offset 76) + ) + :method-count-assert 9 + :size-assert #x70 + :flag-assert #x900000070 + ) + +(deftype generic-vu1-texbuf (structure) + ((header generic-vu1-header :inline :offset-assert 0) + (shader uint32 :dynamic :offset-assert 112) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x70 + :flag-assert #x900000070 + ) + +(deftype generic-texbuf (structure) + ((tag dma-packet :inline :offset-assert 0) + (header generic-vu1-header :inline :offset-assert 16) + (shader uint32 :dynamic :offset-assert 128) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) + +(deftype generic-effect-work (structure) + ((consts generic-consts :inline :offset-assert 0) + (storage generic-storage :inline :offset-assert 432) + (storage2 generic-storage :inline :offset-assert 688) + (lights vu-lights :inline :offset-assert 944) + ) + :method-count-assert 9 + :size-assert #x420 + :flag-assert #x900000420 + ) + +(deftype generic-effect-buffer (structure) + ((outbuf-0 uint8 3552 :offset-assert 0) ;; guessed by decompiler + (work generic-effect-work :inline :offset-assert 3552) + (outbuf-1 uint8 3552 :offset-assert 4608) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x1fe0 + :flag-assert #x900001fe0 + ) + +(deftype generic-work (structure) + ((saves generic-saves :inline :offset-assert 0) + (storage generic-storage :inline :offset-assert 368) + (in-buf generic-input-buffer :inline :offset-assert 624) + (fx-buf generic-effect-buffer :inline :offset-assert 8192) + ) + :method-count-assert 9 + :size-assert #x3fe0 + :flag-assert #x900003fe0 + ) + +(define-extern *generic-debug* generic-debug) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; shadow-cpu-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; +++shadow-cpu-h:shadow-flags +(defenum shadow-flags + :bitfield #t + :type int32 + (shdf00) ;; unused + (disable-fade) + (shdf02) ;; only set, never used. + (shdf03) + (shdf04) ;; unused + (disable-draw) + (shdf06) + (shdf07) + (shdf08) + ) +;; ---shadow-cpu-h:shadow-flags + +(deftype shadow-settings (structure) + "Settings used to draw a shadow." + ((center vector :inline :offset-assert 0 :score -1) + (flags shadow-flags :offset 12) ;; shadow-flags + (shadow-dir vector :inline :offset-assert 16) + (dist-to-locus float :offset 28) + (bot-plane plane :inline :offset-assert 32) + (top-plane plane :inline :offset-assert 48) + (fade-vec vector :inline :offset 64 :score -1) ;; added + (fade-dist float :offset 64) + (fade-start float :offset 68) + (dummy-2 int32 :offset 72) + (shadow-type int32 :offset 76 :score 1) + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) + +(deftype shadow-control (basic) + ((settings shadow-settings :inline :offset-assert 16) + ) + :method-count-assert 15 + :size-assert #x60 + :flag-assert #xf00000060 + (:methods + (new (symbol type float float float vector shadow-flags float) _type_) ;; 0 + (enable-draw (shadow-control) int) ;; 9 + (disable-draw (shadow-control) int) ;; 10 + (set-top-plane-offset (shadow-control float) int) ;; 11 + (set-bottom-plane-offset (shadow-control float) int) ;; 12 + (probe-line-for-shadow (_type_ vector float float float) none) ;; 13 + (shadow-control-method-14 (_type_ vector vector float float float) none) ;; 14 + ) + ) + +(deftype shadow-data (structure) + "DMA data for the shadow renderer." + ((dma-unpack-template dma-packet :inline :offset-assert 0) + (dma-cnt uint64 :offset-assert 16) ;; dma-tag + (vif-nop vif-tag :offset-assert 24) ;; guessed by decompiler + (vif-unpack-v4-8 vif-tag :offset-assert 28) ;; guessed by decompiler + (pdc basic :offset-assert 32) + (dist float :offset-assert 36) + (waits uint32 :offset-assert 40) + (inside-volume? uint32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype shadow-work (structure) + ((shadow-data shadow-data :inline :offset-assert 0) + (inbuf uint128 600 :offset-assert 48) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x25b0 + :flag-assert #x9000025b0 + ) + +(declare-type shadow-vu1-constants structure) +(deftype shadow-bucket (structure) + ((first pointer :offset-assert 0) ;; guessed by decompiler + (next pointer :offset-assert 4) ;; guessed by decompiler + (bucket-id int32 :offset-assert 8) ;; bucket-id + (shadow-color rgba :offset-assert 12) ;; guessed by decompiler + (constants shadow-vu1-constants :offset-assert 16) ;; guessed by decompiler + ) + :allow-misaligned + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) + +(deftype shadow-bucket-views (structure) + ((data shadow-bucket 2 :inline :offset-assert 0) + ) + :allow-misaligned + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +(deftype shadow-globals (structure) + ((num-buckets uint32 :offset-assert 0) + (cur-bucket uint32 :offset-assert 4) + (data shadow-bucket-views 3 :inline :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc8 + :flag-assert #x9000000c8 + ) + +(deftype shadow-vertex (structure) + ((x float :offset-assert 0) + (y float :offset-assert 4) + (z float :offset-assert 8) + (weight float :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype shadow-matrix-ref (structure) + ((joint-0 uint8 :offset-assert 0) + (joint-1 uint8 :offset-assert 1) + ) + :method-count-assert 9 + :size-assert #x2 + :flag-assert #x900000002 + ) + +(deftype shadow-edge (structure) + ((ind-0 uint8 :offset-assert 0) + (ind-1 uint8 :offset-assert 1) + (tri-0 uint8 :offset-assert 2) + (tri-1 uint8 :offset-assert 3) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype shadow-tri (structure) + ((ind-0 uint8 :offset-assert 0) + (ind-1 uint8 :offset-assert 1) + (ind-2 uint8 :offset-assert 2) + (faces uint8 :offset-assert 3) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype shadow-frag-header (structure) + ((qwc-data uint32 :offset-assert 0) + (num-joints uint32 :offset-assert 4) + (num-verts uint16 :offset-assert 8) + (num-twos uint16 :offset-assert 10) + (num-single-tris uint16 :offset-assert 12) + (num-single-edges uint16 :offset-assert 14) + (num-double-tris uint16 :offset-assert 16) + (num-double-edges uint16 :offset-assert 18) + (ofs-verts uint32 :offset-assert 20) + (ofs-refs uint32 :offset-assert 24) + (ofs-single-tris uint32 :offset-assert 28) + (ofs-single-edges uint32 :offset-assert 32) + (ofs-double-tris uint32 :offset-assert 36) + (ofs-double-edges uint32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) + +(deftype shadow-frag-ref (structure) + ((header shadow-frag-header :offset-assert 0) + (qwc uint32 :offset-assert 4) + ) + :pack-me + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype shadow-geo (art-element) + "The low poly model used for drawing the shadow." + ((version uint32 :offset 28) + (total-size uint32 :offset 32) + (total-qwc uint32 :offset-assert 48) + (num-joints uint32 :offset-assert 52) + (num-fragments uint32 :offset-assert 56) + (frags shadow-frag-ref :inline :dynamic :offset-assert 60) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x3c + :flag-assert #xe0000003c + ) + +(define-extern *shadow-globals* shadow-globals) +(define-extern *shadow* symbol) +(define-extern *shadow-object* symbol) +(define-extern *shadow-debug* symbol) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; shadow-vu1-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; prim-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype prim-vertex (structure) + "Vertex for the prim renderer. These vertices are generated by + some special effect code, then sent to the prim renderer to be drawn." + ((stq vector :inline :offset-assert 0) + (nokick uint32 :offset-assert 8 :overlay-at (-> stq z)) + (col rgba :offset-assert 12 :overlay-at (-> stq w) :score 1) ;; guessed by decompiler + (pos vector :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype prim-base (basic) + "Base class for prim-strip." + () + :method-count-assert 10 + :size-assert #x4 + :flag-assert #xa00000004 + (:methods + (generate-dma! "Generate DMA for prim rendering." (_type_ matrix) none) ;; 9 + ) + ) + +(deftype prim-client (basic) + () + :method-count-assert 10 + :size-assert #x4 + :flag-assert #xa00000004 + (:methods + (prim-client-method-9 () int) ;; 9 + ) + ) + +(defenum prim-flags + :type uint32 + :bitfield #t + (alpha-blend-enable 0) ;; set by default + (texture-enable 1) ;; set by default + (fog-enable 2) + (pf3 3) ;; auto-clear vertices? + (pf4 4) ;; has new verts to draw? + (no-texture-name 5) ;; only has the ID. + ) + +(deftype prim-strip (prim-base) + "A collection of vertices, all with the same texture and draw settings. + These are owned by the thing submitting to prim, not the prim renderer itself." + ((flags prim-flags :offset-assert 4) ;; guessed by decompiler + (tex-name basic :offset-assert 8) + (tex basic :offset-assert 12) + (tex-id texture-id :offset-assert 16) ;; guessed by decompiler + (adnops gs-adcmd 2 :inline :offset-assert 32) ;; guessed by decompiler + (data0 gs-test :offset 32) ;; gs-test + (reg0 gs-reg64 :offset 40) ;; gs-reg64 + (data1 gs-test :offset 48) ;; gs-test + (reg1 gs-reg64 :offset 56) ;; gs-reg64 + (clamp gs-clamp :offset-assert 64) ;; gs-clamp + (alpha gs-alpha :offset-assert 72) ;; gs-alpha + (level level :offset-assert 80) ;; guessed by decompiler + (texture-index int8 :offset-assert 84) ;; uint32 + (num-verts uint16 :offset-assert 86) + (allocated-num-verts uint16 :offset-assert 88) + (last-tex-id uint32 :offset-assert 92) + (data prim-vertex :inline :dynamic :offset-assert 96) ;; guessed by decompiler + ) + :method-count-assert 11 + :size-assert #x60 + :flag-assert #xb00000060 + (:methods + (new "Allocate a new prim-strip and room for vertices. The texture can be specified by name or ID." + (symbol type int texture-id string) _type_) + (setup-dma-and-tex "Set up the bucket, prim sink, and texture." (_type_ draw-control) none) ;; 10 + ) + ) + +(deftype prim-sink (structure) + ((vertex-count uint8 :offset-assert 0) + (control-count uint8 :offset-assert 1) + ) + :allow-misaligned + :method-count-assert 9 + :size-assert #x2 + :flag-assert #x900000002 + ) + +(deftype prim-work (structure) + ((vertex-tmpl dma-packet 3 :inline :offset-assert 0) ;; guessed by decompiler + (control-tmpl dma-packet 2 :inline :offset-assert 48) ;; guessed by decompiler + (giftag generic-gif-tag :inline :offset-assert 80) + (call-scissor dma-packet :inline :offset-assert 96) + (call-noclip dma-packet :inline :offset-assert 112) + (shader adgif-shader :inline :offset-assert 128) + (mask vector4w :inline :offset-assert 208) + (in-verts int32 :offset-assert 224) + (num-verts int32 :offset-assert 228) + (vert-ptr (inline-array prim-vertex) :offset-assert 232) ;; (inline-array prim-vertex) + (sinks prim-sink 114 :inline :offset-assert 236) ;; guessed by decompiler + ) + :method-count-assert 10 + :size-assert #x80c + :flag-assert #xa0000080c + (:methods + (reset! "Reset all pending vertex/control data." (_type_) none) ;; 9 + ) + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; memcard-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype mc-handle (int32) + () + :flag-assert #x900000004 + ) + +(deftype mc-file-info (structure) + "Data stored in a save file." + ((present int32 :offset-assert 0) + (blind-data float 24 :offset-assert 4) ;; guessed by decompiler + (blind-data-int8 int8 96 :offset 4) ;; guessed by decompiler + (level-index int32 :offset 4) + (gem-count float :offset 8) + (skill-count float :offset 12) + (completion-percentage float :offset 16) + (minute uint8 :offset 24) + (hour uint8 :offset 25) + (week uint8 :offset 26) + (day uint8 :offset 27) + (month uint8 :offset 28) + (year uint8 :offset 29) + (language uint8 :offset 30) + (game-time0 uint32 :offset 36) + (game-time1 uint32 :offset 40) + (purchase-secrets uint32 :offset 44) + (secrets uint32 :offset 52) ;; field could not be read. + (features uint32 :offset 60) ;; field could not be read. + (name uint8 16 :offset 68) + ) + :pack-me + :method-count-assert 9 + :size-assert #x64 + :flag-assert #x900000064 + ) + +(deftype mc-slot-info (structure) + "Data about a memory card slot." + ((handle mc-handle :offset-assert 0) ;; mc-handle + (known int32 :offset-assert 4) + (formatted int32 :offset-assert 8) + (inited int32 :offset-assert 12) + (last-file int32 :offset-assert 16) + (mem-required int32 :offset-assert 20) + (mem-actual int32 :offset-assert 24) + (file mc-file-info 4 :inline :offset-assert 28) ;; guessed by decompiler + ) + :pack-me + :method-count-assert 9 + :size-assert #x1ac + :flag-assert #x9000001ac + ) + +(deftype stored-network-account (structure) + ((name uint8 64 :offset-assert 0) + (password uint8 64 :offset-assert 64) + ) + :pack-me + :method-count-assert 11 + :size-assert #x80 + :flag-assert #xb00000080 + (:methods + (stored-network-account-method-9 () none) ;; 9 + (stored-network-account-method-10 () none) ;; 10 + ) + ) + +(deftype stored-network-accounts (structure) + ((accounts stored-network-account 4 :inline :offset-assert 0) + (default-idx int8 :offset-assert 512) + (ct int8 :offset-assert 513) + ) + :pack-me + :method-count-assert 10 + :size-assert #x202 + :flag-assert #xa00000202 + (:methods + (stored-network-accounts-method-9 () none) ;; 9 + ) + ) + +(deftype mc-common-data (structure) + ((magic uint32 :offset-assert 0) + (crc uint32 :offset-assert 4) + (version uint32 :offset-assert 8) + (data uint8 1012 :offset-assert 12) + (net-accounts stored-network-accounts :inline :offset 12) + ) + :method-count-assert 9 + :size-assert #x400 + :flag-assert #x900000400 + ) + +(deftype mc-patch-data (structure) + ((magic uint32 :offset-assert 0) + (crc uint32 :offset-assert 4) + (version uint32 :offset-assert 8) + (size uint32 :offset-assert 12) + (data uint8 524272 :offset-assert 16) + ) + :method-count-assert 9 + ;; overflow 16-bit int size bug + ;; :size-assert #x0 + ;; :heap-base #x8 + ;; :flag-assert #x900080000 + :size-assert #x80000 + ) + +;; +++memcard-h:mc-status-code +(defenum mc-status-code + :type uint32 + (busy 0) + (ok 1) + (bad-handle 2) + (format-failed 3) + (internal-error 4) + (write-error 5) + (read-error 6) + (new-game 7) + (no-memory 8) + (no-card 9) + (no-last 10) + (no-format 11) + (no-file 12) + (no-save 13) + (no-space 14) + (bad-version 15) + (no-process 16) + (no-auto-save 17) + ) +;; ---memcard-h:mc-status-code + +(define-extern mc-run (function none)) +(define-extern mc-sync "Synchronize the memory card state." (function int)) +(define-extern mc-get-slot-info (function int mc-slot-info none)) +(define-extern show-mc-info "Display the memory card debug text." (function dma-buffer none)) +(define-extern *mc-common-data* mc-common-data) +(define-extern *mc-patch-data* mc-patch-data) +(define-extern *mc-last-result* object) +(define-extern mc-check-result (function mc-status-code)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; game-info-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype game-bank (basic) + ((life-max-default float :offset-assert 4) + (life-start-default float :offset-assert 8) + (life-single-inc float :offset-assert 12) + (money-task-inc float :offset-assert 16) + (money-oracle-inc float :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) + +(deftype actor-id (uint32) + () + :flag-assert #x900000004 + ) + +(deftype highscore-info (structure) + ((flags uint8 :offset-assert 0) ;; highscore-flags + ) + :method-count-assert 9 + :size-assert #x1 + :flag-assert #x900000001 + ) + +(deftype level-buffer-state (structure) + ((name symbol :offset-assert 0) ;; guessed by decompiler + (display? symbol :offset-assert 4) ;; guessed by decompiler + (force-vis? symbol :offset-assert 8) ;; guessed by decompiler + (force-inside? symbol :offset-assert 12) ;; guessed by decompiler + (slot int32 :offset-assert 16) + (force-reload basic :offset-assert 20) + ) + :pack-me + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) + +(deftype level-buffer-state-small (structure) + ((name symbol :offset-assert 0) ;; guessed by decompiler + (display? symbol :offset-assert 4) ;; guessed by decompiler + ) + :pack-me + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype level-buffer-state-split (structure) + ((name basic :offset-assert 0) + (display? symbol 2 :offset-assert 4) + ) + :pack-me + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) + +(deftype load-state (basic) + ((want level-buffer-state 18 :inline :offset-assert 4) ;; guessed by decompiler + (want-exp level-buffer-state 18 :inline :offset 580) ;; guessed by decompiler + (want-split level-buffer-state-split 18 :inline :offset 1156) + (target level-buffer-state 18 :inline :offset-assert 1372) ;; guessed by decompiler + (want-sound sound-bank-state 7 :inline :offset 1948) ;; guessed by decompiler + (target-sound sound-bank-state 7 :inline :offset-assert 2060) ;; guessed by decompiler + (vis-nick symbol :offset-assert 2172) ;; guessed by decompiler + (command-list pair :offset-assert 2176) ;; guessed by decompiler + (object-name string 256 :offset-assert 2180) ;; guessed by decompiler + (object-status basic 256 :offset-assert 3204) ;; guessed by decompiler + (update-callback (function load-state object) :offset-assert 4228) ;; guessed by decompiler + ) + :method-count-assert 27 + :size-assert #x1088 + :flag-assert #x1b00001088 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type) _type_) + (load-state-method-9 () none) ;; 9 ;; (reset! (_type_) _type_) + (load-state-method-10 () none) ;; 10 ;; (update! (_type_) int) + (load-state-method-11 () none) ;; 11 ;; (want-levels (_type_ (pointer symbol)) int) + (load-state-method-12 () none) ;; 12 ;; (want-sound-banks (_type_ (pointer symbol)) none) + (load-state-method-13 () none) ;; 13 ;; (want-display-level (_type_ symbol symbol) int) + (load-state-method-14 () none) ;; 14 ;; (want-vis-level (_type_ symbol) none) + (load-state-method-15 () none) ;; 15 ;; (want-force-vis (_type_ symbol symbol) int) + (load-state-method-16 () none) ;; 16 ;; (want-force-inside (_type_ symbol symbol) none) + (load-state-method-17 () none) ;; 17 ;; (execute-commands-up-to (_type_ float) none) + (load-state-method-18 () none) ;; 18 ;; (backup-load-state-and-set-cmds (_type_ pair) int) + (load-state-method-19 () none) ;; 19 ;; (restore-load-state-and-cleanup (_type_) int) + (load-state-method-20 () none) ;; 20 ;; (restore-load-state (_type_) int) + (load-state-method-21 () none) ;; 21 ;; (add-borrow-levels (_type_) none) + (load-state-method-22 () none) ;; 22 + (load-state-method-23 () none) ;; 23 + (load-state-method-24 () none) ;; 24 + (load-state-method-25 () none) ;; 25 + (load-state-method-26 () none) ;; 26 + ) + ) + +;; +++game-info-h:continue-flags +(defenum continue-flags + :type uint32 + :bitfield #t + ) +;; ---game-info-h:continue-flags + +(deftype continue-point (basic) + ((name string :offset-assert 4) ;; guessed by decompiler + (level symbol :offset-assert 8) ;; guessed by decompiler + (flags continue-flags :offset-assert 12) ;; guessed by decompiler + (trans vector :inline :offset-assert 16) + (velocity vector :inline :offset-assert 32) + (camera-trans vector :inline :offset-assert 48) + (quat vector4h :inline :offset-assert 64) + (camera-rot int16 9 :offset-assert 72) ;; guessed by decompiler + (on-goto object :offset-assert 92) ;; guessed by decompiler + (vis-nick symbol :offset-assert 96) ;; guessed by decompiler + (vehicle-type uint8 :offset-assert 100) + (want-count int8 :offset-assert 101) + (want (inline-array level-buffer-state-small) :offset-assert 104) ;; guessed by decompiler + ;; (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (want-sound symbol 1 :offset-assert 108) ;; guessed by decompiler + ;; (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 12 + :size-assert #x70 + :flag-assert #xc00000070 + ;; field on-goto uses ~A with a signed load. + (:methods + (debug-draw (_type_) int) ;; 9 + (continue-point-method-10 (_type_ load-state) continue-point) ;; 10 + (move-camera! (_type_) none) ;; 11 + ) + ) + +(deftype game-info-player (structure) + ((current-continue continue-point :offset-assert 0) + (last-continue continue-point :offset-assert 4) + (vehicle handle :offset-assert 8) + (cash float :offset-assert 16) + (camera-inside-view basic :offset-assert 20) + (last-selected-vehicle uint8 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x19 + :flag-assert #x900000019 + ) + +(declare-type entity-perm-array inline-array-class) +(deftype game-info (basic) + ((mode symbol :offset-assert 4) ;; guessed by decompiler + (save-name string :offset-assert 8) ;; guessed by decompiler + (player-info game-info-player 2 :inline :offset-assert 16) + (car-info car-info-array :inline :offset-assert 80) + (features uint64 :offset-assert 1040) ;; game-feature + (debug-features uint64 :offset-assert 1048) ;; game-feature + (old-features uint64 :offset-assert 1056) ;; game-feature + (items uint64 :offset-assert 1064) ;; game-items + (debug-items uint64 :offset-assert 1072) ;; game-items + (old-items uint64 :offset-assert 1080) ;; game-items + (secrets uint64 :offset-assert 1088) ;; game-secrets + (purchase-secrets uint64 :offset-assert 1096) ;; game-secrets + (vehicles uint64 :offset-assert 1104) ;; game-vehicles + (debug-vehicles uint64 :offset-assert 1112) ;; game-vehicles + (old-vehicles uint64 :offset-assert 1120) ;; game-vehicles + (health-bar float :offset-assert 1128) + (health-bar-owner uint64 :offset-assert 1136) ;; handle + (attack-id uint32 :offset-assert 1144) + (perm-list entity-perm-array :offset-assert 1148) ;; guessed by decompiler + (play-list (array game-task-info) :offset-assert 1152) + (sub-task-list (array game-task-node-info) :offset-assert 1156) + (mission-list (array game-task-node-info) :offset-assert 1160) + (task-node-commands (array game-task-node-command) :offset-assert 1164) ;; guessed by decompiler + (task-counter uint32 :offset-assert 1168) + (level-opened uint8 32 :offset 1176) ;; guessed by decompiler + (total-deaths int32 :offset-assert 1208) + (continue-deaths int32 :offset-assert 1212) + (task-deaths int32 :offset-assert 1216) + (total-trys int32 :offset-assert 1220) + (game-start-time uint64 :offset-assert 1224) ;; time-frame + (continue-time uint64 :offset-assert 1232) ;; time-frame + (death-time uint64 :offset-assert 1240) ;; time-frame + (hit-time uint64 :offset-assert 1248) ;; time-frame + (task-pickup-time uint64 :offset-assert 1256) ;; time-frame + (stop-watch-start uint64 :offset-assert 1264) ;; time-frame + (stop-watch-stop uint64 :offset-assert 1272) ;; time-frame + (blackout-time uint64 :offset-assert 1280) ;; time-frame + (letterbox-time uint64 :offset-assert 1288) ;; time-frame + (hint-play-time uint64 :offset-assert 1296) ;; time-frame + (display-text-time uint64 :offset-assert 1304) ;; time-frame + (display-text-handle uint64 :offset-assert 1312) ;; handle + (death-movie-tick int32 :offset-assert 1320) + (want-auto-save symbol :offset-assert 1324) ;; guessed by decompiler + (auto-save-proc uint64 :offset-assert 1328) ;; handle + (auto-save-status mc-status-code :offset-assert 1336) ;; guessed by decompiler + (auto-save-card int32 :offset-assert 1340) + (auto-save-which int32 :offset-assert 1344) + (auto-save-count int32 :offset-assert 1348) + (pov-camera-handle uint64 :offset-assert 1352) ;; handle + (other-camera-handle uint64 :offset-assert 1360) ;; handle + (controller handle 2 :offset-assert 1368) ;; guessed by decompiler + (bot-health float 3 :offset-assert 1384) ;; guessed by decompiler + (demo-state uint32 :offset-assert 1396) + (distance float :offset-assert 1400) + (kiosk-timeout uint64 :offset-assert 1408) ;; time-frame + (pause-start-time uint64 :offset-assert 1416) ;; time-frame + (game-score (array float) :offset-assert 1424) ;; guessed by decompiler + (goal float :offset-assert 1428) + (miss float :offset-assert 1432) + (miss-max float :offset-assert 1436) + (health-bar-vehicle float :offset-assert 1440) + (pause-menu uint64 :offset-assert 1448) + (current-vehicle uint8 :offset-assert 1456) ;; vehicle-type-u8 + (collision-damage-multiplier float :offset-assert 1460) + (traction-multiplier float :offset-assert 1464) + (turbo-factor float :offset-assert 1468) + (turbo-disabled int8 :offset-assert 1472) + (turbo-last-disabled int32 :offset-assert 1476) + (fragile-vehicle basic :offset-assert 1480) + (music-data uint8 4 :offset-assert 1484) + (music-info uint32 :offset 1484) + (game-movie (array game-movie) :offset-assert 1488) + (grand-prix (array grand-prix) :offset-assert 1492) + (playing-grand-prix? grand-prix :offset-assert 1496) + (grand-prix-index uint32 :offset-assert 1500) + (collision-vs-rbody-damage-multiplier float :offset-assert 1504) + (global-speed-factor float :offset-assert 1508) + (this-race-grand-prix-score uint32 23 :offset-assert 1512) + (cumulative-grand-prix-score uint32 23 :offset-assert 1604) + (driver-info uint64 :offset-assert 1696) + (driver-info2 uint32 2 :offset 1696) + (driver-unlock uint32 :offset 1696) + (driver-award uint32 :offset 1700) + ) + :method-count-assert 31 + :size-assert #x6a8 + :flag-assert #x1f000006a8 + (:methods + (game-info-method-9 () none) ;; 9 ;; (initialize! (_type_ symbol game-save string resetter-spec) _type_) + (game-info-method-10 () none) ;; 10 ;; (give (_type_ symbol float handle) float) + (game-info-method-11 () none) ;; 11 ;; (task-complete? (_type_ game-task) symbol) + (game-info-method-12 () none) ;; 12 ;; (subtask-index-by-name (_type_ string) int) + (game-info-method-13 () none) ;; 13 ;; (actor-perm (_type_ actor-id) entity-perm) + (game-info-method-14 () none) ;; 14 ;; (task-perm-by-index (_type_ int) entity-perm) + (game-info-method-15 () none) ;; 15 ;; (copy-perms-from-level! (_type_ level) int) + (game-info-method-16 () none) ;; 16 ;; (copy-perms-to-level! (_type_ level) int) + (game-info-method-17 () none) ;; 17 ;; (debug-inspect (_type_ symbol) _type_) + (game-info-method-18 () none) ;; 18 ;; (get-current-continue-forced (_type_) continue-point) + (game-info-method-19 () none) ;; 19 ;; (get-continue-by-name (_type_ string) continue-point) + (game-info-method-20 () none) ;; 20 ;; (set-continue! (_type_ basic symbol) continue-point) + (game-info-method-21 () none) ;; 21 ;; (game-info-method-21 (_type_) none) + (game-info-method-22 () none) ;; 22 ;; (save-game (_type_ game-save string) game-save) + (game-info-method-23 () none) ;; 23 ;; (load-game (_type_ game-save) game-save) + (game-info-method-24 () none) ;; 24 ;; (you-suck-stage (_type_ symbol int) int) + (game-info-method-25 () none) ;; 25 ;; (you-suck-scale (_type_ symbol int) float) + (get-next-attack-id! (_type_) uint) ;; 26 + (game-info-method-27 () none) ;; 27 ;; (game-info-method-27 (_type_ game-score float) int) + (game-info-method-28 () none) ;; 28 ;; (get-game-score-ref (_type_ int) (pointer float)) + (game-info-method-29 () none) ;; 29 ;; (game-info-method-29 (_type_ int) int) + (game-info-method-30 () none) ;; 30 ;; (get-highscore-rank (_type_ int float) int) + ) + ) + +(define-extern *GAME-bank* game-bank) +(define-extern *static-continues* (array continue-point)) +(define-extern continue-point-copy! (function continue-point continue-point int)) +(define-extern *game-info* game-info) +(define-extern *use-menu2* symbol) +(define-extern *lobby-adv-selected-cup* symbol) +(define-extern *lobby-adv-selected-map* symbol) +(define-extern *lobby-adv-selected-venue* symbol) +(define-extern *lobby-adv-selected-level* symbol) +(define-extern *lobby-adv-previous-score* symbol) +(define-extern *lobby-adv-cup* symbol) +(define-extern *lobby-adv-selected-task* symbol) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; gui-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; +++gui-h:gui-action +(defenum gui-action + :type uint8 + (none 0) + (queue 1) + (play 2) + (playing 3) + (stop 4) + (stopping 5) + (abort 6) + (hide 7) + (hidden 8) + (fade 9) + ) +;; ---gui-h:gui-action + +;; +++gui-h:gui-status +(defenum gui-status + :type uint8 ;; not sure + (unknown 0) + (pending 1) + (ready 2) + (active 3) + (hide 4) + (stop 5) + ) +;; ---gui-h:gui-status + +;; +++gui-h:gui-channel +(defenum gui-channel + :type uint8 + (none 0) + + (art-load 16) + (art-load-next 17) + (background 18) + (jak 19) + (daxter 20) + (sig 21) + (ashelin 22) + (beast 23) + (jak-effect-1 24) + (pecker 25) + (jak-effect-2 26) + (gun 27) + (hal 28) + (speech 29) + (guard 30) + (jak-mode 31) + (alert 32) + (citizen 33) + (bbush 34) + (rider 35) + (task 36) + + (voice 47) + + (movie 64) + (blackout 65) + (query 66) + (message 67) + (notice 68) + (subtitle 69) + (supertitle 70) + (notice-low 71) + (resetter 72) + (progress 73) + (freeze 74) + + (screen 79) + (hud-upper-right 80) + (hud-upper-left 81) + (hud-lower-right 82) + (hud-lower-left 83) + (hud-lower-left-1 84) + (hud-lower-left-2 85) + (hud-center-right 86) + (hud-center-left 87) + (hud-middle-right 88) + (hud-middle-left 89) + (hud-upper-center 90) + (hud-upper-center-2 91) + (hud-lower-center 92) + (hud-auto-save 93) + (hud-auto-save-message 94) + (hud 95) + (hud-mp-vehicle-main-0 96) + (hud-mp-vehicle-main-1 97) + (hud-mp-player-indicators-0 98) + (hud-mp-player-indicators-1 99) + (hud-mp-race-0 100) + (hud-mp-race-1 101) + (hud-mp-race-2 102) + (hud-mp-race-3 103) + + (max 112) + ) +;; ---gui-h:gui-channel + +;; +++gui-h:gui-connection-flags +(defenum gui-connection-flags + :type uint8 + :bitfield #t + ) +;; ---gui-h:gui-connection-flags + +(deftype gui-connection (connection) + ((priority float :offset 16 :score 1) + (action gui-action :offset 20) ;; gui-action + (channel gui-channel :offset 21) ;; gui-channel + (anim-part uint8 :offset 22) + (flags gui-connection-flags :offset 23) ;; gui-connection-flags + (name string :offset 24) ;; guessed by decompiler + (id sound-id :offset 28) ;; guessed by decompiler + (handle handle :offset 0) ;; handle + (time-stamp time-frame :offset 8) ;; time-frame + (hold-time time-frame :offset-assert 32) ;; time-frame + (fo-min float :offset-assert 40) ;; int16 + (fo-max float :offset-assert 44) ;; int16 + (fo-power float :offset-assert 48) + (fade uint8 :offset-assert 52) + (volume float :offset-assert 56) ;; int16 + (qw-pad uint8 4 :offset-assert 60) + ) + :method-count-assert 14 + :size-assert #x40 + :flag-assert #xe00000040 + ;; field param1 uses ~A with a signed load. field param2 uses ~A with a signed load. field param3 uses ~A with a signed load. + ) + +;; (deftype gui-control (basic) +;; () +;; :flag-assert #x1a00001080 +;; ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ambient-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype talker-speech-class (structure) + ((name string :offset-assert 0) ;; guessed by decompiler + (channel uint8 :offset-assert 4) ;; gui-channel + (flags uint16 :offset-assert 6) ;; talker-flags + (speech uint16 :offset-assert 8) + (text-duration uint16 :offset-assert 10) + (delay uint16 :offset-assert 12) + (pos uint16 :offset-assert 14) + (neg uint16 :offset-assert 16) + (text-message text-id :offset-assert 20) ;; guessed by decompiler + (on-close pair :offset-assert 24) ;; guessed by decompiler + (camera string :offset-assert 28) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x20 + :flag-assert #xe00000020 + ;; field on-close uses ~A with a signed load. + (:methods + (talker-speech-class-method-9 () none) ;; 9 ;; (talker-speech-class-method-9 (_type_) symbol) + (talker-speech-class-method-10 () none) ;; 10 ;; (play-communicator-speech! (_type_) none) + (talker-speech-class-method-11 () none) ;; 11 ;; (talker-speech-class-method-11 (_type_) none) + (talker-speech-class-method-12 () none) ;; 12 ;; (talker-speech-class-method-12 (_type_ int) none) + (talker-speech-class-method-13 () none) ;; 13 ;; (talker-speech-class-method-13 (_type_ int) none) + ) + ) +|# + +#| +(deftype talker (process) + ((trans vector :inline :offset-assert 144) + (message talker-speech-class :offset-assert 160) + (total-time uint64 :offset-assert 168) ;; time-frame + (total-off-time uint64 :offset-assert 176) ;; time-frame + (start-time uint64 :offset-assert 184) ;; time-frame + (state-time uint64 :offset-assert 192) ;; time-frame + (voicebox uint64 :offset-assert 200) ;; handle + (voice-id sound-id :offset-assert 208) ;; guessed by decompiler + (message-id sound-id :offset-assert 212) ;; guessed by decompiler + (region region :offset-assert 216) + (interp float :offset-assert 220) + (save? symbol :offset-assert 224) ;; guessed by decompiler + (grab? symbol :offset-assert 228) ;; guessed by decompiler + ) + :method-count-assert 19 + :size-assert #xe8 + :flag-assert #x13006000e8 + (:methods + (talker-method-9 () none) ;; 9 + (talker-method-10 () none) ;; 10 + (talker-method-11 () none) ;; 11 + (talker-method-12 () none) ;; 12 + (talker-method-13 () none) ;; 13 + (talker-method-14 () none) ;; 14 ;; (idle () _type_ :state) + (talker-method-15 () none) ;; 15 ;; (active () _type_ :state) + (talker-method-16 () none) ;; 16 ;; (exit () _type_ :state) + (talker-method-17 () none) ;; 17 ;; (talker-method-17 (_type_) none) + (talker-method-18 () none) ;; 18 + ) + ) +|# + +;; (define-extern *talker-speech* object) ;; (inline-array talker-speech-class) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype speech-info-item (structure) + ((name basic :offset-assert 0) + (flags uint64 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +;; +++speech-manager:speech-info-flag +(defenum speech-info-flag + :type uint64 + :bitfield #t + (si0 0) + (si1 1) + (si2 2) + (si3 3) + (si4 4) + (si5 5) + (si6 6) + (si7 7) + (si8 8) + ) +;; ---speech-manager:speech-info-flag + +(deftype speech-info (structure) + ((list (array speech-info-item) :offset-assert 0) + (flags speech-info-flag :offset-assert 8) ;; speech-info-flag + ) + :method-count-assert 13 + :size-assert #x10 + :flag-assert #xd00000010 + (:methods + (speech-info-method-9 () none) ;; 9 + (speech-info-method-10 () none) ;; 10 + (speech-info-method-11 () none) ;; 11 + (speech-info-method-12 () none) ;; 12 + ) + ) + +;; +++speech-h:speech-type +(defenum speech-type + :type uint8 + (none 0) + (race-start 1) + (race-finish-lose 2) + (race-finish-win 3) + (bumping 4) + (passing 5) + (shooting 6) + (crashing 7) + (lap-count 8) + (collecting 9) + (taking-hits 10) + (lap-count-last 11) + (lap-count-1 12) + (deathmatch-finish-lose 13) + (deathmatch-finish-win 14) + (frustrated 15) + (event-start 16) + (announce-race-start 17) + (announce-race-go 18) + (announce-race-end 19) + (announce-crash 20) + (hangtime 21) + (boss-start 22) + (boss-falling-behind 23) + (boss-catching-up 24) + (boss-shooting 25) + (boss-taking-hits 26) + (boss-bumping 27) + (boss-kill 28) + (boss-support 29) + (boss-taunt 30) + ) +;; ---speech-h:speech-type + +(deftype speech-request (structure) + ((handle uint64 :offset-assert 0) ;; handle + (req-time uint64 :offset-assert 8) + (start-time uint64 :offset-assert 16) + (name basic :offset-assert 24) + (speech-type speech-type :offset-assert 28) ;; speech-type + (flags uint8 :offset-assert 29) + (max-delay uint64 :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + ) + +(defenum speech-channel-flag + :type uint8 + (disable 1) + ) + +(deftype speech-channel (structure) + ((flags speech-channel-flag :offset-assert 0) + (gui-channel gui-channel :offset-assert 1) ;; gui-channel + (delay uint16 :offset-assert 2) + (id sound-id :offset-assert 4) ;; guessed by decompiler + (time uint64 :offset-assert 8) + (current-request speech-request :offset-assert 16) + (requests (array speech-request) :offset-assert 20) + (speeches speech-info 31 :offset-assert 24) + ) + :method-count-assert 17 + :size-assert #x94 + :flag-assert #x1100000094 + ;; field speech-channel-flag is likely a value type. + (:methods + (speech-channel-method-9 (_type_) none) ;; 9 ;; (speech-channel-method-9 (_type_ process-drawable speech-type) int) + (speech-channel-method-10 () none) ;; 10 ;; (speech-channel-method-10 (_type_ handle) none) + (speech-channel-method-11 () none) ;; 11 ;; (speech-channel-method-11 (_type_) none) + (speech-channel-method-12 () none) ;; 12 ;; (reset-channel! (_type_) none) + (speech-channel-method-13 () none) ;; 13 ;; (init! (_type_) none) + (speech-channel-method-14 () none) ;; 14 ;; (speech-channel-method-14 (_type_ speech-type float) none) + (speech-channel-method-15 () none) ;; 15 + (speech-channel-method-16 () none) ;; 16 + ) + ) + +(deftype speech-control (structure) + ((channels speech-channel 22 :inline :offset-assert 0) + ) + :method-count-assert 17 + :size-assert #xdc0 + :flag-assert #x1100000dc0 + (:methods + (speech-control-method-9 (_type_) none) ;; 9 ;; (speech-table-reset! (_type_) none) + (speech-control-method-10 () none) ;; 10 ;; (speech-table-set! (_type_ speech-type speech-type-info) none) + (speech-control-method-11 () none) ;; 11 ;; (speech-control-method-11 (_type_) none) + (speech-control-method-12 () none) ;; 12 ;; (speech-control-method-12 (_type_ process-drawable speech-type) none) + (speech-control-method-13 () none) ;; 13 ;; (speech-control-method-13 (_type_ process-drawable speech-type int) none) + (speech-control-method-14 () none) ;; 14 ;; (speech-control-method-14 (_type_ handle) none) + (speech-control-method-15 () none) ;; 15 ;; (speech-control-method-15 (_type_) none) + (speech-control-method-16 () none) ;; 16 ;; (speech-control-method-16 (_type_) none) + ) + ) + +(define-extern *music-volume-during-speech* object) +(define-extern *sfx-volume-during-speech* object) +(define-extern pecker-can-speak? (function symbol)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wind-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype wind-vector (structure) + ((wind-pos vector4w :inline :offset-assert 0) + (wind-vel vector4w :inline :offset-assert 16) + (stiffness float :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype wind-work (basic) + ((wind-array vector 64 :offset-assert 16) ;; guessed by decompiler + (wind-normal vector :inline :offset-assert 1040) + (wind-temp vector :inline :offset-assert 1056) + (wind-force float 64 :offset-assert 1072) ;; guessed by decompiler + (wind-const vector :inline :offset-assert 1328) + (wind-time uint32 :offset-assert 1344) + (wait-to-vu0 uint32 :offset-assert 1348) + (wait-to-spr uint32 :offset-assert 1352) + (wait-from-spr uint32 :offset-assert 1356) + (spr-index uint32 :offset-assert 1360) + (count uint32 :offset-assert 1364) + (next-count uint32 :offset-assert 1368) + (last-count uint32 :offset-assert 1372) + (to-spr uint32 :offset-assert 1376) + (from-spr uint32 :offset-assert 1380) + (next-mem uint32 :offset-assert 1384) + (last-mem uint32 :offset-assert 1388) + (next-spr uint32 :offset-assert 1392) + (last-spr uint32 :offset-assert 1396) + (to-ptrs uint32 3 :offset-assert 1400) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x584 + :flag-assert #x900000584 + ) +|# + +#| +(deftype wind-dma (structure) + ((buffer0 wind-vector 128 :offset-assert 0) ;; guessed by decompiler + (buffer1 wind-vector 128 :offset-assert 4096) ;; guessed by decompiler + (buffer2 wind-vector 128 :offset-assert 8192) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x3000 + :flag-assert #x900003000 + ) +|# + +;; (define-extern *wind-scales* array) ;; (array uint8) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; prototype-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype prototype-bucket (basic) + ((name string :offset-assert 4) ;; guessed by decompiler + (flags uint16 :offset-assert 8) ;; prototype-flags + (texture-masks-index uint16 :offset-assert 10) + (in-level uint16 :offset-assert 12) + (utextures uint16 :offset-assert 14) + (wide-level-index uint16 :offset-assert 14) + (geometry drawable 4 :offset-assert 16) ;; guessed by decompiler + (dists vector :inline :offset-assert 32) + (rdists vector :inline :offset-assert 48) + (near-plane meters :offset-assert 32) + (near-stiff meters :offset-assert 36) + (mid-plane meters :offset-assert 40) + (far-plane meters :offset-assert 44) + (rlength-near float :offset-assert 48) + (rlength-stiff float :offset-assert 52) + (rlength-mid float :offset-assert 56) + (stiffness float :offset-assert 60) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) +|# + +#| +(deftype prototype-bucket-shrub (prototype-bucket) + ((next uint32 4 :offset-assert 64) ;; guessed by decompiler + (count uint16 4 :offset-assert 80) ;; guessed by decompiler + (mod-count uint16 4 :offset-assert 88) ;; guessed by decompiler + (last dma-packet 4 :offset-assert 96) ;; guessed by decompiler + (next-clear uint128 :offset-assert 64) + (count-clear uint64 :offset-assert 80) + (last-clear uint128 :offset-assert 96) + ) + :method-count-assert 9 + :size-assert #x70 + :flag-assert #x900000070 + ) +|# + +#| +(deftype prototype-inline-array-shrub (drawable) + ((length int16 :offset-assert 6) + (data prototype-bucket-shrub 1 :offset-assert 36) ;; guessed by decompiler + ) + :method-count-assert 17 + :size-assert #x94 + :flag-assert #x1100000094 + ) +|# + +#| +(deftype prototype-array-shrub-info (basic) + ((prototype-inline-array-shrub prototype-inline-array-shrub :offset-assert 4) ;; guessed by decompiler + (wind-vectors uint32 :offset-assert 8) + (wind-count int32 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype prototype-bucket-tie (prototype-bucket) + ((next uint32 12 :offset-assert 64) ;; guessed by decompiler + (count uint16 12 :offset-assert 112) ;; guessed by decompiler + (frag-count uint8 4 :offset-assert 136) ;; guessed by decompiler + (index-start uint8 4 :offset-assert 140) ;; guessed by decompiler + (base-qw uint16 4 :offset-assert 144) ;; guessed by decompiler + (tie-rvanish float :offset-assert 152) + (tie-vanish-far float :offset-assert 156) + (envmap-rfade float :offset-assert 160) + (envmap-fade-far float :offset-assert 164) + (envmap-shader adgif-shader :offset-assert 168) + (tint-color uint32 :offset-assert 172) + (collide-hash-fragment-array collide-hash-fragment-array :offset-assert 176) ;; guessed by decompiler + (tie-colors time-of-day-palette :offset-assert 180) ;; guessed by decompiler + (data uint32 :dynamic :offset-assert 184) ;; guessed by decompiler + (color-index-qwc uint32 :dynamic :offset-assert 184) ;; guessed by decompiler + (scissor-frag-count uint8 :offset-assert 136) + (near-frag-count uint8 :offset-assert 137) + (mid-frag-count uint8 :offset-assert 138) + (far-frag-count uint8 :offset-assert 139) + (scissor-index-start uint8 :offset-assert 140) + (near-index-start uint8 :offset-assert 141) + (mid-index-start uint8 :offset-assert 142) + (far-index-start uint8 :offset-assert 143) + (scissor-base-qw uint16 :offset-assert 144) + (near-base-qw uint16 :offset-assert 146) + (mid-base-qw uint16 :offset-assert 148) + (far-base-qw uint16 :offset-assert 150) + (tie-next uint32 4 :offset-assert 64) ;; guessed by decompiler + (tie-scissor-next uint32 :offset-assert 64) + (tie-near-next uint32 :offset-assert 68) + (tie-mid-next uint32 :offset-assert 72) + (tie-far-next uint32 :offset-assert 76) + (trans-next uint32 4 :offset-assert 64) ;; guessed by decompiler + (trans-scissor-next uint32 4 :offset-assert 64) ;; guessed by decompiler + (trans-near-next uint32 :offset-assert 68) + (trans-mid-next uint32 :offset-assert 72) + (trans-far-next uint32 :offset-assert 76) + (water-next uint32 4 :offset-assert 64) ;; guessed by decompiler + (water-scissor-next uint32 4 :offset-assert 64) ;; guessed by decompiler + (water-near-next uint32 :offset-assert 68) + (water-mid-next uint32 :offset-assert 72) + (water-far-next uint32 :offset-assert 76) + (envmap-next uint32 4 :offset-assert 80) ;; guessed by decompiler + (envmap-scissor-next uint32 4 :offset-assert 80) ;; guessed by decompiler + (envmap-near-next uint32 :offset-assert 84) + (envmap-mid-next uint32 :offset-assert 88) + (envmap-far-next uint32 :offset-assert 92) + (generic-next uint32 3 :offset-assert 96) ;; guessed by decompiler + (generic-near-next uint32 :offset-assert 96) + (generic-mid-next uint32 :offset-assert 100) + (generic-far-next uint32 :offset-assert 104) + (vanish-next uint32 :offset-assert 108) + (tie-count uint16 4 :offset-assert 112) ;; guessed by decompiler + (tie-scissor-count uint16 :offset-assert 112) + (tie-near-count uint16 :offset-assert 114) + (tie-mid-count uint16 :offset-assert 116) + (tie-far-count uint16 :offset-assert 118) + (trans-count uint16 4 :offset-assert 112) ;; guessed by decompiler + (trans-scissor-count uint16 :offset-assert 112) + (trans-near-count uint16 :offset-assert 114) + (trans-mid-count uint16 :offset-assert 116) + (trans-far-count uint16 :offset-assert 118) + (water-count uint16 4 :offset-assert 112) ;; guessed by decompiler + (water-scissor-count uint16 :offset-assert 112) + (water-near-count uint16 :offset-assert 114) + (water-mid-count uint16 :offset-assert 116) + (water-far-count uint16 :offset-assert 118) + (envmap-count uint16 4 :offset-assert 120) ;; guessed by decompiler + (envmap-scissor-count uint16 :offset-assert 120) + (envmap-near-count uint16 :offset-assert 122) + (envmap-mid-count uint16 :offset-assert 124) + (envmap-far-count uint16 :offset-assert 126) + (generic-count uint16 3 :offset-assert 128) ;; guessed by decompiler + (generic-near-count uint16 :offset-assert 128) + (generic-mid-count uint16 :offset-assert 130) + (generic-far-count uint16 :offset-assert 132) + (vanish-count uint16 :offset-assert 134) + (next-clear uint128 3 :offset-assert 64) ;; guessed by decompiler + (count-clear uint64 3 :offset-assert 112) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #xb8 + :flag-assert #x9000000b8 + ) +|# + +#| +(deftype prototype-array-tie (array) + ((type type :offset-assert 0) ;; guessed by decompiler + (length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (content-type type :offset-assert 12) ;; guessed by decompiler + ) + :method-count-assert 10 + :size-assert #x10 + :flag-assert #xa00000010 + (:methods + (prototype-array-tie-method-9 () none) ;; 9 ;; (prototype-array-tie-method-9 () none) + ) + ) +|# + +#| +(deftype proxy-prototype-array-tie (basic) + ((prototype-array-tie prototype-array-tie :offset-assert 4) ;; guessed by decompiler + (wind-vectors uint32 :offset-assert 8) + (wind-count uint16 :offset-assert 12) + (prototype-max-qwc uint16 :offset-assert 14) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype prototype-node (structure) + ((prototype basic :offset-assert 0) + (level basic :offset-assert 4) + (id int16 :offset-assert 8) + (next-prototype int16 :offset-assert 10) + (next-child int16 :offset-assert 12) + (prev-child int16 :offset-assert 14) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype prototype-node-group (basic) + ((next-prototype int16 :offset-assert 4) + (next-free int16 :offset-assert 6) + (next-child-prototype UNKNOWN 19 :offset-assert 8) + (data UNKNOWN 512 :offset-assert 48) + ) + :method-count-assert 15 + :size-assert #x2030 + :flag-assert #xf00002030 + (:methods + (prototype-node-group-method-9 () none) ;; 9 + (prototype-node-group-method-10 () none) ;; 10 + (prototype-node-group-method-11 () none) ;; 11 + (prototype-node-group-method-12 () none) ;; 12 + (prototype-node-group-method-13 () none) ;; 13 + (prototype-node-group-method-14 () none) ;; 14 + ) + ) +|# + +#| +(deftype instance (drawable) + ((bucket-index uint16 :offset-assert 6) + (origin matrix4h :inline :offset-assert 32) + (flags uint16 :offset-assert 46) ;; instance-flags + (wind-index uint16 :offset-assert 62) + ) + :method-count-assert 17 + :size-assert #x40 + :flag-assert #x1100000040 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; joint-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-type joint-control basic) + +(defenum joint-control-command + :type uint64 + (push 1) + (blend 2) + (four 4) + (eight 8) + (push1 19) + (jcc32 32) + (stack 36) + (float 42) + (stack1 52) + ) + +(defenum joint-control-status + :type uint16 + :bitfield #t + + (sync-math 0) ;; 1 + (spooling 1) ;; 2 + (spooling-not-last-block 2) ;; 4 + (blend-shape 3) ;; 8 + (math-when-off-screen 4) ;; 16 + (valid-spooled-frame 5) ;; 32 + (blend-shape-valid 6) ;; 64 + (eye-anim-valid 7) ;; 128 + (eye-anim 8) ;; 256 + (force-math 9) + (no-joint-callbacks 10) + ) + +(declare-type effect-control basic) + +(deftype joint-control-channel (structure) + "A single animation channel that controls a number of joints. + Multiple channels are used to blend animations together." + ((parent joint-control :offset-assert 0) ;; guessed by decompiler + (frame-group art-joint-anim :offset-assert 4) ;; guessed by decompiler + (frame-num float :offset-assert 8) + (dist meters :offset-assert 12) + (num-func (function joint-control-channel float float float float) :offset-assert 16) ;; guessed by decompiler + (param float 3 :offset-assert 20) ;; guessed by decompiler + (frame-interp float 2 :offset-assert 32) ;; guessed by decompiler + (inspector-amount uint8 :offset-assert 40) + (command uint64 :offset-assert 48) ;; joint-control-command + (group-sub-index int8 :offset-assert 56) + (group-size int8 :offset-assert 57) + (eval-time uint32 :offset-assert 60) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +(deftype top-anim-joint-control (basic) + ((process (pointer process-drawable) :offset-assert 4) ;; guessed by decompiler + (interp-select uint64 2 :offset-assert 8) ;; guessed by decompiler + (base-anim basic :offset-assert 24) + (base-anim-speed float :offset-assert 28) + (base-anim-blend float :offset-assert 32) + (interp float :offset-assert 36) + (frame-group art-joint-anim :offset-assert 40) ;; guessed by decompiler + (frame-group-push art-joint-anim :offset-assert 44) ;; guessed by decompiler + (frame-num float :offset-assert 48) + (frame-targ art-joint-anim :offset-assert 52) ;; guessed by decompiler + (frame-speed float :offset-assert 56) + (frame-blend float :offset-assert 60) + (frame-cur-blend float :offset-assert 64) + (frame-start float :offset-assert 68) + (frame-post-blend float :offset-assert 72) + (frame-post-end float :offset-assert 76) + (frame-push-time time-frame :offset-assert 80) ;; time-frame + (frame-post-put-away basic :offset-assert 88) + (update-time time-frame :offset-assert 96) ;; time-frame + ) + :method-count-assert 13 + :size-assert #x68 + :flag-assert #xd00000068 + (:methods + (new (symbol type process-drawable) _type_) ;; 0 + (reset (_type_) none) ;; 9 + (update (_type_) none) ;; 10 + (get-channel (_type_ int) joint-control-channel) ;; 11 + (push-anim-to-targ (_type_ art-joint-anim float int int float float symbol) none) ;; 12 + ) + ) + +(deftype joint-control (basic) + "Every [[process-drawable]] has a [[joint-control]] that handles all the animation channels." + ((status joint-control-status :offset-assert 4) + (allocated-length uint8 :offset-assert 6) + (active-channels uint8 :offset-assert 7) + (root-channel (inline-array joint-control-channel) :offset 16) ;; guessed by decompiler + (blend-index uint8 :offset-assert 20) + (active-frame-interp uint8 :offset-assert 21) + (float-channels uint8 :offset-assert 22) + (generate-frame-function (function joint-anim-frame int joint-control int) :offset-assert 24) ;; guessed by decompiler + (prebind-function (function joint-anim-frame int joint-control int) :offset-assert 28) ;; guessed by decompiler + (postbind-function (function draw-control cspace-array joint-control none) :offset-assert 32) ;; guessed by decompiler + (effect effect-control :offset-assert 36) ;; guessed by decompiler + (interp-select int64 2 :offset-assert 40) ;; guessed by decompiler + ;;(UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (top-anim top-anim-joint-control :offset-assert 56) ;; guessed by decompiler + (override (array float) :offset-assert 60) ;; guessed by decompiler + (channel joint-control-channel :dynamic :inline :offset-assert 64) ;; guessed by decompiler + ;;(UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 13 + :size-assert #x40 + :flag-assert #xd00000040 + ;; field joint-control-status is likely a value type. + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type int) _type_) + (joint-control-method-9 () none) ;; 9 ;; (current-cycle-distance (_type_) float) + (joint-control-method-10 () none) ;; 10 ;; (update-anim-data (_type_) none) + (joint-control-method-11 () none) ;; 11 ;; (debug-print-channels (_type_ symbol) int) + (joint-control-method-12 () none) ;; 12 ;; (joint-control-method-12 (_type_ int) joint-control-channel) + ) + ) + +#| +(deftype matrix-stack (structure) + ((top matrix :offset-assert 0) + (data matrix 24 :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x610 + :flag-assert #x900000610 + ) +|# + +#| +(deftype channel-upload-info (structure) + ((fixed joint-anim-compressed-fixed :offset-assert 0) + (fixed-qwc int32 :offset-assert 4) + (frame joint-anim-compressed-frame :offset-assert 8) + (frame-qwc int32 :offset-assert 12) + (amount float :offset-assert 16) + (interp float :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) +|# + +#| +(deftype joint-work (structure) + ((temp-mtx matrix :inline :offset-assert 0) + (joint-stack matrix-stack :inline :offset-assert 64) + (fix-jmp-table (function none) 16 :offset-assert 1616) ;; guessed by decompiler + (frm-jmp-table (function none) 16 :offset-assert 1680) ;; guessed by decompiler + (pair-jmp-table (function none) 16 :offset-assert 1744) ;; guessed by decompiler + (uploads channel-upload-info 24 :offset-assert 1808) ;; guessed by decompiler + (num-uploads int32 :offset-assert 2384) + (mtx-acc matrix 2 :offset-assert 2400) ;; guessed by decompiler + (tq-acc transformq 100 :offset-assert 2528) ;; guessed by decompiler + (jacp-hdr joint-anim-compressed-hdr :inline :offset-assert 7328) + (fixed-data joint-anim-compressed-fixed :inline :offset-assert 7392) + (frame-data joint-anim-compressed-frame 2 :offset-assert 9600) ;; guessed by decompiler + (flatten-array float 576 :offset-assert 2400) ;; guessed by decompiler + (flattened vector 24 :offset-assert 2400) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x3640 + :flag-assert #x900003640 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; bones-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype bone-buffer (structure) + ((joint matrix 16 :offset-assert 0) ;; guessed by decompiler + (bone bone 16 :offset-assert 1024) ;; guessed by decompiler + (output pris-mtx 16 :offset-assert 2304) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x1100 + :flag-assert #x900001100 + ) +|# + +#| +(deftype bone-layout (structure) + ((data uint16 8 :offset-assert 0) ;; guessed by decompiler + (joint (inline-array matrix) 2 :offset-assert 0) ;; guessed by decompiler + (bone (inline-array bone) 2 :offset-assert 8) ;; guessed by decompiler + (output (inline-array pris-mtx) 2 :offset-assert 16) ;; guessed by decompiler + (unused uint32 2 :offset-assert 24) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype bone-regs (structure) + ((dma-buf dma-buffer :offset-assert 0) ;; guessed by decompiler + (wait-count uint32 :offset-assert 4) + (in-count uint32 :offset-assert 8) + (sp-size uint32 :offset-assert 12) + (sp-bufnum uint32 :offset-assert 16) + (joint-ptr (inline-array joint) :offset-assert 20) ;; guessed by decompiler + (bone-ptr (inline-array bone) :offset-assert 24) ;; guessed by decompiler + (num-bones uint32 :offset-assert 28) + (mtxs (inline-array pris-mtx) :offset-assert 32) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) +|# + +#| +(deftype bone-work (structure) + ((layout bone-layout :inline :offset-assert 0) + (regs bone-regs :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x44 + :flag-assert #x900000044 + ) +|# + +#| +(deftype bone-debug (structure) + ((time-ctr uint32 :offset-assert 0) + (timing uint32 360 :offset-assert 4) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x5a4 + :flag-assert #x9000005a4 + ) +|# + +#| +(deftype bone-memory (structure) + ((work bone-work :inline :offset-assert 0) + (buffer bone-buffer 2 :offset-assert 80) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x2250 + :flag-assert #x900002250 + ) +|# + +#| +(deftype bone-calculation (structure) + ((flags uint16 :offset-assert 0) ;; bone-calc-flags + (num-bones uint16 :offset-assert 2) + (matrix-area (inline-array pris-mtx) :offset-assert 4) ;; guessed by decompiler + (joints (inline-array joint) :offset-assert 8) ;; guessed by decompiler + (bones (inline-array bone) :offset-assert 12) ;; guessed by decompiler + (ripple-scale float :offset-assert 16) + (ripple-y-scale float :offset-assert 20) + (ripple-normal-scale float :offset-assert 24) + (ripple-area (inline-array vector) :offset-assert 28) ;; guessed by decompiler + (next bone-calculation :offset-assert 32) + (dummy-1 uint32 :offset-assert 36) + (dummy-2 uint32 :offset-assert 40) + (dummy-3 uint32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype bone-calculation-list (structure) + ((first bone-calculation :offset-assert 0) + (next bone-calculation :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; foreground-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; +++foreground:merc-mode +(defenum merc-mode + :type int32 + (merc 0) + (emerc 1) + (mercneric 2) + (texture 3) + (mercneric2 4) + (mm5 5) + ) +;; ---foreground:merc-mode + +(declare-type merc-effect structure) + +(deftype mercneric-chain (structure) + "A DMA chain for drawing with mercneric, and metadata needed to append. + This chain is assumed to run with a specific tpage from a specific level available." + ((first uint32 :offset-assert 0) + (next uint32 :offset-assert 4) + (state generic-bucket-state :inline :offset-assert 8) + (vu1-bucket bucket-id :offset-assert 16) ;; bucket-id + ) + :pack-me + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) + +(deftype merc-chain (structure) + "A DMA chain for drawing with merc. + This chain is assumed to run with a specific tpage from a specific level available." + ((first dma-packet :offset-assert 0) + (patch dma-packet :offset-assert 4) + (vu1-bucket bucket-id :offset-assert 8) ;; bucket-id + ) + :pack-me + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) + +(deftype foreground-bucket (structure) + "A foreground bucket is merc, emerc, and mercneric chain for a given texture mode." + ((merc merc-chain :inline :offset-assert 0) + (emerc merc-chain :inline :offset-assert 12) + (mercneric mercneric-chain :inline :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) + +;; TODO: Figure out buckets for Jak X (current list is Jak 3) +(deftype foreground-level-buckets (structure) + "Collection of buckets for a single level. + Each bucket has a different texture. The order is: + tfrag, pris, shrub, alpha, water, pris, pris2" + ((data foreground-bucket 10 :inline :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x1e0 + :flag-assert #x9000001e0 + ) + +(deftype foreground-bucket-grid (structure) + "Array of buckets for each level, plus the single warp chain shared between everybody." + ((level-buckets foreground-level-buckets 19 :inline :offset-assert 0) ;; guessed by decompiler + (warp-chain mercneric-chain :inline :offset-assert 9120) + ) + :method-count-assert 9 + :size-assert #x23b4 + :flag-assert #x9000023b4 + ) + +(deftype foreground-regs (structure) + "Frequently accessed foreground values. These are in scratchpad for fast access + during foreground processing." + ((dist float :offset-assert 0) + (merc-used uint32 :offset-assert 4) + (emerc-used uint32 :offset-assert 8) + (mercneric-used uint32 :offset-assert 12) + (use-isometric uint32 :offset-assert 16) + (base-start dma-packet :offset-assert 20) + (joint-ptr (inline-array joint) :offset-assert 24) ;; guessed by decompiler + (bone-ptr (inline-array bone) :offset-assert 28) ;; guessed by decompiler + (num-bones uint32 :offset-assert 32) + (mtxs (inline-array pris-mtx) :offset-assert 36) ;; guessed by decompiler + (dma-buf dma-buffer :offset-assert 40) ;; guessed by decompiler + (default-texture-index uint32 :offset-assert 44) + (mercneric-chain mercneric-chain :offset-assert 48) + (level-buckets foreground-level-buckets :offset-assert 52) + ) + :method-count-assert 9 + :size-assert #x38 + :flag-assert #x900000038 + ) + +(deftype foreground-work (structure) + "Memory map for scratchpad during foreground processing. + This is not used by the renderers, bone matrix, or joint code - just the code + that assigns stuff to buckets and prepares DMA for merc (or requests for generic merc)." + ((regs foreground-regs :inline :offset-assert 0) + (draw-index-map uint8 19 :offset 64) ;; guessed by decompiler + (grid foreground-bucket-grid :inline :offset-assert 96) + (bounds sphere :inline :offset-assert 9248) + (lights vu-lights :inline :offset-assert 9264) + (distance vector :inline :offset-assert 9376) + (next-tmpl dma-packet :inline :offset-assert 9392) + ) + :method-count-assert 9 + :size-assert #x24c0 + :flag-assert #x9000024c0 + ) + +(deftype texscroll-globals (structure) + "List of all merc-effects that need texscroll applied." + ((requests int32 :offset-assert 0) + (effects merc-effect 32 :offset-assert 4) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x84 + :flag-assert #x900000084 + ) + +(deftype merc-effect-bucket-info (structure) + "Scratch info computed per-merc-effect by the foreground code, then later read by merc + DMA generation. This is only for the currently-processing merc model's effects." + ((color-fade rgba :offset-assert 0) ;; guessed by decompiler + (alpha uint8 :offset 3) ;; added + (merc-path uint8 :offset-assert 4) + (ignore-alpha uint8 :offset-assert 5) + (disable-draw uint8 :offset-assert 6) + (disable-envmap uint8 :offset-assert 7) + ) + :pack-me + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype merc-bucket-info (structure) + "Scratch info for the current merc-ctrl. Written by the foreground code, read by merc DMA generation." + ((light vu-lights :inline :offset-assert 0) + (needs-clip int32 :offset-assert 112) + (need-mercprime-if-merc int32 :offset-assert 116) + (must-use-mercneric-for-clip int32 :offset-assert 120) + (effect merc-effect-bucket-info 64 :inline :offset-assert 124) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x27c + :flag-assert #x90000027c + ) + +(deftype foreground-globals (structure) + "The foreground renderer state: all DMA chains, settings for the current merc-ctrl, texscroll list." + ((foreground-grid foreground-bucket-grid :inline :offset-assert 0) + (merc-bucket-info merc-bucket-info :inline :offset-assert 9152) + (texscroll texscroll-globals :inline :offset-assert 9792) + ) + :method-count-assert 9 + :size-assert #x26c4 + :flag-assert #x9000026c4 + ) + +(deftype shadow-dma-packet (structure) + "DMA tag for submitting shadow data." + ((tag generic-merc-tag :inline :offset-assert 0) + (settings shadow-settings :inline :offset-assert 16) + (geo-ref dma-packet :inline :offset-assert 96) + (mtx-ref dma-packet :inline :offset-assert 112) + (end-tag dma-packet :inline :offset-assert 128) + ) + :method-count-assert 9 + :size-assert #x90 + :flag-assert #x900000090 + ) + +(define-extern invalidate-cache-line (function pointer int)) +(define-extern *bucket-map* (pointer bucket-id-16)) +(define-extern vu1-bucket-map "Map from level, texture, mode to bucket-id." (function int int merc-mode bucket-id)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; engines ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; +++engines:part-local-space-flags +(defenum part-local-space-flags + :type uint32 + :bitfield #t + (pls0 0) + (pls1 1) + (pls2 2) + ) +;; ---engines:part-local-space-flags + +(deftype particle-local-space-info (connection) + ((params basic 3 :offset 20 :score 1) ;; guessed by decompiler + (mat-prev matrix :inline :offset-assert 32) + (mat-new matrix :inline :offset-assert 96) + (hand uint64 :offset-assert 160) ;; handle + (flags part-local-space-flags :offset-assert 168) ;; guessed by decompiler + (pad uint32 1 :offset-assert 172) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #xb0 + :flag-assert #xe000000b0 + ;; field param1 uses ~A with a signed load. field param2 uses ~A with a signed load. field param3 uses ~A with a signed load. + ) + +(define-extern *background-draw-engine* engine) +(define-extern *matrix-engine* (array handle)) +(define-extern *cloth-engine* (array handle)) +(define-extern *part-engine* engine) +(define-extern *cam-post-hook-engine* engine) +(define-extern *part-local-space-engine* engine) +(define-extern *camera-engine* engine) +(define-extern *debug-engine* engine) +(define-extern *pad-engine* engine) +(define-extern *lightning-engine* engine) +(define-extern *hud-engine* engine) +(define-extern *prim-client-engine* engine) +(define-extern *prim-engine* engine) +(define-extern *task-manager-engine* engine) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lightning-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype lightning-spec (basic) + ((name string :offset-assert 4) ;; guessed by decompiler + (flags uint16 :offset-assert 8) ;; lightning-spec-flags + (rand-func uint8 :offset-assert 10) + (adjust-distance uint8 :offset-assert 11) + (start-color rgba :offset-assert 12) ;; guessed by decompiler + (end-color rgba :offset-assert 16) ;; guessed by decompiler + (fade-to-color rgba :offset-assert 20) ;; guessed by decompiler + (fade-start-factor float :offset-assert 24) + (fade-time float :offset-assert 28) + (texture texture-id :offset-assert 32) ;; guessed by decompiler + (reduction float :offset-assert 36) + (num-points int32 :offset-assert 40) + (box-size float :offset-assert 44) + (merge-factor float :offset-assert 48) + (merge-count int32 :offset-assert 52) + (radius float :offset-assert 56) + (duration float :offset-assert 60) + (duration-rand float :offset-assert 64) + (sound sound-spec :offset-assert 68) + (delay float :offset-assert 72) + (delay-rand float :offset-assert 76) + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) +|# + +#| +(deftype lightning-state (structure) + ((mode uint8 :offset-assert 0) + (counter float :offset-assert 4) + (points-to-draw int32 :offset-assert 8) + (box-size float :offset-assert 12) + (gcf-control gcf-control :inline :offset-assert 16) + (line vector-array :offset-assert 128) ;; guessed by decompiler + (meet vector-array :offset-assert 132) ;; guessed by decompiler + (path vector-array :offset-assert 136) ;; guessed by decompiler + (start-color rgba :offset-assert 140) ;; guessed by decompiler + (end-color rgba :offset-assert 144) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x94 + :flag-assert #x900000094 + ) +|# + +#| +(deftype lightning-control (basic) + ((spec lightning-spec :offset-assert 4) ;; guessed by decompiler + (process (pointer process) :offset-assert 8) ;; guessed by decompiler + (state lightning-state :inline :offset-assert 16) + ) + :method-count-assert 14 + :size-assert #xa4 + :flag-assert #xe000000a4 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type lightning-spec process float) _type_) + (lightning-control-method-9 () none) ;; 9 ;; (change-mode (_type_ lightning-mode) lightning-mode) + (lightning-control-method-10 () none) ;; 10 ;; (get-mode (_type_) lightning-mode) + (lightning-control-method-11 () none) ;; 11 ;; (set-point! (_type_ int vector) none) + (lightning-control-method-12 () none) ;; 12 ;; (set-first-meet-point (_type_ vector) none) + (lightning-control-method-13 () none) ;; 13 ;; (set-last-meet-point (_type_ vector) none) + ) + ) +|# + +#| +(deftype lightning-probe-vars (basic) + ((src-joint-index uint32 :offset-assert 4) + (next-spawn-time uint64 :offset-assert 8) ;; time-frame + (last-valid-time uint64 :offset-assert 16) ;; time-frame + (point vector 2 :offset-assert 32) ;; guessed by decompiler + (start-pos vector :inline :offset-assert 32) + (end-pos vector :inline :offset-assert 48) + (probe-dirs (inline-array vector) :offset-assert 64) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x44 + :flag-assert #x900000044 + ) +|# + +;; (define-extern lookup-lightning-spec-by-name function) ;; (function string lightning-spec) +;; (define-extern *lightning-probe-vars* lightning-probe-vars) ;; lightning-probe-vars + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; res ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; res-lump is already defined! + +(define-extern *res-static-buf* pointer) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lights ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *light-hash-work* object) ;; light-hash-work +;; (define-extern light-slerp function) ;; (function light light light float light) +;; (define-extern light-group-slerp function) ;; (function light-group light-group light-group float light-group) +;; (define-extern light-group-process! function) ;; (function vu-lights light-group vector vector none) +;; (define-extern *default-lights* object) ;; vu-lights +;; (define-extern vu-lights-default! function) ;; (function vu-lights vu-lights) +;; (define-extern init-light-hash function) ;; (function none) +;; (define-extern light-hash-count-items function) ;; (function light-hash light-sphere none) +;; (define-extern light-hash-add-items function) ;; (function light-hash light-sphere integer object) +;; (define-extern reset-light-hash function) ;; (function none) +;; (define-extern update-light-hash function) ;; (function light-hash none) +;; (define-extern lookup-light-sphere-by-name function) ;; (function string light-hash light-sphere) +;; (define-extern light-hash-get-bucket-index function) ;; (function light-hash vector int) +;; (define-extern add-light-sphere-to-light-group function) ;; (function object object object object object) +;; (define-extern light-merge! function) ;; (function light-group light-group none) +;; (define-extern light-group-scale! function) ;; (function light-group (pointer light-group) float none) +;; (define-extern light-group-madd! function) ;; (function light-group (pointer light-group) light-group float none) +;; (define-extern light-group-lerp! function) ;; (function light-group (pointer light-group) light-group float none) +;; (define-extern shadow-info-copy! function) ;; (function light-group light-group none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; dynamics-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype dynamics (basic) + ((name symbol :offset-assert 4) ;; guessed by decompiler + (gravity-max meters :offset-assert 8) + (gravity-length meters :offset-assert 12) + (gravity vector :inline :offset-assert 16) + (gravity-normal vector :inline :offset-assert 32) + (walk-distance meters :offset-assert 48) + (run-distance meters :offset-assert 52) + ) + :method-count-assert 10 + :size-assert #x38 + :flag-assert #xa00000038 + (:methods + (set-gravity-length (_type_ float) none) ;; 9 + ) + ) + +(define-extern time-to-apex function) ;; (function float float int) +(define-extern time-to-ground function) ;; (function float float float int) +(define-extern *standard-dynamics* dynamics) ;; dynamics + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; pat-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype pat-surface (uint32) + () + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype pat-mode-info (structure) + ((name string :offset-assert 0) ;; guessed by decompiler + (wall-angle float :offset-assert 4) + (color rgba :offset-assert 8) ;; guessed by decompiler + (hilite-color rgba :offset-assert 12) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(define-extern pat-material->string (function pat-surface string)) +(define-extern pat-mode->string (function pat-surface string)) +(define-extern pat-event->string (function pat-surface string)) +(define-extern *pat-mode-info* (inline-array pat-mode-info)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; fact-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype fact-bank (basic) + ((eco-level-max float :offset-assert 4) + (eco-single-inc float :offset-assert 8) + (eco-full-inc float :offset-assert 12) + (eco-single-timeout seconds :offset-assert 16) + (eco-full-timeout seconds :offset-assert 24) + (dummy seconds :offset-assert 32) + (health-max-default float :offset-assert 40) + (health-max-max float :offset-assert 44) + (health-small-inc float :offset-assert 48) + (health-single-inc float :offset-assert 52) + (health-default-inc float :offset-assert 56) + (eco-pill-green-max-default float :offset-assert 60) + (eco-pill-dark-max-default float :offset-assert 64) + (eco-pill-light-max-default float :offset-assert 68) + (eco-green-max-default float :offset-assert 72) + (default-eco-pill-green-inc float :offset-assert 76) + (default-eco-pill-dark-inc float :offset-assert 80) + (default-eco-pill-light-inc float :offset-assert 84) + (buzzer-max-default float :offset-assert 88) + (buzzer-single-inc float :offset-assert 92) + (suck-bounce-dist meters :offset-assert 96) + (suck-suck-dist meters :offset-assert 100) + (shield-max float :offset-assert 104) + (shield-use-speed float :offset-assert 108) + (shield-time-min seconds :offset-assert 112) + (trick-point-max float :offset-assert 120) + (super-skill-inc float :offset-assert 124) + (darkjak-spin-inc float :offset-assert 128) + (darkjak-punch-inc float :offset-assert 132) + (darkjak-flop-inc float :offset-assert 136) + (darkjak-uppercut-inc float :offset-assert 140) + (darkjak-bomb0-inc float :offset-assert 144) + (darkjak-bomb1-inc float :offset-assert 148) + (darkjak-smack-inc float :offset-assert 152) + (darkjak-bomb-min float :offset-assert 156) + (darkjak-button-invis-inc float :offset-assert 160) + ) + :method-count-assert 9 + :size-assert #xa4 + :flag-assert #x9000000a4 + ) +|# + +#| +(deftype fact-info (basic) + ((process process :offset-assert 4) ;; guessed by decompiler + (pickup-amount float :offset-assert 12) + (pickup-spawn-amount float :offset-assert 16) + (options actor-option :offset-assert 24) + (fade-time uint64 :offset-assert 32) ;; time-frame + ) + :method-count-assert 12 + :size-assert #x28 + :flag-assert #xc00000028 + ;; field actor-option is likely a value type. + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type process pickup-type float) _type_) + (fact-info-method-9 () none) ;; 9 ;; (drop-pickup (_type_ symbol process-tree fact-info int symbol) (pointer process)) + (fact-info-method-10 () none) ;; 10 ;; (reset! (_type_ symbol) none) + (fact-info-method-11 () none) ;; 11 ;; (pickup-collectable! (_type_ pickup-type float handle) float) + ) + ) +|# + +#| +(deftype fact-info-enemy (fact-info) + ((process process :offset-assert 0) ;; guessed by decompiler + (pickup-amount float :offset-assert 8) + (pickup-spawn-amount float :offset-assert 12) + (options actor-option :offset-assert 20) + (fade-time uint64 :offset-assert 28) ;; time-frame + (speed float :offset-assert 36) + (idle-distance meters :offset-assert 40) + (notice-top meters :offset-assert 44) + (notice-bottom meters :offset-assert 48) + (cam-horz meters :offset-assert 52) + (cam-vert meters :offset-assert 56) + (cam-notice-dist meters :offset-assert 60) + (enemy-options enemy-option :offset-assert 64) + (trig-dist meters :offset-assert 68) + (trig-actor-group (pointer actor-group) :offset-assert 72) ;; guessed by decompiler + (trig-mask-count int8 :offset-assert 76) + (trig-mask uint8 2 :offset-assert 77) ;; guessed by decompiler + ) + :method-count-assert 13 + :size-assert #x53 + :flag-assert #xd00000053 + ;; field actor-option is likely a value type. + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type process (pointer float)) _type_) + (fact-info-enemy-method-12 () none) ;; 12 ;; (clear-mask-bits (_type_ int) none) + ) + ) +|# + +#| +(deftype fact-info-crate (fact-info) + ((process process :offset-assert 0) ;; guessed by decompiler + (pickup-amount float :offset-assert 8) + (pickup-spawn-amount float :offset-assert 12) + (options actor-option :offset-assert 20) + (fade-time uint64 :offset-assert 28) ;; time-frame + (suck-count int32 :offset-assert 36) + ) + :method-count-assert 12 + :size-assert #x2c + :flag-assert #xc0000002c + ;; field actor-option is likely a value type. + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type process pickup-type float) _type_) + ) + ) +|# + +#| +(deftype fact-info-enemy-defaults (basic) + ((idle-distance meters :offset-assert 4) + (pickup-type int32 :offset-assert 8) + (pickup-amount float :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +;; (define-extern *FACT-bank* fact-bank) ;; fact-bank +;; (define-extern pickup-type->string function) ;; (function pickup-type string) +;; (define-extern *fact-info-enemy-defaults* fact-info-enemy-defaults) ;; fact-info-enemy-defaults + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; penetrate-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; +++penetrate-h:knocked-type +(defenum knocked-type + :type uint8 + (none 0) + (mech-punch 1) + (explode-or-darkjak 2) + (dark-shot 3) + (yellow-shot 4) + (red-shot 5) + (blue-shot 6) + (vehicle 7) + ) +;; ---penetrate-h:knocked-type + +;; +++penetrate-h:penetrate +(defenum penetrate + :type uint64 + :bitfield #t + (touch 0) + (generic-attack 1) + (lunge 2) + (flop 3) + (punch 4) + (spin 5) + (roll 6) + (uppercut 7) + (bonk 8) + (tube 9) + (vehicle 10) + (flut-attack 11) + (board 12) + (mech 13) + (mech-punch 14) + (mech-bonk 15) + (dark-skin 16) + (dark-punch 17) + (dark-bomb 18) + (dark-smack 19) + (flut 20) + (shield 21) + (explode 22) + (jak-yellow-shot 23) + (jak-red-shot 24) + (jak-blue-shot 25) + (jak-dark-shot 26) + (enemy-yellow-shot 27) + (enemy-dark-shot 28) + (eco-yellow 29) + (eco-red 30) + (eco-blue 31) + (eco-green 32) + (knocked 33) + (jak-res-shockwave 34) + (jak-dark-nuke 35) + (jak-dark-blackhole 36) + (emp-blast 37) + ) +;; ---penetrate-h:penetrate + +(define-extern penetrate->string (function penetrate object)) +(define-extern penetrate-using->damage (function penetrate float)) +(define-extern penetrated-by-all&hit-points->penetrated-by (function penetrate int penetrate)) +(define-extern pu->knocked-type (function penetrate knocked-type)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; scert-1-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; scert-2-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; scert-3-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype net-localization-params (structure) + ((character-encoding-type int32 :offset-assert 0) + (language-type int32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype net-memory-callback-params (structure) + ((pf-malloc-callback basic :offset-assert 0) + (pf-realloc-callback basic :offset-assert 4) + (pf-free-callback basic :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype net-dme-version (structure) + ((n-version uint32 :offset-assert 0) + (sz-version UNKNOWN 16 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) +|# + +#| +(deftype net-type-system-message-data (structure) + ((connection-handle basic :offset-assert 0) + (severity uint8 :offset-assert 4) + (e-encoding-type int32 :offset-assert 8) + (e-language-type int32 :offset-assert 12) + (b-end-of-message uint8 :offset-assert 16) + (n-message-length uint16 :offset-assert 18) + (p-message uint32 :offset-assert 20) + (p-user-data basic :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-update-error (structure) + ((connection-handle basic :offset-assert 0) + (net-error int32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ;; field connection-handle uses ~A with a signed load. + ) +|# + +#| +(deftype net-update-conn-errors (structure) + ((sizeof-net-update-errors uint32 :offset-assert 0) + (a-errors UNKNOWN 4 :offset-assert 4) + (udperror int32 :offset-assert 36) + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + ) +|# + +#| +(deftype net-data (structure) + ((n-size int32 :offset-assert 0) + (p-data basic :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ;; field p-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-initialize-out-params (structure) + ((b-is-set int32 :offset-assert 0) + (error-code int32 :offset-assert 4) + (sz-version UNKNOWN 16 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) +|# + +#| +(deftype net-connect-out-params (structure) + ((b-is-set int32 :offset-assert 0) + (error-code int32 :offset-assert 4) + (connection-handle basic :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ;; field connection-handle uses ~A with a signed load. + ) +|# + +#| +(deftype net-host-peer-to-peer-out-params (structure) + ((b-is-set int32 :offset-assert 0) + (error-code int32 :offset-assert 4) + (connection-handle basic :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ;; field connection-handle uses ~A with a signed load. + ) +|# + +#| +(deftype net-resolve-addr-out-params (structure) + ((b-is-set int32 :offset-assert 0) + (error-code int32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype net-incoming-client-out-params (structure) + ((b-is-set int32 :offset-assert 0) + (error-code int32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype net-client-metric (structure) + ((average-rate float :offset-assert 0) + (max-average-rate float :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype net-bandwidth-info (structure) + ((sends net-client-metric :inline :offset-assert 0) + (send-bytes net-client-metric :inline :offset-assert 8) + (recvs net-client-metric :inline :offset-assert 16) + (recv-bytes net-client-metric :inline :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype net-connection-status (structure) + ((my-connect-status int32 :offset-assert 0) + (n-valid-client-count int32 :offset-assert 4) + (n-connected-client-count int32 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype sz-ipaddress (structure) + ((data UNKNOWN 16 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype net-type-lookup-response (structure) + ((asz-ipaddresses UNKNOWN 16 :offset-assert 0) + (n-ipaddresses uint32 :offset-assert 256) + (error-code int32 :offset-assert 260) + ) + :method-count-assert 9 + :size-assert #x108 + :flag-assert #x900000108 + ) +|# + +#| +(deftype net-type-lookup-params (structure) + ((sz-host-name UNKNOWN 256 :offset-assert 0) + (sz-server-ip UNKNOWN 16 :offset-assert 256) + (pf-lookup-response basic :offset-assert 272) + ) + :method-count-assert 9 + :size-assert #x114 + :flag-assert #x900000114 + ) +|# + +#| +(deftype rsa-key (structure) + ((key UNKNOWN 16 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) +|# + +#| +(deftype rsa-keypair (structure) + ((public-key rsa-key :inline :offset-assert 0) + (private-key rsa-key :inline :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) +|# + +#| +(deftype net-type-connect-callback-data (structure) + ((connection-handle basic :offset-assert 0) + (connect-status int32 :offset-assert 4) + (failure-reason int32 :offset-assert 8) + (error-code int32 :offset-assert 12) + (p-user-data basic :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-type-client-connect-callback-data (structure) + ((connection-handle basic :offset-assert 0) + (client-index int32 :offset-assert 4) + (client-ip-string uint32 :offset-assert 8) + (client-status int32 :offset-assert 12) + (user-specified int32 :offset-assert 16) + (p-user-data basic :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-peer-to-peer-host-change-data (structure) + ((connection-handle basic :offset-assert 0) + (host-client-index int32 :offset-assert 4) + (p-user-data basic :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-token-ownership-notify-data (structure) + ((connection-handle basic :offset-assert 0) + (token-id int32 :offset-assert 4) + (owner-client-index int32 :offset-assert 8) + (error-code int32 :offset-assert 12) + (p-user-data basic :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-token-params (structure) + ((pf-token-ownership-notify-callback basic :offset-assert 0) + (p-token-ownership-notify-callback-data basic :offset-assert 4) + (b-use-token int32 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ;; field p-token-ownership-notify-callback-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-system-status-data (structure) + ((connection-handle basic :offset-assert 0) + (status int32 :offset-assert 4) + (error-code int32 :offset-assert 8) + (p-user-data basic :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-stream-media-audio-record-data (structure) + ((audio-type int32 :offset-assert 0) + (p-buffer uint32 :offset-assert 4) + (buf-size uint32 :offset-assert 8) + (bytes-stored uint32 :offset-assert 12) + (transport-flags int8 :offset-assert 16) + (p-user-data basic :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ;; field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-stream-media-audio-play-data (structure) + ((audio-type int32 :offset-assert 0) + (client-index int32 :offset-assert 4) + (p-buffer uint32 :offset-assert 8) + (buf-size uint32 :offset-assert 12) + (bytes-read uint32 :offset-assert 16) + (p-user-data basic :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ;; field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-audio-data-characteristics (structure) + ((n-channels-in int32 :offset-assert 0) + (n-bits-per-sample-in int32 :offset-assert 4) + (n-sample-rate-in int32 :offset-assert 8) + (n-channels-out int32 :offset-assert 12) + (n-bits-per-sample-out int32 :offset-assert 16) + (n-sample-rate-out int32 :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) +|# + +#| +(deftype net-color-array (structure) + ((cb-size int32 :offset-assert 0) + (line-size int32 :offset-assert 4) + (xsize int32 :offset-assert 8) + (ysize int32 :offset-assert 12) + (data UNKNOWN 16 :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype net-stream-media-video-record-data (structure) + ((p-y net-color-array :offset-assert 0) + (p-cr net-color-array :offset-assert 4) + (p-cb net-color-array :offset-assert 8) + (b-data-stored int32 :offset-assert 12) + (p-user-data basic :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ;; field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-rgbarray (structure) + ((cb-size int32 :offset-assert 0) + (line-size int32 :offset-assert 4) + (xsize int32 :offset-assert 8) + (ysize int32 :offset-assert 12) + (data UNKNOWN 16 :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) +|# + +#| +(deftype net-stream-media-video-play-data (structure) + ((client-index int32 :offset-assert 0) + (p-rgbarray net-rgbarray :offset-assert 4) + (b-data-processed int32 :offset-assert 8) + (p-user-data basic :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ;; field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-video-data-characteristics (structure) + ((xsize int32 :offset-assert 0) + (ysize int32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype net-stream-media-custom-video-record-data (structure) + ((p-buffer uint32 :offset-assert 0) + (n-buffer-size uint32 :offset-assert 4) + (n-bytes-stored uint32 :offset-assert 8) + (transport-flags int8 :offset-assert 12) + (p-user-data basic :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ;; field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-stream-media-custom-video-play-data (structure) + ((client-index int32 :offset-assert 0) + (p-buffer uint32 :offset-assert 4) + (n-bytes-available uint32 :offset-assert 8) + (n-bytes-processed uint32 :offset-assert 12) + (p-user-data basic :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ;; field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-stream-media-params (structure) + ((b-default-set int32 :offset-assert 0) + (b-use-stream-media int32 :offset-assert 4) + (num-channels uint32 :offset-assert 8) + (max-incoming-audio-streams uint32 :offset-assert 12) + (record-no-data-timeout uint32 :offset-assert 16) + (send-buffer-size uint32 :offset-assert 20) + (recv-buffer-size uint32 :offset-assert 24) + (grid-type int32 :offset-assert 28) + (audio-data-characteristics net-audio-data-characteristics :inline :offset-assert 32) + (pf-audio-record-callback basic :offset-assert 56) + (p-audio-record-callback-data basic :offset-assert 60) + (pf-audio-play-callback basic :offset-assert 64) + (p-audio-play-callback-data basic :offset-assert 68) + (video-data-characteristics net-video-data-characteristics :inline :offset-assert 72) + (pf-video-record-callback basic :offset-assert 80) + (p-video-record-callback-data basic :offset-assert 84) + (pf-video-play-callback basic :offset-assert 88) + (p-video-play-callback-data basic :offset-assert 92) + (pf-custom-video-record-callback basic :offset-assert 96) + (p-custom-video-record-callback-data basic :offset-assert 100) + (pf-custom-video-play-callback basic :offset-assert 104) + (p-custom-video-play-callback-data basic :offset-assert 108) + ) + :method-count-assert 9 + :size-assert #x70 + :flag-assert #x900000070 + ;; field p-audio-record-callback-data uses ~A with a signed load. field p-audio-play-callback-data uses ~A with a signed load. field p-video-record-callback-data uses ~A with a signed load. field p-video-play-callback-data uses ~A with a signed load. field p-custom-video-record-callback-data uses ~A with a signed load. field p-custom-video-play-callback-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-address (structure) + ((address-type int32 :offset-assert 0) + (address UNKNOWN 16 :offset-assert 4) + (port uint32 :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) +|# + +#| +(deftype net-address-list (structure) + ((a-address-list UNKNOWN 2 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype net-connection-info (structure) + ((e-type int32 :offset-assert 0) + (address-list net-address-list :inline :offset-assert 4) + (world-id int32 :offset-assert 52) + (server-key rsa-key :inline :offset-assert 56) + (a-session-key UNKNOWN 17 :offset-assert 120) + (a-access-key UNKNOWN 17 :offset-assert 137) + ) + :method-count-assert 9 + :size-assert #x9a + :flag-assert #x90000009a + ) +|# + +#| +(deftype net-connect-in-params (structure) + ((b-default-set int32 :offset-assert 0) + (max-clients int32 :offset-assert 4) + (connection-info net-connection-info :inline :offset-assert 8) + (pf-local-connect-callback basic :offset-assert 164) + (p-local-connect-callback-data basic :offset-assert 168) + (pf-local-disconnect-callback basic :offset-assert 172) + (p-local-disconnect-callback-data basic :offset-assert 176) + (pf-remote-client-connect-callback basic :offset-assert 180) + (p-remote-client-connect-callback-data basic :offset-assert 184) + (pf-remote-client-disconnect-callback basic :offset-assert 188) + (p-remote-client-disconnect-callback-data basic :offset-assert 192) + (pf-peer-to-peer-host-change-callback basic :offset-assert 196) + (p-host-change-callback-data basic :offset-assert 200) + (pf-system-status-callback basic :offset-assert 204) + (p-system-status-callback-data basic :offset-assert 208) + (stream-media-params net-stream-media-params :inline :offset-assert 212) + (user-specified int32 :offset-assert 324) + (aux-udpbind-port int32 :offset-assert 328) + (token-params net-token-params :inline :offset-assert 332) + (b-use-time-base int32 :offset-assert 344) + (send-buffer-size uint32 :offset-assert 348) + (recv-buffer-size uint32 :offset-assert 352) + ) + :method-count-assert 9 + :size-assert #x164 + :flag-assert #x900000164 + ;; field p-local-connect-callback-data uses ~A with a signed load. field p-local-disconnect-callback-data uses ~A with a signed load. field p-remote-client-connect-callback-data uses ~A with a signed load. field p-remote-client-disconnect-callback-data uses ~A with a signed load. field p-host-change-callback-data uses ~A with a signed load. field p-system-status-callback-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-bit-mask (structure) + ((bitmask UNKNOWN 8 :offset-assert 0) + (base-id int32 :offset-assert 32) + (max-id int32 :offset-assert 36) + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + ) +|# + +#| +(deftype net-client-list (structure) + ((target-client int32 :offset-assert 0) + (client-mask net-bit-mask :inline :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype net-send-message-in-params (structure) + ((connection-handle basic :offset-assert 0) + (transport-flags int8 :offset-assert 4) + (message-type int32 :offset-assert 8) + (dest-client net-client-list :inline :offset-assert 12) + (message-length int32 :offset-assert 56) + (message-data uint32 :offset-assert 60) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ;; field connection-handle uses ~A with a signed load. + ) +|# + +#| +(deftype net-send-message-out-params (structure) + ((error-code int32 :offset-assert 0) + (queued-client net-client-list :inline :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype net-disconnect-params (structure) + ((connection-handle basic :offset-assert 0) + (reason int32 :offset-assert 4) + (pf-local-disconnect-callback basic :offset-assert 8) + (p-user-data basic :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-latency-metrics-info (structure) + ((latency-min uint32 :offset-assert 0) + (latency-max uint32 :offset-assert 4) + (latency-avg uint32 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype net-latency-metrics-data-args (structure) + ((connection-handle basic :offset-assert 0) + (target-client-index int32 :offset-assert 4) + (latency-metrics-info net-latency-metrics-info :inline :offset-assert 8) + (error-code int32 :offset-assert 20) + (p-user-data basic :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load. + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; scert-4-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype net-latency-metrics-params (structure) + ((connection-handle basic :offset-assert 0) + (target-client-list net-client-list :inline :offset-assert 4) + (pf-latency-metrics-callback basic :offset-assert 48) + (p-user-data basic :offset-assert 52) + ) + :method-count-assert 9 + :size-assert #x38 + :flag-assert #x900000038 + ;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-error-threshold-callback-data (structure) + ((object-index int32 :offset-assert 0) + (field-index int32 :offset-assert 4) + (field-size int32 :offset-assert 8) + (field-count int32 :offset-assert 12) + (p-current-data basic :offset-assert 16) + (p-last-update-data basic :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ;; field p-current-data uses ~A with a signed load. field p-last-update-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-remote-client-event-data (structure) + ((event-type int32 :offset-assert 0) + (connection-handle basic :offset-assert 4) + (client-index int32 :offset-assert 8) + (p-user-data basic :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-object-filter-data (structure) + ((client-list net-client-list :inline :offset-assert 0) + (object-index int32 :offset-assert 44) + (fields-updated net-bit-mask :inline :offset-assert 48) + (update-type int32 :offset-assert 88) + (p-user-data basic :offset-assert 92) + ) + :method-count-assert 9 + :size-assert #x60 + :flag-assert #x900000060 + ;; field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-type-ownership-update-data (structure) + ((connection-handle basic :offset-assert 0) + (client-index int32 :offset-assert 4) + (object-index int32 :offset-assert 8) + (state int32 :offset-assert 12) + (p-user-data basic :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-type-ownership-request-data (structure) + ((connection-handle basic :offset-assert 0) + (client-index int32 :offset-assert 4) + (object-index int32 :offset-assert 8) + (p-user-data basic :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-completion-data (structure) + ((result int32 :offset-assert 0) + (p-user-data basic :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ;; field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-smchange-data (structure) + ((connection-handle basic :offset-assert 0) + (smclient-index int32 :offset-assert 4) + (p-user-data basic :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-join-in-params (structure) + ((b-default-set int32 :offset-assert 0) + (connection-handle basic :offset-assert 4) + (sz-client-name UNKNOWN 12 :offset-assert 8) + (net-object-count int32 :offset-assert 20) + (data-stream-count int32 :offset-assert 24) + (session-master-status int32 :offset-assert 28) + (pf-local-join-callback basic :offset-assert 32) + (p-join-callback-data basic :offset-assert 36) + (pf-remote-client-event-callback basic :offset-assert 40) + (p-remote-client-event-callback-data basic :offset-assert 44) + (pf-smchange-callback basic :offset-assert 48) + (p-smchange-callback-data basic :offset-assert 52) + (pf-ownership-update-callback basic :offset-assert 56) + (p-ownership-update-callback-data basic :offset-assert 60) + (pf-ownership-request-callback basic :offset-assert 64) + (p-ownership-request-callback-data basic :offset-assert 68) + ) + :method-count-assert 9 + :size-assert #x48 + :flag-assert #x900000048 + ;; field connection-handle uses ~A with a signed load. field p-join-callback-data uses ~A with a signed load. field p-remote-client-event-callback-data uses ~A with a signed load. field p-smchange-callback-data uses ~A with a signed load. field p-ownership-update-callback-data uses ~A with a signed load. field p-ownership-request-callback-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-join-out-params (structure) + ((b-is-set int32 :offset-assert 0) + (error-code int32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype anonymous-0 (structure) + ((error-threshold-magnitude float :offset-assert 0) + (pf-threshold-callback basic :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype net-type-client (structure) + ((connect-time uint32 :offset-assert 0) + (client-object-index uint32 :offset-assert 4) + (net-object-buffer-start int32 :offset-assert 8) + (net-object-buffer-count int32 :offset-assert 12) + (net-data-stream-start uint32 :offset-assert 16) + (net-data-stream-count uint32 :offset-assert 20) + (name UNKNOWN 12 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) +|# + +#| +(deftype net-type-data-stream (structure) + ((status uint8 :offset-assert 0) + (circular-buffer uint8 :offset-assert 1) + (remote-buffer uint8 :offset-assert 2) + (stream-type uint8 :offset-assert 3) + (buffer-complete uint8 :offset-assert 4) + (send-to-all uint8 :offset-assert 5) + (target-client-index int32 :offset-assert 8) + (owner-client-index int32 :offset-assert 12) + (buffer-start uint32 :offset-assert 16) + (buffer-end uint32 :offset-assert 20) + (read-ptr uint32 :offset-assert 24) + (write-ptr uint32 :offset-assert 28) + (data-rate int32 :offset-assert 32) + (min-packet-size uint16 :offset-assert 36) + (max-packet-size uint16 :offset-assert 38) + (time-of-last-update uint32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype net-type-short-vector2 (structure) + ((x int16 :offset-assert 0) + (y int16 :offset-assert 2) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype net-type-short-vector3 (structure) + ((x int16 :offset-assert 0) + (y int16 :offset-assert 2) + (z int16 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x6 + :flag-assert #x900000006 + ) +|# + +#| +(deftype net-type-int-vector2 (structure) + ((x int32 :offset-assert 0) + (y int32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype net-type-int-vector3 (structure) + ((x int32 :offset-assert 0) + (y int32 :offset-assert 4) + (z int32 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype net-type-float-vector2 (structure) + ((x float :offset-assert 0) + (y float :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype net-type-float-vector3 (structure) + ((x float :offset-assert 0) + (y float :offset-assert 4) + (z float :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype net-type-object (structure) + ((structure-index uint8 :offset-assert 0) + (filter-type uint8 :offset-assert 1) + (lifespan-type uint8 :offset-assert 2) + (latency-critical uint8 :offset-assert 3) + (owner-client-index int32 :offset-assert 4) + (creator-client-index int32 :offset-assert 8) + (name UNKNOWN 16 :offset-assert 12) + (current-object-data uint32 :offset-assert 28) + (last-global-object-data-update uint32 :offset-assert 32) + (hi-field-change-set uint32 :offset-assert 36) + (lo-field-change-set uint32 :offset-assert 40) + (time-of-expiration uint32 :offset-assert 44) + (max-update-interval uint32 :offset-assert 48) + (time-of-last-global-update uint32 :offset-assert 52) + (time-of-last-client-update uint32 :offset-assert 56) + (time-of-last-client-field-update uint32 :offset-assert 60) + (local-user-data basic :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x44 + :flag-assert #x900000044 + ;; field local-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-register-object-filter-in-params (structure) + ((object-filter-call-back basic :offset-assert 0) + (p-user-data basic :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ;; field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-register-object-filter-out-params (structure) + ((object-filter-type int32 :offset-assert 0) + (error-code int32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype net-lanfind-exchange-callback-out-args (structure) + ((b-respond-to-sender int32 :offset-assert 0) + (details net-data :inline :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype net-lanfind-in-params (structure) + ((b-default-set int32 :offset-assert 0) + (session-type int32 :offset-assert 4) + (filter uint32 :offset-assert 8) + (details net-data :inline :offset-assert 12) + (udpport uint32 :offset-assert 20) + (pfn-lanfind-callback basic :offset-assert 24) + (p-user-data basic :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ;; field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-stream-media-channel-info (structure) + ((connection-handle basic :offset-assert 0) + (channel-num uint32 :offset-assert 4) + (client-count uint32 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ;; field connection-handle uses ~A with a signed load. + ) +|# + +#| +(deftype net-stream-media-client-info (structure) + ((connection-handle basic :offset-assert 0) + (client-index int32 :offset-assert 4) + (b-joined-to-channel int32 :offset-assert 8) + (channel-num uint32 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ;; field connection-handle uses ~A with a signed load. + ) +|# + +#| +(deftype net-stream-media-channel-state-data (structure) + ((b-can-record int32 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype net-stream-media-ignore-data (structure) + ((b-defaults-set int32 :offset-assert 0) + (connection-handle basic :offset-assert 4) + (client-index int32 :offset-assert 8) + (b-ignore int32 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ;; field connection-handle uses ~A with a signed load. + ) +|# + +#| +(deftype medius-player-online-state (structure) + ((connect-status int32 :offset-assert 0) + (medius-lobby-world-id int32 :offset-assert 4) + (medius-game-world-id int32 :offset-assert 8) + (lobby-name UNKNOWN 64 :offset-assert 12) + (game-name UNKNOWN 64 :offset-assert 76) + ) + :method-count-assert 9 + :size-assert #x8c + :flag-assert #x90000008c + ) +|# + +#| +(deftype medius-account-delete-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (master-password UNKNOWN 32 :offset-assert 38) + ) + :method-count-assert 9 + :size-assert #x46 + :flag-assert #x900000046 + ) +|# + +#| +(deftype medius-account-get-idrequest (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (account-name UNKNOWN 32 :offset-assert 38) + ) + :method-count-assert 9 + :size-assert #x46 + :flag-assert #x900000046 + ) +|# + +#| +(deftype medius-account-get-idresponse (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (account-id int32 :offset-assert 24) + (status-code int32 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype medius-account-get-profile-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + ) + :method-count-assert 9 + :size-assert #x26 + :flag-assert #x900000026 + ) +|# + +#| +(deftype medius-account-get-profile-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (account-status int32 :offset-assert 28) + (account-name UNKNOWN 32 :offset-assert 32) + (birthday-month int16 :offset-assert 64) + (birthday-day int16 :offset-assert 66) + (birthday-year int16 :offset-assert 68) + (first-name UNKNOWN 32 :offset-assert 70) + (last-name UNKNOWN 32 :offset-assert 102) + (middle-name UNKNOWN 32 :offset-assert 134) + (address1 UNKNOWN 32 :offset-assert 166) + (address2 UNKNOWN 32 :offset-assert 198) + (address3 UNKNOWN 32 :offset-assert 230) + (city UNKNOWN 32 :offset-assert 262) + (state UNKNOWN 3 :offset-assert 294) + (province UNKNOWN 32 :offset-assert 297) + (country UNKNOWN 32 :offset-assert 329) + (postal-code UNKNOWN 16 :offset-assert 361) + (email-address UNKNOWN 80 :offset-assert 377) + ) + :method-count-assert 9 + :size-assert #x1c9 + :flag-assert #x9000001c9 + ) +|# + +#| +(deftype medius-account-login-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (account-name UNKNOWN 32 :offset-assert 38) + (password UNKNOWN 32 :offset-assert 70) + ) + :method-count-assert 9 + :size-assert #x66 + :flag-assert #x900000066 + ) +|# + +#| +(deftype medius-account-login-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (account-id int32 :offset-assert 28) + (account-type int32 :offset-assert 32) + (medius-world-id int32 :offset-assert 36) + (connect-info net-connection-info :inline :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #xc2 + :flag-assert #x9000000c2 + ) +|# + +#| +(deftype medius-account-logout-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + ) + :method-count-assert 9 + :size-assert #x26 + :flag-assert #x900000026 + ) +|# + +#| +(deftype medius-account-registration-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (account-type int32 :offset-assert 40) + (account-name UNKNOWN 32 :offset-assert 44) + (password UNKNOWN 32 :offset-assert 76) + ) + :method-count-assert 9 + :size-assert #x6c + :flag-assert #x90000006c + ) +|# + +#| +(deftype medius-account-registration-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (account-id int32 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype medius-account-update-password-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (old-password UNKNOWN 32 :offset-assert 38) + (new-password UNKNOWN 32 :offset-assert 70) + ) + :method-count-assert 9 + :size-assert #x66 + :flag-assert #x900000066 + ) +|# + +#| +(deftype medius-account-update-profile-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (birthday-month int16 :offset-assert 38) + (birthday-day int16 :offset-assert 40) + (birthday-year int16 :offset-assert 42) + (first-name UNKNOWN 32 :offset-assert 44) + (last-name UNKNOWN 32 :offset-assert 76) + (middle-name UNKNOWN 32 :offset-assert 108) + (address1 UNKNOWN 32 :offset-assert 140) + (address2 UNKNOWN 32 :offset-assert 172) + (address3 UNKNOWN 32 :offset-assert 204) + (city UNKNOWN 32 :offset-assert 236) + (state UNKNOWN 3 :offset-assert 268) + (province UNKNOWN 32 :offset-assert 271) + (country UNKNOWN 32 :offset-assert 303) + (postal-code UNKNOWN 16 :offset-assert 335) + (email-address UNKNOWN 80 :offset-assert 351) + ) + :method-count-assert 9 + :size-assert #x1af + :flag-assert #x9000001af + ) +|# + +#| +(deftype medius-account-update-stats-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (stats UNKNOWN 256 :offset-assert 38) + ) + :method-count-assert 9 + :size-assert #x126 + :flag-assert #x900000126 + ) +|# + +#| +(deftype medius-add-player-to-clan-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (player-account-id int32 :offset-assert 40) + (welcome-message UNKNOWN 200 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #xf4 + :flag-assert #x9000000f4 + ) +|# + +#| +(deftype medius-add-player-to-clan-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-add-to-buddy-list-confirmation-request0 (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (target-account-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-add-to-buddy-list-confirmation-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (target-account-id int32 :offset-assert 40) + (add-type int32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; scert-5-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype medius-add-to-buddy-list-confirmation-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (target-account-id int32 :offset-assert 28) + (target-account-name UNKNOWN 32 :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) +|# + +#| +(deftype medius-add-to-buddy-list-fwd-confirmation-request0 (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (originator-account-id int32 :offset-assert 24) + (originator-account-name UNKNOWN 32 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x3c + :flag-assert #x90000003c + ) +|# + +#| +(deftype medius-add-to-buddy-list-fwd-confirmation-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (originator-account-id int32 :offset-assert 24) + (originator-account-name UNKNOWN 32 :offset-assert 28) + (add-type int32 :offset-assert 60) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) +|# + +#| +(deftype medius-add-to-buddy-list-fwd-confirmation-response0 (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (session-key UNKNOWN 17 :offset-assert 28) + (originator-account-id int32 :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x34 + :flag-assert #x900000034 + ) +|# + +#| +(deftype medius-add-to-buddy-list-fwd-confirmation-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (session-key UNKNOWN 17 :offset-assert 28) + (originator-account-id int32 :offset-assert 48) + (add-type int32 :offset-assert 52) + ) + :method-count-assert 9 + :size-assert #x38 + :flag-assert #x900000038 + ) +|# + +#| +(deftype medius-add-to-buddy-list-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (account-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-add-to-buddy-list-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-add-to-ignore-list-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (ignore-account-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-add-to-ignore-list-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-anonymous-login-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (session-display-name UNKNOWN 32 :offset-assert 38) + (session-display-stats UNKNOWN 256 :offset-assert 70) + ) + :method-count-assert 9 + :size-assert #x146 + :flag-assert #x900000146 + ) +|# + +#| +(deftype medius-ban-player-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (ban-account-id int32 :offset-assert 40) + (ban-minutes int32 :offset-assert 44) + (medius-world-id int32 :offset-assert 48) + (app-type int32 :offset-assert 52) + ) + :method-count-assert 9 + :size-assert #x38 + :flag-assert #x900000038 + ) +|# + +#| +(deftype medius-ban-player-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-channel-info-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (medius-world-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-channel-info-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (lobby-name UNKNOWN 64 :offset-assert 28) + (active-player-count int32 :offset-assert 92) + (max-players int32 :offset-assert 96) + ) + :method-count-assert 9 + :size-assert #x64 + :flag-assert #x900000064 + ) +|# + +#| +(deftype medius-channel-list-extra-info-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (page-id uint16 :offset-assert 22) + (page-size uint16 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1a + :flag-assert #x90000001a + ) +|# + +#| +(deftype medius-channel-list-extra-info-response0 (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (medius-world-id int32 :offset-assert 28) + (player-count uint16 :offset-assert 32) + (max-players uint16 :offset-assert 34) + (security-level int32 :offset-assert 36) + (generic-field1 uint32 :offset-assert 40) + (lobby-name UNKNOWN 64 :offset-assert 44) + (end-of-list int8 :offset-assert 108) + ) + :method-count-assert 9 + :size-assert #x6d + :flag-assert #x90000006d + ) +|# + +#| +(deftype medius-channel-list-extra-info-response1 (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (medius-world-id int32 :offset-assert 28) + (player-count uint16 :offset-assert 32) + (max-players uint16 :offset-assert 34) + (security-level int32 :offset-assert 36) + (generic-field1 uint32 :offset-assert 40) + (generic-field2 uint32 :offset-assert 44) + (generic-field3 uint32 :offset-assert 48) + (generic-field4 uint32 :offset-assert 52) + (generic-field-level int32 :offset-assert 56) + (lobby-name UNKNOWN 64 :offset-assert 60) + (end-of-list int8 :offset-assert 124) + ) + :method-count-assert 9 + :size-assert #x7d + :flag-assert #x90000007d + ) +|# + +#| +(deftype medius-channel-list-extra-info-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (medius-world-id int32 :offset-assert 28) + (player-count uint16 :offset-assert 32) + (max-players uint16 :offset-assert 34) + (game-world-count uint16 :offset-assert 36) + (security-level int32 :offset-assert 40) + (generic-field1 uint32 :offset-assert 44) + (generic-field2 uint32 :offset-assert 48) + (generic-field3 uint32 :offset-assert 52) + (generic-field4 uint32 :offset-assert 56) + (generic-field-level int32 :offset-assert 60) + (lobby-name UNKNOWN 64 :offset-assert 64) + (end-of-list int8 :offset-assert 128) + ) + :method-count-assert 9 + :size-assert #x81 + :flag-assert #x900000081 + ) +|# + +#| +(deftype medius-channel-list-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (page-id int16 :offset-assert 38) + (page-size int16 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2a + :flag-assert #x90000002a + ) +|# + +#| +(deftype medius-channel-list-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (medius-world-id int32 :offset-assert 28) + (lobby-name UNKNOWN 64 :offset-assert 32) + (player-count int32 :offset-assert 96) + (end-of-list int8 :offset-assert 100) + ) + :method-count-assert 9 + :size-assert #x65 + :flag-assert #x900000065 + ) +|# + +#| +(deftype medius-chat-fwd-message (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (originator-account-id int32 :offset-assert 24) + (originator-account-name UNKNOWN 32 :offset-assert 28) + (message-type int32 :offset-assert 60) + (message UNKNOWN 64 :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) +|# + +#| +(deftype medius-chat-message (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (message-type int32 :offset-assert 40) + (target-account-id int32 :offset-assert 44) + (message UNKNOWN 64 :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x70 + :flag-assert #x900000070 + ) +|# + +#| +(deftype medius-binary-fwd-message (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (originator-account-id int32 :offset-assert 24) + (message-type int32 :offset-assert 28) + (message UNKNOWN 400 :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x1b0 + :flag-assert #x9000001b0 + ) +|# + +#| +(deftype medius-binary-message (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (message-type int32 :offset-assert 40) + (target-account-id int32 :offset-assert 44) + (message UNKNOWN 400 :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x1c0 + :flag-assert #x9000001c0 + ) +|# + +#| +(deftype medius-chat-toggle-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (chat-toggle int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-chat-toggle-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-check-my-clan-invitations-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (start int32 :offset-assert 40) + (page-size int32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype medius-check-my-clan-invitations-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (clan-invitation-id int32 :offset-assert 28) + (clan-id int32 :offset-assert 32) + (response-status int32 :offset-assert 36) + (message UNKNOWN 200 :offset-assert 40) + (leader-account-id int32 :offset-assert 240) + (leader-account-name UNKNOWN 32 :offset-assert 244) + (end-of-list int8 :offset-assert 276) + ) + :method-count-assert 9 + :size-assert #x115 + :flag-assert #x900000115 + ) +|# + +#| +(deftype medius-clan-ladder-list-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (clan-ladder-stat-index int32 :offset-assert 24) + (sort-order int32 :offset-assert 28) + (start-position uint32 :offset-assert 32) + (page-size uint32 :offset-assert 36) + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + ) +|# + +#| +(deftype medius-clan-ladder-list-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (clan-id int32 :offset-assert 24) + (clan-name UNKNOWN 32 :offset-assert 28) + (ladder-position uint32 :offset-assert 60) + (status-code int32 :offset-assert 64) + (end-of-list int8 :offset-assert 68) + ) + :method-count-assert 9 + :size-assert #x45 + :flag-assert #x900000045 + ) +|# + +#| +(deftype medius-clan-ladder-position-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (clan-id int32 :offset-assert 24) + (clan-ladder-stat-index int32 :offset-assert 28) + (sort-order int32 :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) +|# + +#| +(deftype medius-clan-ladder-position-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (ladder-position uint32 :offset-assert 24) + (total-rankings uint32 :offset-assert 28) + (status-code int32 :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) +|# + +#| +(deftype medius-clear-game-list-filter-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (filter-field int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-clear-game-list-filter-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-clear-stored-account-info-request (structure) + ((device int32 :offset-assert 0) + (card-port int32 :offset-assert 4) + (card-slot int32 :offset-assert 8) + (account-id int32 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype medius-clear-stored-account-info-response (structure) + ((confirmation int32 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype medius-confirm-clan-team-challenge-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (clan-challenge-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-confirm-clan-team-challenge-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-create-channel-request0 (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (application-id int32 :offset-assert 40) + (max-players int32 :offset-assert 44) + (lobby-name UNKNOWN 64 :offset-assert 48) + (lobby-password UNKNOWN 32 :offset-assert 112) + ) + :method-count-assert 9 + :size-assert #x90 + :flag-assert #x900000090 + ) +|# + +#| +(deftype medius-create-channel-request1 (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (application-id int32 :offset-assert 40) + (max-players int32 :offset-assert 44) + (lobby-name UNKNOWN 64 :offset-assert 48) + (lobby-password UNKNOWN 32 :offset-assert 112) + (generic-field1 uint32 :offset-assert 144) + ) + :method-count-assert 9 + :size-assert #x94 + :flag-assert #x900000094 + ) +|# + +#| +(deftype medius-create-channel-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (application-id int32 :offset-assert 40) + (max-players int32 :offset-assert 44) + (lobby-name UNKNOWN 64 :offset-assert 48) + (lobby-password UNKNOWN 32 :offset-assert 112) + (generic-field1 uint32 :offset-assert 144) + (generic-field2 uint32 :offset-assert 148) + (generic-field3 uint32 :offset-assert 152) + (generic-field4 uint32 :offset-assert 156) + (generic-field-level int32 :offset-assert 160) + ) + :method-count-assert 9 + :size-assert #xa4 + :flag-assert #x9000000a4 + ) +|# + +#| +(deftype medius-create-channel-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (medius-world-id int32 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype medius-create-game-on-self-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (server-version int32 :offset-assert 40) + (max-players-per-world int32 :offset-assert 44) + (application-id int32 :offset-assert 48) + (min-players int32 :offset-assert 52) + (max-players int32 :offset-assert 56) + (game-level int32 :offset-assert 60) + (game-name UNKNOWN 64 :offset-assert 64) + (game-password UNKNOWN 32 :offset-assert 128) + (player-skill-level int32 :offset-assert 160) + (rules-set int32 :offset-assert 164) + (generic-field1 int32 :offset-assert 168) + (generic-field2 int32 :offset-assert 172) + (generic-field3 int32 :offset-assert 176) + (port int32 :offset-assert 180) + (game-host-type int32 :offset-assert 184) + (address-list net-address-list :inline :offset-assert 188) + ) + :method-count-assert 9 + :size-assert #xec + :flag-assert #x9000000ec + ) +|# + +#| +(deftype medius-create-game-on-self-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (medius-world-id int32 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype medius-create-clan-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (application-id int32 :offset-assert 40) + (clan-name UNKNOWN 32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x4c + :flag-assert #x90000004c + ) +|# + +#| +(deftype medius-create-clan-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (clan-id int32 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; scert-6-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype medius-create-game-request0 (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (application-id int32 :offset-assert 40) + (min-players int32 :offset-assert 44) + (max-players int32 :offset-assert 48) + (game-level int32 :offset-assert 52) + (game-name UNKNOWN 64 :offset-assert 56) + (game-password UNKNOWN 32 :offset-assert 120) + (player-skill-level int32 :offset-assert 152) + (rules-set int32 :offset-assert 156) + (generic-field1 int32 :offset-assert 160) + (generic-field2 int32 :offset-assert 164) + (generic-field3 int32 :offset-assert 168) + (game-host-type int32 :offset-assert 172) + ) + :method-count-assert 9 + :size-assert #xb0 + :flag-assert #x9000000b0 + ) +|# + +#| +(deftype medius-create-game-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (application-id int32 :offset-assert 40) + (min-players int32 :offset-assert 44) + (max-players int32 :offset-assert 48) + (game-level int32 :offset-assert 52) + (game-name UNKNOWN 64 :offset-assert 56) + (game-password UNKNOWN 32 :offset-assert 120) + (spectator-password UNKNOWN 32 :offset-assert 152) + (player-skill-level int32 :offset-assert 184) + (rules-set int32 :offset-assert 188) + (generic-field1 int32 :offset-assert 192) + (generic-field2 int32 :offset-assert 196) + (generic-field3 int32 :offset-assert 200) + (game-host-type int32 :offset-assert 204) + (attributes int32 :offset-assert 208) + ) + :method-count-assert 9 + :size-assert #xd4 + :flag-assert #x9000000d4 + ) +|# + +#| +(deftype medius-create-game-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (medius-world-id int32 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype medius-delete-clan-message-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (clan-message-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-delete-clan-message-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-disband-clan-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (clan-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-disband-clan-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-dnas-signature-post (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (dnas-signature-type int32 :offset-assert 40) + (dnas-signature-length int8 :offset-assert 44) + (dnas-signature UNKNOWN 32 :offset-assert 45) + ) + :method-count-assert 9 + :size-assert #x4d + :flag-assert #x90000004d + ) +|# + +#| +(deftype medius-end-game-report (structure) + ((session-key UNKNOWN 17 :offset-assert 0) + (medius-world-id int32 :offset-assert 20) + (winning-team UNKNOWN 64 :offset-assert 24) + (winning-player UNKNOWN 32 :offset-assert 88) + (final-score int32 :offset-assert 120) + ) + :method-count-assert 9 + :size-assert #x7c + :flag-assert #x90000007c + ) +|# + +#| +(deftype medius-error-message (structure) + ((error-code int32 :offset-assert 0) + (error-message UNKNOWN 256 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x104 + :flag-assert #x900000104 + ) +|# + +#| +(deftype medius-find-player-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (search-type int32 :offset-assert 40) + (id int32 :offset-assert 44) + (name UNKNOWN 32 :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) +|# + +#| +(deftype medius-find-player-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (application-id int32 :offset-assert 28) + (application-name UNKNOWN 32 :offset-assert 32) + (application-type int32 :offset-assert 64) + (medius-world-id int32 :offset-assert 68) + (account-id int32 :offset-assert 72) + (account-name UNKNOWN 32 :offset-assert 76) + (end-of-list int8 :offset-assert 108) + ) + :method-count-assert 9 + :size-assert #x6d + :flag-assert #x90000006d + ) +|# + +#| +(deftype medius-find-world-by-name-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (name UNKNOWN 64 :offset-assert 38) + (world-type int32 :offset-assert 104) + ) + :method-count-assert 9 + :size-assert #x6c + :flag-assert #x90000006c + ) +|# + +#| +(deftype medius-find-world-by-name-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (application-id int32 :offset-assert 28) + (application-name UNKNOWN 32 :offset-assert 32) + (application-type int32 :offset-assert 64) + (medius-world-id int32 :offset-assert 68) + (world-name UNKNOWN 64 :offset-assert 72) + (world-status int32 :offset-assert 136) + (end-of-list int8 :offset-assert 140) + ) + :method-count-assert 9 + :size-assert #x8d + :flag-assert #x90000008d + ) +|# + +#| +(deftype medius-game-info-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (medius-world-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-game-info-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (application-id int32 :offset-assert 28) + (min-players int32 :offset-assert 32) + (max-players int32 :offset-assert 36) + (game-level int32 :offset-assert 40) + (player-skill-level int32 :offset-assert 44) + (player-count int32 :offset-assert 48) + (game-stats UNKNOWN 256 :offset-assert 52) + (game-name UNKNOWN 64 :offset-assert 308) + (rules-set int32 :offset-assert 372) + (generic-field1 int32 :offset-assert 376) + (generic-field2 int32 :offset-assert 380) + (generic-field3 int32 :offset-assert 384) + (world-status int32 :offset-assert 388) + (game-host-type int32 :offset-assert 392) + ) + :method-count-assert 9 + :size-assert #x18c + :flag-assert #x90000018c + ) +|# + +#| +(deftype medius-game-list-extra-info-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (page-id uint16 :offset-assert 22) + (page-size uint16 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1a + :flag-assert #x90000001a + ) +|# + +#| +(deftype medius-game-list-extra-info-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (medius-world-id int32 :offset-assert 28) + (player-count uint16 :offset-assert 32) + (min-players uint16 :offset-assert 34) + (max-players uint16 :offset-assert 36) + (game-level int32 :offset-assert 40) + (player-skill-level int32 :offset-assert 44) + (rules-set int32 :offset-assert 48) + (generic-field1 int32 :offset-assert 52) + (generic-field2 int32 :offset-assert 56) + (generic-field3 int32 :offset-assert 60) + (security-level int32 :offset-assert 64) + (world-status int32 :offset-assert 68) + (game-host-type int32 :offset-assert 72) + (game-name UNKNOWN 64 :offset-assert 76) + (game-stats UNKNOWN 256 :offset-assert 140) + (end-of-list int8 :offset-assert 396) + ) + :method-count-assert 9 + :size-assert #x18d + :flag-assert #x90000018d + ) +|# + +#| +(deftype medius-game-list-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (application-id int32 :offset-assert 40) + (page-id int16 :offset-assert 44) + (page-size int16 :offset-assert 46) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype medius-game-list-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (medius-world-id int32 :offset-assert 28) + (game-name UNKNOWN 64 :offset-assert 32) + (world-status int32 :offset-assert 96) + (game-host-type int32 :offset-assert 100) + (player-count int32 :offset-assert 104) + (end-of-list int8 :offset-assert 108) + ) + :method-count-assert 9 + :size-assert #x6d + :flag-assert #x90000006d + ) +|# + +#| +(deftype medius-game-world-player-list-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (medius-world-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-game-world-player-list-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (account-id int32 :offset-assert 28) + (account-name UNKNOWN 32 :offset-assert 32) + (stats UNKNOWN 256 :offset-assert 64) + (connection-class int32 :offset-assert 320) + (end-of-list int8 :offset-assert 324) + ) + :method-count-assert 9 + :size-assert #x145 + :flag-assert #x900000145 + ) +|# + +#| +(deftype medius-get-all-announcements-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (application-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-get-all-clan-messages-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (start int32 :offset-assert 40) + (page-size int32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype medius-get-all-clan-messages-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (clan-message-id int32 :offset-assert 28) + (message UNKNOWN 200 :offset-assert 32) + (status int32 :offset-assert 232) + (end-of-list int8 :offset-assert 236) + ) + :method-count-assert 9 + :size-assert #xed + :flag-assert #x9000000ed + ) +|# + +#| +(deftype medius-get-announcements-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (application-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-get-announcements-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (announcement-id int32 :offset-assert 28) + (announcement UNKNOWN 1000 :offset-assert 32) + (end-of-list int8 :offset-assert 1032) + ) + :method-count-assert 9 + :size-assert #x409 + :flag-assert #x900000409 + ) +|# + +#| +(deftype medius-get-buddy-invitations-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x15 + :flag-assert #x900000015 + ) +|# + +#| +(deftype medius-get-buddy-invitations-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (account-id int32 :offset-assert 28) + (account-name UNKNOWN 32 :offset-assert 32) + (add-type int32 :offset-assert 64) + (end-of-list int8 :offset-assert 68) + ) + :method-count-assert 9 + :size-assert #x45 + :flag-assert #x900000045 + ) +|# + +#| +(deftype medius-get-buddy-list-extra-info-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x15 + :flag-assert #x900000015 + ) +|# + +#| +(deftype medius-get-buddy-list-extra-info-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (account-id int32 :offset-assert 28) + (account-name UNKNOWN 32 :offset-assert 32) + (online-state medius-player-online-state :inline :offset-assert 64) + (end-of-list int8 :offset-assert 204) + ) + :method-count-assert 9 + :size-assert #xcd + :flag-assert #x9000000cd + ) +|# + +#| +(deftype medius-get-buddy-list-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + ) + :method-count-assert 9 + :size-assert #x26 + :flag-assert #x900000026 + ) +|# + +#| +(deftype medius-get-buddy-list-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (account-id int32 :offset-assert 28) + (account-name UNKNOWN 32 :offset-assert 32) + (player-status int32 :offset-assert 64) + (end-of-list int8 :offset-assert 68) + ) + :method-count-assert 9 + :size-assert #x45 + :flag-assert #x900000045 + ) +|# + +#| +(deftype medius-get-ignore-list-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + ) + :method-count-assert 9 + :size-assert #x26 + :flag-assert #x900000026 + ) +|# + +#| +(deftype medius-get-ignore-list-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (ignore-account-id int32 :offset-assert 28) + (ignore-account-name UNKNOWN 32 :offset-assert 32) + (player-status int32 :offset-assert 64) + (end-of-list int8 :offset-assert 68) + ) + :method-count-assert 9 + :size-assert #x45 + :flag-assert #x900000045 + ) +|# + +#| +(deftype medius-get-clan-by-idrequest (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (account-id int32 :offset-assert 40) + (clan-id int32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype medius-get-clan-by-idresponse (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (application-id int32 :offset-assert 28) + (clan-name UNKNOWN 32 :offset-assert 32) + (leader-account-id int32 :offset-assert 64) + (leader-account-name UNKNOWN 32 :offset-assert 68) + (stats UNKNOWN 256 :offset-assert 100) + (status int32 :offset-assert 356) + ) + :method-count-assert 9 + :size-assert #x168 + :flag-assert #x900000168 + ) +|# + +#| +(deftype medius-get-clan-by-name-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (application-id int32 :offset-assert 40) + (clan-name UNKNOWN 32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x4c + :flag-assert #x90000004c + ) +|# + +#| +(deftype medius-get-clan-by-name-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (clan-id int32 :offset-assert 28) + (leader-account-id int32 :offset-assert 32) + (leader-account-name UNKNOWN 32 :offset-assert 36) + (stats UNKNOWN 256 :offset-assert 68) + (status int32 :offset-assert 324) + ) + :method-count-assert 9 + :size-assert #x148 + :flag-assert #x900000148 + ) +|# + +#| +(deftype medius-get-clan-invitations-sent-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (start int32 :offset-assert 40) + (page-size int32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype medius-get-clan-invitations-sent-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (account-id int32 :offset-assert 28) + (account-name UNKNOWN 32 :offset-assert 32) + (response-msg UNKNOWN 200 :offset-assert 64) + (response-status int32 :offset-assert 264) + (response-time int32 :offset-assert 268) + (end-of-list int8 :offset-assert 272) + ) + :method-count-assert 9 + :size-assert #x111 + :flag-assert #x900000111 + ) +|# + +#| +(deftype medius-get-clan-member-list-extra-info-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (clan-id int32 :offset-assert 24) + (ladder-stat-index int32 :offset-assert 28) + (sort-order int32 :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) +|# + +#| +(deftype medius-get-clan-member-list-extra-info-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (account-id int32 :offset-assert 28) + (account-name UNKNOWN 32 :offset-assert 32) + (stats UNKNOWN 256 :offset-assert 64) + (online-state medius-player-online-state :inline :offset-assert 320) + (ladder-stat int32 :offset-assert 460) + (ladder-position uint32 :offset-assert 464) + (total-rankings uint32 :offset-assert 468) + (end-of-list int8 :offset-assert 472) + ) + :method-count-assert 9 + :size-assert #x1d9 + :flag-assert #x9000001d9 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; scert-7-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype medius-get-clan-member-list-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (clan-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-get-clan-member-list-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (account-id int32 :offset-assert 24) + (account-name UNKNOWN 32 :offset-assert 28) + (status-code int32 :offset-assert 60) + (end-of-list int8 :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x41 + :flag-assert #x900000041 + ) +|# + +#| +(deftype medius-get-clan-team-challenge-history-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (clan-id int32 :offset-assert 40) + (this-clan-is-challenger int32 :offset-assert 44) + (start int32 :offset-assert 48) + (page-size int32 :offset-assert 52) + ) + :method-count-assert 9 + :size-assert #x38 + :flag-assert #x900000038 + ) +|# + +#| +(deftype medius-get-clan-team-challenge-history-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (against-clan-id int32 :offset-assert 28) + (status int32 :offset-assert 32) + (end-of-list int8 :offset-assert 36) + ) + :method-count-assert 9 + :size-assert #x25 + :flag-assert #x900000025 + ) +|# + +#| +(deftype medius-get-clan-team-challenges-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (clan-id int32 :offset-assert 40) + (start int32 :offset-assert 44) + (page-size int32 :offset-assert 48) + (status int32 :offset-assert 52) + (challenged-only int32 :offset-assert 56) + ) + :method-count-assert 9 + :size-assert #x3c + :flag-assert #x90000003c + ) +|# + +#| +(deftype medius-get-clan-team-challenges-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (challenger-clan-id int32 :offset-assert 28) + (against-clan-id int32 :offset-assert 32) + (status int32 :offset-assert 36) + (response-time int32 :offset-assert 40) + (challenge-msg UNKNOWN 200 :offset-assert 44) + (response-msg UNKNOWN 200 :offset-assert 244) + (end-of-list int8 :offset-assert 444) + (clan-challenge-id int32 :offset-assert 448) + ) + :method-count-assert 9 + :size-assert #x1c4 + :flag-assert #x9000001c4 + ) +|# + +#| +(deftype medius-get-game-list-filter-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + ) + :method-count-assert 9 + :size-assert #x26 + :flag-assert #x900000026 + ) +|# + +#| +(deftype medius-get-game-list-filter-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (filter-field int32 :offset-assert 28) + (comparison-operator int32 :offset-assert 32) + (baseline-value int32 :offset-assert 36) + (end-of-list int8 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x29 + :flag-assert #x900000029 + ) +|# + +#| +(deftype medius-get-ladder-stats-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (ladder-type int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-get-ladder-stats-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (stats UNKNOWN 15 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x58 + :flag-assert #x900000058 + ) +|# + +#| +(deftype medius-get-ladder-stats-wide-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (account-id-or-clan-id int32 :offset-assert 24) + (ladder-type int32 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype medius-get-ladder-stats-wide-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (account-id-or-clan-id int32 :offset-assert 28) + (stats UNKNOWN 100 :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x1b0 + :flag-assert #x9000001b0 + ) +|# + +#| +(deftype medius-get-ladder-stats-wide-w-idarray-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (ids UNKNOWN 50 :offset-assert 24) + (ladder-type int32 :offset-assert 224) + ) + :method-count-assert 9 + :size-assert #xe4 + :flag-assert #x9000000e4 + ) +|# + +#| +(deftype medius-get-ladder-stats-wide-w-idarray-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (account-id-or-clan-id int32 :offset-assert 28) + (stats UNKNOWN 100 :offset-assert 32) + (end-of-list int8 :offset-assert 432) + ) + :method-count-assert 9 + :size-assert #x1b1 + :flag-assert #x9000001b1 + ) +|# + +#| +(deftype medius-get-lobby-player-names-extra-info-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (medius-world-id int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-get-lobby-player-names-extra-info-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (account-id int32 :offset-assert 28) + (account-name UNKNOWN 32 :offset-assert 32) + (online-state medius-player-online-state :inline :offset-assert 64) + (end-of-list int8 :offset-assert 204) + ) + :method-count-assert 9 + :size-assert #xcd + :flag-assert #x9000000cd + ) +|# + +#| +(deftype medius-get-lobby-player-names-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (medius-world-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-get-lobby-player-names-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (account-id int32 :offset-assert 28) + (account-name UNKNOWN 32 :offset-assert 32) + (end-of-list int8 :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x41 + :flag-assert #x900000041 + ) +|# + +#| +(deftype medius-get-locations-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + ) + :method-count-assert 9 + :size-assert #x26 + :flag-assert #x900000026 + ) +|# + +#| +(deftype medius-get-locations-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (location-id int32 :offset-assert 24) + (location-name UNKNOWN 64 :offset-assert 28) + (status-code int32 :offset-assert 92) + (end-of-list int8 :offset-assert 96) + ) + :method-count-assert 9 + :size-assert #x61 + :flag-assert #x900000061 + ) +|# + +#| +(deftype medius-get-my-clan-messages-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (clan-id int32 :offset-assert 40) + (start int32 :offset-assert 44) + (page-size int32 :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x34 + :flag-assert #x900000034 + ) +|# + +#| +(deftype medius-get-my-clan-messages-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (clan-id int32 :offset-assert 28) + (message UNKNOWN 200 :offset-assert 32) + (end-of-list int8 :offset-assert 232) + ) + :method-count-assert 9 + :size-assert #xe9 + :flag-assert #x9000000e9 + ) +|# + +#| +(deftype medius-get-my-clans-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (start int32 :offset-assert 40) + (page-size int32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype medius-get-my-clans-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (clan-id int32 :offset-assert 28) + (application-id int32 :offset-assert 32) + (clan-name UNKNOWN 32 :offset-assert 36) + (leader-account-id int32 :offset-assert 68) + (leader-account-name UNKNOWN 32 :offset-assert 72) + (stats UNKNOWN 256 :offset-assert 104) + (status int32 :offset-assert 360) + (end-of-list int8 :offset-assert 364) + ) + :method-count-assert 9 + :size-assert #x16d + :flag-assert #x90000016d + ) +|# + +#| +(deftype medius-get-my-iprequest (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + ) + :method-count-assert 9 + :size-assert #x26 + :flag-assert #x900000026 + ) +|# + +#| +(deftype medius-get-my-ipresponse (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (ip UNKNOWN 20 :offset-assert 21) + (status-code int32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype medius-get-policy-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (policy int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-get-policy-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (policy UNKNOWN 256 :offset-assert 28) + (end-of-text int8 :offset-assert 284) + ) + :method-count-assert 9 + :size-assert #x11d + :flag-assert #x90000011d + ) +|# + +#| +(deftype medius-get-stored-account-info-request (structure) + ((device int32 :offset-assert 0) + (card-port int32 :offset-assert 4) + (card-slot int32 :offset-assert 8) + (account-id int32 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype medius-get-stored-account-info-response (structure) + ((account-id int32 :offset-assert 0) + (account-name UNKNOWN 32 :offset-assert 4) + (account-password UNKNOWN 32 :offset-assert 36) + ) + :method-count-assert 9 + :size-assert #x44 + :flag-assert #x900000044 + ) +|# + +#| +(deftype medius-get-stored-account-list-request (structure) + ((device int32 :offset-assert 0) + (card-port int32 :offset-assert 4) + (card-slot int32 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype medius-get-stored-account-list-response (structure) + ((account-list UNKNOWN 256 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x100 + :flag-assert #x900000100 + ) +|# + +#| +(deftype medius-get-total-channels-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (application-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-get-total-channels-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (total uint32 :offset-assert 24) + (status-code int32 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype medius-get-total-games-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (application-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-get-total-games-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (total uint32 :offset-assert 24) + (status-code int32 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype medius-get-total-rankings-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (ladder-type int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-get-total-rankings-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (total-rankings uint32 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype medius-get-total-users-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (application-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-get-total-users-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (total-in-system uint32 :offset-assert 24) + (total-in-game uint32 :offset-assert 28) + (status-code int32 :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) +|# + +#| +(deftype medius-get-world-security-level-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (medius-world-id int32 :offset-assert 40) + (app-type int32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype medius-get-world-security-level-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (medius-world-id int32 :offset-assert 28) + (app-type int32 :offset-assert 32) + (security-level int32 :offset-assert 36) + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + ) +|# + +#| +(deftype medius-initialize-storage-request (structure) + ((device int32 :offset-assert 0) + (card-port int32 :offset-assert 4) + (card-slot int32 :offset-assert 8) + (icon-location UNKNOWN 64 :offset-assert 12) + (sceterritory int32 :offset-assert 76) + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) +|# + +#| +(deftype medius-initialize-storage-response (structure) + ((confirmation int32 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype medius-invite-player-to-clan-by-name-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (account-name UNKNOWN 32 :offset-assert 21) + (invite-message UNKNOWN 200 :offset-assert 53) + ) + :method-count-assert 9 + :size-assert #xfd + :flag-assert #x9000000fd + ) +|# + +#| +(deftype medius-invite-player-to-clan-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (player-account-id int32 :offset-assert 40) + (invite-message UNKNOWN 200 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #xf4 + :flag-assert #x9000000f4 + ) +|# + +#| +(deftype medius-invite-player-to-clan-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-join-channel-fwd-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (player-session-key UNKNOWN 17 :offset-assert 21) + ) + :method-count-assert 9 + :size-assert #x26 + :flag-assert #x900000026 + ) +|# + +#| +(deftype medius-join-channel-fwd-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (player-session-key UNKNOWN 17 :offset-assert 21) + (access-key UNKNOWN 17 :offset-assert 38) + (status-code int32 :offset-assert 56) + ) + :method-count-assert 9 + :size-assert #x3c + :flag-assert #x90000003c + ) +|# + +#| +(deftype medius-join-channel-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (medius-world-id int32 :offset-assert 40) + (lobby-channel-password UNKNOWN 32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x4c + :flag-assert #x90000004c + ) +|# + +#| +(deftype medius-join-channel-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (connect-info net-connection-info :inline :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #xb6 + :flag-assert #x9000000b6 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; scert-8-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype medius-join-game-request0 (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (medius-world-id int32 :offset-assert 40) + (game-password UNKNOWN 32 :offset-assert 44) + (game-host-type int32 :offset-assert 76) + (address-list net-address-list :inline :offset-assert 80) + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) +|# + +#| +(deftype medius-join-game-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (medius-world-id int32 :offset-assert 40) + (join-type int32 :offset-assert 44) + (game-password UNKNOWN 32 :offset-assert 48) + (game-host-type int32 :offset-assert 80) + (pub-key rsa-key :inline :offset-assert 84) + (address-list net-address-list :inline :offset-assert 148) + ) + :method-count-assert 9 + :size-assert #xc4 + :flag-assert #x9000000c4 + ) +|# + +#| +(deftype medius-join-game-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (game-host-type int32 :offset-assert 28) + (connect-info net-connection-info :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #xba + :flag-assert #x9000000ba + ) +|# + +#| +(deftype medius-ladder-list-extra-info-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (ladder-stat-index int32 :offset-assert 24) + (sort-order int32 :offset-assert 28) + (start-position uint32 :offset-assert 32) + (page-size uint32 :offset-assert 36) + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + ) +|# + +#| +(deftype medius-ladder-list-extra-info-response0 (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (ladder-position uint32 :offset-assert 28) + (account-id int32 :offset-assert 32) + (account-name UNKNOWN 32 :offset-assert 36) + (account-stats UNKNOWN 256 :offset-assert 68) + (online-state medius-player-online-state :inline :offset-assert 324) + (end-of-list int8 :offset-assert 464) + ) + :method-count-assert 9 + :size-assert #x1d1 + :flag-assert #x9000001d1 + ) +|# + +#| +(deftype medius-ladder-list-extra-info-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (ladder-position uint32 :offset-assert 28) + (ladder-stat int32 :offset-assert 32) + (account-id int32 :offset-assert 36) + (account-name UNKNOWN 32 :offset-assert 40) + (account-stats UNKNOWN 256 :offset-assert 72) + (online-state medius-player-online-state :inline :offset-assert 328) + (end-of-list int8 :offset-assert 468) + ) + :method-count-assert 9 + :size-assert #x1d5 + :flag-assert #x9000001d5 + ) +|# + +#| +(deftype medius-ladder-list-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (start-byte uint32 :offset-assert 40) + (end-byte uint32 :offset-assert 44) + (sort-order int32 :offset-assert 48) + (start-position uint32 :offset-assert 52) + (page-size uint32 :offset-assert 56) + ) + :method-count-assert 9 + :size-assert #x3c + :flag-assert #x90000003c + ) +|# + +#| +(deftype medius-ladder-list-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (account-id int32 :offset-assert 24) + (account-name UNKNOWN 32 :offset-assert 28) + (ladder-position uint32 :offset-assert 60) + (status-code int32 :offset-assert 64) + (end-of-list int8 :offset-assert 68) + ) + :method-count-assert 9 + :size-assert #x45 + :flag-assert #x900000045 + ) +|# + +#| +(deftype medius-ladder-position-extra-info-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (account-id int32 :offset-assert 24) + (ladder-stat-index int32 :offset-assert 28) + (sort-order int32 :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) +|# + +#| +(deftype medius-ladder-position-extra-info-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (ladder-position uint32 :offset-assert 28) + (total-rankings uint32 :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) +|# + +#| +(deftype medius-ladder-position-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (account-id int32 :offset-assert 40) + (start-byte uint32 :offset-assert 44) + (end-byte uint32 :offset-assert 48) + (sort-order int32 :offset-assert 52) + ) + :method-count-assert 9 + :size-assert #x38 + :flag-assert #x900000038 + ) +|# + +#| +(deftype medius-ladder-position-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (ladder-position uint32 :offset-assert 24) + (status-code int32 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype medius-ladder-position-fast-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (account-id int32 :offset-assert 40) + (new-stats-score int32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype medius-ladder-position-fast-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (ladder-position uint32 :offset-assert 24) + (status-code int32 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype medius-lobby-world-player-list-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (medius-world-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-lobby-world-player-list-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (player-status int32 :offset-assert 28) + (account-id int32 :offset-assert 32) + (account-name UNKNOWN 32 :offset-assert 36) + (stats UNKNOWN 256 :offset-assert 68) + (connection-class int32 :offset-assert 324) + (end-of-list int8 :offset-assert 328) + ) + :method-count-assert 9 + :size-assert #x149 + :flag-assert #x900000149 + ) +|# + +#| +(deftype medius-machine-signature-post (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (machine-signature UNKNOWN 128 :offset-assert 38) + ) + :method-count-assert 9 + :size-assert #xa6 + :flag-assert #x9000000a6 + ) +|# + +#| +(deftype medius-modify-clan-message-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (clan-message-id int32 :offset-assert 40) + (new-message UNKNOWN 200 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #xf4 + :flag-assert #x9000000f4 + ) +|# + +#| +(deftype medius-modify-clan-message-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-pick-location-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (location-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-pick-location-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-player-info-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (account-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-player-info-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (account-name UNKNOWN 32 :offset-assert 28) + (application-id int32 :offset-assert 60) + (player-status int32 :offset-assert 64) + (connection-class int32 :offset-assert 68) + (stats UNKNOWN 256 :offset-assert 72) + ) + :method-count-assert 9 + :size-assert #x148 + :flag-assert #x900000148 + ) +|# + +#| +(deftype medius-player-report (structure) + ((session-key UNKNOWN 17 :offset-assert 0) + (medius-world-id int32 :offset-assert 20) + (stats UNKNOWN 256 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x118 + :flag-assert #x900000118 + ) +|# + +#| +(deftype medius-reassign-game-medius-world-id (structure) + ((old-medius-world-id int32 :offset-assert 0) + (new-medius-world-id int32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype medius-remove-from-buddy-list-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (account-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-remove-from-buddy-list-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-remove-from-ignore-list-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (ignore-account-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-remove-from-ignore-list-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-remove-player-from-clan-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (player-account-id int32 :offset-assert 40) + (clan-id int32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype medius-remove-player-from-clan-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-request-clan-team-challenge-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (clan-id int32 :offset-assert 40) + (message UNKNOWN 200 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #xf4 + :flag-assert #x9000000f4 + ) +|# + +#| +(deftype medius-request-clan-team-challenge-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-respond-to-clan-invitation-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (clan-invitation-id int32 :offset-assert 40) + (response int32 :offset-assert 44) + (message UNKNOWN 200 :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #xf8 + :flag-assert #x9000000f8 + ) +|# + +#| +(deftype medius-respond-to-clan-invitation-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-respond-to-clan-team-challenge-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (clan-challenge-id int32 :offset-assert 40) + (challenge-status int32 :offset-assert 44) + (message UNKNOWN 200 :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #xf8 + :flag-assert #x9000000f8 + ) +|# + +#| +(deftype medius-respond-to-clan-team-challenge-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-revoke-clan-invitation-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (player-account-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-revoke-clan-invitation-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-revoke-clan-team-challenge-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (clan-challenge-id int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype medius-revoke-clan-team-challenge-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-send-clan-message-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (message UNKNOWN 200 :offset-assert 38) + ) + :method-count-assert 9 + :size-assert #xee + :flag-assert #x9000000ee + ) +|# + +#| +(deftype medius-send-clan-message-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-session-begin-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (connection-class int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-session-begin-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (session-key UNKNOWN 17 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x2d + :flag-assert #x90000002d + ) +|# + +#| +(deftype medius-session-end-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + ) + :method-count-assert 9 + :size-assert #x26 + :flag-assert #x900000026 + ) +|# + +#| +(deftype medius-session-end-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-set-game-list-filter-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (filter-field int32 :offset-assert 40) + (comparison-operator int32 :offset-assert 44) + (baseline-value int32 :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x34 + :flag-assert #x900000034 + ) +|# + +#| +(deftype medius-set-game-list-filter-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-set-lobby-world-filter-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (filter-mask1 uint32 :offset-assert 24) + (filter-mask2 uint32 :offset-assert 28) + (filter-mask3 uint32 :offset-assert 32) + (filter-mask4 uint32 :offset-assert 36) + (lobby-filter-type int32 :offset-assert 40) + (filter-mask-level int32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype medius-set-lobby-world-filter-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (filter-mask1 uint32 :offset-assert 28) + (filter-mask2 uint32 :offset-assert 32) + (filter-mask3 uint32 :offset-assert 36) + (filter-mask4 uint32 :offset-assert 40) + (lobby-filter-type int32 :offset-assert 44) + (filter-mask-level int32 :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x34 + :flag-assert #x900000034 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; scert-9-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype medius-set-localization-params-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (character-encoding int32 :offset-assert 40) + (language int32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype medius-set-message-as-read-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (message-type int32 :offset-assert 40) + (message-idto-tag int32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype medius-set-stored-account-info-request (structure) + ((device int32 :offset-assert 0) + (card-port int32 :offset-assert 4) + (card-slot int32 :offset-assert 8) + (account-id int32 :offset-assert 12) + (account-name UNKNOWN 32 :offset-assert 16) + (account-password UNKNOWN 32 :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) +|# + +#| +(deftype medius-set-stored-account-info-response (structure) + ((confirmation int32 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype medius-status-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-text-filter-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (text-filter-type int32 :offset-assert 40) + (text UNKNOWN 64 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x6c + :flag-assert #x90000006c + ) +|# + +#| +(deftype medius-text-filter-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (text UNKNOWN 64 :offset-assert 21) + (status-code int32 :offset-assert 88) + ) + :method-count-assert 9 + :size-assert #x5c + :flag-assert #x90000005c + ) +|# + +#| +(deftype medius-transfer-clan-leadership-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (new-leader-account-id int32 :offset-assert 40) + (new-leader-account-name UNKNOWN 32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x4c + :flag-assert #x90000004c + ) +|# + +#| +(deftype medius-transfer-clan-leadership-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-update-clan-stats-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (clan-id int32 :offset-assert 40) + (stats UNKNOWN 256 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x12c + :flag-assert #x90000012c + ) +|# + +#| +(deftype medius-update-clan-stats-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-update-game-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + (medius-world-id int32 :offset-assert 40) + (game-name UNKNOWN 64 :offset-assert 44) + (min-players int16 :offset-assert 108) + (max-players int16 :offset-assert 110) + (game-level int16 :offset-assert 112) + (player-skill-level int16 :offset-assert 114) + ) + :method-count-assert 9 + :size-assert #x74 + :flag-assert #x900000074 + ) +|# + +#| +(deftype medius-update-game-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-update-ladder-stats-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (ladder-type int32 :offset-assert 24) + (stats UNKNOWN 15 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x58 + :flag-assert #x900000058 + ) +|# + +#| +(deftype medius-update-ladder-stats-wide-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (ladder-type int32 :offset-assert 24) + (stats UNKNOWN 100 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x1ac + :flag-assert #x9000001ac + ) +|# + +#| +(deftype medius-update-clan-ladder-stats-wide-delta-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (clan-id int32 :offset-assert 24) + (stats UNKNOWN 100 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x1ac + :flag-assert #x9000001ac + ) +|# + +#| +(deftype medius-update-user-state (structure) + ((session-key UNKNOWN 17 :offset-assert 0) + (user-action int32 :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) +|# + +#| +(deftype medius-version-server-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (session-key UNKNOWN 17 :offset-assert 21) + ) + :method-count-assert 9 + :size-assert #x26 + :flag-assert #x900000026 + ) +|# + +#| +(deftype medius-version-server-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (version-server UNKNOWN 56 :offset-assert 21) + ) + :method-count-assert 9 + :size-assert #x4d + :flag-assert #x90000004d + ) +|# + +#| +(deftype medius-world-report (structure) + ((session-key UNKNOWN 17 :offset-assert 0) + (medius-world-id int32 :offset-assert 20) + (player-count int32 :offset-assert 24) + (game-name UNKNOWN 64 :offset-assert 28) + (game-stats UNKNOWN 256 :offset-assert 92) + (min-players int32 :offset-assert 348) + (max-players int32 :offset-assert 352) + (game-level int32 :offset-assert 356) + (player-skill-level int32 :offset-assert 360) + (rules-set int32 :offset-assert 364) + (generic-field1 int32 :offset-assert 368) + (generic-field2 int32 :offset-assert 372) + (generic-field3 int32 :offset-assert 376) + (world-status int32 :offset-assert 380) + ) + :method-count-assert 9 + :size-assert #x180 + :flag-assert #x900000180 + ) +|# + +#| +(deftype medius-get-universe-information-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (info-type uint32 :offset-assert 24) + (character-encoding int32 :offset-assert 28) + (language int32 :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) +|# + +#| +(deftype medius-universe-news-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (news UNKNOWN 256 :offset-assert 28) + (end-of-text int8 :offset-assert 284) + ) + :method-count-assert 9 + :size-assert #x11d + :flag-assert #x90000011d + ) +|# + +#| +(deftype medius-universe-variable-information-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (info-filter uint32 :offset-assert 28) + (universe-id uint32 :offset-assert 32) + (universe-name UNKNOWN 128 :offset-assert 36) + (dns UNKNOWN 128 :offset-assert 164) + (port int32 :offset-assert 292) + (universe-description UNKNOWN 256 :offset-assert 296) + (status int32 :offset-assert 552) + (user-count int32 :offset-assert 556) + (max-users int32 :offset-assert 560) + (universe-billing UNKNOWN 8 :offset-assert 564) + (billing-system-name UNKNOWN 128 :offset-assert 572) + (extended-info UNKNOWN 128 :offset-assert 700) + (svo-url UNKNOWN 128 :offset-assert 828) + (end-of-list int8 :offset-assert 956) + ) + :method-count-assert 9 + :size-assert #x3bd + :flag-assert #x9000003bd + ) +|# + +#| +(deftype medius-universe-svo-urlresponse (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (url UNKNOWN 128 :offset-assert 21) + ) + :method-count-assert 9 + :size-assert #x95 + :flag-assert #x900000095 + ) +|# + +#| +(deftype medius-universe-status-list-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (universe-name UNKNOWN 128 :offset-assert 28) + (dns UNKNOWN 128 :offset-assert 156) + (port int32 :offset-assert 284) + (universe-description UNKNOWN 256 :offset-assert 288) + (status int32 :offset-assert 544) + (user-count int32 :offset-assert 548) + (max-users int32 :offset-assert 552) + (end-of-list int8 :offset-assert 556) + ) + :method-count-assert 9 + :size-assert #x22d + :flag-assert #x90000022d + ) +|# + +#| +(deftype medius-get-universe-extra-info-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (info-type uint32 :offset-assert 24) + (character-encoding int32 :offset-assert 28) + (language int32 :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) +|# + +#| +(deftype medius-universe-status-list-extra-info-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + (universe-name UNKNOWN 128 :offset-assert 28) + (dns UNKNOWN 128 :offset-assert 156) + (port int32 :offset-assert 284) + (universe-description UNKNOWN 256 :offset-assert 288) + (status int32 :offset-assert 544) + (user-count int32 :offset-assert 548) + (max-users int32 :offset-assert 552) + (universe-billing UNKNOWN 8 :offset-assert 556) + (billing-system-name UNKNOWN 128 :offset-assert 564) + (end-of-list int8 :offset-assert 692) + (extended-info UNKNOWN 128 :offset-assert 693) + ) + :method-count-assert 9 + :size-assert #x335 + :flag-assert #x900000335 + ) +|# + +#| +(deftype medius-post-debug-info-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (message UNKNOWN 200 :offset-assert 21) + ) + :method-count-assert 9 + :size-assert #xdd + :flag-assert #x9000000dd + ) +|# + +#| +(deftype medius-post-debug-info-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-connect-in-params (structure) + ((connect-info net-connection-info :inline :offset-assert 0) + (stream-media-params net-stream-media-params :inline :offset-assert 156) + (max-clients-per-connection uint32 :offset-assert 268) + (my-connect-callback basic :offset-assert 272) + (pf-remote-client-connect-callback basic :offset-assert 276) + (pf-remote-client-disconnect-callback basic :offset-assert 280) + ) + :method-count-assert 9 + :size-assert #x11c + :flag-assert #x90000011c + ) +|# + +#| +(deftype medius-connect-out-params (structure) + ((connection-handle basic :offset-assert 0) + (error-code int32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ;; field connection-handle uses ~A with a signed load. + ) +|# + +#| +(deftype medius-disconnect-params (structure) + ((connection-handle basic :offset-assert 0) + (disconnect-reason int32 :offset-assert 4) + (my-disconnect-callback basic :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ;; field connection-handle uses ~A with a signed load. + ) +|# + +#| +(deftype medius-initialize-in-params (structure) + ((p-local-key-pair rsa-keypair :offset-assert 0) + (my-chat-fwd-message-callback basic :offset-assert 4) + (my-chat-fwd-message-callback-user-data basic :offset-assert 8) + (my-binary-fwd-message-callback basic :offset-assert 12) + (my-binary-fwd-message-callback-user-data basic :offset-assert 16) + (my-add-to-buddy-list-fwd-confirmation-request-callback basic :offset-assert 20) + (my-add-to-buddy-list-fwd-confirmation-request-callback-user-data basic :offset-assert 24) + (my-error-message-callback basic :offset-assert 28) + (my-error-message-callback-user-data basic :offset-assert 32) + (my-reassign-game-medius-world-idcallback basic :offset-assert 36) + (my-reassign-game-medius-world-idcallback-user-data basic :offset-assert 40) + (pf-system-message-callback basic :offset-assert 44) + (p-system-message-callback-data basic :offset-assert 48) + (application-id int32 :offset-assert 52) + (p-application-key-pair rsa-keypair :offset-assert 56) + (idf-compliance int32 :offset-assert 60) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ;; field my-chat-fwd-message-callback-user-data uses ~A with a signed load. field my-binary-fwd-message-callback-user-data uses ~A with a signed load. field my-add-to-buddy-list-fwd-confirmation-request-callback-user-data uses ~A with a signed load. field my-error-message-callback-user-data uses ~A with a signed load. field my-reassign-game-medius-world-idcallback-user-data uses ~A with a signed load. field p-system-message-callback-data uses ~A with a signed load. + ) +|# + +#| +(deftype medius-initialize-out-params (structure) + ((error-code int32 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype medius-initialize-bare-in-params (structure) + ((my-chat-fwd-message-callback basic :offset-assert 0) + (my-chat-fwd-message-callback-user-data basic :offset-assert 4) + (my-binary-fwd-message-callback basic :offset-assert 8) + (my-binary-fwd-message-callback-user-data basic :offset-assert 12) + (my-add-to-buddy-list-fwd-confirmation-request-callback basic :offset-assert 16) + (my-add-to-buddy-list-fwd-confirmation-request-callback-user-data basic :offset-assert 20) + (my-error-message-callback basic :offset-assert 24) + (my-error-message-callback-user-data basic :offset-assert 28) + (my-reassign-game-medius-world-idcallback basic :offset-assert 32) + (my-reassign-game-medius-world-idcallback-user-data basic :offset-assert 36) + (idf-compliance int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ;; field my-chat-fwd-message-callback-user-data uses ~A with a signed load. field my-binary-fwd-message-callback-user-data uses ~A with a signed load. field my-add-to-buddy-list-fwd-confirmation-request-callback-user-data uses ~A with a signed load. field my-error-message-callback-user-data uses ~A with a signed load. field my-reassign-game-medius-world-idcallback-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype medius-initialize-bare-out-params (structure) + ((error-code int32 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype medius-file (structure) + ((filename UNKNOWN 128 :offset-assert 0) + (server-checksum UNKNOWN 16 :offset-assert 128) + (file-id uint32 :offset-assert 144) + (file-size uint32 :offset-assert 148) + (creation-time-stamp uint32 :offset-assert 152) + (owner-id uint32 :offset-assert 156) + (group-id uint32 :offset-assert 160) + (owner-permission-rwx uint16 :offset-assert 164) + (group-permission-rwx uint16 :offset-assert 166) + (global-permission-rwx uint16 :offset-assert 168) + (server-operation-id uint16 :offset-assert 170) + ) + :method-count-assert 9 + :size-assert #xac + :flag-assert #x9000000ac + ) +|# + +#| +(deftype medius-file-attributes (structure) + ((description UNKNOWN 256 :offset-assert 0) + (last-changed-time-stamp uint32 :offset-assert 256) + (last-changed-by-user-id uint32 :offset-assert 260) + (number-accesses uint32 :offset-assert 264) + (streamable-flag uint32 :offset-assert 268) + (streaming-data-rate uint32 :offset-assert 272) + ) + :method-count-assert 9 + :size-assert #x114 + :flag-assert #x900000114 + ) +|# + +#| +(deftype medius-file-meta-data (structure) + ((key UNKNOWN 56 :offset-assert 0) + (value UNKNOWN 256 :offset-assert 56) + ) + :method-count-assert 9 + :size-assert #x138 + :flag-assert #x900000138 + ) +|# + +#| +(deftype medius-file-checksum (structure) + ((puc-data uint32 :offset-assert 0) + (ui-size uint32 :offset-assert 4) + (checksum UNKNOWN 16 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) +|# + +#| +(deftype medius-file-create-request (structure) + ((medius-file-to-create medius-file :inline :offset-assert 0) + (medius-file-create-attributes medius-file-attributes :inline :offset-assert 172) + (message-id UNKNOWN 21 :offset-assert 448) + ) + :method-count-assert 9 + :size-assert #x1d5 + :flag-assert #x9000001d5 + ) +|# + +#| +(deftype medius-file-create-response (structure) + ((medius-file-info medius-file :inline :offset-assert 0) + (status-code int32 :offset-assert 172) + (message-id UNKNOWN 21 :offset-assert 176) + ) + :method-count-assert 9 + :size-assert #xc5 + :flag-assert #x9000000c5 + ) +|# + +#| +(deftype medius-file-upload-request (structure) + ((medius-file-info medius-file :inline :offset-assert 0) + (puc-data-start uint32 :offset-assert 172) + (ui-data-size uint32 :offset-assert 176) + (message-id UNKNOWN 21 :offset-assert 180) + ) + :method-count-assert 9 + :size-assert #xc9 + :flag-assert #x9000000c9 + ) +|# + +#| +(deftype medius-file-upload-server-req (structure) + ((i-req-start-byte-index int32 :offset-assert 0) + (i-packet-number int32 :offset-assert 4) + (i-xfer-status int32 :offset-assert 8) + (status-code int32 :offset-assert 12) + (message-id UNKNOWN 21 :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x25 + :flag-assert #x900000025 + ) +|# + +#| +(deftype medius-file-upload-response (structure) + ((data UNKNOWN 464 :offset-assert 0) + (i-start-byte-index int32 :offset-assert 464) + (i-data-size int32 :offset-assert 468) + (i-packet-number int32 :offset-assert 472) + (i-xfer-status int32 :offset-assert 476) + (status-code int32 :offset-assert 480) + (message-id UNKNOWN 21 :offset-assert 484) + ) + :method-count-assert 9 + :size-assert #x1f9 + :flag-assert #x9000001f9 + ) +|# + +#| +(deftype medius-file-close-request (structure) + ((medius-file-info medius-file :inline :offset-assert 0) + (message-id UNKNOWN 21 :offset-assert 172) + ) + :method-count-assert 9 + :size-assert #xc1 + :flag-assert #x9000000c1 + ) +|# + +#| +(deftype medius-file-close-response (structure) + ((medius-file-info medius-file :inline :offset-assert 0) + (status-code int32 :offset-assert 172) + (message-id UNKNOWN 21 :offset-assert 176) + ) + :method-count-assert 9 + :size-assert #xc5 + :flag-assert #x9000000c5 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; scert-10-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype medius-file-download-request (structure) + ((medius-file-info medius-file :inline :offset-assert 0) + (message-id UNKNOWN 21 :offset-assert 172) + ) + :method-count-assert 9 + :size-assert #xc1 + :flag-assert #x9000000c1 + ) +|# + +#| +(deftype medius-file-download-response (structure) + ((data UNKNOWN 464 :offset-assert 0) + (i-start-byte-index int32 :offset-assert 464) + (i-data-size int32 :offset-assert 468) + (i-packet-number int32 :offset-assert 472) + (i-xfer-status int32 :offset-assert 476) + (status-code int32 :offset-assert 480) + (message-id UNKNOWN 21 :offset-assert 484) + ) + :method-count-assert 9 + :size-assert #x1f9 + :flag-assert #x9000001f9 + ) +|# + +#| +(deftype medius-file-download-stream-request (structure) + ((medius-file-info medius-file :inline :offset-assert 0) + (message-id UNKNOWN 21 :offset-assert 172) + ) + :method-count-assert 9 + :size-assert #xc1 + :flag-assert #x9000000c1 + ) +|# + +#| +(deftype medius-file-download-stream-response (structure) + ((data UNKNOWN 464 :offset-assert 0) + (i-start-byte-index int32 :offset-assert 464) + (i-data-size int32 :offset-assert 468) + (i-packet-number int32 :offset-assert 472) + (i-xfer-status int32 :offset-assert 476) + (status-code int32 :offset-assert 480) + (message-id UNKNOWN 21 :offset-assert 484) + ) + :method-count-assert 9 + :size-assert #x1f9 + :flag-assert #x9000001f9 + ) +|# + +#| +(deftype medius-file-delete-request (structure) + ((medius-file-info medius-file :inline :offset-assert 0) + (message-id UNKNOWN 21 :offset-assert 172) + ) + :method-count-assert 9 + :size-assert #xc1 + :flag-assert #x9000000c1 + ) +|# + +#| +(deftype medius-file-delete-response (structure) + ((status-code int32 :offset-assert 0) + (message-id UNKNOWN 21 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x19 + :flag-assert #x900000019 + ) +|# + +#| +(deftype medius-file-list-request (structure) + ((filename-begins-with UNKNOWN 128 :offset-assert 0) + (filesize-greater-than uint32 :offset-assert 128) + (filesize-less-than uint32 :offset-assert 132) + (owned-by-id uint32 :offset-assert 136) + (newer-than-timestamp uint32 :offset-assert 140) + (starting-entry-number uint32 :offset-assert 144) + (page-size uint32 :offset-assert 148) + (message-id UNKNOWN 21 :offset-assert 152) + ) + :method-count-assert 9 + :size-assert #xad + :flag-assert #x9000000ad + ) +|# + +#| +(deftype medius-file-list-response (structure) + ((medius-file-info medius-file :inline :offset-assert 0) + (status-code int32 :offset-assert 172) + (message-id UNKNOWN 21 :offset-assert 176) + (end-of-list int8 :offset-assert 197) + ) + :method-count-assert 9 + :size-assert #xc6 + :flag-assert #x9000000c6 + ) +|# + +#| +(deftype medius-file-update-attributes-request (structure) + ((medius-file-info medius-file :inline :offset-assert 0) + (medius-file-updated-attributes medius-file-attributes :inline :offset-assert 172) + (message-id UNKNOWN 21 :offset-assert 448) + ) + :method-count-assert 9 + :size-assert #x1d5 + :flag-assert #x9000001d5 + ) +|# + +#| +(deftype medius-file-update-attributes-response (structure) + ((medius-file-info medius-file :inline :offset-assert 0) + (status-code int32 :offset-assert 172) + (message-id UNKNOWN 21 :offset-assert 176) + ) + :method-count-assert 9 + :size-assert #xc5 + :flag-assert #x9000000c5 + ) +|# + +#| +(deftype medius-file-get-attributes-request (structure) + ((medius-file-info medius-file :inline :offset-assert 0) + (message-id UNKNOWN 21 :offset-assert 172) + ) + :method-count-assert 9 + :size-assert #xc1 + :flag-assert #x9000000c1 + ) +|# + +#| +(deftype medius-file-get-attributes-response (structure) + ((medius-file-info medius-file :inline :offset-assert 0) + (medius-file-attributes-response medius-file-attributes :inline :offset-assert 172) + (status-code int32 :offset-assert 448) + (message-id UNKNOWN 21 :offset-assert 452) + ) + :method-count-assert 9 + :size-assert #x1d9 + :flag-assert #x9000001d9 + ) +|# + +#| +(deftype medius-file-update-meta-data-request (structure) + ((medius-file-info medius-file :inline :offset-assert 0) + (medius-update-meta-data medius-file-meta-data :inline :offset-assert 172) + (message-id UNKNOWN 21 :offset-assert 484) + ) + :method-count-assert 9 + :size-assert #x1f9 + :flag-assert #x9000001f9 + ) +|# + +#| +(deftype medius-file-update-meta-data-responset (structure) + ((medius-file-info medius-file :inline :offset-assert 0) + (status-code int32 :offset-assert 172) + (message-id UNKNOWN 21 :offset-assert 176) + ) + :method-count-assert 9 + :size-assert #xc5 + :flag-assert #x9000000c5 + ) +|# + +#| +(deftype medius-file-get-meta-data-request (structure) + ((medius-file-info medius-file :inline :offset-assert 0) + (medius-meta-data-requested-key medius-file-meta-data :inline :offset-assert 172) + (message-id UNKNOWN 21 :offset-assert 484) + ) + :method-count-assert 9 + :size-assert #x1f9 + :flag-assert #x9000001f9 + ) +|# + +#| +(deftype medius-file-get-meta-data-response (structure) + ((medius-file-info medius-file :inline :offset-assert 0) + (medius-meta-data-response medius-file-meta-data :inline :offset-assert 172) + (status-code int32 :offset-assert 484) + (message-id UNKNOWN 21 :offset-assert 488) + (end-of-list int8 :offset-assert 509) + ) + :method-count-assert 9 + :size-assert #x1fe + :flag-assert #x9000001fe + ) +|# + +#| +(deftype medius-file-search-by-meta-data-request (structure) + ((medius-meta-data-requested-key medius-file-meta-data :inline :offset-assert 0) + (message-id UNKNOWN 21 :offset-assert 312) + ) + :method-count-assert 9 + :size-assert #x14d + :flag-assert #x90000014d + ) +|# + +#| +(deftype medius-file-search-by-meta-data-response (structure) + ((medius-file-info medius-file :inline :offset-assert 0) + (medius-meta-data-response medius-file-meta-data :inline :offset-assert 172) + (status-code int32 :offset-assert 484) + (message-id UNKNOWN 21 :offset-assert 488) + (end-of-list int8 :offset-assert 509) + ) + :method-count-assert 9 + :size-assert #x1fe + :flag-assert #x9000001fe + ) +|# + +#| +(deftype medius-file-cancel-operation-request (structure) + ((medius-file-info medius-file :inline :offset-assert 0) + (message-id UNKNOWN 21 :offset-assert 172) + ) + :method-count-assert 9 + :size-assert #xc1 + :flag-assert #x9000000c1 + ) +|# + +#| +(deftype medius-file-cancel-operation-response (structure) + ((status-code int32 :offset-assert 0) + (message-id UNKNOWN 21 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x19 + :flag-assert #x900000019 + ) +|# + +#| +(deftype medius-server-authentication-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (trust-level int32 :offset-assert 24) + (address-list net-address-list :inline :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x4c + :flag-assert #x90000004c + ) +|# + +#| +(deftype medius-server-authentication-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (confirmation int8 :offset-assert 21) + (connect-info net-connection-info :inline :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #xb2 + :flag-assert #x9000000b2 + ) +|# + +#| +(deftype medius-server-set-attributes-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (attributes int32 :offset-assert 24) + (listen-server-address net-address :inline :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x34 + :flag-assert #x900000034 + ) +|# + +#| +(deftype medius-server-set-attributes-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (confirmation int8 :offset-assert 21) + ) + :method-count-assert 9 + :size-assert #x16 + :flag-assert #x900000016 + ) +|# + +#| +(deftype medius-server-create-game-on-me-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (game-name UNKNOWN 64 :offset-assert 21) + (game-stats UNKNOWN 256 :offset-assert 85) + (game-password UNKNOWN 32 :offset-assert 341) + (application-id int32 :offset-assert 376) + (max-clients int32 :offset-assert 380) + (min-clients int32 :offset-assert 384) + (game-level int32 :offset-assert 388) + (player-skill-level int32 :offset-assert 392) + (rules-set int32 :offset-assert 396) + (generic-field1 int32 :offset-assert 400) + (generic-field2 int32 :offset-assert 404) + (generic-field3 int32 :offset-assert 408) + (game-host-type int32 :offset-assert 412) + (address-list net-address-list :inline :offset-assert 416) + (world-id int32 :offset-assert 464) + (account-id int32 :offset-assert 468) + ) + :method-count-assert 9 + :size-assert #x1d8 + :flag-assert #x9000001d8 + ) +|# + +#| +(deftype medius-server-create-game-on-me-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (confirmation int8 :offset-assert 21) + (medius-world-id int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-server-create-game-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (application-id int32 :offset-assert 24) + (max-clients int32 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype medius-server-create-game-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (confirmation int8 :offset-assert 21) + (world-id int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-server-create-game-with-attributes-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (application-id int32 :offset-assert 24) + (max-clients int32 :offset-assert 28) + (attributes int32 :offset-assert 32) + (medius-world-uid uint32 :offset-assert 36) + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + ) +|# + +#| +(deftype medius-server-create-game-with-attributes-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (confirmation int8 :offset-assert 21) + (world-id int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-server-end-game-on-me-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (medius-world-id int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-server-end-game-on-me-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (confirmation int8 :offset-assert 21) + ) + :method-count-assert 9 + :size-assert #x16 + :flag-assert #x900000016 + ) +|# + +#| +(deftype medius-server-end-game-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (world-id int32 :offset-assert 24) + (brutal-flag int8 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x1d + :flag-assert #x90000001d + ) +|# + +#| +(deftype medius-server-end-game-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (confirmation int8 :offset-assert 21) + ) + :method-count-assert 9 + :size-assert #x16 + :flag-assert #x900000016 + ) +|# + +#| +(deftype medius-server-join-game-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (connect-info net-connection-info :inline :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #xb2 + :flag-assert #x9000000b2 + ) +|# + +#| +(deftype medius-server-join-game-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (confirmation int8 :offset-assert 21) + (access-key UNKNOWN 17 :offset-assert 22) + (pub-key rsa-key :inline :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x68 + :flag-assert #x900000068 + ) +|# + +#| +(deftype medius-server-move-game-world-on-me-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (current-medius-world-id int32 :offset-assert 24) + (new-game-world-id int32 :offset-assert 28) + (address-list net-address-list :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) +|# + +#| +(deftype medius-server-move-game-world-on-me-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (confirmation int8 :offset-assert 21) + (medius-world-id int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-server-report-type (structure) + ((session-key UNKNOWN 17 :offset-assert 0) + (max-worlds int16 :offset-assert 18) + (max-players-per-world int16 :offset-assert 20) + (active-world-count int16 :offset-assert 22) + (total-active-players int16 :offset-assert 24) + (alert-level int32 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype medius-server-session-begin-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (location-id int32 :offset-assert 24) + (application-id int32 :offset-assert 28) + (server-type int32 :offset-assert 32) + (server-version UNKNOWN 16 :offset-assert 36) + (port int32 :offset-assert 52) + ) + :method-count-assert 9 + :size-assert #x38 + :flag-assert #x900000038 + ) +|# + +#| +(deftype medius-server-session-begin-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (confirmation int8 :offset-assert 21) + (connect-info net-connection-info :inline :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #xb2 + :flag-assert #x9000000b2 + ) +|# + +#| +(deftype medius-server-session-end-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x15 + :flag-assert #x900000015 + ) +|# + +#| +(deftype medius-server-session-end-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (confirmation int8 :offset-assert 21) + ) + :method-count-assert 9 + :size-assert #x16 + :flag-assert #x900000016 + ) +|# + +#| +(deftype medius-server-world-report-on-me (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (game-name UNKNOWN 64 :offset-assert 21) + (game-stats UNKNOWN 256 :offset-assert 85) + (game-password UNKNOWN 32 :offset-assert 341) + (application-id int32 :offset-assert 376) + (max-clients int32 :offset-assert 380) + (min-clients int32 :offset-assert 384) + (player-count int32 :offset-assert 388) + (game-level int32 :offset-assert 392) + (player-skill-level int32 :offset-assert 396) + (rules-set int32 :offset-assert 400) + (generic-field1 int32 :offset-assert 404) + (generic-field2 int32 :offset-assert 408) + (generic-field3 int32 :offset-assert 412) + (medius-world-id int32 :offset-assert 416) + (world-status int32 :offset-assert 420) + ) + :method-count-assert 9 + :size-assert #x1a8 + :flag-assert #x9000001a8 + ) +|# + +#| +(deftype medius-server-world-status-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (world-id int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype medius-server-world-status-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (application-id int32 :offset-assert 24) + (max-clients int32 :offset-assert 28) + (active-clients int32 :offset-assert 32) + (confirmation int8 :offset-assert 36) + ) + :method-count-assert 9 + :size-assert #x25 + :flag-assert #x900000025 + ) +|# + +#| +(deftype medius-server-connect-games-request (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (server-ip UNKNOWN 20 :offset-assert 21) + (server-port int32 :offset-assert 44) + (game-world-id int32 :offset-assert 48) + (spectator-world-id int32 :offset-assert 52) + ) + :method-count-assert 9 + :size-assert #x38 + :flag-assert #x900000038 + ) +|# + +#| +(deftype medius-server-connect-games-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (game-world-id int32 :offset-assert 24) + (spectator-world-id int32 :offset-assert 28) + (confirmation int8 :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x21 + :flag-assert #x900000021 + ) +|# + +#| +(deftype medius-server-connect-notification-type (structure) + ((connect-event-type int32 :offset-assert 0) + (medius-world-uid uint32 :offset-assert 4) + (player-session-key UNKNOWN 17 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #x19 + :flag-assert #x900000019 + ) +|# + +#| +(deftype mgclconnect-in-params (structure) + ((connection-info net-connection-info :inline :offset-assert 0) + (pf-connect-callback basic :offset-assert 156) + ) + :method-count-assert 9 + :size-assert #xa0 + :flag-assert #x9000000a0 + ) +|# + +#| +(deftype mgclconnect-out-params (structure) + ((error-code int32 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype mgcldisconnect-params (structure) + ((connection-handle basic :offset-assert 0) + (disconnect-reason int32 :offset-assert 4) + (my-disconnect-callback basic :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ;; field connection-handle uses ~A with a signed load. + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; scert-11-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype mgclinitialize-in-params (structure) + ((p-local-key-pair rsa-keypair :offset-assert 0) + (status int32 :offset-assert 4) + (my-server-create-game-callback basic :offset-assert 8) + (my-server-create-game-callback-user-data basic :offset-assert 12) + (my-server-create-game-with-attributes-callback basic :offset-assert 16) + (my-server-create-game-with-attributes-user-data basic :offset-assert 20) + (my-server-join-game-callback basic :offset-assert 24) + (my-server-join-game-callback-user-data basic :offset-assert 28) + (my-server-end-game-callback basic :offset-assert 32) + (my-server-end-game-callback-user-data basic :offset-assert 36) + (my-server-world-status-callback basic :offset-assert 40) + (my-server-world-status-callback-user-data basic :offset-assert 44) + (my-server-connect-games-callback basic :offset-assert 48) + (my-server-connect-games-user-data basic :offset-assert 52) + (max-clients-per-connection int32 :offset-assert 56) + (application-id int32 :offset-assert 60) + (p-application-key-pair rsa-keypair :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x44 + :flag-assert #x900000044 + ;; field my-server-create-game-callback-user-data uses ~A with a signed load. field my-server-create-game-with-attributes-user-data uses ~A with a signed load. field my-server-join-game-callback-user-data uses ~A with a signed load. field my-server-end-game-callback-user-data uses ~A with a signed load. field my-server-world-status-callback-user-data uses ~A with a signed load. field my-server-connect-games-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype mgclinitialize-out-params (structure) + ((error-code int32 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype net-lanpeer-desc (structure) + ((dme-version net-dme-version :inline :offset-assert 0) + (net-platform-id int32 :offset-assert 20) + (application-id int32 :offset-assert 24) + (peer-address net-address :inline :offset-assert 28) + (localization net-localization-params :inline :offset-assert 52) + (application-name UNKNOWN 72 :offset-assert 60) + (user-name UNKNOWN 32 :offset-assert 132) + ) + :method-count-assert 9 + :size-assert #xa4 + :flag-assert #x9000000a4 + ) +|# + +#| +(deftype net-initialize-in-params (structure) + ((b-default-set int32 :offset-assert 0) + (localization net-localization-params :inline :offset-assert 4) + (application-id int32 :offset-assert 12) + (application-name UNKNOWN 72 :offset-assert 16) + (p-local-key-pair rsa-keypair :offset-assert 88) + (p-application-key-pair rsa-keypair :offset-assert 92) + (connectivity-type int32 :offset-assert 96) + (udp-bind-port int32 :offset-assert 100) + (upn-pmemory-ceiling int32 :offset-assert 104) + (b-enable-lanbroadcast-comms int32 :offset-assert 108) + (pf-system-message-callback basic :offset-assert 112) + (p-system-message-callback-data basic :offset-assert 116) + ) + :method-count-assert 9 + :size-assert #x78 + :flag-assert #x900000078 + ;; field p-system-message-callback-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-host-peer-to-peer-in-params (structure) + ((b-default-set int32 :offset-assert 0) + (pf-local-connect-callback basic :offset-assert 4) + (p-local-connect-callback-data basic :offset-assert 8) + (pf-local-disconnect-callback basic :offset-assert 12) + (p-local-disconnect-callback-data basic :offset-assert 16) + (pf-remote-client-connect-callback basic :offset-assert 20) + (p-remote-client-connect-callback-data basic :offset-assert 24) + (pf-remote-client-disconnect-callback basic :offset-assert 28) + (p-remote-client-disconnect-callback-data basic :offset-assert 32) + (pf-system-status-callback basic :offset-assert 36) + (p-system-status-callback-data basic :offset-assert 40) + (max-clients uint32 :offset-assert 44) + (stream-media-params net-stream-media-params :inline :offset-assert 48) + (user-specified int32 :offset-assert 160) + (b-enab-disconnect-fwd int32 :offset-assert 164) + (token-params net-token-params :inline :offset-assert 168) + (b-use-time-base int32 :offset-assert 180) + (send-buffer-size uint32 :offset-assert 184) + (recv-buffer-size uint32 :offset-assert 188) + ) + :method-count-assert 9 + :size-assert #xc0 + :flag-assert #x9000000c0 + ;; field p-local-connect-callback-data uses ~A with a signed load. field p-local-disconnect-callback-data uses ~A with a signed load. field p-remote-client-connect-callback-data uses ~A with a signed load. field p-remote-client-disconnect-callback-data uses ~A with a signed load. field p-system-status-callback-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-resolve-addr-data (structure) + ((b-is-set int32 :offset-assert 0) + (error-code int32 :offset-assert 4) + (address-list net-address-list :inline :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #x38 + :flag-assert #x900000038 + ) +|# + +#| +(deftype net-resolve-addr-in-params (structure) + ((b-default-set int32 :offset-assert 0) + (pf-resolve-addr-callback basic :offset-assert 4) + (nat-service-address net-address :inline :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype net-incoming-client-in-params (structure) + ((b-default-set int32 :offset-assert 0) + (incoming-address-list net-address-list :inline :offset-assert 4) + (pub-key rsa-key :inline :offset-assert 52) + ) + :method-count-assert 9 + :size-assert #x74 + :flag-assert #x900000074 + ) +|# + +#| +(deftype net-type-broadcast-schedule (structure) + ((min-update-interval uint32 :offset-assert 0) + (error-threshold-type int32 :offset-assert 4) + (threshold-data anonymous-0 :inline :offset-assert 8) + (transport-flags int8 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #xd + :flag-assert #x90000000d + ) +|# + +#| +(deftype net-type-field (structure) + ((offset int32 :offset-assert 0) + (element-size int32 :offset-assert 4) + (element-count int32 :offset-assert 8) + (e-type int32 :offset-assert 12) + (update-schedule net-type-broadcast-schedule :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x1d + :flag-assert #x90000001d + ) +|# + +#| +(deftype net-type-structure (structure) + ((total-size int32 :offset-assert 0) + (field-count int32 :offset-assert 4) + (name UNKNOWN 32 :offset-assert 8) + (child-field-type UNKNOWN 64 :offset-assert 40) + (child-field-offset UNKNOWN 64 :offset-assert 296) + ) + :method-count-assert 9 + :size-assert #x228 + :flag-assert #x900000228 + ) +|# + +#| +(deftype net-lanfind-exchange-callback-in-args (structure) + ((connection-handle basic :offset-assert 0) + (session-type int32 :offset-assert 4) + (peer-desc net-lanpeer-desc :inline :offset-assert 8) + (details net-data :inline :offset-assert 172) + (p-user-data basic :offset-assert 180) + ) + :method-count-assert 9 + :size-assert #xb8 + :flag-assert #x9000000b8 + ;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load. + ) +|# + +#| +(deftype net-lanfind-callback-data-args (structure) + ((n-num-clients int16 :offset-assert 0) + (n-max-num-clients int16 :offset-assert 2) + (session-type int32 :offset-assert 4) + (peer-desc net-lanpeer-desc :inline :offset-assert 8) + (details net-data :inline :offset-assert 172) + (p-user-data basic :offset-assert 180) + ) + :method-count-assert 9 + :size-assert #xb8 + :flag-assert #x9000000b8 + ;; field p-user-data uses ~A with a signed load. + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; scert-funcs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *scert-function-id* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; mem-buffer-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype mem-buffer (structure) + ((base uint32 :offset-assert 0) + (ptr uint32 :offset-assert 4) + (limit uint32 :offset-assert 8) + (in-use basic :offset-assert 12) + ) + :method-count-assert 52 + :size-assert #x10 + :flag-assert #x3400000010 + (:methods + (mem-buffer-method-9 () none) ;; 9 + (mem-buffer-method-10 () none) ;; 10 + (mem-buffer-method-11 () none) ;; 11 + (mem-buffer-method-12 () none) ;; 12 + (mem-buffer-method-13 () none) ;; 13 + (mem-buffer-method-14 () none) ;; 14 + (mem-buffer-method-15 () none) ;; 15 + (mem-buffer-method-16 () none) ;; 16 + (mem-buffer-method-17 () none) ;; 17 + (mem-buffer-method-18 () none) ;; 18 + (mem-buffer-method-19 () none) ;; 19 + (mem-buffer-method-20 () none) ;; 20 + (mem-buffer-method-21 () none) ;; 21 + (mem-buffer-method-22 () none) ;; 22 + (mem-buffer-method-23 () none) ;; 23 + (mem-buffer-method-24 () none) ;; 24 + (mem-buffer-method-25 () none) ;; 25 + (mem-buffer-method-26 () none) ;; 26 + (mem-buffer-method-27 () none) ;; 27 + (mem-buffer-method-28 () none) ;; 28 + (mem-buffer-method-29 () none) ;; 29 + (mem-buffer-method-30 () none) ;; 30 + (mem-buffer-method-31 () none) ;; 31 + (mem-buffer-method-32 () none) ;; 32 + (mem-buffer-method-33 () none) ;; 33 + (mem-buffer-method-34 () none) ;; 34 + (mem-buffer-method-35 () none) ;; 35 + (mem-buffer-method-36 () none) ;; 36 + (mem-buffer-method-37 () none) ;; 37 + (mem-buffer-method-38 () none) ;; 38 + (mem-buffer-method-39 () none) ;; 39 + (mem-buffer-method-40 () none) ;; 40 + (mem-buffer-method-41 () none) ;; 41 + (mem-buffer-method-42 () none) ;; 42 + (mem-buffer-method-43 () none) ;; 43 + (mem-buffer-method-44 () none) ;; 44 + (mem-buffer-method-45 () none) ;; 45 + (mem-buffer-method-46 () none) ;; 46 + (mem-buffer-method-47 () none) ;; 47 + (mem-buffer-method-48 () none) ;; 48 + (mem-buffer-method-49 () none) ;; 49 + (mem-buffer-method-50 () none) ;; 50 + (mem-buffer-method-51 () none) ;; 51 + ) + ) +|# + +#| +(deftype level-bounding-box (structure) + ((bmin vector :inline :offset-assert 0) + (bsz vector :inline :offset-assert 16) + ) + :method-count-assert 12 + :size-assert #x20 + :flag-assert #xc00000020 + (:methods + (level-bounding-box-method-9 () none) ;; 9 + (level-bounding-box-method-10 () none) ;; 10 + (level-bounding-box-method-11 () none) ;; 11 + ) + ) +|# + +;; (define-extern *level-bounding-box* object) +;; (define-extern *msg-buffers* object) +;; (define-extern alloc-msg-buffer function) +;; (define-extern free-msg-buffer function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-mgr-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype net-aux-msg-handler (structure) + ((handler-func function :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype net-mgr-game-state (structure) + ((connect-handle basic :offset-assert 0) + (local-machine-idx int32 :offset-assert 4) + (session-master-idx int32 :offset-assert 8) + (host-idx int32 :offset-assert 12) + (connected-bitfield int32 :offset-assert 16) + (time int32 :offset-assert 20) + (first-time-host symbol :offset-assert 24) + (locked symbol :offset-assert 28) + (kicked symbol :offset-assert 32) + (sm-eligible symbol :offset-assert 36) + ) + :pack-me + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + ;; field connect-handle uses ~A with a signed load. + ) + +(deftype net-mgr-lobby-state (structure) + ((connect-handle basic :offset-assert 0) + (connect-handle-mgcl basic :offset-assert 4) + (connect-handle-muis basic :offset-assert 8) + (my-account-id int32 :offset-assert 12) + (channel-id int32 :offset-assert 16) + (in-special-channel symbol :offset-assert 20) + (last-normal-channel-id int32 :offset-assert 24) + (created-game-id int32 :offset-assert 28) + (joined-game-id int32 :offset-assert 32) + (channel-list-valid symbol :offset-assert 36) + (last-medius-error int32 :offset-assert 40) + (last-mgcl-error int32 :offset-assert 44) + (last-dme-error int32 :offset-assert 48) + (callback-occurred symbol :offset-assert 52) + (callback-status int32 :offset-assert 56) + (callback-userdata basic :offset-assert 60) + (timeout symbol :offset-assert 64) + (got-error symbol :offset-assert 68) + (last-report-time int32 :offset-assert 72) + (game-on-me uint64 :offset-assert 80) + (game-on-me-error-delay int32 :offset-assert 88) + ) + :method-count-assert 9 + :size-assert #x5c + :flag-assert #x90000005c + ;; field connect-handle uses ~A with a signed load. field connect-handle-mgcl uses ~A with a signed load. field connect-handle-muis uses ~A with a signed load. field callback-userdata uses ~A with a signed load. + ) + +(deftype net-mgr (process) + ((game-type uint8 :offset-assert 144) + (last-game-type uint8 :offset-assert 145) + (notify symbol :offset-assert 148) + (game-state net-mgr-game-state :inline :offset-assert 152) + (lobby-state net-mgr-lobby-state :inline :offset-assert 192) + (scert-initted symbol :offset-assert 284) + (auto-register symbol :offset-assert 288) + (skip-policy symbol :offset-assert 292) + ) + :method-count-assert 60 + :size-assert #x128 + :flag-assert #x3c00a00128 + (:methods + (net-mgr-method-14 () none) ;; 14 + (net-mgr-method-15 () none) ;; 15 + (net-mgr-method-16 () none) ;; 16 + (net-mgr-method-17 () none) ;; 17 + (net-mgr-method-18 () none) ;; 18 + (net-mgr-method-19 () none) ;; 19 + (net-mgr-method-20 () none) ;; 20 + (net-mgr-method-21 () none) ;; 21 + (net-mgr-method-22 () none) ;; 22 + (net-mgr-method-23 () none) ;; 23 + (net-mgr-method-24 () none) ;; 24 + (net-mgr-method-25 () none) ;; 25 + (net-mgr-method-26 () none) ;; 26 + (net-mgr-method-27 () none) ;; 27 + (net-mgr-method-28 () none) ;; 28 + (net-mgr-method-29 () none) ;; 29 + (net-mgr-method-30 () none) ;; 30 + (net-mgr-method-31 () none) ;; 31 + (net-mgr-method-32 () none) ;; 32 + (net-mgr-method-33 () none) ;; 33 + (net-mgr-method-34 () none) ;; 34 + (net-mgr-method-35 () none) ;; 35 + (net-mgr-method-36 () none) ;; 36 + (net-mgr-method-37 () none) ;; 37 + (net-mgr-method-38 () none) ;; 38 + (net-mgr-method-39 () none) ;; 39 + (net-mgr-method-40 () none) ;; 40 + (net-mgr-method-41 () none) ;; 41 + (net-mgr-method-42 () none) ;; 42 + (net-mgr-method-43 () none) ;; 43 + (net-mgr-method-44 () none) ;; 44 + (net-mgr-method-45 () none) ;; 45 + (net-mgr-method-46 () none) ;; 46 + (net-mgr-method-47 () none) ;; 47 + (net-mgr-method-48 () none) ;; 48 + (net-mgr-method-49 () none) ;; 49 + (net-mgr-method-50 () none) ;; 50 + (net-mgr-method-51 () none) ;; 51 + (net-mgr-method-52 () none) ;; 52 + (net-mgr-method-53 () none) ;; 53 + (net-mgr-method-54 () none) ;; 54 + (net-mgr-method-55 () none) ;; 55 + (net-mgr-method-56 () none) ;; 56 + (net-mgr-method-57 () none) ;; 57 + (net-mgr-method-58 () none) ;; 58 + (net-mgr-method-59 () none) ;; 59 + ) + ) + +(deftype net-available-game-info (structure) + ((game-name uint8 64 :offset-assert 0) + (player-count uint8 :offset-assert 64) + (min-players uint8 :offset-assert 65) + (max-players uint8 :offset-assert 66) + (in-staging symbol :offset-assert 68) + (event uint8 :offset-assert 72) + (location uint8 :offset-assert 73) + (task-node uint8 :offset-assert 74) + (generic-1 int32 :offset-assert 76) + (generic-2 int32 :offset-assert 80) + (generic-3 int32 :offset-assert 84) + (burn-version uint32 :offset 76 :score 1) + (lobby-world int32 :offset 80 :score 1) + (class-type int32 :offset 84 :score 1) + (clan-1 int32 :offset-assert 88) + (clan-2 int32 :offset-assert 92) + (skill-level int32 :offset-assert 96) + (avg-ping int32 :offset-assert 100) + ) + :method-count-assert 9 + :size-assert #x68 + :flag-assert #x900000068 + ) + +#| +(deftype net-available-game (structure) + ((info net-available-game-info :inline :offset-assert 0) + (connect-info net-connection-info :inline :offset-assert 104) + (medius-world-id int32 :offset-assert 260) + (format-game-name uint8 64 :offset-assert 264) + ) + :method-count-assert 15 + :size-assert #x148 + :flag-assert #xf00000148 + (:methods + (net-available-game-method-9 () none) ;; 9 + (net-available-game-method-10 () none) ;; 10 + (net-available-game-method-11 () none) ;; 11 + (net-available-game-method-12 () none) ;; 12 + (net-available-game-method-13 () none) ;; 13 + (net-available-game-method-14 () none) ;; 14 + ) + ) +|# + +;; (define-extern *net-aux-msg-handlers* object) +;; (define-extern *net-mgr-startup-status* object) +(define-extern *net-mgr* net-mgr) +;; (define-extern *net-error* object) +;; (define-extern *medius-world-status* object) +;; (define-extern *dme-initted* object) +;; (define-extern *medius-initted* object) +;; (define-extern *mgcl-initted* object) +;; (define-extern encode-net-available-game-info function) +;; (define-extern decode-net-available-game-info function) +;; (define-extern *net-mgr-scratch* object) +;; (define-extern *net-available-game-ct* object) +;; (define-extern *net-available-games* object) +;; (define-extern *net-active-game* object) +;; (define-extern net-mgr-notify-connect function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; obj-list ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype list-link (structure) + ((prev list-link :offset-assert 0) + (next list-link :offset-assert 4) + ) + :pack-me + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype linked-list (structure) + ((head list-link :offset-assert 0) + (tail list-link :offset-assert 4) + ) + :method-count-assert 12 + :size-assert #x8 + :flag-assert #xc00000008 + (:methods + (linked-list-method-9 () none) ;; 9 + (linked-list-method-10 () none) ;; 10 + (linked-list-method-11 () none) ;; 11 + ) + ) + +;; (define-extern fixup-relocated-link function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; process-nettable-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype net-process-class-info (structure) + ((msg-map basic :offset-assert 0) + (msg-count int32 :offset-assert 4) + (send-packet-count int32 :offset-assert 8) + (recv-packet-count int32 :offset-assert 12) + (send-byte-count int32 :offset-assert 16) + (recv-byte-count int32 :offset-assert 20) + (owner-type basic :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) + +(deftype net-process-id (uint16) + () + :flag-assert #x900000002 + ) + +(deftype proximity-ownership-params (basic) + ((ownable-radius float :offset-assert 4) + (force-local basic :offset-assert 8) + (last-ownership-req-time int32 :offset-assert 12) + (min-ownership-req-delay int32 :offset-assert 16) + (consider-ai-players basic :offset-assert 20) + ) + :method-count-assert 10 + :size-assert #x18 + :flag-assert #xa00000018 + (:methods + (proximity-ownership-params-method-9 () none) ;; 9 + ) + ) + +(deftype process-nettable (process) + ((owner-idx int8 :offset-assert 144) + (net-flags uint64 :offset-assert 152) + (desired-owner-idx int8 :offset-assert 160) + (net-id uint16 :offset-assert 162) + (jump-in-send-pending uint16 :offset-assert 164) + (prox basic :offset-assert 168) + (owner-link list-link :inline :offset-assert 172) + (active-link list-link :inline :offset-assert 180) + ) + :method-count-assert 42 + :size-assert #xbc + :flag-assert #x2a003000bc + (:methods + (new "Allocate a process-tree with the kernel clock." (symbol type string) _type_) ;; 0 + (activate "Move a process from dead to active, moving it to the given tree." (_type_ process-tree string pointer) process-tree) ;; 9 + (deactivate "Make a process dead, clean it up, remove it from the active pool, and return to dead pool." (_type_) none) ;; 10 + (init-from-entity! (_type_ entity-actor) object) ;; 11 + (run-logic? "Should this process be run? Checked by execute-process-tree." (_type_) symbol) ;; 12 + (process-tree-method-13 () none) ;; 13 + (process-nettable-method-14 () none) ;; 14 + (process-nettable-method-15 () none) ;; 15 + (process-nettable-method-16 () none) ;; 16 + (process-nettable-method-17 () none) ;; 17 + (process-nettable-method-18 () none) ;; 18 + (process-nettable-method-19 () none) ;; 19 + (process-nettable-method-20 () none) ;; 20 + (process-nettable-method-21 () none) ;; 21 + (process-nettable-method-22 () none) ;; 22 + (process-nettable-method-23 () none) ;; 23 + (process-nettable-method-24 () none) ;; 24 + (process-nettable-method-25 () none) ;; 25 + (process-nettable-method-26 () none) ;; 26 + (process-nettable-method-27 () none) ;; 27 + (process-nettable-method-28 () none) ;; 28 + (process-nettable-method-29 () none) ;; 29 + (process-nettable-method-30 () none) ;; 30 + (process-nettable-method-31 () none) ;; 31 + (process-nettable-method-32 () none) ;; 32 + (process-nettable-method-33 () none) ;; 33 + (process-nettable-method-34 () none) ;; 34 + (process-nettable-method-35 () none) ;; 35 + (process-nettable-method-36 () none) ;; 36 + (process-nettable-method-37 () none) ;; 37 + (process-nettable-method-38 () none) ;; 38 + (process-nettable-method-39 () none) ;; 39 + (process-nettable-method-40 () none) ;; 40 + (process-nettable-method-41 () none) ;; 41 + ) + ) + +(define-extern *net-process-class-count* number) +(define-extern *net-process-class-array* array) +(define-extern *net-process-class-names* object) +(define-extern net-process-class-register (function draw-control none)) +(define-extern write-msg-map-rec (function process-drawable net-process-class-info none)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; game-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-type nav-control structure) +(declare-type path-control basic) +(declare-type vol-control basic) +(declare-type fact-info basic) +(declare-type actor-link-info basic) +(declare-type water-control basic) +(declare-type carry-info basic) +(declare-type rigid-body-control basic) + +(declare-type sparticle-launch-control inline-array-class) + +(defenum state-flags + :bitfield #t + :type uint32 + ) + +(deftype process-drawable (process-nettable) + "This is the main base class for in-game objects. + This handles drawing, collision, animation, navigation, particles, sounds, physics, etc. + The actual child classes will add most of the functionality, and this just serves as a common + container for references to the `-control` objects for this object." + ((root trsqv :offset-assert 188) ;; guessed by decompiler + (node-list cspace-array :offset-assert 192) ;; guessed by decompiler + (draw draw-control :offset-assert 196) ;; guessed by decompiler + (skel joint-control :offset-assert 200) ;; guessed by decompiler + (nav nav-control :offset-assert 204) ;; guessed by decompiler + (path path-control :offset-assert 208) ;; guessed by decompiler + (vol vol-control :offset-assert 212) ;; guessed by decompiler + (fact fact-info :offset-assert 216) ;; guessed by decompiler + (link actor-link-info :offset-assert 220) ;; guessed by decompiler + (part sparticle-launch-control :offset-assert 224) ;; guessed by decompiler + (sound ambient-sound :offset-assert 228) ;; guessed by decompiler + (rbody rigid-body-control :offset-assert 232) ;; guessed by decompiler + (state-flags state-flags :offset-assert 236) ;; guessed by decompiler + (state-time uint64 :offset-assert 240) ;; time-frame + ) + :method-count-assert 50 + :size-assert #xf8 + :flag-assert #x32007000f8 + (:methods + (process-drawable-method-42 () none) ;; 42 + (process-drawable-method-43 () none) ;; 43 + (process-drawable-method-44 () none) ;; 44 + (process-drawable-method-45 () none) ;; 45 + (process-drawable-method-46 () none) ;; 46 + (process-drawable-method-47 () none) ;; 47 + (process-drawable-method-48 () none) ;; 48 + (process-drawable-method-49 () none) ;; 49 + ) + (:states + (process-drawable-art-error string) ;; associated process guessed by decompiler, old: (state string process-drawable) + process-drawable-idle ;; associated process guessed by decompiler, old: (state process-drawable) + ) + ) + +(deftype process-drawable-reserved (process-drawable) + "A process drawable with a lot of unused method slots. + GOAL cannot increase the number of methods at runtime, so, for interactive development, it is useful + to have a type with a large number of slots which can be turned into real methods without needed to reboot the PS2." + () + :method-count-assert 248 + :size-assert #xf8 + :flag-assert #xf8007000f8 + (:methods + (process-drawable-reserved-method-50 () none) ;; 50 ;; (process-drawable-reserved-method-50 () none) + (process-drawable-reserved-method-51 () none) ;; 51 ;; (process-drawable-reserved-method-51 () none) + (process-drawable-reserved-method-52 () none) ;; 52 ;; (process-drawable-reserved-method-52 () none) + (process-drawable-reserved-method-53 () none) ;; 53 ;; (process-drawable-reserved-method-53 () none) + (process-drawable-reserved-method-54 () none) ;; 54 ;; (process-drawable-reserved-method-54 () none) + (process-drawable-reserved-method-55 () none) ;; 55 ;; (process-drawable-reserved-method-55 () none) + (process-drawable-reserved-method-56 () none) ;; 56 ;; (process-drawable-reserved-method-56 () none) + (process-drawable-reserved-method-57 () none) ;; 57 ;; (process-drawable-reserved-method-57 () none) + (process-drawable-reserved-method-58 () none) ;; 58 ;; (process-drawable-reserved-method-58 () none) + (process-drawable-reserved-method-59 () none) ;; 59 ;; (process-drawable-reserved-method-59 () none) + (process-drawable-reserved-method-60 () none) ;; 60 ;; (process-drawable-reserved-method-60 () none) + (process-drawable-reserved-method-61 () none) ;; 61 ;; (process-drawable-reserved-method-61 () none) + (process-drawable-reserved-method-62 () none) ;; 62 ;; (process-drawable-reserved-method-62 () none) + (process-drawable-reserved-method-63 () none) ;; 63 ;; (process-drawable-reserved-method-63 () none) + (process-drawable-reserved-method-64 () none) ;; 64 ;; (process-drawable-reserved-method-64 () none) + (process-drawable-reserved-method-65 () none) ;; 65 ;; (process-drawable-reserved-method-65 () none) + (process-drawable-reserved-method-66 () none) ;; 66 ;; (process-drawable-reserved-method-66 () none) + (process-drawable-reserved-method-67 () none) ;; 67 ;; (process-drawable-reserved-method-67 () none) + (process-drawable-reserved-method-68 () none) ;; 68 ;; (process-drawable-reserved-method-68 () none) + (process-drawable-reserved-method-69 () none) ;; 69 ;; (process-drawable-reserved-method-69 () none) + (process-drawable-reserved-method-70 () none) ;; 70 ;; (process-drawable-reserved-method-70 () none) + (process-drawable-reserved-method-71 () none) ;; 71 ;; (process-drawable-reserved-method-71 () none) + (process-drawable-reserved-method-72 () none) ;; 72 ;; (process-drawable-reserved-method-72 () none) + (process-drawable-reserved-method-73 () none) ;; 73 ;; (process-drawable-reserved-method-73 () none) + (process-drawable-reserved-method-74 () none) ;; 74 ;; (process-drawable-reserved-method-74 () none) + (process-drawable-reserved-method-75 () none) ;; 75 ;; (process-drawable-reserved-method-75 () none) + (process-drawable-reserved-method-76 () none) ;; 76 ;; (process-drawable-reserved-method-76 () none) + (process-drawable-reserved-method-77 () none) ;; 77 ;; (process-drawable-reserved-method-77 () none) + (process-drawable-reserved-method-78 () none) ;; 78 ;; (process-drawable-reserved-method-78 () none) + (process-drawable-reserved-method-79 () none) ;; 79 ;; (process-drawable-reserved-method-79 () none) + (process-drawable-reserved-method-80 () none) ;; 80 ;; (process-drawable-reserved-method-80 () none) + (process-drawable-reserved-method-81 () none) ;; 81 ;; (process-drawable-reserved-method-81 () none) + (process-drawable-reserved-method-82 () none) ;; 82 ;; (process-drawable-reserved-method-82 () none) + (process-drawable-reserved-method-83 () none) ;; 83 ;; (process-drawable-reserved-method-83 () none) + (process-drawable-reserved-method-84 () none) ;; 84 ;; (process-drawable-reserved-method-84 () none) + (process-drawable-reserved-method-85 () none) ;; 85 ;; (process-drawable-reserved-method-85 () none) + (process-drawable-reserved-method-86 () none) ;; 86 ;; (process-drawable-reserved-method-86 () none) + (process-drawable-reserved-method-87 () none) ;; 87 ;; (process-drawable-reserved-method-87 () none) + (process-drawable-reserved-method-88 () none) ;; 88 ;; (process-drawable-reserved-method-88 () none) + (process-drawable-reserved-method-89 () none) ;; 89 ;; (process-drawable-reserved-method-89 () none) + (process-drawable-reserved-method-90 () none) ;; 90 ;; (process-drawable-reserved-method-90 () none) + (process-drawable-reserved-method-91 () none) ;; 91 ;; (process-drawable-reserved-method-91 () none) + (process-drawable-reserved-method-92 () none) ;; 92 ;; (process-drawable-reserved-method-92 () none) + (process-drawable-reserved-method-93 () none) ;; 93 ;; (process-drawable-reserved-method-93 () none) + (process-drawable-reserved-method-94 () none) ;; 94 ;; (process-drawable-reserved-method-94 () none) + (process-drawable-reserved-method-95 () none) ;; 95 ;; (process-drawable-reserved-method-95 () none) + (process-drawable-reserved-method-96 () none) ;; 96 ;; (process-drawable-reserved-method-96 () none) + (process-drawable-reserved-method-97 () none) ;; 97 ;; (process-drawable-reserved-method-97 () none) + (process-drawable-reserved-method-98 () none) ;; 98 ;; (process-drawable-reserved-method-98 () none) + (process-drawable-reserved-method-99 () none) ;; 99 ;; (process-drawable-reserved-method-99 () none) + (process-drawable-reserved-method-100 () none) ;; 100 ;; (process-drawable-reserved-method-100 () none) + (process-drawable-reserved-method-101 () none) ;; 101 ;; (process-drawable-reserved-method-101 () none) + (process-drawable-reserved-method-102 () none) ;; 102 ;; (process-drawable-reserved-method-102 () none) + (process-drawable-reserved-method-103 () none) ;; 103 ;; (process-drawable-reserved-method-103 () none) + (process-drawable-reserved-method-104 () none) ;; 104 ;; (process-drawable-reserved-method-104 () none) + (process-drawable-reserved-method-105 () none) ;; 105 ;; (process-drawable-reserved-method-105 () none) + (process-drawable-reserved-method-106 () none) ;; 106 ;; (process-drawable-reserved-method-106 () none) + (process-drawable-reserved-method-107 () none) ;; 107 ;; (process-drawable-reserved-method-107 () none) + (process-drawable-reserved-method-108 () none) ;; 108 ;; (process-drawable-reserved-method-108 () none) + (process-drawable-reserved-method-109 () none) ;; 109 ;; (process-drawable-reserved-method-109 () none) + (process-drawable-reserved-method-110 () none) ;; 110 ;; (process-drawable-reserved-method-110 () none) + (process-drawable-reserved-method-111 () none) ;; 111 ;; (process-drawable-reserved-method-111 () none) + (process-drawable-reserved-method-112 () none) ;; 112 ;; (process-drawable-reserved-method-112 () none) + (process-drawable-reserved-method-113 () none) ;; 113 ;; (process-drawable-reserved-method-113 () none) + (process-drawable-reserved-method-114 () none) ;; 114 ;; (process-drawable-reserved-method-114 () none) + (process-drawable-reserved-method-115 () none) ;; 115 ;; (process-drawable-reserved-method-115 () none) + (process-drawable-reserved-method-116 () none) ;; 116 ;; (process-drawable-reserved-method-116 () none) + (process-drawable-reserved-method-117 () none) ;; 117 ;; (process-drawable-reserved-method-117 () none) + (process-drawable-reserved-method-118 () none) ;; 118 ;; (process-drawable-reserved-method-118 () none) + (process-drawable-reserved-method-119 () none) ;; 119 ;; (process-drawable-reserved-method-119 () none) + (process-drawable-reserved-method-120 () none) ;; 120 ;; (process-drawable-reserved-method-120 () none) + (process-drawable-reserved-method-121 () none) ;; 121 ;; (process-drawable-reserved-method-121 () none) + (process-drawable-reserved-method-122 () none) ;; 122 ;; (process-drawable-reserved-method-122 () none) + (process-drawable-reserved-method-123 () none) ;; 123 ;; (process-drawable-reserved-method-123 () none) + (process-drawable-reserved-method-124 () none) ;; 124 ;; (process-drawable-reserved-method-124 () none) + (process-drawable-reserved-method-125 () none) ;; 125 ;; (process-drawable-reserved-method-125 () none) + (process-drawable-reserved-method-126 () none) ;; 126 ;; (process-drawable-reserved-method-126 () none) + (process-drawable-reserved-method-127 () none) ;; 127 ;; (process-drawable-reserved-method-127 () none) + (process-drawable-reserved-method-128 () none) ;; 128 ;; (process-drawable-reserved-method-128 () none) + (process-drawable-reserved-method-129 () none) ;; 129 ;; (process-drawable-reserved-method-129 () none) + (process-drawable-reserved-method-130 () none) ;; 130 ;; (process-drawable-reserved-method-130 () none) + (process-drawable-reserved-method-131 () none) ;; 131 ;; (process-drawable-reserved-method-131 () none) + (process-drawable-reserved-method-132 () none) ;; 132 ;; (process-drawable-reserved-method-132 () none) + (process-drawable-reserved-method-133 () none) ;; 133 ;; (process-drawable-reserved-method-133 () none) + (process-drawable-reserved-method-134 () none) ;; 134 ;; (process-drawable-reserved-method-134 () none) + (process-drawable-reserved-method-135 () none) ;; 135 ;; (process-drawable-reserved-method-135 () none) + (process-drawable-reserved-method-136 () none) ;; 136 ;; (process-drawable-reserved-method-136 () none) + (process-drawable-reserved-method-137 () none) ;; 137 ;; (process-drawable-reserved-method-137 () none) + (process-drawable-reserved-method-138 () none) ;; 138 ;; (process-drawable-reserved-method-138 () none) + (process-drawable-reserved-method-139 () none) ;; 139 ;; (process-drawable-reserved-method-139 () none) + (process-drawable-reserved-method-140 () none) ;; 140 ;; (process-drawable-reserved-method-140 () none) + (process-drawable-reserved-method-141 () none) ;; 141 ;; (process-drawable-reserved-method-141 () none) + (process-drawable-reserved-method-142 () none) ;; 142 ;; (process-drawable-reserved-method-142 () none) + (process-drawable-reserved-method-143 () none) ;; 143 ;; (process-drawable-reserved-method-143 () none) + (process-drawable-reserved-method-144 () none) ;; 144 ;; (process-drawable-reserved-method-144 () none) + (process-drawable-reserved-method-145 () none) ;; 145 ;; (process-drawable-reserved-method-145 () none) + (process-drawable-reserved-method-146 () none) ;; 146 ;; (process-drawable-reserved-method-146 () none) + (process-drawable-reserved-method-147 () none) ;; 147 ;; (process-drawable-reserved-method-147 () none) + (process-drawable-reserved-method-148 () none) ;; 148 ;; (process-drawable-reserved-method-148 () none) + (process-drawable-reserved-method-149 () none) ;; 149 ;; (process-drawable-reserved-method-149 () none) + (process-drawable-reserved-method-150 () none) ;; 150 ;; (process-drawable-reserved-method-150 () none) + (process-drawable-reserved-method-151 () none) ;; 151 ;; (process-drawable-reserved-method-151 () none) + (process-drawable-reserved-method-152 () none) ;; 152 ;; (process-drawable-reserved-method-152 () none) + (process-drawable-reserved-method-153 () none) ;; 153 ;; (process-drawable-reserved-method-153 () none) + (process-drawable-reserved-method-154 () none) ;; 154 ;; (process-drawable-reserved-method-154 () none) + (process-drawable-reserved-method-155 () none) ;; 155 ;; (process-drawable-reserved-method-155 () none) + (process-drawable-reserved-method-156 () none) ;; 156 ;; (process-drawable-reserved-method-156 () none) + (process-drawable-reserved-method-157 () none) ;; 157 ;; (process-drawable-reserved-method-157 () none) + (process-drawable-reserved-method-158 () none) ;; 158 ;; (process-drawable-reserved-method-158 () none) + (process-drawable-reserved-method-159 () none) ;; 159 ;; (process-drawable-reserved-method-159 () none) + (process-drawable-reserved-method-160 () none) ;; 160 ;; (process-drawable-reserved-method-160 () none) + (process-drawable-reserved-method-161 () none) ;; 161 ;; (process-drawable-reserved-method-161 () none) + (process-drawable-reserved-method-162 () none) ;; 162 ;; (process-drawable-reserved-method-162 () none) + (process-drawable-reserved-method-163 () none) ;; 163 ;; (process-drawable-reserved-method-163 () none) + (process-drawable-reserved-method-164 () none) ;; 164 ;; (process-drawable-reserved-method-164 () none) + (process-drawable-reserved-method-165 () none) ;; 165 ;; (process-drawable-reserved-method-165 () none) + (process-drawable-reserved-method-166 () none) ;; 166 ;; (process-drawable-reserved-method-166 () none) + (process-drawable-reserved-method-167 () none) ;; 167 ;; (process-drawable-reserved-method-167 () none) + (process-drawable-reserved-method-168 () none) ;; 168 ;; (process-drawable-reserved-method-168 () none) + (process-drawable-reserved-method-169 () none) ;; 169 ;; (process-drawable-reserved-method-169 () none) + (process-drawable-reserved-method-170 () none) ;; 170 ;; (process-drawable-reserved-method-170 () none) + (process-drawable-reserved-method-171 () none) ;; 171 ;; (process-drawable-reserved-method-171 () none) + (process-drawable-reserved-method-172 () none) ;; 172 ;; (process-drawable-reserved-method-172 () none) + (process-drawable-reserved-method-173 () none) ;; 173 ;; (process-drawable-reserved-method-173 () none) + (process-drawable-reserved-method-174 () none) ;; 174 ;; (process-drawable-reserved-method-174 () none) + (process-drawable-reserved-method-175 () none) ;; 175 ;; (process-drawable-reserved-method-175 () none) + (process-drawable-reserved-method-176 () none) ;; 176 ;; (process-drawable-reserved-method-176 () none) + (process-drawable-reserved-method-177 () none) ;; 177 ;; (process-drawable-reserved-method-177 () none) + (process-drawable-reserved-method-178 () none) ;; 178 ;; (process-drawable-reserved-method-178 () none) + (process-drawable-reserved-method-179 () none) ;; 179 ;; (process-drawable-reserved-method-179 () none) + (process-drawable-reserved-method-180 () none) ;; 180 ;; (process-drawable-reserved-method-180 () none) + (process-drawable-reserved-method-181 () none) ;; 181 ;; (process-drawable-reserved-method-181 () none) + (process-drawable-reserved-method-182 () none) ;; 182 ;; (process-drawable-reserved-method-182 () none) + (process-drawable-reserved-method-183 () none) ;; 183 ;; (process-drawable-reserved-method-183 () none) + (process-drawable-reserved-method-184 () none) ;; 184 ;; (process-drawable-reserved-method-184 () none) + (process-drawable-reserved-method-185 () none) ;; 185 ;; (process-drawable-reserved-method-185 () none) + (process-drawable-reserved-method-186 () none) ;; 186 ;; (process-drawable-reserved-method-186 () none) + (process-drawable-reserved-method-187 () none) ;; 187 ;; (process-drawable-reserved-method-187 () none) + (process-drawable-reserved-method-188 () none) ;; 188 ;; (process-drawable-reserved-method-188 () none) + (process-drawable-reserved-method-189 () none) ;; 189 ;; (process-drawable-reserved-method-189 () none) + (process-drawable-reserved-method-190 () none) ;; 190 ;; (process-drawable-reserved-method-190 () none) + (process-drawable-reserved-method-191 () none) ;; 191 ;; (process-drawable-reserved-method-191 () none) + (process-drawable-reserved-method-192 () none) ;; 192 ;; (process-drawable-reserved-method-192 () none) + (process-drawable-reserved-method-193 () none) ;; 193 ;; (process-drawable-reserved-method-193 () none) + (process-drawable-reserved-method-194 () none) ;; 194 ;; (process-drawable-reserved-method-194 () none) + (process-drawable-reserved-method-195 () none) ;; 195 ;; (process-drawable-reserved-method-195 () none) + (process-drawable-reserved-method-196 () none) ;; 196 ;; (process-drawable-reserved-method-196 () none) + (process-drawable-reserved-method-197 () none) ;; 197 ;; (process-drawable-reserved-method-197 () none) + (process-drawable-reserved-method-198 () none) ;; 198 ;; (process-drawable-reserved-method-198 () none) + (process-drawable-reserved-method-199 () none) ;; 199 ;; (process-drawable-reserved-method-199 () none) + (process-drawable-reserved-method-200 () none) ;; 200 ;; (process-drawable-reserved-method-200 () none) + (process-drawable-reserved-method-201 () none) ;; 201 ;; (process-drawable-reserved-method-201 () none) + (process-drawable-reserved-method-202 () none) ;; 202 ;; (process-drawable-reserved-method-202 () none) + (process-drawable-reserved-method-203 () none) ;; 203 ;; (process-drawable-reserved-method-203 () none) + (process-drawable-reserved-method-204 () none) ;; 204 ;; (process-drawable-reserved-method-204 () none) + (process-drawable-reserved-method-205 () none) ;; 205 ;; (process-drawable-reserved-method-205 () none) + (process-drawable-reserved-method-206 () none) ;; 206 ;; (process-drawable-reserved-method-206 () none) + (process-drawable-reserved-method-207 () none) ;; 207 ;; (process-drawable-reserved-method-207 () none) + (process-drawable-reserved-method-208 () none) ;; 208 ;; (process-drawable-reserved-method-208 () none) + (process-drawable-reserved-method-209 () none) ;; 209 ;; (process-drawable-reserved-method-209 () none) + (process-drawable-reserved-method-210 () none) ;; 210 ;; (process-drawable-reserved-method-210 () none) + (process-drawable-reserved-method-211 () none) ;; 211 ;; (process-drawable-reserved-method-211 () none) + (process-drawable-reserved-method-212 () none) ;; 212 ;; (process-drawable-reserved-method-212 () none) + (process-drawable-reserved-method-213 () none) ;; 213 ;; (process-drawable-reserved-method-213 () none) + (process-drawable-reserved-method-214 () none) ;; 214 ;; (process-drawable-reserved-method-214 () none) + (process-drawable-reserved-method-215 () none) ;; 215 ;; (process-drawable-reserved-method-215 () none) + (process-drawable-reserved-method-216 () none) ;; 216 ;; (process-drawable-reserved-method-216 () none) + (process-drawable-reserved-method-217 () none) ;; 217 ;; (process-drawable-reserved-method-217 () none) + (process-drawable-reserved-method-218 () none) ;; 218 + (process-drawable-reserved-method-219 () none) ;; 219 + (process-drawable-reserved-method-220 () none) ;; 220 + (process-drawable-reserved-method-221 () none) ;; 221 + (process-drawable-reserved-method-222 () none) ;; 222 + (process-drawable-reserved-method-223 () none) ;; 223 + (process-drawable-reserved-method-224 () none) ;; 224 + (process-drawable-reserved-method-225 () none) ;; 225 + (process-drawable-reserved-method-226 () none) ;; 226 + (process-drawable-reserved-method-227 () none) ;; 227 + (process-drawable-reserved-method-228 () none) ;; 228 + (process-drawable-reserved-method-229 () none) ;; 229 + (process-drawable-reserved-method-230 () none) ;; 230 + (process-drawable-reserved-method-231 () none) ;; 231 + (process-drawable-reserved-method-232 () none) ;; 232 + (process-drawable-reserved-method-233 () none) ;; 233 + (process-drawable-reserved-method-234 () none) ;; 234 + (process-drawable-reserved-method-235 () none) ;; 235 + (process-drawable-reserved-method-236 () none) ;; 236 + (process-drawable-reserved-method-237 () none) ;; 237 + (process-drawable-reserved-method-238 () none) ;; 238 + (process-drawable-reserved-method-239 () none) ;; 239 + (process-drawable-reserved-method-240 () none) ;; 240 + (process-drawable-reserved-method-241 () none) ;; 241 + (process-drawable-reserved-method-242 () none) ;; 242 + (process-drawable-reserved-method-243 () none) ;; 243 + (process-drawable-reserved-method-244 () none) ;; 244 + (process-drawable-reserved-method-245 () none) ;; 245 + (process-drawable-reserved-method-246 () none) ;; 246 + (process-drawable-reserved-method-247 () none) ;; 247 + ) + ) + +(deftype attack-dir-info (structure) + "Information about the position/direction of an attack." + ((dir vector :inline :offset-assert 0) + (xz-dir vector :inline :offset-assert 16) + (attacker-velocity vector :inline :offset-assert 32) + (pos vector :inline :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +(defenum attack-mask + :bitfield #t + :type uint32 + (trans 0) ;; 1 + (vector 1) ;; 2 + (intersection 2) ;; 4 + (attacker 3) ;; 8 + (attack-time 4) ;; 16 + (invinc-time 5) ;; 32 + (mode 6) ;; 64 + (shove-back 7) ;; 128 + (shove-up 8) ;; 256 + (speed 9) ;; 512 + (dist 10) ;; 1024 + (control 11) ;; 2048 + (angle 12) ;; 4096 + (rotate-to 13) ;; 8192 + (prev-state 14) ;; 16384 + (id 15) ;; 32768 + (count 16) ;; hi 1 + (penetrate-using 17) ;; hi 2 + (attacker-velocity 18);; hi 4 + (damage 19) ;; hi 8 + (shield-damage 20) ;; hi16 + (vehicle-damage-factor 21) ;; hi 32 + (vehicle-impulse-factor 22) ;; hi 64 + (knock 23) + (test 24) + ) + +(deftype attack-info (structure) + "Information about an incoming attack." + ((trans vector :inline :offset-assert 0) + (vector vector :inline :offset-assert 16) + (attacker-velocity vector :inline :offset-assert 32) + (intersection vector :inline :offset-assert 48) + (attacker handle :offset-assert 64) + (attack-time time-frame :offset-assert 72) ;; time-frame + (invinc-time time-frame :offset-assert 80) ;; time-frame + (mask attack-mask :offset-assert 88) ;; attack-mask + (mode symbol :offset-assert 92) ;; guessed by decompiler + (shove-back meters :offset-assert 96) + (shove-up meters :offset-assert 100) + (speed meters :offset-assert 104) + (dist meters :offset-assert 108) + (control float :offset-assert 112) + (angle symbol :offset-assert 116) ;; guessed by decompiler + (rotate-to degrees :offset-assert 120) ;; degrees + (prev-state state :offset-assert 124) ;; guessed by decompiler + (id uint32 :offset-assert 128) + (wpn-type uint8 :offset-assert 132) + (penetrate-using penetrate :offset-assert 136) ;; penetrate + (damage float :offset-assert 144) + (shield-damage float :offset-assert 148) + (vehicle-damage-factor float :offset-assert 152) + (vehicle-impulse-factor float :offset-assert 156) + (knock knocked-type :offset-assert 160) ;; knocked-type + (test symbol :offset-assert 164) ;; guessed by decompiler + ) + :method-count-assert 10 + :size-assert #xa8 + :flag-assert #xa000000a8 + ;; field handle is likely a value type. + (:methods + (attack-info-method-9 () none) ;; 9 ;; (attack-info-method-9 (_type_ attack-info process-drawable process-drawable) none) + ) + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; script-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-type script-context structure) +(declare-type load-state structure) + +(deftype script-form (structure) + ((name symbol :offset-assert 0) ;; guessed by decompiler + (spec pair :offset-assert 4) ;; guessed by decompiler + (func (function script-context object) :offset-assert 8) ;; guessed by decompiler + ) + :method-count-assert 10 + :size-assert #xc + :flag-assert #xa0000000c + (:methods + (script-form-method-9 () none) ;; 9 ;; (script-form-method-9 () none) + ) + ) + +(deftype script-context (structure) + ((load-state load-state :offset-assert 0) ;; guessed by decompiler + (key object :offset-assert 4) ;; guessed by decompiler + (process process :offset-assert 8) ;; guessed by decompiler + (trans vector :offset-assert 12) + (side-effect? symbol :offset-assert 16) ;; guessed by decompiler + (got-error? symbol :offset-assert 20) ;; guessed by decompiler + (expr pair :offset-assert 24) ;; guessed by decompiler + (param-count int32 :offset-assert 28) + (param object 16 :offset-assert 32) ;; guessed by decompiler + ;;(UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (param-type object 16 :offset-assert 96) ;; guessed by decompiler + ;;(UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 12 + :size-assert #xa0 + :flag-assert #xc000000a0 + ;; field key uses ~A with a signed load. field expr uses ~A with a signed load. + (:methods + (new (symbol type object process vector) _type_) ;; 0 + (eval! (_type_ pair) object) ;; 9 + (script-context-method-10 (_type_ object pair) object) ;; 10 + (script-context-method-11 (_type_ pair pair symbol) symbol) ;; 11 + ) + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; scene-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-type continue-point basic) +(declare-type scene-player process) + +(deftype scene-actor (basic) + ((name string :offset-assert 4) ;; guessed by decompiler + (level symbol :offset-assert 8) ;; guessed by decompiler + (art-group string :offset-assert 12) ;; guessed by decompiler + (prefix string :offset-assert 16) ;; guessed by decompiler + (draw-frames pair :offset-assert 20) ;; guessed by decompiler + (scissor-frames pair :offset-assert 24) ;; guessed by decompiler + (shadow-frames pair :offset-assert 28) ;; guessed by decompiler + (cloth-reset-frames pair :offset-assert 32) ;; guessed by decompiler + (cloth-commands pair :offset-assert 36) ;; guessed by decompiler + (camera int16 :offset-assert 40) + (light-index uint8 :offset-assert 42) + (shadow-mask uint8 :offset-assert 43) + (shadow-values uint32 :offset-assert 44) + (flags uint32 :offset-assert 48) + (command-list pair :offset-assert 52) ;; guessed by decompiler + (shadow-flags int32 :offset-assert 56) + (shadow-volume-joint basic :offset-assert 60) + (draw-seg uint64 :offset-assert 64) + (no-draw-seg uint64 :offset-assert 72) + (last-frame float :offset-assert 80) + (process handle :offset-assert 88) ;; handle + ) + :method-count-assert 10 + :size-assert #x60 + :flag-assert #xa00000060 + (:methods + (setup-manipy-for-scene! (_type_ scene-player) (pointer process)) ;; 9 + ) + ) + +;; +++scene-h:scene-flags +(defenum scene-flags + :bitfield #t + :type uint32 + (scf0 0) + (scf1 1) + (scf2 2) + (scf3 3) + (scf4 4) + (scf5 5) + (scf6 6) + (scf7 7) + (scf8 8) + (scf9 9) + (scf10 10) + (scf11 11) + (scf12 12) + (scf13 13) + (scf14 14) + (scf15 15) + ) +;; ---scene-h:scene-flags + +(deftype scene (art-group) + ((scene-flags scene-flags :offset-assert 32) ;; guessed by decompiler + (mask-to-clear process-mask :offset-assert 36) ;; guessed by decompiler + (entity string :offset-assert 40) ;; guessed by decompiler + (art-group string :offset-assert 44) ;; guessed by decompiler + (anim string :offset-assert 48) ;; guessed by decompiler + (parts int32 :offset-assert 52) + (command-list pair :offset-assert 56) ;; guessed by decompiler + (cut-list pair :offset-assert 60) ;; guessed by decompiler + (wait-max-time time-frame :offset-assert 64) ;; time-frame + (wait-air-time time-frame :offset-assert 72) ;; time-frame + (wait-ground-time time-frame :offset-assert 80) ;; time-frame + (actor (array scene-actor) :offset-assert 88) ;; guessed by decompiler + (load-point basic :offset-assert 92) + (end-point basic :offset-assert 96) + (borrow pair :offset-assert 100) ;; guessed by decompiler + (sfx-volume float :offset-assert 104) + (ambient-volume float :offset-assert 108) + (music-volume float :offset-assert 112) + (music-delay float :offset-assert 116) + (scene-task uint16 :offset-assert 120) + (on-running pair :offset-assert 124) ;; guessed by decompiler + (on-complete pair :offset-assert 128) ;; guessed by decompiler + (vehicles basic :offset-assert 132) + (ipu basic :offset-assert 136) + ) + :method-count-assert 18 + :size-assert #x8c + :flag-assert #x120000008c + ;; field on-running uses ~A with a signed load. field on-complete uses ~A with a signed load. + (:methods + (scene-method-16 () none) ;; 16 ;; (init-spool-by-scene! (_type_ spool-anim) spool-anim) + (scene-method-17 () none) ;; 17 ;; (load-scene (_type_) scene) + ) + ) + +(deftype scene-player (process-drawable) + ((scene-list (array scene) :offset-assert 248) ;; guessed by decompiler + (scene scene :offset-assert 252) ;; guessed by decompiler + (scene-index int32 :offset-assert 256) + (anim spool-anim :offset-assert 260) ;; guessed by decompiler + (next-anim spool-anim :offset-assert 264) ;; guessed by decompiler + (camera handle :offset-assert 272) ;; handle + (main-entity entity-actor :offset-assert 280) ;; guessed by decompiler + (wait symbol :offset-assert 284) ;; guessed by decompiler + (old-target-pos transformq :inline :offset-assert 288) + (pre-cut-frame basic :offset-assert 336) + (preload-continue string :offset-assert 340) ;; guessed by decompiler + (preload-sound basic :offset-assert 344) + (dma-max uint32 :offset-assert 348) + (gui-id sound-id :offset-assert 352) ;; guessed by decompiler + (aborted? symbol :offset-assert 356) ;; guessed by decompiler + (scene-start-time time-frame :offset-assert 360) ;; time-frame + (targ-speed float :offset-assert 368) + (cur-speed float :offset-assert 372) + (speed-change-time time-frame :offset-assert 376) ;; time-frame + (speed-press-time time-frame :offset-assert 384) ;; time-frame + (speed-change-speed float :offset-assert 392) + (subtitle-change-time time-frame :offset-assert 400) ;; time-frame + (user-sound sound-id 4 :offset-assert 408) ;; guessed by decompiler + (last-frame float :offset-assert 424) + (end-point basic :offset-assert 428) + (blackout-end basic :offset-assert 432) + (new-trans-hook (function none) :offset-assert 436) ;; guessed by decompiler + (cur-trans-hook (function none) :offset-assert 440) ;; guessed by decompiler + (user-data uint64 :offset-assert 448) + ) + :method-count-assert 56 + :size-assert #x1c8 + :flag-assert #x38014001c8 + ;; field user-data uses ~A with a 64-bit load. + (:methods + (scene-player-method-50 () none) ;; 50 + (scene-player-method-51 () none) ;; 51 + (scene-player-method-52 () none) ;; 52 + (scene-player-method-53 () none) ;; 53 + (scene-player-method-54 () none) ;; 54 + (scene-player-method-55 () none) ;; 55 + ) + ) + +(define-extern *scene-player* (pointer scene-player)) +(define-extern *debug-menu-scene-play* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; pov-camera-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; +++pov-camera-h:pov-camera-flag +(defenum pov-camera-flag + :bitfield #t + :type int32 + (notify-of-abort 0) + (allow-abort 1) + (inherit-orientation 2) + (pcf3 3) + ) +;; ---pov-camera-h:pov-camera-flag + +(deftype pov-camera (process-drawable) + ((flags pov-camera-flag :offset-assert 248) ;; pov-camera-flag + (debounce-start-time time-frame :offset-assert 256) ;; time-frame + (notify-handle handle :offset-assert 264) ;; handle + (anim-name string :offset-assert 272) ;; guessed by decompiler + (command-list pair :offset-assert 276) ;; guessed by decompiler + (mask-to-clear process-mask :offset-assert 280) ;; guessed by decompiler + (music-volume-movie float :offset-assert 284) + (sfx-volume-movie float :offset-assert 288) + ) + :method-count-assert 60 + :size-assert #x124 + :flag-assert #x3c00a00124 + (:methods + (pov-camera-method-50 () none) ;; 50 + (pov-camera-method-51 () none) ;; 51 + (pov-camera-method-52 () none) ;; 52 + (pov-camera-method-53 () none) ;; 53 + (pov-camera-method-54 () none) ;; 54 + (pov-camera-method-55 () none) ;; 55 + (pov-camera-method-56 () none) ;; 56 + (pov-camera-method-57 () none) ;; 57 + (pov-camera-method-58 () none) ;; 58 + (pov-camera-method-59 () none) ;; 59 + ) + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; smush-control-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype smush-control (structure) + "This holds information about the current state of an object's smush." + ((start-time time-frame :offset-assert 0) ;; time-frame + (period float :offset-assert 8) + (duration float :offset-assert 12) + (amp float :offset-assert 16) + (damp-amp float :offset-assert 20) + (damp-period float :offset-assert 24) + (ticks float :offset-assert 28) + ) + :method-count-assert 15 + :size-assert #x20 + :flag-assert #xf00000020 + (:methods + (set-zero! "Reset this [[smush-control]]." (_type_) _type_) ;; 9 + (update! "Calculate the next smush amplitude and update the smush state." (_type_) float) ;; 10 + (get-no-update "Get the next amplitude, but do not update the smush state." (_type_) float) ;; 11 + (activate! "Start the smush with the given parameters." (_type_ float int int float float clock) _type_) ;; 12 + (nonzero-amplitude? "Is the smush currently active?" (_type_) symbol) ;; 13 + (die-on-next-update! "Set the dampening period so the smush stops on the next update." (_type_) _type_) ;; 14 + ) + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; debug-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype pos-history (structure) + ((points (inline-array vector) :offset-assert 0) ;; guessed by decompiler + (num-points int32 :offset-assert 4) + (h-first int32 :offset-assert 8) + (h-last int32 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype debug-vertex (structure) + ((trans vector4w :inline :offset-assert 0) + (normal vector3h :inline :offset-assert 16) + (st vector2h :inline :offset-assert 22) + (color uint32 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype debug-vertex-stats (basic) + ((length int32 :offset-assert 4) + (pos-count int32 :offset-assert 8) + (vertex debug-vertex 600 :inline :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x4b10 + :flag-assert #x900004b10 + ) + +(deftype stack-debug (structure) + ((r29 uint128 :offset-assert 0) + (r31 uint128 :offset-assert 16) + (test-count int32 :offset-assert 32) + (visit int32 :offset-assert 36) + (obj basic :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ;; field obj uses ~A with a signed load. + ) + +(define-extern *color-black* rgba) +(define-extern *color-white* rgba) +(define-extern *color-gray* rgba) +(define-extern *color-red* rgba) +(define-extern *color-green* rgba) +(define-extern *color-blue* rgba) +(define-extern *color-cyan* rgba) +(define-extern *color-magenta* rgba) +(define-extern *color-yellow* rgba) +(define-extern *color-purple* rgba) +(define-extern *color-light-gray* rgba) +(define-extern *color-light-red* rgba) +(define-extern *color-light-green* rgba) +(define-extern *color-light-blue* rgba) +(define-extern *color-light-cyan* rgba) +(define-extern *color-light-magenta* rgba) +(define-extern *color-light-yellow* rgba) +(define-extern *color-dark-red* rgba) +(define-extern *color-dark-green* rgba) +(define-extern *color-dark-blue* rgba) +(define-extern *color-dark-cyan* rgba) +(define-extern *color-dark-magenta* rgba) +(define-extern *color-dark-yellow* rgba) +(define-extern *color-orange* rgba) +;; (define-extern draw-debug-text-3d function) +;; (define-extern draw-debug-x function) +;; (define-extern draw-debug-line function) +;; (define-extern draw-debug-vector function) +;; (define-extern draw-debug-flat-triangle function) +;; (define-extern draw-debug-sphere function) +;; (define-extern draw-debug-matrix function) +;; (define-extern draw-debug-box-with-transform function) +;; (define-extern draw-debug-line-sphere function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; joint-mod-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype joint-mod (basic) + ((mode joint-mod-mode :offset-assert 4) ;; guessed by decompiler + (process process-drawable :offset-assert 8) ;; guessed by decompiler + (joint cspace :offset-assert 12) + (target vector :inline :offset-assert 16) + (twist vector :inline :offset-assert 32) + (twist-max vector :inline :offset-assert 48) + (extra-twist deg :offset-assert 40) ;; degrees + (track-mode track-mode :offset-assert 44) + (look-at-count uint16 :offset-assert 46) + (twist-range-x meters :offset-assert 56) + (twist-range-y meters :offset-assert 60) + (twist-speed-x float :offset-assert 64) + (twist-speed-y float :offset-assert 68) + (trans vector :inline :offset-assert 80) + (smushy-old float :offset-assert 80) + (smushy-off float :offset-assert 84) + (smushyv float :offset-assert 88) + (quat quaternion :inline :offset-assert 96) + (scale vector :inline :offset-assert 112) + (notice-time uint64 :offset-assert 128) ;; time-frame + (flex-blend float :offset-assert 136) + (blend float :offset-assert 140) + (old-blend float :offset-assert 144) + (max-dist meters :offset-assert 148) + (ignore-angle deg :offset-assert 152) ;; degrees + (up uint8 :offset-assert 156) + (nose uint8 :offset-assert 157) + (ear uint8 :offset-assert 158) + (base-joint uint8 :offset-assert 159) + (base-nose uint8 :offset-assert 160) + (shutting-down? symbol :offset-assert 164) ;; guessed by decompiler + (parented-scale? symbol :offset-assert 168) ;; guessed by decompiler + ) + :method-count-assert 16 + :size-assert #xac + :flag-assert #x10000000ac + ;; field track-mode is likely a value type. + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type joint-mod-mode process-drawable int) _type_) + (joint-mod-method-9 () none) ;; 9 ;; (mode-set! (_type_ joint-mod-mode) none) + (joint-mod-method-10 () none) ;; 10 ;; (target-set! (_type_ vector) none) + (joint-mod-method-11 () none) ;; 11 ;; (look-at! (_type_ vector symbol process) none) + (joint-mod-method-12 () none) ;; 12 ;; (reset-blend! (_type_) _type_) + (joint-mod-method-13 () none) ;; 13 ;; (twist-set! (_type_ float float float) vector) + (joint-mod-method-14 () none) ;; 14 ;; (trs-set! (_type_ vector quaternion vector) none) + (joint-mod-method-15 () none) ;; 15 ;; (shut-down (_type_) none) + ) + ) +|# + +#| +(deftype try-to-look-at-info (basic) + ((who uint64 :offset-assert 8) ;; handle + (horz float :offset-assert 16) + (vert float :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) +|# + +#| +(deftype joint-mod-spinner (basic) + ((spin-axis vector :inline :offset-assert 16) + (angle float :offset-assert 32) + (spin-rate float :offset-assert 36) + (enable symbol :offset-assert 40) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype joint-mod-base (structure) + ((flags uint16 :offset-assert 0) ;; joint-mod-base-flags + (node-index int16 :offset-assert 2) + (proc (pointer process-drawable) :offset-assert 4) ;; guessed by decompiler + (callback (function cspace transformq none) :offset-assert 8) ;; guessed by decompiler + ) + :method-count-assert 12 + :size-assert #xc + :flag-assert #xc0000000c + (:methods + (joint-mod-base-method-9 () none) ;; 9 ;; (init (_type_ process-drawable uint joint-mod-base-flags) none) + (joint-mod-base-method-10 () none) ;; 10 ;; (attach-callback (_type_) none) + (joint-mod-base-method-11 () none) ;; 11 ;; (remove-callback (_type_) none) + ) + ) +|# + +#| +(deftype joint-mod-rotate-local (joint-mod-base) + ((rotation quaternion :inline :offset-assert 16) + ) + :method-count-assert 12 + :size-assert #x20 + :flag-assert #xc00000020 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type) _type_) + ) + ) +|# + +#| +(deftype joint-mod-trans-rot-local (joint-mod-base) + ((trans vector :inline :offset-assert 16) + (rot quaternion :inline :offset-assert 32) + ) + :method-count-assert 12 + :size-assert #x30 + :flag-assert #xc00000030 + ) +|# + +#| +(deftype joint-mod-rotate-world (joint-mod-base) + ((rotation quaternion :inline :offset-assert 16) + ) + :method-count-assert 12 + :size-assert #x20 + :flag-assert #xc00000020 + ) +|# + +#| +(deftype joint-mod-set-local (joint-mod-base) + ((transform transformq :inline :offset-assert 16) + ) + :method-count-assert 12 + :size-assert #x40 + :flag-assert #xc00000040 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type) _type_) + ) + ) +|# + +#| +(deftype joint-mod-add-local (joint-mod-base) + ((transform transformq :inline :offset-assert 16) + ) + :method-count-assert 12 + :size-assert #x40 + :flag-assert #xc00000040 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type) _type_) + ) + ) +|# + +#| +(deftype joint-mod-set-world (joint-mod-base) + ((transform transformq :inline :offset-assert 16) + ) + :method-count-assert 12 + :size-assert #x40 + :flag-assert #xc00000040 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type) _type_) + ) + ) +|# + +#| +(deftype joint-mod-set-world-no-trans (joint-mod-base) + ((transform transformq :inline :offset-assert 16) + ) + :method-count-assert 12 + :size-assert #x40 + :flag-assert #xc00000040 + ) +|# + +#| +(deftype joint-mod-blend-local (joint-mod-base) + ((transform transformq :inline :offset-assert 16) + (blend-transform transformq :inline :offset-assert 64) + (blend float :offset-assert 112) + ) + :method-count-assert 12 + :size-assert #x74 + :flag-assert #xc00000074 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type) _type_) + ) + ) +|# + +#| +(deftype joint-mod-blend-world (joint-mod-base) + ((transform transformq :inline :offset-assert 16) + (blend-transform transformq :inline :offset-assert 64) + (blend float :offset-assert 112) + ) + :method-count-assert 12 + :size-assert #x74 + :flag-assert #xc00000074 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type) _type_) + ) + ) +|# + +#| +(deftype joint-mod-ik (basic) + ((flags uint8 :offset-assert 4) ;; joint-mod-ik-flags + (elbow-pole-vector-axis int8 :offset-assert 5) ;; uint32 + (elbow-rotation-axis int8 :offset-assert 6) ;; uint32 + (elbow-node int8 :offset-assert 7) + (process process-drawable :offset-assert 8) ;; guessed by decompiler + (callback (function joint-mod-ik matrix matrix vector object) :offset-assert 12) ;; guessed by decompiler + (handle-pos vector :inline :offset-assert 16) + (hand-dist float :offset-assert 32) + (blend float :offset-assert 36) + ) + :method-count-assert 11 + :size-assert #x28 + :flag-assert #xb00000028 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type process-drawable int float) _type_) + (joint-mod-ik-method-9 () none) ;; 9 ;; (set-ik-target! (_type_ vector) none) + (joint-mod-ik-method-10 () none) ;; 10 ;; (enable-set! (_type_ symbol) none) + ) + ) +|# + +#| +(deftype ik-limb-setup (structure) + ((elbow-index int32 :offset-assert 0) + (hand-dist float :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype joint-mod-polar-look-at (basic) + ((flags joint-mod-polar-flags :offset-assert 4) ;; guessed by decompiler + (ear int8 :offset-assert 8) + (up int8 :offset-assert 9) + (nose int8 :offset-assert 10) + (polar-internal-tilt-max float :offset-assert 12) + (polar-internal-radius float :offset-assert 16) + (polar-external-tilt-max float :offset-assert 20) + (polar-external-radius float :offset-assert 24) + (upward-tilt float :offset-assert 28) + (downward-tilt float :offset-assert 32) + (forward-twist float :offset-assert 36) + (backward-twist float :offset-assert 40) + (target vector :inline :offset-assert 48) + (blend-duration uint64 :offset-assert 64) ;; time-frame + (blend-start-time uint64 :offset-assert 72) ;; time-frame + (blend-start-value float :offset-assert 80) + (blend-max float :offset-assert 84) + ) + :method-count-assert 15 + :size-assert #x58 + :flag-assert #xf00000058 + (:methods + (joint-mod-polar-look-at-method-9 () none) ;; 9 ;; (initialize (_type_ process-drawable int) none) + (joint-mod-polar-look-at-method-10 () none) ;; 10 ;; (set-target! (_type_ vector) none) + (joint-mod-polar-look-at-method-11 () none) ;; 11 ;; (set-both-targets! (_type_ joint-mod-polar-look-at vector) none) + (joint-mod-polar-look-at-method-12 () none) ;; 12 ;; (blend-on! (_type_ time-frame float symbol) none) + (joint-mod-polar-look-at-method-13 () none) ;; 13 ;; (blend-to-off! (_type_ time-frame symbol) none) + (joint-mod-polar-look-at-method-14 () none) ;; 14 ;; (get-start-blend! (_type_) float) + ) + ) +|# + +;; (define-extern joint-mod-debug-draw function) ;; (function joint-mod none) +;; (define-extern joint-mod-spinner-callback function) ;; (function cspace transformq none) +;; (define-extern joint-mod-rotate-local-callback function) ;; (function cspace transformq none) +;; (define-extern joint-mod-trans-rot-local-callback function) +;; (define-extern vector<-cspace2! function) ;; (function vector cspace vector) +;; (define-extern joint-mod-rotate-world-callback function) ;; (function cspace transformq none) +;; (define-extern joint-mod-set-local-callback function) ;; (function cspace transformq none) +;; (define-extern joint-mod-add-local-callback function) ;; (function cspace transformq none) +;; (define-extern joint-mod-set-world-callback function) ;; (function cspace transformq none) +;; (define-extern joint-mod-set-world-no-trans-callback function) ;; (function cspace transformq none) +;; (define-extern joint-mod-blend-local-callback function) ;; (function cspace transformq none) +;; (define-extern joint-mod-blend-world-callback function) ;; (function cspace transformq none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; collide-func-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; collide-mesh-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype collide-tri-result (structure) + "A triangle result of a collision." + ((vertex vector 3 :inline :offset-assert 0) ;; guessed by decompiler + (intersect vector :inline :offset-assert 48) + (normal vector :inline :offset-assert 64) + (pat pat-surface :offset-assert 80) ;; guessed by decompiler + (collide-ptr basic :offset-assert 84) + ) + :method-count-assert 9 + :size-assert #x58 + :flag-assert #x900000058 + ) + +(deftype collide-mesh-tri (structure) + "A triangle for foreground collision meshes." + ((vertex-index uint8 3 :offset-assert 0) ;; guessed by decompiler + (unused uint8 :offset-assert 3) + (pat pat-surface :offset-assert 4) ;; guessed by decompiler + ) + :pack-me + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(declare-type collide-mesh-cache-tri structure) +(deftype collide-mesh (basic) + "A collision mesh for foreground objects, + bound to the joint specified by `joint-id`." + ((joint-id int32 :offset-assert 4) + (num-tris uint32 :offset-assert 8) + (num-verts uint32 :offset-assert 12) + (vertex-data (inline-array vector) :offset-assert 16) ;; guessed by decompiler + (tris collide-mesh-tri 1 :inline :offset 32) ;; guessed by decompiler + ) + :method-count-assert 15 + :size-assert #x28 + :flag-assert #xf00000028 + (:methods + (collide-mesh-method-9 () none) ;; 9 ;; (debug-draw-tris (_type_ process-drawable int) none) + (collide-mesh-method-10 () none) ;; 10 ;; (overlap-test (_type_ collide-mesh-cache-tri vector) symbol) + (collide-mesh-method-11 () none) ;; 11 ;; (should-push-away-test (_type_ collide-mesh-cache-tri collide-tri-result vector float) float) + (collide-mesh-method-12 () none) ;; 12 ;; (sphere-on-platform-test (_type_ collide-mesh-cache-tri collide-tri-result vector float) float) + (collide-mesh-method-13 () none) ;; 13 ;; (unpack-mesh-to-cache! (_type_ (inline-array collide-mesh-cache-tri) matrix) none) + (collide-mesh-method-14 () none) ;; 14 ;; (collide-mesh-math-1 (_type_ object object) none) + ) + ) + +(deftype collide-mesh-cache-tri (structure) + "A triangle stored in the foreground mesh collide cache." + ((vertex vector 3 :inline :offset-assert 0) ;; guessed by decompiler + (normal vector :inline :offset-assert 48) + (bbox4w bounding-box4w :inline :offset-assert 64) + (pat pat-surface :offset 60 :score 1) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x60 + :flag-assert #x900000060 + ) + +(deftype collide-mesh-cache-entry (structure) + "A foreground mesh collide cache entry." + ((mat matrix :inline :offset-assert 0) + (tris collide-mesh-cache-tri :dynamic :offset-assert 64) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +(declare-type collide-shape-prim basic) +(declare-type collide-shape-prim-mesh collide-shape-prim) + +(deftype collide-mesh-cache (basic) + "A collide cache for foreground meshes." + ((used-size uint32 :offset-assert 4) + (max-size uint32 :offset-assert 8) + (id uint32 :offset-assert 12) + (data uint8 48000 :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 13 + :size-assert #xbb90 + :flag-assert #xd0000bb90 + (:methods + (populate-for-prim-mesh (_type_ collide-shape-prim-mesh) collide-mesh-cache-entry) ;; 9 + (is-id? "Does this cache have the given ID?" (_type_ int) symbol) ;; 10 + (next-id! + "Reset all used entries in the cache and increment the ID. + If the id is zero, set it to 1." + (_type_) uint) ;; 11 + (allocate! (_type_ int) collide-mesh-cache-entry) ;; 12 + ) + ) + +(define-extern *collide-mesh-cache* collide-mesh-cache) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; collide-shape-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype collide-rider (structure) + ((rider-handle uint64 :offset-assert 0) ;; handle + (sticky-prim collide-shape-prim :offset-assert 8) ;; guessed by decompiler + (prim-ry float :offset-assert 12) + (rider-local-pos vector :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype collide-rider-pool (basic) + ((alloc-count int32 :offset-assert 4) + (riders collide-rider 20 :inline :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 11 + :size-assert #x290 + :flag-assert #xb00000290 + (:methods + (add-rider (_type_ handle) collide-rider) ;; 9 + (prepare (_type_) none) ;; 10 + ) + ) + +(declare-type collide-shape trsqv) +(declare-type collide-shape-moving collide-shape) + +(deftype pull-rider-info (structure) + ((rider collide-rider :offset-assert 0) + (rider-cshape collide-shape-moving :offset-assert 4) ;; guessed by decompiler + (rider-delta-ry float :offset-assert 8) + (rider-dest vector :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +;; +++collide-shape-h:overlaps-others-options +(defenum overlaps-others-options + :type uint32 + :bitfield #t + (oo0) + (oo1) + (oo2) + (oo3) + (oo4) + ) +;; ---collide-shape-h:overlaps-others-options + +;; +++collide-shape-h:collide-action +(defenum collide-action + :bitfield #t + :type uint32 + (solid 0) ;; 1 + (semi-solid 1) ;; 2 + (rideable 2) ;; 4 + (can-ride 3) ;; 8 + (dont-push-away 4) ;; 16 + (pull-rider-can-collide 5) ;; 32 + (deadly 6) ;; 64 + (persistent-attack 7) ;; 128 + (no-smack 8) ;; 256 + (no-standon 9) ;; 512 + (block-turn-around 10) ;; 1024 + (check-edge 11) ;; 2048 + (check-stuck 12) ;; 4096 + (stuck-wall-escape 13) ;; 8192 + (no-normal-reset 14) ;; 163884 + (edge-grabbed 15) ;; 32768 + (nav-sphere 16) ;; hi 1 + ) +;; ---collide-shape-h:collide-action + +(declare-type touching-list structure) + +(deftype overlaps-others-params (structure) + ((options overlaps-others-options :offset-assert 0) ;; guessed by decompiler + (collide-with-filter collide-spec :offset-assert 4) ;; guessed by decompiler + (tlist touching-list :offset-assert 8) ;; guessed by decompiler + (filtered-root-collide-with collide-spec :offset-assert 12) ;; guessed by decompiler + (filtered-child-collide-with collide-spec :offset-assert 16) ;; guessed by decompiler + (filtered-other-collide-as collide-spec :offset-assert 20) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) + +(deftype move-above-ground-params (structure) + ((gnd-collide-with collide-spec :offset-assert 0) ;; guessed by decompiler + (popup float :offset-assert 4) + (dont-move-if-overlaps? symbol :offset-assert 8) ;; guessed by decompiler + (hover-if-no-ground? symbol :offset-assert 12) ;; guessed by decompiler + (overlaps-params overlaps-others-params :inline :offset-assert 16) + (new-pos vector :inline :offset-assert 48) + (old-gspot-pos vector :inline :offset-assert 64) + (old-gspot-normal vector :inline :offset-assert 80) + (pat pat-surface :offset-assert 96) ;; guessed by decompiler + (on-ground? symbol :offset-assert 100) ;; guessed by decompiler + (do-move? symbol :offset-assert 104) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x6c + :flag-assert #x90000006c + ) + +(deftype collide-prim-core (structure) + "Collide primitives use this to store their world sphere and their collision flags." + ((world-sphere vector :inline :offset-assert 0) + (collide-as collide-spec :offset-assert 16) ;; guessed by decompiler + (collide-with collide-spec :offset-assert 20) ;; guessed by decompiler + (action collide-action :offset-assert 24) ;; guessed by decompiler + (prim-type int8 :offset-assert 28) + (unused1 uint8 3 :offset-assert 29) ;; guessed by decompiler + (quad uint128 2 :offset 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(declare-type collide-query structure) +(declare-type collide-cache basic) +(declare-type collide-cache-prim structure) +(declare-type collide-shape-prim-group basic) +(deftype collide-shape-prim (basic) + "Base class for collide primitives." + ((cshape collide-shape :offset-assert 4) ;; guessed by decompiler + (prim-id uint32 :offset-assert 8) + (transform-index int8 :offset-assert 12) + (unused2 int8 3 :offset-assert 13) ;; guessed by decompiler + (prim-core collide-prim-core :inline :offset-assert 16) + (local-sphere vector :inline :offset-assert 48) + (specific uint8 16 :offset-assert 64 :score -1) ;; guessed by decompiler + (world-sphere vector :inline :offset 16) + (collide-as collide-spec :offset 32) + (collide-with collide-spec :offset 36) + (action collide-action :offset 40) + (prim-type int8 :offset 44) + (radius meters :offset 60) + ) + :method-count-assert 20 + :size-assert #x50 + :flag-assert #x1400000050 + (:methods + (new (symbol type collide-shape uint int) _type_) ;; 0 + (debug-draw (_type_) none) ;; 9 + (add-fg-prim-using-box (_type_ collide-cache) none) ;; 10 + (add-fg-prim-using-line-sphere (_type_ collide-cache object) none) ;; 11 + (overlaps-others-test (_type_ overlaps-others-params collide-shape-prim) symbol) ;; 12 + (overlaps-others-group (_type_ overlaps-others-params collide-shape-prim-group) symbol) ;; 13 + (collide-shape-prim-method-14 () none) ;; 14 ;; (collide-shape-prim-method-14 () none) + (collide-with-collide-cache-prim-mesh (_type_ collide-query collide-cache-prim) none) ;; 15 + (collide-with-collide-cache-prim-sphere (_type_ collide-query collide-cache-prim) none) ;; 16 + (on-platform-test (_type_ collide-shape-prim collide-query float) none) ;; 17 + (should-push-away-test (_type_ collide-shape-prim collide-query) none) ;; 18 + (should-push-away-a-group-test (_type_ collide-shape-prim-group collide-query) none) ;; 19 + ) + ) + +(deftype collide-shape-prim-sphere (collide-shape-prim) + "A sphere primitive for collide shapes." + ((pat pat-surface :offset 64) ;; guessed by decompiler + (nav-radius float :offset 68) + (line-sphere-count int8 :offset 72) + (line-sphere-prim-id int8 :offset 73) + ) + :method-count-assert 20 + :size-assert #x50 + :flag-assert #x1400000050 + (:methods + (new (symbol type collide-shape uint) _type_) ;; 0 + ) + ) + +(deftype collide-shape-prim-mesh (collide-shape-prim) + "A mesh primitive for collide shapes." + ((mesh collide-mesh :offset 64) ;; guessed by decompiler + (mesh-id int32 :offset 68) + (mesh-cache-id uint32 :offset 72) + (mesh-cache-entry collide-mesh-cache-entry :offset 76) + ) + :method-count-assert 20 + :size-assert #x50 + :flag-assert #x1400000050 + (:methods + (new (symbol type collide-shape uint uint) _type_) ;; 0 + ) + ) + +(deftype collide-shape-prim-group (collide-shape-prim) + ((num-children uint8 :offset 64) + (num-alloc-children uint8 :offset 65) + (child (inline-array collide-shape-prim) :offset 68) ;; guessed by decompiler + ) + :method-count-assert 20 + :size-assert #x50 + :flag-assert #x1400000050 + (:methods + (new (symbol type collide-shape uint int) _type_) ;; 0 + ) + ) + +(declare-type collide-query structure) +(declare-type water-info structure) +(deftype collide-shape (trsqv) + "The parent of all of an object's collide primitives. + Most [[process-drawable]]s have a [[collide-shape]] that represents their root transform." + ((actor-hash-index int16 :offset 12) + (process process-drawable :offset-assert 140) ;; guessed by decompiler + (max-iteration-count uint8 :offset-assert 144) + (nav-flags uint8 :offset-assert 145) ;; nav-flags + (total-prims uint8 :offset-assert 146) + (num-riders uint8 :offset-assert 147) + (event-self symbol :offset 152) ;; guessed by decompiler + (event-other symbol :offset-assert 156) ;; guessed by decompiler + (root-prim collide-shape-prim :offset-assert 160) ;; guessed by decompiler + (riders (inline-array collide-rider) :offset-assert 164) ;; guessed by decompiler + (penetrate-using penetrate :offset-assert 168) + (penetrated-by penetrate :offset-assert 176) + (event-priority uint8 :offset 192) + (rider-max-momentum float :offset-assert 196) + ) + :method-count-assert 55 + :size-assert #xc8 + :flag-assert #x37000000c8 + ;; field penetrate is likely a value type. field penetrate is likely a value type. + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type process-drawable collide-list-enum) _type_) + (collide-shape-method-28 () none) ;; 28 ;; (move-by-vector! (_type_ vector) none) + (collide-shape-method-29 () none) ;; 29 ;; (move-to-point! (_type_ vector) none) + (collide-shape-method-30 () none) ;; 30 ;; (debug-draw (_type_) none) + (collide-shape-method-31 () none) ;; 31 ;; (fill-cache-for-shape (_type_ float collide-query) none) + (collide-shape-method-32 () none) ;; 32 ;; (fill-cache-integrate-and-collide (_type_ vector collide-query meters) none) + (collide-shape-method-33 () none) ;; 33 ;; (find-prim-by-id (_type_ uint) collide-shape-prim) + (collide-shape-method-34 () none) ;; 34 ;; (find-prim-by-id-logtest (_type_ uint) collide-shape-prim) + (collide-shape-method-35 () none) ;; 35 ;; (detect-riders! (_type_) symbol) + (collide-shape-method-36 () none) ;; 36 ;; (build-bounding-box-for-shape (_type_ bounding-box float collide-spec) symbol) + (collide-shape-method-37 () none) ;; 37 ;; (integrate-and-collide! (_type_ vector) none) + (collide-shape-method-38 () none) ;; 38 ;; (find-collision-meshes (_type_) none) + (collide-shape-method-39 () none) ;; 39 ;; (on-platform (_type_ collide-shape collide-query) symbol) + (collide-shape-method-40 () none) ;; 40 ;; (find-overlapping-shapes (_type_ overlaps-others-params) symbol) + (collide-shape-method-41 () none) ;; 41 ;; (shove-to-closest-point-on-path (_type_ attack-info float) vector) + (collide-shape-method-42 () none) ;; 42 ;; (should-push-away (_type_ collide-shape collide-query) symbol) + (collide-shape-method-43 () none) ;; 43 ;; (pull-rider! (_type_ pull-rider-info) none) + (collide-shape-method-44 () none) ;; 44 ;; (pull-riders! (_type_) symbol) + (collide-shape-method-45 () none) ;; 45 ;; (do-push-aways (_type_) collide-spec) + (collide-shape-method-46 () none) ;; 46 ;; (update-transforms (_type_) none) + (collide-shape-method-47 () none) ;; 47 ;; (set-collide-with! (_type_ collide-spec) none) + (collide-shape-method-48 () none) ;; 48 ;; (set-collide-as! (_type_ collide-spec) none) + (collide-shape-method-49 () none) ;; 49 ;; (modify-collide-as! (_type_ int collide-spec collide-spec) none) + (collide-shape-method-50 () none) ;; 50 ;; (send-shoves (_type_ process touching-shapes-entry float float float) symbol) + (collide-shape-method-51 () none) ;; 51 ;; (above-ground? (_type_ collide-query vector collide-spec float float float) symbol) + (collide-shape-method-52 () none) ;; 52 ;; (water-info-init! (_type_ water-info collide-action) water-info) + (collide-shape-method-53 () none) ;; 53 ;; (iterate-prims (_type_ (function collide-shape-prim none)) none) + (collide-shape-method-54 () none) ;; 54 ;; (pusher-init (_type_) none) + ) + ) + +#| +(deftype collide-shape-moving (collide-shape) + ((rider-time uint64 :offset-assert 200) ;; time-frame + (rider-last-move vector :inline :offset-assert 208) + (trans-old vector :inline :offset-assert 224) + (poly-pat pat-surface :offset-assert 272) ;; guessed by decompiler + (cur-pat pat-surface :offset-assert 276) ;; guessed by decompiler + (ground-pat pat-surface :offset-assert 280) ;; guessed by decompiler + (status uint64 :offset-assert 288) ;; collide-status + (reaction (function control-info collide-query vector vector collide-status) :offset-assert 316) ;; guessed by decompiler + (no-reaction (function collide-shape-moving collide-query vector vector object) :offset-assert 320) ;; guessed by decompiler + (local-normal vector :inline :offset-assert 336) + (surface-normal vector :inline :offset-assert 352) + (poly-normal vector :inline :offset-assert 368) + (ground-poly-normal vector :inline :offset-assert 384) + (gspot-pos vector :inline :offset-assert 400) + (gspot-normal vector :inline :offset-assert 416) + (ground-touch-point vector :inline :offset-assert 432) + (ground-impact-vel meters :offset-assert 448) + (surface-angle float :offset-assert 452) + (poly-angle float :offset-assert 456) + (touch-angle float :offset-assert 460) + (coverage float :offset-assert 464) + (dynam dynamics :offset-assert 468) ;; guessed by decompiler + ) + :method-count-assert 67 + :size-assert #x1d8 + :flag-assert #x43000001d8 + ;; field penetrate is likely a value type. field penetrate is likely a value type. + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type process-drawable collide-list-enum) _type_) + (collide-shape-moving-method-55 () none) ;; 55 ;; (find-ground (_type_ collide-query collide-spec float float float process) symbol) + (collide-shape-moving-method-56 () none) ;; 56 ;; (react-to-pat! (_type_ pat-surface) cshape-reaction-flags) + (collide-shape-moving-method-57 () none) ;; 57 ;; (integrate-no-collide! (_type_ vector) none) + (collide-shape-moving-method-58 () none) ;; 58 ;; (integrate-for-enemy-no-mtg (_type_ vector overlaps-others-params) symbol) + (collide-shape-moving-method-59 () none) ;; 59 ;; (move-above-ground (_type_ vector move-above-ground-params) none) + (collide-shape-moving-method-60 () none) ;; 60 ;; (move-to-ground (_type_ float float symbol collide-spec) none) + (collide-shape-moving-method-61 () none) ;; 61 ;; (move-to-ground-point (_type_ vector vector vector) none) + (collide-shape-moving-method-62 () none) ;; 62 ;; (compute-acc-due-to-gravity (_type_ vector float) vector) + (collide-shape-moving-method-63 () none) ;; 63 ;; (rbody-collision (_type_ rigid-body-control float) none) + (collide-shape-moving-method-64 () none) ;; 64 ;; (try-snap-to-surface (_type_ vector float float float) symbol) + (collide-shape-moving-method-65 () none) ;; 65 ;; (fill-and-try-snap-to-surface (_type_ vector float float float collide-query) symbol) + (collide-shape-moving-method-66 () none) ;; 66 ;; (step-collision! (_type_ vector vector float int) float) + ) + ) +|# + +;; (define-extern *collide-hit-by-player-list* object) ;; engine +;; (define-extern *collide-hit-by-others-list* object) ;; engine +;; (define-extern *collide-player-list* object) ;; engine +;; (define-extern *collide-shape-prim-backgnd* collide-shape-prim-mesh) ;; collide-shape-prim-mesh +;; (define-extern *collide-shape-prim-water* collide-shape-prim-mesh) ;; collide-shape-prim-mesh +;; (define-extern *collide-shape-prim-nav-mesh* collide-shape-prim-mesh) +;; (define-extern *collide-rider-pool* object) ;; collide-rider-pool + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; generic-obs-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype manipy (process-drawable) + () + :flag-assert #x32007000f8 + ) + +(deftype part-spawner (process) + ((root trsqv :offset-assert 144) ;; guessed by decompiler + (part sparticle-launch-control :offset-assert 148) ;; guessed by decompiler + (path path-control :offset-assert 152) ;; guessed by decompiler + (sound ambient-sound :offset-assert 156) ;; guessed by decompiler + (sound-extra ambient-sound :offset-assert 160) ;; guessed by decompiler + (mode (pointer sparticle-launch-group) :offset-assert 164) ;; guessed by decompiler + (enable symbol :offset-assert 168) ;; guessed by decompiler + (path-pos float :offset-assert 172) + (path-speed float :offset-assert 176) + (last-velocity vector :inline :offset-assert 192) + (radius meters :offset-assert 208) + (world-sphere sphere :inline :offset-assert 224) + ) + :method-count-assert 17 + :size-assert #xf0 + :flag-assert #x11006000f0 + (:methods + (part-spawner-method-14 () none) ;; 14 ;; (active () _type_ :state) + (part-spawner-method-15 () none) ;; 15 ;; (is-in-view? (_type_) symbol) + (part-spawner-method-16 () none) ;; 16 + ) + ) + +#| +(deftype part-tracker (process) + ((root trsqv :offset-assert 144) ;; guessed by decompiler + (mat matrix :inline :offset-assert 160) + (offset vector :inline :offset-assert 224) + (local-offset vector :inline :offset-assert 240) + (userdata uint64 :offset-assert 256) + (user-time time-frame 2 :offset-assert 264) ;; guessed by decompiler + (user-vector vector :inline :offset-assert 288) + (user-handle uint32 2 :offset-assert 320) ;; guessed by decompiler + (part sparticle-launch-control :offset-assert 328) ;; guessed by decompiler + (callback (function part-tracker vector) :offset-assert 332) ;; guessed by decompiler + (linger-callback (function part-tracker vector) :offset-assert 336) ;; guessed by decompiler + (duration uint64 :offset-assert 344) ;; time-frame + (linger-duration uint64 :offset-assert 352) ;; time-frame + (state-time uint64 :offset-assert 360) ;; time-frame + (target uint64 :offset-assert 368) ;; handle + (target-joint int32 :offset-assert 376) + ) + :method-count-assert 19 + :size-assert #x17c + :flag-assert #x1300f0017c + ;; field userdata uses ~A with a 64-bit load. + (:methods + (part-tracker-method-9 () none) ;; 9 + (part-tracker-method-10 () none) ;; 10 + (part-tracker-method-11 () none) ;; 11 + (part-tracker-method-12 () none) ;; 12 + (part-tracker-method-13 () none) ;; 13 + (part-tracker-method-14 () none) ;; 14 ;; (active () _type_ :state) + (part-tracker-method-15 () none) ;; 15 ;; (linger () _type_ :state) + (part-tracker-method-16 () none) ;; 16 ;; (die () _type_ :state) + (part-tracker-method-17 () none) ;; 17 ;; (notify-parent-of-death (_type_) none) + (part-tracker-method-18 () none) ;; 18 + ) + ) +|# + +#| +(deftype part-tracker-init-params (structure) + ((local-offset vector :inline :offset-assert 0) + (userdata uint64 :offset-assert 16) + (duration time-frame :offset-assert 24) ;; guessed by decompiler + (local-space-param int32 :offset-assert 28) + (group sparticle-launch-group :offset-assert 32) ;; guessed by decompiler + (callback (function part-tracker vector) :offset-assert 36) ;; guessed by decompiler + (local-space-callback basic :offset-assert 40) + (target process-drawable :offset-assert 44) ;; guessed by decompiler + (mat-joint object :offset-assert 48) ;; guessed by decompiler + (subsampler-num float :offset-assert 52) + ) + :method-count-assert 9 + :size-assert #x38 + :flag-assert #x900000038 + ;; field userdata uses ~A with a 64-bit load. field mat-joint uses ~A with a signed load. + ) +|# + +#| +(deftype part-tracker-subsampler (part-tracker) + ((subsampler sparticle-subsampler :offset-assert 380) ;; guessed by decompiler + ) + :method-count-assert 19 + :size-assert #x180 + :flag-assert #x1300f00180 + ) +|# + +#| +(deftype lightning-tracker (process) + ((root trsqv :offset-assert 144) ;; guessed by decompiler + (lightning lightning-control :offset-assert 148) ;; guessed by decompiler + (callback (function lightning-tracker none) :offset-assert 152) ;; guessed by decompiler + (duration uint64 :offset-assert 160) ;; time-frame + (start-time uint64 :offset-assert 168) ;; time-frame + (offset0 vector :inline :offset-assert 176) + (offset1 vector :inline :offset-assert 192) + (target0 uint64 :offset-assert 208) ;; handle + (target1 uint64 :offset-assert 216) ;; handle + (target-joint0 int32 :offset-assert 224) + (target-joint1 int32 :offset-assert 228) + (sound sound-id :offset-assert 232) ;; guessed by decompiler + (userdata uint64 :offset-assert 240) + (user-time time-frame 2 :offset-assert 248) ;; guessed by decompiler + (user-vector vector :inline :offset-assert 272) + (user-handle handle 2 :offset-assert 304) ;; guessed by decompiler + ) + :method-count-assert 18 + :size-assert #x140 + :flag-assert #x1200b00140 + ;; field userdata uses ~A with a 64-bit load. + (:methods + (lightning-tracker-method-9 () none) ;; 9 + (lightning-tracker-method-10 () none) ;; 10 + (lightning-tracker-method-11 () none) ;; 11 + (lightning-tracker-method-12 () none) ;; 12 + (lightning-tracker-method-13 () none) ;; 13 + (lightning-tracker-method-14 () none) ;; 14 ;; (active () _type_ :state) + (lightning-tracker-method-15 () none) ;; 15 ;; (notify-parent-of-death (_type_) none) + (lightning-tracker-method-16 () none) ;; 16 ;; (update (_type_) none) + (lightning-tracker-method-17 () none) ;; 17 + ) + ) +|# + +#| +(deftype touch-tracker (process-drawable) + ((duration uint64 :offset-assert 248) ;; time-frame + (target uint64 :offset-assert 256) ;; handle + (event symbol :offset-assert 264) ;; guessed by decompiler + (run-function (function object) :offset-assert 268) ;; guessed by decompiler + (callback (function touch-tracker none) :offset-assert 272) ;; guessed by decompiler + (event-mode symbol :offset-assert 276) ;; guessed by decompiler + ) + :method-count-assert 51 + :size-assert #x118 + :flag-assert #x3300900118 + (:methods + (touch-tracker-method-50 () none) ;; 50 + ) + ) +|# + +#| +(deftype gui-query (structure) + ((x-position int32 :offset-assert 0) + (y-position int32 :offset-assert 4) + (message string :offset-assert 8) ;; guessed by decompiler + (decision symbol :offset-assert 12) ;; guessed by decompiler + (only-allow-cancel symbol :offset-assert 16) ;; guessed by decompiler + (no-msg string :offset-assert 20) ;; guessed by decompiler + (message-space int32 :offset-assert 24) + ) + :method-count-assert 11 + :size-assert #x1c + :flag-assert #xb0000001c + (:methods + (gui-query-method-9 () none) ;; 9 ;; (gui-query-method-9 () none) + (gui-query-method-10 () none) ;; 10 ;; (gui-query-method-10 () none) + ) + ) +|# + +#| +(deftype othercam (process) + ((hand uint64 :offset-assert 144) ;; handle + (old-global-mask process-mask :offset-assert 152) ;; guessed by decompiler + (mask-to-clear process-mask :offset-assert 156) ;; guessed by decompiler + (cam-joint-index int32 :offset-assert 160) + (old-pos vector :inline :offset-assert 176) + (old-mat-z vector :inline :offset-assert 192) + (had-valid-frame symbol :offset-assert 208) ;; guessed by decompiler + (border-value basic :offset-assert 212) + (die? symbol :offset-assert 216) ;; guessed by decompiler + (survive-anim-end? symbol :offset-assert 220) ;; guessed by decompiler + (spooling? symbol :offset-assert 224) ;; guessed by decompiler + (fov float :offset-assert 228) + ) + :method-count-assert 15 + :size-assert #xe8 + :flag-assert #xf006000e8 + (:methods + (othercam-method-9 () none) ;; 9 + (othercam-method-10 () none) ;; 10 + (othercam-method-11 () none) ;; 11 + (othercam-method-12 () none) ;; 12 + (othercam-method-13 () none) ;; 13 + (othercam-method-14 () none) ;; 14 + ) + (:states + othercam-running ;; associated process guessed by decompiler, old: (state othercam) + ) + ) +|# + +#| +(deftype explosion-init-params (structure) + ((spawn-point vector :inline :offset-assert 0) + (spawn-quat quaternion :inline :offset-assert 16) + (radius float :offset-assert 32) + (scale float :offset-assert 36) + (group sparticle-launch-group :offset-assert 40) ;; guessed by decompiler + (group-on-kill basic :offset-assert 44) + (collide-with collide-spec :offset-assert 48) ;; guessed by decompiler + (collide-lof-check? basic :offset-assert 52) + (damage float :offset-assert 56) + (damage-scale float :offset-assert 60) + (vehicle-damage-factor float :offset-assert 64) + (vehicle-impulse-factor float :offset-assert 68) + (velocity vector :inline :offset-assert 80) + (ignore-proc uint64 :offset-assert 96) ;; handle + (attacker uint64 :offset-assert 104) + (wpn-type int8 :offset-assert 112) + ) + :method-count-assert 9 + :size-assert #x71 + :flag-assert #x900000071 + ) +|# + +#| +(deftype explosion (process-drawable) + ((start-time uint64 :offset-assert 248) ;; time-frame + (duration uint32 :offset-assert 256) + (linger-duration uint32 :offset-assert 260) + (attack-id uint32 :offset-assert 264) + (mat matrix :inline :offset-assert 272) + (params explosion-init-params :inline :offset-assert 336) + (killed-someone? basic :offset-assert 452) + (spawn-proc uint64 :offset-assert 456) + (spawn-type basic :offset-assert 464) + ) + :method-count-assert 53 + :size-assert #x1d4 + :flag-assert #x35015001d4 + (:methods + (explosion-method-50 () none) ;; 50 + (explosion-method-51 () none) ;; 51 + (explosion-method-52 () none) ;; 52 + ) + ) +|# + +(deftype process-hidden (process) + () + :method-count-assert 16 + :size-assert #x90 + :flag-assert #x1000000090 + (:methods + (process-hidden-method-14 () none) ;; 14 ;; (die () _type_ :state) + (process-hidden-method-15 () none) ;; 15 + ) + ) + +#| +(deftype simple-prim (process-drawable) + ((strip prim-strip :offset-assert 248) ;; guessed by decompiler + ) + :method-count-assert 56 + :size-assert #xfc + :flag-assert #x38007000fc + (:methods + (simple-prim-method-50 () none) ;; 50 + (simple-prim-method-51 () none) ;; 51 + (simple-prim-method-52 () none) ;; 52 + (simple-prim-method-53 () none) ;; 53 + (simple-prim-method-54 () none) ;; 54 + (simple-prim-method-55 () none) ;; 55 + ) + ) +|# + +#| +(deftype task-arrow-params (structure) + ((flags task-arrow-flags :offset-assert 0) ;; guessed by decompiler + (map-icon uint16 :offset-assert 4) + (pos vector :inline :offset-assert 16) + (quat quaternion :inline :offset-assert 32) + (color uint32 :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x34 + :flag-assert #x900000034 + ) +|# + +#| +(deftype external-camera-controller (process) + ((pause-time uint64 :offset-assert 144) ;; time-frame + (blur symbol :offset-assert 152) ;; guessed by decompiler + ) + :method-count-assert 16 + :size-assert #x9c + :flag-assert #x100010009c + (:methods + (external-camera-controller-method-9 () none) ;; 9 + (external-camera-controller-method-10 () none) ;; 10 + (external-camera-controller-method-11 () none) ;; 11 + (external-camera-controller-method-12 () none) ;; 12 + (external-camera-controller-method-13 () none) ;; 13 + (external-camera-controller-method-14 () none) ;; 14 ;; (active () _type_ :state) + (external-camera-controller-method-15 () none) ;; 15 + ) + ) +|# + +;; (define-extern *simple-prim-additive* object) ;; gs-alpha +;; (define-extern *simple-prim-alpha-blend* object) ;; gs-alpha +;; (define-extern *simple-prim-subtractive* object) ;; gs-alpha + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; trajectory-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype trajectory (structure) + ((initial-position vector :inline :offset-assert 0) + (initial-velocity vector :inline :offset-assert 16) + (time float :offset-assert 32) + (gravity meters :offset-assert 36) + ) + :method-count-assert 18 + :size-assert #x28 + :flag-assert #x1200000028 + (:methods + (compute-trans-at-time (_type_ float vector) vector) ;; 9 + (compute-transv-at-time (_type_ float vector) vector) ;; 10 + (compute-time-until-apex (_type_) float) ;; 11 + (setup-from-to-duration! (_type_ vector vector float float) none) ;; 12 + (setup-from-to-xz-vel! (_type_ vector vector float float) none) ;; 13 + (setup-from-to-y-vel! (_type_ vector vector float float) none) ;; 14 + (setup-from-to-height! (_type_ vector vector float float) none) ;; 15 + (setup-from-to-duration-and-height! (_type_ vector vector float float) none) ;; 16 + (debug-draw (_type_) none) ;; 17 + ) + ) + +#| +(deftype impact-control (structure) + ((process (pointer process-drawable) :offset-assert 0) ;; guessed by decompiler + (radius meters :offset-assert 4) + (joint int32 :offset-assert 8) + (collide-with collide-spec :offset-assert 12) ;; guessed by decompiler + (start-time uint64 :offset-assert 16) + (trans vector 2 :offset-assert 32) ;; guessed by decompiler + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (dir vector :inline :offset-assert 64) + ) + :method-count-assert 12 + :size-assert #x50 + :flag-assert #xc00000050 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type process-drawable int float collide-spec) _type_) + (impact-control-method-9 () none) ;; 9 ;; (initialize (_type_ process-drawable int float collide-spec) impact-control) + (impact-control-method-10 () none) ;; 10 ;; (update-from-cspace (_type_) none) + (impact-control-method-11 () none) ;; 11 ;; (impact-control-method-11 (_type_ collide-query process pat-surface) float) + ) + ) +|# + +#| +(deftype point-tracker (structure) + ((trans vector 2 :offset-assert 0) ;; guessed by decompiler + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 12 + :size-assert #x20 + :flag-assert #xc00000020 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type vector vector) _type_) + (point-tracker-method-9 () none) ;; 9 ;; (initialize (_type_ vector vector) point-tracker) + (point-tracker-method-10 () none) ;; 10 ;; (point-tracker-method-10 (_type_ vector vector vector float) vector) + (point-tracker-method-11 () none) ;; 11 ;; (point-tracker-method-11 (_type_ vector vector vector float) vector) + ) + ) +|# + +#| +(deftype combo-tracker (point-tracker) + ((target uint64 :offset-assert 32) ;; handle + (move-start-time uint64 :offset-assert 40) ;; time-frame + ) + :method-count-assert 14 + :size-assert #x30 + :flag-assert #xe00000030 + (:methods + (combo-tracker-method-12 () none) ;; 12 ;; (combo-tracker-method-12 (_type_ vector vector process time-frame) combo-tracker) + (combo-tracker-method-13 () none) ;; 13 ;; (combo-tracker-method-13 (_type_ handle vector float vector float) process-focusable) + ) + ) +|# + +#| +(deftype traj2d-params (structure) + ((x float :offset-assert 0) + (y float :offset-assert 4) + (gravity float :offset-assert 8) + (initial-tilt float :offset-assert 12) + (initial-speed float :offset-assert 16) + (time float :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) +|# + +#| +(deftype traj3d-params (structure) + ((gravity float :offset-assert 0) + (initial-tilt float :offset-assert 4) + (initial-speed float :offset-assert 8) + (time float :offset-assert 12) + (src vector :inline :offset-assert 16) + (dest vector :inline :offset-assert 32) + (diff vector :inline :offset-assert 48) + (initial-velocity vector :inline :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) +|# + +#| +(deftype cubic-curve (structure) + ((mat matrix :inline :offset-assert 0) + ) + :method-count-assert 14 + :size-assert #x40 + :flag-assert #xe00000040 + (:methods + (cubic-curve-method-9 () none) ;; 9 ;; (cubic-curve-method-9 (_type_ vector vector vector vector) none) + (cubic-curve-method-10 () none) ;; 10 ;; (cubic-curve-method-10 (_type_ vector float) vector) + (cubic-curve-method-11 () none) ;; 11 ;; (cubic-curve-method-11 (_type_ vector float) vector) + (cubic-curve-method-12 () none) ;; 12 ;; (cubic-curve-method-12 (_type_ vector float) vector) + (cubic-curve-method-13 () none) ;; 13 ;; (debug-draw-curve (_type_) none) + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; collide-touch-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype touching-prim (structure) + ((cprim collide-shape-prim :offset-assert 0) ;; guessed by decompiler + (has-tri? symbol :offset-assert 4) ;; guessed by decompiler + (tri collide-tri-result :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x68 + :flag-assert #x900000068 + ) +|# + +#| +(deftype touching-prims-entry (structure) + ((next touching-prims-entry :offset-assert 0) + (prev touching-prims-entry :offset-assert 4) + (allocated? symbol :offset-assert 8) ;; guessed by decompiler + (u float :offset-assert 12) + (prim1 touching-prim :inline :offset-assert 16) + (prim2 touching-prim :inline :offset-assert 128) + ) + :method-count-assert 13 + :size-assert #xe8 + :flag-assert #xd000000e8 + (:methods + (touching-prims-entry-method-9 () none) ;; 9 ;; (touching-prims-entry-method-9 (_type_ vector) vector) + (touching-prims-entry-method-10 () none) ;; 10 ;; (get-middle-of-bsphere-overlap (_type_ vector) vector) + (touching-prims-entry-method-11 () none) ;; 11 ;; (get-touched-prim (_type_ collide-shape touching-shapes-entry) collide-shape-prim) + (touching-prims-entry-method-12 () none) ;; 12 ;; (get-touched-tri (_type_ collide-shape touching-shapes-entry) collide-tri-result) + ) + ) +|# + +#| +(deftype touching-prims-entry-pool (structure) + ((head touching-prims-entry :offset-assert 0) + (nodes touching-prims-entry 64 :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 13 + :size-assert #x3c10 + :flag-assert #xd00003c10 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type) _type_) + (touching-prims-entry-pool-method-9 () none) ;; 9 ;; (alloc-node (_type_) touching-prims-entry) + (touching-prims-entry-pool-method-10 () none) ;; 10 ;; (get-free-node-count (_type_) int) + (touching-prims-entry-pool-method-11 () none) ;; 11 ;; (init-list! (_type_) none) + (touching-prims-entry-pool-method-12 () none) ;; 12 ;; (free-node (_type_ touching-prims-entry) touching-prims-entry) + ) + ) +|# + +#| +(deftype touching-shapes-entry (structure) + ((cshape1 collide-shape :offset-assert 0) ;; guessed by decompiler + (cshape2 collide-shape :offset-assert 4) ;; guessed by decompiler + (resolve-u int8 :offset-assert 8) + (head touching-prims-entry :offset-assert 12) + (handle1 uint64 :offset-assert 16) ;; handle + (handle2 uint64 :offset-assert 24) ;; handle + ) + :method-count-assert 15 + :size-assert #x20 + :flag-assert #xf00000020 + (:methods + (touching-shapes-entry-method-9 () none) ;; 9 ;; (get-head (_type_) touching-prims-entry) + (touching-shapes-entry-method-10 () none) ;; 10 ;; (get-next (_type_ touching-shapes-entry) touching-prims-entry) + (touching-shapes-entry-method-11 () none) ;; 11 ;; (get-touched-shape (_type_ collide-shape) collide-shape) + (touching-shapes-entry-method-12 () none) ;; 12 ;; (prims-touching? (_type_ collide-shape uint) touching-prims-entry) + (touching-shapes-entry-method-13 () none) ;; 13 ;; (prims-touching-action? (_type_ collide-shape collide-action collide-action) basic) + (touching-shapes-entry-method-14 () none) ;; 14 ;; (free-touching-prims-list (_type_) none) + ) + ) +|# + +#| +(deftype touching-list (structure) + ((num-touching-shapes int32 :offset-assert 0) + (resolve-u int8 :offset-assert 4) + (touching-shapes touching-shapes-entry 32 :offset-assert 8) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x408 + :flag-assert #xe00000408 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type) _type_) + (touching-list-method-9 () none) ;; 9 ;; (add-touching-prims (_type_ collide-shape-prim collide-shape-prim float collide-tri-result collide-tri-result) none) + (touching-list-method-10 () none) ;; 10 ;; (free-nodes (_type_) none) + (touching-list-method-11 () none) ;; 11 ;; (update-from-step-size (_type_ float) none) + (touching-list-method-12 () none) ;; 12 ;; (send-events-for-touching-shapes (_type_) none) + (touching-list-method-13 () none) ;; 13 ;; (get-shapes-entry (_type_ collide-shape collide-shape) touching-shapes-entry) + ) + ) +|# + +;; (define-extern *touching-prims-entry-pool* object) ;; touching-prims-entry-pool +;; (define-extern *touching-list* object) ;; touching-list + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; process-drawable-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern cspace-by-name-no-fail (function process-drawable string cspace)) +(define-extern cspace-index-by-name-no-fail (function process-drawable string int)) +(define-extern num-func-none (function joint-control-channel float float float float :behavior process)) +(define-extern num-func-+! (function joint-control-channel float float float float :behavior process)) +(define-extern num-func--! (function joint-control-channel float float float float :behavior process)) +(define-extern num-func-loop! (function joint-control-channel float float float float :behavior process)) +(define-extern num-func-loop-speedless! (function joint-control-channel float float float float :behavior process)) +(define-extern num-func-loop-set! (function joint-control-channel float float float float :behavior process)) +(define-extern num-func-seek! (function joint-control-channel float float float float :behavior process)) +(define-extern num-func-blend-in! (function joint-control-channel float float float float :behavior process)) +(define-extern joint-channel-float-delete! (function joint-control-channel none)) +(define-extern num-func-interp-play! (function joint-control-channel float float float float :behavior process)) +(define-extern num-func-interp1-play! (function joint-control-channel float float float float :behavior process)) +(define-extern num-func-chan (function joint-control-channel float float float float :behavior process)) +(define-extern num-func-identity (function joint-control-channel float float float float :behavior process)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; process-focusable ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype process-focusable (process-drawable) + ((focus-status uint64 :offset-assert 248) ;; focus-status + ) + :method-count-assert 59 + :size-assert #x100 + :flag-assert #x3b00700100 + (:methods + (process-focusable-method-50 () none) ;; 50 + (process-focusable-method-51 () none) ;; 51 + (process-focusable-method-52 () none) ;; 52 + (process-focusable-method-53 () none) ;; 53 + (process-focusable-method-54 () none) ;; 54 + (process-focusable-method-55 () none) ;; 55 + (process-focusable-method-56 () none) ;; 56 + (process-focusable-method-57 () none) ;; 57 + (process-focusable-method-58 () none) ;; 58 + ) + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; focus ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype focus (structure) + "A structure that keeps a handle to a [[process-focusable]]." + ((handle uint64 :offset-assert 0) ;; handle + (collide-with collide-spec :offset-assert 8) ;; guessed by decompiler + ) + :method-count-assert 13 + :size-assert #xc + :flag-assert #xd0000000c + (:methods + (clear-focused "Reset the focus' handle." (_type_) none) ;; 9 + (collide-spec-match? + "If the focused process is not dead, + check that the [[collide-spec]] of the focus and the process match." + (_type_ process-focusable) object) ;; 10 + (reset-to-collide-spec "Reset this focus with the given [[collide-spec]]." (_type_ collide-spec) none) ;; 11 + (try-update-focus "Try to set the `handle` of this focus to the given process." (_type_ process-focusable) symbol) ;; 12 + ) + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; effect-control-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; +++effect-control-h:effect-control-flag +(defenum effect-control-flag + :type uint32 + :bitfield #t + (ecf0 0) + (ecf1 1) + (ecf2 2) + (ecf3 3) + (ecf4 4) + (ecf5 5) + (ecf6 6) + (ecf7 7) + (ecf8 8) + (ecf9 9) + (ecf10 10) + (ecf11 11) + (ecf12 12) + (ecf13 13) + (ecf14 14) + (ecf15 15) + ) +;; ---effect-control-h:effect-control-flag + +(deftype effect-control (basic) + "An effect such as a particle with sound effects that plays during an animation." + ((process process-drawable :offset-assert 4) ;; guessed by decompiler + (flags effect-control-flag :offset-assert 8) ;; guessed by decompiler + (last-frame-group art-joint-anim :offset-assert 12) ;; guessed by decompiler + (last-frame-num float :offset-assert 16) + (channel-offset int32 :offset-assert 20) + (res res-lump :offset-assert 24) ;; guessed by decompiler + (name (pointer res-tag) :offset-assert 28) ;; guessed by decompiler + (param uint32 :offset-assert 32) + ) + :method-count-assert 15 + :size-assert #x24 + :flag-assert #xf00000024 + (:methods + (new (symbol type process-drawable) _type_) ;; 0 + (effect-control-method-9 (_type_) none) ;; 9 + (do-effect (_type_ string float int) none) ;; 10 + (do-effect-for-surface (_type_ symbol float int basic pat-surface) none) ;; 11 + (play-effect-sound (_type_ symbol float int basic sound-name) int) ;; 12 + (set-channel-offset! (_type_ int) none) ;; 13 + (play-effects-from-res-lump (_type_ float float float) none) ;; 14 + ) + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; collide-frag-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype collide-frag-vertex (vector) + ((data float 4 :offset-assert 0) ;; guessed by decompiler + (x float :offset-assert 0) + (y float :offset-assert 4) + (z float :offset-assert 8) + (w float :offset-assert 12) + (quad uint128 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype collide-frag-mesh (basic) + ((packed-data uint32 :offset-assert 4) + (pat-array uint32 :offset-assert 8) + (strip-data-len uint16 :offset-assert 12) + (poly-count uint16 :offset-assert 14) + (base-trans vector4w :inline :offset-assert 16) + (vertex-count uint8 :offset-assert 28) + (vertex-data-qwc uint8 :offset-assert 29) + (total-qwc uint8 :offset-assert 30) + (unused uint8 :offset-assert 31) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype collide-fragment (drawable) + ((mesh collide-frag-mesh :offset-assert 8) ;; guessed by decompiler + (collide-new basic :offset-assert 12) + ) + :method-count-assert 17 + :size-assert #x20 + :flag-assert #x1100000020 + ) +|# + +#| +(deftype drawable-inline-array-collide-fragment (drawable-inline-array) + ((data collide-fragment 1 :offset-assert 36) ;; guessed by decompiler + ) + :method-count-assert 17 + :size-assert #x44 + :flag-assert #x1100000044 + ) +|# + +;; (deftype drawable-tree-collide-fragment (drawable-tree) +;; () +;; :flag-assert #x1100000020 +;; ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; collide-hash-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype collide-hash-scratch (structure) + "Scratchpad memory layout for collide-hash. Bitmask of things that have already been checked" + ((collidable-bits uint128 128 :offset-assert 0) ;; guessed by decompiler + (poly-bits uint64 2 :offset 0) ;; guessed by decompiler + (id-bits uint32 512 :offset 0) ;; guessed by decompiler + (tris uint32 :offset-assert 2048) + ) + :method-count-assert 9 + :size-assert #x804 + :flag-assert #x900000804 + ) + +(deftype collide-hash-bucket (structure) + "A bucket is a reference to a list of items that intersect a grid cell. + For the broadphase, the items are collide-hash-item (wrapper of collide-hash-fragment). + For the narrowphase, the items are entries in the index list, which contains poly indices." + ((index int16 :offset-assert 0) + (count int16 :offset-assert 2) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype collide-hash-item (structure) + "Items that are 'hashed' in the broadphase. Contains unique ID for checking against already-visited-bitmask + and a pointer to the actual collide-hash-fragment, or possibly a TIE." + ((id uint32 :offset-assert 0) + (collidable basic :offset-assert 4) + ) + :pack-me + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype collide-hash-poly (structure) + "A polygon in the narrow-phase data. This is just indices into the vertex and PAT tables." + ((data uint8 4 :offset-assert 0) ;; guessed by decompiler + (vert-index0 uint8 :offset 0) + (vert-index1 uint8 :offset 1) + (vert-index2 uint8 :offset 2) + (pat-index uint8 :offset 3) + (word uint32 :offset 0) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype collide-hash-fragment-stats (structure) + ((num-verts uint16 :offset-assert 0) + (num-polys uint8 :offset-assert 2) + (poly-count uint8 :offset-assert 3) + ) + :pack-me + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype collide-hash-fragment (drawable) + "A mesh fragment for the Jak2/Jak3 collision system. This is a 'hash' of triangles into a grid + where the 'hash' function is just identity." + ((num-buckets uint16 :offset 4) + (num-indices uint16 :offset 6) + (pat-array uint32 :offset 8) + (bucket-array uint32 :offset 12) + (grid-step vector :inline :offset-assert 32) + (bbox bounding-box :inline :offset-assert 48) + (bbox4w bounding-box4w :inline :offset-assert 80) + (axis-scale vector :inline :offset 64) + (avg-extents vector :inline :offset 80) + (dimension-array uint32 4 :offset 44) ;; guessed by decompiler + (stats collide-hash-fragment-stats :inline :offset 60) + (num-verts uint16 :offset 60) + (num-polys uint8 :offset 62) + (poly-count uint8 :offset 63) + (poly-array uint32 :offset 76) + (vert-array uint32 :offset 92) + (index-array uint32 :offset 108) + ) + :method-count-assert 17 + :size-assert #x70 + :flag-assert #x1100000070 + ) + +(deftype collide-hash-fragment-array (array) + "A collection of collide-hash-fragments. These are used by the instanced collision if a single instance + needs more than 1 collide-hash-fragment worth of triangles." + ((fragments collide-hash-fragment :dynamic :offset 12) ;; added + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype collide-hash (drawable) + ((num-ids uint16 :offset 4) + (id-count uint16 :offset 6) + (num-buckets uint32 :offset 8) + (qwc-id-bits uint32 :offset 12) + (grid-step vector :inline :offset 16) + (bbox bounding-box :inline :offset 32) + (bbox4w bounding-box4w :inline :offset 64) + (axis-scale vector :inline :offset 48) + (avg-extents vector :inline :offset 64) + (bucket-array uint32 :offset 44) + (item-array (inline-array collide-hash-item) :offset 60 :score 1) ;; guessed by decompiler + (dimension-array uint32 3 :offset 76) ;; guessed by decompiler + (num-items uint32 :offset 92) + ) + :method-count-assert 17 + :size-assert #x60 + :flag-assert #x1100000060 + ) + +(define-extern *collide-list-boxes* symbol) ;; object +(define-extern *collide-hash-fragments* int) ;; object +(define-extern *collide-hash-fragments-tfrag* int) ;; object +(define-extern *collide-hash-fragments-instance* int) ;; object +(define-extern *already-printed-exeeded-max-cache-tris* symbol) ;; + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; water-info-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype water-info (structure) + ((trans vector :inline :offset-assert 0) + (normal vector :inline :offset-assert 16) + (base-height meters :offset-assert 32) + (depth meters :offset-assert 36) + (handle uint64 :offset-assert 40) ;; handle + (flags water-flag :offset-assert 48) + (prim drawable-region-prim :offset-assert 52) ;; guessed by decompiler + (extra-flags uint32 :offset-assert 56) + ) + :method-count-assert 9 + :size-assert #x3c + :flag-assert #x90000003c + ) +|# + +#| +(deftype water-sphere (structure) + ((sphere sphere :inline :offset-assert 0) + (flags water-flag :offset-assert 16) + (user0 int32 :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ragdoll-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype ragdoll-edit-info (structure) + ((editing symbol :offset-assert 0) ;; guessed by decompiler + (current-func uint64 :offset-assert 8) + (analog-func uint64 :offset-assert 16) + (affect uint64 :offset-assert 24) + (single-step uint64 :offset-assert 32) + (collision symbol :offset-assert 40) ;; guessed by decompiler + (gravity symbol :offset-assert 44) ;; guessed by decompiler + (skel-visible uint64 :offset-assert 48) + (current-joint int8 :offset-assert 56) + (auto-setup-now basic :offset-assert 60) + (child-stack ragdoll-joint 60 :offset-assert 64) ;; guessed by decompiler + (child-stack-num int8 :offset-assert 304) + (last-frame uint64 :offset-assert 312) ;; time-frame + (last-frame-dur uint64 :offset-assert 320) ;; time-frame + ) + :method-count-assert 18 + :size-assert #x148 + :flag-assert #x1200000148 + (:methods + (ragdoll-edit-info-method-9 () none) ;; 9 ;; (has-joint? (_type_ ragdoll-joint) symbol) + (ragdoll-edit-info-method-10 () none) ;; 10 ;; (ragdoll-edit-info-method-10 (_type_ object ragdoll-joint) symbol) + (ragdoll-edit-info-method-11 () none) ;; 11 ;; (fill-child-stack! (_type_ ragdoll) none) + (ragdoll-edit-info-method-12 () none) ;; 12 ;; (ragdoll-edit-info-method-12 (_type_) none) + (ragdoll-edit-info-method-13 () none) ;; 13 ;; (cycle-joints! (_type_ ragdoll) none) + (ragdoll-edit-info-method-14 () none) ;; 14 ;; (ragdoll-edit-info-method-14 (_type_ matrix vector (inline-array ragdoll-joint) ragdoll process-drawable) vector) + (ragdoll-edit-info-method-15 () none) ;; 15 ;; (ragdoll-edit-info-method-15 (_type_) none) + (ragdoll-edit-info-method-16 () none) ;; 16 ;; (ragdoll-edit-info-method-16 (_type_ ragdoll process-drawable) none) + (ragdoll-edit-info-method-17 () none) ;; 17 ;; (ragdoll-edit-info-method-17 (_type_ ragdoll process-drawable) none) + ) + ) +|# + +#| +(deftype ragdoll-joint-setup (structure) + ((joint-index int32 :offset-assert 0) + (parent-joint int32 :offset-assert 4) + (joint-type uint64 :offset-assert 8) + (pre-tform vector :inline :offset-assert 16) + (geo-tform vector :inline :offset-assert 32) + (axial-slop float :offset-assert 48) + (max-angle float :offset-assert 52) + (coll-rad float :offset-assert 56) + (hit-sound uint16 :offset-assert 60) ;; sound-name + ) + :method-count-assert 9 + :size-assert #x3e + :flag-assert #x90000003e + ) +|# + +#| +(deftype ragdoll-setup (structure) + ((orient-tform vector :inline :offset-assert 0) + (scale vector :inline :offset-assert 16) + (bg-collide-with collide-spec :offset-assert 32) ;; guessed by decompiler + (joint-setup (array ragdoll-joint-setup) :offset-assert 36) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + ) +|# + +#| +(deftype ragdoll-joint (structure) + ((quat quaternion :inline :offset-assert 0) + (position vector :inline :offset-assert 16) + (velocity vector :inline :offset-assert 32) + (bounce vector :inline :offset-assert 48) + (old-x vector :inline :offset-assert 64) + (pre-tform vector :inline :offset-assert 80) + (geo-tform vector :inline :offset-assert 96) + (axial-slop float :offset-assert 112) + (max-angle float :offset-assert 116) ;; degrees + (joint-length float :offset-assert 120) + (coll-rad float :offset-assert 124) + (ragdoll-joint-flags ragdoll-joint-flag :offset-assert 128) ;; guessed by decompiler + (joint-type uint64 :offset-assert 136) + (joint-index int8 :offset-assert 144) + (parent-joint int8 :offset-assert 145) + (parent-index int8 :offset-assert 146) + (num-children int8 :offset-assert 147) + (old-param0 basic :offset-assert 148) + (hit-sound uint128 :offset-assert 160) ;; sound-name + (ground-pat pat-surface :offset-assert 176) ;; guessed by decompiler + (user0 int32 :offset-assert 180) + (original-speed float :offset-assert 184) + ) + :method-count-assert 9 + :size-assert #xbc + :flag-assert #x9000000bc + ) +|# + +#| +(deftype ragdoll (basic) + ((ragdoll-joints ragdoll-joint 60 :offset-assert 16) ;; guessed by decompiler + (num-joints uint8 :offset-assert 11536) + (mirror matrix :inline :offset-assert 11552) + (gravity vector :inline :offset-assert 11616) + (gravity-target vector :inline :offset-assert 11632) + (orient-tform vector :inline :offset-assert 11648) + (scale vector :inline :offset-assert 11664) + (stretch-vel float :offset-assert 11680) + (stretch-vel-parallel float :offset-assert 11684) + (compress-vel float :offset-assert 11688) + (compress-vel-parallel float :offset-assert 11692) + (momentum float :offset-assert 11696) + (maximum-stretch float :offset-assert 11700) + (turn-off-start uint64 :offset-assert 11704) ;; time-frame + (turn-off-duration uint64 :offset-assert 11712) ;; time-frame + (copy-velocity-start uint64 :offset-assert 11720) ;; time-frame + (root-offset vector :inline :offset-assert 11728) + (rotate-vel quaternion :inline :offset-assert 11744) + (rotate-adj quaternion :inline :offset-assert 11760) + (rotate-adj-count int8 :offset-assert 11776) + (ragdoll-flags ragdoll-flag :offset-assert 11780) ;; guessed by decompiler + (flex-blend float :offset-assert 11784) + (stable-joints int8 :offset-assert 11788) + (ragdoll-joint-remap uint8 100 :offset-assert 11789) ;; guessed by decompiler + (allow-destabilize uint64 :offset-assert 11896) + (bg-collide-with uint32 :offset-assert 11904) + (water-info water-info :inline :offset-assert 11920) + ) + :method-count-assert 26 + :size-assert #x2ecc + :flag-assert #x1a00002ecc + (:methods + (ragdoll-method-9 () none) ;; 9 ;; (ragdoll-method-9 (_type_ matrix process-drawable) none) + (ragdoll-method-10 () none) ;; 10 ;; (ragdoll-method-10 (_type_ process-drawable symbol vector symbol) none) + (ragdoll-method-11 () none) ;; 11 ;; (turn-off-for-duration! (_type_ time-frame) none) + (ragdoll-method-12 () none) ;; 12 ;; (get-parent-joint (_type_ (inline-array ragdoll-joint)) ragdoll-joint) + (ragdoll-method-13 () none) ;; 13 ;; (ragdoll-method-13 (_type_ ragdoll-edit-info ragdoll-joint matrix matrix) none) + (ragdoll-method-14 () none) ;; 14 ;; (ragdoll-method-14 (_type_ process-drawable ragdoll-joint object matrix) none) + (ragdoll-method-15 () none) ;; 15 ;; (ragdoll-method-15 (_type_ process-drawable ragdoll-edit-info) none) + (ragdoll-method-16 () none) ;; 16 ;; (ragdoll-setup! (_type_ process-drawable ragdoll-setup) none) + (ragdoll-method-17 () none) ;; 17 ;; (ragdoll-method-17 (_type_ process-drawable) none) + (ragdoll-method-18 () none) ;; 18 ;; (ragdoll-method-18 (_type_) none) + (ragdoll-method-19 () none) ;; 19 ;; (ragdoll-method-19 (_type_ vector int object matrix) none) + (ragdoll-method-20 () none) ;; 20 ;; (reset-vec! (_type_ vector) none) + (ragdoll-method-21 () none) ;; 21 ;; (ragdoll-method-21 (_type_ vector vector float) vector) + (ragdoll-method-22 () none) ;; 22 ;; (get-max-angle-for-joint-idx (_type_ int) degrees) + (ragdoll-method-23 () none) ;; 23 ;; (ragdoll-method-23 (_type_ vector vector float symbol) none) + (ragdoll-method-24 () none) ;; 24 ;; (ragdoll-method-24 (_type_ vector int) none) + (ragdoll-method-25 () none) ;; 25 ;; (enable-ragdoll! (_type_ process-drawable) none) + ) + ) +|# + +#| +(deftype ragdoll-proc (process) + ((ragdoll ragdoll :offset-assert 144) ;; guessed by decompiler + (last-attack-id uint32 :offset-assert 148) + ) + :method-count-assert 21 + :size-assert #x98 + :flag-assert #x1500100098 + (:methods + (ragdoll-proc-method-9 () none) ;; 9 + (ragdoll-proc-method-10 () none) ;; 10 + (ragdoll-proc-method-11 () none) ;; 11 + (ragdoll-proc-method-12 () none) ;; 12 + (ragdoll-proc-method-13 () none) ;; 13 + (ragdoll-proc-method-14 () none) ;; 14 ;; (idle () _type_ :state) + (ragdoll-proc-method-15 () none) ;; 15 ;; (ragdoll-proc-method-15 (_type_ symbol vector symbol) none) + (ragdoll-proc-method-16 () none) ;; 16 ;; (disable-for-duration (_type_ time-frame) none) + (ragdoll-proc-method-17 () none) ;; 17 ;; (ragdoll-proc-method-17 (_type_ ragdoll-edit-info) none) + (ragdoll-proc-method-18 () none) ;; 18 ;; (ragdoll-proc-method-18 (_type_ ragdoll-edit-info) none) + (ragdoll-proc-method-19 () none) ;; 19 ;; (ragdoll-proc-method-19 (_type_) none) + (ragdoll-proc-method-20 () none) ;; 20 + ) + ) +|# + +;; (define-extern *ragdoll-edit-info* object) ;; ragdoll-edit-info + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; projectile-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype projectile (process-drawable) + ((starting-pos vector :inline :offset-assert 256) + (starting-dir vector :inline :offset-assert 272) + (target-pos vector :inline :offset-assert 288) + (base-target-pos vector :inline :offset-assert 304) + (pre-move-transv vector :inline :offset-assert 320) + (timeout uint64 :offset-assert 336) ;; time-frame + (spawn-time uint64 :offset-assert 344) ;; time-frame + (options uint64 :offset-assert 352) ;; projectile-options + (last-target uint64 :offset-assert 360) ;; handle + (notify-handle uint64 :offset-assert 368) ;; handle + (owner-handle uint64 :offset-assert 376) ;; handle + (ignore-handle uint64 :offset-assert 384) ;; handle + (update-velocity (function projectile none) :offset-assert 392) ;; guessed by decompiler + (move (function projectile none) :offset-assert 396) ;; guessed by decompiler + (pick-target (function projectile none) :offset-assert 400) ;; guessed by decompiler + (max-speed float :offset-assert 404) + (old-dist float 16 :offset-assert 408) ;; guessed by decompiler + (old-dist-count int32 :offset-assert 472) + (hits int32 :offset-assert 476) + (max-hits int32 :offset-assert 480) + (tween float :offset-assert 484) + (attack-mode symbol :offset-assert 488) ;; guessed by decompiler + (attack-id uint32 :offset-assert 492) + (damage float :offset-assert 496) + (vehicle-damage-factor float :offset-assert 500) + (vehicle-impulse-factor float :offset-assert 504) + (charge-level float :offset-assert 508) + (sound-id sound-id :offset-assert 512) ;; guessed by decompiler + (stop-speed meters :offset-assert 516) + (invinc-time uint64 :offset-assert 520) ;; time-frame + (desired-target uint64 :offset-assert 528) ;; handle + (desired-target-pos vector :inline :offset-assert 544) + (wpn-type uint8 :offset-assert 560) + ) + :method-count-assert 72 + :size-assert #x231 + :flag-assert #x4801b00231 + (:methods + (projectile-method-50 () none) ;; 50 + (projectile-method-51 () none) ;; 51 + (projectile-method-52 () none) ;; 52 + (projectile-method-53 () none) ;; 53 + (projectile-method-54 () none) ;; 54 + (projectile-method-55 () none) ;; 55 + (projectile-method-56 () none) ;; 56 + (projectile-method-57 () none) ;; 57 + (projectile-method-58 () none) ;; 58 + (projectile-method-59 () none) ;; 59 + (projectile-method-60 () none) ;; 60 + (projectile-method-61 () none) ;; 61 + (projectile-method-62 () none) ;; 62 + (projectile-method-63 () none) ;; 63 + (projectile-method-64 () none) ;; 64 + (projectile-method-65 () none) ;; 65 + (projectile-method-66 () none) ;; 66 + (projectile-method-67 () none) ;; 67 + (projectile-method-68 () none) ;; 68 + (projectile-method-69 () none) ;; 69 + (projectile-method-70 () none) ;; 70 + (projectile-method-71 () none) ;; 71 + ) + ) +|# + +#| +(deftype projectile-init-by-other-params (structure) + ((pos vector :inline :offset-assert 0) + (vel vector :inline :offset-assert 16) + (target-pos vector :inline :offset-assert 32) + (target-handle uint64 :offset-assert 48) ;; handle + (ent entity :offset-assert 56) ;; guessed by decompiler + (charge float :offset-assert 60) + (attack-id uint32 :offset-assert 64) + (options uint64 :offset-assert 72) ;; projectile-options + (notify-handle uint64 :offset-assert 80) ;; handle + (owner-handle uint64 :offset-assert 88) ;; handle + (ignore-handle uint64 :offset-assert 96) ;; handle + (timeout uint64 :offset-assert 104) ;; time-frame + (damage float :offset-assert 112) + (vehicle-damage-factor float :offset-assert 116) + (vehicle-impulse-factor float :offset-assert 120) + (wpn-type uint8 :offset-assert 124) + ) + :method-count-assert 9 + :size-assert #x7d + :flag-assert #x90000007d + ) +|# + +#| +(deftype projectile-bounce (projectile) + ((played-bounce-time uint64 :offset-assert 568) ;; time-frame + (tumble-quat quaternion :inline :offset-assert 576) + (gravity float :offset-assert 592) + ) + :method-count-assert 75 + :size-assert #x254 + :flag-assert #x4b01d00254 + (:methods + (projectile-bounce-method-72 () none) ;; 72 + (projectile-bounce-method-73 () none) ;; 73 + (projectile-bounce-method-74 () none) ;; 74 + ) + ) +|# + +;; (define-extern spawn-projectile function) ;; (function type projectile-init-by-other-params process-tree dead-pool (pointer process)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; find-nearest-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype find-sorted-targets-params (structure) + ((near-point vector :inline :offset-assert 0) + (in-dir vector :inline :offset-assert 16) + (reject-team int8 :offset-assert 32) + (min-dist float :offset-assert 36) + (max-dist float :offset-assert 40) + (inv-slope-dist float :offset-assert 44) + (reject-inside-dist float :offset-assert 48) + (min-angle-cos float :offset-assert 52) + (max-angle-cos float :offset-assert 56) + (inv-slope-ang float :offset-assert 60) + (required-flags uint32 :offset-assert 64) + (priority-flags uint32 :offset-assert 68) + (weights vector :inline :offset-assert 80) + (validate basic :offset-assert 96) + (validator-params basic :offset-assert 100) + ) + :method-count-assert 9 + :size-assert #x68 + :flag-assert #x900000068 + ;; field validator-params uses ~A with a signed load. + ) +|# + +;; (define-extern *HACK-find-nearest-focusable-ignore* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; target-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype target (process-focusable) + () + :flag-assert #x3b00700100 + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; stats-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype tr-stat (structure) + ((groups uint16 :offset-assert 0) + (fragments uint16 :offset-assert 2) + (tris uint32 :offset-assert 4) + (dverts uint32 :offset-assert 8) + (instances uint16 :offset-assert 12) + (pad uint16 :offset-assert 14) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype merc-global-stats (structure) + ((merc tr-stat :inline :offset-assert 0) + (emerc tr-stat :inline :offset-assert 16) + (mercneric tr-stat :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype perf-stat (structure) + ((frame-number uint32 :offset-assert 0) + (count uint32 :offset-assert 4) + (cycles uint32 :offset-assert 8) + (instructions uint32 :offset-assert 12) + (icache uint32 :offset-assert 16) + (dcache uint32 :offset-assert 20) + (select uint32 :offset-assert 24) + (ctrl uint32 :offset-assert 28) + (accum0 uint32 :offset-assert 32) + (accum1 uint32 :offset-assert 36) + (to-vu0-waits uint32 :offset-assert 40) + (to-spr-waits uint32 :offset-assert 44) + (from-spr-waits uint32 :offset-assert 48) + ) + :method-count-assert 14 + :size-assert #x34 + :flag-assert #xe00000034 + (:methods + (perf-stat-method-9 () none) ;; 9 ;; (perf-stat-method-9 () none) + (perf-stat-method-10 () none) ;; 10 ;; (print-to-stream (_type_ string basic) none) + (perf-stat-method-11 () none) ;; 11 ;; (start-profiling! (_type_) none) + (perf-stat-method-12 () none) ;; 12 ;; (stop-profiling! (_type_) none) + (perf-stat-method-13 () none) ;; 13 ;; (update-wait-stats (_type_ uint uint uint) none) + ) + ) +|# + +#| +(deftype perf-stat-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data perf-stat :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +;; (define-extern perf-stat-bucket->string function) ;; (function perf-stat-bucket string) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; bsp-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype bsp-node (structure) + "A node in the 'BSP' tree. This is really a bounding volume tree, where each volume is an axis-aligned box, containing 2 child boxes. + This is used for precomputed visibility, based on the camera position. This is not used for collision." + ((front int16 :offset-assert 0) + (back int16 :offset-assert 2) + (front-box-min vector4b :inline :offset-assert 4) + (front-box-max vector4b :inline :offset-assert 8) + (back-box-min vector4b :inline :offset-assert 12) + (back-box-max vector4b :inline :offset-assert 16) + ) + :pack-me + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) + +(deftype bsp-header (drawable) + "The bsp-header is really an entire level. + This probably started as a very simple structure, but now it is extremely complicated." + ((all-visible-list (pointer uint8) :offset-assert 32) ;; guessed by decompiler + (visible-list-length int16 :offset-assert 36) + (drawable-trees drawable-tree-array :offset-assert 40) ;; guessed by decompiler + (pat pointer :offset-assert 44) ;; guessed by decompiler + (pat-length int32 :offset-assert 48) + + ;; TODO: Figure out bsp-header structure for Jak X. + (data uint8 348) + ) + :method-count-assert 19 + :size-assert #x190 + :flag-assert #x1300000190 + (:methods + (bsp-header-method-17 () none) ;; 17 ;; (birth (_type_) none) + (bsp-header-method-18 () none) ;; 18 ;; (deactivate-entities (_type_) none) + ) + ) + +(deftype game-level (basic) + "Unused in Jak 1, 2, and 3!" + ((master-bsp basic :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype view-frustum (structure) + "A view frustum, expressed as corners. + This representation is not very useful, and is used in only one spot to generate camera planes + in a very inefficient way." + ((hither-top-left vector :inline :offset-assert 0) + (hither-top-right vector :inline :offset-assert 16) + (hither-bottom-left vector :inline :offset-assert 32) + (hither-bottom-right vector :inline :offset-assert 48) + (yon-top-left vector :inline :offset-assert 64) + (yon-top-right vector :inline :offset-assert 80) + (yon-bottom-left vector :inline :offset-assert 96) + (yon-bottom-right vector :inline :offset-assert 112) + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) + +(deftype collide-stats (structure) + "Very strange collide stats type. It has been somewhat broken in all versions of the game. + The final stopwatch is cut off. For jak 3, I just fixed it." + ((calls uint32 :offset-assert 0) + (spheres uint32 :offset-assert 4) + (nodes uint32 :offset-assert 8) + (frags uint32 :offset-assert 12) + (tris uint32 :offset-assert 16) + (output uint32 :offset-assert 20) + (junk (pointer uint32) 24) + ; (total-target stopwatch :inline :offset-assert 28) + ; (target-cache-fill stopwatch :inline :offset-assert 60) + ; (target-ray-poly stopwatch :inline :offset-assert 92) + ) + :method-count-assert 9 + :size-assert #x78 + :flag-assert #x900000078 + ) + +(define-extern inspect-bsp-tree "Attempt to print a bsp-tree, but it is actually broken since the jak 2 bsp format change" (function bsp-header bsp-node none)) +(define-extern map-bsp-tree "Attempt to call a function on all bsp-tree nodes, but it is actually broken since the jak 2 bsp format" (function (function bsp-node none) bsp-header bsp-node none)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; collide-cache-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-type collide-cache-prim structure) +(declare-type collide-using-spheres-params structure) +(declare-type instance-tie structure) + +(deftype collide-puss-sphere (structure) + "A query sphere from the user for the porbe-using-spheres query. + This is used internally by the collide-cache implementation." + ((bsphere sphere :inline :offset-assert 0) + (bbox4w bounding-box4w :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype collide-puss-work (structure) + "Scratchpad memory map for probe-using-spheres query." + ((closest-pt vector :inline :offset-assert 0) + (tri-normal vector :inline :offset-assert 16) + (tri-bbox4w bounding-box4w :inline :offset-assert 32) + (spheres-bbox4w bounding-box4w :inline :offset-assert 64) + (spheres collide-puss-sphere 64 :inline :offset-assert 96) ;; guessed by decompiler + ) + :method-count-assert 11 + :size-assert #xc60 + :flag-assert #xb00000c60 + (:methods + (check-mesh-prim-against-spheres "Check a single mesh prim against the spheres in this type." (_type_ collide-cache-prim collide-using-spheres-params) symbol) ;; 9 + (check-sphere-prim-against-spheres "Check a single sphere prim against the spheres in this type." (_type_ collide-cache-prim collide-using-spheres-params) symbol) ;; 10 + ) + ) + +(deftype collide-cache-tri (structure) + "A single triangle inside the collision cache. + Contains a reference back to the source object (like a collide-shape or water-control), and the prim itself." + ((vertex vector 3 :inline :offset-assert 0) ;; guessed by decompiler + (extra-quad uint8 16 :offset-assert 48) ;; guessed by decompiler + (pat pat-surface :offset 48) ;; guessed by decompiler + (collide-ptr basic :offset 52) + (prim-index uint16 :offset 56) + (user16 uint16 :offset 58) + (user32 uint32 :offset 60) + (clear-flags uint128 :offset 48) ;; added + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +(defenum prim-type + :type int8 + (prim -2) + (sphere -1) + (group 0) + (mesh 1) + (fake-prim 2) + ) + +(declare-type collide-list structure) +(deftype collide-cache-prim (structure) + "A primitive inside the collide-cache. + This can represent a sphere, a triangle mesh, or a group of other primitives within a bounding sphere." + ((prim-core collide-prim-core :inline :offset-assert 0) + (extra-quad uint8 16 :offset 32) ;; guessed by decompiler + (ccache collide-cache :offset 32) ;; guessed by decompiler + (prim collide-shape-prim :offset 36) ;; guessed by decompiler + (first-tri uint16 :offset 40) + (num-tris uint16 :offset 42) + (extra basic :offset 44) + (world-sphere vector :inline :offset 0) + (collide-as collide-spec :offset 16) ;; guessed by decompiler + (action collide-action :offset 24) ;; guessed by decompiler + (prim-type prim-type :offset 28) ;; prim-type + ) + :method-count-assert 11 + :size-assert #x30 + :flag-assert #xb00000030 + (:methods + (resolve-moving-sphere-tri (_type_ collide-query sphere vector float collide-action) float) ;; 9 + (resolve-moving-sphere-sphere (_type_ collide-query sphere vector float collide-action) float) ;; 10 + ) + ) + +(deftype collide-cache (basic) + ((num-tris int32 :offset-assert 4) + (max-tris int32 :offset-assert 8) + (num-prims int32 :offset-assert 12) + (max-prims int32 :offset-assert 16) + (ignore-mask pat-surface :offset-assert 20) ;; guessed by decompiler + (ignore-processes process 2 :offset-assert 24) ;; guessed by decompiler + (collide-box bounding-box :inline :offset-assert 32) + (collide-box4w bounding-box4w :inline :offset-assert 64) + (collide-with collide-spec :offset-assert 96) ;; guessed by decompiler + (unused uint32 :offset-assert 100) + (prims collide-cache-prim :offset 112) ;; guessed by decompiler + (tris collide-cache-tri :offset 128) ;; guessed by decompiler + ) + :method-count-assert 28 + :size-assert #x84 + :flag-assert #x1c00000084 + (:methods + (collide-cache-method-9 () none) ;; 9 ;; (debug-draw (_type_) none) + (collide-cache-method-10 () none) ;; 10 ;; (fill-and-probe-using-line-sphere (_type_ collide-query) float) + (collide-cache-method-11 () none) ;; 11 ;; (fill-and-probe-using-spheres (_type_ collide-query) symbol) + (collide-cache-method-12 () none) ;; 12 ;; (fill-using-bounding-box (_type_ collide-query) none) + (collide-cache-method-13 () none) ;; 13 ;; (fill-using-line-sphere (_type_ collide-query) none) + (collide-cache-method-14 () none) ;; 14 ;; (fill-using-spheres (_type_ collide-query) none) + (collide-cache-method-15 () none) ;; 15 ;; (reset (_type_) none) + (collide-cache-method-16 () none) ;; 16 ;; (probe-using-line-sphere (_type_ collide-query) float) + (collide-cache-method-17 () none) ;; 17 ;; (probe-using-spheres (_type_ collide-query) symbol) + (fill-from-bg (_type_ (function collide-hash int collide-list collide-query int) (function collide-cache collide-list collide-query none) collide-query) none) ;; 18 + (collide-cache-method-19 () none) ;; 19 ;; (fill-from-fg-boxes (_type_) none) + (collide-cache-method-20 () none) ;; 20 ;; (fill-from-fg-line-sphere (_type_ collide-query) none) + (collide-cache-method-21 () none) ;; 21 ;; (fill-from-water (_type_ water-control) none) + (collide-cache-method-22 () none) ;; 22 ;; (collide-cache-method-22 () none) + (collide-cache-method-23 () none) ;; 23 ;; (collide-cache-method-23 () none) + (collide-cache-method-24 () none) ;; 24 ;; (collide-cache-method-24 () none) + (collide-cache-method-25 () none) ;; 25 ;; (collide-cache-method-25 () none) + (collide-cache-method-26 () none) ;; 26 + (collide-cache-method-27 () none) ;; 27 + ) + ) + +(deftype collide-list-item (structure) + ((mesh instance-tie :offset-assert 0) ;; guessed by decompiler + (inst basic :offset-assert 4) + ) + :pack-me + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype collide-list (structure) + ((num-items int32 :offset-assert 0) + (items collide-list-item 256 :inline :offset 16) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x810 + :flag-assert #x900000810 + ) + +(define-extern *collide-cache* collide-cache) +(define-extern *collide-list* collide-list) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; collide-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype collide-query (structure) + "Very general collision-query structure. The meaning is different depending on where it used. + This has both inputs from the user, and collision results." + ((best-other-tri collide-tri-result :inline :offset-assert 0) + (best-my-tri collide-tri-result :inline :offset 0) + (ignore-processes process-tree 2 :offset-assert 88) ;; guessed by decompiler + (ignore-process0 process-tree :offset 88) ;; guessed by decompiler + (ignore-process1 process-tree :offset 92) ;; guessed by decompiler + (ignore-pat pat-surface :offset-assert 96) ;; guessed by decompiler + (collide-with collide-spec :offset-assert 100) ;; guessed by decompiler + (overlay-params uint32 3 :offset 112) ;; guessed by decompiler + (bbox bounding-box :inline :offset-assert 128) + (bbox4w bounding-box4w :inline :offset-assert 160) + (bsphere sphere :inline :offset-assert 192) + (start-pos vector :inline :offset-assert 208) + (move-dist vector :inline :offset-assert 224) + (rlength vector :inline :offset-assert 240) + (exit-planes plane 2 :inline :offset-assert 256) ;; guessed by decompiler + (radius float :offset 268) + (inv-mat matrix :inline :offset 288) + (final-pos vector :inline :offset 240) + (spheres (inline-array sphere) :offset 112) ;; guessed by decompiler + (num-spheres uint32 :offset 116) + (solid-only symbol :offset 120) ;; guessed by decompiler + (best-dist float :offset 112) + (best-other-prim collide-shape-prim :offset 116) ;; guessed by decompiler + (best-my-prim collide-shape-prim :offset 120) ;; guessed by decompiler + (move-vec vector :inline :offset 224) + (best-u float :offset 112) + (action-mask collide-action :offset 352) ;; guessed by decompiler + (nav-mesh basic :offset 116) + (best-ccache-prim collide-cache-prim :offset 116) + (local-box4w bounding-box4w :inline :offset-assert 368) + (search-box bounding-box4w :inline :offset-assert 400) + (search-vector vector4w :inline :offset-assert 432) + (instance-mat matrix :inline :offset-assert 448) + (instance-ptr basic :offset-assert 512) + (x-addr uint32 :offset-assert 516) + (x-step uint32 :offset-assert 520) + (y-addr uint32 :offset-assert 524) + (y-step uint32 :offset-assert 528) + (z-addr uint32 :offset-assert 532) + (z-step uint32 :offset-assert 536) + ) + :method-count-assert 9 + :size-assert #x21c + :flag-assert #x90000021c + ) + +(deftype do-push-aways-work (structure) + "Added" + ((cquery collide-query :inline) + (push-vel vector :inline) + (vec33 vector :inline :offset 560) + (cspec collide-spec :offset 576) + ) + ) + +(define-extern *collide-test-flag* symbol) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; shrubbery-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype billboard (drawable) + ((flat adgif-shader :inline :offset-assert 32) + ) + :method-count-assert 17 + :size-assert #x70 + :flag-assert #x1100000070 + ) +|# + +#| +(deftype shrub-view-data (structure) + ((data uint128 3 :offset-assert 0) ;; guessed by decompiler + (texture-giftag qword :inline :offset-assert 0) ;; gs-gif-tag :inline + (consts vector :inline :offset-assert 16) + (fog-clamp vector :inline :offset-assert 32) + (tex-start-ptr int32 :offset-assert 16) + (gifbufsum float :offset-assert 16) + (mtx-buf-ptr int32 :offset-assert 20) + (exp23 float :offset-assert 20) + (fog-0 float :offset-assert 24) + (fog-1 float :offset-assert 28) + (fog-min float :offset-assert 32) + (fog-max float :offset-assert 36) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype shrubbery (drawable) + ((textures (inline-array adgif-shader) :offset-assert 4) ;; guessed by decompiler + (header qword :offset-assert 8) + (obj-qwc uint8 :offset-assert 12) + (vtx-qwc uint8 :offset-assert 13) + (col-qwc uint8 :offset-assert 14) + (stq-qwc uint8 :offset-assert 15) + (obj uint32 :offset-assert 16) + (vtx uint32 :offset-assert 20) + (col uint32 :offset-assert 24) + (stq uint32 :offset-assert 28) + ) + :method-count-assert 17 + :size-assert #x20 + :flag-assert #x1100000020 + ) +|# + +#| +(deftype instance-shrubbery (instance) + ((flat-normal vector :inline :offset-assert 64) + (flat-hwidth float :offset-assert 76) + (color uint32 :offset-assert 8) + ) + :method-count-assert 17 + :size-assert #x50 + :flag-assert #x1100000050 + ) +|# + +;; (deftype drawable-inline-array-instance-shrub (drawable-inline-array) +;; () +;; :flag-assert #x1100000074 +;; ) + +;; (deftype drawable-tree-instance-shrub (drawable-tree) +;; () +;; :flag-assert #x1100000020 +;; ) + +#| +(deftype generic-shrub-fragment (drawable) + ((textures (inline-array adgif-shader) :offset-assert 4) ;; guessed by decompiler + (vtx-cnt uint32 :offset-assert 8) + (cnt-qwc uint8 :offset-assert 12) + (vtx-qwc uint8 :offset-assert 13) + (col-qwc uint8 :offset-assert 14) + (stq-qwc uint8 :offset-assert 15) + (cnt uint32 :offset-assert 16) + (vtx uint32 :offset-assert 20) + (col uint32 :offset-assert 24) + (stq uint32 :offset-assert 28) + ) + :method-count-assert 17 + :size-assert #x20 + :flag-assert #x1100000020 + ) +|# + +;; (deftype prototype-shrubbery (drawable-inline-array) +;; () +;; :flag-assert #x1100000044 +;; ) + +;; (deftype prototype-trans-shrubbery (prototype-shrubbery) +;; () +;; :flag-assert #x1100000044 +;; ) + +;; (deftype prototype-generic-shrub (drawable-group) +;; () +;; :flag-assert #x1100000020 +;; ) + +#| +(deftype shrubbery-matrix (structure) + ((mat matrix :inline :offset-assert 0) + (color qword :inline :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) +|# + +#| +(deftype shrub-near-packet (structure) + ((matrix-tmpl dma-packet :inline :offset-assert 0) + (header-tmpl dma-packet :inline :offset-assert 16) + (stq-tmpl dma-packet :inline :offset-assert 32) + (color-tmpl dma-packet :inline :offset-assert 48) + (vertex-tmpl dma-packet :inline :offset-assert 64) + (mscal-tmpl dma-packet :inline :offset-assert 80) + (init-tmpl dma-packet :inline :offset-assert 96) + (init-data qword 8 :offset-assert 112) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x90 + :flag-assert #x900000090 + ) +|# + +#| +(deftype instance-shrub-work (structure) + ((dummy qword 3 :offset-assert 0) ;; guessed by decompiler + (chaina qword 8 :offset-assert 48) ;; guessed by decompiler + (chainb qword 8 :offset-assert 176) ;; guessed by decompiler + (colors rgba 1024 :offset-assert 304) ;; guessed by decompiler + (matrix-tmpl qword 20 :offset-assert 4400) ;; guessed by decompiler + (count-tmpl vector4w 20 :offset-assert 4720) ;; guessed by decompiler + (mscalf-tmpl dma-packet :inline :offset-assert 5040) + (mscalf-ret-tmpl dma-packet :inline :offset-assert 5056) + (adgif-tmpl dma-gif-packet :inline :offset-assert 5072) + (billboard-tmpl dma-gif-packet :inline :offset-assert 5104) + (billboard-const vector :inline :offset-assert 5136) + (shrub-near-packets shrub-near-packet 6 :offset-assert 5152) ;; guessed by decompiler + (dma-ref dma-packet :inline :offset-assert 6016) + (dma-end dma-packet :inline :offset-assert 6032) + (wind-const vector :inline :offset-assert 6048) + (constants vector :inline :offset-assert 6064) + (color-constant vector4w :inline :offset-assert 6080) + (hmge-d vector :inline :offset-assert 6096) + (hvdf-offset vector :inline :offset-assert 6112) + (wind-force vector :inline :offset-assert 6128) + (color vector :inline :offset-assert 6144) + (bb-color vector :inline :offset-assert 6160) + (min-dist vector :inline :offset-assert 6176) + (temp-vec vector :inline :offset-assert 6192) + (guard-plane plane 4 :offset-assert 6208) ;; guessed by decompiler + (plane plane 4 :offset-assert 6272) ;; guessed by decompiler + (last uint32 4 :offset-assert 6336) ;; guessed by decompiler + (next uint32 4 :offset-assert 6352) ;; guessed by decompiler + (count uint16 4 :offset-assert 6368) ;; guessed by decompiler + (mod-count uint16 4 :offset-assert 6376) ;; guessed by decompiler + (wind-vectors uint32 :offset-assert 6384) + (instance-ptr uint32 :offset-assert 6388) + (chain-ptr uint32 :offset-assert 6392) + (chain-ptr-next uint32 :offset-assert 6396) + (stack-ptr uint32 :offset-assert 6400) + (bucket-ptr uint32 :offset-assert 6404) + (src-ptr uint32 :offset-assert 6408) + (to-spr uint32 :offset-assert 6412) + (from-spr uint32 :offset-assert 6416) + (shrub-count uint32 :offset-assert 6420) + (stack-ptr uint32 :offset-assert 6400) + (node uint32 6 :offset-assert 6428) ;; guessed by decompiler + (length uint32 6 :offset-assert 6452) ;; guessed by decompiler + (prototypes uint32 :offset-assert 6476) + (bucket-ptr uint32 :offset-assert 6404) + (start-bank uint8 20 :offset-assert 6484) ;; guessed by decompiler + (buffer-index uint32 :offset-assert 6504) + (current-spr uint32 :offset-assert 6508) + (current-mem uint32 :offset-assert 6512) + (current-shrub-near-packet uint32 :offset-assert 6516) + (current-shrub-near-trans-packet uint32 :offset-assert 6520) + (to-spr uint32 :offset-assert 6412) + (dma-buffer basic :offset-assert 6528) + (near-last uint32 :offset-assert 6532) + (near-next uint32 :offset-assert 6536) + (near-count uint32 :offset-assert 6540) + (near-trans-last uint32 :offset-assert 6544) + (near-trans-next uint32 :offset-assert 6548) + (near-trans-count uint32 :offset-assert 6552) + (last-shrubs uint32 :offset-assert 6556) + (chains uint32 :offset-assert 6560) + (flags uint32 :offset-assert 6564) + (node-count uint32 :offset-assert 6568) + (inst-count uint32 :offset-assert 6572) + (wait-from-spr uint32 :offset-assert 6576) + (wait-to-spr uint32 :offset-assert 6580) + (texture-dists uint32 :offset-assert 6584) + ) + :method-count-assert 9 + :size-assert #x19bc + :flag-assert #x9000019bc + ) +|# + +#| +(deftype instance-shrub-dma (structure) + ((instancea uint128 325 :offset-assert 0) ;; guessed by decompiler + (instanceb uint128 325 :offset-assert 5200) ;; guessed by decompiler + (outa uint128 128 :offset-assert 10400) ;; guessed by decompiler + (outb uint128 128 :offset-assert 12448) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x38a0 + :flag-assert #x9000038a0 + ) +|# + +;; (define-extern shrubbery-login-post-texture function) ;; (function shrubbery none) +;; (define-extern *shrub-state* object) ;; int + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; tie-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype tie-fragment-debug (structure) + ((num-tris uint16 :offset-assert 0) + (num-dverts uint16 :offset-assert 2) + (debug-lines (array vector-array) :offset-assert 4) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype tie-fragment (drawable) + ((gif-ref (inline-array adgif-shader) :offset-assert 4) ;; guessed by decompiler + (point-ref uint32 :offset-assert 8) + (color-index uint16 :offset-assert 12) + (base-colors uint8 :offset-assert 14) + (tex-count uint16 :offset-assert 32) + (gif-count uint16 :offset-assert 34) + (vertex-count uint16 :offset-assert 36) + (color-count uint16 :offset-assert 38) + (dp-ref uint32 :offset-assert 40) + (dp-qwc uint32 :offset-assert 44) + (generic-ref uint32 :offset-assert 48) + (generic-count uint16 :offset-assert 52) + (normal-count uint16 :offset-assert 54) + (normal-ref uint32 :offset-assert 56) + (debug tie-fragment-debug :offset-assert 60) + ) + :method-count-assert 17 + :size-assert #x40 + :flag-assert #x1100000040 + ) +|# + +#| +(deftype instance-tie (instance) + ((color-indices uint32 :offset-assert 8) + (bucket-ptr prototype-bucket-tie :offset-assert 12) ;; guessed by decompiler + (max-scale uint16 :offset-assert 38) + (rmin-scale uint16 :offset-assert 54) + ) + :method-count-assert 17 + :size-assert #x40 + :flag-assert #x1100000040 + ) +|# + +;; (deftype drawable-inline-array-instance-tie (drawable-inline-array) +;; () +;; :flag-assert #x1100000064 +;; ) + +#| +(deftype drawable-tree-instance-tie (drawable-tree) + ((id int16 :offset-assert 0) + (bsphere vector :inline :offset-assert 12) + (length int16 :offset-assert 2) + (data drawable :dynamic :offset-assert 28) ;; guessed by decompiler + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (prototypes proxy-prototype-array-tie :offset-assert 4) ;; guessed by decompiler + ) + :method-count-assert 17 + :size-assert #x20 + :flag-assert #x1100000020 + ) +|# + +;; (deftype prototype-tie (drawable-inline-array) +;; () +;; :flag-assert #x1100000064 +;; ) + +#| +(deftype tie-matrix (structure) + ((mat matrix :inline :offset-assert 0) + (morph qword :inline :offset-assert 64) + (fog qword :inline :offset-assert 80) + (envmap-flag uint32 :offset-assert 80) + (guard-flag uint32 :offset-assert 84) + (vertex-alpha float :offset-assert 88) + (fog-value float :offset-assert 92) + (fixed-alpha float :offset-assert 68) + ) + :method-count-assert 9 + :size-assert #x60 + :flag-assert #x900000060 + ) +|# + +#| +(deftype instance-tie-work (structure) + ((wind-const vector :inline :offset-assert 0) + (hmge-d vector :inline :offset-assert 16) + (hvdf-offset vector :inline :offset-assert 32) + (wind-force vector :inline :offset-assert 48) + (constant vector :inline :offset-assert 64) + (far-morph vector :inline :offset-assert 80) + (dist-test vector :inline :offset-assert 96) + (min-dist vector :inline :offset-assert 112) + (guard-plane plane 4 :offset-assert 128) ;; guessed by decompiler + (upload-color-0 dma-packet :inline :offset-assert 192) + (upload-color-1 dma-packet :inline :offset-assert 208) + (upload-color-2 dma-packet :inline :offset-assert 224) + (upload-color-ret dma-packet :inline :offset-assert 240) + (upload-color-temp dma-packet :inline :offset-assert 256) + (generic-color-0 dma-packet :inline :offset-assert 272) + (generic-color-1 dma-packet :inline :offset-assert 288) + (generic-color-end dma-packet :inline :offset-assert 304) + (envmap-color-0 dma-packet :inline :offset-assert 320) + (envmap-color-1 dma-packet :inline :offset-assert 336) + (tie-scissor-perspective-matrix matrix :inline :offset-assert 352) + (tod-env-color vector :inline :offset-assert 416) + (morph-temp vector :inline :offset-assert 432) + (fog-temp vector :inline :offset-assert 448) + (fade-temp float :offset-assert 464) + (wind-vectors uint32 :offset-assert 468) + (test-id uint32 :offset-assert 472) + (test-id2 uint32 :offset-assert 476) + (dma-buffer basic :offset-assert 480) + (to-spr uint32 :offset-assert 484) + (from-spr uint32 :offset-assert 488) + (wind-work uint32 :offset-assert 492) + (cur-vis-bits uint32 :offset-assert 496) + (end-vis-bits uint32 :offset-assert 500) + (refl-fade-fac float :offset-assert 504) + (refl-fade-end float :offset-assert 508) + (flags uint32 :offset-assert 512) + (vanish-flag uint32 :offset-assert 516) + (translucent-flag uint32 :offset-assert 520) + (wait-from-spr uint32 :offset-assert 524) + (wait-to-spr uint32 :offset-assert 528) + (use-etie symbol :offset-assert 532) ;; guessed by decompiler + (buffer-start uint32 :offset-assert 536) + (buffer-end uint32 :offset-assert 540) + (tfrag-dists uint32 :offset-assert 544) + (alpha-dists uint32 :offset-assert 548) + (water-dists uint32 :offset-assert 552) + ) + :method-count-assert 9 + :size-assert #x22c + :flag-assert #x90000022c + ) +|# + +#| +(deftype instance-tie-dma (structure) + ((banka instance-tie 32 :offset-assert 4) ;; guessed by decompiler + (bankb instance-tie 32 :offset-assert 2052) ;; guessed by decompiler + (outa uint128 256 :offset-assert 4096) ;; guessed by decompiler + (outb uint128 256 :offset-assert 8192) ;; guessed by decompiler + (work instance-tie-work :offset-assert 12288) + ) + :method-count-assert 9 + :size-assert #x3000 + :flag-assert #x900003000 + ) +|# + +#| +(deftype prototype-tie-work (structure) + ((upload-flushe dma-packet :inline :offset-assert 0) + (upload-palette dma-packet :inline :offset-assert 16) + (upload-model-0 dma-packet :inline :offset-assert 32) + (upload-model-1 dma-packet :inline :offset-assert 48) + (upload-model-2 dma-packet :inline :offset-assert 64) + (upload-model-3 dma-packet :inline :offset-assert 80) + (upload-model-near-0 dma-packet :inline :offset-assert 96) + (upload-model-near-1 dma-packet :inline :offset-assert 112) + (upload-model-near-2 dma-packet :inline :offset-assert 128) + (upload-model-near-3 dma-packet :inline :offset-assert 144) + (upload-model-near-4 dma-packet :inline :offset-assert 160) + (envmap-palette dma-packet :inline :offset-assert 176) + (envmap-shader dma-packet :inline :offset-assert 192) + (upload-envmap-0 dma-packet :inline :offset-assert 208) + (upload-envmap-1 dma-packet :inline :offset-assert 224) + (upload-envmap-2 dma-packet :inline :offset-assert 240) + (upload-envmap-3 dma-packet :inline :offset-assert 256) + (upload-envmap-4 dma-packet :inline :offset-assert 272) + (upload-envmap-scissor-4 dma-packet :inline :offset-assert 288) + (generic-palette dma-packet :inline :offset-assert 304) + (generic-model-0 dma-packet :inline :offset-assert 320) + (generic-model-1 dma-packet :inline :offset-assert 336) + (generic-model-2 dma-packet :inline :offset-assert 352) + (model-next dma-packet :inline :offset-assert 368) + (clamp uint64 :offset-assert 384) + (prototype-array basic :offset-assert 392) + (wait-from-spr uint32 :offset-assert 396) + (wait-to-spr uint32 :offset-assert 400) + (mood mood-context :offset-assert 404) + (wide-level-index uint32 :offset-assert 408) + (last uint32 16 :offset-assert 416) ;; guessed by decompiler + (next uint32 16 :offset-assert 480) ;; guessed by decompiler + (count uint16 16 :offset-assert 544) ;; guessed by decompiler + (tie-last uint32 :offset-assert 416) + (tie-next uint32 :offset-assert 480) + (tie-count uint16 :offset-assert 544) + (trans-last uint32 :offset-assert 420) + (trans-next uint32 :offset-assert 484) + (trans-count uint16 :offset-assert 546) + (water-last uint32 :offset-assert 424) + (water-next uint32 :offset-assert 488) + (water-count uint16 :offset-assert 548) + (scissor-last uint32 :offset-assert 428) + (scissor-next uint32 :offset-assert 492) + (scissor-count uint16 :offset-assert 550) + (scissor-trans-last uint32 :offset-assert 432) + (scissor-trans-next uint32 :offset-assert 496) + (scissor-trans-count uint16 :offset-assert 552) + (scissor-water-last uint32 :offset-assert 436) + (scissor-water-next uint32 :offset-assert 500) + (scissor-water-count uint16 :offset-assert 554) + (envmap-last uint32 :offset-assert 440) + (envmap-next uint32 :offset-assert 504) + (envmap-count uint16 :offset-assert 556) + (envmap-trans-last uint32 :offset-assert 444) + (envmap-trans-next uint32 :offset-assert 508) + (envmap-trans-count uint16 :offset-assert 558) + (envmap-water-last uint32 :offset-assert 448) + (envmap-water-next uint32 :offset-assert 512) + (envmap-water-count uint16 :offset-assert 560) + (envmap-scissor-last uint32 :offset-assert 452) + (envmap-scissor-next uint32 :offset-assert 516) + (envmap-scissor-count uint16 :offset-assert 562) + (envmap-scissor-trans-last uint32 :offset-assert 456) + (envmap-scissor-trans-next uint32 :offset-assert 520) + (envmap-scissor-trans-count uint16 :offset-assert 564) + (envmap-scissor-water-last uint32 :offset-assert 460) + (envmap-scissor-water-next uint32 :offset-assert 524) + (envmap-scissor-water-count uint16 :offset-assert 566) + (generic-last uint32 :offset-assert 464) + (generic-next uint32 :offset-assert 528) + (generic-count uint16 :offset-assert 568) + (generic-trans-last uint32 :offset-assert 468) + (generic-trans-next uint32 :offset-assert 532) + (generic-trans-count uint16 :offset-assert 570) + (generic-water-last uint32 :offset-assert 472) + (generic-water-next uint32 :offset-assert 536) + (generic-water-count uint16 :offset-assert 572) + (vanish-last uint32 :offset-assert 476) + (vanish-next uint32 :offset-assert 540) + (vanish-count uint16 :offset-assert 574) + ) + :method-count-assert 9 + :size-assert #x240 + :flag-assert #x900000240 + ) +|# + +#| +(deftype prototype-tie-dma (structure) + ((colora rgba 256 :offset-assert 0) ;; guessed by decompiler + (colorb rgba 256 :offset-assert 1024) ;; guessed by decompiler + (outa uint128 256 :offset-assert 2048) ;; guessed by decompiler + (outb uint128 256 :offset-assert 6144) ;; guessed by decompiler + (geometry uint32 4 :offset-assert 10240) ;; guessed by decompiler + (next uint32 12 :offset-assert 10256) ;; guessed by decompiler + (count uint16 12 :offset-assert 10304) ;; guessed by decompiler + (counts uint32 4 :offset-assert 10328) ;; guessed by decompiler + (palette-ptr uint32 :offset-assert 10336) + (model-ptr uint32 :offset-assert 10340) + (ret-ptr uint32 :offset-assert 10344) + (length uint32 :offset-assert 10348) + (flags uint32 :offset-assert 10352) + (dma-buffer basic :offset-assert 10356) + (this-frag-count uint32 :offset-assert 10360) + (frag-count uint8 4 :offset-assert 10364) ;; guessed by decompiler + (from-spr uint32 :offset-assert 10368) + (to-spr uint32 :offset-assert 10372) + (spr-out uint32 :offset-assert 10376) + (this-count uint32 :offset-assert 10380) + (scissor-geometry uint32 :offset-assert 10240) + (near-geometry uint32 :offset-assert 10244) + (mid-geometry uint32 :offset-assert 10248) + (far-geometry uint32 :offset-assert 10252) + (scissor-frag-count uint8 :offset-assert 10364) + (near-frag-count uint8 :offset-assert 10365) + (mid-frag-count uint8 :offset-assert 10366) + (far-frag-count uint8 :offset-assert 10367) + (tie-scissor-next uint32 :offset-assert 10256) + (tie-near-next uint32 :offset-assert 10260) + (tie-mid-next uint32 :offset-assert 10264) + (tie-far-next uint32 :offset-assert 10268) + (trans-scissor-next uint32 4 :offset-assert 10256) ;; guessed by decompiler + (trans-near-next uint32 :offset-assert 10260) + (trans-mid-next uint32 :offset-assert 10264) + (trans-far-next uint32 :offset-assert 10268) + (water-scissor-next uint32 4 :offset-assert 10256) ;; guessed by decompiler + (water-near-next uint32 :offset-assert 10260) + (water-mid-next uint32 :offset-assert 10264) + (water-far-next uint32 :offset-assert 10268) + (envmap-scissor-next uint32 4 :offset-assert 10272) ;; guessed by decompiler + (envmap-near-next uint32 :offset-assert 10276) + (envmap-mid-next uint32 :offset-assert 10280) + (envmap-far-next uint32 :offset-assert 10284) + (generic-near-next uint32 :offset-assert 10288) + (generic-mid-next uint32 :offset-assert 10292) + (generic-far-next uint32 :offset-assert 10296) + (vanish-next uint32 :offset-assert 10300) + (tie-count uint16 :offset-assert 10304) + (tie-scissor-count uint16 :offset-assert 10304) + (tie-near-count uint16 :offset-assert 10306) + (tie-mid-count uint16 :offset-assert 10308) + (tie-far-count uint16 :offset-assert 10310) + (trans-count uint16 :offset-assert 10304) + (trans-scissor-count uint16 :offset-assert 10304) + (trans-near-count uint16 :offset-assert 10306) + (trans-mid-count uint16 :offset-assert 10308) + (trans-far-count uint16 :offset-assert 10310) + (water-count uint16 :offset-assert 10304) + (water-scissor-count uint16 :offset-assert 10304) + (water-near-count uint16 :offset-assert 10306) + (water-mid-count uint16 :offset-assert 10308) + (water-far-count uint16 :offset-assert 10310) + (envmap-count uint16 :offset-assert 10312) + (envmap-scissor-count uint16 :offset-assert 10312) + (envmap-near-count uint16 :offset-assert 10314) + (envmap-mid-count uint16 :offset-assert 10316) + (envmap-far-count uint16 :offset-assert 10318) + (generic-count uint16 :offset-assert 10320) + (generic-near-count uint16 :offset-assert 10320) + (generic-mid-count uint16 :offset-assert 10322) + (generic-far-count uint16 :offset-assert 10324) + (vanish-count uint16 :offset-assert 10326) + (next-clear uint32 3 :offset-assert 10256) ;; guessed by decompiler + (count-clear uint16 3 :offset-assert 10304) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x2890 + :flag-assert #x900002890 + ) +|# + +;; (define-extern *instance-tie-work-copy* object) ;; instance-tie-work + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; tfrag-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype tfragment-stats (structure) + ((num-tris uint16 4 :offset-assert 0) ;; guessed by decompiler + (num-dverts uint16 4 :offset-assert 8) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype tfragment-debug-data (structure) + ((stats tfragment-stats :inline :offset-assert 0) + (debug-lines (array vector-array) :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) +|# + +#| +(deftype generic-tfragment (structure) + ((dummy int32 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype tfragment (drawable) + ((color-index uint16 :offset-assert 6) + (debug-data tfragment-debug-data :offset-assert 8) + (color-indices uint32 :offset-assert 12) + (colors uint32 :offset-assert 12) + (dma-chain uint32 3 :offset-assert 32) ;; guessed by decompiler + (dma-common uint32 :offset-assert 32) + (dma-level-0 uint32 :offset-assert 32) + (dma-base uint32 :offset-assert 36) + (dma-level-1 uint32 :offset-assert 40) + (dma-qwc uint8 4 :offset-assert 44) ;; guessed by decompiler + (shader (inline-array adgif-shader) :offset-assert 48) ;; guessed by decompiler + (num-shaders uint8 :offset-assert 52) + (num-base-colors uint8 :offset-assert 53) + (num-level0-colors uint8 :offset-assert 54) + (num-level1-colors uint8 :offset-assert 55) + (color-offset uint8 :offset-assert 56) + (color-count uint8 :offset-assert 57) + (texture-masks-index uint16 :offset-assert 58) + (generic generic-tfragment :offset-assert 60) + ) + :method-count-assert 17 + :size-assert #x40 + :flag-assert #x1100000040 + ) +|# + +;; (deftype drawable-inline-array-tfrag (drawable-inline-array) +;; () +;; :flag-assert #x1100000064 +;; ) + +;; (deftype drawable-inline-array-tfrag-trans (drawable-inline-array-tfrag) +;; () +;; :flag-assert #x11000000b4 +;; ) + +;; (deftype drawable-inline-array-tfrag-water (drawable-inline-array-tfrag) +;; () +;; :flag-assert #x11000000b4 +;; ) + +;; (deftype drawable-tree-tfrag (drawable-tree) +;; () +;; :flag-assert #x1100000020 +;; ) + +;; (deftype drawable-tree-tfrag-trans (drawable-tree-tfrag) +;; () +;; :flag-assert #x1100000020 +;; ) + +;; (deftype drawable-tree-tfrag-water (drawable-tree-tfrag) +;; () +;; :flag-assert #x1100000020 +;; ) + +;; (deftype drawable-tree-tfrag-shared (drawable-tree-tfrag) +;; () +;; :flag-assert #x1100000020 +;; ) + +;; (deftype drawable-tree-tfrag-trans-shared (drawable-tree-tfrag-shared) +;; () +;; :flag-assert #x1100000020 +;; ) + +;; (deftype drawable-tree-tfrag-water-shared (drawable-tree-tfrag-shared) +;; () +;; :flag-assert #x1100000020 +;; ) + +#| +(deftype tfrag-dists (structure) + ((data uint32 16 :offset-assert 0) ;; guessed by decompiler + (vector vector 4 :offset-assert 0) ;; guessed by decompiler + (k0s vector 2 :offset-assert 0) ;; guessed by decompiler + (k1s vector 2 :offset-assert 32) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) +|# + +#| +(deftype tfrag-data (structure) + ((data uint32 56 :offset-assert 0) ;; guessed by decompiler + (vector vector 14 :offset-assert 0) ;; guessed by decompiler + (fog vector :inline :offset-assert 0) + (val vector :inline :offset-assert 16) + (strgif qword :inline :offset-assert 32) ;; gs-gif-tag :inline + (fangif qword :inline :offset-assert 48) ;; gs-gif-tag :inline + (adgif qword :inline :offset-assert 64) ;; gs-gif-tag :inline + (hvdf-offset vector :inline :offset-assert 80) + (hmge-scale vector :inline :offset-assert 96) + (invh-scale vector :inline :offset-assert 112) + (ambient vector :inline :offset-assert 128) + (guard vector :inline :offset-assert 144) + (dists tfrag-dists :inline :offset-assert 160) + (k0s uint128 2 :offset-assert 160) ;; guessed by decompiler + (k1s uint128 2 :offset-assert 192) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #xe0 + :flag-assert #x9000000e0 + ) +|# + +#| +(deftype tfrag-control (structure) + ((num-base-points uint32 :offset-assert 0) + (num-shared-base-points uint32 :offset-assert 4) + (num-level0-points uint32 :offset-assert 8) + (num-shared-level0-points uint32 :offset-assert 12) + (num-level1-points uint32 :offset-assert 16) + (num-shared-level1-points uint32 :offset-assert 20) + (ptr-vtxdata uint32 :offset-assert 24) + (ptr-base-points uint32 :offset-assert 28) + (ptr-shared-base-points uint32 :offset-assert 32) + (ptr-level0-points uint32 :offset-assert 36) + (ptr-shared-level0-points uint32 :offset-assert 40) + (ptr-level1-points uint32 :offset-assert 44) + (ptr-shared-level1-points uint32 :offset-assert 48) + (ptr-draw-points uint32 :offset-assert 52) + (ptr-interpolated-0 uint32 :offset-assert 56) + (ptr-shared-interpolated-0 uint32 :offset-assert 60) + (ptr-interpolated1 uint32 :offset-assert 64) + (ptr-shared-interpolated1 uint32 :offset-assert 68) + (ptr-strip-data uint32 :offset-assert 72) + (ptr-texture-data uint32 :offset-assert 76) + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) +|# + +#| +(deftype tfrag-stats (structure) + ((from int32 :offset-assert 0) + (to int32 :offset-assert 4) + (cnt int32 :offset-assert 8) + (tris int32 :offset-assert 12) + (tfaces int32 :offset-assert 16) + (tfrags int32 :offset-assert 20) + (dtris int32 :offset-assert 24) + (base-verts int32 :offset-assert 28) + (level0-verts int32 :offset-assert 32) + (level1-verts int32 :offset-assert 36) + (dma-cnt int32 :offset-assert 40) + (dma-dta int32 :offset-assert 44) + (dma-tex int32 :offset-assert 48) + (strips int32 :offset-assert 52) + (drawpoints int32 :offset-assert 56) + (vif int32 :offset-assert 60) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) +|# + +#| +(deftype tfrag-packet (structure) + ((tag uint128 2 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype tfrag-work (structure) + ((base-tmpl dma-packet :inline :offset-assert 0) + (level-0-tmpl dma-packet :inline :offset-assert 16) + (common-tmpl dma-packet :inline :offset-assert 32) + (level-1-tmpl dma-packet :inline :offset-assert 48) + (color-tmpl dma-packet :inline :offset-assert 64) + (frag-dists vector :inline :offset-assert 80) + (min-dist vector :inline :offset-assert 96) + (color-ptr vector4w :inline :offset-assert 112) + (tr-stat-tfrag tr-stat :offset-assert 128) + (tr-stat-tfrag-scissor tr-stat :offset-assert 132) + (vu1-enable-tfrag int32 :offset-assert 136) + (vu1-enable-tfrag-scissor int32 :offset-assert 140) + (cur-vis-bits uint32 :offset-assert 144) + (end-vis-bits uint32 :offset-assert 148) + (src-ptr uint32 :offset-assert 152) + (last-call uint32 :offset-assert 156) + (dma-buffer basic :offset-assert 160) + (test-id uint32 :offset-assert 164) + (wait-from-spr uint32 :offset-assert 168) + (wait-to-spr uint32 :offset-assert 172) + (near-wait-from-spr uint32 :offset-assert 176) + (near-wait-to-spr uint32 :offset-assert 180) + (max-fragment uint16 :offset-assert 184) + (min-fragment uint16 :offset-assert 186) + (texture-dists uint32 :offset-assert 188) + ) + :method-count-assert 9 + :size-assert #xc0 + :flag-assert #x9000000c0 + ) +|# + +#| +(deftype tfrag-dma (structure) + ((banka tfragment 16 :offset-assert 4) ;; guessed by decompiler + (bankb tfragment 16 :offset-assert 1028) ;; guessed by decompiler + (outa uint128 128 :offset-assert 2048) ;; guessed by decompiler + (outb uint128 128 :offset-assert 4096) ;; guessed by decompiler + (colors rgba 2048 :offset-assert 6144) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x37fc + :flag-assert #x9000037fc + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; background-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype background-work (basic) + ((tfrag-tree-count int32 :offset-assert 4) + (tfrag-trees drawable-tree-tfrag 19 :offset-assert 8) ;; guessed by decompiler + (tfrag-levels level 19 :offset-assert 84) ;; guessed by decompiler + (tfrag-trans-tree-count int32 :offset-assert 160) + (tfrag-trans-trees drawable-tree-tfrag-trans 19 :offset-assert 164) ;; guessed by decompiler + (tfrag-trans-levels level 19 :offset-assert 240) ;; guessed by decompiler + (tfrag-water-tree-count int32 :offset-assert 316) + (tfrag-water-trees drawable-tree-tfrag-water 19 :offset-assert 320) ;; guessed by decompiler + (tfrag-water-levels level 19 :offset-assert 396) ;; guessed by decompiler + (tfrag-shared-tree-count int32 :offset-assert 472) + (tfrag-shared-trees UNKNOWN 19 :offset-assert 476) + (tfrag-shared-levels UNKNOWN 19 :offset-assert 552) + (tfrag-trans-shared-tree-count int32 :offset-assert 628) + (tfrag-trans-shared-trees UNKNOWN 19 :offset-assert 632) + (tfrag-trans-shared-levels UNKNOWN 19 :offset-assert 708) + (tfrag-water-shared-tree-count int32 :offset-assert 784) + (tfrag-water-shared-trees UNKNOWN 19 :offset-assert 788) + (tfrag-water-shared-levels UNKNOWN 19 :offset-assert 864) + (shrub-tree-count int32 :offset-assert 940) + (shrub-trees drawable-tree-instance-shrub 19 :offset-assert 944) ;; guessed by decompiler + (shrub-levels level 19 :offset-assert 1020) ;; guessed by decompiler + (tie-tree-count int32 :offset-assert 1096) + (tie-trees drawable-tree-instance-tie 19 :offset-assert 1100) ;; guessed by decompiler + (tie-levels level 19 :offset-assert 1176) ;; guessed by decompiler + (wait-to-vu0 uint32 :offset-assert 1252) + ) + :method-count-assert 9 + :size-assert #x4e8 + :flag-assert #x9000004e8 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; subdivide-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype subdivide-settings (basic) + ((dist float 5 :offset-assert 4) ;; guessed by decompiler + (meters float 5 :offset-assert 24) ;; guessed by decompiler + (close float 20 :offset-assert 44) ;; guessed by decompiler + (far float 20 :offset-assert 124) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #xcc + :flag-assert #x9000000cc + ) +|# + +#| +(deftype subdivide-dists (structure) + ((data uint32 32 :offset-assert 0) ;; guessed by decompiler + (vector vector 8 :offset-assert 0) ;; guessed by decompiler + (k0s uint128 4 :offset-assert 0) ;; guessed by decompiler + (k1s uint128 4 :offset-assert 64) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) +|# + +#| +(deftype terrain-stats (structure) + ((pris tr-stat :inline :offset-assert 0) + (tie-generic tr-stat :inline :offset-assert 16) + (tie-vanish tr-stat :inline :offset-assert 32) + (tie tr-stat :inline :offset-assert 48) + (tie-scissor tr-stat :inline :offset-assert 64) + (tie-envmap tr-stat :inline :offset-assert 80) + (tie-envmap-scissor tr-stat :inline :offset-assert 96) + (tie-trans tr-stat :inline :offset-assert 112) + (tie-scissor-trans tr-stat :inline :offset-assert 128) + (tie-envmap-trans tr-stat :inline :offset-assert 144) + (tie-envmap-scissor-trans tr-stat :inline :offset-assert 160) + (tie-water tr-stat :inline :offset-assert 176) + (tie-scissor-water tr-stat :inline :offset-assert 192) + (tie-envmap-water tr-stat :inline :offset-assert 208) + (tie-envmap-scissor-water tr-stat :inline :offset-assert 224) + (shrub-near tr-stat :inline :offset-assert 240) + (shrub tr-stat :inline :offset-assert 256) + (tfrag-scissor tr-stat :inline :offset-assert 272) + (tfrag tr-stat :inline :offset-assert 288) + (billboard tr-stat :inline :offset-assert 304) + (tfrag-trans tr-stat :inline :offset-assert 320) + (tfrag-scissor-trans tr-stat :inline :offset-assert 336) + (tfrag-water tr-stat :inline :offset-assert 352) + (tfrag-scissor-water tr-stat :inline :offset-assert 368) + (trans-pris tr-stat :inline :offset-assert 384) + (trans-shrub tr-stat :inline :offset-assert 400) + (ocean-mid tr-stat :inline :offset-assert 416) + (ocean-near tr-stat :inline :offset-assert 432) + (shadow tr-stat :inline :offset-assert 448) + (total tr-stat :inline :offset-assert 464) + ) + :method-count-assert 9 + :size-assert #x1e0 + :flag-assert #x9000001e0 + ) +|# + +#| +(deftype background-area (structure) + ((dma-area uint8 14336 :offset-assert 0) ;; guessed by decompiler + (vis-list uint8 2048 :offset-assert 14336) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x4000 + :flag-assert #x900004000 + ) +|# + +#| +(deftype foreground-area (structure) + ((generic-work generic-work :inline :offset-assert 0) + (foreground-work foreground-work :inline :offset-assert 0) + (joint-work joint-work :inline :offset-assert 0) + (bone-mem bone-memory :inline :offset-assert 0) + (shadow-work shadow-work :inline :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x3fe0 + :flag-assert #x900003fe0 + ) +|# + +#| +(deftype region-prim-area (structure) + ((region-prim-list region-prim-list :inline :offset-assert 0) + (pos vector :inline :offset-assert 1296) + (ray vector :inline :offset-assert 1328) + (region-enter-count int32 :offset-assert 1360) + (region-enter-list region 320 :offset-assert 1364) ;; guessed by decompiler + (region-enter-prim-list drawable-region-sphere 320 :offset-assert 2644) ;; guessed by decompiler + (region-exit-count int32 :offset-assert 3924) + (region-exit-list region 320 :offset-assert 3928) ;; guessed by decompiler + (region-exit-prim-list drawable-region-sphere 320 :offset-assert 5208) ;; guessed by decompiler + (region-inside-count int32 :offset-assert 6488) + (region-inside-list region 320 :offset-assert 6492) ;; guessed by decompiler + (region-inside-prim-list drawable-region-sphere 320 :offset-assert 7772) ;; guessed by decompiler + (region-start-count int32 :offset-assert 9052) + (region-start-list region 320 :offset-assert 9056) ;; guessed by decompiler + (region-start-prim-list drawable-region-sphere 320 :offset-assert 10336) ;; guessed by decompiler + ) + :method-count-assert 13 + :size-assert #x2d60 + :flag-assert #xd00002d60 + (:methods + (region-prim-area-method-9 () none) ;; 9 ;; (track-entered-region! (_type_ drawable-region-sphere) int) + (region-prim-area-method-10 () none) ;; 10 ;; (track-exited-region! (_type_ drawable-region-sphere) int) + (region-prim-area-method-11 () none) ;; 11 ;; (track-inside-region! (_type_ drawable-region-sphere) int) + (region-prim-area-method-12 () none) ;; 12 ;; (track-start-region! (_type_ drawable-region-sphere) int) + ) + ) +|# + +#| +(deftype sprite-area (structure) + ((clock-data vector 22 :offset-assert 0) ;; guessed by decompiler + (buffer uint8 :dynamic :offset-assert 352) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x160 + :flag-assert #x900000160 + ) +|# + +#| +(deftype work-area (structure) + ((background background-area :inline :offset-assert 0) + (foreground foreground-area :inline :offset-assert 0) + (region-prim region-prim-area :inline :offset-assert 0) + (sprite sprite-area :inline :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4000 + :flag-assert #x900004000 + ) +|# + +#| +(deftype terrain-context (structure) + ((work work-area :inline :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4000 + :flag-assert #x900004000 + ) +|# + +;; (define-extern *terrain-stats* object) ;; terrain-stats +;; (define-extern *collide-stats* object) ;; collide-stats + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; entity-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; +++entity-h:entity-perm-status +(defenum entity-perm-status + :bitfield #t + :type uint16 + (bit-0 0) ;; blocks birth + (error 1) + (dead 2) + (no-kill 3) + (bit-4 4) + (bit-5 5) + (subtask-complete 6) + (bit-7 7) + (complete 8) + (bit-9 9) + (bit-10 10) + (save 11) + (bit-12 12) + (bit-13 13) + (bit-14 14) + (bit-15 15) + ) +;; ---entity-h:entity-perm-status + +(deftype entity-perm (structure) + "Entity information that gets persisted in the save file." + ((user-object object 2 :offset-assert 0) ;; guessed by decompiler + (user-uint64 uint64 :offset 0) + (user-float float 2 :offset 0) ;; guessed by decompiler + (user-int32 int32 2 :offset 0) ;; guessed by decompiler + (user-uint32 uint32 2 :offset 0) ;; guessed by decompiler + (user-int16 int16 4 :offset 0) ;; guessed by decompiler + (user-uint16 uint16 4 :offset 0) ;; guessed by decompiler + (user-int8 int8 8 :offset 0) ;; guessed by decompiler + (user-uint8 uint8 8 :offset 0) ;; guessed by decompiler + (status entity-perm-status :offset-assert 8) ;; entity-perm-status + (dummy uint8 1 :offset-assert 10) ;; guessed by decompiler + (task game-task :offset-assert 11) ;; game-task + (aid actor-id :offset-assert 12) ;; guessed by decompiler + (quad uint128 :offset 0) + ) + :method-count-assert 10 + :size-assert #x10 + :flag-assert #xa00000010 + (:methods + (update (_type_ symbol entity-perm-status) _type_) ;; 9 + ) + ) + +(deftype entity-links (structure) + "A linked list of entities with some extra data about their current status." + ((prev-link entity-links :offset-assert 0) + (next-link entity-links :offset-assert 4) + (entity entity :offset-assert 8) ;; guessed by decompiler + (process process :offset-assert 12) ;; guessed by decompiler + (level level :offset-assert 16) ;; guessed by decompiler + (vis-id int32 :offset-assert 20) + (kill-mask task-mask :offset-assert 24) + (vis-dist meters :offset-assert 28) + (trans vector :inline :offset-assert 32) + (perm entity-perm :inline :offset-assert 48) + (status entity-perm-status :offset 56) ;; entity-perm-status + (aid uint32 :offset 60) + (task game-task :offset 59) ;; game-task + ) + :method-count-assert 10 + :size-assert #x40 + :flag-assert #xa00000040 + (:methods + (entity-links-method-9 () none) ;; 9 ;; (birth? (_type_ vector) symbol) + ) + ) + +(deftype entity-perm-array (inline-array-class) + ((data entity-perm :dynamic :inline :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + +(deftype entity-links-array (inline-array-class) + "An array of [[entity-links]]. + Levels store a reference to this which holds all the entities in the level." + ((data entity-links :dynamic :inline :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + +;; (deftype entity (res-lump) +;; () +;; :flag-assert #x1b00000038 +;; ) + +;; (deftype entity-camera (entity) +;; () +;; :flag-assert #x1b00000050 +;; ) + +;; (deftype entity-nav-mesh (entity) +;; () +;; :flag-assert #x1d0000003c +;; ) + +;; (deftype entity-race-mesh (entity) +;; () +;; :flag-assert #x1d0000003c +;; ) + +;; (deftype entity-actor (entity) +;; () +;; :flag-assert #x2100000060 +;; ) + +(deftype actor-reference (structure) + ((actor entity-actor :offset-assert 0) ;; guessed by decompiler + (id uint32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype actor-group (inline-array-class) + ((data actor-reference :dynamic :inline :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + +(deftype entity-info (basic) + ((ptype object :offset-assert 4) ;; guessed by decompiler + (pool symbol :offset-assert 8) ;; guessed by decompiler + (heap-size int32 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype actor-bank (basic) + ((pause-dist meters :offset-assert 4) + (birth-dist meters :offset-assert 8) + (birth-max int32 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(define-extern *generate-actor-vis* symbol) +(define-extern *generate-actor-vis-start* symbol) +(define-extern *generate-actor-vis-output* symbol) +(define-extern *ACTOR-bank* actor-bank) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; entity-more-perm ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype entity-more-perm (structure) + ((aid uint32 :offset-assert 0) + (ent basic :offset-assert 4) + (user-object UNKNOWN 2 :offset-assert 8) + (user-uint64 uint64 :offset-assert 8) + (user-float UNKNOWN 2 :offset-assert 8) + (user-int32 UNKNOWN 2 :offset-assert 8) + (user-uint32 UNKNOWN 2 :offset-assert 8) + (user-int16 UNKNOWN 4 :offset-assert 8) + (user-uint16 UNKNOWN 4 :offset-assert 8) + (user-int8 UNKNOWN 8 :offset-assert 8) + (user-uint8 UNKNOWN 8 :offset-assert 8) + ) + :method-count-assert 10 + :size-assert #x10 + :flag-assert #xa00000010 + (:methods + (entity-more-perm-method-9 () none) ;; 9 + ) + ) +|# + +#| +(deftype entity-more-perm-hash (structure) + ((data UNKNOWN 512 :offset-assert 0) + (entity-more-perm-ct int32 :offset-assert 8192) + (entity-indices UNKNOWN 1024 :offset-assert 8196) + ) + :method-count-assert 15 + :size-assert #x2804 + :flag-assert #xf00002804 + (:methods + (entity-more-perm-hash-method-9 () none) ;; 9 + (entity-more-perm-hash-method-10 () none) ;; 10 + (entity-more-perm-hash-method-11 () none) ;; 11 + (entity-more-perm-hash-method-12 () none) ;; 12 + (entity-more-perm-hash-method-13 () none) ;; 13 + (entity-more-perm-hash-method-14 () none) ;; 14 + ) + ) +|# + +;; (define-extern *entity-more-perm* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; sprite-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype sprite-vec-data-2d (structure) + ((x-y-z-sx vector :inline :offset-assert 0) + (flag-rot-sy vector :inline :offset-assert 16) + (r-g-b-a vector :inline :offset-assert 32) + (x float :offset-assert 0) + (y float :offset-assert 4) + (z float :offset-assert 8) + (sx float :offset-assert 12) + (sy float :offset-assert 28) + (rot float :offset-assert 24) + (flag int32 :offset-assert 16) + (matrix int32 :offset-assert 20) + (warp-turns int32 :offset-assert 16) + (r float :offset-assert 32) + (g float :offset-assert 36) + (b float :offset-assert 40) + (a float :offset-assert 44) + (trans vector3s :inline :offset-assert 0) + (color rgbaf :inline :offset-assert 32) + (data uint128 1 :offset-assert 0) ;; guessed by decompiler + (data64 uint64 6 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype sprite-array-2d (basic) + ((num-sprites int32 2 :offset-assert 4) ;; guessed by decompiler + (num-valid int32 2 :offset-assert 12) ;; guessed by decompiler + (vec-data pointer :offset-assert 20) ;; guessed by decompiler + (adgif-data (inline-array adgif-shader) :offset-assert 24) ;; guessed by decompiler + (pad uint128 4 :offset-assert 32) ;; guessed by decompiler + (data uint128 1 :offset-assert 96) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x70 + :flag-assert #x900000070 + ) +|# + +#| +(deftype sprite-vec-data-3d (structure) + ((x-y-z-sx vector :inline :offset-assert 0) + (qx-qy-qz-sy vector :inline :offset-assert 16) + (r-g-b-a vector :inline :offset-assert 32) + (x float :offset-assert 0) + (y float :offset-assert 4) + (z float :offset-assert 8) + (sx float :offset-assert 12) + (sy float :offset-assert 28) + (qx float :offset-assert 16) + (qy float :offset-assert 20) + (qz float :offset-assert 24) + (r float :offset-assert 32) + (g float :offset-assert 36) + (b float :offset-assert 40) + (a float :offset-assert 44) + (trans vector3s :inline :offset-assert 0) + (rot vector3s :inline :offset-assert 16) + (color rgbaf :inline :offset-assert 32) + (data uint128 1 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype sprite-array-3d (basic) + ((num-sprites int32 2 :offset-assert 4) ;; guessed by decompiler + (num-valid int32 2 :offset-assert 12) ;; guessed by decompiler + (vec-data pointer :offset-assert 20) ;; guessed by decompiler + (adgif-data (inline-array adgif-shader) :offset-assert 24) ;; guessed by decompiler + (data uint128 1 :offset-assert 32) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; simple-sprite-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype sprite-glow-data (structure) + ((position vector :inline :offset-assert 0) + (size-x float :offset 12) + (size-probe float :offset 16) + (z-offset float :offset-assert 20) + (rot-angle float :offset-assert 24) + (size-y float :offset-assert 28) + (color rgbaf :inline :offset-assert 32) + (fade-a float :offset-assert 48) + (fade-b float :offset-assert 52) + (tex-id texture-id :offset-assert 56) ;; guessed by decompiler + (dummy uint32 :offset-assert 60) + (quads vector 4 :inline :offset 0) + ) + :method-count-assert 10 + :size-assert #x40 + :flag-assert #xa00000040 + (:methods + (set-trans (_type_ vector) none) ;; 9 + ) + ) + +(deftype simple-sprite-system (structure) + ((count int16 :offset-assert 0) + (max-count int16 :offset-assert 2) + (data (inline-array sprite-glow-data) :offset-assert 4) ;; guessed by decompiler + ) + :method-count-assert 12 + :size-assert #x8 + :flag-assert #xc00000008 + (:methods + (add! "Add a sprite to the list, to be drawn later." (_type_ sprite-glow-data) none) ;; 9 + (draw-all-sprites! "Submit all sprites to the sprite-glow renderer" (_type_ dma-buffer) none) ;; 10 + (clear! "Reset the list." (_type_) none) ;; 11 + ) + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; eye-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype eye (structure) + ((data vector 2 :offset-assert 0) ;; guessed by decompiler + (x float :offset-assert 0) + (y float :offset-assert 4) + (lid float :offset-assert 8) + (iris-scale float :offset-assert 16) + (pupil-scale float :offset-assert 20) + (lid-scale float :offset-assert 24) + (tbp int32 :offset-assert 32) + (shader-count uint32 :offset-assert 36) + (shader adgif-shader 8 :offset-assert 40) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x48 + :flag-assert #x900000048 + ) +|# + +#| +(deftype eye-control (structure) + ((process uint64 :offset-assert 0) ;; handle + (random-time uint16 :offset-assert 8) + (bucket uint16 :offset-assert 10) + (blink float :offset-assert 12) + (shaders (inline-array adgif-shader) :offset-assert 16) ;; guessed by decompiler + (eyes eye 2 :offset-assert 32) ;; guessed by decompiler + (left eye :inline :offset-assert 32) + (right eye :inline :offset-assert 112) + (level-index int16 :offset-assert 192) + (high-res? symbol :offset-assert 196) ;; guessed by decompiler + (level-texture-page uint32 :offset-assert 200) + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 9 + :size-assert #x10c + :flag-assert #x90000010c + ) +|# + +#| +(deftype eye-control-array (basic) + ((data eye-control 32 :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x2210 + :flag-assert #x900002210 + ) +|# + +#| +(deftype eye-work (structure) + ((sprite-tmpl dma-gif-packet :inline :offset-assert 0) + (sprite-tmpl2 dma-gif-packet :inline :offset-assert 32) + (adgif-tmpl dma-gif-packet :inline :offset-assert 64) + (blink-table float 10 :offset-assert 96) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x88 + :flag-assert #x900000088 + ) +|# + +;; (define-extern *eye-control-array* eye-control-array) ;; eye-control-array + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; camera-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; +++camera-h:cam-index-options +(defenum cam-index-options + :type uint32 + :bitfield #t + (SPHERICAL) + (RADIAL) + ) +;; ---camera-h:cam-index-options + +;; +++camera-h:slave-los-state +(defenum slave-los-state + :type uint32 + (none 0) + (cw 1) + (ccw 2) + (between 3) + ) +;; ---camera-h:slave-los-state + +(deftype cam-index (structure) + ((flags cam-index-options :offset-assert 0) ;; guessed by decompiler + (vec vector 2 :inline :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 11 + :size-assert #x30 + :flag-assert #xb00000030 + (:methods + (cam-index-method-9 (_type_ symbol entity vector curve) symbol) ;; 9 + (cam-index-method-10 (_type_ vector) float) ;; 10 + ) + ) + +(deftype tracking-point (structure) + ((position vector :inline :offset-assert 0) + (direction vector :inline :offset-assert 16) + (tp-length float :offset-assert 32) + (next int32 :offset-assert 36) + (incarnation int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) + +(deftype tracking-spline-sampler (structure) + ((cur-pt int32 :offset-assert 0) + (partial-pt float :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype tracking-spline (structure) + ((point tracking-point 32 :inline :offset-assert 0) ;; guessed by decompiler + (summed-len float :offset-assert 1536) + (free-point int32 :offset-assert 1540) + (used-point int32 :offset-assert 1544) + (partial-point float :offset-assert 1548) + (end-point int32 :offset-assert 1552) + (next-to-last-point int32 :offset-assert 1556) + (max-move float :offset-assert 1560) + (sample-len float :offset-assert 1564) + (used-count int32 :offset-assert 1568) + (old-position vector :inline :offset-assert 1584) + (debug-old-position vector :inline :offset-assert 1600) + (debug-out-position vector :inline :offset-assert 1616) + (debug-last-point int32 :offset-assert 1632) + ) + :method-count-assert 24 + :size-assert #x664 + :flag-assert #x1800000664 + (:methods + (tracking-spline-method-9 (_type_) none) ;; 9 + (tracking-spline-method-10 (_type_ vector) none) ;; 10 + (debug-point-info (_type_ int) none) ;; 11 + (debug-all-points (_type_) none) ;; 12 + (tracking-spline-method-13 (_type_ int) none) ;; 13 + (tracking-spline-method-14 (_type_ tracking-spline-sampler) none) ;; 14 + (tracking-spline-method-15 (_type_) none) ;; 15 + (tracking-spline-method-16 (_type_ float) none) ;; 16 + (tracking-spline-method-17 (_type_ vector float float symbol) int) ;; 17 + (tracking-spline-method-18 (_type_ float vector vector tracking-spline-sampler) vector) ;; 18 + (tracking-spline-method-19 (_type_ float vector vector tracking-spline-sampler) vector) ;; 19 + (tracking-spline-method-20 (_type_ vector int) none) ;; 20 + (tracking-spline-method-21 (_type_ vector float float float float vector) vector) ;; 21 + (tracking-spline-method-22 (_type_ float) symbol) ;; 22 + (debug-draw-spline (_type_) none) ;; 23 + ) + ) + +(deftype cam-float-seeker (structure) + ((target float :offset-assert 0) + (value float :offset-assert 4) + (vel float :offset-assert 8) + (accel float :offset-assert 12) + (max-vel float :offset-assert 16) + (max-partial float :offset-assert 20) + ) + :pack-me + :method-count-assert 13 + :size-assert #x18 + :flag-assert #xd00000018 + (:methods + (init (_type_ float float float float) none) ;; 9 + (copy-to (_type_ _type_) none) ;; 10 + (update! (_type_ float) none) ;; 11 + (jump-to-target! (_type_ float) float) ;; 12 + ) + ) + +(deftype cam-vector-seeker (structure) + ((target vector :inline :offset-assert 0) + (value vector :inline :offset-assert 16) + (vel vector :inline :offset-assert 32) + (accel float :offset-assert 48) + (max-vel float :offset-assert 52) + (max-partial float :offset-assert 56) + ) + :method-count-assert 11 + :size-assert #x3c + :flag-assert #xb0000003c + (:methods + (init (_type_ vector float float float) none) ;; 9 + (update! (_type_ vector) none) ;; 10 + ) + ) + +(deftype cam-rotation-tracker (structure) + ((inv-mat matrix :inline :offset-assert 0) + (no-follow basic :offset-assert 64) + (follow-pt vector :inline :offset-assert 80) + (follow-off vector :inline :offset-assert 96) + (follow-blend float :offset-assert 112) + (tilt-adjust cam-float-seeker :inline :offset-assert 116) + (point-of-interest-blend cam-float-seeker :inline :offset-assert 140) + (underwater-blend cam-float-seeker :inline :offset-assert 164) + (looking-at vector :inline :offset-assert 192) + (looking-interesting vector :inline :offset-assert 208) + (old-cam-trans vector :inline :offset-assert 224) + (follow-height-extra cam-float-seeker :inline :offset-assert 240) + ) + :method-count-assert 9 + :size-assert #x108 + :flag-assert #x900000108 + ) + +(deftype camera-combiner (process) + ((trans vector :inline :offset-assert 144 :score 1) + (inv-camera-rot matrix :inline :offset-assert 160) + (fov float :offset-assert 224) + (interp-val float :offset-assert 228) + (interp-step float :offset-assert 232) + (dist-from-src float :offset-assert 236) + (dist-from-dest float :offset-assert 240) + (flip-control-axis vector :inline :offset-assert 256) + (velocity vector :inline :offset-assert 272) + (tracking-status uint64 :offset-assert 288) + (tracking-options int32 :offset-assert 296) + (tracking cam-rotation-tracker :inline :offset-assert 304) + (fast-rot basic :offset-assert 568) + ) + :method-count-assert 15 + :size-assert #x23c + :flag-assert #xf01b0023c + (:methods + (camera-combiner-method-14 () none) ;; 14 + ) + (:states + cam-combiner-active + ) + ) + +;; +++camera-h:camera-blend-to-type +(defenum camera-blend-to-type + :type uint64 + (unknown-0 0) + (unknown-1 1) + (unknown-2 2) + ) +;; ---camera-h:camera-blend-to-type + +;; +++camera-h:camera-blend-from-type +(defenum camera-blend-from-type + :type uint64 + (unknown-0 0) + (unknown-1 1) + (unknown-2 2) + ) +;; ---camera-h:camera-blend-from-type + +;; +++camera-h:cam-slave-options-u32 +(defenum cam-slave-options-u32 + :type uint32 + :bitfield #t + :copy-entries cam-slave-options + ) +;; ---camera-h:cam-slave-options-u32 + +;; +++camera-h:cam-master-options-u32 +(defenum cam-master-options-u32 + :type uint32 + :bitfield #t + :copy-entries cam-master-options + ) +;; ---camera-h:cam-master-options-u32 + +(deftype camera-slave (process) + ((trans vector :inline :offset-assert 144) + (fov float :offset-assert 160) + (fov0 float :offset-assert 164) + (fov1 float :offset-assert 168) + (fov-index cam-index :inline :offset-assert 176) + (tracking cam-rotation-tracker :inline :offset-assert 224) + (view-off-param float :offset-assert 488) + (view-off vector :inline :offset-assert 496) + (joystick-saved-view-off vector :inline :offset-assert 512) + (min-z-override float :offset-assert 528) + (view-flat vector :inline :offset-assert 544) + (string-vel-dir uint32 :offset-assert 560) + (string-trans vector :inline :offset-assert 576) + (position-spline tracking-spline :inline :offset-assert 592) + (pivot-pt vector :inline :offset-assert 2240) + (pivot-rad float :offset-assert 2256) + (circular-follow vector :inline :offset-assert 2272) + (max-angle-offset float :offset-assert 2288) + (max-angle-curr float :offset-assert 2292) + (options cam-slave-options-u32 :offset-assert 2296) ;; guessed by decompiler + (cam-entity entity :offset-assert 2300) ;; guessed by decompiler + (butt-timer uint64 :offset-assert 2304) ;; time-frame + (butt-seek basic :offset-assert 2312) + (butt-vector vector :inline :offset-assert 2320) + (velocity vector :inline :offset-assert 2336) + (desired-pos vector :inline :offset-assert 2352) + (time-dist-too-far uint32 :offset-assert 2368) + (los-state slave-los-state :offset-assert 2372) ;; guessed by decompiler + (good-point vector :inline :offset-assert 2384) + (los-tgt-spline-pt int32 :offset-assert 2400) + (los-tgt-spline-pt-incarnation int32 :offset-assert 2404) + (los-last-pos vector :inline :offset-assert 2416) + (intro-curve curve :inline :offset-assert 2432) + (intro-offset vector :inline :offset-assert 2464) + (intro-t float :offset-assert 2480) + (intro-t-step float :offset-assert 2484) + (outro-exit-value float :offset-assert 2488) + (spline-exists symbol :offset-assert 2492) ;; guessed by decompiler + (spline-curve curve :inline :offset-assert 2496) + (spline-offset vector :inline :offset-assert 2528) + (index cam-index :inline :offset-assert 2544) + (saved-pt vector :inline :offset-assert 2592) + (spline-tt float :offset-assert 2608) + (spline-follow-dist float :offset-assert 2612) + (enter-has-run symbol :offset-assert 2616) ;; guessed by decompiler + (blend-from-type uint64 :offset-assert 2624) ;; camera-blend-from-type + (blend-to-type uint64 :offset-assert 2632) ;; camera-blend-to-type + (have-phony-joystick basic :offset-assert 2640) + (phony-joystick-x float :offset-assert 2644) + (phony-joystick-y float :offset-assert 2648) + (string-min-val vector :inline :offset-assert 2656) + (string-max-val vector :inline :offset-assert 2672) + (string-val-locked basic :offset-assert 2688) + (relative-position vector :inline :offset-assert 2704) + (string-relative basic :offset-assert 2720) + (slope-adjust cam-float-seeker :inline :offset-assert 2724) + (slope-quat quaternion :inline :offset-assert 2752) + (vehicle-up vector :inline :offset-assert 2768) + (vehicle-at vector :inline :offset-assert 2784) + (intro-handle uint64 :offset-assert 2800) + (slow-mo-sound-id uint32 :offset-assert 2808) + ) + :method-count-assert 15 + :size-assert #xafc + :flag-assert #xf0a700afc + (:methods + (camera-slave-method-14 () none) ;; 14 + ) + ) + +(deftype camera-master (process) + ((master-options cam-master-options-u32 :offset-assert 144) ;; guessed by decompiler + (settings cam-setting-data :offset-assert 148) + (slave (pointer camera-slave) :offset-assert 152) ;; guessed by decompiler + (decel (pointer camera-slave) :offset-assert 156) ;; guessed by decompiler + (slave-options cam-slave-options-u32 :offset-assert 160) ;; guessed by decompiler + (view-off-param-save float :offset-assert 164) + (changer uint32 :offset-assert 168) + (string-min cam-vector-seeker :inline :offset-assert 176) + (string-max cam-vector-seeker :inline :offset-assert 240) + (string-push-z float :offset-assert 300) + (local-down vector :inline :offset-assert 304) + (focus focus :inline :offset-assert 320) + (being-attacked symbol :offset-assert 332) ;; guessed by decompiler + (attack-start uint64 :offset-assert 336) ;; time-frame + (on-ground symbol :offset-assert 344) ;; guessed by decompiler + (under-water int32 :offset-assert 348) + (on-pole symbol :offset-assert 352) ;; guessed by decompiler + (tgt-rot-mat matrix :inline :offset-assert 368) + (tgt-face-mat matrix :inline :offset-assert 432) + (tpos-old vector :inline :offset-assert 496) + (tpos-curr vector :inline :offset-assert 512) + (tpos-old-adj vector :inline :offset-assert 528) + (tpos-curr-adj vector :inline :offset-assert 544) + (tpos-tgt vector :inline :offset-assert 560) + (upspeed float :offset-assert 576) + (pitch-off vector :inline :offset-assert 592) + (target-spline tracking-spline :inline :offset-assert 608) + (ease-from vector :inline :offset-assert 2256) + (ease-t float :offset-assert 2272) + (ease-step float :offset-assert 2276) + (ease-to vector :inline :offset-assert 2288) + (outro-curve curve :inline :offset-assert 2304) + (outro-t float :offset-assert 2324) + (outro-t-step float :offset-assert 2328) + (outro-exit-value float :offset-assert 2332) + (water-drip-time uint64 :offset-assert 2336) ;; time-frame + (water-drip sparticle-launch-control :offset-assert 2344) ;; guessed by decompiler + (water-drip-mult float :offset-assert 2348) + (water-drip-speed float :offset-assert 2352) + (interest-dist float :offset-assert 2356) + ) + :method-count-assert 18 + :size-assert #x938 + :flag-assert #x1208b00938 + (:methods + (camera-master-method-14 () none) ;; 14 ;; (camera-master-method-14 (_type_ vector) vector) + (camera-master-method-15 () none) ;; 15 ;; (camera-master-method-15 (_type_ vector) vector) + (camera-master-method-16 () none) ;; 16 ;; (camera-master-method-16 (_type_ symbol) int) + (camera-master-method-17 () none) ;; 17 + ) + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; cam-interface-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern *camera-init-mat* matrix) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; sparticle-launcher-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype sparticle-birthinfo (structure) + ((sprite uint32 :offset-assert 0) + (anim int32 :offset-assert 4) + (anim-speed float :offset-assert 8) + (birth-func basic :offset-assert 12) + (joint-ppoint int32 :offset-assert 16) + (num-to-birth float :offset-assert 20) + (dataf float 1 :offset-assert 0) ;; guessed by decompiler + (data uint32 1 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) +|# + +#| +(deftype sp-field-init-spec (structure) + ((field uint16 :offset-assert 0) ;; sp-field-id + (flags uint16 :offset-assert 2) ;; sp-flag + (initial-valuef float :offset-assert 4) + (random-rangef float :offset-assert 8) + (random-multf float :offset-assert 12) + (initial-value int32 :offset-assert 4) + (random-range int32 :offset-assert 8) + (random-mult int32 :offset-assert 12) + (func symbol :offset-assert 4) ;; guessed by decompiler + (tex texture-id :offset-assert 4) ;; guessed by decompiler + (pntr pointer :offset-assert 4) ;; guessed by decompiler + (object basic :offset-assert 4) + (sym symbol :offset-assert 4) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ;; field object uses ~A with a signed load. + ) +|# + +#| +(deftype sparticle-launcher (basic) + ((birthaccum float :offset-assert 4) + (init-specs (inline-array sp-field-init-spec) :offset-assert 8) ;; guessed by decompiler + (level-flag int32 :offset-assert 12) + ) + :method-count-assert 11 + :size-assert #x10 + :flag-assert #xb00000010 + (:methods + (sparticle-launcher-method-9 () none) ;; 9 ;; (get-field-spec-by-id (_type_ sp-field-id) sp-field-init-spec) + (sparticle-launcher-method-10 () none) ;; 10 ;; (setup-special-textures (_type_ string) none) + ) + ) +|# + +#| +(deftype sparticle-group-item (structure) + ((launcher uint32 :offset-assert 0) + (fade-after meters :offset-assert 4) + (falloff-to meters :offset-assert 8) + (flags uint16 :offset-assert 12) ;; sp-group-item-flag + (period uint16 :offset-assert 14) + (length uint16 :offset-assert 16) + (offset int16 :offset-assert 18) + (hour-mask uint32 :offset-assert 20) + (binding uint32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype sparticle-launch-state (structure) + ((group-item sparticle-group-item :offset-assert 0) + (flags uint16 :offset-assert 4) ;; sp-launch-state-flags + (randomize uint16 :offset-assert 6) + (center vector :offset-assert 8) + (sprite3d sprite-vec-data-3d :offset-assert 12) + (sprite sparticle-cpuinfo :offset-assert 16) ;; guessed by decompiler + (offset uint32 :offset-assert 20) + (accum float :offset-assert 24) + (spawn-time uint32 :offset-assert 28) + (control sparticle-launch-control :offset-assert 32) ;; guessed by decompiler + (swarm basic :offset-assert 20) + (seed uint32 :offset-assert 24) + (time uint32 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) +|# + +#| +(deftype sparticle-launch-group (basic) + ((length int16 :offset-assert 4) + (duration uint16 :offset-assert 6) + (linger-duration uint16 :offset-assert 8) + (flags uint16 :offset-assert 10) ;; sp-group-flag + (name string :offset-assert 12) ;; guessed by decompiler + (launcher (inline-array sparticle-group-item) :offset-assert 16) ;; guessed by decompiler + (rotate-x deg :offset-assert 20) ;; degrees + (rotate-y deg :offset-assert 24) ;; degrees + (rotate-z deg :offset-assert 28) ;; degrees + (scale-x float :offset-assert 32) + (scale-y float :offset-assert 36) + (scale-z float :offset-assert 40) + (bounds sphere :inline :offset-assert 48) + ) + :method-count-assert 10 + :size-assert #x40 + :flag-assert #xa00000040 + (:methods + (sparticle-launch-group-method-9 () none) ;; 9 ;; (create-launch-control (_type_ process) sparticle-launch-control) + ) + ) +|# + +#| +(deftype sparticle-launch-control (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (group sparticle-launch-group :offset-assert 16) ;; guessed by decompiler + (proc process-drawable :offset-assert 20) ;; guessed by decompiler + (local-clock int32 :offset-assert 24) + (local-space-binding particle-local-space-info :offset-assert 28) + (matrix int8 :offset-assert 32) + (pointer-control uint32 :offset-assert 36) + (last-spawn-frame int32 :offset-assert 40) + (last-spawn-time int32 :offset-assert 44) + (origin matrix :inline :offset-assert 48) + (center vector :inline :offset-assert 96) + (data sparticle-launch-state :dynamic :offset-assert 112) ;; guessed by decompiler + ) + :method-count-assert 22 + :size-assert #x70 + :flag-assert #x1600000070 + (:methods + (sparticle-launch-control-method-14 () none) ;; 14 ;; (initialize (_type_ sparticle-launch-group process-drawable) none) + (sparticle-launch-control-method-15 () none) ;; 15 ;; (is-visible? (_type_ vector) symbol) + (sparticle-launch-control-method-16 () none) ;; 16 ;; (spawn (_type_ vector) object) + (sparticle-launch-control-method-17 () none) ;; 17 ;; (spawn-from-mat (_type_ matrix) none) + (sparticle-launch-control-method-18 () none) ;; 18 ;; (spawn-from-cspace (_type_ cspace) none) + (sparticle-launch-control-method-19 () none) ;; 19 ;; (kill-particles (_type_) none) + (sparticle-launch-control-method-20 () none) ;; 20 ;; (set-local-space-info (_type_ particle-local-space-info) none) + (sparticle-launch-control-method-21 () none) ;; 21 + ) + ) +|# + +#| +(deftype sparticle-subsampler (basic) + ((min-emit float :offset-assert 4) + (accum float :offset-assert 8) + (spt-num float :offset-assert 12) + (sp-system sparticle-system :offset-assert 16) ;; guessed by decompiler + (part-id uint32 :offset-assert 20) + (spawn-mat matrix :inline :offset-assert 32) + (inited? symbol :offset-assert 96) ;; guessed by decompiler + (per-meter-method? basic :offset-assert 100) + ) + :method-count-assert 11 + :size-assert #x68 + :flag-assert #xb00000068 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type sparticle-system sparticle-launcher float) _type_) + (sparticle-subsampler-method-9 () none) ;; 9 ;; (init-with-vec! (_type_ vector) vector) + (sparticle-subsampler-method-10 () none) ;; 10 ;; (init-with-mat! (_type_ matrix) matrix) + ) + ) +|# + +#| +(deftype particle-birth-work (structure) + ((quat quaternion :inline :offset-assert 0) + (vel-range UNKNOWN 2 :offset-assert 16) + (vel vector :inline :offset-assert 16) + (pos-range UNKNOWN 2 :offset-assert 48) + (pos vector :inline :offset-assert 48) + (d-pos vector :inline :offset-assert 64) + (mat matrix :inline :offset-assert 80) + (tt float :offset-assert 144) + (t-step float :offset-assert 148) + ) + :method-count-assert 9 + :size-assert #x98 + :flag-assert #x900000098 + ) +|# + +;; (define-extern *launch-matrix* object) ;; matrix +;; (define-extern compute-rot-in-screenspace function) ;; (function vector float) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; sparticle-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype sparticle-cpuinfo (structure) + ((sprite sprite-vec-data-2d :offset-assert 0) + (adgif adgif-shader :offset-assert 4) + (radius float :offset-assert 8) + (omega float :offset-assert 12) + (vel-sxvel vector :inline :offset-assert 16) + (rot-syvel vector :inline :offset-assert 32) + (fade rgbaf :inline :offset-assert 48) + (acc vector :inline :offset-assert 64) + (rotvel3d quaternion :inline :offset-assert 80) + (vel vector3s :inline :offset-assert 16) + (accel vector3s :inline :offset-assert 64) + (scalevelx float :offset-assert 28) + (scalevely float :offset-assert 44) + (friction float :offset-assert 96) + (timer int32 :offset-assert 100) + (flags sp-cpuinfo-flag :offset-assert 104) ;; guessed by decompiler + (user-int32 int32 :offset-assert 108) + (user-uint32 uint32 :offset-assert 108) + (user-float float :offset-assert 108) + (user-pntr uint32 :offset-assert 108) + (user-object basic :offset-assert 108) + (user-sprite sprite-vec-data-2d :offset-assert 108) + (sp-func (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d uint none) :offset-assert 112) ;; guessed by decompiler + (next-time uint32 :offset-assert 116) + (next-launcher basic :offset-assert 120) + (cache-alpha float :offset-assert 124) + (valid uint8 :offset-assert 128) + (clock-index uint8 :offset-assert 129) + (user1-int16 uint16 :offset-assert 130) + (control basic :offset-assert 132) + (binding int32 :offset-assert 136) ;; sparticle-launch-state + (data uint32 1 :offset-assert 12) ;; guessed by decompiler + (datab int8 4 :offset-assert 12) ;; guessed by decompiler + (dataf float 1 :offset-assert 12) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x8c + :flag-assert #x90000008c + ;; field user-object uses ~A with a signed load. field control uses ~A with a signed load. + ) +|# + +#| +(deftype sparticle-launchinfo (structure) + ((launchrot vector :inline :offset-assert 0) + (conerot vector :inline :offset-assert 16) + (rotate-x float :offset-assert 32) + (rotate-y float :offset-assert 36) + (rotate-z float :offset-assert 40) + (coneradius float :offset-assert 44) + (rotate vector :inline :offset-assert 32) + (scale-x float :offset-assert 48) + (scale-y float :offset-assert 52) + (scale-z float :offset-assert 56) + (dummy float :offset-assert 60) + (scale vector :inline :offset-assert 48) + (data uint8 1 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) +|# + +#| +(deftype sparticle-system (basic) + ((blocks int32 2 :offset-assert 4) ;; guessed by decompiler + (length int32 2 :offset-assert 12) ;; guessed by decompiler + (num-alloc int32 2 :offset-assert 20) ;; guessed by decompiler + (is-3d basic :offset-assert 28) + (flags uint32 :offset-assert 32) + (alloc-table (pointer uint64) :offset-assert 36) ;; guessed by decompiler + (cpuinfo-table (inline-array sparticle-cpuinfo) :offset-assert 40) ;; guessed by decompiler + (vecdata-table pointer :offset-assert 44) ;; guessed by decompiler + (adgifdata-table (inline-array adgif-shader) :offset-assert 48) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x34 + :flag-assert #x900000034 + ) +|# + +;; (define-extern *sp-60-hz* object) ;; symbol + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; actor-link-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype actor-link-info (basic) + ((process process :offset-assert 4) ;; guessed by decompiler + (next entity-actor :offset-assert 8) ;; guessed by decompiler + (prev entity-actor :offset-assert 12) ;; guessed by decompiler + ) + :method-count-assert 26 + :size-assert #x10 + :flag-assert #x1a00000010 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type process symbol) _type_) + (actor-link-info-method-9 () none) ;; 9 ;; (get-matching-actor-type-mask (_type_ type) int) + (actor-link-info-method-10 () none) ;; 10 ;; (actor-count-before (_type_) int) + (actor-link-info-method-11 () none) ;; 11 ;; (link-to-next-and-prev-actor (_type_) actor-link-info) + (actor-link-info-method-12 () none) ;; 12 ;; (get-next (_type_) entity-actor) + (actor-link-info-method-13 () none) ;; 13 ;; (get-prev (_type_) entity-actor) + (actor-link-info-method-14 () none) ;; 14 ;; (get-next-process (_type_) process) + (actor-link-info-method-15 () none) ;; 15 ;; (get-prev-process (_type_) process) + (actor-link-info-method-16 () none) ;; 16 ;; (apply-function-forward (_type_ (function entity-actor object object) object) int) + (actor-link-info-method-17 () none) ;; 17 ;; (apply-function-reverse (_type_ (function entity-actor object object) object) int) + (actor-link-info-method-18 () none) ;; 18 ;; (apply-all (_type_ (function entity-actor object object) object) int) + (actor-link-info-method-19 () none) ;; 19 ;; (send-to-all (_type_ symbol) none) + (actor-link-info-method-20 () none) ;; 20 ;; (send-to-all-after (_type_ symbol) object) + (actor-link-info-method-21 () none) ;; 21 ;; (send-to-all-before (_type_ symbol) object) + (actor-link-info-method-22 () none) ;; 22 ;; (send-to-next-and-prev (_type_ symbol) none) + (actor-link-info-method-23 () none) ;; 23 ;; (send-to-next (_type_ symbol) none) + (actor-link-info-method-24 () none) ;; 24 ;; (send-to-prev (_type_ symbol) none) + (actor-link-info-method-25 () none) ;; 25 ;; (actor-count (_type_) int) + ) + ) +|# + +;; (define-extern entity-actor-lookup function) ;; (function res-lump symbol int entity-actor) +;; (define-extern entity-actor-count function) ;; (function res-lump symbol int) +;; (define-extern actor-link-subtask-complete-hook function) ;; (function entity-actor (pointer symbol) symbol) +;; (define-extern actor-link-subtask-incomplete-count-hook function) ;; (function entity-actor (pointer uint64) symbol) +;; (define-extern actor-link-dead-hook function) ;; (function entity-actor (pointer symbol) symbol) +;; (define-extern alt-actor-list-subtask-incomplete-count function) ;; (function process-drawable int) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; cam-debug-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *redline-table* object) ;; (pointer float) +;; (define-extern *redline-index* object) ;; int +;; (define-extern float-save-redline function) ;; (function float none) +;; (define-extern float-lookup-redline function) ;; (function float float) +;; (define-extern *blueline-table* object) ;; (pointer float) +;; (define-extern *blueline-index* object) ;; int +;; (define-extern float-save-blueline function) ;; (function float none) +;; (define-extern float-lookup-blueline function) ;; (function float float) +;; (define-extern *greenline-table* object) ;; (pointer float) +;; (define-extern *greenline-index* object) ;; int +;; (define-extern float-save-greenline function) ;; (function float none) +;; (define-extern float-lookup-greenline function) ;; (function float float) +;; (define-extern *yellowline-table* object) ;; (pointer float) +;; (define-extern *yellowline-index* object) ;; int +;; (define-extern float-save-yellowline function) ;; (function float none) +;; (define-extern float-lookup-yellowline function) ;; (function float float) +;; (define-extern *timeplot-table* object) ;; (pointer float) +;; (define-extern *timeplot-index* object) ;; int +;; (define-extern float-save-timeplot function) ;; (function float none) +;; (define-extern float-lookup-timeplot function) ;; (function float float) +;; (define-extern *cam-layout* object) ;; symbol + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; cam-update-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; +++cam-update-h:external-cam-option +(defenum external-cam-option + :bitfield #t + (allow-z 0) + ) +;; ---cam-update-h:external-cam-option + +(define-extern *external-cam-options* external-cam-option) +(define-extern *external-cam-mode* symbol) +(define-extern *camera-look-through-other* int) +(define-extern *camera-other-fov* bfloat) +(define-extern *camera-other-trans* vector) +(define-extern *camera-other-matrix* matrix) +(define-extern *camera-smush-control* smush-control) +(define-extern *camera-smush-control-horizontal* smush-control) +(define-extern *camera-smush-control-into* smush-control) +(define-extern *camera-smush-control-2* smush-control) +(define-extern *camera-smush-control-horizontal-2* smush-control) +(define-extern *camera-smush-control-into-2* smush-control) +(define-extern *camera-other-root* vector) +(define-extern *fix-visible-level-mask* int) +(define-extern *manual-sample-point* symbol) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; hud-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-string (structure) + ((text string :offset-assert 0) ;; guessed by decompiler + (scale float :offset-assert 4) + (width float :offset-assert 8) + (height float :offset-assert 12) + (color uint8 :offset-assert 16) ;; font-color + (flags uint16 :offset-assert 18) ;; font-flags + (pos vector4w :inline :offset-assert 32) + (alpha float :offset-assert 48) + (time float :offset-assert 52) + (effect uint8 :offset-assert 56) + (effect-color uint8 :offset-assert 57) + (text-length int32 :offset-assert 60) + ) + :method-count-assert 10 + :size-assert #x40 + :flag-assert #xa00000040 + (:methods + (hud-string-method-9 () none) ;; 9 + ) + ) +|# + +#| +(deftype hud-corners (structure) + ((data UNKNOWN 4 :offset-assert 0) + ) + :method-count-assert 10 + :size-assert #x20 + :flag-assert #xa00000020 + (:methods + (hud-corners-method-9 () none) ;; 9 + ) + ) +|# + +#| +(deftype hud-sprite (structure) + ((pos vector4w :inline :offset-assert 0) + (offset-x float :offset-assert 0) + (offset-y float :offset-assert 4) + (color vector4w :inline :offset-assert 16) + (flags uint16 :offset-assert 32) ;; hud-sprite-flags + (scale-x float :offset-assert 36) + (width float :offset-assert 36) + (scale-y float :offset-assert 40) + (height float :offset-assert 40) + (angle float :offset-assert 44) + (tex texture :offset-assert 48) ;; guessed by decompiler + (tid texture-id :offset-assert 48) ;; guessed by decompiler + ) + :method-count-assert 11 + :size-assert #x34 + :flag-assert #xb00000034 + (:methods + (hud-sprite-method-9 () none) ;; 9 ;; (draw (_type_ dma-buffer level symbol) none) + (hud-sprite-method-10 () none) ;; 10 ;; (hud-sprite-method-10 (_type_ dma-buffer level int int int int) object) + ) + ) +|# + +#| +(deftype hud-box (structure) + ((box bounding-box2 :inline :offset-assert 0) + (min vector2 :inline :offset-assert 0) + (max vector2 :inline :offset-assert 8) + (color vector4w :inline :offset-assert 16) + ) + :method-count-assert 13 + :size-assert #x20 + :flag-assert #xd00000020 + (:methods + (hud-box-method-9 () none) ;; 9 ;; (draw-box-prim-only (_type_ dma-buffer) none) + (hud-box-method-10 () none) ;; 10 ;; (draw-box-alpha-1 (_type_ dma-buffer) none) + (hud-box-method-11 () none) ;; 11 ;; (draw-box-alpha-2 (_type_ dma-buffer) none) + (hud-box-method-12 () none) ;; 12 ;; (draw-box-alpha-3 (_type_ dma-buffer) none) + ) + ) +|# + +#| +(deftype hud-icon (structure) + ((icon (pointer manipy) :offset-assert 0) ;; guessed by decompiler + (pos vector4w :inline :offset-assert 16) + (scale-x float :offset-assert 32) + (scale-y float :offset-assert 36) + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + ) +|# + +#| +(deftype hud (process) + ((trigger-time uint64 :offset-assert 144) ;; time-frame + (last-hide-time uint64 :offset-assert 152) ;; time-frame + (offset float :offset-assert 160) + (flags hud-flags :offset-assert 164) ;; guessed by decompiler + (strings hud-string 45 :offset-assert 176) ;; guessed by decompiler + (sprites hud-sprite 50 :offset-assert 3056) ;; guessed by decompiler + (icons hud-icon 2 :offset-assert 6256) ;; guessed by decompiler + (num-strings int32 :offset-assert 6352) + (num-sprites int32 :offset-assert 6356) + (gui-id sound-id :offset-assert 6360) ;; guessed by decompiler + ) + :method-count-assert 30 + :size-assert #x18dc + :flag-assert #x1e185018dc + (:methods + (hud-method-9 () none) ;; 9 + (hud-method-10 () none) ;; 10 + (hud-method-11 () none) ;; 11 + (hud-method-12 () none) ;; 12 + (hud-method-13 () none) ;; 13 + (hud-method-14 () none) ;; 14 ;; (hidden? (_type_) object) + (hud-method-15 () none) ;; 15 ;; (draw (_type_) none) + (hud-method-16 () none) ;; 16 ;; (update-values! (_type_) none) + (hud-method-17 () none) ;; 17 ;; (init-callback (_type_) none) + (hud-method-18 () none) ;; 18 ;; (event-callback (_type_ process int symbol event-message-block) object) + (hud-method-19 () none) ;; 19 ;; (hud-method-19 (_type_) none) + (hud-method-20 () none) ;; 20 ;; (hud-method-20 (_type_) none) + (hud-method-21 () none) ;; 21 ;; (hud-method-21 (_type_) none) + (hud-method-22 () none) ;; 22 ;; (hud-method-22 (_type_) none) + (hud-method-23 () none) ;; 23 ;; (hud-method-23 (_type_) none) + (hud-method-24 () none) ;; 24 ;; (check-ready-and-maybe-show (_type_ symbol) symbol) + (hud-method-25 () none) ;; 25 ;; (update-value-callback (_type_ int int) none) + (hud-method-26 () none) ;; 26 ;; (alloc-string-if-needed (_type_ int) none) + (hud-method-27 () none) ;; 27 + (hud-method-28 () none) ;; 28 + (hud-method-29 () none) ;; 29 + ) + ) +|# + +#| +(deftype hud-map (hud) + ((x float :offset-assert 6364) + (y float :offset-assert 6368) + ) + :method-count-assert 30 + :size-assert #x18e4 + :flag-assert #x1e186018e4 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; progress-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; rpc-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern rpc-busy? (function int uint)) +(define-extern rpc-call (function int uint uint uint int uint int uint)) + +(deftype rpc-buffer (basic) + "Buffer for storing input/output data for a remote procedure call to the overlord driver on the IOP." + ((elt-size uint32 :offset-assert 4) + (elt-count uint32 :offset-assert 8) + (elt-used uint32 :offset-assert 12) + (busy symbol :offset-assert 16) ;; guessed by decompiler + (base pointer :offset-assert 20) ;; guessed by decompiler + (data uint8 :dynamic :offset 32) ;; guessed by decompiler + ) + (:methods + (new (symbol type uint uint) _type_) ;; 0 + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype rpc-buffer-pair (basic) + "A double buffer of RPC buffers. This is used to let the game queue up data in one buffer while + the other is being read/written by overlord." + ((buffer rpc-buffer 2 :offset-assert 4) ;; guessed by decompiler + (current rpc-buffer :offset-assert 12) ;; guessed by decompiler + (last-recv-buffer pointer :offset-assert 16) ;; guessed by decompiler + (rpc-port int32 :offset-assert 20) + ) + :method-count-assert 15 + :size-assert #x18 + :flag-assert #xf00000018 + (:methods + (new (symbol type uint uint int) rpc-buffer-pair) ;; 0 + (call "Start an async RPC call. If there is already one in progress, stall and wait for it to finish." (rpc-buffer-pair uint pointer uint) int) ;; 9 + (add-element "Add an element. If the buffer is full, flush it!" (rpc-buffer-pair) pointer) ;; 10 + (decrement-elt-used "Remove the most recently queued element." (rpc-buffer-pair) int) ;; 11 + (sync "Wait for an in-progress rpc to finish." (rpc-buffer-pair symbol) int) ;; 12 + (check-busy "Check to see if an rpc is in progress." (rpc-buffer-pair) symbol) ;; 13 + (pop-last-received "Pop the response from the most recently completed rpc call." (rpc-buffer-pair) pointer) ;; 14 + ) + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; path-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype path-control (basic) + ((flags path-control-flag :offset-assert 4) ;; guessed by decompiler + (name symbol :offset-assert 8) ;; guessed by decompiler + (process process-drawable :offset-assert 12) ;; guessed by decompiler + (distmap uint32 :offset-assert 16) + (curve curve :inline :offset-assert 20) + (num-cverts int32 :offset-assert 24) + (cverts uint32 :offset-assert 20) + ) + :method-count-assert 33 + :size-assert #x28 + :flag-assert #x2100000028 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type process symbol float entity symbol) _type_) + (path-control-method-9 () none) ;; 9 ;; (debug-draw (_type_) none) + (path-control-method-10 () none) ;; 10 ;; (get-point-in-path! (_type_ vector float symbol) vector) + (path-control-method-11 () none) ;; 11 ;; (get-random-point (_type_ vector) vector) + (path-control-method-12 () none) ;; 12 ;; (path-control-method-12 (_type_ vector float float) vector) + (path-control-method-13 () none) ;; 13 ;; (displacement-between-two-points-normalized! (_type_ vector float) vector) + (path-control-method-14 () none) ;; 14 ;; (get-point-at-percent-along-path! (_type_ vector float symbol) vector) + (path-control-method-15 () none) ;; 15 ;; (path-control-method-15 (_type_ vector float float) vector) + (path-control-method-16 () none) ;; 16 ;; (displacement-between-points-at-percent-normalized! (_type_ vector float) vector) + (path-control-method-17 () none) ;; 17 ;; (get-num-segments (_type_) float) + (path-control-method-18 () none) ;; 18 ;; (total-distance (_type_) float) + (path-control-method-19 () none) ;; 19 ;; (get-num-verts (_type_) int) + (path-control-method-20 () none) ;; 20 ;; (segement-duration->path-duration (_type_ float) float) + (path-control-method-21 () none) ;; 21 ;; (path-duration->segment-duration (_type_ float) float) + (path-control-method-22 () none) ;; 22 ;; (path-control-method-22 (_type_ vector) float) + (path-control-method-23 () none) ;; 23 ;; (path-control-method-23 (_type_ vector) float) + (path-control-method-24 () none) ;; 24 ;; (path-control-method-24 (_type_ vector) float) + (path-control-method-25 () none) ;; 25 ;; (path-control-method-25 (_type_ vector) float) + (path-control-method-26 () none) ;; 26 ;; (path-control-method-26 (_type_ float float) float) + (path-control-method-27 () none) ;; 27 ;; (path-control-method-27 (_type_ vector) vector) + (path-control-method-28 () none) ;; 28 ;; (path-control-method-28 (_type_ vector vector symbol) float) + (path-control-method-29 () none) ;; 29 ;; (path-control-method-29 (_type_ vector int float) float) + (path-control-method-30 () none) ;; 30 ;; (should-display-marks? (_type_) symbol) + (path-control-method-31 () none) ;; 31 ;; (displacement-between-two-points! (_type_ vector float float) vector) + (path-control-method-32 () none) ;; 32 + ) + ) +|# + +#| +(deftype curve-control (path-control) + () + :method-count-assert 35 + :size-assert #x28 + :flag-assert #x2300000028 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type process symbol float) _type_) + (curve-control-method-33 () none) ;; 33 + (curve-control-method-34 () none) ;; 34 + ) + ) +|# + +;; (define-extern get-knot-name function) +;; (define-extern get-distmap-name function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; nav-mesh-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype nav-mesh-work-debug (structure) + "Debug outputs for the nav-mesh assembly functions" + ((debug-vec1 vector :inline :offset-assert 0) + (debug-vec2 vector :inline :offset-assert 16) + (debug-vec3 vector :inline :offset-assert 32) + (debug-vec4 vector :inline :offset-assert 48) + (debug-vec5 vector :inline :offset-assert 64) + (debug-vec6 vector :inline :offset-assert 80) + (debug-vec7 vector :inline :offset-assert 96) + (debug-vec8 vector :inline :offset-assert 112) + (debug-vec9 vector :inline :offset-assert 128) + (debug-vec10 vector :inline :offset-assert 144) + (debug-vec11 vector :inline :offset-assert 160) + (debug-vec12 vector :inline :offset-assert 176) + (sphere-array sphere 16 :inline :offset-assert 192) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x1c0 + :flag-assert #x9000001c0 + ) + +(declare-type nav-mesh basic) +(declare-type nav-poly structure) +(deftype nav-mesh-work (structure) + "Workspace for nav-mesh processing functions." + ((vert0-table int8 4 :offset-assert 0) ;; guessed by decompiler + (vert1-table int8 4 :offset-assert 4) ;; guessed by decompiler + (edge-mask-table uint8 3 :offset-assert 8) ;; guessed by decompiler + (pad0 uint32 :offset-assert 12) + (deg-to-rad float :offset-assert 16) + (rad-to-deg float :offset-assert 20) + (nav-poly-min-dist float :offset-assert 24) + (nav-poly-epsilon float :offset-assert 28) + (sphere-array sphere 16 :inline :offset-assert 32) ;; guessed by decompiler + (debug nav-mesh-work-debug :offset-assert 288) + (work-struct-in-scratch int8 :offset-assert 292) + (mesh-struct-in-scratch int8 :offset-assert 293) + (polys-in-scratch int8 :offset-assert 294) + (mesh nav-mesh :offset-assert 296) ;; guessed by decompiler + (nav basic :offset-assert 300) + (poly0 nav-poly :offset-assert 304) ;; guessed by decompiler + (poly1 nav-poly :offset-assert 308) ;; guessed by decompiler + (poly-id int32 :offset-assert 312) + ) + :method-count-assert 9 + :size-assert #x13c + :flag-assert #x90000013c + ) + +(deftype nav-mesh-link (structure) + "Link between two different meshes" + ((id uint32 :offset-assert 0) + (dest-mesh-id uint32 :offset-assert 4) + (src-link-poly-id uint8 :offset-assert 8) + (src-switch-poly-id uint8 :offset-assert 9) + (dest-link-poly-id uint8 :offset-assert 10) + (dest-switch-poly-id uint8 :offset-assert 11) + (dest-mesh nav-mesh :offset-assert 12) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(defenum nav-mesh-link-search-node-status + :type uint8 + :bitfield #t + (open 0) + (closed 1) + ) + +(deftype nav-mesh-link-search-node (structure) + ((pprev uint32 :offset-assert 0) + (next nav-mesh-link-search-node :offset-assert 4) + (parent nav-mesh-link-search-node :offset-assert 8) + (link nav-mesh-link :offset-assert 12) + (cost-to-start float :offset-assert 16) + (cost-to-end float :offset-assert 20) + (status nav-mesh-link-search-node-status :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x19 + :flag-assert #x900000019 + ;; field nav-mesh-link-search-node-status is likely a value type. + ) + +(deftype nav-poly (structure) + "Polygon within a nav-mesh. Can be a tri or quad. + Based on the implementation of point-poly-intersection?, these should likely be convex." + ((data uint8 64 :offset-assert 0 :score -1) ;; guessed by decompiler + (vertex vector 4 :inline :offset 0) ;; guessed by decompiler + (vertex0 vector :inline :offset 0) + (vertex1 vector :inline :offset 16) + (vertex2 vector :inline :offset 32) + (vertex3 vector :inline :offset 48) + (id uint8 :offset 12) + (pat uint8 :offset 13) + (vertex-count uint8 :offset 14) + (link uint8 :offset 15) + (adj-poly uint8 4 :offset 28) ;; guessed by decompiler + (adj-poly0 uint8 :offset 28) + (adj-poly1 uint8 :offset 29) + (adj-poly2 uint8 :offset 30) + (adj-poly3 uint8 :offset 31) + (min-y float :offset 44) + (max-y float :offset 60) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +(deftype nav-vertex (vector) + () + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype nav-sphere (structure) + ((trans sphere :inline :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype nav-ray (structure) + ((current-pos vector :inline :offset-assert 0) + (dir vector :inline :offset-assert 16) + (dest-pos vector :inline :offset-assert 32) + (current-mesh basic :offset-assert 48) + (current-poly nav-poly :offset-assert 52) + (next-mesh basic :offset-assert 56) + (next-poly nav-poly :offset-assert 60) + (len meters :offset-assert 64) + (last-edge int8 :offset-assert 68) + (ignore uint8 :offset-assert 69) + (terminated symbol :offset-assert 72) ;; guessed by decompiler + (reached-dest symbol :offset-assert 76) ;; guessed by decompiler + (hit-boundary symbol :offset-assert 80) ;; guessed by decompiler + (hit-gap symbol :offset-assert 84) ;; guessed by decompiler + (cross-meshes basic :offset-assert 88) + ) + :method-count-assert 13 + :size-assert #x5c + :flag-assert #xd0000005c + (:methods + (nav-ray-method-9 () none) ;; 9 + (nav-ray-method-10 () none) ;; 10 + (nav-ray-method-11 () none) ;; 11 + (nav-ray-method-12 () none) ;; 12 + ) + ) + +(deftype nav-route-portal (structure) + ((vertex nav-vertex 2 :inline :offset-assert 0) ;; guessed by decompiler + (next-poly nav-poly :offset-assert 32) + (edge-index int8 :offset-assert 36) + ) + :method-count-assert 9 + :size-assert #x25 + :flag-assert #x900000025 + ) + +(deftype nav-find-poly-parms (structure) + ((point vector :inline :offset-assert 0) + (y-threshold float :offset-assert 16) + (ignore uint8 :offset-assert 20) + (poly nav-poly :offset-assert 24) + (dist float :offset-assert 28) + (point-inside? symbol :offset-assert 32) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) + +(deftype clamp-travel-vector-to-mesh-return-info (structure) + ((found-boundary symbol :offset-assert 0) ;; guessed by decompiler + (intersection vector :inline :offset-assert 16) + (boundary-normal vector :inline :offset-assert 32) + (prev-normal vector :inline :offset-assert 48) + (next-normal vector :inline :offset-assert 64) + (poly nav-poly :offset-assert 80) + (mesh basic :offset-assert 84) + (gap-poly nav-poly :offset-assert 88) + (edge int8 :offset-assert 92) + (ignore uint8 :offset-assert 93) + (vert-prev vector :inline :offset-assert 96) + (vert-0 vector :inline :offset-assert 112) + (vert-1 vector :inline :offset-assert 128) + (vert-next vector :inline :offset-assert 144) + ) + :method-count-assert 11 + :size-assert #xa0 + :flag-assert #xb000000a0 + (:methods + (clamp-travel-vector-to-mesh-return-info-method-9 () none) ;; 9 + (clamp-travel-vector-to-mesh-return-info-method-10 () none) ;; 10 + ) + ) + +#| +(deftype nav-find-corner-portal-params (structure) + ((start-poly nav-poly :offset-assert 0) + (target-poly nav-poly :offset-assert 4) + (corner-poly nav-poly :offset-assert 8) + (start-pos vector :inline :offset-assert 16) + (target-pos vector :inline :offset-assert 32) + (corner-verts UNKNOWN 2 :offset-assert 48) + (vert-select int8 :offset-assert 80) + ) + :method-count-assert 9 + :size-assert #x51 + :flag-assert #x900000051 + ) +|# + +(defenum nav-mesh-flag + :type uint8 + :bitfield #t + (water 0) + (dummy 1) + ) + +(declare-type grid-hash basic) +(declare-type sphere-hash grid-hash) +(deftype nav-mesh (basic) + ((work nav-mesh-work :offset-assert 4) + (poly-array (inline-array nav-poly) :offset-assert 8) ;; guessed by decompiler + (static-sphere-count uint8 :offset-assert 12) + (poly-count uint8 :offset-assert 13) + (nav-control-count uint8 :offset-assert 14) + (max-nav-control-count uint8 :offset-assert 15) + (route (pointer uint8) :offset-assert 16) ;; guessed by decompiler + (poly-hash grid-hash :offset-assert 20) ;; guessed by decompiler + (nav-control-array (inline-array nav-control) :offset-assert 24) ;; guessed by decompiler + (sphere-hash sphere-hash :offset-assert 28) ;; guessed by decompiler + (static-sphere (inline-array sphere) :offset-assert 32) ;; guessed by decompiler + (user-list engine :offset-assert 36) ;; guessed by decompiler + (next-nav-mesh nav-mesh :offset-assert 40) ;; guessed by decompiler + (prev-nav-mesh nav-mesh :offset-assert 44) ;; guessed by decompiler + (bounds sphere :inline :offset-assert 48) + (origin vector :inline :offset 48) + (entity entity :offset-assert 64) ;; guessed by decompiler + (link-array (inline-array nav-mesh-link) :offset-assert 68) ;; guessed by decompiler + (link-count uint8 :offset-assert 72) + (flags nav-mesh-flag :offset-assert 73) + (pad1 uint8 2 :offset-assert 74) ;; guessed by decompiler + (nearest-y-threshold meters :offset-assert 76) + (water-max-height meters :offset-assert 80) + (link-search-node-array uint32 :offset-assert 84) + (pad2 uint32 6 :offset-assert 88) ;; guessed by decompiler + ) + :method-count-assert 47 + :size-assert #x70 + :flag-assert #x2f00000070 + ;; field nav-mesh-flag is likely a value type. + (:methods + (nav-mesh-method-9 () none) ;; 9 ;; (debug-draw (_type_) none) + (nav-mesh-method-10 () none) ;; 10 ;; (nav-mesh-method-10 (_type_ vector vector nav-poly) nav-poly) + (nav-mesh-method-11 () none) ;; 11 ;; (nav-mesh-method-11 (_type_ vector) nav-poly) + (nav-mesh-method-12 () none) ;; 12 ;; (nav-mesh-method-12 (_type_ vector float nav-poly) symbol) + (nav-mesh-method-13 () none) ;; 13 ;; (poly-centroid (_type_ nav-poly vector) vector) + (nav-mesh-method-14 () none) ;; 14 ;; (poly-centroid-local (_type_ nav-poly vector) vector) + (nav-mesh-method-15 () none) ;; 15 ;; (lookup-poly-on-route-to-target (_type_ nav-poly nav-poly) nav-poly) + (nav-mesh-method-16 () none) ;; 16 ;; (get-route-portal (_type_ nav-poly nav-poly nav-route-portal) (inline-array nav-vertex)) + (nav-mesh-method-17 () none) ;; 17 ;; (initialize-mesh! (_type_) none) + (nav-mesh-method-18 () none) ;; 18 ;; (advance-ray-to-nearest-poly-edge-or-dest! (_type_ nav-ray) none) + (nav-mesh-method-19 () none) ;; 19 ;; (try-move-along-ray (_type_ nav-poly vector vector float) meters) + (nav-mesh-method-20 () none) ;; 20 ;; (clamp-vector-to-mesh-cross-gaps (_type_ vector nav-poly vector float symbol clamp-travel-vector-to-mesh-return-info) none) + (nav-mesh-method-21 () none) ;; 21 ;; (clamp-vector-to-mesh-no-gaps (_type_ vector nav-poly vector clamp-travel-vector-to-mesh-return-info) none) + (nav-mesh-method-22 () none) ;; 22 ;; (set-normals-from-adjacent-bounds (_type_ clamp-travel-vector-to-mesh-return-info) none) + (nav-mesh-method-23 () none) ;; 23 ;; (find-adjacent-bounds-one (_type_ vector nav-poly int int) none) + (nav-mesh-method-24 () none) ;; 24 ;; (compute-bounding-box-from-vertices (_type_ vector vector) none) + (nav-mesh-method-25 () none) ;; 25 ;; (init-from-entity (_type_ entity-nav-mesh) none) + (nav-mesh-method-26 () none) ;; 26 ;; (handle-birth (_type_) none) + (nav-mesh-method-27 () none) ;; 27 ;; (handle-kill (_type_) none) + (nav-mesh-method-28 () none) ;; 28 ;; (update-navigation (_type_) none) + (nav-mesh-method-29 () none) ;; 29 ;; (new-nav-control (_type_) nav-control) + (nav-mesh-method-30 () none) ;; 30 ;; (remove-nav-control (_type_ nav-control) none) + (nav-mesh-method-31 () none) ;; 31 ;; (add-process-drawable-to-nav-mesh (_type_ process-drawable symbol) none) + (nav-mesh-method-32 () none) ;; 32 ;; (remove-process-drawable (_type_ process-drawable) none) + (nav-mesh-method-33 () none) ;; 33 ;; (change-to (_type_ process-drawable) none) + (nav-mesh-method-34 () none) ;; 34 ;; (link-by-id (_type_ uint) symbol) + (nav-mesh-method-35 () none) ;; 35 ;; (unlink-by-id (_type_ uint) symbol) + (nav-mesh-method-36 () none) ;; 36 ;; (nav-mesh-method-36 (_type_ vector vector float) float) + (nav-mesh-method-37 () none) ;; 37 ;; (nav-mesh-method-37 (_type_ vector vector float) float) + (nav-mesh-method-38 () none) ;; 38 ;; (nav-mesh-method-38 (_type_ nav-poly) none) + (nav-mesh-method-39 () none) ;; 39 ;; (debug-draw-poly (_type_ nav-poly rgba) none) + (nav-mesh-method-40 () none) ;; 40 ;; (point-in-poly? (_type_ nav-poly vector) symbol) + (nav-mesh-method-41 () none) ;; 41 ;; (nav-mesh-method-41 (_type_ nav-poly vector vector vector (pointer nav-poly)) vector) + (nav-mesh-method-42 () none) ;; 42 ;; (closest-point-on-boundary (_type_ nav-poly vector vector) vector) + (nav-mesh-method-43 () none) ;; 43 ;; (project-point-onto-plane-of-poly-local (_type_ nav-poly vector vector vector) none) + (nav-mesh-method-44 () none) ;; 44 ;; (project-point-into-poly-2d (_type_ nav-poly vector vector) vector) + (nav-mesh-method-45 () none) ;; 45 ;; (nav-mesh-method-45 (_type_ nav-poly) nav-poly) + (nav-mesh-method-46 () none) ;; 46 ;; (nav-mesh-method-46 (_type_ nav-poly) nav-poly) + ) + ) + +(deftype nav-location (structure) + ((nav-mesh basic :offset-assert 0) + (nav-poly nav-poly :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + + +(define-extern vector-normalize-unity! "Normalize a vector (xyz only) in place." (function vector vector)) +(define-extern vector-normalize-unity-copy! "Normalize a vector (xyz only)" (function vector vector vector)) +(define-extern debug-validate-current-poly "Not implemented." (function symbol)) +(define-extern point-poly-intersection? "Check if a point is inside a poly." (function nav-mesh vector int (inline-array vector) symbol)) +(define-extern nav-sphere-from-cam "Print out a SPHEREM from the current camera position, possibly used by their level-building tool." (function none)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; nav-control-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype check-vector-collision-with-nav-spheres-info (structure) + ((u float :offset-assert 0) + (intersect vector :inline :offset-assert 16) + (normal vector :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype nav-gap-info (structure) + ((dest vector :inline :offset-assert 0) + (poly nav-poly :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) + +(deftype nav-avoid-spheres-params (structure) + ((current-pos vector :inline :offset-assert 0) + (travel vector :inline :offset-assert 16) + (pref-dir vector :inline :offset-assert 32) + (out-travel vector 2 :inline :offset-assert 48) ;; guessed by decompiler + (closest-sphere-dist2 float :offset-assert 80) + (avoiding-sphere? symbol :offset-assert 84) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x58 + :flag-assert #x900000058 + ) + +(deftype nav-callback-info (structure) + ((callback-count int32 :offset-assert 0) + (callback-array (function object nav-control none) 10 :offset-assert 4) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) + +(defenum nav-state-flag + :type uint32 + :bitfield #t + (display-marks 0) + (recovery-mode 1) + (initialized 2) + (debug 3) + (directional-mode 4) + (trapped-by-sphere 5) + (target-poly-dirty 6) + (blocked 7) + (in-target-poly 8) + (at-target 9) + (target-inside 10) + (in-mesh 11) + (avoiding-sphere 12) + (touching-sphere 13) + (at-gap 14) + (user-position 15) + ) + +(defenum nav-control-flag + :type uint32 + :bitfield #t + (display-marks 0) + (debug 1) + (no-redirect-in-clamp 2) + (limit-rotation-rate 3) + (update-heading-from-facing 4) + (use-momentum 5) + (momentum-ignore-heading 6) + (output-sphere-hash 7) + (kernel-run 8) + ) + +(deftype nav-state (structure) + ((flags nav-state-flag :offset-assert 0) + (nav nav-control :offset-assert 4) ;; guessed by decompiler + (user-poly nav-poly :offset-assert 8) + (mesh nav-mesh :offset-assert 12) ;; guessed by decompiler + (current-poly nav-poly :offset-assert 16) + (virtual-current-poly nav-poly :offset-assert 20) + (next-poly nav-poly :offset-assert 24) + (target-poly nav-poly :offset-assert 28) + (rotation-rate float :offset-assert 32) + (speed meters :offset-assert 36) + (prev-speed meters :offset-assert 40) + (pad0 uint32 1 :offset-assert 44) ;; guessed by decompiler + (travel vector :inline :offset-assert 48) + (target-pos vector :inline :offset-assert 64) + (current-pos vector :inline :offset-assert 80) + (current-pos-local vector :inline :offset-assert 96) + (virtual-current-pos-local vector :inline :offset-assert 112) + (velocity vector :inline :offset-assert 128) + (heading vector :inline :offset-assert 144) + (target-dir vector :inline :offset-assert 160) + (accel vector :inline :offset 160) + (user-position vector :inline :offset 112) + (normal vector :inline :offset 112) + ) + :method-count-assert 57 + :size-assert #xb0 + :flag-assert #x39000000b0 + (:methods + (nav-state-method-9 () none) ;; 9 ;; (debug-draw (_type_) none) + (nav-state-method-10 () none) ;; 10 ;; (nav-state-method-10 (_type_) none) + (nav-state-method-11 () none) ;; 11 ;; (plan-over-pat1-polys-using-route (_type_ nav-gap-info) symbol) + (nav-state-method-12 () none) ;; 12 ;; (get-velocity (_type_ vector) vector) + (nav-state-method-13 () none) ;; 13 ;; (get-travel (_type_ vector) vector) + (nav-state-method-14 () none) ;; 14 ;; (get-heading (_type_ vector) vector) + (nav-state-method-15 () none) ;; 15 ;; (get-target-pos (_type_ vector) vector) + (nav-state-method-16 () none) ;; 16 ;; (get-speed (_type_) meters) + (nav-state-method-17 () none) ;; 17 ;; (get-rotation-rate (_type_) float) + (nav-state-method-18 () none) ;; 18 ;; (try-projecting-to-current-poly (_type_ vector vector vector) symbol) + (nav-state-method-19 () none) ;; 19 ;; (get-current-poly (_type_) nav-poly) + (nav-state-method-20 () none) ;; 20 ;; (copy-nav-state! (_type_ (pointer nav-state)) none) + (nav-state-method-21 () none) ;; 21 ;; (nav-state-method-21 () none) + (nav-state-method-22 () none) ;; 22 ;; (nav-state-method-22 () none) + (nav-state-method-23 () none) ;; 23 ;; (nav-state-method-23 () none) + (nav-state-method-24 () none) ;; 24 ;; (turn-and-navigate-to-destination (_type_) none) + (nav-state-method-25 () none) ;; 25 ;; (navigate-using-route-portals-wrapper (_type_) none) + (nav-state-method-26 () none) ;; 26 ;; (navigate-using-best-dir-recompute-avoid-spheres-1-wrapper (_type_) none) + (nav-state-method-27 () none) ;; 27 ;; (navigate-within-poly-wrapper (_type_) none) + (nav-state-method-28 () none) ;; 28 ;; (compute-travel-speed (_type_) none) + (nav-state-method-29 () none) ;; 29 ;; (nav-state-method-29 (_type_) none) + (nav-state-method-30 () none) ;; 30 ;; (nav-state-method-30 (_type_) none) + (nav-state-method-31 () none) ;; 31 ;; (navigate-using-best-dir-recompute-avoid-spheres-2 (_type_) none) + (nav-state-method-32 () none) ;; 32 ;; (update-travel-dir-from-spheres (_type_) none) + (nav-state-method-33 () none) ;; 33 ;; (compute-speed-simple (_type_) none) + (nav-state-method-34 () none) ;; 34 ;; (navigate-v1! (_type_) none) + (nav-state-method-35 () none) ;; 35 ;; (reset-target! (_type_) none) + (nav-state-method-36 () none) ;; 36 ;; (add-offset-to-target! (_type_ vector) none) + (nav-state-method-37 () none) ;; 37 ;; (navigate-v2! (_type_) none) + (nav-state-method-38 () none) ;; 38 ;; (set-current-poly! (_type_ nav-poly) none) + (nav-state-method-39 () none) ;; 39 ;; (nav-state-method-39 (_type_) symbol) + (nav-state-method-40 () none) ;; 40 ;; (do-navigation-to-destination (_type_ vector) none) + (nav-state-method-41 () none) ;; 41 ;; (clamp-vector-to-mesh-cross-gaps (_type_ vector) symbol) + (nav-state-method-42 () none) ;; 42 ;; (set-target-pos! (_type_ vector) none) + (nav-state-method-43 () none) ;; 43 ;; (set-virtual-cur-pos! (_type_ vector) none) + (nav-state-method-44 () none) ;; 44 ;; (set-travel! (_type_ vector) none) + (nav-state-method-45 () none) ;; 45 ;; (set-velocity! (_type_ vector) none) + (nav-state-method-46 () none) ;; 46 ;; (set-heading! (_type_ vector) none) + (nav-state-method-47 () none) ;; 47 ;; (set-speed! (_type_ meters) none) + (nav-state-method-48 () none) ;; 48 ;; (reset! (_type_ nav-control) none) + (nav-state-method-49 () none) ;; 49 ;; (nav-state-method-49 () none) + (nav-state-method-50 () none) ;; 50 ;; (navigate-using-best-dir-use-existing-avoid-spheres (_type_ nav-avoid-spheres-params) none) + (nav-state-method-51 () none) ;; 51 ;; (nav-state-method-51 (_type_) none) + (nav-state-method-52 () none) ;; 52 ;; (navigate-using-route-portals (_type_) none) + (nav-state-method-53 () none) ;; 53 ;; (navigate-using-best-dir-recompute-avoid-spheres-1 (_type_) none) + (nav-state-method-54 () none) ;; 54 ;; (navigate-within-poly (_type_) none) + (nav-state-method-55 () none) ;; 55 ;; (clamp-travel-vector (_type_) none) + (nav-state-method-56 () none) ;; 56 + ) + ) + +(deftype nav-control (structure) + ((flags nav-control-flag :offset-assert 0) + (callback-info nav-callback-info :offset-assert 4) + (process process :offset-assert 8) ;; guessed by decompiler + (pad0 uint32 :offset-assert 12) + (shape collide-shape :offset-assert 16) ;; guessed by decompiler + (nearest-y-threshold meters :offset-assert 20) + (nav-cull-radius meters :offset-assert 24) + (sec-per-frame float :offset-assert 28) + (target-speed meters :offset-assert 32) + (acceleration meters :offset-assert 36) + (turning-acceleration meters :offset-assert 40) + (max-rotation-rate float :offset-assert 44) + (speed-scale float :offset-assert 48) + (sphere-count int32 :offset-assert 52) + (sphere-array (inline-array sphere) :offset-assert 56) ;; guessed by decompiler + (root-sphere-id uint8 :offset-assert 60) + (sphere-mask uint8 :offset-assert 61) + (pad1 uint8 2 :offset-assert 62) ;; guessed by decompiler + (sphere-id-array uint8 16 :offset-assert 64) ;; guessed by decompiler + ;;(UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (extra-nav-sphere vector :inline :offset-assert 80) + (root-nav-sphere vector :inline :offset-assert 96) + (state nav-state :inline :offset-assert 112) + (mesh basic :offset 124) + ) + :method-count-assert 48 + :size-assert #x120 + :flag-assert #x3000000120 + (:methods + (nav-control-method-9 () none) ;; 9 ;; (debug-draw (_type_) none) + (nav-control-method-10 () none) ;; 10 ;; (point-in-bsphere? (_type_ vector) symbol) + (nav-control-method-11 () none) ;; 11 ;; (find-poly-containing-point-1 (_type_ vector) nav-poly) + (nav-control-method-12 () none) ;; 12 ;; (closest-point-on-mesh (_type_ vector vector nav-poly) nav-poly) + (nav-control-method-13 () none) ;; 13 ;; (find-nearest-poly-to-point (_type_ vector) nav-poly) + (nav-control-method-14 () none) ;; 14 ;; (project-point-onto-plane-of-poly (_type_ nav-poly vector vector vector) none) + (nav-control-method-15 () none) ;; 15 ;; (find-poly-containing-point-2 (_type_ vector) nav-poly) + (nav-control-method-16 () none) ;; 16 ;; (is-above-poly-max-height? (_type_ vector float) symbol) + (nav-control-method-17 () none) ;; 17 ;; (is-in-mesh? (_type_ vector float) symbol) + (nav-control-method-18 () none) ;; 18 ;; (avoid-spheres-1! (_type_ nav-avoid-spheres-params) symbol) + (nav-control-method-19 () none) ;; 19 ;; (avoid-spheres-2! (_type_ nav-avoid-spheres-params) symbol) + (nav-control-method-20 () none) ;; 20 ;; (clamp-vector-to-mesh-cross-gaps (_type_ vector nav-poly vector float symbol clamp-travel-vector-to-mesh-return-info) none) + (nav-control-method-21 () none) ;; 21 ;; (clamp-vector-to-mesh-no-gaps (_type_ vector nav-poly vector clamp-travel-vector-to-mesh-return-info) none) + (nav-control-method-22 () none) ;; 22 ;; (find-first-sphere-and-update-avoid-params (_type_ vector nav-avoid-spheres-params) float) + (nav-control-method-23 () none) ;; 23 ;; (set-spheres-from-nav-ids (_type_) none) + (nav-control-method-24 () none) ;; 24 ;; (add-root-sphere-to-hash! (_type_ vector int) symbol) + (nav-control-method-25 () none) ;; 25 ;; (get-max-rotation-rate (_type_) float) + (nav-control-method-26 () none) ;; 26 ;; (get-sphere-mask (_type_) uint) + (nav-control-method-27 () none) ;; 27 ;; (get-target-speed (_type_) meters) + (nav-control-method-28 () none) ;; 28 ;; (enable-extra-sphere! (_type_) none) + (nav-control-method-29 () none) ;; 29 ;; (disable-extra-sphere! (_type_) none) + (nav-control-method-30 () none) ;; 30 ;; (copy-extra-nav-sphere! (_type_ sphere) none) + (nav-control-method-31 () none) ;; 31 ;; (set-extra-nav-sphere-xyz! (_type_ sphere) none) + (nav-control-method-32 () none) ;; 32 ;; (set-extra-nav-sphere-radius! (_type_ float) none) + (nav-control-method-33 () none) ;; 33 ;; (set-nearest-y-thres! (_type_ float) none) + (nav-control-method-34 () none) ;; 34 ;; (set-nav-cull-radius! (_type_ meters) none) + (nav-control-method-35 () none) ;; 35 ;; (set-speed-scale! (_type_ float) none) + (nav-control-method-36 () none) ;; 36 ;; (set-target-speed! (_type_ meters) none) + (nav-control-method-37 () none) ;; 37 ;; (set-acceleration! (_type_ meters) none) + (nav-control-method-38 () none) ;; 38 ;; (set-turning-acceleration! (_type_ meters) none) + (nav-control-method-39 () none) ;; 39 ;; (set-max-rotation-rate! (_type_ float) none) + (nav-control-method-40 () none) ;; 40 ;; (set-sphere-mask! (_type_ uint) none) + (nav-control-method-41 () none) ;; 41 ;; (remove! (_type_) none) + (nav-control-method-42 () none) ;; 42 ;; (init! (_type_ collide-shape) none) + (nav-control-method-43 () none) ;; 43 ;; (display-marks? (_type_) symbol) + (nav-control-method-44 () none) ;; 44 ;; (nav-control-method-44 () none) + (nav-control-method-45 () none) ;; 45 ;; (find-first-sphere-intersecting-ray (_type_ vector vector vector) sphere) + (nav-control-method-46 () none) ;; 46 ;; (find-sphere-ids-from-sphere-hash (_type_ symbol) none) + (nav-control-method-47 () none) ;; 47 + ) + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; spatial-hash-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-type grid-hash-work structure) + +(deftype grid-hash-word (uint8) + () + :flag-assert #x900000001 + ) + +(deftype grid-hash-box (structure) + "Integer coordinate box for the spatial hash grid." + ((min int8 3 :offset-assert 0) ;; guessed by decompiler + (max int8 3 :offset-assert 3) ;; guessed by decompiler + ) + :pack-me + :method-count-assert 9 + :size-assert #x6 + :flag-assert #x900000006 + ) + +(deftype grid-hash (basic) + "The grid-hash is the basic 3D grid used in the spatial-hash, which is used for runtime + actor collision dectection by hashing actor spheres into grid cells, and avoiding the typical + O(n^2) 'check everybody against everybody' collision loop." + ((work grid-hash-work :offset-assert 4) ;; guessed by decompiler + (search-box grid-hash-box :inline :offset-assert 8) + (bucket-size int16 :offset-assert 14) + (axis-scale float 3 :offset-assert 16) ;; guessed by decompiler + (dimension-array int8 3 :offset-assert 28) ;; guessed by decompiler + (vertical-cell-count int8 :offset-assert 31) + (bucket-array (pointer grid-hash-word) :offset-assert 32) ;; guessed by decompiler + (box-min float 3 :offset-assert 36) ;; guessed by decompiler + (box-max float 3 :offset-assert 48) ;; guessed by decompiler + (object-count int16 :offset-assert 60) + (bucket-count int16 :offset-assert 62) + (min-cell-size float :offset-assert 64) + (bucket-memory-size int32 :offset-assert 68) + (mem-bucket-array (pointer grid-hash-word) :offset-assert 72) ;; guessed by decompiler + (spr-bucket-array (pointer grid-hash-word) :offset-assert 76) ;; guessed by decompiler + (debug-draw symbol :offset-assert 80) ;; guessed by decompiler + (use-scratch-ram symbol :offset-assert 84) ;; guessed by decompiler + ) + :method-count-assert 27 + :size-assert #x58 + :flag-assert #x1b00000058 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type int) _type_) + (grid-hash-method-9 () none) ;; 9 ;; (update-grid-for-objects-in-box (_type_ int vector vector) none) + (grid-hash-method-10 () none) ;; 10 ;; (clear-bucket-array (_type_) none) + (grid-hash-method-11 () none) ;; 11 ;; (setup-search-box (_type_ int vector vector vector) none) + (grid-hash-method-12 () none) ;; 12 ;; (search-for-point (_type_ vector) (pointer uint8)) + (grid-hash-method-13 () none) ;; 13 ;; (search-for-sphere (_type_ vector float) (pointer uint8)) + (grid-hash-method-14 () none) ;; 14 ;; (draw (_type_ rgba) none) + (grid-hash-method-15 () none) ;; 15 ;; (dump-grid-info (_type_) none) + (grid-hash-method-16 () none) ;; 16 ;; (verify-bits-in-bucket (_type_ grid-hash-box grid-hash-box) none) + (grid-hash-method-17 () none) ;; 17 ;; (box-of-everything (_type_ object grid-hash-box) none) + (grid-hash-method-18 () none) ;; 18 ;; (grid-hash-method-18 (_type_ grid-hash-box int) none) + (grid-hash-method-19 () none) ;; 19 ;; (grid-hash-method-19 (_type_ grid-hash-box int) none) + (grid-hash-method-20 () none) ;; 20 ;; (do-search! (_type_ grid-hash-box (pointer uint8)) none) + (grid-hash-method-21 () none) ;; 21 ;; (set-up-box (_type_ grid-hash-box vector vector) none) + (grid-hash-method-22 () none) ;; 22 ;; (sphere-to-grid-box (_type_ grid-hash-box sphere) none) + (grid-hash-method-23 () none) ;; 23 ;; (line-sphere-to-grid-box (_type_ grid-hash-box vector vector float) none) + (grid-hash-method-24 () none) ;; 24 ;; (update-grid (_type_) none) + (grid-hash-method-25 () none) ;; 25 + (grid-hash-method-26 () none) ;; 26 + ) + ) + +(deftype find-nav-sphere-ids-params (structure) + ((bsphere sphere :inline :offset-assert 0) + (y-threshold float :offset-assert 16) + (len int16 :offset-assert 20) + (max-len int16 :offset-assert 22) + (mask uint8 :offset-assert 24) + (array (pointer uint8) :offset-assert 28) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype nav-stack-type (structure) + "nav-mesh::12" + ((nav-id-params find-nav-sphere-ids-params :inline :offset 0) + (vec1 vector :inline :offset 32) + (vec2 vector :inline :offset 48) + (vec3 vector :inline :offset 64) + (byte01 int8 :offset 64) + (byte02 int8 :offset 65) + (byte03 int8 :offset 66) + (byte04 int8 :offset 67) + (vec4 vector :inline :offset 80) + (vec5 vector :inline :offset 96) + (vec6 vector :inline :offset 112) + (byte-arr uint8 20 :offset 128) + ) + ) + +(deftype nav-stack-type2 (structure) + "nav-mesh::25" + ((float00 float :offset 0) + (float01 float :offset 8) + (word00 int32 :offset 16) + (word01 int32 :offset 20) + (word02 int32 :offset 24) + (word03 int32 :offset 28) + ) + ) + +(deftype sphere-hash (grid-hash) + "An extension of grid hash that holds spheres inside of the grid." + ((sphere-array (inline-array sphere) :offset-assert 88) ;; guessed by decompiler + (max-object-count int16 :offset-assert 92) + (pad int16 :offset-assert 94) + (mem-sphere-array uint32 :offset-assert 96) + (spr-sphere-array uint32 :offset-assert 100) + ) + :method-count-assert 36 + :size-assert #x68 + :flag-assert #x2400000068 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type int int) _type_) + (sphere-hash-method-27 () none) ;; 27 ;; (add-a-sphere-with-flag (_type_ vector int) int) + (sphere-hash-method-28 () none) ;; 28 ;; (update-from-spheres (_type_) none) + (sphere-hash-method-29 () none) ;; 29 ;; (sphere-hash-method-29 (_type_ find-nav-sphere-ids-params) none) + (sphere-hash-method-30 () none) ;; 30 ;; (find-nav-sphere-ids (_type_ find-nav-sphere-ids-params int int) symbol) + (sphere-hash-method-31 () none) ;; 31 ;; (add-sphere-with-mask-and-id (_type_ vector vector float int) symbol) + (sphere-hash-method-32 () none) ;; 32 ;; (sphere-hash-method-32 (_type_ sphere int) symbol) + (sphere-hash-method-33 () none) ;; 33 + (sphere-hash-method-34 () none) ;; 34 + (sphere-hash-method-35 () none) ;; 35 + ) + ) + +(deftype hash-object-info (structure) + ((object basic :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype spatial-hash (sphere-hash) + "An extension of sphere-hash that associates an object with each sphere." + ((object-array (inline-array hash-object-info) :offset-assert 104) ;; guessed by decompiler + (mem-object-array (inline-array hash-object-info) :offset-assert 108) ;; guessed by decompiler + (spr-object-array (inline-array hash-object-info) :offset-assert 112) ;; guessed by decompiler + ) + :method-count-assert 42 + :size-assert #x74 + :flag-assert #x2a00000074 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type int int) _type_) + (spatial-hash-method-36 () none) ;; 36 ;; (fill-actor-list-for-sphere (_type_ vector vector float (pointer collide-shape) int int) int) + (spatial-hash-method-37 () none) ;; 37 ;; (fill-actor-list-for-line-sphere (_type_ vector vector float (pointer collide-shape) int int) int) + (spatial-hash-method-38 () none) ;; 38 ;; (fill-actor-list-for-vec+r (_type_ vector (pointer collide-shape)) int) + (spatial-hash-method-39 () none) ;; 39 ;; (spatial-hash-method-39 (_type_ object hash-object-info) int) + (spatial-hash-method-40 () none) ;; 40 + (spatial-hash-method-41 () none) ;; 41 + ) + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; actor-hash-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *actor-list* object) ;; (pointer collide-shape) +;; (define-extern *actor-list-length* object) ;; int + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; fmv-player-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype m2v-caption (structure) + ((text-id uint32 :offset-assert 0) + (start int32 :offset-assert 4) + (end int32 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype m2v-info (structure) + ((name basic :offset-assert 0) + (sound basic :offset-assert 4) + (commentary-sound basic :offset-assert 8) + (captions basic :offset-assert 12) + (commentary-captions basic :offset-assert 16) + (id uint32 :offset-assert 20) + (idx int8 :offset-assert 24) + (driver uint8 :offset-assert 25) + (driver2 uint8 :offset-assert 26) + (flags uint8 :offset-assert 27) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype fmv-player (process) + ((texture-base-page uint32 :offset-assert 144) + (texture-width uint32 :offset-assert 148) + (gui-id uint32 :offset-assert 152) + (subtitle-change-time uint64 :offset-assert 160) + (start-time uint64 :offset-assert 168) + (fmv-mode uint8 :offset-assert 176) + ) + :method-count-assert 20 + :size-assert #xb1 + :flag-assert #x14003000b1 + (:methods + (fmv-player-method-9 () none) ;; 9 + (fmv-player-method-10 () none) ;; 10 + (fmv-player-method-11 () none) ;; 11 + (fmv-player-method-12 () none) ;; 12 + (fmv-player-method-13 () none) ;; 13 + (fmv-player-method-14 () none) ;; 14 + (fmv-player-method-15 () none) ;; 15 + (fmv-player-method-16 () none) ;; 16 + (fmv-player-method-17 () none) ;; 17 + (fmv-player-method-18 () none) ;; 18 + (fmv-player-method-19 () none) ;; 19 + ) + ) +|# + +#| +(deftype fmv-display-params (structure) + ((display-mode int32 :offset-assert 0) + (texture-base-page uint32 :offset-assert 4) + (texture-width uint32 :offset-assert 8) + (frame-base-pointer uint32 :offset-assert 12) + (display-width uint32 :offset-assert 16) + (display-height uint32 :offset-assert 20) + (display-dx int32 :offset-assert 24) + (display-dy int32 :offset-assert 28) + (contrast float :offset-assert 32) + (brightness float :offset-assert 36) + (fast-z-clear int32 :offset-assert 40) + (frame-buffer-mask uint32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype fmv-player-params (structure) + ((display-mode fmv-display-params :inline :offset-assert 0) + (file-init basic :offset-assert 48) + (file-read basic :offset-assert 52) + (get-time basic :offset-assert 56) + (video-type int32 :offset-assert 60) + (zoom-mode int32 :offset-assert 64) + (upper-field-first int32 :offset-assert 68) + (buffer-mode int32 :offset-assert 72) + (work-mem uint32 :offset-assert 76) + (work-mem-size uint32 :offset-assert 80) + ) + :method-count-assert 10 + :size-assert #x54 + :flag-assert #xa00000054 + (:methods + (fmv-player-params-method-9 () none) ;; 9 + ) + ) +|# + +;; (define-extern *fmv-player* object) +;; (define-extern *m2v-info* array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; load-dgo ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defenum load-msg-result + :type uint16 + :bitfield #f + (done 0) + (error 1) + (more 2) + (aborted 3) + (invalid 666) + ) + +(deftype load-dgo-msg (structure) + "IOP RPC message for loading a dgo." + ((rsvd uint16 :offset-assert 0) + (result load-msg-result :offset-assert 2) ;; load-msg-result + (b1 pointer :offset-assert 4) ;; guessed by decompiler + (b2 pointer :offset-assert 8) ;; guessed by decompiler + (bt pointer :offset-assert 12) ;; guessed by decompiler + (name uint128 :offset-assert 16) + (address uint32 :offset 4) + (id uint128 :offset-assert 32) + (pad uint32 7) ;; ?? + ) + :method-count-assert 9 + :size-assert #x4c + :flag-assert #x90000004c + ) + +(deftype load-chunk-msg (structure) + "IOP RPC message for loading a chunk of a chunked animation" + ((rsvd uint16 :offset-assert 0) + (result uint16 :offset-assert 2) ;; load-msg-result + (address pointer :offset-assert 4) ;; guessed by decompiler + (section uint32 :offset-assert 8) + (maxlen uint32 :offset-assert 12) + (dummy uint32 4 :offset-assert 16) ;; guessed by decompiler + (basename sound-stream-name :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) + +(deftype play-chunk-msg (structure) + "IOP RPC message for playing some streamed audio." + ((rsvd uint16 :offset-assert 0) + (result uint16 :offset-assert 2) + (address pointer :offset-assert 4) ;; guessed by decompiler + (section uint32 :offset-assert 8) + (volume int32 :offset 8) + (maxlen uint32 :offset-assert 12) + (group uint8 :offset 12) + (id uint32 4 :offset-assert 16) ;; guessed by decompiler + (basename sound-stream-name 4 :inline :offset-assert 32) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #xe0 + :flag-assert #x9000000e0 + ) + +(define-extern *load-dgo-rpc* rpc-buffer-pair) +(define-extern *load-str-rpc* rpc-buffer-pair) +(define-extern *play-str-rpc* rpc-buffer-pair) +(define-extern *load-str-lock* symbol) +(define-extern *que-str-lock* symbol) +(define-extern *dgo-name* string) +(define-extern str-load "Send a message to the IOP to start loading a chunk of a .STR file to the EE." (function string int pointer int symbol)) +(define-extern str-load-status "Get the status of the most recent load. + Return 'busy if in progress, 'error if failed, or 'complete. + If 'complete, returns the maxlen value from the IOP." (function (pointer int32) symbol)) +(define-extern str-load-cancel "Cancel a streaming load. Note that this does not actually stop the transfer, so the IOP may continue writing to the buffer." + (function none)) +(define-extern str-play-async "Start playing a streaming audio." (function string sound-id int int none)) +(define-extern str-play-stop "Stop playing streaming audio." (function string sound-id none)) +(define-extern str-play-queue "Queue up streaming data, allowing it to start playing without delay." (function string string string string (pointer uint32) pointer none)) +(define-extern str-ambient-play "Start playing ambient (unused?)." (function string none)) +(define-extern str-ambient-stop "Stop playing ambient (unused?)." (function string none)) +(define-extern str-play-kick "Do an empty RPC on play so the IOP code runs and can update buffers." (function none)) +(define-extern *dgo-time* time-frame) +(define-extern dgo-load-begin "Start a DGO load!" (function string uint128 pointer pointer pointer load-dgo-msg)) +(define-extern dgo-load-get-next "Get the address of the most recently loaded object. #f is there is none. Returns if this is the last by arg0." (function (pointer symbol) pointer)) +(define-extern dgo-load-continue "Inform the IOP that it is safe to start loading the next object." (function pointer pointer pointer load-dgo-msg)) +(define-extern dgo-load-cancel "Abort a DGO load." (function int none)) +(define-extern find-temp-buffer "Unused function to find some temporary leftover space in DMA buffer. + Unused since jak 1, and checks the same buffer twice??" (function int pointer)) +(define-extern dgo-load-link "Start the async linker on a GOAL object file that was just loaded." (function dgo-header kheap uint symbol symbol symbol)) +(define-extern destroy-mem "Overwrite memory with #xffffffff for debugging." (function (pointer uint32) (pointer uint32) none)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ramdisk ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype ramdisk-rpc-fill (structure) + ((rsvd1 int32 :offset-assert 0) + (ee-id int32 :offset-assert 4) + (rsvd2 int32 2 :offset-assert 8) ;; guessed by decompiler + (filename uint128 :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype ramdisk-rpc-load (structure) + ((rsvd int32 :offset-assert 0) + (ee-id int32 :offset-assert 4) + (offset uint32 :offset-assert 8) + (length uint32 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype ramdisk-rpc-load-to-ee (structure) + ((rsvd int32 :offset-assert 0) + (addr int32 :offset-assert 4) + (offset int32 :offset-assert 8) + (length int32 :offset-assert 12) + (filename uint128 :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +;; (define-extern *ramdisk-rpc* object) ;; rpc-buffer-pair +;; (define-extern *current-ramdisk-id* object) ;; int +;; (define-extern ramdisk-load function) ;; (function int uint uint pointer int) +;; (define-extern ramdisk-sync function) ;; (function none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; gsound ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype engine-sound-pers (engine-pers) + () + :method-count-assert 15 + :size-assert #x20 + :flag-assert #xf00000020 + ) + +(define-extern sound-mp-fix-trans (function none)) +(define-extern *sound-loop-engine* engine-sound-pers) +(define-extern *sound-player-rpc* rpc-buffer-pair) +(define-extern *sound-loader-rpc* rpc-buffer-pair) +(define-extern sound-name= "Are two sound names the same?" (function sound-name sound-name symbol)) +(define-extern str-is-playing? "Is any streaming audio playing?" (function symbol)) +(define-extern str-id-is-playing? "Is any streaming audio with the given ID playing?" (function sound-id symbol)) +(define-extern current-str-pos "Get the current stream position of the given sound ID, or -1 if it is not playing." (function sound-id int)) +(define-extern current-str-status "Get the status of the stream playing the given sound, or 0 if it is not playing." (function sound-id stream-status)) +(define-extern *dnas-is-running* symbol) +(define-extern is-cd-in? "Is the CD/DVD in the ps2?" (function symbol)) +(define-extern new-sound-id "Allocate a new sound ID, used to identify a unique playback of a sound." (function sound-id)) +(define-extern check-irx-version "Confirm OVERLORD version is correct and set up the sound-iop-info address so the OVERLORD can report back to the EE." (function int)) +(define-extern sound-bank-load "Send RPC to load a sound bank." (function sound-name int int sound-id)) +(define-extern sound-bank-unload "Send unload-bank rpc to loader" (function sound-name int)) +(define-extern sound-music-load "Send load-music rpc to loader" (function sound-name int)) +(define-extern sound-music-unload "Send unload-music rpc to loader." (function int)) +(define-extern set-language "Send set-language rpc to loader. Note this is only for sound, no game text is changed." (function language-enum int)) +(define-extern sound-set-stereo-mode "Send set-stereo-mode rpc to loader." (function int none)) +(define-extern list-sounds "Send list-sounds rpc to loader." (function none)) +(define-extern sound-command->string (function sound-command string)) +(define-extern sound-buffer-dump "Print out all sound-commands in the buffer." (function int)) +(define-extern *debug-sound-info-item* (pointer sound-info)) +(define-extern sound-instance-play (function sound-instance uint)) +(define-extern sound-instance-update (function sound-instance uint)) +(define-extern sound-info-by-name (function sound-name sound-info)) +(define-extern *sound-handles* (array (array sound-handle))) +(define-extern find-sound-handle (function int handle sound-handle)) +(define-extern release-sound-handle (function sound-handle none)) +(define-extern get-sound-handle (function sound-instance sound-handle)) +(define-extern *sound-instances* (array sound-instance)) +(define-extern find-sound-instance (function int symbol sound-instance)) +(define-extern remove-sound-instance-by-index (function int int)) +(define-extern remove-sound-instance-by-sound-id (function int int)) +(define-extern make-sound-instance (function int sound-instance)) +(define-extern update-pitch-with-doppler (function sound-instance number)) +(define-extern update-tracking-position (function sound-instance symbol)) +(define-extern calculate-pan-angle (function vector symbol float symbol int float)) +(define-extern update-pan-angle (function sound-instance float float)) +(define-extern calculate-falloff-volume (function float vector float float float vector sound-instance float)) +(define-extern update-volume-with-falloff (function sound-instance float)) +(define-extern *sound-priority-level* int) +(define-extern *sound-duck-amount* float) +(define-extern *sound-priority-duck* object) +(define-extern *music-ducked-last-frame?* symbol) +(define-extern *slow-mo-last-frame?* symbol) +(define-extern set-sound-priority-duck-amount (function float float)) +(define-extern unset-sound-priority-duck-amount (function float)) +(define-extern build-sound-list (function none)) +(define-extern *sound-player-enable* symbol) +(define-extern swap-sound-buffers "Per-frame update of sound system - update loop-engine, update ear trans, send player RPC, check for missing/dirty CD." (function vector vector vector vector vector float int)) +(define-extern get-sound-buffer-entry "Allocate a new entry in the player RPC queue, to be flushed on the next frame." (function pointer)) +(define-extern free-last-sound-buffer-entry "Remove the last thing added with get-sound-buffer-entry." (function none)) +(define-extern sound-basic-cb "Unknown and unused callback." (function int (pointer int32) none)) +(define-extern sound-trans-copy (function int symbol none)) +(define-extern string->sound-name "Create a sound-name from a string" (function string sound-name)) +(define-extern sound-name->string "Create a string from a sound-name. Returns pointer to a single shared static string." (function sound-name string)) +(define-extern sound-set-volume "Send set-master-volume rpc." (function sound-group float int)) +(define-extern sound-set-reverb "Send set-reverb rpc" (function int float float uint int)) +(define-extern sound-set-globals (function none)) +(define-extern sound-pause "Send pause-sound rpc to pause by id" (function sound-id int)) +(define-extern sound-stop "Send stop-sound rpc to stop by id" (function sound-id symbol int)) +(define-extern sound-continue "Send continue-sound rpc to continue by id" (function sound-id int)) +(define-extern sound-group-pause "Send pause-group rpc" (function sound-group int)) +(define-extern sound-group-stop "Send stop-group rpc" (function sound-group int)) +(define-extern sound-group-continue "Send continue-group rpc" (function sound-group int)) +(define-extern sound-set-fps "Send set-fps rpc" (function int int)) +(define-extern sound-volume-off "Adjust settings to turn all sound volume off" (function int)) +(define-extern show-iop-info "Display iop info on screen." (function dma-buffer int)) +(define-extern show-iop-memory "Display iop memory stats on screen" (function dma-buffer int)) +(define-extern ear-trans "Get the current location of the ear. Use 1 for the settings ear-handle, or 0 for the camera." (function int int vector)) +(define-extern make-sqrt-table "Generate integer square-root table used in the IOP." (function none)) +(define-extern doppler-pitch-shift "Compute pitch shift for the doppler effect. This is done assuming the listener is *target* and has *target*'s velocity." (function vector vector float)) +(define-extern sound-bank-reload "Start a background process to unload all sound banks, then load them again." (function none)) +(define-extern sound-bank-reload-common (function none)) +(define-extern *jukebox-onoff* symbol) +(define-extern *last-music-position* uint) +(define-extern jukebox-onoff (function symbol int)) +(define-extern update-jukebox-music (function none)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; transformq ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern transformq-copy! "Set arg0 = arg1." (function transformq transformq transformq)) +(define-extern matrix<-transformq! "Convert to 4x4 affine transform." (function matrix transformq matrix)) +(define-extern matrix<-no-trans-transformq! "Create 4x4 affine transform with no translation." (function matrix transformq matrix)) +(define-extern matrix<-transformq+trans! + "Convert to affine transform with an additional translation (in the local frame)." + (function matrix transformq vector matrix)) +(define-extern matrix<-transformq+world-trans! + "Convert to affine transform with an additional translation in the world frame (not rotated)." + (function matrix transformq vector matrix)) +(define-extern matrix<-parented-transformq! + "Unused. Seems like the parented thing means there's an inverse scale in arg2." + (function matrix transformq vector matrix)) +(define-extern matrix<-transformq+rot-offset! + "Affine transform for a point offset in the destination frame of the transformq (rather than just + adding an offset at the end)." + (function matrix transformq vector matrix)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; collide-func ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern raw-ray-sphere-intersect function) +(define-extern ray-sphere-intersect (function vector vector vector float float)) +(define-extern ray-circle-intersect (function vector vector vector float float)) +(define-extern ray-cylinder-intersect (function vector vector vector vector float float vector float)) +(define-extern ray-plane-intersect (function vector vector vector vector vector vector vector float)) +;; (define-extern ray-triangle-intersect function) +;; (define-extern collide-do-primitives function) +(define-extern moving-sphere-triangle-intersect (function vector vector float collide-cache-tri vector vector float)) +;; (define-extern moving-sphere-sphere-intersect function) +;; (define-extern moving-sphere-moving-sphere-intersect function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; joint ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype art-group (art) + ((info file-info :offset-assert 0) ;; guessed by decompiler + (length int32 :offset-assert 8) + (name string :offset-assert 4) ;; guessed by decompiler + (extra res-lump :offset-assert 12) ;; guessed by decompiler + (data art-element :dynamic :offset-assert 28) ;; guessed by decompiler + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 16 + :size-assert #x20 + :flag-assert #x1000000020 + (:methods + (art-group-method-14 () none) ;; 14 ;; (link-art-to-master (_type_) art-group) + (art-group-method-15 () none) ;; 15 ;; (unlink-art-to-master (_type_) int) + ) + ) +|# + +;; (define-extern joint-anim-login function) ;; (function joint-anim-drawable joint-anim-drawable) +;; (define-extern joint-anim-inspect-elt function) ;; (function joint-anim float joint-anim) +;; (define-extern jacc-mem-usage function) ;; (function joint-anim-compressed-control memory-usage-block int joint-anim-compressed-control) +;; (define-extern joint-control-cleanup function) ;; (function joint-control kheap art-joint-anim symbol) +;; (define-extern joint-control-channel-eval function) ;; (function joint-control-channel float :behavior process) +;; (define-extern joint-control-channel-eval! function) ;; (function joint-control-channel (function joint-control-channel float float float float) float :behavior process) +;; (define-extern joint-control-channel-group-eval! function) ;; (function joint-control-channel art-joint-anim (function joint-control-channel float float float float) int) +;; (define-extern joint-control-channel-group! function) ;; (function joint-control-channel art-joint-anim (function joint-control-channel float float float float) int) +;; (define-extern joint-control-copy! function) ;; (function joint-control joint-control joint-control) +;; (define-extern joint-control-remap! function) ;; (function joint-control art-group art-group pair int string symbol) +;; (define-extern flatten-joint-control-to-spr function) ;; (function joint-control int) +;; (define-extern matrix-from-joint-anim-frame function) ;; (function joint-anim-compressed-control int int matrix) +;; (define-extern matrix-from-control-channel! function) ;; (function matrix joint joint-control-channel matrix) +;; (define-extern matrix-from-control-pair! function) ;; (function matrix joint-control-channel joint int matrix) +;; (define-extern matrix-from-control! function) ;; (function matrix-stack joint joint-control symbol matrix) +;; (define-extern cspace<-cspace! function) ;; (function cspace cspace matrix) +;; (define-extern cspace<-cspace-normalized! function) ;; (function cspace cspace matrix) +;; (define-extern cspace<-parent-joint! function) ;; (function cspace (pointer process-drawable) int matrix) +;; (define-extern cspace<-transformq! function) ;; (function cspace transformq matrix) +;; (define-extern cspace<-transformq+trans! function) ;; (function cspace transformq vector matrix) +;; (define-extern cspace<-transformq+world-trans! function) ;; (function cspace transformq vector matrix) +;; (define-extern cspace<-transformq+rot-offset! function) ;; (function cspace transformq vector matrix) +;; (define-extern cspace-calc-total-matrix! function) ;; (function cspace matrix matrix) +;; (define-extern cspace<-matrix-no-push-joint! function) ;; (function cspace joint-control matrix) +;; (define-extern cspace<-matrix-joint! function) ;; (function cspace matrix matrix) +;; (define-extern cspace<-parented-matrix-joint! function) ;; (function cspace matrix matrix) +;; (define-extern cspace<-parented-matrix-mirror! function) ;; (function cspace matrix matrix) +;; (define-extern cspace<-parented-matrix-joint-flip-z! function) ;; (function cspace matrix matrix) +;; (define-extern cspace<-matrix-joint-flip-z! function) ;; (function cspace matrix none) +;; (define-extern cspace<-parented-transformq-joint! function) ;; (function cspace transformq none) +;; (define-extern cspace<-parented-transformq-joint-flip-z! function) ;; (function cspace transformq none) +;; (define-extern clear-frame-accumulator function) +;; (define-extern normalize-frame-quaternions function) +;; (define-extern decompress-fixed-data-to-accumulator function) +;; (define-extern decompress-frame-data-to-accumulator function) +;; (define-extern decompress-frame-data-pair-to-accumulator function) +;; (define-extern make-joint-jump-tables function) ;; (function int) +;; (define-extern calc-animation-from-spr function) ;; (function joint-anim-frame int none) +;; (define-extern create-interpolated-joint-animation-frame function) ;; (function joint-anim-frame int joint-control int) +;; (define-extern create-interpolated2-joint-animation-frame function) ;; (function joint-anim-frame int joint-control int) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; joint-mod ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern joint-mod-ik-callback function) ;; (function cspace transformq none :behavior process) +;; (define-extern real-joint-mod-gun-look-at-handler function) ;; (function cspace transformq none :behavior process) +;; (define-extern joint-mod-gun-look-at-handler function) ;; (function cspace transformq none :behavior process) +;; (define-extern joint-mod-foot-rot-handler function) ;; (function cspace transformq none :behavior process) +;; (define-extern last-try-to-look-at-data object) ;; try-to-look-at-info +;; (define-extern joint-mod-look-at-handler function) ;; (function cspace transformq none :behavior process) +;; (define-extern joint-mod-world-look-at-handler function) ;; (function cspace transformq none :behavior process) +;; (define-extern joint-mod-rotate-handler function) ;; (function cspace transformq none :behavior process) +;; (define-extern joint-mod-scale-handler function) ;; (function cspace transformq none :behavior process) +;; (define-extern joint-mod-joint-set-handler function) ;; (function cspace transformq none :behavior process) +;; (define-extern joint-mod-joint-set-world-handler function) ;; (function cspace transformq none :behavior process) +;; (define-extern joint-mod-joint-set*-handler function) ;; (function cspace transformq none :behavior process) +;; (define-extern joint-mod-joint-set*-world-handler function) ;; (function cspace transformq none :behavior process) +;; (define-extern joint-mod-polar-look-at-callback function) ;; (function cspace transformq none :behavior process) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wind-work ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *wind-work* wind-work) ;; wind-work + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wind ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern update-wind function) ;; (function wind-work (array uint8) none) +;; (define-extern wind-get-hashed-index function) ;; (function vector wind-work int) +;; (define-extern level-update-wind function) ;; (function wind-work none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; bsp ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern mem-usage-bsp-tree function) ;; (function bsp-header bsp-node memory-usage-block int none) +;; (define-extern *test-shrub* object) ;; int +;; (define-extern bsp-camera-asm function) ;; (function bsp-header vector none) +;; (define-extern print-collide-stats function) ;; (function none) +;; (define-extern level-remap-texture function) ;; (function texture-id texture-id) +;; (define-extern build-masks function) ;; (function bsp-header none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; subdivide ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *merc-global-stats* object) ;; merc-global-stats +;; (define-extern clear-tr-stat function) ;; (function tr-stat none) +;; (define-extern *stat-string-tfrag* object) ;; string +;; (define-extern *stat-string-tfrag-scissor* object) ;; string +;; (define-extern *stat-string-total* object) ;; string +;; (define-extern print-tr-stat function) ;; (function tr-stat string string none) +;; (define-extern print-terrain-stats function) ;; (function none) +;; (define-extern update-subdivide-settings! function) ;; (function subdivide-settings math-camera int none) +;; (define-extern *subdivide-settings* object) ;; subdivide-settings +;; (define-extern set-tfrag-dists! function) ;; (function tfrag-dists none) +;; (define-extern *terrain-context* object) ;; terrain-context +;; (define-extern GSH_ENABLE object) ;; symbol +;; (define-extern GSH_BUCKET object) ;; bucket-id +;; (define-extern GSH_WHICH_STAT object) ;; int +;; (define-extern GSH_MAX_DISPLAY object) ;; basic +;; (define-extern GSH_TIME object) ;; int +;; (define-extern *perf-stats* object) ;; perf-stat-array +;; (define-extern *gomi-stats-hack* object) ;; (inline-array perf-stat) +;; (define-extern start-perf-stat-collection function) ;; (function none) +;; (define-extern end-perf-stat-collection function) ;; (function none) +;; (define-extern print-perf-stats function) ;; (function none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; sprite ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype sprite-header (structure) + ((header qword 1 :offset-assert 0) ;; guessed by decompiler + (num-sprites int32 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype sprite-hvdf-data (structure) + ((data qword 76 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x4c0 + :flag-assert #x9000004c0 + ) +|# + +#| +(deftype sprite-hvdf-control (structure) + ((alloc int8 76 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x4c + :flag-assert #x90000004c + ) +|# + +#| +(deftype sprite-aux-elem (structure) + ((aux-type sprite-aux-type :offset-assert 0) ;; guessed by decompiler + (data vector 3 :offset-assert 4) ;; guessed by decompiler + (vec-data sprite-vec-data-2d :offset-assert 4) + (gif-data adgif-shader :offset-assert 8) + (aux-data sparticle-cpuinfo :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype sprite-aux-list (basic) + ((num-entries int32 :offset-assert 4) + (entry int32 :offset-assert 8) + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype sprite-frame-data (structure) + ((data UNKNOWN 42 :offset-assert 0) + (cdata vector 16 :offset-assert 0) ;; guessed by decompiler + (fdata UNKNOWN 26 :offset-assert 256) + (xy-array vector 8 :offset-assert 0) ;; guessed by decompiler + (st-array vector 4 :offset-assert 128) ;; guessed by decompiler + (xyz-array vector 4 :offset-assert 192) ;; guessed by decompiler + (hmge-scale vector :inline :offset-assert 256) + (consts vector :inline :offset-assert 272) + (pfog0 float :offset-assert 272) + (deg-to-rad float :offset-assert 276) + (min-scale float :offset-assert 280) + (inv-area float :offset-assert 284) + (adgif-giftag qword :inline :offset-assert 288) ;; gs-gif-tag :inline + (sprite-2d-giftag qword :inline :offset-assert 304) ;; gs-gif-tag :inline + (sprite-2d-giftag-2 qword :inline :offset-assert 320) ;; gs-gif-tag :inline + (sincos-01 vector :inline :offset-assert 336) + (sincos-23 vector :inline :offset-assert 352) + (sincos-45 vector :inline :offset-assert 368) + (sincos-67 vector :inline :offset-assert 384) + (sincos-89 vector :inline :offset-assert 400) + (basis-x vector :inline :offset-assert 416) + (basis-y vector :inline :offset-assert 432) + (sprite-3d-giftag qword :inline :offset-assert 448) ;; gs-gif-tag :inline + (sprite-3d-giftag-2 qword :inline :offset-assert 464) ;; gs-gif-tag :inline + (screen-shader adgif-shader :inline :offset-assert 480) + (inv-hmge-scale vector :inline :offset-assert 576) + (stq-offset vector :inline :offset-assert 592) + (stq-scale vector :inline :offset-assert 608) + (rgba-plain qword :inline :offset-assert 624) + (warp-giftag qword :inline :offset-assert 640) ;; gs-gif-tag :inline + (fog-clamp vector :inline :offset-assert 656) + (fog-min float :offset-assert 656) + (fog-max float :offset-assert 660) + (max-scale float :offset-assert 664) + ) + :method-count-assert 9 + :size-assert #x2a0 + :flag-assert #x9000002a0 + ) +|# + +;; (define-extern sprite-setup-header function) ;; (function sprite-header int none) +;; (define-extern clear-sprite-aux-list function) ;; (function none) +;; (define-extern add-to-sprite-aux-list function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d uint none) +;; (define-extern sprite-setup-frame-data function) ;; (function sprite-frame-data uint none) +;; (define-extern sprite-vu1-block object) ;; vu-function +;; (define-extern sprite-set-3d-quaternion! function) ;; (function sprite-vec-data-3d quaternion quaternion) +;; (define-extern sprite-get-3d-quaternion! function) ;; (function quaternion sprite-vec-data-3d quaternion) +;; (define-extern sprite-add-matrix-data function) ;; (function dma-buffer uint none) +;; (define-extern sprite-add-frame-data function) ;; (function dma-buffer uint none) +;; (define-extern sprite-add-2d-chunk function) ;; (function sprite-array-2d int int dma-buffer int none) +;; (define-extern sprite-add-2d-all function) ;; (function sprite-array-2d dma-buffer int none) +;; (define-extern sprite-add-3d-chunk function) ;; (function sprite-array-3d int int dma-buffer none) +;; (define-extern sprite-add-3d-all function) ;; (function sprite-array-3d dma-buffer int none) +;; (define-extern sprite-draw function) ;; (function display none) +;; (define-extern sprite-allocate-user-hvdf function) ;; (function int) +;; (define-extern sprite-release-user-hvdf function) ;; (function int none) +;; (define-extern sprite-get-user-hvdf function) ;; (function int vector) +;; (define-extern *sprite-hvdf-data* object) ;; sprite-hvdf-data +;; (define-extern *sprite-hvdf-control* object) ;; sprite-hvdf-control +;; (define-extern *sprite-aux-list* object) ;; sprite-aux-list +;; (define-extern *sprite-array-2d* object) ;; sprite-array-2d +;; (define-extern *sprite-array-3d* object) ;; sprite-array-3d + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; sprite-distort ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype sprite-distorter-sine-tables (basic) + ((aspx float :offset-assert 4) + (aspy float :offset-assert 8) + (entry vector 128 :offset-assert 16) ;; guessed by decompiler + (ientry qword 9 :offset-assert 2064) ;; guessed by decompiler + (giftag qword :inline :offset-assert 2208) ;; gs-gif-tag :inline + (color qword :inline :offset-assert 2224) + ) + :method-count-assert 9 + :size-assert #x8c0 + :flag-assert #x9000008c0 + ) +|# + +;; (define-extern *sprite-distorter-sine-tables* object) ;; sprite-distorter-sine-tables +;; (define-extern sprite-distorter-generate-tables function) ;; (function none) +;; (define-extern sprite-distort-vu1-block object) ;; vu-function +;; (define-extern sprite-init-distorter function) ;; (function dma-buffer none) +;; (define-extern sprite-draw-distorters function) ;; (function dma-buffer none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; sprite-glow ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype sprite-glow-template (structure) + ((clear-init-giftag gs-gif-tag :inline :offset-assert 0) + (clear-init-adcmds gs-adcmd 5 :offset-assert 16) ;; guessed by decompiler + (clear-draw-giftag gs-gif-tag :inline :offset-assert 96) + (clear-draw-clr-0 gs-packed-rgba :inline :offset-assert 112) + (clear-draw-xyz-0 gs-packed-xyzw 2 :offset-assert 128) ;; guessed by decompiler + (clear-draw-clr-1 gs-packed-rgba :inline :offset-assert 160) + (clear-draw-xyz-1 vector 2 :offset-assert 176) ;; guessed by decompiler + (offscr-setup-giftag gs-gif-tag :inline :offset-assert 208) + (offscr-setup-adcmds gs-adcmd 9 :offset-assert 224) ;; guessed by decompiler + (offscr-first-giftag gs-gif-tag :inline :offset-assert 368) + (offscr-first-clr gs-packed-rgba :inline :offset-assert 384) + (offscr-first-uv-0 gs-packed-uv :inline :offset-assert 400) + (offscr-first-xyzw-0 gs-packed-xyzw :inline :offset-assert 416) + (offscr-first-uv-1 gs-packed-uv :inline :offset-assert 432) + (offscr-first-xyzw-1 gs-packed-xyzw :inline :offset-assert 448) + (repeat-draw-giftag gs-gif-tag :inline :offset-assert 464) + (repeat-draw-adcmds gs-adcmd 29 :offset-assert 480) ;; guessed by decompiler + (flare-alpha-giftag gs-gif-tag :inline :offset-assert 944) + (flare-alpha-clr gs-packed-rgba :inline :offset-assert 960) + (flare-alpha-uv gs-packed-uv :inline :offset-assert 976) + (flare-alpha-xyzw-0 gs-packed-xyzw :inline :offset-assert 992) + (flare-alpha-xyzw-1 gs-packed-xyzw :inline :offset-assert 1008) + (flare-alpha-xyzw-2 gs-packed-xyzw :inline :offset-assert 1024) + (flare-alpha-xyzw-3 gs-packed-xyzw :inline :offset-assert 1040) + (flare-init-giftag gs-gif-tag :inline :offset-assert 1056) + (flare-init-adcmds gs-adcmd 8 :offset-assert 1072) ;; guessed by decompiler + (flare-draw-giftag gs-gif-tag :inline :offset-assert 1200) + (flare-draw-clr gs-packed-rgba :inline :offset-assert 1216) + (flare-draw-stq-0 gs-packed-stq :inline :offset-assert 1232) + (flare-draw-xyzw-0 gs-packed-xyzw :inline :offset-assert 1248) + (flare-draw-stq-1 gs-packed-stq :inline :offset-assert 1264) + (flare-draw-xyzw-1 gs-packed-xyzw :inline :offset-assert 1280) + (flare-draw-stq-2 gs-packed-stq :inline :offset-assert 1296) + (flare-draw-xyzw-2 gs-packed-xyzw :inline :offset-assert 1312) + (flare-draw-stq-3 gs-packed-stq :inline :offset-assert 1328) + (flare-draw-xyzw-3 gs-packed-xyzw :inline :offset-assert 1344) + ) + :method-count-assert 9 + :size-assert #x550 + :flag-assert #x900000550 + ) +|# + +#| +(deftype sprite-glow-consts (structure) + ((camera matrix :inline :offset-assert 0) + (perspective matrix :inline :offset-assert 64) + (hvdf-offset vector :inline :offset-assert 128) + (hmge-scale vector :inline :offset-assert 144) + (consts vector :inline :offset-assert 160) + (pfog0 float :offset-assert 160) + (deg-to-rad float :offset-assert 164) + (min-scale float :offset-assert 168) + (inv-area float :offset-assert 172) + (sincos-01 vector :inline :offset-assert 176) + (sincos-23 vector :inline :offset-assert 192) + (sincos-45 vector :inline :offset-assert 208) + (sincos-67 vector :inline :offset-assert 224) + (sincos-89 vector :inline :offset-assert 240) + (basis-x vector :inline :offset-assert 256) + (basis-y vector :inline :offset-assert 272) + (xy-array vector 4 :offset-assert 288) ;; guessed by decompiler + (clamp-min vector :inline :offset-assert 352) + (clamp-max vector :inline :offset-assert 368) + ) + :method-count-assert 9 + :size-assert #x180 + :flag-assert #x900000180 + ) +|# + +#| +(deftype sprite-glow-dma-packet-data (structure) + ((control-packet dma-packet :inline :offset-assert 0) + (vecdata-packet dma-packet :inline :offset-assert 16) + (shader-cnt-packet dma-packet :inline :offset-assert 32) + (shader-ref-packet dma-packet :inline :offset-assert 48) + (mscal-packet dma-packet :inline :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) +|# + +#| +(deftype sprite-glow-cnt-template (structure) + ((control-packet dma-packet :inline :offset-assert 0) + (num-sprites uint32 :offset-assert 16) + (dummys uint32 3 :offset-assert 20) ;; guessed by decompiler + (vecdata-packet dma-packet :inline :offset-assert 32) + (vecdata sprite-glow-data :inline :offset-assert 48) + (shader-packet dma-packet :inline :offset-assert 112) + (shader adgif-shader :inline :offset-assert 128) + (mscal-packet dma-packet :inline :offset-assert 208) + ) + :method-count-assert 9 + :size-assert #xe0 + :flag-assert #x9000000e0 + ) +|# + +#| +(deftype sprite-glow-ref-template (structure) + ((control-packet dma-packet :inline :offset-assert 0) + (num-sprites uint32 :offset-assert 16) + (dummys uint32 3 :offset-assert 20) ;; guessed by decompiler + (vecdata-packet dma-packet :inline :offset-assert 32) + (vecdata sprite-glow-data :inline :offset-assert 48) + (shader-packet dma-packet :inline :offset-assert 112) + (mscal-packet dma-packet :inline :offset-assert 128) + ) + :method-count-assert 9 + :size-assert #x90 + :flag-assert #x900000090 + ) +|# + +;; (define-extern *sprite-glow-templates* array) +;; (define-extern sprite-glow-vu1-block object) ;; vu-function +;; (define-extern sprite-glow-init-consts function) ;; (function sprite-glow-consts none) +;; (define-extern sprite-glow-init-engine function) ;; (function dma-buffer none) +;; (define-extern *sprite-glow-dma-packet-data* object) ;; sprite-glow-dma-packet-data +;; (define-extern sprite-glow-add-sprite function) ;; (function dma-buffer sprite-vec-data-2d float float float adgif-shader none) +;; (define-extern sprite-glow-add-simple-sprite function) ;; (function dma-buffer sprite-glow-dma-packet-data sprite-glow-data pointer none) +;; (define-extern sprite-glow-draw function) ;; (function dma-buffer none) +;; (define-extern add-shader-to-dma function) ;; (function dma-buffer adgif-shader) +;; (define-extern *simple-sprite-system* object) ;; simple-sprite-system + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; debug-sphere ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern make-debug-sphere-table function) ;; (function vector-array float float vector-array) +;; (define-extern *debug-sphere-table* object) ;; (array vector-array) +;; (define-extern add-debug-sphere-from-table function) ;; (function bucket-id vector meters rgba int none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; debug ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype debug-line (structure) + ((flags int32 :offset-assert 0) + (bucket int32 :offset-assert 4) ;; bucket-id + (v1 vector :inline :offset-assert 16) + (v2 vector :inline :offset-assert 32) + (color rgba :offset-assert 48) ;; guessed by decompiler + (mode symbol :offset-assert 52) ;; guessed by decompiler + (color2 rgba :offset-assert 56) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x3c + :flag-assert #x90000003c + ) +|# + +#| +(deftype debug-text-3d (structure) + ((flags int32 :offset-assert 0) + (bucket int32 :offset-assert 4) ;; bucket-id + (pos vector :inline :offset-assert 16) + (color uint8 :offset-assert 32) ;; font-color + (offset vector2h :inline :offset-assert 34) + (str string :offset-assert 40) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype debug-tracking-thang (basic) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +;; debug-vertex-stats is already defined! + +;; (define-extern transform-float-point function) ;; (function vector vector4w vector4w) +;; (define-extern add-debug-point function) ;; (function symbol bucket-id vector symbol) +;; (define-extern debug-line-clip? function) ;; (function vector vector vector vector symbol) +;; (define-extern internal-draw-debug-line function) ;; (function bucket-id vector vector rgba symbol rgba symbol) +;; (define-extern internal-draw-debug-text-3d function) ;; (function bucket-id string vector font-color vector2h pointer) +;; (define-extern add-debug-outline-triangle function) ;; (function symbol bucket-id vector vector vector rgba symbol) +;; (define-extern add-debug-triangle-normal function) ;; (function symbol bucket-id vector vector vector rgba symbol) +;; (define-extern add-debug-flat-triangle-noclip function) +;; (define-extern *debug-lines* object) ;; (inline-array debug-line) +;; (define-extern *debug-lines-trk* object) ;; debug-tracking-thang +;; (define-extern *debug-text-3ds* object) ;; (inline-array debug-text-3d) +;; (define-extern *debug-text-3d-trk* object) ;; debug-tracking-thang +;; (define-extern *debug-prims* object) +;; (define-extern debug-reset-prim-buffer function) +;; (define-extern add-debug-flat-triangle function) ;; (function symbol bucket-id vector vector vector rgba symbol) +;; (define-extern get-debug-line function) ;; (function debug-line) +;; (define-extern get-debug-text-3d function) ;; (function debug-text-3d) +;; (define-extern debug-reset-buffers function) ;; (function symbol) +;; (define-extern debug-draw-buffers function) ;; (function symbol) +;; (define-extern add-debug-line function) ;; (function symbol bucket-id vector vector rgba symbol rgba symbol) +;; (define-extern add-debug-line2d function) ;; (function symbol bucket-id vector4w vector4w vector4w symbol) +;; (define-extern add-debug-box function) ;; (function symbol bucket-id vector vector rgba symbol) +;; (define-extern add-debug-box-with-transform function) ;; (function symbol bucket-id bounding-box matrix rgba symbol) +;; (define-extern add-debug-x function) ;; (function symbol bucket-id vector rgba symbol) +;; (define-extern add-debug-cross function) ;; (function symbol bucket-id vector float symbol) +;; (define-extern add-debug-text-3d function) ;; (function symbol bucket-id string vector font-color vector2h symbol) +;; (define-extern add-debug-sphere-with-transform function) ;; (function symbol bucket-id vector meters matrix rgba symbol) +;; (define-extern add-debug-sphere function) ;; (function symbol bucket-id vector meters rgba symbol) +;; (define-extern add-debug-text-sphere function) ;; (function symbol bucket-id vector meters string rgba symbol) +;; (define-extern add-debug-spheres function) ;; (function symbol bucket-id (inline-array vector) int rgba symbol) +;; (define-extern add-debug-line-sphere function) ;; (function symbol bucket-id vector vector float rgba none) +;; (define-extern add-debug-circle function) ;; (function symbol bucket-id vector float rgba matrix symbol) +;; (define-extern add-debug-vector function) ;; (function symbol bucket-id vector vector meters rgba symbol) +;; (define-extern add-debug-matrix function) ;; (function symbol bucket-id matrix meters matrix) +;; (define-extern add-debug-rot-matrix function) ;; (function symbol bucket-id matrix vector matrix) +;; (define-extern add-debug-quaternion function) ;; (function symbol bucket-id vector quaternion none) +;; (define-extern add-debug-cspace function) ;; (function symbol bucket-id cspace cspace) +;; (define-extern add-debug-yrot-vector function) ;; (function symbol bucket-id vector float float rgba symbol) +;; (define-extern add-debug-arc function) ;; (function symbol bucket-id vector float float float rgba matrix symbol) +;; (define-extern add-debug-curve function) ;; (function symbol bucket-id (inline-array vector) int (pointer float) int rgba symbol) +;; (define-extern add-debug-curve2 function) ;; (function symbol bucket-id curve rgba symbol symbol) +;; (define-extern add-debug-points function) ;; (function symbol bucket-id (inline-array vector) int rgba float int symbol) +;; (define-extern debug-percent-bar function) ;; (function symbol bucket-id int int float rgba int int symbol) +;; (define-extern debug-pad-display function) ;; (function cpad-info symbol) +;; (define-extern add-debug-light function) ;; (function symbol bucket-id light vector string symbol) +;; (define-extern add-debug-lights function) ;; (function symbol bucket-id (inline-array light) vector symbol) +;; (define-extern drawable-frag-count function) ;; (function drawable int) +;; (define-extern history-init function) ;; (function pos-history int pos-history) +;; (define-extern history-draw-and-update function) ;; (function pos-history symbol vector symbol) +;; (define-extern dma-timeout-cam function) ;; (function vector) +;; (define-extern display-file-info function) ;; (function int) +;; (define-extern add-debug-cursor function) ;; (function symbol bucket-id int int mouse-buttons int) +;; (define-extern *boundary-polygon* object) ;; (inline-array sky-vertex) +;; (define-extern init-boundary-regs function) ;; (function none) +;; (define-extern add-boundary-shader function) ;; (function texture-id dma-buffer none) +;; (define-extern draw-boundary-polygon function) +;; (define-extern render-boundary-quad function) +;; (define-extern render-boundary-tri function) ;; (function sky-vertex dma-buffer none) +;; (define-extern add-debug-bound-internal function) ;; (function dma-buffer (inline-array vector) int rgba rgba int none) +;; (define-extern add-debug-bound function) ;; (function bucket-id (inline-array vector) int rgba rgba int none) +;; (define-extern cpu-delay function) +;; (define-extern qword-read-time function) ;; (function (array uint128) int int) +;; (define-extern bugfix? function) ;; (function symbol) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; history ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype history-elt (structure) + ((record-tag-bytes uint8 4 :offset-assert 0) ;; guessed by decompiler + (record-tag uint32 :offset-assert 0) + (record-id uint16 :offset-assert 0) + (owner uint8 :offset-assert 2) + (channel uint8 :offset-assert 4) ;; history-channel + (timestamp uint64 :offset-assert 8) ;; time-frame + (origin vector :inline :offset-assert 16) + (bytes uint8 16 :offset-assert 32) ;; guessed by decompiler + (vector vector :inline :offset-assert 32) + (float float :offset-assert 32) + (collide-status uint64 :offset-assert 32) ;; collide-status + (collide-reaction-flag uint32 :offset-assert 40) + (pat pat-surface :offset-assert 32) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype history-iterator (basic) + ((max-age uint32 :offset-assert 4) + (owner uint8 :offset-assert 8) + (proc process :offset-assert 12) ;; guessed by decompiler + (out object :offset-assert 16) ;; guessed by decompiler + (channel-mask uint64 :offset-assert 24) + (index int32 :offset-assert 32) + (done? symbol :offset-assert 36) ;; guessed by decompiler + ) + :method-count-assert 12 + :size-assert #x28 + :flag-assert #xc00000028 + ;; field out uses ~A with a signed load. + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type uint) _type_) + (history-iterator-method-9 () none) ;; 9 ;; (frame-counter-delta (_type_ history-elt) time-frame) + (history-iterator-method-10 () none) ;; 10 ;; (update-entries! (_type_) history-elt) + (history-iterator-method-11 () none) ;; 11 ;; (get-age (_type_ history-elt) float) + ) + ) +|# + +#| +(deftype history (basic) + ((alloc-index int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (elts history-elt :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 11 + :size-assert #x10 + :flag-assert #xb00000010 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type int) _type_) + (history-method-9 () none) ;; 9 ;; (clear-record-tags! (_type_ history-channel uint uint) history-elt) + (history-method-10 () none) ;; 10 ;; (clear-history-entries! (_type_) none) + ) + ) +|# + +;; (define-extern history-channel->string function) ;; (function history-channel string) +;; (define-extern *history* object) ;; history +;; (define-extern history-print function) ;; (function history-iterator none) +;; (define-extern history-draw function) ;; (function history-iterator none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; merc-vu1 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern merc-vu1-block object) ;; vu-function + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; emerc-vu1 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern emerc-vu1-block object) ;; vu-function + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; merc-blend-shape ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype blerc-block-header (structure) + ((tag generic-merc-tag :inline :offset-assert 0) + (vtx-count uint32 :offset-assert 16) + (overlap uint32 :offset-assert 20) + (lump-dest uint32 :offset-assert 24) + (lump-qwc uint32 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype blerc-block (structure) + ((output uint8 848 :offset-assert 0) ;; guessed by decompiler + (header blerc-block-header :inline :offset-assert 848) + ) + :method-count-assert 9 + :size-assert #x370 + :flag-assert #x900000370 + ) +|# + +#| +(deftype blerc-dcache (structure) + ((repl-mult vector 40 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x280 + :flag-assert #x900000280 + ) +|# + +#| +(deftype blerc-globals (structure) + ((first uint32 :offset-assert 0) + (next uint32 :offset-assert 4) + (min-val int16 :offset-assert 8) + (max-val int16 :offset-assert 10) + (fragment-count int32 :offset-assert 12) + (vtx-count int32 :offset-assert 16) + (target-vtx-count int32 :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) +|# + +#| +(deftype blerc-context (structure) + ((block-a blerc-block :inline :offset-assert 0) + (dummy uint8 7312 :offset-assert 880) ;; guessed by decompiler + (block-b blerc-block :inline :offset-assert 8192) + ) + :method-count-assert 9 + :size-assert #x2370 + :flag-assert #x900002370 + ) +|# + +;; (define-extern *stats-blerc* object) ;; symbol +;; (define-extern *blerc-globals* object) ;; blerc-globals +;; (define-extern blerc-stats-init function) ;; (function none) +;; (define-extern blerc-init function) ;; (function none) +;; (define-extern blerc-a-fragment function) ;; function +;; (define-extern dma-from-spr function) ;; function +;; (define-extern merc-dma-chain-to-spr function) ;; function +;; (define-extern blerc-execute function) ;; (function none) +;; (define-extern merc-blend-shape function) ;; (function process-drawable object) +;; (define-extern setup-blerc-chains-for-one-fragment function) ;; (function object object object object object object object) +;; (define-extern setup-blerc-chains function) ;; (function merc-ctrl (pointer int16) dma-buffer none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; merc ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; merc-fragment-control is already defined! + +;; merc-ctrl is already defined! + +;; (define-extern *texture-login-data* object) ;; texture-login-data +;; (define-extern texture-usage-init function) ;; (function merc-ctrl symbol) +;; (define-extern texture-usage-update function) ;; (function texture symbol) +;; (define-extern merc-stats-display function) ;; (function merc-ctrl none) +;; (define-extern merc-stats function) ;; (function none) +;; (define-extern merc-edge-stats function) ;; (function none) +;; (define-extern merc-vu1-add-vu-function function) ;; (function dma-packet vu-function int dma-gif-packet) +;; (define-extern merc-vu1-initialize-chain function) ;; (function dma-gif-packet int dma-packet) +;; (define-extern merc-vu1-init-buffer function) ;; (function bucket-id int symbol int) +;; (define-extern merc-vu1-init-buffers function) ;; (function none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; emerc ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern emerc-vu1-initialize-chain function) ;; (function dma-gif-packet dma-packet) +;; (define-extern emerc-vu1-init-buffer function) ;; (function bucket-id gs-test int none) +;; (define-extern emerc-vu1-init-buffers function) ;; (function none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ripple ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype ripple-request (structure) + ((waveform ripple-wave :offset-assert 0) ;; guessed by decompiler + (effect merc-effect :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype ripple-globals (structure) + ((count int32 :offset-assert 0) + (requests ripple-request 16 :offset-assert 4) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x84 + :flag-assert #x900000084 + ) +|# + +;; (define-extern *ripple-globals* object) ;; ripple-globals +;; (define-extern ripple-make-request function) ;; (function ripple-wave merc-effect none) +;; (define-extern ripple-update-waveform-offs function) ;; (function ripple-wave-set clock none) +;; (define-extern ripple-execute-init function) ;; (function none) +;; (define-extern ripple-create-wave-table function) ;; (function ripple-wave-set int) +;; (define-extern ripple-apply-wave-table function) ;; (function merc-effect symbol) +;; (define-extern ripple-execute function) ;; (function none) +;; (define-extern ripple-matrix-scale function) ;; (function merc-effect none) +;; (define-extern ripple-add-debug-sphere function) ;; (function process-drawable vector float float none) +;; (define-extern ripple-slow-add-sine-waves function) ;; (function ripple-wave-set float float float) +;; (define-extern ripple-find-height function) ;; (function process-drawable int vector float) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; bones ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *bone-calculation-list* object) ;; bone-calculation-list +;; (define-extern bone-list-init function) ;; (function none) +;; (define-extern bones-vu0-block object) ;; vu-function +;; (define-extern bones-set-sqwc function) ;; (function none) +;; (define-extern bones-reset-sqwc function) ;; (function none) +;; (define-extern bones-init function) ;; (function dma-buffer none) +;; (define-extern bones-mtx-calc function) ;; (function (inline-array pris-mtx) (inline-array joint) (inline-array bone) uint object none) +;; (define-extern bones-mtx-calc-execute function) ;; (function none) +;; (define-extern dump-qword function) ;; (function qword none) +;; (define-extern dump-mem function) ;; (function pointer int none) +;; (define-extern bones-debug function) ;; (function none) +;; (define-extern dump-bone-mem function) ;; (function none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; debug-foreground ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern diag-frag-print function) ;; (function merc-effect int none) +;; (define-extern debug-merc-highres-runtime function) +;; (define-extern debug-merc-size-runtime function) +;; (define-extern debug-merc-fade-runtime function) +;; (define-extern foreground-check-longest-edge function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; foreground ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern foreground-vu0-block object) ;; vu-function +;; (define-extern generic-bucket-state-init function) ;; (function generic-bucket-state none) +;; (define-extern mercneric-chain-init function) ;; (function mercneric-chain bucket-id none) +;; (define-extern foreground-init function) ;; (function none) +;; (define-extern texscroll-make-request function) ;; (function merc-effect none) +;; (define-extern texscroll-execute function) ;; (function none) +;; (define-extern vu-lights<-light-group! function) ;; (function vu-lights light-group none) +;; (define-extern foreground-add-mtx-calc function) ;; (function bone-calculation (inline-array pris-mtx) bone-calc-flags bone-calculation) +;; (define-extern foreground-wrapup function) ;; (function none) +;; (define-extern *default-shadow-settings* object) ;; shadow-settings +;; (define-extern foreground-shadow function) ;; (function draw-control (inline-array pris-mtx) pointer pointer) +;; (define-extern foreground-generic-merc-death function) ;; (function draw-control generic-merc-ctrl none) +;; (define-extern foreground-generic-merc-add-fragments function) ;; (function merc-effect pointer mercneric-chain pointer) +;; (define-extern foreground-generic-merc function) ;; (function draw-control pointer int pointer) +;; (define-extern foreground-merc function) ;; (function draw-control (inline-array pris-mtx) pointer int int object pointer) +;; (define-extern foreground-emerc function) ;; (function draw-control (inline-array pris-mtx) pointer object int int pointer) +;; (define-extern foreground-check-longest-edge-asm function) ;; (function draw-control float symbol) +;; (define-extern foreground-ripple function) ;; (function draw-control merc-ctrl pointer int pointer) +;; (define-extern foreground-draw function) ;; (function draw-control dma-buffer float none) +;; (define-extern foreground-draw-hud function) ;; (function draw-control dma-buffer float none) +;; (define-extern *foreground* object) ;; foreground-globals +;; (define-extern *foreground-draw-engine* object) ;; engine + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; generic-vu0 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern generic-vu0-block object) ;; vu-function + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; generic-vu1 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern generic-vu1-block object) ;; vu-function +;; (define-extern generic-setup-constants function) ;; (function generic-constants none) +;; (define-extern generic-add-constants function) ;; (function dma-buffer none) +;; (define-extern generic-setup-shrub-constants function) ;; (function generic-shrub-constants int int int none) +;; (define-extern generic-add-shrub-constants function) ;; (function dma-buffer int int int none) +;; (define-extern generic-init-buf function) ;; (function dma-buffer gs-zbuf none) +;; (define-extern generic-vu1-init-buf function) ;; (function bucket-id gs-zbuf none) +;; (define-extern generic-vu1-init-buf-special function) ;; (function bucket-id gs-zbuf none) +;; (define-extern generic-vu1-init-buffers function) ;; (function none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; generic-effect ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *target-lock* object) ;; object +;; (define-extern *generic-consts* object) ;; generic-consts +;; (define-extern generic-work-init function) ;; (function generic-bucket-state none) +;; (define-extern generic-upload-vu0 function) ;; (function none) +;; (define-extern upload-vu0-program function) ;; (function vu-function pointer none) +;; (define-extern generic-initialize-without-sync function) ;; (function matrix vu-lights none) +;; (define-extern generic-initialize function) ;; (function generic-bucket-state matrix vu-lights none) +;; (define-extern generic-wrapup function) ;; (function generic-bucket-state none) +;; (define-extern generic-dma-from-spr function) +;; (define-extern generic-light-proc function) +;; (define-extern generic-envmap-proc function) +;; (define-extern generic-prepare-dma-double function) +;; (define-extern generic-prepare-dma-single function) +;; (define-extern generic-envmap-dproc function) +;; (define-extern generic-interp-dproc function) +;; (define-extern generic-no-light-proc function) +;; (define-extern generic-no-light-dproc-only function) +;; (define-extern generic-no-light-dproc function) +;; (define-extern generic-no-light+envmap function) +;; (define-extern generic-no-light function) +;; (define-extern generic-envmap-only-proc function) +;; (define-extern generic-light function) +;; (define-extern generic-copy-vtx-dclr-dtex function) +;; (define-extern generic-none function) +;; (define-extern generic-none-dma-wait function) +;; (define-extern *warp-data* object) ;; object +;; (define-extern generic-warp-source-proc function) ;; (function none) +;; (define-extern generic-warp-source function) ;; (function gsf-buffer none) +;; (define-extern generic-warp-dest-proc function) +;; (define-extern generic-warp-dest function) +;; (define-extern generic-warp-envmap-dest function) +;; (define-extern generic-debug-light-proc function) +;; (define-extern generic-post-debug function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; generic-merc ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype invinitdata (structure) + ((count uint8 :offset-assert 0) + (init-data uint8 :offset-assert 1) + (init-addr uint16 :offset-assert 2) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +;; (define-extern mercneric-vu0-block object) ;; vu-function +;; (define-extern *inv-init-table* object) ;; (inline-array invinitdata) +;; (define-extern generic-merc-init-asm function) ;; (function none) +;; (define-extern mercneric-matrix-asm function) +;; (define-extern mercneric-shader-asm function) +;; (define-extern mercneric-bittable-asm function) +;; (define-extern mercneric-convert function) +;; (define-extern high-speed-reject function) +;; (define-extern generic-translucent function) ;; (function gsf-buffer none) +;; (define-extern generic-merc-query function) +;; (define-extern generic-merc-death function) +;; (define-extern generic-merc-execute-asm function) +;; (define-extern generic-merc-do-chain function) ;; (function mercneric-chain dma-buffer pointer) +;; (define-extern generic-merc-execute-all function) ;; (function dma-buffer none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; generic-tie ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; gsf-vertex is already defined! + +;; (define-extern generic-tie-dma-to-spad function) +;; (define-extern generic-tie-dma-to-spad-sync function) +;; (define-extern *generic-tie* object) +;; (define-extern generic-tie-decompress function) +;; (define-extern generic-tie-upload-next function) +;; (define-extern generic-tie-convert-proc function) +;; (define-extern generic-tie-convert function) +;; (define-extern generic-tie-display-stats function) +;; (define-extern generic-tie-debug function) +;; (define-extern generic-tie-execute function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; shadow-cpu ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype shadow-stats (structure) + ((num-single-tris uint32 :offset-assert 0) + (num-double-tris uint32 :offset-assert 4) + (num-single-edges uint32 :offset-assert 8) + (num-double-edges uint32 :offset-assert 12) + (num-fragments uint16 :offset-assert 16) + (num-objects uint16 :offset-assert 18) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) + +(deftype shadow-dcache (structure) + ((vtx-table uint32 :offset-assert 0) + (single-edge-table uint32 :offset-assert 4) + (double-edge-table uint32 :offset-assert 8) + (double-tri-table uint32 :offset-assert 12) + (dcache-top uint32 :offset-assert 16) + (num-facing-single-tris uint32 :offset-assert 20) + (num-single-edges uint32 :offset-assert 24) + (num-double-edges uint32 :offset-assert 28) + (single-tri-list uint32 :offset-assert 32) + (single-edge-list uint32 :offset-assert 36) + (double-edge-list uint32 :offset-assert 40) + (ptr-dual-verts uint32 :offset-assert 44) + (stats shadow-stats :inline :offset-assert 48) + (frag-qwc uint32 :offset-assert 68) + (center vector :inline :offset-assert 80) + (plane vector :inline :offset-assert 96) + (top-plane vector :inline :offset-assert 112) + (near-plane vector :inline :offset-assert 128) + (light-dir vector :inline :offset-assert 144) + (vtx-min vector :inline :offset-assert 160) + (data uint8 :dynamic :offset-assert 176) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #xb0 + :flag-assert #x9000000b0 + ) + +(define-extern *shadow-data* shadow-data) +(define-extern shadow-invert-z-buf (function dma-buffer none)) +(define-extern shadow-make-invert-buf (function none)) +(define-extern shadow-dma-init (function dma-buffer none)) +(define-extern shadow-dma-end (function dma-buffer gs-rgbaq symbol int none)) +(define-extern shadow-vu0-block vu-function) +(define-extern shadow-xform-verts function) +(define-extern shadow-calc-dual-verts function) +(define-extern shadow-scissor-edges function) +(define-extern shadow-scissor-top function) +(define-extern shadow-init-vars function) +(define-extern shadow-find-facing-single-tris function) +(define-extern shadow-find-single-edges function) +(define-extern shadow-find-facing-double-tris function) +(define-extern shadow-find-double-edges function) +(define-extern shadow-add-verts function) +(define-extern shadow-add-facing-single-tris function) +(define-extern shadow-add-single-edges function) +(define-extern shadow-add-single-tris function) +(define-extern shadow-add-double-tris function) +(define-extern shadow-add-double-edges function) +(define-extern debug-draw-settings (function shadow-settings symbol)) +(define-extern shadow-execute (function shadow-dma-packet pointer pointer)) +(define-extern shadow-vu0-upload (function none)) +(define-extern shadow-execute-all (function dma-buffer none)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; shadow-vu1 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype shadow-vu1-constants (structure) + ((hmgescale vector :inline :offset-assert 0) + (invhscale vector :inline :offset-assert 16) + (texoffset vector :inline :offset-assert 32) + (texscale vector :inline :offset-assert 48) + (hvdfoff vector :inline :offset-assert 64) + (fog vector :inline :offset-assert 80) + (clrs vector 2 :offset-assert 96) ;; guessed by decompiler + (adgif gs-gif-tag :inline :offset-assert 128) + (texflush gs-adcmd :inline :offset-assert 144) + (flush gs-adcmd :inline :offset-assert 160) + (trigif gs-gif-tag :inline :offset-assert 176) + (quadgif gs-gif-tag :inline :offset-assert 192) + ) + :method-count-assert 9 + :size-assert #xd0 + :flag-assert #x9000000d0 + ) +|# + +#| +(deftype shadow-vu1-data (structure) + ((adgif gs-gif-tag :inline :offset-assert 0) + (ad gs-adcmd :inline :offset-assert 16) + (flush gs-adcmd :inline :offset-assert 32) + (trigif gs-gif-tag :inline :offset-assert 48) + (quadgif gs-gif-tag :inline :offset-assert 64) + (texoffset vector :inline :offset-assert 80) + (texscale vector :inline :offset-assert 96) + (clrs qword 2 :offset-assert 112) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x90 + :flag-assert #x900000090 + ) +|# + +;; (define-extern *shadow-vu1-data* object) ;; shadow-vu1-data +;; (define-extern shadow-vu1-block object) ;; vu-function +;; (define-extern shadow-vu1-add-constants function) ;; (function dma-buffer int none) +;; (define-extern shadow-vu1-patch-consts function) ;; (function symbol int none) +;; (define-extern shadow-vu1-add-matrix function) ;; (function dma-buffer math-camera none) +;; (define-extern shadow-vu1-init-buffer function) ;; (function dma-buffer int none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; warp ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern fx-copy-init (function dma-buffer viewport int)) +(define-extern warp-shader-init (function viewport int)) +(define-extern fx-copy-buf (function dma-buffer viewport none)) +(define-extern init-warp (function int)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; hflip ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern hflip-zbuf-init (function dma-buffer viewport int)) +(define-extern hflip-z-buf (function dma-buffer viewport int)) +(define-extern init-hflip-zbuf (function int)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; texture-anim ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *texture-anim-work* object) ;; texture-anim-work +;; (define-extern texture-anim-layer-interp function) ;; (function texture-anim-layer float none) +;; (define-extern texture-anim-layer-add-shader function) ;; (function dma-buffer texture-anim-layer int none) +;; (define-extern texture-anim-layer-add-clut-shader function) ;; (function dma-buffer texture-anim-layer int none) +;; (define-extern texture-anim-layer-draw function) ;; (function dma-buffer int int texture-anim-layer none) +;; (define-extern default-texture-anim-layer-func function) ;; (function dma-buffer uint int int texture-anim-layer float int) +;; (define-extern blend-clut-texture-anim-layer-func function) ;; (function dma-buffer uint int int texture-anim-layer float int) +;; (define-extern add-clut-texture-anim-layer-func function) ;; (function dma-buffer uint int int texture-anim-layer float int) +;; (define-extern dest-blend-clut-texture-anim-layer-func function) ;; (function dma-buffer uint int int texture-anim-layer float int) +;; (define-extern move-rg-to-ba-texture-anim-layer-func function) ;; (function dma-buffer uint int int texture-anim-layer float int) +;; (define-extern fill-rgb-texture-anim-layer-func function) ;; (function dma-buffer uint int int texture-anim-layer float int) +;; (define-extern texture-anim-draw-mip-shader function) ;; (function dma-buffer texture int none) +;; (define-extern clear-texture-ids function) ;; (function texture none) +;; (define-extern texture-anim-draw-mips function) ;; (function dma-buffer texture none) +;; (define-extern texture-anim-draw-ocean-mips function) +;; (define-extern update-texture-anim function) ;; (function bucket-id texture-anim-array none) +;; (define-extern no-alpha-texture-anim-layer-func function) ;; (function dma-buffer uint int int texture-anim-layer float int) +;; (define-extern copy-alpha-texture-anim-layer-func function) ;; (function dma-buffer uint int int texture-anim-layer float int) +;; (define-extern copy-clut-alpha-texture-anim-layer-func function) ;; (function dma-buffer uint int int texture-anim-layer float int) +;; (define-extern set-alpha-texture-anim-layer-func function) ;; (function dma-buffer uint int int texture-anim-layer float int) +;; (define-extern set-clut-alpha-texture-anim-layer-func function) ;; (function dma-buffer uint int int texture-anim-layer float int) +;; (define-extern dest-texture-init function) ;; (function texture-anim none) +;; (define-extern src-texture-init function) ;; (function texture-anim-layer none) +;; (define-extern src-texture-init-mt8 function) ;; (function texture-anim-layer none) +;; (define-extern make-noise-texture function) ;; (function pointer int int int none) +;; (define-extern make-cloud-clut function) ;; (function (pointer uint32) float float none) +;; (define-extern texture-anim-cloud-clut-upload function) ;; (function dma-buffer texture-anim none) +;; (define-extern texture-anim-cloud-clut-init function) ;; (function texture-anim none) +;; (define-extern make-slime-clut function) ;; (function (pointer uint32) none) +;; (define-extern make-ramp-clut function) ;; (function (pointer uint32) pointer object none) +;; (define-extern make-alpha-ramp-clut function) ;; (function (pointer uint32) none) +;; (define-extern texture-anim-alpha-ramp-clut-upload function) ;; (function dma-buffer texture-anim none) +;; (define-extern texture-anim-alpha-ramp-clut-init function) ;; (function texture-anim none) +;; (define-extern texture-anim-override-size-init function) +;; (define-extern texture-anim-change-mt8h-init function) ;; (function texture-anim none) +;; (define-extern *texture-anim-pages-table* object) ;; (pointer uint8) +;; (define-extern *texture-anim-mip-array* object) ;; (pointer uint16) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; texture-anim-funcs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *fog-texture-tbp* object) +;; (define-extern fog-texture-anim-init function) ;; (function texture-anim int) +;; (define-extern fog-texture-anim-init2 function) +;; (define-extern *fog-texture-work* object) ;; fog-texture-work +;; (define-extern real-fog-texture-anim-func function) ;; (function dma-buffer texture-anim int) +;; (define-extern fog-texture-anim-func function) ;; (function dma-buffer texture-anim int) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; texture-anim-tables ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype car-texture-anim-array-work (structure) + ((sprite-tmpl dma-gif-packet :inline :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +;; (define-extern *sky-texture-anim-array* texture-anim-array) ;; (texture-anim-array texture-anim) +;; (define-extern set-fog-height! function) ;; (function float none) +;; (define-extern set-cloud-minmax! function) ;; (function float float none) +;; (define-extern *default-pris-texture-anim-array* texture-anim-array) +;; (define-extern *car-texture-anim-array-work* object) +;; (define-extern car-texture-anim-layer-func function) +;; (define-extern *default-car-texture-anim-array* texture-anim-array) +;; (define-extern set-car-highlight! function) +;; (define-extern update-car-texture-anim-array function) +;; (define-extern *default-water-texture-anim-array* texture-anim-array) ;; (texture-anim-array texture-anim) +;; (define-extern *default-hud-texture-anim-array* texture-anim-array) +;; (define-extern *ctf-pris-texture-anim-array* texture-anim-array) +;; (define-extern *ctf-water-texture-anim-array* texture-anim-array) +;; (define-extern *fcshield-water-texture-anim-array* texture-anim-array) +;; (define-extern *this-way-water-texture-anim-array* texture-anim-array) +;; (define-extern this-way-water-texture-anim-func function) +;; (define-extern *ocean-texture-anim-array* texture-anim-array) +;; (define-extern ocean-texture-anim-time-func function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; blit-displays ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype blur-coords (structure) + ((pos UNKNOWN 8 :offset-assert 0) + (tex UNKNOWN 8 :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) +|# + +;; (define-extern *blit-displays-work* object) ;; blit-displays-work +;; (define-extern clear-zbuf function) +;; (define-extern draw-color-bars function) ;; (function blit-displays-work none) +;; (define-extern draw-raw-image function) ;; (function bucket-id art-group int vector vector level int none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; font-data ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *font12-table* object) ;; (inline-array vector) +;; (define-extern *font24-table* object) ;; (inline-array vector) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; font ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype draw-string-result (uint64) + ((length float :offset 0) + (b float :offset 32)) + ) + +;; (define-extern *font-random-generator* object) +;; (define-extern *font-curve-ghosting* array) +;; (define-extern *font-curve-ghosting-2* array) +;; (define-extern evaluate-font-curve function) +;; (define-extern in-out-curve function) +;; (define-extern char-effect-compute-colors function) +;; (define-extern char-effect-compute2 function) +;; (define-extern *loading-pad-leftx* object) +;; (define-extern *loading-pad-lefty* object) +;; (define-extern *loading-pad-rightx* object) +;; (define-extern *loading-pad-righty* object) +;; (define-extern char-effect-compute function) +;; (define-extern draw-string-init-justify function) +;; (define-extern draw-string-no-asm function) +;; (define-extern draw-string-asm-packed function) +;; (define-extern draw-string3d-asm function) +;; (define-extern draw-effect-string function) +(define-extern draw-string (function string dma-buffer font-context draw-string-result)) +;; (define-extern get-string-length-asm function) +(define-extern get-string-length (function string font-context draw-string-result)) +(define-extern draw-string-xy (function string dma-buffer int int font-color font-flags draw-string-result)) +(define-extern draw-string-adv (function string dma-buffer font-context none)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; decomp ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype huf-dictionary-node (structure) + ((zero uint16 :offset-assert 0) + (one uint16 :offset-assert 2) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +;; (define-extern unpack-comp-rle function) ;; (function (pointer int8) (pointer int8) (pointer int8)) +;; (define-extern unpack-comp-huf function) ;; (function (pointer uint8) (pointer uint8) uint huf-dictionary-node none) +;; (define-extern unpack-comp-lzo function) ;; (function (pointer uint8) (pointer uint8) none) +;; (define-extern pack-comp-rle function) ;; (function (pointer uint8) (pointer uint8) int int (pointer uint8)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; background ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *background-work* object) ;; background-work +;; (define-extern background-vu0-block object) ;; vu-function +;; (define-extern background-upload-vu0 function) ;; (function none) +;; (define-extern init-background function) ;; (function none) +;; (define-extern upload-vis-bits function) ;; (function level level bsp-header none) +;; (define-extern set-background-regs! function) ;; (function level none) +;; (define-extern set-tie-guard-planes! function) +;; (define-extern set-shrub-guard-planes! function) +;; (define-extern set-subdivide-settings! function) ;; (function level none) +;; (define-extern finish-shrub function) +;; (define-extern finish-tfrag function) +;; (define-extern finish-tfrag-trans function) +;; (define-extern finish-tfrag-water function) +;; (define-extern finish-tie function) +;; (define-extern finish-texture-mask function) +;; (define-extern finish-texture function) +;; (define-extern finish-background function) ;; (function none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; draw-node ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype drawable-inline-array-node (drawable-inline-array) + ((length int16 :offset-assert 2) + (data draw-node :dynamic :offset-assert 32) ;; guessed by decompiler + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 17 + :size-assert #x44 + :flag-assert #x1100000044 + ) +|# + +;; (define-extern draw-node-cull function) ;; (function pointer pointer (inline-array draw-node) int none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; shrubbery ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype dma-test (structure) + ((data qword 101 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x650 + :flag-assert #x900000650 + ) +|# + +#| +(deftype dma-test-work (structure) + ((upload dma-packet :inline :offset-assert 0) + (end dma-packet :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype prototype-shrubbery (drawable-inline-array) + ((length int16 :offset-assert 2) + (data shrubbery :dynamic :offset-assert 32) ;; guessed by decompiler + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 17 + :size-assert #x44 + :flag-assert #x1100000044 + ) +|# + +;; (define-extern mem-usage-shrub-walk function) ;; (function draw-node int memory-usage-block int draw-node) +;; (define-extern highres-shrub-login function) ;; (function draw-node none) +;; (define-extern highres-prototype-shrub-login function) +;; (define-extern shrub-vu1-block object) ;; vu-function +;; (define-extern shrub-num-tris function) ;; (function shrubbery uint) +;; (define-extern shrub-make-perspective-matrix function) ;; (function matrix matrix matrix) +;; (define-extern shrub-init-view-data function) ;; (function shrub-view-data symbol) +;; (define-extern shrub-upload-view-data function) ;; (function dma-buffer symbol) +;; (define-extern shrub-time function) ;; (function int int int int int int) +;; (define-extern shrub-do-init-frame function) ;; (function dma-buffer symbol) +;; (define-extern shrub-init-frame function) ;; (function dma-buffer gs-test symbol) +;; (define-extern shrub-upload-model function) ;; (function shrubbery dma-buffer int symbol) +;; (define-extern draw-inline-array-instance-shrub function) ;; (function dma-buffer drawable int (inline-array prototype-bucket-shrub) none) +;; (define-extern draw-prototype-inline-array-shrub function) ;; (function int (inline-array prototype-bucket-shrub) pointer) +;; (define-extern draw-drawable-tree-instance-shrub function) ;; (function drawable-tree-instance-shrub level none) +;; (define-extern *dma-test* object) ;; dma-test +;; (define-extern *dma-test-work* object) ;; dma-test-work +;; (define-extern init-dma-test function) ;; (function none) +;; (define-extern dma-test-func function) ;; (function none) +;; (define-extern move-test-func function) ;; (function none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; shrub-work ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *instance-shrub-work* object) ;; instance-shrub-work + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; tfrag-near ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern tnear-vu1-block object) ;; vu-function +;; (define-extern tfrag-details function) ;; (function tfragment none) +;; (define-extern clip-restore function) ;; (function none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; tfrag ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype drawable-inline-array-tfrag (drawable-inline-array) + ((length int16 :offset-assert 2) + (data tfragment :dynamic :offset-assert 32) ;; guessed by decompiler + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 17 + :size-assert #x64 + :flag-assert #x1100000064 + ) +|# + +;; (define-extern *tfrag-display-stats* object) ;; symbol +;; (define-extern tfrag-vu1-block object) ;; vu-function +;; (define-extern tfrag-data-setup function) ;; (function tfrag-data int int none) +;; (define-extern add-tfrag-mtx-0 function) ;; (function dma-buffer symbol none) +;; (define-extern add-tfrag-mtx-1 function) ;; (function dma-buffer symbol none) +;; (define-extern add-tfrag-data function) ;; (function dma-buffer int int none) +;; (define-extern t-stat object) ;; tfrag-stats +;; (define-extern tfrag-print-stats function) ;; (function symbol none) +;; (define-extern tfrag-init-buffer function) ;; (function dma-buffer gs-test int symbol none) +;; (define-extern tfrag-end-buffer function) ;; (function dma-buffer int none) +;; (define-extern draw-inline-array-tfrag function) ;; (function pointer drawable-inline-array int dma-buffer none) +;; (define-extern tfrag-scissor-init-buffer function) ;; (function dma-buffer gs-test int symbol none) +;; (define-extern tfrag-scissor-end-buffer function) ;; (function dma-buffer uint none) +;; (define-extern draw-inline-array-tfrag-scissor function) ;; (function pointer drawable-inline-array int dma-buffer none) +;; (define-extern stats-tfrag-asm function) ;; (function tfragment none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; tfrag-methods ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype tfrag-init-data (structure) + ((tfrag-bucket int32 :offset-assert 0) ;; bucket-id + (tfrag-scissor-bucket int32 :offset-assert 4) ;; bucket-id + (tfrag-trans-bucket int32 :offset-assert 8) ;; bucket-id + (tfrag-scissor-trans-bucket int32 :offset-assert 12) ;; bucket-id + (tfrag-water-bucket int32 :offset-assert 16) ;; bucket-id + (tfrag-water-scissor-bucket int32 :offset-assert 20) ;; bucket-id + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) +|# + +;; (define-extern edge-debug-lines function) ;; (function (array vector-array) none) +;; (define-extern draw-drawable-tree-tfrag function) ;; (function drawable-tree-tfrag none) +;; (define-extern draw-drawable-tree-tfrag-trans function) ;; (function drawable-tree-tfrag none) +;; (define-extern draw-drawable-tree-tfrag-water function) ;; (function drawable-tree-tfrag none) +;; (define-extern tfrag-vu1-init-buf function) ;; (function bucket-id gs-test int uint symbol none) +;; (define-extern tfrag-scissor-vu1-init-buf function) ;; (function bucket-id gs-test int uint symbol none) +;; (define-extern *tfrag-init-table* object) ;; (inline-array tfrag-init-data) +;; (define-extern tfrag-vu1-init-buffers function) ;; (function none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; tfrag-work ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *tfrag-work* object) ;; tfrag-work + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; tie ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype tie-consts (structure) + ((data uint32 40 :offset-assert 0) ;; guessed by decompiler + (vector vector 10 :offset-assert 0) ;; guessed by decompiler + (quads uint128 10 :offset-assert 0) ;; guessed by decompiler + (adgif qword :inline :offset-assert 0) ;; gs-gif-tag :inline + (strgif qword :inline :offset-assert 16) ;; gs-gif-tag :inline + (extra qword :inline :offset-assert 32) ;; vector :inline + (gifbufs qword :inline :offset-assert 48) ;; vector :inline + (clrbufs qword :inline :offset-assert 64) + (misc qword :inline :offset-assert 80) + (atestgif qword :inline :offset-assert 96) ;; gs-gif-tag :inline + (alpha qword :inline :offset-assert 112) ;; gs-adcmd :inline + (atest gs-adcmd 2 :offset-assert 128) ;; guessed by decompiler + (atest-tra gs-adcmd :inline :offset-assert 128) + (atest-def gs-adcmd :inline :offset-assert 144) + ) + :method-count-assert 9 + :size-assert #xa0 + :flag-assert #x9000000a0 + ) +|# + +#| +(deftype drawable-inline-array-instance-tie (drawable-inline-array) + ((length int16 :offset-assert 2) + (data instance-tie :dynamic :offset-assert 32) ;; guessed by decompiler + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 17 + :size-assert #x64 + :flag-assert #x1100000064 + ) +|# + +#| +(deftype prototype-tie (drawable-inline-array) + ((length int16 :offset-assert 2) + (data tie-fragment :dynamic :offset-assert 32) ;; guessed by decompiler + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 17 + :size-assert #x64 + :flag-assert #x1100000064 + ) +|# + +;; (define-extern tie-vu1-block object) ;; vu-function +;; (define-extern tie-init-consts function) ;; (function tie-consts gs-alpha gs-test gs-test none) +;; (define-extern tie-init-engine function) ;; (function dma-buffer gs-alpha gs-test gs-test none) +;; (define-extern tie-end-buffer function) ;; (function dma-buffer none) +;; (define-extern tie-int-reg function) ;; (function int string) +;; (define-extern tie-float-reg function) ;; (function int string) +;; (define-extern tie-ints function) ;; (function none) +;; (define-extern tie-floats function) ;; (function none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; etie-vu1 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype etie-consts (structure) + ((gifbufs qword :inline :offset-assert 0) + (adgif qword :inline :offset-assert 16) ;; gs-gif-tag :inline + (alpha qword :inline :offset-assert 32) + (strgif qword :inline :offset-assert 48) ;; gs-gif-tag :inline + (envgif qword :inline :offset-assert 64) ;; gs-gif-tag :inline + (envmap adgif-shader :inline :offset-assert 80) + (pers0 vector :inline :offset-assert 160) + (pers1 vector :inline :offset-assert 176) + ) + :method-count-assert 9 + :size-assert #xc0 + :flag-assert #x9000000c0 + ) +|# + +#| +(deftype etie-matrix (structure) + ((rmtx matrix :inline :offset-assert 0) + (nmtx matrix3 :inline :offset-assert 64) + (morph float :offset-assert 76) + (fog float :offset-assert 92) + (fade uint32 :offset-assert 108) + (tint qword :inline :offset-assert 112) + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) +|# + +;; (define-extern etie-vu1-block object) ;; vu-function +;; (define-extern etie-magic function) ;; (function int int) +;; (define-extern etie-init-consts function) ;; (function etie-consts gs-alpha none) +;; (define-extern etie-init-engine function) ;; (function dma-buffer gs-alpha gs-test none) +;; (define-extern etie-end-buffer function) ;; (function dma-buffer none) +;; (define-extern etie-float-reg-bp function) +;; (define-extern etie-float-reg function) +;; (define-extern etie-floats function) +;; (define-extern etie-int-reg function) +;; (define-extern etie-ints function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; etie-near-vu1 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype etn-consts (structure) + ((gifbufs qword :inline :offset-assert 0) + (adgif qword :inline :offset-assert 16) + (alpha qword :inline :offset-assert 32) + (strgif generic-gif-tag :inline :offset-assert 48) + (envgif generic-gif-tag :inline :offset-assert 64) + (envmap adgif-shader :inline :offset-assert 80) + (pers0 vector :inline :offset-assert 160) + (pers1 vector :inline :offset-assert 176) + (hvdf vector :inline :offset-assert 192) + (invh vector :inline :offset-assert 208) + (guard vector :inline :offset-assert 224) + ) + :method-count-assert 9 + :size-assert #xf0 + :flag-assert #x9000000f0 + ) +|# + +#| +(deftype etn-matrix (structure) + ((rmtx matrix :inline :offset-assert 0) + (nmtx matrix3 :inline :offset-assert 64) + (morph float :offset-assert 76) + (fog float :offset-assert 92) + (fade uint32 :offset-assert 108) + (tint qword :inline :offset-assert 112) + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) +|# + +#| +(deftype etn-vtx (structure) + ((pos vector :inline :offset-assert 0) + (clr vector :inline :offset-assert 16) + (tex vector :inline :offset-assert 32) + (tx2 vector :inline :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) +|# + +#| +(deftype etn-plane (structure) + ((point uint32 :offset-assert 0) + (prev uint32 :offset-assert 4) + (outfunc uint32 :offset-assert 8) + (flags uint32 :offset-assert 12) + (out etn-vtx :inline :offset-assert 16) + (in etn-vtx :inline :offset-assert 80) + ) + :method-count-assert 9 + :size-assert #x90 + :flag-assert #x900000090 + ) +|# + +;; (define-extern etn-vu1-block object) +;; (define-extern etn-magic function) +;; (define-extern etn-init-consts function) +;; (define-extern etn-init-engine function) +;; (define-extern etn-end-buffer function) +;; (define-extern etn-float-reg-calc function) +;; (define-extern etn-float-reg function) +;; (define-extern etn-floats function) +;; (define-extern etn-int-reg-draw function) +;; (define-extern etn-int-reg function) +;; (define-extern etn-ints function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; tie-near ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype tie-near-consts (structure) + ((extra qword :inline :offset-assert 0) + (gifbufs qword :inline :offset-assert 16) + (clrbufs qword :inline :offset-assert 32) + (adgif qword :inline :offset-assert 48) + (strgif qword :inline :offset-assert 64) + (fangif qword :inline :offset-assert 80) + (hvdfoffs vector :inline :offset-assert 96) + (invhscale vector :inline :offset-assert 112) + (guard vector :inline :offset-assert 128) + (atest UNKNOWN 2 :offset-assert 144) + (atest-tra gs-adcmd :inline :offset-assert 144) + (atest-def gs-adcmd :inline :offset-assert 160) + ) + :method-count-assert 9 + :size-assert #xb0 + :flag-assert #x9000000b0 + ) +|# + +;; (define-extern tie-near-vu1-block object) +;; (define-extern tie-near-init-consts function) +;; (define-extern tie-near-init-engine function) +;; (define-extern tie-near-end-buffer function) +;; (define-extern tie-scissor-make-perspective-matrix function) ;; (function matrix matrix none) +;; (define-extern tie-near-int-reg function) +;; (define-extern tie-near-float-reg function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; tie-work ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *instance-tie-work* object) ;; instance-tie-work +;; (define-extern *prototype-tie-work* object) ;; prototype-tie-work + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; tie-methods ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype tie-debug (structure) + ((max-instance uint32 :offset-assert 0) + (min-instance uint32 :offset-assert 4) + (test-fragment uint32 :offset-assert 8) + (frag-count uint32 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +;; (define-extern *tie* object) ;; tie-debug +;; (define-extern tie-debug-between function) ;; (function uint uint uint) +;; (define-extern tie-debug-one function) ;; (function uint uint uint) +;; (define-extern tie-debug-frag-between function) ;; (function uint uint uint) +;; (define-extern tie-debug-frag-one function) ;; (function uint uint uint) +;; (define-extern walk-tie-generic-prototypes function) ;; (function none) +;; (define-extern *pke-hack* object) ;; vector +;; (define-extern draw-inline-array-instance-tie function) ;; (function pointer (inline-array instance-tie) int dma-buffer none) +;; (define-extern draw-inline-array-prototype-tie-asm function) ;; (function dma-buffer int prototype-array-tie none) +;; (define-extern draw-inline-array-prototype-tie-shared-asm function) +;; (define-extern instance-tie-patch-buckets function) ;; (function dma-buffer level object) +;; (define-extern draw-drawable-tree-instance-tie function) ;; (function drawable-tree-instance-tie level none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; prim ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *prim-work* object) ;; prim-work +;; (define-extern *level-texture-page-translate* array) +;; (define-extern *foreground-to-level-translate* array) +;; (define-extern prim-engine-execute function) ;; (function none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; trajectory ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern traj2d-calc-initial-speed-using-tilt function) ;; (function traj2d-params symbol) +;; (define-extern traj3d-calc-initial-velocity-using-tilt function) ;; (function traj3d-params symbol) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; sparticle-launcher ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype sp-queued-launch-particles (structure) + ((sp-system sparticle-system :offset-assert 0) ;; guessed by decompiler + (sp-launcher sparticle-launcher :offset-assert 4) ;; guessed by decompiler + (pos vector :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype sp-launch-queue (basic) + ((in-use int32 :offset-assert 4) + (queue sp-queued-launch-particles 256 :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x2010 + :flag-assert #x900002010 + ) +|# + +#| +(deftype particle-adgif-cache (basic) + ((used int32 :offset-assert 4) + (last uint16 :offset-assert 8) + (lastgif adgif-shader :offset-assert 12) + (tidhash uint16 80 :offset-assert 16) ;; guessed by decompiler + (spadgif adgif-shader 80 :offset-assert 176) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x19b0 + :flag-assert #x9000019b0 + ) +|# + +#| +(deftype sp-launch-stack (structure) + ((ra basic :offset-assert 0) + (dummy0 basic :offset-assert 4) + (dummy1 basic :offset-assert 8) + (b-spfic basic :offset-assert 12) + (r16 uint128 :offset-assert 16) + (r17 uint128 :offset-assert 32) + (r18 uint128 :offset-assert 48) + (pos uint128 :offset-assert 64) + (matrix matrix :inline :offset-assert 80) + (l-spfic basic :offset-assert 144) + (birth-info sparticle-birthinfo :inline :offset-assert 160) + (sprite sprite-vec-data-2d :inline :offset-assert 192) + (r19 uint128 :offset-assert 240) + (r20 uint128 :offset-assert 256) + (r21 uint128 :offset-assert 272) + (r22 uint128 :offset-assert 288) + (is-3d uint128 :offset-assert 304) + ) + :method-count-assert 9 + :size-assert #x140 + :flag-assert #x900000140 + ;; field ra uses ~A with a signed load. field dummy0 uses ~A with a signed load. field dummy1 uses ~A with a signed load. field b-spfic uses ~A with a signed load. field l-spfic uses ~A with a signed load. + ) +|# + +;; sparticle-launcher is already defined! + +;; (define-extern *part-id-table* object) ;; (array sparticle-launcher) +;; (define-extern *part-group-id-table* object) ;; (array sparticle-launch-group) +;; (define-extern *launch-control-table* object) +;; (define-extern *sp-temp* object) ;; float +;; (define-extern count-launch-controls-in-table function) +;; (define-extern lookup-part-group-by-name function) ;; (function string sparticle-launch-group) +;; (define-extern lookup-part-group-pointer-by-name function) ;; (function string (pointer object)) +;; (define-extern part-group-pointer? function) ;; (function pointer symbol) +;; (define-extern unlink-part-group-by-heap function) ;; (function kheap int) +;; (define-extern sp-init-fields! function) ;; (function (pointer float) (inline-array sp-field-init-spec) sp-field-id sp-field-id symbol (inline-array sp-field-init-spec)) +;; (define-extern *sp-launcher-lock* object) ;; symbol +;; (define-extern *sp-launch-queue* object) ;; sp-launch-queue +;; (define-extern *sp-launcher-enable* object) ;; symbol +;; (define-extern particle-setup-adgif function) ;; (function adgif-shader int none) +;; (define-extern *particle-adgif-cache* object) ;; particle-adgif-cache +;; (define-extern particle-adgif-cache-flush function) ;; (function none) +;; (define-extern particle-adgif function) ;; (function adgif-shader texture-id none) +;; (define-extern particle-adgif-callback function) ;; (function adgif-shader texture-id none) +;; (define-extern sp-queue-launch function) ;; (function sparticle-system sparticle-launcher matrix int) +;; (define-extern sp-adjust-launch function) ;; (function sparticle-launchinfo sparticle-cpuinfo (inline-array sp-field-init-spec) matrix symbol none) +;; (define-extern sp-euler-convert function) ;; (function sparticle-launchinfo sparticle-cpuinfo none) +;; (define-extern sp-rotate-system function) ;; (function sparticle-launchinfo sparticle-cpuinfo transformq none) +;; (define-extern sp-launch-particles-var function) ;; (function sparticle-system sparticle-launcher matrix sparticle-launch-state sparticle-launch-control float none) +;; (define-extern *death-adgif* object) ;; adgif-shader +;; (define-extern sp-launch-particles-death function) ;; (function sparticle-system sparticle-launcher vector none) +;; (define-extern sp-clear-queue function) ;; (function none) +;; (define-extern sp-relaunch-setup-fields function) ;; (function object sparticle-launcher sparticle-cpuinfo sprite-vec-data-3d none) +;; (define-extern sp-relaunch-particle-2d function) ;; (function object sparticle-launcher sparticle-cpuinfo sprite-vec-data-2d none) +;; (define-extern sp-relaunch-particle-3d function) ;; (function object sparticle-launcher sparticle-cpuinfo sprite-vec-data-3d none) +;; (define-extern get-matching-control-table-index function) +;; (define-extern kill-all-particles-with-control function) +;; (define-extern execute-particle-local-space-engine function) ;; (function int none) +;; (define-extern local-space-camera function) ;; (function particle-local-space-info none) +;; (define-extern local-space-proc-joint function) ;; (function particle-local-space-info none) +;; (define-extern local-space-proc-root function) +;; (define-extern spawn-level-particles-for-camera function) +;; (define-extern execute-part-engine function) ;; (function none) +;; (define-extern check-particles function) +;; (define-extern sparticle-track-root function) ;; (function object sparticle-cpuinfo vector none) +;; (define-extern sparticle-track-root-prim function) ;; (function object sparticle-cpuinfo vector none) +;; (define-extern sparticle-track-joint function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern sparticle-turn-to-vel function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d none) +;; (define-extern sparticle-rotate-to-vel-3d function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d vector none) +;; (define-extern birth-func-clean function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none) +;; (define-extern birth-func-process-clock function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none) +;; (define-extern birth-func-copy-rot-color function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none) +;; (define-extern *global-toggle* object) ;; int +;; (define-extern birth-func-copy2-rot-color function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none) +;; (define-extern birth-func-copy-omega-to-z function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none) +;; (define-extern birth-func-random-next-time function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none) +;; (define-extern sparticle-respawn-heights function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern sparticle-respawn-timer function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern sparticle-texture-animate function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern sparticle-texture-day-night function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-2d none) +;; (define-extern sparticle-motion-blur function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern sparticle-motion-blur-old function) ;; (function object sparticle-cpuinfo sprite-vec-data-3d object) +;; (define-extern sparticle-set-conerot function) ;; (function sparticle-launcher vector none) +;; (define-extern check-ground-bounce function) ;; (function sparticle-system sparticle-cpuinfo sparticle-launchinfo float) +;; (define-extern check-drop-group-center function) ;; (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none) +;; (define-extern check-drop-group-center-with-offset function) +;; (define-extern check-bubble-height function) ;; (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none) +;; (define-extern check-raise-group-center function) ;; (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none) +;; (define-extern birth-func-y->userdata function) ;; (function sparticle-system sparticle-cpuinfo matrix none) +;; (define-extern birth-func-ocean-height function) ;; (function sparticle-system sparticle-cpuinfo matrix none) +;; (define-extern birth-func-camera-orient function) ;; (function int sparticle-cpuinfo sparticle-launchinfo none) +;; (define-extern birth-func-set-parent-pntr function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none) +;; (define-extern birth-func-get-parent-quat function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none) +;; (define-extern spt-func-camera-facing-orbiter function) ;; (function sparticle-system sparticle-cpuinfo sparticle-launchinfo quaternion) +;; (define-extern *particle-birth-work* object) +;; (define-extern birth-func-set-quat function) ;; (function int sparticle-cpuinfo sparticle-launchinfo none) +;; (define-extern birth-func-add-vel function) +;; (define-extern birth-func-set-vel function) ;; (function object sparticle-cpuinfo sparticle-launchinfo none) +;; (define-extern birth-func-set-vel-2d function) ;; (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none) +;; (define-extern birth-func-set-vel-range function) +;; (define-extern birth-func-texture-group function) ;; (function int sparticle-cpuinfo sparticle-launchinfo none) +;; (define-extern rot-to-particle function) ;; (function degrees sprite-vec-data-2d matrix none) +;; (define-extern rot-to-particle-no-flip function) +;; (define-extern birth-func-flip-based-on-scale function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none) +;; (define-extern sparticle-2d-spline-align function) ;; (function object sparticle-cpuinfo sprite-vec-data-2d object none) +;; (define-extern sparticle-2d-spline-align-no-flip function) +;; (define-extern sparticle-2d-spline-align-instant function) ;; (function object sparticle-cpuinfo sprite-vec-data-2d none) +;; (define-extern birth-func-inherit-size function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none) +;; (define-extern birth-func-texture-group-2d function) ;; (function object sparticle-cpuinfo sparticle-launchinfo object object none) +;; (define-extern sparticle-3d-rotate-xz-to-camera function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d none) +;; (define-extern spt-func-relative-pos function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d none) +;; (define-extern spt-func-turn-to-vel-radial function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; sparticle-subsampler ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; sparticle ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern sp-particle-copy! function) ;; (function sparticle-cpuinfo sparticle-cpuinfo none) +;; (define-extern *sp-particle-system-2d* object) ;; sparticle-system +;; (define-extern *sp-particle-system-3d* object) ;; sparticle-system +;; (define-extern sp-get-block-size function) ;; (function sparticle-system int int) +;; (define-extern sp-get-approx-alloc-size function) ;; (function sparticle-system int int) +;; (define-extern sp-free-particle function) ;; (function sparticle-system int sparticle-cpuinfo sprite-vec-data-2d none) +;; (define-extern sp-get-particle function) ;; (function sparticle-system int sparticle-launch-state sparticle-cpuinfo) +;; (define-extern sp-kill-particle function) ;; (function sparticle-system sparticle-cpuinfo symbol) +;; (define-extern sp-orbiter function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern sp-process-block-2d function) ;; (function sparticle-system int int int int symbol none) +;; (define-extern sp-process-block-3d function) ;; (function sparticle-system int int int int symbol none) +;; (define-extern sp-copy-to-spr function) ;; (function int pointer int none) +;; (define-extern sp-copy-from-spr function) ;; (function int pointer int none) +;; (define-extern memcpy function) ;; (function pointer pointer none) +;; (define-extern sp-process-block function) ;; (function sparticle-system int sprite-array-2d int none) +;; (define-extern sp-process-particle-system function) ;; (function sparticle-system int sprite-array-2d none) +;; (define-extern *particles-flag* object) ;; symbol +;; (define-extern forall-particles-with-control-runner function) +;; (define-extern forall-particles-with-control function) +;; (define-extern sparticle-kill-it function) ;; (function sparticle-system sparticle-cpuinfo none) +;; (define-extern sparticle-60-to-50 function) ;; (function sparticle-system sparticle-cpuinfo pointer none) +;; (define-extern sparticle-50-to-60 function) ;; (function sparticle-system sparticle-cpuinfo pointer none) +;; (define-extern forall-particles-runner function) ;; (function (function sparticle-system sparticle-cpuinfo pointer none) sparticle-system none) +;; (define-extern forall-particles function) ;; (function function symbol symbol none) +;; (define-extern all-particles-50-to-60 function) ;; (function none) +;; (define-extern all-particles-60-to-50 function) ;; (function none) +;; (define-extern remap-particle function) ;; (function sparticle-system sparticle-cpuinfo pointer none) +;; (define-extern remap-all-particles function) ;; (function none) +;; (define-extern process-particles function) ;; (function none) +;; (define-extern spt-func-on-omega-height-die function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; entity-table ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *entity-info* (array entity-info)) +;; (define-extern entity-info-lookup (function type entity-info)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; loader ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype spooler-block (basic) + ((anim spool-anim :offset-assert 4) ;; guessed by decompiler + (idle art-joint-anim :offset-assert 8) ;; guessed by decompiler + (exit art-joint-anim :offset-assert 12) ;; guessed by decompiler + (break-func (function process-drawable object) :offset-assert 16) ;; guessed by decompiler + (flags spooler-flags :offset-assert 20) ;; guessed by decompiler + (part int32 :offset-assert 24) + (part-audio-start float :offset-assert 28) + (old-status uint16 :offset-assert 32) + (old-pos int32 :offset-assert 36) + (good-time uint64 :offset-assert 40) ;; time-frame + (old-time uint64 :offset-assert 48) ;; time-frame + (good-count int32 :offset-assert 56) + (sid sound-id :offset-assert 60) ;; guessed by decompiler + (start-time uint64 :offset-assert 64) + (paused? symbol :offset-assert 72) ;; guessed by decompiler + (frame-count int32 :offset-assert 76) + (frame-count2 float :offset-assert 80) + (next-frame-fmv basic :offset-assert 84) + ) + :method-count-assert 9 + :size-assert #x58 + :flag-assert #x900000058 + ) +|# + +#| +(deftype load-dir (basic) + ((level basic :offset-assert 4) + (allocated-length uint32 :offset-assert 8) + ) + :method-count-assert 11 + :size-assert #x10 + :flag-assert #xb00000010 + ;; Failed to read some fields. + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type int level) _type_) + (load-dir-method-9 () none) ;; 9 ;; (load-to-heap-by-name (_type_ string symbol kheap int) art-group) + (load-dir-method-10 () none) ;; 10 ;; (set-loaded-art (_type_ art-group) art-group) + ) + ) +|# + +#| +(deftype gui-control (basic) + ((engine engine :offset-assert 4) ;; guessed by decompiler + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 26 + :size-assert #x1080 + :flag-assert #x1a00001080 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type int) _type_) + (gui-control-method-9 () none) ;; 9 ;; (add-process (_type_ process gui-channel gui-action string float time-frame) sound-id) + (gui-control-method-10 () none) ;; 10 ;; (remove-process (_type_ process gui-channel) int) + (gui-control-method-11 () none) ;; 11 ;; (stop-str (_type_ gui-connection) int) + (gui-control-method-12 () none) ;; 12 ;; (gui-control-method-12 (_type_ process gui-channel gui-action string int float sound-id) sound-id) + (gui-control-method-13 () none) ;; 13 ;; (update (_type_ symbol) int) + (gui-control-method-14 () none) ;; 14 ;; (lookup-gui-connection-id (_type_ string gui-channel gui-action) sound-id) + (gui-control-method-15 () none) ;; 15 ;; (lookup-gui-connection (_type_ process gui-channel string sound-id) gui-connection) + (gui-control-method-16 () none) ;; 16 ;; (set-action! (_type_ gui-action sound-id gui-channel gui-action string (function gui-connection symbol) process) int) + (gui-control-method-17 () none) ;; 17 ;; (get-status (_type_ sound-id) gui-status) + (gui-control-method-18 () none) ;; 18 ;; (gui-control-method-18 (_type_ gui-channel) symbol) + (gui-control-method-19 () none) ;; 19 ;; (handle-command-list (_type_ gui-channel gui-connection) symbol) + (gui-control-method-20 () none) ;; 20 ;; (sound-params-set! (_type_ sound-id symbol int int int float) gui-connection) + (gui-control-method-21 () none) ;; 21 ;; (gui-control-method-21 (_type_ gui-connection) int) + (gui-control-method-22 () none) ;; 22 ;; (gui-control-method-22 (_type_ gui-connection vector) int) + (gui-control-method-23 () none) ;; 23 ;; (update-connection (_type_ gui-connection process symbol) none) + (gui-control-method-24 () none) ;; 24 ;; (handle-command (_type_ gui-channel gui-channel symbol gui-connection) symbol) + (gui-control-method-25 () none) ;; 25 ;; (channel-id-set! (_type_ gui-connection sound-id) int) + ) + ) +|# + +;; (define-extern *image-scene-name* object) +;; (define-extern *image-scene-num* object) +;; (define-extern drawable-load function) ;; (function drawable kheap drawable) +;; (define-extern art-load function) ;; (function string kheap art) +;; (define-extern art-group-load-check function) ;; (function string kheap int art-group) +;; (define-extern external-art-buffer-init function) ;; (function external-art-buffer int) +;; (define-extern *preload-spool-anims* object) ;; symbol +;; (define-extern ja-play-spooled-anim function) ;; (function spool-anim art-joint-anim art-joint-anim (function process-drawable symbol) spooler-flags int :behavior process-drawable) +;; (define-extern ja-play-spooled-no-sync-anim function) +;; (define-extern ja-abort-spooled-anim function) ;; (function spool-anim art-joint-anim int int :behavior process-drawable) +;; (define-extern *gui-control* object) ;; gui-control +;; (define-extern *art-control* object) ;; external-art-control + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; game-info ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern hflip? (function symbol)) +(define-extern *default-continue* continue-point) +(define-extern task-level->string (function int string)) +(define-extern level-name->task-level (function symbol int)) +(define-extern trsq->continue-point (function trsq int)) +(define-extern position->stream (function string symbol symbol none)) +(define-extern bug-report-display (function symbol int)) +(define-extern print-continues (function int)) +(define-extern *highscore-info-array* (array highscore-info)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; game-task ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern *grand-prix* (array grand-prix)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-dma ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype dma-block (structure) + ((tp basic :offset-assert 0) + (offset int32 :offset-assert 4) + (length int32 :offset-assert 8) + (alloc-frames int32 :offset-assert 12) + (order int32 :offset-assert 16) + (buffer-id int32 :offset-assert 20) + ) + :method-count-assert 11 + :size-assert #x18 + :flag-assert #xb00000018 + (:methods + (dma-block-method-9 () none) ;; 9 + (dma-block-method-10 () none) ;; 10 + ) + ) +|# + +#| +(deftype dma-block-list (structure) + ((total-length int32 :offset-assert 0) + (min-offset int32 :offset-assert 4) + (blocks UNKNOWN 4 :offset-assert 8) + ) + :method-count-assert 10 + :size-assert #x88 + :flag-assert #xa00000088 + (:methods + (dma-block-list-method-9 () none) ;; 9 + ) + ) +|# + +;; (define-extern *dma-block-lists* array) +;; (define-extern can-place-block? function) +;; (define-extern dma-try-alloc-single function) +;; (define-extern dma-try-alloc function) +;; (define-extern dma-release function) +;; (define-extern dma-dump function) +;; (define-extern dma-is-empty function) +;; (define-extern dma-get-named-buffer function) +;; (define-extern lobby-dma-reserve-hook function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; settings ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern get-current-language (function language-enum)) +(define-extern *setting-control* setting-control) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; mood-tables ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *no-cloud-haze-mood-fog-table* object) ;; mood-fog-table +;; (define-extern *no-cloud-clear-mood-fog-table* object) ;; mood-fog-table +;; (define-extern *no-cloud-smog-mood-fog-table* object) ;; mood-fog-table +;; (define-extern *overcast-fog-mood-fog-table* object) ;; mood-fog-table +;; (define-extern *overcast-clear-mood-fog-table* object) ;; mood-fog-table +;; (define-extern *overcast-rain-mood-fog-table* object) ;; mood-fog-table +;; (define-extern *storm-fog-mood-fog-table* object) ;; mood-fog-table +;; (define-extern *storm-clear-mood-fog-table* object) ;; mood-fog-table +;; (define-extern *storm-rain-mood-fog-table* object) ;; mood-fog-table +;; (define-extern *desert-mood-fog-table* object) ;; mood-fog-table +;; (define-extern *sandstorm-start-mood-fog-table* object) ;; mood-fog-table +;; (define-extern *sandstorm-end-mood-fog-table* object) ;; mood-fog-table +;; (define-extern *no-cloud-mood-color-table* object) ;; mood-color-table +;; (define-extern *overcast-mood-color-table* object) ;; mood-color-table +;; (define-extern *storm-mood-color-table* object) ;; mood-color-table +;; (define-extern *desert-mood-color-table* object) ;; mood-color-table +;; (define-extern *sandstorm-start-mood-color-table* object) ;; mood-color-table +;; (define-extern *sandstorm-end-mood-color-table* object) ;; mood-color-table +;; (define-extern *no-cloud-mood-channel-group* object) ;; mood-channel-group +;; (define-extern *overcast-mood-channel-group* object) ;; mood-channel-group +;; (define-extern *stormy-mood-channel-group* object) ;; mood-channel-group +;; (define-extern *clouds-000* object) ;; mood-clouds +;; (define-extern *clouds-125* object) ;; mood-clouds +;; (define-extern *clouds-250* object) ;; mood-clouds +;; (define-extern *clouds-375* object) ;; mood-clouds +;; (define-extern *clouds-500* object) ;; mood-clouds +;; (define-extern *clouds-625* object) ;; mood-clouds +;; (define-extern *clouds-750* object) ;; mood-clouds +;; (define-extern *clouds-875* object) ;; mood-clouds +;; (define-extern *clouds-1000* object) ;; mood-clouds +;; (define-extern *mood-direction-table* object) ;; mood-direction-table +;; (define-extern *mood-sky-table* object) ;; mood-sky-table +;; (define-extern *mood-interp-table* object) ;; sky-color-day +;; (define-extern init-mood-control function) ;; (function mood-control none) +;; (define-extern *mood-control* mood-control) ;; mood-control + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; mood-tables2 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *override-mood-color-table* object) +;; (define-extern *override-mood-fog-table* object) +;; (define-extern init-override-table function) +;; (define-extern *override-table* mood-table) +;; (define-extern print-mood-tables function) ;; (function none) +;; (define-extern desaturate-mood-colors function) ;; (function float float float none) +;; (define-extern desaturate-mood-fog function) ;; (function (pointer mood-fog-table) float float none) +;; (define-extern *debug-mood-color-table* object) ;; mood-color-table +;; (define-extern *debug-mood-fog-table* object) ;; mood-fog-table + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; mood ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype lava-state (structure) + ((lava float :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +;; (define-extern set-movie-time! function) +;; (define-extern set-movie-fog! function) +;; (define-extern set-movie-color! function) +;; (define-extern palette-select-special function) ;; (function mood-context-core3 symbol) +;; (define-extern clear-mood-times function) ;; (function mood-context symbol) +;; (define-extern update-mood-itimes function) ;; (function mood-context none) +;; (define-extern update-mood-direction function) ;; (function mood-context-core3 mood-table float float) +;; (define-extern update-mood-exterior function) ;; (function mood-context-core3 mood-table float int object) +;; (define-extern copy-mood-exterior function) ;; (function mood-context symbol) +;; (define-extern copy-mood-exterior-ambi function) ;; (function mood-context symbol none) +;; (define-extern clear-mood-context function) ;; (function mood-context symbol) +;; (define-extern update-mood-interior function) ;; (function mood-context symbol float) +;; (define-extern update-mood-interior-ambient function) ;; (function mood-context symbol float vector) +;; (define-extern update-mood-flames function) ;; (function mood-context int int int float float float float :behavior time-of-day-proc) +;; (define-extern *flash0* array) ;; (array float) +;; (define-extern *flash1* array) ;; (array float) +;; (define-extern *flash2* array) ;; (array float) +;; (define-extern *flash3* array) ;; (array float) +;; (define-extern *flash4* array) ;; (array float) +;; (define-extern *flash5* array) ;; (array float) +;; (define-extern *flash6* array) ;; (array float) +;; (define-extern *flash7* array) ;; (array float) +;; (define-extern update-mood-light function) ;; (function mood-context int int float float float float float float) +;; (define-extern update-mood-lava function) ;; (function mood-context int int float float float float float float) +;; (define-extern update-mood-flicker function) ;; (function mood-context int int none) +;; (define-extern update-mood-florescent function) ;; (function mood-context int int float) +;; (define-extern update-mood-electricity function) ;; (function mood-context int int float float none) +;; (define-extern update-mood-pulse function) ;; (function mood-context int int float float float float none) +;; (define-extern update-mood-strobe function) ;; (function mood-context int int int float float) +;; (define-extern update-mood-caustics function) ;; (function mood-context int float float float float float) +;; (define-extern override-mood-fog function) +;; (define-extern override-mood-color function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; mood-funcs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype default-states (structure) + ((light light-state :inline :offset-assert 0) + (flame flames-state :inline :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xf + :flag-assert #x90000000f + ) +|# + +#| +(deftype default-exterior-states (structure) + ((light light-state :inline :offset-assert 0) + (flame flames-state :inline :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xf + :flag-assert #x90000000f + ) +|# + +#| +(deftype mountain-states (structure) + ((light0 light-state :inline :offset-assert 0) + (light1 light-state :inline :offset-assert 8) + (spec-0 sp-field-init-spec :offset-assert 16) + (spec-1 sp-field-init-spec :offset-assert 20) + (spec-2 sp-field-init-spec :offset-assert 24) + (spec-3 sp-field-init-spec :offset-assert 28) + (spec-4 sp-field-init-spec :offset-assert 32) + (spec-5 sp-field-init-spec :offset-assert 36) + (spec-6 sp-field-init-spec :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +;; (define-extern update-mood-default function) ;; (function mood-context float int none :behavior time-of-day-proc) +;; (define-extern update-mood-copy-parent function) ;; (function mood-context object int none) +;; (define-extern get-sphere-interp function) ;; (function sphere vector float float float) +;; (define-extern update-mood-default-exterior function) +;; (define-extern init-mood-mountain function) ;; (function mood-context uint) +;; (define-extern update-mood-mountain function) ;; (function mood-context float int none :behavior time-of-day-proc) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; mood-funcs2 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype rustyh-states (structure) + ((effect float :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype garage-states (structure) + ((switched float :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype default-interior-states (UNKNOWN) + () + :method-count-assert 0 + :size-assert #x0 + :flag-assert #x0 + ) +|# + +#| +(deftype hiphog-states (UNKNOWN) + () + :method-count-assert 0 + :size-assert #x0 + :flag-assert #x0 + ) +|# + +;; (define-extern init-mood-fog-default function) +;; (define-extern init-mood-fog-temple function) +;; (define-extern init-mood-fog-drome function) +;; (define-extern update-mood-default-interior function) ;; (function mood-context none :behavior time-of-day-proc) +;; (define-extern update-mood-default-interior-ambient function) ;; (function mood-context none :behavior time-of-day-proc) +;; (define-extern update-rustyh-lights function) +;; (define-extern update-mood-rustyh function) +;; (define-extern set-rustyh-effect-light! function) +;; (define-extern update-hiphog-lights function) ;; (function mood-context none) +;; (define-extern update-mood-hiphog function) ;; (function mood-context float none :behavior time-of-day-proc) +;; (define-extern update-garage-brdroom-lights function) +;; (define-extern update-mood-garage-brdroom function) +;; (define-extern set-garage-switched! function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; jungle-shared ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; weather-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern group-rain-screend-drop object) ;; sparticle-launch-group +;; (define-extern update-snow function) ;; (function float vector vector none) +;; (define-extern birth-func-omega-normal-orient function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none) +;; (define-extern birth-func-rain function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none) +;; (define-extern check-drop-level-rain function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern check-drop-level-rain2 function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern check-drop-level-splash function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern cam-master-effect function) ;; (function none :behavior camera-master) +;; (define-extern sparticle-track-sun function) ;; (function int sparticle-cpuinfo matrix none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; time-of-day ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern time-of-day-effect object) ;; (function none) +;; (define-extern time-of-day-update function) ;; (function none :behavior time-of-day-proc) +;; (define-extern update-counters function) ;; (function float :behavior time-of-day-proc) +;; (define-extern time-of-day-tick state) ;; (state time-of-day-proc) +;; (define-extern init-time-of-day function) ;; (function object :behavior time-of-day-proc) +;; (define-extern start-time-of-day function) ;; (function (pointer time-of-day-proc)) +;; (define-extern time-of-day-setup function) ;; (function symbol symbol) +;; (define-extern time-of-day-interp-colors function) ;; (function (pointer rgba) uint mood-context none) +;; (define-extern time-of-day-interp-colors-scratch function) ;; (function (pointer rgba) time-of-day-palette mood-context none) +;; (define-extern init-time-of-day-context function) ;; (function time-of-day-context symbol) +;; (define-extern set-filter-color! function) ;; (function float float float none) +;; (define-extern tod-madd! function) ;; (function vector vector vector float) +;; (define-extern update-environment-colors function) ;; (function time-of-day-context vector) +;; (define-extern update-time-of-day function) ;; (function time-of-day-context none) +;; (define-extern calc-fade-from-fog function) ;; (function vector float) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; sky-data ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *sky-work* object) ;; sky-work +;; (define-extern sky-base-polygons object) ;; (inline-array sky-vertex) +;; (define-extern sky-roof-polygons object) ;; (inline-array sky-vertex) +;; (define-extern *cloud-vert-array* object) ;; cloud-vert-array +;; (define-extern *cloud-poly* object) ;; (inline-array sky-vertex) +;; (define-extern init-cloud-vert-array function) ;; (function symbol) +;; (define-extern *haze-vert-array* object) ;; haze-vert-array +;; (define-extern *haze-poly* object) ;; (inline-array sky-vertex) +;; (define-extern init-haze-vert-array function) ;; (function symbol) +;; (define-extern sky-make-sun-data function) ;; (function sky-work int float none) +;; (define-extern sky-make-moon-data function) ;; (function sky-work float none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; sky-tng ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern set-tex-offset function) ;; (function int int none) +;; (define-extern draw-large-polygon function) +;; (define-extern clip-polygon-against-positive-hyperplane function) +;; (define-extern clip-polygon-against-negative-hyperplane function) +;; (define-extern render-sky-quad function) ;; (function (inline-array sky-vertex) dma-buffer none) +;; (define-extern render-sky-tri function) ;; (function (inline-array sky-vertex) dma-buffer none) +;; (define-extern close-sky-buffer function) ;; (function dma-buffer none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; load-state ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern level-base-level-name (function symbol object)) +(define-extern add-want-level (function (inline-array level-buffer-state) (pointer int64) symbol symbol symbol symbol object)) +(define-extern *display-load-commands* symbol) +(define-extern *backup-load-state* load-state) +(define-extern *load-state* load-state) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; level-info ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *default-mood-range* object) +;; (define-extern *mood-range-1* object) +;; (define-extern *mood-range-snow* object) +;; (define-extern default-level level-load-info) ;; level-load-info +;; (define-extern intro level-load-info) ;; level-load-info +;; (define-extern title level-load-info) ;; level-load-info +;; (define-extern halfpipe level-load-info) ;; level-load-info +;; (define-extern raceweap level-load-info) +;; (define-extern junglex level-load-info) +;; (define-extern jungley level-load-info) +;; (define-extern junglea level-load-info) +;; (define-extern jungleb level-load-info) +;; (define-extern junglec level-load-info) +;; (define-extern jungled level-load-info) +;; (define-extern junglee level-load-info) +;; (define-extern junglef level-load-info) +;; (define-extern jungleg level-load-info) +;; (define-extern jungles level-load-info) +;; (define-extern jungtbox level-load-info) +;; (define-extern jungtrn level-load-info) +;; (define-extern junglew level-load-info) +;; (define-extern havjungs level-load-info) +;; (define-extern havjungw level-load-info) +;; (define-extern havjungx level-load-info) +;; (define-extern havjungy level-load-info) +;; (define-extern havsews level-load-info) +;; (define-extern havseww level-load-info) +;; (define-extern havsewx level-load-info) +;; (define-extern havsewy level-load-info) +;; (define-extern hvswtbox level-load-info) +;; (define-extern hvjgtbox level-load-info) +;; (define-extern havtours level-load-info) +;; (define-extern havtourw level-load-info) +;; (define-extern havttbox level-load-info) +;; (define-extern havena level-load-info) +;; (define-extern havenb level-load-info) +;; (define-extern havenc level-load-info) +;; (define-extern havend level-load-info) +;; (define-extern havene level-load-info) +;; (define-extern havenx level-load-info) +;; (define-extern haveny level-load-info) +;; (define-extern havens level-load-info) +;; (define-extern havntbox level-load-info) +;; (define-extern havenw level-load-info) +;; (define-extern sewera level-load-info) +;; (define-extern sewera2 level-load-info) +;; (define-extern sewera3 level-load-info) +;; (define-extern sewerb level-load-info) +;; (define-extern sewerc level-load-info) +;; (define-extern sewerd level-load-info) +;; (define-extern sewere level-load-info) +;; (define-extern sewerf level-load-info) +;; (define-extern sewers level-load-info) +;; (define-extern sewerw level-load-info) +;; (define-extern sewerx level-load-info) +;; (define-extern sewtbox level-load-info) +;; (define-extern kratours level-load-info) +;; (define-extern kratourw level-load-info) +;; (define-extern krattbox level-load-info) +;; (define-extern krasw level-load-info) +;; (define-extern krass level-load-info) +;; (define-extern krastbox level-load-info) +;; (define-extern krastrn level-load-info) +;; (define-extern krasa level-load-info) +;; (define-extern krasb level-load-info) +;; (define-extern krasc level-load-info) +;; (define-extern krasx level-load-info) +;; (define-extern krasy level-load-info) +;; (define-extern krasfoot level-load-info) +;; (define-extern snowfoot level-load-info) +;; (define-extern hjngfoot level-load-info) +;; (define-extern havnfoot level-load-info) +;; (define-extern jungfoot level-load-info) +;; (define-extern hvswfoot level-load-info) +;; (define-extern sparfoot level-load-info) +;; (define-extern dockfoot level-load-info) +;; (define-extern dkkrfoot level-load-info) +;; (define-extern sewfoot level-load-info) +;; (define-extern canfoot level-load-info) +;; (define-extern cnspfoot level-load-info) +;; (define-extern sptmfoot level-load-info) +;; (define-extern tempfoot level-load-info) +;; (define-extern icepfoot level-load-info) +;; (define-extern icefoot level-load-info) +;; (define-extern icebfoot level-load-info) +;; (define-extern peakfoot level-load-info) +;; (define-extern havtfoot level-load-info) +;; (define-extern dromfoot level-load-info) +;; (define-extern drdkfoot level-load-info) +;; (define-extern spatfoot level-load-info) +;; (define-extern kratfoot level-load-info) +;; (define-extern icetfoot level-load-info) +;; (define-extern krastt level-load-info) +;; (define-extern dockstt level-load-info) +;; (define-extern dromett level-load-info) +;; (define-extern dkkrtt level-load-info) +;; (define-extern drdktt level-load-info) +;; (define-extern krtrtt level-load-info) +;; (define-extern junglett level-load-info) +;; (define-extern havtt level-load-info) +;; (define-extern sewertt level-load-info) +;; (define-extern hvjgtt level-load-info) +;; (define-extern hvswtt level-load-info) +;; (define-extern hvtrtt level-load-info) +;; (define-extern spartt level-load-info) +;; (define-extern canyontt level-load-info) +;; (define-extern templett level-load-info) +;; (define-extern cnsptt level-load-info) +;; (define-extern sptmtt level-load-info) +;; (define-extern sptrtt level-load-info) +;; (define-extern snowtt level-load-info) +;; (define-extern peaktt level-load-info) +;; (define-extern icett level-load-info) +;; (define-extern icbgtt level-load-info) +;; (define-extern icpstt level-load-info) +;; (define-extern ictrtt level-load-info) +;; (define-extern canyons level-load-info) +;; (define-extern canyonw level-load-info) +;; (define-extern canyona level-load-info) +;; (define-extern canyonb level-load-info) +;; (define-extern canyonc level-load-info) +;; (define-extern canyond level-load-info) +;; (define-extern canyone level-load-info) +;; (define-extern canyonx level-load-info) +;; (define-extern canyony level-load-info) +;; (define-extern cantbox level-load-info) +;; (define-extern cansparw level-load-info) +;; (define-extern canspars level-load-info) +;; (define-extern cansparx level-load-info) +;; (define-extern canspary level-load-info) +;; (define-extern cnsptbox level-load-info) +;; (define-extern docksw level-load-info) +;; (define-extern docksx level-load-info) +;; (define-extern dockss level-load-info) +;; (define-extern docksa level-load-info) +;; (define-extern docksb level-load-info) +;; (define-extern docksc level-load-info) +;; (define-extern docksd level-load-info) +;; (define-extern dockse level-load-info) +;; (define-extern docktbox level-load-info) +;; (define-extern dockkras level-load-info) +;; (define-extern dockkraw level-load-info) +;; (define-extern dockkrax level-load-info) +;; (define-extern dockkray level-load-info) +;; (define-extern dkkrtbox level-load-info) +;; (define-extern dromew level-load-info) +;; (define-extern dromes level-load-info) +;; (define-extern dromex level-load-info) +;; (define-extern dromey level-load-info) +;; (define-extern dromea level-load-info) +;; (define-extern dromeb level-load-info) +;; (define-extern dromec level-load-info) +;; (define-extern dromed level-load-info) +;; (define-extern dromee level-load-info) +;; (define-extern dromef level-load-info) +;; (define-extern dromtbox level-load-info) +;; (define-extern dromdocs level-load-info) +;; (define-extern dromdocw level-load-info) +;; (define-extern dromdocx level-load-info) +;; (define-extern dromdocy level-load-info) +;; (define-extern drdktbox level-load-info) +;; (define-extern brdroom level-load-info) +;; (define-extern brdroomf level-load-info) +;; (define-extern garcst level-load-info) +;; (define-extern garage level-load-info) +;; (define-extern garageb level-load-info) +;; (define-extern snow level-load-info) +;; (define-extern snowx level-load-info) +;; (define-extern snows level-load-info) +;; (define-extern snowtbox level-load-info) +;; (define-extern icetrn level-load-info) +;; (define-extern snowtrn2 level-load-info) +;; (define-extern ben level-load-info) +;; (define-extern cliffs level-load-info) +;; (define-extern cliffss level-load-info) +;; (define-extern cliffart level-load-info) +;; (define-extern cliftrn level-load-info) +;; (define-extern clifhunt level-load-info) +;; (define-extern clifctf level-load-info) +;; (define-extern cliffsx level-load-info) +;; (define-extern drone level-load-info) +;; (define-extern coliseum level-load-info) +;; (define-extern coliseux level-load-info) +;; (define-extern coliseus level-load-info) +;; (define-extern colart level-load-info) +;; (define-extern coliclct level-load-info) +;; (define-extern colictf level-load-info) +;; (define-extern colirev level-load-info) +;; (define-extern colhunt level-load-info) +;; (define-extern eight level-load-info) +;; (define-extern eightb level-load-info) +;; (define-extern rustyh level-load-info) +;; (define-extern hiphog level-load-info) ;; level-load-info +;; (define-extern desarena level-load-info) +;; (define-extern desarens level-load-info) +;; (define-extern desart level-load-info) +;; (define-extern desclct level-load-info) +;; (define-extern desactf level-load-info) +;; (define-extern deshunt level-load-info) ;; level-load-info +;; (define-extern deshunt2 level-load-info) +;; (define-extern desrev level-load-info) +;; (define-extern desarenx level-load-info) +;; (define-extern snobowls level-load-info) +;; (define-extern snobowl level-load-info) +;; (define-extern snobowlx level-load-info) +;; (define-extern sbwlctf level-load-info) +;; (define-extern snobart level-load-info) +;; (define-extern kcrosss level-load-info) +;; (define-extern kcross level-load-info) +;; (define-extern kcrosctf level-load-info) +;; (define-extern kcrsplow level-load-info) +;; (define-extern kcrosart level-load-info) +;; (define-extern kcrsclct level-load-info) +;; (define-extern kcrossx level-load-info) +;; (define-extern spargusa level-load-info) +;; (define-extern spargusb level-load-info) +;; (define-extern spargusc level-load-info) +;; (define-extern spargusd level-load-info) +;; (define-extern sparguse level-load-info) +;; (define-extern spargusx level-load-info) +;; (define-extern spargusy level-load-info) +;; (define-extern sprgstbx level-load-info) +;; (define-extern sparguss level-load-info) +;; (define-extern spargusw level-load-info) +;; (define-extern icea level-load-info) +;; (define-extern iceb level-load-info) +;; (define-extern icec level-load-info) +;; (define-extern iced level-load-info) +;; (define-extern icew level-load-info) +;; (define-extern icex level-load-info) +;; (define-extern icey level-load-info) +;; (define-extern ices level-load-info) +;; (define-extern icetbox level-load-info) +;; (define-extern icetours level-load-info) +;; (define-extern icetourw level-load-info) +;; (define-extern icettbox level-load-info) +;; (define-extern peak level-load-info) +;; (define-extern peaks level-load-info) +;; (define-extern peakw level-load-info) +;; (define-extern peaka level-load-info) +;; (define-extern peakb level-load-info) +;; (define-extern peakc level-load-info) +;; (define-extern peakd level-load-info) +;; (define-extern peake level-load-info) +;; (define-extern peakx level-load-info) +;; (define-extern peaktbox level-load-info) +;; (define-extern icepasss level-load-info) +;; (define-extern icepassw level-load-info) +;; (define-extern icepassx level-load-info) +;; (define-extern icepassy level-load-info) +;; (define-extern iceptbox level-load-info) +;; (define-extern icebergs level-load-info) +;; (define-extern icebergw level-load-info) +;; (define-extern icebergx level-load-info) +;; (define-extern icebergy level-load-info) +;; (define-extern icebtbox level-load-info) +;; (define-extern templew level-load-info) +;; (define-extern temples level-load-info) +;; (define-extern templea level-load-info) ;; level-load-info +;; (define-extern templeb level-load-info) ;; level-load-info +;; (define-extern templec level-load-info) ;; level-load-info +;; (define-extern templed level-load-info) ;; level-load-info +;; (define-extern templee level-load-info) ;; level-load-info +;; (define-extern templex level-load-info) ;; level-load-info +;; (define-extern templey level-load-info) +;; (define-extern temptbox level-load-info) +;; (define-extern spartems level-load-info) +;; (define-extern spartemw level-load-info) +;; (define-extern spartemx level-load-info) +;; (define-extern spartemy level-load-info) +;; (define-extern sptmtbox level-load-info) +;; (define-extern spatourw level-load-info) +;; (define-extern spatours level-load-info) +;; (define-extern spattbox level-load-info) +;; (define-extern desisle level-load-info) +;; (define-extern desisles level-load-info) +;; (define-extern desislex level-load-info) +;; (define-extern disleart level-load-info) +;; (define-extern desrapt level-load-info) +;; (define-extern dislectf level-load-info) +;; (define-extern atoll level-load-info) +;; (define-extern atollx level-load-info) +;; (define-extern atolls level-load-info) +;; (define-extern atollart level-load-info) +;; (define-extern atoplow level-load-info) +;; (define-extern atollctf level-load-info) +;; (define-extern menu2 level-load-info) +;; (define-extern menumap level-load-info) +;; (define-extern mongl level-load-info) +;; (define-extern falcl level-load-info) +;; (define-extern wombl level-load-info) +;; (define-extern possl level-load-info) +;; (define-extern bobcl level-load-info) +;; (define-extern cougl level-load-info) +;; (define-extern wolfl level-load-info) +;; (define-extern bearl level-load-info) +;; (define-extern leopl level-load-info) +;; (define-extern pantl level-load-info) +;; (define-extern tigel level-load-info) +;; (define-extern cheel level-load-info) +;; (define-extern gilal level-load-info) +;; (define-extern snakl level-load-info) +;; (define-extern daxtl level-load-info) +;; (define-extern jakvl level-load-info) +;; (define-extern ashvl level-load-info) +;; (define-extern ashvl2 level-load-info) +;; (define-extern ashvl3 level-load-info) +;; (define-extern razvl level-load-info) +;; (define-extern klevl level-load-info) +;; (define-extern klevl2 level-load-info) +;; (define-extern kievl level-load-info) +;; (define-extern thavl level-load-info) +;; (define-extern thavl2 level-load-info) +;; (define-extern thavl3 level-load-info) +;; (define-extern thbvl level-load-info) +;; (define-extern thbvl2 level-load-info) +;; (define-extern thbvl3 level-load-info) +;; (define-extern thcvl level-load-info) +;; (define-extern thcvl2 level-load-info) +;; (define-extern thcvl3 level-load-info) +;; (define-extern torvl level-load-info) +;; (define-extern torvl2 level-load-info) +;; (define-extern torvl3 level-load-info) +;; (define-extern sigvl level-load-info) +;; (define-extern sigvl2 level-load-info) +;; (define-extern sigvl3 level-load-info) +;; (define-extern ur8vl level-load-info) +;; (define-extern ur8vl2 level-load-info) +;; (define-extern ur8vl3 level-load-info) +;; (define-extern rayvl level-load-info) +;; (define-extern rayvl2 level-load-info) +;; (define-extern gtbvl level-load-info) +;; (define-extern pecvl level-load-info) +;; (define-extern ashlev level-load-info) +;; (define-extern jaklev level-load-info) +;; (define-extern razlev level-load-info) +;; (define-extern klelev level-load-info) +;; (define-extern kielev level-load-info) +;; (define-extern thalev level-load-info) +;; (define-extern tarlev level-load-info) +;; (define-extern thblev level-load-info) +;; (define-extern thclev level-load-info) +;; (define-extern torlev level-load-info) +;; (define-extern siglev level-load-info) +;; (define-extern ur8lev level-load-info) +;; (define-extern kaelev level-load-info) +;; (define-extern raylev level-load-info) +;; (define-extern ratlev level-load-info) +;; (define-extern jkalev level-load-info) +;; (define-extern jkblev level-load-info) +;; (define-extern jkclev level-load-info) +;; (define-extern daxlev level-load-info) +;; (define-extern gtblev level-load-info) +;; (define-extern peclev level-load-info) +;; (define-extern ximlev level-load-info) +;; (define-extern osmlev level-load-info) +;; (define-extern cliftest level-load-info) +;; (define-extern fmvlev level-load-info) +;; (define-extern credits level-load-info) +;; (define-extern jakcred level-load-info) +;; (define-extern peccred level-load-info) +;; (define-extern razcred level-load-info) +;; (define-extern gtbcred level-load-info) +;; (define-extern daxcred level-load-info) +;; (define-extern sigcred level-load-info) +;; (define-extern thbcred level-load-info) +;; (define-extern ur8cred level-load-info) +;; (define-extern keicred level-load-info) +;; (define-extern torcred level-load-info) +;; (define-extern klecred level-load-info) +;; (define-extern thccred level-load-info) +;; (define-extern ashcred level-load-info) +;; (define-extern thacred level-load-info) +;; (define-extern raycred level-load-info) +;; (define-extern kraswfma level-load-info) +;; (define-extern krasastg level-load-info) +;; (define-extern krasafma level-load-info) +;; (define-extern krasbfma level-load-info) +;; (define-extern krascfma level-load-info) +;; (define-extern rustyhfm level-load-info) +;; (define-extern introcst level-load-info) ;; level-load-info +;; (define-extern jakndax level-load-info) +;; (define-extern rynash level-load-info) +;; (define-extern tsk2a level-load-info) +;; (define-extern tsk2b level-load-info) +;; (define-extern tsk2c level-load-info) +;; (define-extern tsk3a level-load-info) +;; (define-extern tsk4a level-load-info) +;; (define-extern tsk5a level-load-info) +;; (define-extern tsk5b level-load-info) +;; (define-extern tsk6a level-load-info) +;; (define-extern tsk12a level-load-info) +;; (define-extern tsk12b level-load-info) +;; (define-extern tsk18a level-load-info) +;; (define-extern tsk21a level-load-info) +;; (define-extern tsk21b level-load-info) +;; (define-extern tsk25a level-load-info) +;; (define-extern tsk32a level-load-info) +;; (define-extern tsk32b level-load-info) +;; (define-extern tsk32c level-load-info) +;; (define-extern tsk33a level-load-info) +;; (define-extern tsk38a level-load-info) +;; (define-extern tsk80a level-load-info) +;; (define-extern tsk80b level-load-info) +;; (define-extern tsk81a level-load-info) +;; (define-extern tsk81b level-load-info) +;; (define-extern tsk100a level-load-info) +;; (define-extern tsk100b level-load-info) +;; (define-extern tsk100c level-load-info) +;; (define-extern tsk114a level-load-info) +;; (define-extern tsk125a level-load-info) +;; (define-extern tsk130a level-load-info) +;; (define-extern tsk130b level-load-info) +;; (define-extern tsk139a level-load-info) +;; (define-extern tsk157a level-load-info) +;; (define-extern tsk165a level-load-info) +;; (define-extern tsk165ab level-load-info) +;; (define-extern tsk165b level-load-info) +;; (define-extern tsk165c level-load-info) +;; (define-extern tsk166a level-load-info) +;; (define-extern tsk166b level-load-info) +;; (define-extern tsk166c level-load-info) +;; (define-extern tsk166c2 level-load-info) +;; (define-extern tsk166d level-load-info) +;; (define-extern tsk166d2 level-load-info) +;; (define-extern tsk166e level-load-info) +;; (define-extern tsk166f level-load-info) +;; (define-extern tsk166g level-load-info) +;; (define-extern introblv level-load-info) +;; (define-extern introblp level-load-info) +;; (define-extern rustycst level-load-info) +;; (define-extern hipcst level-load-info) +;; (define-extern andrew level-load-info) +;; (define-extern testw level-load-info) +;; (define-extern testa level-load-info) +;; (define-extern testb level-load-info) +;; (define-extern testlow level-load-info) +;; (define-extern henry level-load-info) +;; (define-extern chartest level-load-info) ;; level-load-info +;; (define-extern *level-load-list* object) ;; pair + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; level ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-type dgo-header structure) + +(define-extern *max-dma* int) +;; (define-extern *cached-car-level-index* object) +(define-extern level-memory-mode->string "Convert level-memory-mode enum to string." (function level-memory-mode string)) +(define-extern lookup-level-info "Get the level load info. Symbol can be the level name, visname, nickname, or a symbol that contains a level-load-info value." (function symbol level-load-info)) +(define-extern remap-level-name "Get the load name, depending on if we should load a vis level or not." (function level-load-info symbol)) +(define-extern add-bsp-drawable "Callback function used by background-engine to draw a bsp. + Note that most drawing work has been moved into finish-background, + and the draw method called here just adds references to high-level rendering data + to lists. The exception is debug-draw, which does run here (only for draw-strip-lines)." (function bsp-header level symbol display-frame none)) +(define-extern *login-state* login-state) +(define-extern *print-login* symbol) +;; (define-extern *cached-dgo* object) +;; (define-extern *cached-dgo-count* object) +(define-extern load-buffer-resize "Resize and relocate the DGO load buffers, making sure there is enough room to both load objects and heap alloc in the linker." (function level dgo-header none)) +(define-extern level-find-borrow-slot "Set up a level to 'borrow' from another. + This function finds the right 'host' level, which should + have prepared a heap for this level. This level will then + be configured to use this heap." (function level level-memory-mode none)) +(define-extern level-update-after-load "Run the post-load state machine to login level data." (function level login-state level)) +(define-extern bg "Debug function to start playing a given level." (function symbol none)) +(define-extern play "Start (or restart) the game! + This will start up the display process, and load the initial level." (function symbol symbol int)) +;; (define-extern play2 function) +(define-extern play-boot + "Function called by the C Kernel to start the game (wrapper around play)." (function none)) +(define-extern sound-bank-name->mode (function symbol sound-bank-mode)) +;; (define-extern *sound-bank-string* array) +(define-extern update-sound-banks (function load-state (inline-array sound-bank-state) none)) +(define-extern show-level (function symbol none)) +(define-extern *default-level* level) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; text ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype print-game-text-work (structure) + ((context font-context :inline :offset-assert 0) + (xpos float :offset-assert 188) + (ypos float :offset-assert 192) + (y-spacing-scaled float :offset-assert 196) + (space-size float :offset-assert 200) + (hyphen-size float :offset-assert 204) + (copy-test symbol :offset-assert 208) + (dry-run symbol :offset-assert 212) + (string-count int32 :offset-assert 216) + (dest-count int32 :offset-assert 220) + (last-space-count int32 :offset-assert 224) + (line-count float :offset-assert 228) + (word-count int32 :offset-assert 232) + (line-word-count int32 :offset-assert 236) + (ret float :offset-assert 240) + (dma-buf dma-buffer :dynamic :offset-assert 244) + ) + :method-count-assert 9 + :size-assert #xf4 + :flag-assert #x9000000f4 + ) + +;; game-text-info is already defined! + +(define-extern *expand-buf-number* int) +(define-extern *game-text-word* string) +(define-extern *hyphen-text-word* string) +(define-extern *game-text-string* string) +(define-extern *expanded-text-line0* string) +(define-extern *expanded-text-line1* string) +(define-extern *tmp-convert-string* string) +(define-extern *level-text-file-load-flag* symbol) +(define-extern convert-korean-text (function string string)) +(define-extern text-is-loading symbol) +(define-extern load-game-text-info (function string (pointer object) kheap int)) ;; (function string (pointer object) kheap int) +(define-extern load-level-text-files (function int none)) ;; (function int none) +(define-extern draw-debug-text-box (function font-context none)) ;; (function font-context none) +(define-extern *print-game-text-work* print-game-text-work) +(define-extern hyphenate-word (function string int)) +(define-extern print-game-text (function string font-context symbol int bucket-id string dma-buffer float)) ;; (function string font-context symbol int bucket-id float) +(define-extern disable-level-text-file-loading (function none)) +(define-extern enable-level-text-file-loading (function none)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; collide-hash ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern add-collide-debug-box function) ;; (function vector rgba none) +;; (define-extern print-collide-cache-tri-count function) ;; (function none) +;; (define-extern print-exceeded-max-cache-tris function) ;; (function none) +;; (define-extern fill-bg-using-box-new function) ;; (function collide-cache object collide-query none) +;; (define-extern fill-bg-using-line-sphere-new function) ;; (function collide-cache object collide-query none) +;; (define-extern collide-list-fill-bg-using-box function) ;; (function collide-cache collide-list collide-query none) +;; (define-extern collide-list-fill-bg-using-line-sphere function) ;; (function collide-cache collide-list collide-query none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; collide-probe ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype collide-probe-stack-elem (structure) + ((child uint32 :offset-assert 0) + (count uint32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype collide-probe-stack (structure) + ((data collide-probe-stack-elem 1024 :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x4000 + :flag-assert #x900004000 + ) +|# + +;; (define-extern creates-new-method? function) ;; (function type int symbol) +;; (define-extern overrides-parent-method? function) ;; (function type int symbol) +;; (define-extern describe-methods function) ;; (function type symbol) +;; (define-extern indent-to function) ;; (function int none) +;; (define-extern probe-traverse-draw-node function) ;; (function draw-node int none) +;; (define-extern probe-traverse-inline-array-node function) ;; (function drawable-inline-array-node int none) +;; (define-extern probe-traverse-collide-fragment function) ;; (function drawable-tree-collide-fragment int none) +;; (define-extern *collide-probe-stack* object) ;; collide-probe-stack +;; (define-extern collide-vu0-block object) ;; vu-function +;; (define-extern collide-probe-node function) ;; (function (inline-array draw-node) int collide-list int) +;; (define-extern print-out function) ;; (function int object) +;; (define-extern collide-probe-instance-tie-collide-frags function) ;; (function none) +;; (define-extern collide-probe-instance-tie function) ;; (function object int collide-list int int) +;; (define-extern collide-probe-collide-fragment-tree-make-list function) ;; (function drawable-tree-collide-fragment collide-list none) +;; (define-extern collide-probe-instance-tie-tree-make-list function) ;; (function drawable-tree-instance-tie collide-list int) +;; (define-extern collide-upload-vu0 function) ;; (function none) +;; (define-extern collide-probe-make-list function) ;; (function level collide-list none) +;; (define-extern distc function) ;; (function vector vector float) +;; (define-extern interpolate function) ;; (function float float float float float float) +;; (define-extern misty-ambush-height function) ;; (function vector float) +;; (define-extern misty-ambush-height-probe function) ;; (function vector float float) +;; (define-extern pke-collide-test function) ;; (function none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; collide-frag ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; collide-mesh ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype sopt-work (structure) + ((intersect vector :inline :offset-assert 0) + (sphere-bbox4w bounding-box4w :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype spat-work (structure) + ((intersect vector :inline :offset-assert 0) + (sphere-bbox4w bounding-box4w :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype oot-work (structure) + ((intersect vector :inline :offset-assert 0) + (sphere-bbox4w bounding-box4w :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +;; (define-extern should-push-away-test-mesh function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; collide-touch ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype add-prims-touching-work (structure) + ((tri1 collide-tri-result :offset-assert 0) + (tri2 collide-tri-result :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +;; (define-extern get-intersect-point function) ;; (function vector touching-prims-entry collide-shape touching-shapes-entry vector) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; collide-shape ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern find-ground-point function) ;; (function control-info vector float float vector) +;; (define-extern collide-shape-moving-angle-set! function) ;; (function collide-shape-moving vector vector none) +;; (define-extern cshape-reaction-update-state function) ;; (function control-info collide-query vector none) +;; (define-extern cshape-reaction-default function) ;; (function control-info collide-query vector vector collide-status) +;; (define-extern cshape-reaction-just-move function) ;; (function control-info collide-query vector collide-status) +;; (define-extern collide-shape-draw-debug-marks function) ;; (function none) +;; (define-extern *col-timer* object) ;; stopwatch +;; (define-extern *frame-timer* object) ;; stopwatch +;; (define-extern *col-timer-enable* object) ;; symbol +;; (define-extern debug-report-col-stats function) ;; (function int) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; collide-shape-rider ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; collide ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *collide-vif0-init* array) ;; (array uint32) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; collide-planes ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern collide-planes-intersect function) +;; (define-extern collide-planes-test0 function) +;; (define-extern collide-planes-test1 function) +;; (define-extern collide-planes function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; spatial-hash ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype grid-hash-work (basic) + ((result-qwords UNKNOWN 4 :offset-assert 16) + (result-words uint8 :dynamic :offset-assert 16) ;; guessed by decompiler + (result-bits uint8 :dynamic :offset-assert 16) ;; guessed by decompiler + (object-id int32 :offset-assert 80) + (temp-box-min vector :inline :offset-assert 96) + (temp-box-max vector :inline :offset-assert 112) + (visit-count int32 :offset-assert 128) + (temp-time uint32 :offset-assert 132) + (queue-object-time uint32 :offset-assert 136) + (make-hash-time uint32 :offset-assert 140) + (search-time uint32 :offset-assert 144) + (add-object-time uint32 :offset-assert 148) + ) + :method-count-assert 9 + :size-assert #x98 + :flag-assert #x900000098 + ) +|# + +;; (define-extern *grid-hash-work* grid-hash-work) ;; grid-hash-work +;; (define-extern validate-bucket-bits function) ;; (function grid-hash (pointer grid-hash-word) symbol) +;; (define-extern draw-grid function) ;; (function vector vector (pointer int8) rgba none) +;; (define-extern draw-sphere-box function) ;; (function sphere rgba none) +;; (define-extern draw-line-sphere function) ;; (function vector vector float rgba none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; actor-hash ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype actor-cshape-ptr (structure) + ((cshape collide-shape :offset-assert 0) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype actor-hash-bucket (structure) + ((length int16 :offset-assert 0) + (max-length int16 :offset-assert 2) + (data (inline-array actor-cshape-ptr) :offset-assert 4) ;; guessed by decompiler + ) + :method-count-assert 10 + :size-assert #x8 + :flag-assert #xa00000008 + (:methods + (actor-hash-bucket-method-9 () none) ;; 9 ;; (add-actor-cshape (_type_ collide-shape) none) + ) + ) +|# + +#| +(deftype actor-hash-buckets (structure) + ((hash spatial-hash :offset-assert 0) ;; guessed by decompiler + (list engine :offset-assert 4) ;; guessed by decompiler + (data actor-hash-bucket 4 :offset-assert 8) ;; guessed by decompiler + (tpos vector :inline :offset-assert 80) + ) + :method-count-assert 10 + :size-assert #x60 + :flag-assert #xa00000060 + (:methods + (actor-hash-buckets-method-9 () none) ;; 9 ;; (hash-actors (_type_) none) + ) + ) +|# + +;; (define-extern *actor-hash* object) ;; spatial-hash +;; (define-extern *actor-hash-buckets* object) ;; actor-hash-buckets +;; (define-extern update-actor-hash function) ;; (function none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; merc-death ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *merc-death-globals* object) ;; vector +;; (define-extern birth-func-death-sparks function) ;; (function none) +;; (define-extern death-seed death-info) ;; death-info +;; (define-extern start-seed-effect function) ;; (function process-drawable vector cspace none) +;; (define-extern death-default death-info) ;; death-info +;; (define-extern death-warp-in death-info) ;; death-info +;; (define-extern death-warp-out death-info) ;; death-info +;; (define-extern sparticle-texture-glow-soft function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern merc-death-spawn function) ;; (function int vector vector none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; water-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype water-control (basic) + ((flags water-flag :offset-assert 4) + (process target :offset-assert 8) ;; guessed by decompiler + (joint-index int32 :offset-assert 12) + (top-y-offset float :offset-assert 16) + (attack-id uint32 :offset-assert 20) + (enter-water-time uint64 :offset-assert 24) ;; time-frame + (wade-time uint64 :offset-assert 32) ;; time-frame + (on-water-time uint64 :offset-assert 40) ;; time-frame + (enter-swim-time uint64 :offset-assert 48) ;; time-frame + (swim-time uint64 :offset-assert 56) ;; time-frame + (base-height meters :offset-assert 64) + (wade-height meters :offset-assert 68) + (swim-height meters :offset-assert 72) + (surface-height meters :offset-assert 76) + (bottom-height meters :offset-assert 80) + (collide-height meters :offset-assert 84) + (height meters :offset-assert 88) + (height-offset float 4 :offset-assert 92) ;; guessed by decompiler + (base-ocean-offset meters :offset-assert 92) + (real-ocean-offset meters :offset-assert 92) + (ocean-offset meters :offset-assert 96) + (bob-offset meters :offset-assert 100) + (align-offset meters :offset-assert 104) + (swim-depth meters :offset-assert 108) + (bob smush-control :inline :offset-assert 112) + (ripple uint64 :offset-assert 144) ;; handle + (ripple-size meters :offset-assert 152) + (wake-size meters :offset-assert 156) + (bottom vector 2 :offset-assert 160) ;; guessed by decompiler + (top vector 2 :offset-assert 192) ;; guessed by decompiler + (enter-water-pos vector :inline :offset-assert 224) + (drip-old-pos vector :inline :offset-assert 240) + (drip-joint-index int32 :offset-assert 256) + (drip-wetness float :offset-assert 260) + (drip-time uint64 :offset-assert 264) ;; time-frame + (drip-speed float :offset-assert 272) + (drip-height meters :offset-assert 276) + (drip-mult float :offset-assert 280) + (distort-time uint64 :offset-assert 288) ;; time-frame + (enter-water-sound uint16 :offset-assert 296) ;; sound-name + (normal vector :inline :offset-assert 304) + ) + :method-count-assert 18 + :size-assert #x140 + :flag-assert #x1200000140 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type process int float float float) _type_) + (water-control-method-9 () none) ;; 9 ;; (water-control-method-9 (_type_) none) + (water-control-method-10 () none) ;; 10 ;; (water-control-method-10 (_type_) none) + (water-control-method-11 () none) ;; 11 ;; (start-bobbing! (_type_ float int int) none) + (water-control-method-12 () none) ;; 12 ;; (distance-from-surface (_type_) float) + (water-control-method-13 () none) ;; 13 ;; (spawn-ripples (_type_ float vector int vector symbol) none) + (water-control-method-14 () none) ;; 14 ;; (display-water-marks? (_type_) symbol) + (water-control-method-15 () none) ;; 15 ;; (enter-water (_type_) none) + (water-control-method-16 () none) ;; 16 ;; (water-control-method-16 (_type_) none) + (water-control-method-17 () none) ;; 17 ;; (water-control-method-17 (_type_) none) + ) + ) +|# + +#| +(deftype water-vol (process-hidden) + () + :method-count-assert 16 + :size-assert #x90 + :flag-assert #x1000000090 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; camera ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern cam-slave-get-vector-with-offset (function entity-actor vector symbol symbol)) +(define-extern cam-slave-get-flags (function entity symbol uint)) +(define-extern cam-slave-get-float (function entity symbol float float)) +(define-extern cam-slave-get-fov (function entity float)) +(define-extern cam-slave-get-intro-step (function entity float)) +(define-extern cam-slave-get-interp-time (function entity float)) +(define-extern cam-slave-get-rot (function entity-actor matrix matrix)) +(define-extern cam-state-from-entity (function entity (state camera-slave))) +(define-extern parameter-ease-none (function object object)) +(define-extern parameter-ease-clamp (function float float)) +(define-extern parameter-ease-lerp-clamp (function float float)) +(define-extern parameter-ease-sqrt-clamp (function float float)) +(define-extern fourth-power (function float float)) +(define-extern third-power (function float float)) +(define-extern parameter-ease-sqr-clamp (function float float)) +(define-extern parameter-ease-cube-clamp (function float float)) +(define-extern parameter-ease-sin-clamp (function float float)) +(define-extern *cam-res-string* string) +(define-extern cam-slave-init-vars (function none :behavior camera-slave)) +(define-extern cam-slave-go (function (state camera-slave) none :behavior camera-slave)) +(define-extern cam-slave-init (function (state camera-slave) entity none :behavior camera-slave)) +(define-extern cam-standard-event-handler (function process int symbol event-message-block object :behavior camera-slave)) +(define-extern cam-curve-pos (function vector vector curve symbol vector :behavior camera-slave)) +(define-extern cam-curve-setup (function vector none :behavior camera-slave)) +(define-extern cam-calc-follow! (function cam-rotation-tracker vector symbol vector)) +(define-extern mat-remove-z-rot (function matrix vector matrix)) +(define-extern slave-matrix-blend-2 (function matrix cam-slave-options-u32 vector matrix matrix)) +(define-extern vector-into-frustum-nosmooth! (function matrix vector float vector)) +(define-extern slave-set-rotation! (function cam-rotation-tracker vector cam-slave-options-u32 float symbol none)) +(define-extern v-slrp2! (function vector vector vector float vector float vector)) +(define-extern v-slrp3! (function vector vector vector vector float vector)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; cam-interface ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern position-in-front-of-camera! (function vector float float vector)) +(define-extern position-in-front-of-screen! (function vector float vector vector)) +(define-extern matrix-local->world (function symbol symbol matrix)) +(define-extern matrix-world->local (function symbol object matrix)) +(define-extern *camera-dummy-vector* vector) +(define-extern *camera-dummy-velocity* vector) +(define-extern camera-pos (function vector)) +(define-extern camera-vel (function vector)) +(define-extern math-camera-pos (function vector)) +(define-extern math-camera-nearest-dist-sq (function vector float)) +(define-extern math-camera-nearest (function vector math-camera)) +(define-extern math-camera-nearest-matrix (function vector matrix)) +(define-extern math-camera-nearest-dist (function vector float)) +(define-extern camera-matrix (function matrix)) +(define-extern math-camera-matrix (function matrix)) +(define-extern camera-angle (function float)) +(define-extern camera-teleport-to-entity (function entity-actor symbol :behavior process)) +(define-extern camera-teleport-to-entity-named (function string none)) +(define-extern camera-teleport-to-location (function float float float none)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; cam-master ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern reset-follow function) ;; (function symbol object :behavior camera-master) +;; (define-extern reset-target-tracking function) ;; (function object :behavior camera-master) +;; (define-extern master-track-target function) ;; (function object :behavior camera-master) +;; (define-extern setup-slave-for-hopefull function) ;; (function camera-slave none) +;; (define-extern master-is-hopeful-better? function) ;; (function camera-slave camera-slave symbol :behavior camera-master) +;; (define-extern master-choose-entity function) ;; (function cam-setting-data symbol :behavior camera-master) +;; (define-extern cam-master-set-entity function) ;; (function cam-setting-data none) +;; (define-extern cam-master-activate-slave function) ;; (function symbol none) +;; (define-extern cam-master-active state) ;; (state camera-master) +;; (define-extern cam-master-init function) ;; (function none :behavior camera-master) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; cam-combiner ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern cam-helper-temp (function (pointer camera-slave) (pointer camera-slave) float matrix :behavior camera-combiner)) +;; (define-extern cam-combiner-active state) ;; (state camera-combiner) +(define-extern cam-combiner-init (function none :behavior camera-combiner)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; cam-update ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern plane-from-points function) ;; (function (inline-array plane) vector vector vector int float) +;; (define-extern set-point function) ;; (function vector float float float float) +;; (define-extern update-view-planes function) ;; (function math-camera (inline-array plane) float matrix float) +;; (define-extern *update-leaf-when-outside-bsp* object) ;; symbol +;; (define-extern update-visible function) ;; (function math-camera symbol) +;; (define-extern *save-camera-inv-rot* object) ;; matrix +;; (define-extern move-camera-from-pad function) ;; (function math-camera math-camera) +;; (define-extern external-cam-reset! function) ;; (function none) +;; (define-extern *start-timer* object) ;; int +;; (define-extern *timer-value* object) ;; int +;; (define-extern *start-pos* object) ;; vector +;; (define-extern update-camera function) ;; (function symbol) +;; (define-extern move-level-by-name function) ;; (function symbol float float float vector) +;; (define-extern execute-cam-post-hook-engine function) ;; (function int) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; vol-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype plane-volume (structure) + ((volume-type symbol :offset-assert 0) ;; guessed by decompiler + (point-count int16 :offset-assert 4) + (normal-count int16 :offset-assert 6) + (first-point vector :offset-assert 8) ;; (pointer vector) + (first-normal vector :offset-assert 12) ;; (pointer vector) + (num-planes int32 :offset-assert 16) + (plane (inline-array plane) :offset-assert 20) ;; guessed by decompiler + ) + :method-count-assert 12 + :size-assert #x18 + :flag-assert #xc00000018 + (:methods + (plane-volume-method-9 () none) ;; 9 ;; (plane-volume-method-9 (_type_ symbol vector-array vector-array) plane-volume) + (plane-volume-method-10 () none) ;; 10 ;; (debug-draw (_type_) none) + (plane-volume-method-11 () none) ;; 11 ;; (point-in-vol? (_type_ vector float) symbol) + ) + ) +|# + +#| +(deftype vol-control (basic) + ((flags vol-flags :offset-assert 4) ;; guessed by decompiler + (process process-drawable :offset-assert 8) ;; guessed by decompiler + (pos-vol-count int32 :offset-assert 12) + (pos-vol plane-volume 32 :offset-assert 16) ;; guessed by decompiler + (neg-vol-count int32 :offset-assert 784) + (neg-vol plane-volume 32 :offset-assert 788) ;; guessed by decompiler + (debug-point vector-array :offset-assert 1556) ;; guessed by decompiler + (debug-normal vector-array :offset-assert 1560) ;; guessed by decompiler + ) + :method-count-assert 12 + :size-assert #x61c + :flag-assert #xc0000061c + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type process-drawable) _type_) + (vol-control-method-9 () none) ;; 9 ;; (debug-draw (_type_) none) + (vol-control-method-10 () none) ;; 10 ;; (vol-control-method-10 (_type_ plane) symbol) + (vol-control-method-11 () none) ;; 11 ;; (should-display? (_type_) symbol) + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; cam-layout ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype cam-layout-bank (basic) + ((spline-t float :offset-assert 4) + (spline-step float :offset-assert 8) + (intro-t float :offset-assert 12) + (intro-step float :offset-assert 16) + (debug-t float :offset-assert 20) + (debug-step float :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype clm-basic (basic) + () + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype clm-item-action (structure) + ((button uint64 :offset-assert 0) ;; pad-buttons-u64 + (options uint64 :offset-assert 8) ;; clm-item-action-options + (func symbol :offset-assert 16) ;; guessed by decompiler + (parm0 int32 :offset-assert 20) ;; guessed by decompiler + (parm1 symbol :offset-assert 24) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ;; field parm0 uses ~A with a signed load. field parm1 uses ~A with a signed load. + ) +|# + +#| +(deftype clm-item (clm-basic) + ((description string :offset-assert 4) ;; guessed by decompiler + (button-symbol symbol :offset-assert 8) ;; guessed by decompiler + (action clm-item-action :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype clm-list-item (basic) + ((description string :offset-assert 4) ;; guessed by decompiler + (track-val symbol :offset-assert 8) ;; guessed by decompiler + (val-func symbol :offset-assert 12) ;; guessed by decompiler + (val-parm0 int32 :offset-assert 16) ;; guessed by decompiler + (val-parm1 symbol :offset-assert 20) ;; guessed by decompiler + (actions (array clm-item-action) :offset-assert 24) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ;; field track-val uses ~A with a signed load. field val-parm0 uses ~A with a signed load. field val-parm1 uses ~A with a signed load. + ) +|# + +#| +(deftype clm-list (clm-basic) + ((tracker symbol :offset-assert 4) ;; guessed by decompiler + (cur-list-item int32 :offset-assert 8) + (items (array clm-list-item) :offset-assert 12) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype clm (basic) + ((title string :offset-assert 4) ;; guessed by decompiler + (items (array clm-basic) :offset-assert 8) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype volume-descriptor-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data plane-volume :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype cam-layout (process) + ((cam-entity entity-camera :offset-assert 144) ;; guessed by decompiler + (num-entities int32 :offset-assert 148) + (cur-entity int32 :offset-assert 152) + (num-volumes int32 :offset-assert 156) + (cur-volume int32 :offset-assert 160) + (first-pvol int32 :offset-assert 164) + (first-cutoutvol int32 :offset-assert 168) + (res-key float :offset-assert 172) + ) + :method-count-assert 15 + :size-assert #xb0 + :flag-assert #xf002000b0 + (:methods + (cam-layout-method-9 () none) ;; 9 + (cam-layout-method-10 () none) ;; 10 + (cam-layout-method-11 () none) ;; 11 + (cam-layout-method-12 () none) ;; 12 + (cam-layout-method-13 () none) ;; 13 + (cam-layout-method-14 () none) ;; 14 + ) + (:states + cam-layout-active ;; associated process guessed by decompiler, old: (state cam-layout) + ) + ) +|# + +#| +(deftype interp-test-info (structure) + ((from vector :inline :offset-assert 0) + (to vector :inline :offset-assert 16) + (origin vector :inline :offset-assert 32) + (color vector4w :offset-assert 48) + (axis vector :offset-assert 52) + (disp string :offset-assert 56) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x3c + :flag-assert #x90000003c + ) +|# + +#| +(deftype clmf-cam-flag-toggle-info (structure) + ((key float :offset-assert 0) + (force-on int32 :offset-assert 4) + (force-off int32 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +;; (define-extern *camera-layout-blink* object) ;; symbol +;; (define-extern *CAM_LAYOUT-bank* cam-layout-bank) ;; cam-layout-bank +;; (define-extern *camera-layout-message-ypos* object) ;; int +;; (define-extern *volume-point-current* object) ;; int +;; (define-extern *volume-point* object) ;; vector-array +;; (define-extern *volume-normal-current* object) ;; int +;; (define-extern *volume-normal* object) ;; vector-array +;; (define-extern *volume-descriptor-current* object) ;; int +;; (define-extern *volume-descriptor* object) ;; vol-control +;; (define-extern cam-layout-print function) ;; (function int int string pointer) +;; (define-extern cam-layout-intersect-dist function) ;; (function vector vector vector float) +;; (define-extern cam-layout-entity-volume-info-create function) ;; (function entity-camera symbol symbol :behavior cam-layout) +;; (define-extern cam-layout-entity-volume-info function) ;; (function symbol :behavior cam-layout) +;; (define-extern v-slrp! function) ;; (function vector vector vector float vector) +;; (define-extern interp-test function) ;; (function (function vector vector vector float vector float none) interp-test-info none) +;; (define-extern interp-test-deg function) ;; (function (function vector vector vector vector float none) interp-test-info none) +;; (define-extern cam-layout-entity-info function) ;; (function entity-actor none) +;; (define-extern clmf-button-test function) ;; (function symbol) +;; (define-extern clmf-bna function) ;; (function symbol) +;; (define-extern clmf-implement function) ;; (function symbol) +;; (define-extern clmf-input function) ;; (function vector vector int vector) +;; (define-extern clmf-pos-rot function) ;; (function symbol symbol symbol :behavior cam-layout) +;; (define-extern clmf-next-volume function) ;; (function int symbol :behavior cam-layout) +;; (define-extern clmf-next-vol-dpad function) ;; (function symbol) +;; (define-extern clmf-to-edit-cam function) ;; (function symbol) +;; (define-extern *last-cur-entity* object) ;; int +;; (define-extern clmf-next-entity function) ;; (function int symbol :behavior cam-layout) +;; (define-extern clmf-to-spline-attr function) ;; (function symbol) +;; (define-extern clmf-to-intro-attr function) ;; (function symbol) +;; (define-extern clmf-to-index-attr function) ;; (function symbol) +;; (define-extern clmf-to-focalpull-attr function) ;; (function symbol) +;; (define-extern clmf-to-edit function) ;; (function symbol :behavior cam-layout) +;; (define-extern clmf-to-select function) ;; (function symbol) +;; (define-extern clmf-look-through function) ;; (function symbol :behavior cam-layout) +;; (define-extern fov->maya function) ;; (function float float) +;; (define-extern cam-layout-save-cam-rot function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-cam-trans function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-pivot function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-align function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-interesting function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-fov function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-focalpull function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-flags function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-focalpull-flags function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-campoints-flags function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-introsplinetime function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-introsplineexitval function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-interptime function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-splineoffset function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-spline-follow-dist-offset function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-campointsoffset function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-tiltAdjust function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-stringMinLength function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-stringMaxLength function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-stringMinHeight function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-stringMaxHeight function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-stringCliffHeight function) ;; (function symbol string entity-actor none) +;; (define-extern cam-layout-save-maxAngle function) ;; (function symbol string entity-actor none) +;; (define-extern clmf-save-single function) ;; (function entity-camera symbol symbol file-stream :behavior cam-layout) +;; (define-extern clmf-save-one function) ;; (function symbol symbol :behavior cam-layout) +;; (define-extern clmf-save-all function) ;; (function symbol symbol :behavior cam-layout) +;; (define-extern clmf-cam-flag-toggle function) ;; (function int int symbol :behavior cam-layout) +;; (define-extern clmf-cam-flag function) ;; (function string uint uint symbol :behavior cam-layout) +;; (define-extern clmf-cam-float-adjust function) ;; (function symbol (pointer float) symbol :behavior cam-layout) +;; (define-extern clmf-cam-meters function) ;; (function meters symbol symbol :behavior cam-layout) +;; (define-extern clmf-cam-fov function) ;; (function degrees symbol symbol :behavior cam-layout) +;; (define-extern clmf-cam-deg function) ;; (function degrees symbol symbol :behavior cam-layout) +;; (define-extern clmf-cam-intro-time function) ;; (function float symbol symbol :behavior cam-layout) +;; (define-extern clmf-cam-interp-time function) ;; (function float symbol symbol :behavior cam-layout) +;; (define-extern clmf-cam-float function) ;; (function float symbol symbol :behavior cam-layout) +;; (define-extern clmf-cam-string function) ;; (function string symbol symbol :behavior cam-layout) +;; (define-extern *clm-focalpull-attr* clm) ;; clm +;; (define-extern *clm-index-attr* clm) ;; clm +;; (define-extern *clm-intro-attr* clm) ;; clm +;; (define-extern *clm-spline-attr* clm) ;; clm +;; (define-extern *clm-cam-attr* clm) ;; clm +;; (define-extern *clm-cam-lookthrough* clm) ;; clm +;; (define-extern *clm-edit* clm) ;; clm +;; (define-extern *clm-save-all* clm) ;; clm +;; (define-extern *clm-save-one* clm) ;; clm +;; (define-extern *clm-select* clm) ;; clm +;; (define-extern *clm* object) ;; clm +;; (define-extern cam-layout-do-action function) ;; (function clm-item-action object :behavior cam-layout) +;; (define-extern cam-layout-function-call function) ;; (function symbol string int basic symbol :behavior cam-layout) +;; (define-extern cam-layout-do-menu function) ;; (function clm symbol :behavior cam-layout) +;; (define-extern cam-layout-init function) ;; (function object :behavior cam-layout) +;; (define-extern cam-layout-stop function) ;; (function symbol) +;; (define-extern cam-layout-start function) ;; (function symbol) +;; (define-extern cam-layout-restart function) ;; (function symbol) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; cam-debug ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype cam-dbg-scratch (structure) + ((linevec4w vector :inline :offset-assert 0) + (color vector :inline :offset-assert 32) + (plotvec vector :inline :offset-assert 48) + (linevec vector :inline :offset-assert 80) + (rel-vec vector :inline :offset-assert 112) + (sphere-v-start vector :inline :offset-assert 128) + (sphere-v-end vector :inline :offset-assert 144) + (sphere-v-down vector :inline :offset-assert 160) + (sphere-vec vector :inline :offset-assert 176) + (crossvec vector :inline :offset-assert 192) + (bboxvec vector :inline :offset-assert 240) + (fov-vv vector :inline :offset-assert 336) + (fov-src vector :inline :offset-assert 400) + (fov-dest vector :inline :offset-assert 416) + (fov-vert vector :inline :offset-assert 432) + (fov-horz vector :inline :offset-assert 448) + ) + :method-count-assert 9 + :size-assert #x1d0 + :flag-assert #x9000001d0 + ) +|# + +#| +(deftype cam-debug-tri (structure) + ((vertex UNKNOWN 3 :offset-assert 0) + (intersect vector :inline :offset-assert 48) + (color vector4w :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x44 + :flag-assert #x900000044 + ) +|# + +#| +(deftype cam-collision-record (structure) + ((pos vector :inline :offset-assert 0) + (vel vector :inline :offset-assert 16) + (desired-pos vector :inline :offset-assert 32) + (cam-tpos-cur vector :inline :offset-assert 48) + (cam-tpos-old vector :inline :offset-assert 64) + (view-flat vector :inline :offset-assert 80) + (string-min-val vector :inline :offset-assert 96) + (string-max-val vector :inline :offset-assert 112) + (view-off vector :inline :offset-assert 128) + (min-z-override float :offset-assert 144) + (string-push-z float :offset-assert 148) + (view-off-param float :offset-assert 152) + (frame int32 :offset-assert 156) + (iteration int32 :offset-assert 160) + (move-type basic :offset-assert 164) + ) + :method-count-assert 9 + :size-assert #xa8 + :flag-assert #x9000000a8 + ) +|# + +#| +(deftype cam-collision-record-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data UNKNOWN :dynamic :offset-assert 16) + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +;; (define-extern *camera-old-cpu* object) +;; (define-extern *camera-old-vu* object) +;; (define-extern *camera-old-tfrag-bytes* object) +;; (define-extern *camera-old-level* object) +;; (define-extern *camera-old-stat-string-tfrag* object) +;; (define-extern *camera-old-stat-string-tfrag-near* object) +;; (define-extern *camera-old-stat-string-total* object) +;; (define-extern cam-slave-options->string function) ;; (function cam-slave-options object string) +;; (define-extern cam-index-options->string function) ;; (function cam-index-options object string) +;; (define-extern slave-los-state->string function) ;; (function slave-los-state string) +;; (define-extern cam-line-dma function) +;; (define-extern camera-line2d function) +;; (define-extern camera-plot-float-func function) ;; (function float float float float (function float float) vector4w none) +;; (define-extern camera-line-setup function) ;; (function vector4w none) +;; (define-extern camera-line-draw function) ;; (function vector vector none) +;; (define-extern camera-line function) ;; (function vector vector vector4w none) +;; (define-extern camera-line-rel function) ;; (function vector vector vector4w none) +;; (define-extern camera-line-rel-len function) ;; (function vector vector float vector4w none) +;; (define-extern camera-sphere function) +;; (define-extern camera-cross function) ;; (function vector vector vector vector4w meters none) +;; (define-extern camera-bounding-box-draw function) +;; (define-extern *cam-debug-los-tri-current* object) +;; (define-extern *cam-debug-los-tri* object) +;; (define-extern *cam-debug-coll-tri-current* object) +;; (define-extern *cam-debug-coll-tri* object) +;; (define-extern cam-debug-reset-coll-tri function) ;; (function none) +;; (define-extern cam-debug-add-los-tri function) ;; (function (inline-array collide-cache-tri) vector vector none) +;; (define-extern cam-debug-add-coll-tri function) +;; (define-extern cam-debug-draw-tris function) +;; (define-extern camera-fov-draw function) +;; (define-extern camera-fov-frame function) ;; (function matrix vector float float float vector4w symbol) +;; (define-extern debug-euler function) +;; (define-extern bike-cam-limit function) +;; (define-extern camera-slave-debug function) ;; (function camera-slave none) +;; (define-extern master-draw-coordinates function) +;; (define-extern *cam-collision-record-first* object) +;; (define-extern *cam-collision-record-last* object) +;; (define-extern *cam-collision-record-show* object) +;; (define-extern *cam-collision-record* object) +;; (define-extern cam-collision-record-save function) ;; (function vector vector int symbol camera-slave none) +;; (define-extern cam-collision-record-step function) +;; (define-extern cam-collision-record-draw function) +;; (define-extern camera-master-debug function) ;; (function camera-master none) +;; (define-extern debug-set-camera-pos-rot! function) ;; (function vector matrix vector) +;; (define-extern cam-restore function) +;; (define-extern cam-restore-generic-bug function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; cam-start ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern cam-stop function) ;; (function symbol) +;; (define-extern cam-start function) ;; (function symbol none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; cloth-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype stick-constraint (structure) + ((constraint-length-half float :offset-assert 0) + (one-over-two-times-constraint-length float :offset-assert 4) + (constraint-length-sqd float :offset-assert 8) + (particle0 uint16 :offset-assert 12) + (particle1 uint16 :offset-assert 14) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype verlet-particle (structure) + ((pos vector :inline :offset-assert 0) + (prev-pos vector :inline :offset-assert 16) + (mass-scale float :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) +|# + +#| +(deftype disc-constraint (structure) + ((normal vector :inline :offset-assert 0) + (origin vector :inline :offset-assert 16) + (radius float :offset-assert 32) + (start-particle-index int16 :offset-assert 36) + (end-particle-index int16 :offset-assert 38) + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + ) +|# + +#| +(deftype cylinder-constraint (structure) + ((c0 vector :inline :offset-assert 0) + (norm vector :inline :offset-assert 16) + (length float :offset-assert 32) + (radius float :offset-assert 36) + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + ) +|# + +#| +(deftype particle-anchor-point (structure) + ((anchor-pos vector :inline :offset-assert 0) + (particle-index uint16 :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x12 + :flag-assert #x900000012 + ) +|# + +#| +(deftype particle-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data verlet-particle :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype float-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data float :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype stick-constraint-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data stick-constraint :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype collision-sphere-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data sphere :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype collision-disc-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data disc-constraint :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype collision-cylinder-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data cylinder-constraint :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype anchor-point-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data particle-anchor-point :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype verlet-particle-system (cloth-base) + ((particles particle-array :offset-assert 4) ;; guessed by decompiler + (drag float :offset-assert 8) + (accum-force vector :inline :offset-assert 16) + (timestep-frequency int8 :offset-assert 32) + (last-simulate-remaining int8 :offset-assert 33) + (momentum vector :inline :offset-assert 48) + ) + :method-count-assert 16 + :size-assert #x40 + :flag-assert #x1000000040 + (:methods + (verlet-particle-system-method-11 () none) ;; 11 ;; (accumulate-external-forces! (_type_) none) + (verlet-particle-system-method-12 () none) ;; 12 ;; (compute-verlet-step (_type_ float) none) + (verlet-particle-system-method-13 () none) ;; 13 ;; (run-one-iteration (_type_) none) + (verlet-particle-system-method-14 () none) ;; 14 ;; (reset! (_type_) none) + (verlet-particle-system-method-15 () none) ;; 15 ;; (debug-draw (_type_) none) + ) + ) +|# + +#| +(deftype current-position-info (structure) + ((current-vert-index uint16 :offset-assert 0) + (last-2-x-index uint16 :offset-assert 2) + (last-2-y-index uint16 :offset-assert 4) + (last-x-index uint16 :offset-assert 6) + (last-y-index uint16 :offset-assert 8) + (lights vu-lights :inline :offset-assert 16) + (scale vector :inline :offset-assert 128) + (clamp-col vector :inline :offset-assert 144) + (last-normal vector :inline :offset-assert 160) + (face-normal-needs-flip? symbol :offset-assert 176) ;; guessed by decompiler + (cross-index0 int8 :offset-assert 180) + (cross-index1 int8 :offset-assert 181) + (backside-normal vector :inline :offset-assert 192) + ) + :method-count-assert 9 + :size-assert #xd0 + :flag-assert #x9000000d0 + ) +|# + +#| +(deftype cloth-system (verlet-particle-system) + ((particles particle-array :offset-assert 0) ;; guessed by decompiler + (drag float :offset-assert 4) + (accum-force vector :inline :offset-assert 12) + (timestep-frequency int8 :offset-assert 28) + (last-simulate-remaining int8 :offset-assert 29) + (momentum vector :inline :offset-assert 44) + (ground-constraint float :offset-assert 60) + (disc-collision-constraints collision-disc-array :offset-assert 64) ;; guessed by decompiler + (collision-constraints collision-sphere-array :offset-assert 68) ;; guessed by decompiler + (stick-constraints stick-constraint-array :offset-assert 72) ;; guessed by decompiler + (anchor-points anchor-point-array :offset-assert 76) ;; guessed by decompiler + (constraint-strengths int32 3 :offset-assert 80) ;; guessed by decompiler + (num-xy-constraints int16 :offset-assert 92) + (num-diagonal-constraints int16 :offset-assert 94) + (cloth-width int32 :offset-assert 96) + (cloth-height int32 :offset-assert 100) + (strip prim-strip :offset-assert 104) ;; guessed by decompiler + (strip2 prim-strip :offset-assert 108) ;; guessed by decompiler + (strip3 prim-strip :offset-assert 112) ;; guessed by decompiler + (mesh art-cloth-geo :offset-assert 116) ;; guessed by decompiler + (gravity-constant float :offset-assert 120) + (wind-constant float :offset-assert 124) + (flags cloth-flag :offset-assert 132) + (thickness-scalar float :offset-assert 140) + (ball-collision-radius float :offset-assert 144) + (face-normal-scalar float :offset-assert 148) + (reset-count int8 :offset-assert 152) + (num-iterations int8 :offset-assert 153) + (secret-disable uint64 :offset-assert 156) ;; game-secrets + (params cloth-params :offset-assert 164) + ) + :method-count-assert 38 + :size-assert #xac + :flag-assert #x26000000ac + ;; field cloth-flag is likely a value type. + (:methods + (cloth-system-method-16 () none) ;; 16 ;; (initialize-cloth-system! (_type_ cloth-params) none) + (cloth-system-method-17 () none) ;; 17 ;; (debug-draw-spheres (_type_) none) + (cloth-system-method-18 () none) ;; 18 ;; (post-physics-update (_type_) int) + (cloth-system-method-19 () none) ;; 19 ;; (enforce-constraints-1 (_type_) none) + (cloth-system-method-20 () none) ;; 20 ;; (enforce-constraints-2 (_type_) none) + (cloth-system-method-21 () none) ;; 21 ;; (cloth-system-method-21 (_type_) none) + (cloth-system-method-22 () none) ;; 22 ;; (cloth-system-method-22 (_type_) none) + (cloth-system-method-23 () none) ;; 23 ;; (cloth-system-method-23 (_type_) none) + (cloth-system-method-24 () none) ;; 24 ;; (cloth-system-method-24 (_type_) int) + (cloth-system-method-25 () none) ;; 25 ;; (cloth-system-method-25 (_type_) int) + (cloth-system-method-26 () none) ;; 26 ;; (cloth-system-method-26 (_type_) none) + (cloth-system-method-27 () none) ;; 27 ;; (cloth-system-method-27 (_type_ vector int int current-position-info) vector) + (cloth-system-method-28 () none) ;; 28 ;; (cloth-system-method-28 (_type_ int int current-position-info) none) + (cloth-system-method-29 () none) ;; 29 ;; (cloth-system-method-29 (_type_ int int current-position-info int) uint) + (cloth-system-method-30 () none) ;; 30 ;; (cloth-system-method-30 (_type_ int int current-position-info int) none) + (cloth-system-method-31 () none) ;; 31 ;; (cloth-system-method-31 (_type_ current-position-info) none) + (cloth-system-method-32 () none) ;; 32 ;; (cloth-system-method-32 (_type_ vector int int current-position-info) none) + (cloth-system-method-33 () none) ;; 33 ;; (cloth-system-method-33 (_type_ vu-lights) none) + (cloth-system-method-34 () none) ;; 34 ;; (hide! (_type_) none) + (cloth-system-method-35 () none) ;; 35 ;; (reset-locations (_type_) none) + (cloth-system-method-36 () none) ;; 36 ;; (pre-physics-update (_type_) none) + (cloth-system-method-37 () none) ;; 37 ;; (cloth-system-cmd-handler (_type_ pair) none) + ) + ) +|# + +#| +(deftype cloth-on-skeleton (cloth-system) + ((base-transform-index int16 :offset-assert 168) + (owner uint64 :offset-assert 172) ;; handle + (last-owner-pos vector :inline :offset-assert 188) + (last-owner-mat matrix :inline :offset-assert 204) + ) + :method-count-assert 38 + :size-assert #x110 + :flag-assert #x2600000110 + ;; field cloth-flag is likely a value type. + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; cloth ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern get-neighboring-faces function) ;; (function vector4w int int int int int) +;; (define-extern *normal-array* object) ;; (inline-array vector) +;; (define-extern light-vertex function) ;; (function current-position-info vector rgba) +;; (define-extern *once* object) ;; symbol +;; (define-extern *cloth-fade-alpha* object) ;; gs-alpha +;; (define-extern symbol->cloth-flags function) ;; (function symbol cloth-flag) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; process-drawable ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern cspace-by-name (function process-drawable string cspace)) +(define-extern cspace-index-by-name (function process-drawable string int)) +(define-extern vector<-cspace! (function vector cspace vector)) +(define-extern vector<-matrix! (function vector matrix vector)) +(define-extern vector<-cspace+vector! (function vector cspace vector vector)) +(define-extern cspace-children (function process-drawable int pair)) +(define-extern cspace-inspect-tree (function process-drawable cspace int int object process-drawable)) +(define-extern execute-math-engine (function int)) +(define-extern execute-cloth-engine (function int)) +(define-extern draw-joint-axes (function process-drawable none)) +(define-extern draw-root (function process-drawable none)) +(define-extern empty-state (state process)) +(define-extern process-drawable-error-print (function process-drawable string none)) +(define-extern skeleton-group->draw-control (function process-drawable skeleton-group (pointer cspace-array) draw-control)) +(define-extern ja-group-in-array? (function (array int32) art-joint-anim :behavior process-drawable)) +(define-extern ja-done? (function int symbol :behavior process-drawable)) +(define-extern ja-min (function int symbol :behavior process-drawable)) +(define-extern ja-max? (function int symbol :behavior process-drawable)) +(define-extern ja-num-frames (function int int :behavior process-drawable)) +(define-extern ja-frame-num (function int float :behavior process-drawable)) +(define-extern ja-aframe-num (function int float :behavior process-drawable)) +(define-extern ja-aframe (function float int float :behavior process-drawable)) +(define-extern ja-speed (function int float :behavior process-drawable)) +(define-extern ja-step (function int float :behavior process-drawable)) +(define-extern ja-rate (function int float :behavior process-drawable)) +(define-extern ja-linear-vel (function int vector :behavior process-drawable)) +;; (define-extern ja-linear-dist function) +;; (define-extern ja-distance-covered function) +(define-extern ja-channel-set! (function int int :behavior process-drawable)) +(define-extern ja-channel-push! (function int time-frame int :behavior process-drawable)) +(define-extern ja-channel-float! (function art-joint-anim float float float joint-control-channel :behavior process-drawable)) +(define-extern joint-control-reset! (function joint-control joint-control-channel none :behavior process-drawable)) +(define-extern ja-group-size (function int :behavior process-drawable)) +(define-extern ja-eval (function int :behavior process-drawable)) +(define-extern ja-blend-eval (function int :behavior process-drawable)) +(define-extern cloth-post (function none :behavior process-drawable)) +(define-extern ja-post (function none :behavior process-drawable)) +(define-extern sleep-code (function symbol :behavior process)) +(define-extern transform-and-sleep (function none :behavior process-drawable)) +(define-extern transform-and-sleep-code (function none :behavior process-drawable)) +(define-extern transform-post (function int :behavior process-drawable)) +(define-extern rider-trans (function none :behavior process-drawable)) +(define-extern rider-post (function none :behavior process-drawable)) +(define-extern pusher-post (function int :behavior process-drawable)) +(define-extern process-drawable-delay-player (function time-frame int :behavior process-drawable)) +(define-extern process-drawable-fuel-cell-handler (function process int symbol event-message-block none :behavior process-drawable)) +(define-extern process-drawable-birth-fuel-cell (function entity vector symbol none :behavior process-drawable)) +(define-extern find-offending-process-focusable (function process-tree attack-info process-focusable :behavior process-drawable)) +(define-extern *valid-con* string) +(define-extern process-drawable-valid? (function process-drawable symbol)) +(define-extern process-drawable-reset-all-cloth (function process-drawable none)) +(define-extern process-drawable-set-riding (function process-drawable symbol none)) +(define-extern process-drawable-set-cloth-ground-height (function process-drawable float none)) +(define-extern process-drawable-set-wind-strength (function process-drawable float none)) +(define-extern process-drawable-show-all-cloth (function process-drawable symbol none)) +(define-extern process-drawable-slow-mo-cloth (function process-drawable symbol none)) +(define-extern process-drawable-cloth-command (function process-drawable pair none)) +;; (define-extern process-drawable-local-transq-for-joint! function) +;; (define-extern process-drawable-local-trans-for-joint! function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; curves ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defenum loop-behavior + :type uint64 + :bitfield #f + (wrap) + (clamp) + (b2) + (use-default) + ) + +(deftype float-pair (structure) + "Two floats. Specifies one point on a piecewise linear curve." + ((first float :offset-assert 0) + (second float :offset-assert 4) + (x float :offset 0) + (y float :offset 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype float-pair-array (inline-array-class) + "Array of points used to make a piecewise linear curve." + ((data float-pair :dynamic :inline :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + +(deftype curve2d (basic) + "Interface for evaluating a 2d curve. + The input is a float (x-position) and the output is a float (y-position). + The curve is over (0, 1). Values outside of the range are either clamped + or wrapped depending on the loop-behavior flag." + () + :method-count-assert 10 + :size-assert #x4 + :flag-assert #xa00000004 + (:methods + (evaluate "Compute value of curve at the given position." (_type_ float loop-behavior) float) ;; 9 + ) + ) + +(deftype curve-color (basic) + "Interface for evaluating a color curve. The input is a float, representing + progress through the curve, and the result is a floating point rgba color." + () + :method-count-assert 10 + :size-assert #x4 + :flag-assert #xa00000004 + (:methods + (evaluate "Compute value of curve at the given position." (_type_ float rgbaf loop-behavior) rgbaf) ;; 9 + ) + ) + +(deftype curve2d-piecewise (curve2d) + "Implementation of 2d-curve for a piecewise linear curve. + Not particularly efficient - each evaluation needs to check each point." + ((pts float-pair-array :offset-assert 4) ;; guessed by decompiler + (default-loop-behavior loop-behavior :offset-assert 8) ;; loop-behavior + ) + :method-count-assert 12 + :size-assert #x10 + :flag-assert #xc00000010 + (:methods + (allocate! "Allocate memory for points." (_type_ int symbol symbol) none) ;; 10 + (curve2d-piecewise-method-11 (_type_) none) ;; 11 + ) + ) + +(deftype curve2d-fast (curve2d) + "Implementation of 2d piecewise linear curve which tries to be faster. + While it is faster, it places the huge restriction that you can only have 4 points. + Note that the xs should be negative here." + ((xs vector :inline :offset-assert 16) + (ys vector :inline :offset-assert 32) + (one-over-x-deltas vector :inline :offset-assert 48) + ) + :method-count-assert 10 + :size-assert #x40 + :flag-assert #xa00000040 + ) + +(deftype curve-color-fast (curve-color) + "Implementation of color curve which tries to be faster. + While it is faster, it again has the restriction that you only + get 4 piecewise sections." + ((xs vector :inline :offset-assert 16) + (ys vector 4 :inline :offset-assert 32) ;; guessed by decompiler + (one-over-x-deltas vector :inline :offset-assert 96) + ) + :method-count-assert 10 + :size-assert #x70 + :flag-assert #xa00000070 + ) + +(deftype color-pair (structure) + "Single section of a piecewise linear color curve. + Unlike the fast version, this stores x values exactly like you'd expect." + ((first float :offset-assert 0) + (second rgbaf :inline :offset-assert 16) + (x float :offset 0) + (y rgbaf :inline :offset 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype color-pair-array (inline-array-class) + "Array of points for piecewise linear color curve." + ((data color-pair :dynamic :inline :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + +(deftype curve-color-piecewise (curve-color) + ((pts color-pair-array :offset-assert 4) ;; guessed by decompiler + (default-loop-behavior loop-behavior :offset-assert 8) ;; loop-behavior + ) + :method-count-assert 11 + :size-assert #x10 + :flag-assert #xb00000010 + (:methods + (allocate! "Allocate memory for points." (_type_ int symbol symbol) none) ;; 10 + ) + ) + +(define-extern rgbaf-lerp! "Lerp all four components of rgba." (function rgbaf rgbaf rgbaf float rgbaf)) +(define-extern evaluate-curve-fast "Evaluate a curve2d-fast at the given value." (function curve2d-fast float float)) +(define-extern evaluate-color-curve-fast "Evaluate a color-curve-fast at the given value." (function curve-color-fast float rgbaf rgbaf)) +(define-extern rgba<-rgbaf "Convert rgbaf to rgba. Seems like the input rgba's value is not used in any way." (function rgba rgbaf rgba)) +(define-extern *curve-unity* curve2d-fast) +(define-extern *curve-linear-up* curve2d-fast) +(define-extern *curve-linear-down* curve2d-fast) +(define-extern *curve-linear-up-hold* curve2d-piecewise) +(define-extern *curve-linear-up-down* curve2d-fast) +(define-extern *trail-color-curve-white* curve-color-fast) +(define-extern particle-color-curve-white* curve-color-fast) +(define-extern *trail-color-curve-red* curve-color-fast) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ambient ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern can-display-query? function) ;; (function process string float symbol) +;; (define-extern talker-surpress! function) ;; (function int) +;; (define-extern talker-displayed? function) ;; (function symbol) +;; (define-extern kill-current-talker function) ;; (function pair pair symbol none) +;; (define-extern string->talker-speech function) ;; (function string talker-speech-class) +;; (define-extern talker-spawn-func function) ;; (function talker-speech-class process-tree vector region sound-id) +;; (define-extern talker-init function) ;; (function talker-speech-class vector region none :behavior talker) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern *test-speech-info* speech-info) +(define-extern speech-type->string (function speech-type string)) +(define-extern gui-status->string (function gui-status string)) +(define-extern *speech-control* speech-control) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; region ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern region-tree-execute function) ;; (function symbol vector vector none) +;; (define-extern region-execute function) ;; (function none) +;; (define-extern region-prim-lookup-by-id function) ;; (function int symbol int drawable-region-prim) +;; (define-extern region-lookup-by-id function) ;; (function int region) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; script ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern command-get-int function) ;; (function object int int) +;; (define-extern command-get-float function) ;; (function object float float) +;; (define-extern command-get-time function) ;; (function object int time-frame) +;; (define-extern command-get-param function) ;; (function object object object) +;; (define-extern command-get-quoted-param function) ;; (function object object object) +;; (define-extern command-get-process function) ;; (function object process process) +;; (define-extern command-get-entity function) ;; (function object entity entity) +;; (define-extern command-get-trans function) ;; (function object vector vector) +;; (define-extern key-assoc function) ;; (function object pair vector4w pair) +;; (define-extern *script-form* object) ;; (inline-array script-form) +;; (define-extern level-from-heap function) ;; (function int level) +;; (define-extern *syntax-context* object) ;; script-context +;; (define-extern *script-context* object) ;; script-context + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; generic-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype target-start (process-hidden) + () + :method-count-assert 16 + :size-assert #x90 + :flag-assert #x1000000090 + ) +|# + +#| +(deftype camera-start (process-hidden) + () + :method-count-assert 16 + :size-assert #x90 + :flag-assert #x1000000090 + ) +|# + +#| +(deftype cam-slope (process-hidden) + () + :method-count-assert 16 + :size-assert #x90 + :flag-assert #x1000000090 + ) +|# + +;; simple-prim is already defined! + +#| +(deftype simple-prim-zbuf-mask (simple-prim) + () + :method-count-assert 56 + :size-assert #xfc + :flag-assert #x38007000fc + ) +|# + +#| +(deftype simple-prim-particle-binding (simple-prim) + ((color rgba :offset-assert 252) ;; guessed by decompiler + (lifetime uint64 :offset-assert 256) ;; time-frame + (state-time uint64 :offset-assert 240) ;; time-frame + ) + :method-count-assert 58 + :size-assert #x110 + :flag-assert #x3a00800110 + (:methods + (simple-prim-particle-binding-method-57 () none) ;; 57 + ) + (:state-methods + die ;; 56 + active ;; 50 + ) + ) +|# + +#| +(deftype part-controller (process) + ((actor-group (pointer actor-group) :offset-assert 140) ;; guessed by decompiler + (actor-group-count int32 :offset-assert 144) + (spawn-delay uint64 :offset-assert 148) ;; time-frame + (current-part-index uint16 :offset-assert 156) + (state-time uint64 :offset-assert 164) ;; time-frame + (next-reset-time uint64 :offset-assert 172) ;; time-frame + (reset-interval-min uint64 :offset-assert 180) ;; time-frame + (reset-interval-max uint64 :offset-assert 188) ;; time-frame + (particle-launchers (array (pointer sparticle-launch-group)) :offset-assert 196) ;; guessed by decompiler + (spawn-sound sound-info :offset-assert 200) ;; sound-name + ) + :method-count-assert 16 + :size-assert #xd0 + :flag-assert #x10004000d0 + (:methods + (part-controller-method-9 () none) ;; 9 + (part-controller-method-10 () none) ;; 10 + (part-controller-method-11 () none) ;; 11 + (part-controller-method-12 () none) ;; 12 + (part-controller-method-13 () none) ;; 13 + (part-controller-method-14 () none) ;; 14 ;; (active () _type_ :state) + ) + (:state-methods + active ;; 15 + ) + ) +|# + +#| +(deftype sound-on-path (process-drawable) + ((flags uint8 :offset-assert 248) + (spawn-sound uint128 :offset-assert 256) ;; sound-name + (loop-sound uint32 :offset-assert 276) + (amb-sound ambient-sound :offset-assert 280) ;; guessed by decompiler + (reverb-value float :offset-assert 284) + (reverb-radius float :offset-assert 288) + (reverb-radius-y float :offset-assert 292) + (reverb-mode int32 :offset-assert 296) + ) + :method-count-assert 53 + :size-assert #x12c + :flag-assert #x3500a0012c + (:state-methods + die ;; 51 + no-play ;; 52 + active ;; 50 + ) + ) +|# + +#| +(deftype crate (process-hidden) + () + :method-count-assert 16 + :size-assert #x90 + :flag-assert #x1000000090 + ) +|# + +;; (define-extern *part-tracker-params-default* object) ;; part-tracker-init-params +;; (define-extern *part-tracker-subsampler-params-default* object) ;; part-tracker-subsampler-init-params +;; (define-extern entity-lookup-part-group function) ;; (function entity-actor (pointer string) symbol (pointer sparticle-launch-group)) +;; (define-extern clone-anim-once function) ;; (function handle symbol string none :behavior process-drawable) +;; (define-extern clone-anim function) ;; (function handle symbol string none :behavior process-drawable) +;; (define-extern manipy-post function) ;; (function none :behavior manipy) +;; (define-extern manipy-init function) ;; (function vector entity-actor skeleton-group vector manipy-options none :behavior manipy) +;; (define-extern part-tracker-init-base function) ;; (function sparticle-launch-group time-frame (function part-tracker vector) uint process-drawable object none :behavior part-tracker) +;; (define-extern part-tracker-subsampler-init function) ;; (function part-tracker-subsampler-init-params object :behavior part-tracker-subsampler) +;; (define-extern part-tracker-init function) ;; (function part-tracker-init-params object :behavior part-tracker) +;; (define-extern part-tracker-track-root function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern lightning-tracker-init function) ;; (function lightning-spec time-frame symbol process-drawable vector vector none :behavior lightning-tracker) +;; (define-extern process-grab? function) ;; (function process symbol symbol :behavior process) +;; (define-extern process-release? function) ;; (function process symbol :behavior process) +;; (define-extern camera-look-at function) ;; (function pair uint process) +;; (define-extern ja-anim-done? function) ;; (function process symbol) +;; (define-extern camera-pov-from function) ;; (function pair uint process) +;; (define-extern touch-tracker-init function) ;; (function vector float time-frame none :behavior touch-tracker) +;; (define-extern process-drawable-random-point! function) ;; (function process-drawable vector vector) +;; (define-extern process-drawable-pair-random-point! function) ;; (function process-drawable process-drawable vector float vector) +;; (define-extern simple-prim-init-by-other function) ;; (function vector vector texture-id object :behavior simple-prim) +;; (define-extern birth-func-simple-prim function) ;; (function int sparticle-cpuinfo sparticle-launchinfo none) +;; (define-extern external-camera-controller-init-by-other function) ;; (function entity time-frame symbol object :behavior external-camera-controller) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lightning ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype lightning-globals (structure) + ((gcf-buf uint16 :offset-assert 0) + (vtx-buf uint16 :offset-assert 2) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +;; (define-extern *lightning-spec-id-table* object) ;; (array lightning-spec) +;; (define-extern *lightning-gcf* object) ;; gcf-control +;; (define-extern lightning-fractal-gen function) ;; (function (inline-array vector) int int float lightning-spec none) +;; (define-extern lightning-uniform-gen function) ;; (function (inline-array vector) int int float lightning-spec none) +;; (define-extern lightning-trail-uniform-gen function) ;; (function (inline-array vector) (inline-array vector) float int symbol) +;; (define-extern lightning-trail-fractal-gen function) ;; (function (inline-array vector) (inline-array vector) int int float lightning-spec none) +;; (define-extern gs-packed-rgba-lerp! function) ;; (function gs-packed-rgba rgba rgba float gs-packed-rgba) +;; (define-extern lightning-fade function) ;; (function lightning-control int :behavior process) +;; (define-extern lightning-update function) ;; (function lightning-control symbol) +;; (define-extern lightning-draw function) ;; (function dma-buffer lightning-control lightning-globals symbol) +;; (define-extern lightning-start function) ;; (function float float (pointer process)) +;; (define-extern *lightning-globals* object) ;; lightning-globals +;; (define-extern *lightning* object) ;; symbol +;; (define-extern lightning-draw-all function) ;; (function none) +;; (define-extern unlink-lightning-spec-by-heap function) ;; (function kheap none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; light-trails-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype color-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data rgbaf :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype light-trail-composition (structure) + ((color-mode uint64 :offset-assert 0) + (color-curve curve-color-piecewise :offset-assert 8) ;; guessed by decompiler + (color-repeat-dist float :offset-assert 12) + (alpha-1-mode uint64 :offset-assert 16) + (alpha-2-mode uint64 :offset-assert 24) + (base-alpha float :offset-assert 32) + (alpha-curve-1 curve2d-piecewise :offset-assert 36) ;; guessed by decompiler + (alpha-curve-2 curve2d-piecewise :offset-assert 40) ;; guessed by decompiler + (alpha-repeat-dist float :offset-assert 44) + (width-mode uint64 :offset-assert 48) + (base-width float :offset-assert 56) + (width-curve curve2d-piecewise :offset-assert 60) ;; guessed by decompiler + (width-repeat-dist float :offset-assert 64) + (uv-mode uint64 :offset-assert 72) + (uv-repeat-dist float :offset-assert 80) + (max-age uint64 :offset-assert 88) ;; time-frame + (tex-id texture-id :offset-assert 96) ;; guessed by decompiler + (tex-name basic :offset-assert 100) + (lie-mode uint64 :offset-assert 104) ;; lie-mode + (lie-vector vector :inline :offset-assert 112) + (zbuffer? symbol :offset-assert 128) ;; guessed by decompiler + (use-tape-mode? symbol :offset-assert 132) ;; guessed by decompiler + (blend-mode uint64 :offset-assert 136) + (frame-stagger uint8 :offset-assert 144) + ) + :method-count-assert 9 + :size-assert #x91 + :flag-assert #x900000091 + ) +|# + +#| +(deftype light-trail-breadcrumb (structure) + ((pos vector :inline :offset-assert 0) + (birth-time uint32 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype breadcrumb-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data light-trail-breadcrumb :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype light-trail (prim-client) + ((crumb-array (array uint8) :offset-assert 4) ;; guessed by decompiler + (crumb-size uint8 :offset-assert 8) + (crumb-count int16 :offset-assert 10) + (max-crumb-count int16 :offset-assert 12) + (appearance light-trail-composition :offset-assert 16) + (start-marker uint64 :offset-assert 24) + (end-marker uint64 :offset-assert 32) + (decision uint64 :offset-assert 40) ;; light-trail-decision + (total-distance-traveled float :offset-assert 48) + (strip prim-strip :offset-assert 52) ;; guessed by decompiler + (strip2 prim-strip :offset-assert 56) ;; guessed by decompiler + (cache-vector vector 4 :offset-assert 64) ;; guessed by decompiler + ) + :method-count-assert 23 + :size-assert #x80 + :flag-assert #x1700000080 + (:methods + (light-trail-method-10 () none) ;; 10 ;; (reset! (_type_) none) + (light-trail-method-11 () none) ;; 11 ;; (add-crumb! (_type_ vector time-frame) int) + (light-trail-method-12 () none) ;; 12 ;; (build-prim-strip! (_type_) none) + (light-trail-method-13 () none) ;; 13 ;; (common-trans! (_type_) int) + (light-trail-method-14 () none) ;; 14 ;; (expire-old-points! (_type_) none) + (light-trail-method-15 () none) ;; 15 ;; (light-trail-method-15 (_type_) none) + (light-trail-method-16 () none) ;; 16 ;; (add-vert-to-prim-strip! (_type_ prim-strip vector rgba float float) none) + (light-trail-method-17 () none) ;; 17 ;; (add-tri-pair-to-prim! (_type_ vector rgba float vector float) symbol) + (light-trail-method-18 () none) ;; 18 ;; (calc-vertex-pos! (_type_ light-trail-breadcrumb int vector vector) none) + (light-trail-method-19 () none) ;; 19 ;; (crumb-age-out-callback (_type_ float int) none) + (light-trail-method-20 () none) ;; 20 ;; (reset-crumbs! (_type_) none) + (light-trail-method-21 () none) ;; 21 ;; (replace-last-crumb! (_type_ vector) none) + (light-trail-method-22 () none) ;; 22 + ) + ) +|# + +#| +(deftype weapon-trail-crumb (light-trail-breadcrumb) + ((offset vector :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype weapon-trail (light-trail) + () + :method-count-assert 25 + :size-assert #x80 + :flag-assert #x1900000080 + (:methods + (weapon-trail-method-23 () none) ;; 23 ;; (weapon-trail-method-23 (_type_ vector vector) none) + (weapon-trail-method-24 () none) ;; 24 + ) + ) +|# + +#| +(deftype tread-trail-crumb (light-trail-breadcrumb) + ((normal vector :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype tread-trail (light-trail) + () + :method-count-assert 25 + :size-assert #x80 + :flag-assert #x1900000080 + (:methods + (tread-trail-method-23 () none) ;; 23 ;; (tread-trail-method-23 (_type_ vector vector) none) + (tread-trail-method-24 () none) ;; 24 + ) + ) +|# + +#| +(deftype light-trail-tracker-spawn-params (structure) + ((appearance light-trail-composition :offset-assert 0) + (max-num-crumbs int32 :offset-assert 4) + (tracked-obj uint64 :offset-assert 8) ;; handle + (track-immediately? symbol :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) +|# + +#| +(deftype weapon-trail-tracker-spawn-params (light-trail-tracker-spawn-params) + ((joint0 int16 :offset-assert 20) + (joint1 int16 :offset-assert 22) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) +|# + +#| +(deftype light-trail-tracker (process) + ((trail light-trail :offset-assert 144) ;; guessed by decompiler + (tracked-object uint64 :offset-assert 152) ;; handle + (offscreen? symbol :offset-assert 160) ;; guessed by decompiler + (offscreen-start-time uint64 :offset-assert 168) ;; time-frame + (next-line-check-time uint64 :offset-assert 176) ;; time-frame + (last-add-frame-val uint32 :offset-assert 184) + ) + :method-count-assert 22 + :size-assert #xbc + :flag-assert #x16003000bc + (:methods + (light-trail-tracker-method-9 () none) ;; 9 + (light-trail-tracker-method-10 () none) ;; 10 + (light-trail-tracker-method-11 () none) ;; 11 + (light-trail-tracker-method-12 () none) ;; 12 + (light-trail-tracker-method-13 () none) ;; 13 + (light-trail-tracker-method-14 () none) ;; 14 ;; (tracking () _type_ :state) + (light-trail-tracker-method-15 () none) ;; 15 ;; (die () _type_ :state) + (light-trail-tracker-method-16 () none) ;; 16 ;; (get-tracked-object-pos (_type_ process-focusable vector) vector) + (light-trail-tracker-method-17 () none) ;; 17 ;; (should-track? (_type_ process-focusable) symbol) + (light-trail-tracker-method-18 () none) ;; 18 ;; (should-end? (_type_ process-focusable) symbol) + (light-trail-tracker-method-19 () none) ;; 19 ;; (should-draw? (_type_) symbol) + (light-trail-tracker-method-20 () none) ;; 20 ;; (add-crumb! (_type_ vector) none) + (light-trail-tracker-method-21 () none) ;; 21 + ) + ) +|# + +#| +(deftype weapon-trail-tracker (light-trail-tracker) + ((joint0 int16 :offset-assert 188) + (joint1 int16 :offset-assert 190) + (state-time uint64 :offset-assert 192) ;; time-frame + ) + :method-count-assert 23 + :size-assert #xc8 + :flag-assert #x17004000c8 + (:methods + (weapon-trail-tracker-method-22 () none) ;; 22 + ) + ) +|# + +#| +(deftype tread-trail-tracker (light-trail-tracker) + () + :method-count-assert 22 + :size-assert #xbc + :flag-assert #x16003000bc + ) +|# + +#| +(deftype light-trail-tracker-water (light-trail-tracker) + () + :method-count-assert 22 + :size-assert #xbc + :flag-assert #x16003000bc + ) +|# + +#| +(deftype light-trail-tracker-projectile (light-trail-tracker) + ((state-time uint64 :offset-assert 192) ;; time-frame + ) + :method-count-assert 23 + :size-assert #xc8 + :flag-assert #x17004000c8 + (:methods + (light-trail-tracker-projectile-method-22 () none) ;; 22 + ) + ) +|# + +;; (define-extern light-trail-tracker-init-by-other function) ;; (function light-trail-tracker-spawn-params object :behavior light-trail-tracker) +;; (define-extern weapon-trail-tracker-init-by-other function) ;; (function weapon-trail-tracker-spawn-params object :behavior weapon-trail-tracker) +;; (define-extern tread-trail-tracker-init-by-other function) ;; (function light-trail-tracker-spawn-params object :behavior tread-trail-tracker) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lightning-new-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype lightning-appearance (structure) + ((base-alpha float :offset-assert 0) + (width-range-start float :offset-assert 4) + (width-range-end float :offset-assert 8) + (tex-id uint32 :offset-assert 12) + (blend-mode uint64 :offset-assert 16) + (fade-time uint64 :offset-assert 24) ;; time-frame + (regenerate-time-start uint64 :offset-assert 32) ;; time-frame + (regenerate-time-end uint64 :offset-assert 40) ;; time-frame + (alpha-1-curve curve2d-fast :offset-assert 48) ;; guessed by decompiler + (alpha-1-mode uint64 :offset-assert 56) + (alpha-1-repeat-dist float :offset-assert 64) + (alpha-2-curve curve2d-fast :offset-assert 68) ;; guessed by decompiler + (alpha-2-mode uint64 :offset-assert 72) + (alpha-2-repeat-dist float :offset-assert 80) + (width-curve curve2d-fast :offset-assert 84) ;; guessed by decompiler + (width-mode uint64 :offset-assert 88) + (width-repeat-dist float :offset-assert 96) + (uv-repeat-dist float :offset-assert 100) + (uv-shift? symbol :offset-assert 104) ;; guessed by decompiler + (uv-shift-speed uint64 :offset-assert 112) ;; time-frame + (use-sprite-bucket? symbol :offset-assert 120) ;; guessed by decompiler + (use-accurate-interp? symbol :offset-assert 124) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) +|# + +#| +(deftype lightning-span-internal (structure) + ((index int16 :offset-assert 0) + (span-flags uint8 :offset-assert 2) + (num-inner-points int8 :offset-assert 3) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype lightning-span (structure) + ((random-offset-size-start float :offset-assert 0) + (inner-random-offset-size float :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype lightning-spans-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data lightning-span :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype lightning-spans-internal-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data lightning-span-internal :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype tex-u-holder (structure) + ((uu float :offset-assert 0) + (last-dist float :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype lightning-bolt (basic) + ((current-points vector-array :offset-assert 4) ;; guessed by decompiler + (desired-points vector-array :offset-assert 8) ;; guessed by decompiler + (span-pts-start vector-array :offset-assert 12) ;; guessed by decompiler + (spans lightning-spans-array :offset-assert 16) ;; guessed by decompiler + (spans-internal lightning-spans-internal-array :offset-assert 20) ;; guessed by decompiler + (strip1 prim-strip :offset-assert 24) ;; guessed by decompiler + (strip2 prim-strip :offset-assert 28) ;; guessed by decompiler + (inner-point-travel-time uint64 :offset-assert 32) ;; time-frame + (start-fade-time uint64 :offset-assert 40) ;; time-frame + (new-inner-point-generate-time uint64 :offset-assert 48) ;; time-frame + (last-generate-time uint64 :offset-assert 56) ;; time-frame + (base-width float :offset-assert 64) + (current-uv-shift float :offset-assert 68) + (current-fade-scalar float :offset-assert 72) + (fractal-reduction float :offset-assert 76) + (appearance lightning-appearance :offset-assert 80) + (fade-mode uint64 :offset-assert 88) + (generate-mode uint64 :offset-assert 96) + (snap-inner-points? symbol :offset-assert 104) ;; guessed by decompiler + (span-data int8 2 :offset-assert 108) ;; guessed by decompiler + (num-active-spans int8 :offset-assert 108) + (num-spans int8 :offset-assert 109) + (base-color rgba :offset-assert 112) ;; guessed by decompiler + ) + :method-count-assert 23 + :size-assert #x74 + :flag-assert #x1700000074 + (:methods + (lightning-bolt-method-9 () none) ;; 9 ;; (init! (_type_ int int lightning-appearance) none) + (lightning-bolt-method-10 () none) ;; 10 ;; (reset-spans! (_type_) none) + (lightning-bolt-method-11 () none) ;; 11 ;; (lightning-bolt-method-11 (_type_) none) + (lightning-bolt-method-12 () none) ;; 12 ;; (lightning-bolt-method-12 (_type_) none) + (lightning-bolt-method-13 () none) ;; 13 ;; (lightning-bolt-method-13 (_type_ int) none) + (lightning-bolt-method-14 () none) ;; 14 ;; (lightning-bolt-method-14 (_type_) int) + (lightning-bolt-method-15 () none) ;; 15 ;; (lightning-bolt-method-15 (_type_ object int lightning-span-internal) none) + (lightning-bolt-method-16 () none) ;; 16 ;; (lightning-bolt-method-16 (_type_ vector float float vector matrix) none) + (lightning-bolt-method-17 () none) ;; 17 ;; (lightning-bolt-method-17 (_type_ uint float float curve2d-fast float) float) + (lightning-bolt-method-18 () none) ;; 18 ;; (lightning-bolt-method-18 (_type_ prim-strip vector rgba float float) none) + (lightning-bolt-method-19 () none) ;; 19 ;; (lightning-bolt-method-19 (_type_ vector int int matrix float float) none) + (lightning-bolt-method-20 () none) ;; 20 ;; (lightning-bolt-method-20 (_type_ int lightning-span-internal) vector) + (lightning-bolt-method-21 () none) ;; 21 ;; (lightning-bolt-method-21 (_type_ int int float) none) + (lightning-bolt-method-22 () none) ;; 22 ;; (lightning-bolt-method-22 (_type_) none) + ) + ) +|# + +#| +(deftype lightning-new-tracker (process) + ((bolt lightning-bolt :offset-assert 144) ;; guessed by decompiler + (lifetime uint64 :offset-assert 152) ;; time-frame + (state-time uint64 :offset-assert 160) ;; time-frame + ) + :method-count-assert 17 + :size-assert #xa8 + :flag-assert #x11002000a8 + (:methods + (lightning-new-tracker-method-9 () none) ;; 9 + (lightning-new-tracker-method-10 () none) ;; 10 + (lightning-new-tracker-method-11 () none) ;; 11 + (lightning-new-tracker-method-12 () none) ;; 12 + (lightning-new-tracker-method-13 () none) ;; 13 + (lightning-new-tracker-method-14 () none) ;; 14 ;; (active () _type_ :state) + (lightning-new-tracker-method-15 () none) ;; 15 ;; (die () _type_ :state) + (lightning-new-tracker-method-16 () none) ;; 16 + ) + ) +|# + +#| +(deftype lightning-tracker-init-params (structure) + ((appearance lightning-appearance :offset-assert 0) + (start-pt vector :inline :offset-assert 16) + (end-pt vector :inline :offset-assert 32) + (lifetime uint64 :offset-assert 48) ;; time-frame + (num-inner-points int8 :offset-assert 56) + (inner-random-offset-size float :offset-assert 60) + (random-offset-size-start float :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x44 + :flag-assert #x900000044 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; particle-curves ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype particle-curve-settings (structure) + ((color-start basic :offset-assert 0) + (alpha-start basic :offset-assert 4) + (scale-x-start basic :offset-assert 8) + (scale-y-start basic :offset-assert 12) + (r-scalar basic :offset-assert 16) + (g-scalar basic :offset-assert 20) + (b-scalar basic :offset-assert 24) + (a-scalar basic :offset-assert 28) + (scale-x-scalar basic :offset-assert 32) + (scale-y-scalar basic :offset-assert 36) + (lifetime-base uint64 :offset-assert 40) ;; time-frame + (lifetime-offset uint64 :offset-assert 48) ;; time-frame + (flags uint64 :offset-assert 56) ;; particle-curve-flags + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) +|# + +;; (define-extern birth-func-curve function) ;; (function int sparticle-cpuinfo sparticle-launchinfo none) +;; (define-extern live-func-curve function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern *alpha-fast* curve2d-fast) ;; curve2d-fast +;; (define-extern *unity-fast* curve2d-fast) ;; curve2d-fast +;; (define-extern *ccro* curve-color-fast) ;; curve-color-fast +;; (define-extern *scale-curve* curve2d-fast) ;; curve2d-fast +;; (define-extern *scale-range* curve2d-fast) ;; curve2d-fast +;; (define-extern *part-function-curve-test-curve-settings* object) ;; particle-curve-settings +;; (define-extern ptest function) ;; (function none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; light-trails ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern compute-trail-scaled-t function) ;; (function uint float float float float float vector float) +;; (define-extern *dist-cache-array* object) ;; (pointer float) +;; (define-extern *total-length* object) ;; float +;; (define-extern light-trail-tracker-common-post function) ;; (function object :behavior light-trail-tracker) +;; (define-extern estimate-light-trail-mem-usage function) ;; (function uint uint int) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lightning-new ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *lightning-alpha-additive* object) ;; gs-alpha +;; (define-extern *lightning-alpha-blend* object) ;; gs-alpha +;; (define-extern *lightning-alpha-subtractive* object) ;; gs-alpha +;; (define-extern matrix<-vector-yz2! function) ;; (function matrix vector vector matrix) +;; (define-extern choose-nice-perp function) ;; (function vector vector) +;; (define-extern lightning-new-tracker-init-by-other function) ;; (function lightning-tracker-init-params object :behavior lightning-new-tracker) +;; (define-extern create-lightning-tracker-new function) ;; (function lightning-tracker-init-params lightning-new-tracker) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; target-util ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype target-bank (basic) + ((attack-timeout uint64 :offset-assert 8) ;; time-frame + (ground-timeout uint64 :offset-assert 16) ;; time-frame + (slide-down-timeout uint64 :offset-assert 24) ;; time-frame + (fall-timeout uint64 :offset-assert 32) ;; time-frame + (fall-stumble-threshold meters :offset-assert 40) + (hit-invulnerable-timeout uint64 :offset-assert 48) ;; time-frame + (same-attack-invulnerable-timeout uint64 :offset-assert 56) ;; time-frame + (min-dive-depth meters :offset-assert 64) + (root-radius meters :offset-assert 68) + (root-offset vector :inline :offset-assert 80) + (body-radius meters :offset-assert 96) + (head-radius meters :offset-assert 100) + (head-height meters :offset-assert 104) + (head-offset vector :inline :offset-assert 112) + (fall-height meters :offset-assert 128) + ) + :method-count-assert 9 + :size-assert #x84 + :flag-assert #x900000084 + ) +|# + +;; (define-extern *TARGET-bank* target-bank) ;; target-bank +;; (define-extern debounce-speed function) ;; (function float float vector vector float :behavior target) +;; (define-extern target-pos function) ;; (function int vector) +;; (define-extern target-rot function) ;; (function quaternion) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; logic-target ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern draw-history function) ;; (function control-info none) +;; (define-extern target-history-print function) ;; (function history-iterator symbol) +;; (define-extern target-print-stats function) ;; (function target symbol symbol) +;; (define-extern target-move-dist function) ;; (function time-frame float :behavior target) +;; (define-extern level-setup function) ;; (function none :behavior target) +;; (define-extern target-real-post function) ;; (function none :behavior target) +;; (define-extern target-post function) ;; (function none :behavior target) +;; (define-extern target-no-move-post function) ;; (function none :behavior target) +;; (define-extern reset-target-state function) ;; (function symbol target :behavior target) +;; (define-extern target-init function) ;; (function continue-point none :behavior target) +;; (define-extern start-2 function) +;; (define-extern start-1 function) +;; (define-extern stop function) ;; (function symbol int) +;; (define-extern start function) ;; (function symbol continue-point target) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; debug-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern sparticle-track-root-money function) ;; (function sparticle-system sparticle-cpuinfo vector none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; attackable-hash ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; attackable-hash is already defined! + +;; (define-extern *attackable-hash* attackable-hash) +;; (define-extern attackable-hash-copy! function) +;; (define-extern attackable-hash-exchange! function) +;; (define-extern attackable-hash-update function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; projectile ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern cshape-reaction-projectile function) ;; (function control-info collide-query vector vector collide-status) +;; (define-extern projectile-event-handler function) ;; (function process int symbol event-message-block projectile :behavior projectile) +;; (define-extern projectile-move-fill-all-dirs function) ;; (function projectile none) +;; (define-extern projectile-move-fill-line-sphere function) ;; (function projectile none) +;; (define-extern projectile-update-velocity-add-gravity function) ;; (function projectile none) +;; (define-extern projectile-update-velocity-space-wars function) ;; (function projectile none) +;; (define-extern projectile-base-code function) +;; (define-extern projectile-init-by-other function) ;; (function projectile-init-by-other-params object :behavior projectile) +;; (define-extern projectile-bounce-update-velocity function) ;; (function projectile-bounce none :behavior projectile) +;; (define-extern projectile-bounce-falling-post function) ;; (function none :behavior projectile-bounce) +;; (define-extern projectile-bounce-move function) ;; (function projectile-bounce none) +;; (define-extern projectile-bounce-reaction function) ;; (function control-info collide-query vector vector collide-status) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; rigid-body-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; +++rigid-body-h:rigid-body-flag +(defenum rigid-body-flag + :bitfield #t + :type uint32 + (display-marks 0) + (enable-physics 1) + (enable-collision 2) + (active 3) + (debug 4) + (blocker 5) + ) +;; ---rigid-body-h:rigid-body-flag + +;; +++rigid-body-h:rigid-body-object-flag +(defenum rigid-body-object-flag + :bitfield #t + :type uint64 + (enable-collision 0) + (disturbed 1) + (damaged 2) + (dead 3) + ) +;; ---rigid-body-h:rigid-body-object-flag + +(deftype rigid-body-info (structure) + ((max-time-step float :offset-assert 0) + (mass float :offset-assert 4) + (inv-mass float :offset-assert 8) + (linear-damping float :offset-assert 12) + (angular-damping float :offset-assert 16) + (bounce-factor float :offset-assert 20) + (friction-factor float :offset-assert 24) + (bounce-mult-factor float :offset-assert 28) + (cm-offset-joint vector :inline :offset-assert 32) + (inv-inertial-tensor matrix :inline :offset-assert 48) + (inertial-tensor matrix :inline :offset-assert 112) + (inertial-tensor-box meters 3 :offset-assert 176) ;; guessed by decompiler + (gravity float :offset-assert 188) + (max-ang-momentum float :offset-assert 192) + ) + :method-count-assert 10 + :size-assert #xc4 + :flag-assert #xa000000c4 + (:methods + (rigid-body-info-method-9 () none) ;; 9 ;; (rigid-body-info-method-9 (_type_) none) + ) + ) + +(deftype rigid-body-object-constants (structure) + ((info rigid-body-info :inline :offset-assert 0) + (max-time-step float :offset 0) + (mass float :offset 4) + (inv-mass float :offset 8) + (cm-joint-x meters :offset 32) + (cm-joint-y meters :offset 36) + (cm-joint-z meters :offset 40) + (linear-damping float :offset 12) + (angular-damping float :offset 16) + (bounce-factor float :offset 20) + (friction-factor float :offset 24) + (inertial-tensor-x meters :offset 176) + (inertial-tensor-y meters :offset 180) + (inertial-tensor-z meters :offset 184) + (gravity meters :offset 188) + (name symbol :offset-assert 196) ;; guessed by decompiler + ) + :method-count-assert 10 + :size-assert #xc8 + :flag-assert #xa000000c8 + (:methods + (rigid-body-object-constants-method-9 () none) ;; 9 + ) + ) + +(deftype rigid-body-impact (structure) + ((point vector :inline :offset-assert 0) + (normal vector :inline :offset-assert 16) + (velocity vector :inline :offset-assert 32) + (impulse float :offset-assert 48) + (pat pat-surface :offset-assert 52) ;; guessed by decompiler + (process process :offset-assert 56) ;; guessed by decompiler + (prim-id uint32 :offset-assert 60) + (surface basic :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x44 + :flag-assert #x900000044 + ) + +(declare-type rigid-body-object basic) +(deftype rigid-body-control (basic) + ((flags rigid-body-flag :offset-assert 4) + (debug-id int8 :offset 6) + (debugger-step int8 :offset 7) + (info rigid-body-info :offset-assert 8) + (force-callback (function rigid-body-object float none) :offset-assert 12) ;; guessed by decompiler + (post-move-callback basic :offset-assert 16) + (process process :offset-assert 20) ;; guessed by decompiler + (time-remaining float :offset-assert 24) + (max-ang-momentum float :offset-assert 28) + (linear-damping float :offset-assert 32) + (angular-damping float :offset-assert 36) + (bounce-factor float :offset-assert 40) + (friction-factor float :offset-assert 44) + (position vector :inline :offset-assert 48) + (rot vector :inline :offset-assert 64) + (rotation quaternion :inline :offset 64) + (lin-momentum vector :inline :offset-assert 80) + (ang-momentum vector :inline :offset-assert 96) + (force vector :inline :offset-assert 112) + (torque vector :inline :offset-assert 128) + (lin-velocity vector :inline :offset-assert 144) + (ang-velocity vector :inline :offset-assert 160) + (matrix matrix :inline :offset-assert 176) + (inv-i-world matrix :inline :offset-assert 240) + ) + :method-count-assert 41 + :size-assert #x130 + :flag-assert #x2900000130 + ;; field rigid-body-flag is likely a value type. + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type process) _type_) + (rigid-body-control-method-9 () none) ;; 9 ;; (rigid-body-control-method-9 (_type_ collide-shape-moving float) none) + (rigid-body-control-method-10 () none) ;; 10 ;; (rigid-body-control-method-10 (_type_ rigid-body-object float float) object) + (rigid-body-control-method-11 () none) ;; 11 ;; (update-rbody-transform! (_type_ collide-shape-moving) none) + (rigid-body-control-method-12 () none) ;; 12 ;; (rigid-body-control-method-12 (_type_ float) none) + (rigid-body-control-method-13 () none) ;; 13 ;; (init-velocities! (_type_) none) + (rigid-body-control-method-14 () none) ;; 14 ;; (rigid-body-control-method-14 (_type_ float) none) + (rigid-body-control-method-15 () none) ;; 15 ;; (rigid-body-control-method-15 (_type_) none) + (rigid-body-control-method-16 () none) ;; 16 ;; (reset-force-and-torque! (_type_) none) + (rigid-body-control-method-17 () none) ;; 17 ;; (reset-momentum! (_type_) none) + (rigid-body-control-method-18 () none) ;; 18 ;; (apply-impact! (_type_ vector vector) none) + (rigid-body-control-method-19 () none) ;; 19 ;; (rigid-body-control-method-19 (_type_ vector vector) none) + (rigid-body-control-method-20 () none) ;; 20 ;; (add-force! (_type_ vector) none) + (rigid-body-control-method-21 () none) ;; 21 ;; (rigid-body-control-method-21 (_type_ vector vector float) none) + (rigid-body-control-method-22 () none) ;; 22 ;; (rigid-body-control-method-22 (_type_ vector vector) none) + (rigid-body-control-method-23 () none) ;; 23 ;; (rigid-body-control-method-23 (_type_ vector vector) none) + (rigid-body-control-method-24 () none) ;; 24 ;; (rigid-body-control-method-24 (_type_ vector vector) none) + (rigid-body-control-method-25 () none) ;; 25 ;; (rigid-body-control-method-25 (_type_ vector) vector) + (rigid-body-control-method-26 () none) ;; 26 ;; (rigid-body-control-method-26 (_type_) none) + (rigid-body-control-method-27 () none) ;; 27 ;; (init! (_type_ rigid-body-info vector quaternion (function rigid-body-object float)) none) + (rigid-body-control-method-28 () none) ;; 28 ;; (rigid-body-control-method-28 (_type_ vector quaternion) none) + (rigid-body-control-method-29 () none) ;; 29 ;; (debug-print-info (_type_ object) none) + (rigid-body-control-method-30 () none) ;; 30 ;; (debug-print-force-torque (_type_ object) none) + (rigid-body-control-method-31 () none) ;; 31 ;; (debug-print-pos-rot (_type_ object) none) + (rigid-body-control-method-32 () none) ;; 32 ;; (debug-print-momentum (_type_ object) none) + (rigid-body-control-method-33 () none) ;; 33 ;; (debug-print-velocity (_type_ object) none) + (rigid-body-control-method-34 () none) ;; 34 + (rigid-body-control-method-35 () none) ;; 35 + (rigid-body-control-method-36 () none) ;; 36 + (rigid-body-control-method-37 () none) ;; 37 + (rigid-body-control-method-38 () none) ;; 38 + (rigid-body-control-method-39 () none) ;; 39 + (rigid-body-control-method-40 () none) ;; 40 + ) + ) + +(deftype rb-perf-data (structure) + ((process handle :offset-assert 0) + (times uint32 32 :offset-assert 8) + (t-rb-all uint32 :offset 8) + (t-rb-callback uint32 :offset 12) + (t-rb-fc uint32 :offset 16) + (t-rb-move uint32 :offset 20) + (t-rb-physics uint32 :offset 24) + (t-vqp-all uint32 :offset 32) + (t-vqp-common uint32 :offset 36) + (t-vqp-ja-post uint32 :offset 40) + (t-vqp-parts uint32 :offset 44) + (t-vqp-post uint32 :offset 48) + (t-vqp-sections uint32 :offset 52) + (t-vqp-sound uint32 :offset 56) + (t-nav-part1 uint32 :offset 60) + (t-nav-part2 uint32 :offset 64) + (t-nav-part3 uint32 :offset 68) + (t-nav-part4 uint32 :offset 72) + (t-nav-part5 uint32 :offset 76) + (t-nav-part6 uint32 :offset 80) + (t-nav-part7 uint32 :offset 84) + (t-nav-part8 uint32 :offset 88) + (t-nav-part9 uint32 :offset 92) + (t-nav-part10 uint32 :offset 96) + (t-part-turbo uint32 :offset 116) + (t-part-exhaust uint32 :offset 100) + (t-part-smoke uint32 :offset 104) + (t-part-scrape uint32 :offset 108) + (t-part-wheels uint32 :offset 112) + (t-part-debris uint32 :offset 120) + (t-part-water uint32 :offset 124) + (t-part-forcefield uint32 :offset 128) + (t-prim-trails uint32 :offset 132) + (begin-times uint32 32 :offset-assert 136) + (begin-counts uint32 32 :offset-assert 264) + (end-counts uint32 32 :offset-assert 392) + ) + :pack-me + :method-count-assert 12 + :size-assert #x208 + :flag-assert #xc00000208 + (:methods + (rb-perf-data-method-9 () none) ;; 9 + (rb-perf-data-method-10 () none) ;; 10 + (rb-perf-data-method-11 () none) ;; 11 + ) + ) + +(deftype rigid-body-object (process-focusable) + ((info rigid-body-object-constants :offset-assert 256) + (flags rigid-body-object-flag :offset-assert 264) + (max-time-step float :offset-assert 272) + (incoming-attack-id uint32 :offset-assert 276) + (disturbed-time uint32 :offset-assert 280) + (perf rb-perf-data :offset-assert 284) + ) + :method-count-assert 89 + :size-assert #x120 + :flag-assert #x5900900120 + ;; field rigid-body-object-flag is likely a value type. + (:methods + (rigid-body-object-method-59 () none) ;; 59 + (rigid-body-object-method-60 () none) ;; 60 + (rigid-body-object-method-61 () none) ;; 61 + (rigid-body-object-method-62 () none) ;; 62 + (rigid-body-object-method-63 () none) ;; 63 + (rigid-body-object-method-64 () none) ;; 64 + (rigid-body-object-method-65 () none) ;; 65 + (rigid-body-object-method-66 () none) ;; 66 + (rigid-body-object-method-67 () none) ;; 67 + (rigid-body-object-method-68 () none) ;; 68 + (rigid-body-object-method-69 () none) ;; 69 + (rigid-body-object-method-70 () none) ;; 70 + (rigid-body-object-method-71 () none) ;; 71 + (rigid-body-object-method-72 () none) ;; 72 + (rigid-body-object-method-73 () none) ;; 73 + (rigid-body-object-method-74 () none) ;; 74 + (rigid-body-object-method-75 () none) ;; 75 + (rigid-body-object-method-76 () none) ;; 76 + (rigid-body-object-method-77 () none) ;; 77 + (rigid-body-object-method-78 () none) ;; 78 + (rigid-body-object-method-79 () none) ;; 79 + (rigid-body-object-method-80 () none) ;; 80 + (rigid-body-object-method-81 () none) ;; 81 + (rigid-body-object-method-82 () none) ;; 82 + (rigid-body-object-method-83 () none) ;; 83 + (rigid-body-object-method-84 () none) ;; 84 + (rigid-body-object-method-85 () none) ;; 85 + (rigid-body-object-method-86 () none) ;; 86 + (rigid-body-object-method-87 () none) ;; 87 + (rigid-body-object-method-88 () none) ;; 88 + ) + ) + +#| +(deftype rigid-body-queue (structure) + ((count int8 :offset-assert 0) + (manager uint64 :offset-assert 8) ;; handle + (array handle 128 :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 17 + :size-assert #x410 + :flag-assert #x1100000410 + (:methods + (rigid-body-queue-method-9 () none) ;; 9 ;; (init-queue! (_type_ process) none) + (rigid-body-queue-method-10 () none) ;; 10 ;; (rigid-body-queue-method-10 (_type_) none) + (rigid-body-queue-method-11 () none) ;; 11 ;; (rigid-body-queue-method-11 (_type_ process) none) + (rigid-body-queue-method-12 () none) ;; 12 ;; (rigid-body-queue-method-12 (_type_ int int) none) + (rigid-body-queue-method-13 () none) ;; 13 ;; (rigid-body-queue-method-13 (_type_ int process) none) + (rigid-body-queue-method-14 () none) ;; 14 ;; (rigid-body-queue-method-14 (_type_ int) none) + (rigid-body-queue-method-15 () none) ;; 15 ;; (rigid-body-queue-method-15 (_type_ process) none) + (rigid-body-queue-method-16 () none) ;; 16 ;; (rigid-body-queue-method-16 (_type_) none) + ) + ) +|# + +#| +(deftype rb-debug-state-record (structure) + ((flags uint16 :offset-assert 0) + (time-remaining float :offset-assert 4) + (current-time uint32 :offset-assert 8) + (debug-id int8 :offset-assert 12) + (linear-damping float :offset-assert 16) + (angular-damping float :offset-assert 20) + (bounce-factor float :offset-assert 24) + (friction-factor float :offset-assert 28) + (position vector :inline :offset-assert 32) + (rot vector :inline :offset-assert 48) + (rotation quaternion :inline :offset-assert 48) + (lin-momentum vector :inline :offset-assert 64) + (ang-momentum vector :inline :offset-assert 80) + (force vector :inline :offset-assert 96) + (torque vector :inline :offset-assert 224) + ) + :method-count-assert 11 + :size-assert #x160 + :flag-assert #xb00000160 + (:methods + (rb-debug-state-record-method-9 () none) ;; 9 + (rb-debug-state-record-method-10 () none) ;; 10 + ) + ) +|# + +#| +(deftype rb-debugger (structure) + ((user-mode uint8 :offset-assert 0) + (hook-control uint8 :offset-assert 1) + (flags uint8 :offset-assert 2) + (target-count int8 :offset-assert 3) + (target-array UNKNOWN 8 :offset-assert 8) + (pad0 UNKNOWN 256 :offset-assert 72) + (playback-index int32 :offset-assert 328) + (recorder-index int32 :offset-assert 332) + (begin-index int32 :offset-assert 336) + (end-index int32 :offset-assert 340) + (record-count int32 :offset-assert 344) + (buffer-len int32 :offset-assert 348) + (buffer-size int32 :offset-assert 352) + (total-size int32 :offset-assert 356) + (buffer-start UNKNOWN :dynamic :offset-assert 368) + ) + :method-count-assert 21 + :size-assert #x170 + :flag-assert #x1500000170 + (:methods + (rb-debugger-method-9 () none) ;; 9 + (rb-debugger-method-10 () none) ;; 10 + (rb-debugger-method-11 () none) ;; 11 + (rb-debugger-method-12 () none) ;; 12 + (rb-debugger-method-13 () none) ;; 13 + (rb-debugger-method-14 () none) ;; 14 + (rb-debugger-method-15 () none) ;; 15 + (rb-debugger-method-16 () none) ;; 16 + (rb-debugger-method-17 () none) ;; 17 + (rb-debugger-method-18 () none) ;; 18 + (rb-debugger-method-19 () none) ;; 19 + (rb-debugger-method-20 () none) ;; 20 + ) + ) +|# + +#| +(deftype rigid-body-object-extra-info (UNKNOWN) + () + :method-count-assert 0 + :size-assert #x0 + :flag-assert #x0 + ) +|# + +;; (define-extern get-penetrate-using-from-attack-event function) ;; (function process-drawable event-message-block penetrate) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; target-handler ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern attack-mode-is-invinc function) ;; (function symbol symbol symbol) +;; (define-extern target-generic-event-handler function) ;; (function process int symbol event-message-block object :behavior target) +;; (define-extern target-standard-event-handler function) ;; (function process int symbol event-message-block object :behavior target) +;; (define-extern target-jump-event-handler function) ;; (function process int symbol event-message-block object :behavior target) +;; (define-extern target-exit function) ;; (function none :behavior target) +;; (define-extern target-state-hook-exit function) ;; (function none :behavior target) +;; (define-extern target-effect-exit function) ;; (function none :behavior target) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; target ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern target-nearest-dist function) +;; (define-extern target-get-any-pos function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; target-death ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *auto-continue* object) ;; symbol +;; (define-extern next-continue function) ;; (function continue-point continue-point) +;; (define-extern arrive-at-continue function) ;; (function continue-point none :behavior target) +;; (define-extern target-continue-init-art function) ;; (function none :behavior target) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; gun-util ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype beam-info (structure) + ((y-scale float :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +;; (define-extern *beam-info* object) ;; beam-info +;; (define-extern birth-func-setup-beam function) ;; (function int sparticle-cpuinfo sparticle-launchinfo none) +;; (define-extern draw-beam function) ;; (function sparticle-launcher vector vector symbol none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; menu ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-type debug-menu-node basic) +(declare-type debug-menu debug-menu-node) +(declare-type debug-menu-item debug-menu-node) + + +(deftype debug-menu-context (basic) + ((is-active symbol :offset-assert 4) ;; guessed by decompiler + (sel-length int32 :offset-assert 8) + (sel-menu debug-menu 8 :offset-assert 12) ;; guessed by decompiler + (root-menu debug-menu :offset-assert 44) ;; guessed by decompiler + (joypad-func (function basic int none) :offset-assert 48) ;; guessed by decompiler + (joypad-item debug-menu-item :offset-assert 52) ;; guessed by decompiler + (font font-context :offset-assert 56) ;; guessed by decompiler + (is-hidden symbol :offset-assert 60) ;; guessed by decompiler + (joypad-number int32 :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x44 + :flag-assert #x900000044 + ) + +(deftype debug-menu-node (basic) + ((name string :offset-assert 4) ;; guessed by decompiler + (parent debug-menu :offset-assert 8) ;; guessed by decompiler + (refresh-delay int32 :offset-assert 12) + (refresh-ctr int32 :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) + +(deftype debug-menu (debug-menu-node) + ((context debug-menu-context :offset-assert 20) ;; guessed by decompiler + (selected-item debug-menu-item :offset-assert 24) ;; guessed by decompiler + (pix-width int32 :offset-assert 28) + (pix-height int32 :offset-assert 32) + (items pair :offset-assert 36) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + (:methods + (new (symbol type debug-menu-context string) _type_) ;; 0 + ) + ) + +(deftype debug-menu-item (debug-menu-node) + ((id int32 :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) + +(deftype debug-menu-item-submenu (debug-menu-item) + ((submenu debug-menu :offset-assert 24) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + (:methods + (new (symbol type string debug-menu) _type_) ;; 0 + ) + ) + +(deftype debug-menu-item-function (debug-menu-item) + ((activate-func (function object object) :offset-assert 24) ;; guessed by decompiler + (hilite-timer int8 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x1d + :flag-assert #x90000001d + (:methods + (new (symbol type string object (function object object)) _type_) ;; 0 + ) + ) + +;; +++menu:debug-menu-msg +(defenum debug-menu-msg + :type int32 + (activate 1) + (deactivate 2) + (update 3) + (press 4) + ) +;; ---menu:debug-menu-msg + +(deftype debug-menu-item-flag (debug-menu-item) + ((activate-func (function object debug-menu-msg object) :offset-assert 24) ;; guessed by decompiler + (is-on symbol :offset-assert 28) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + (:methods + (new (symbol type string object (function object debug-menu-msg object)) _type_) ;; 0 + ) + ) + +(deftype debug-menu-item-var (debug-menu-item) + ((display-str string :offset-assert 24) ;; guessed by decompiler + (grabbed-joypad-p symbol :offset-assert 28) ;; guessed by decompiler + (float-p symbol :offset-assert 32) ;; guessed by decompiler + (range-p symbol :offset-assert 36) ;; guessed by decompiler + (show-len int32 :offset-assert 40) + (inc-delay int32 :offset-assert 44) + (inc-delay-ctr int32 :offset-assert 48) + (step-delay-ctr int32 :offset-assert 52) + (inc-dir int32 :offset-assert 56) + (fval float :offset-assert 60) + (fundo-val float :offset-assert 64) + (frange-min float :offset-assert 68) + (frange-max float :offset-assert 72) + (fstart-inc float :offset-assert 76) + (fstep float :offset-assert 80) + (fprecision int32 :offset-assert 84) + (factivate-func (function int debug-menu-msg float float float) :offset-assert 88) ;; guessed by decompiler + (ival int32 :offset 60) + (iundo-val int32 :offset 64) + (irange-min int32 :offset 68) + (irange-max int32 :offset 72) + (istart-inc int32 :offset 76) + (istep int32 :offset 80) + (ihex-p symbol :offset-assert 92) ;; guessed by decompiler + (iactivate-func (function int debug-menu-msg int int int) :offset 88) ;; guessed by decompiler + (ifloat-p symbol :offset-assert 96) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x64 + :flag-assert #x900000064 + (:methods + (new (symbol type string int int) _type_) ;; 0 + ) + ) + +;; +++menu:debug-menu-dest +(defenum debug-menu-dest + :type int32 + (activation 0) + (root 1) + (open-menus 2) + (current-selection 3) + ) +;; ---menu:debug-menu-dest + +(define-extern debug-menu-item-var-update-display-str (function debug-menu-item-var debug-menu-item-var)) +(define-extern debug-menu-item-var-make-int (function debug-menu-item-var (function int debug-menu-msg int int int) int symbol int int symbol debug-menu-item-var)) +(define-extern debug-menu-item-var-make-float (function debug-menu-item-var (function int debug-menu-msg float float float) float symbol float float int debug-menu-item-var)) +(define-extern debug-menu-context-grab-joypad (function debug-menu-context basic (function basic int none) symbol)) +(define-extern debug-menu-context-release-joypad (function debug-menu-context symbol)) +(define-extern debug-menu-item-get-max-width (function debug-menu-item debug-menu int)) +(define-extern debug-menu-context-default-selection (function debug-menu-context symbol debug-menu-context)) +(define-extern debug-menu-rebuild (function debug-menu debug-menu)) +(define-extern debug-menu-context-set-root-menu (function debug-menu-context debug-menu debug-menu-context)) +(define-extern debug-menu-append-item (function debug-menu debug-menu-node debug-menu-node)) +(define-extern debug-menu-remove-all-items (function debug-menu debug-menu)) +(define-extern debug-menu-func-decode (function object function)) +(define-extern debug-menu-make-from-template (function debug-menu-context pair debug-menu-node)) +(define-extern debug-menu-find-from-template (function debug-menu-context pair debug-menu)) +(define-extern debug-menu-item-submenu-render (function debug-menu-item-submenu int int int symbol debug-menu-item-submenu)) +(define-extern debug-menu-item-function-render (function debug-menu-item-function int int int symbol debug-menu-item-function)) +(define-extern debug-menu-item-flag-render (function debug-menu-item-flag int int int symbol debug-menu-item-flag)) +(define-extern debug-menu-item-var-render (function debug-menu-item-var int int int symbol debug-menu-item-var)) +(define-extern debug-menu-item-render (function debug-menu-item int int int symbol debug-menu-item)) +(define-extern debug-menu-render (function debug-menu int int debug-menu-node int debug-menu)) +(define-extern debug-menu-context-render (function debug-menu-context debug-menu-context)) +(define-extern debug-menu-context-select-next-or-prev-item (function debug-menu-context int debug-menu-context)) +(define-extern debug-menu-context-select-new-item (function debug-menu-context int debug-menu-context)) +(define-extern debug-menu-context-open-submenu (function debug-menu-context debug-menu basic)) +(define-extern debug-menu-context-close-submenu (function debug-menu-context debug-menu-context)) +(define-extern debug-menu-item-submenu-msg (function debug-menu-item-submenu debug-menu-msg debug-menu-item-submenu)) +(define-extern debug-menu-item-function-msg (function debug-menu-item-function debug-menu-msg debug-menu-item-function)) +(define-extern debug-menu-item-flag-msg (function debug-menu-item-flag debug-menu-msg debug-menu-item-flag)) +(define-extern debug-menu-item-var-joypad-handler (function debug-menu-item-var int debug-menu-item-var)) +(define-extern debug-menu-item-var-msg (function debug-menu-item-var debug-menu-msg debug-menu-item-var)) +(define-extern debug-menu-item-send-msg (function debug-menu-item debug-menu-msg debug-menu-item)) +(define-extern debug-menu-send-msg (function debug-menu debug-menu-msg symbol debug-menu)) +(define-extern debug-menu-context-send-msg (function debug-menu-context debug-menu-msg debug-menu-dest debug-menu-context)) +(define-extern debug-menu-context-activate-selection (function debug-menu-context debug-menu-context)) +(define-extern debug-menus-default-joypad-func (function debug-menu-context debug-menu-context)) +(define-extern debug-menus-active (function debug-menu-context debug-menu-context)) +(define-extern debug-menus-handler (function debug-menu-context debug-menu-context)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; drawable ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern sphere-cull function) ;; (function vector symbol) +;; (define-extern guard-band-cull function) ;; (function vector symbol) +;; (define-extern sphere-in-view-frustum? function) ;; (function sphere symbol) +;; (define-extern line-in-view-frustum? function) ;; (function vector vector symbol) +;; (define-extern sphere-in-view-frustum-any? function) +;; (define-extern line-in-view-frustum-any? function) +;; (define-extern find-nearest-camera-distance function) +;; (define-extern vis-cull function) ;; (function int symbol) +;; (define-extern vis-cull-debug function) ;; (function work-area int symbol) +;; (define-extern error-sphere function) ;; (function drawable-error string none) +;; (define-extern *edit-instance* object) ;; string +;; (define-extern *instance-mem-usage* object) ;; memory-usage-block +;; (define-extern find-instance-by-name-level function) ;; (function string level prototype-bucket) +;; (define-extern find-instance-by-name function) ;; (function string prototype-bucket) +;; (define-extern prototypes-game-visible-set! function) ;; (function pair symbol level int) +;; (define-extern find-instance-by-index function) ;; (function type int bsp-header prototype-bucket) +;; (define-extern prototype-bucket-type function) ;; (function prototype-bucket type) +;; (define-extern prototype-bucket-recalc-fields function) ;; (function prototype-bucket prototype-bucket) +;; (define-extern print-prototype-intersection-list function) +;; (define-extern print-prototype-list function) ;; (function none) +;; (define-extern draw-instance-info function) ;; (function string none) +;; (define-extern set-shadow-by-name function) ;; (function string int int none) +;; (define-extern get-shadow-by-name function) ;; (function string none) +;; (define-extern teleport-camera-by-name function) ;; (function string none) +;; (define-extern teleport-camera-by-pos function) ;; (function float float float none) +;; (define-extern calc-vu1-shadow function) ;; (function light-group draw-control none) +;; (define-extern calc-shadow-masks function) ;; (function light-group draw-control uint none) +;; (define-extern calc-realtime-lights function) ;; (function light-group draw-control uint none) +;; (define-extern calc-vu1-lights function) ;; (function vu-lights draw-control symbol none) +;; (define-extern calc-particle-average-color function) +;; (define-extern calc-particle-directional-color function) +;; (define-extern real-dma-add-process-drawable function) +;; (define-extern dma-add-process-drawable function) ;; (function process-drawable draw-control symbol dma-buffer none) +;; (define-extern *hud-lights* object) ;; vu-lights +;; (define-extern dma-add-process-drawable-hud function) ;; (function process-drawable draw-control float dma-buffer none) +;; (define-extern add-process-drawable function) ;; (function process-drawable draw-control symbol dma-buffer none) +;; (define-extern foreground-engine-execute function) ;; (function engine none) +;; (define-extern main-debug-hook function) ;; (function none) +;; (define-extern *debug-hook* object) ;; pair +;; (define-extern *add-sphere* object) ;; symbol +;; (define-extern *generic-effect-mode* object) ;; int +;; (define-extern foreground-initialize-engines function) ;; (function none) +;; (define-extern foreground-execute-cpu-vu0-engines function) ;; (function none) +;; (define-extern real-main-draw-hook function) ;; (function none) +;; (define-extern main-draw-hook function) ;; (function none) +;; (define-extern *draw-hook* object) ;; (function none) +;; (define-extern init-init-buffer function) +;; (define-extern init-end-buffer function) +;; (define-extern screen-shot-scale function) ;; (function int string none) +;; (define-extern screen-shot-debug function) +;; (define-extern screen-shot function) ;; (function none) +;; (define-extern display-frame-start function) ;; (function display int float none) +;; (define-extern display-frame-finish function) ;; (function display display) +;; (define-extern determine-pause-mode function) ;; (function none) +;; (define-extern calc-ratio function) ;; (function int int float) +;; (define-extern display-sync function) ;; (function display none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; drawable-group ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; drawable-inline-array ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; drawable-tree ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; prototype ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; prototype-node-group is already defined! + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; main-collide ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern drawable-sphere-box-intersect? function) ;; (function drawable bounding-box4w symbol) +;; (define-extern instance-sphere-box-intersect? function) ;; (function drawable instance-tie bounding-box4w symbol) +;; (define-extern instance-tfragment-add-debug-sphere function) ;; (function drawable instance-tie symbol) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; video ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern *video-mode* int) +(define-extern set-video-mode (function symbol none)) +(define-extern get-video-mode (function symbol)) +(define-extern set-aspect-ratio (function symbol none)) +(define-extern get-aspect-ratio (function symbol)) +(define-extern set-progressive-scan (function symbol none)) +(define-extern get-progressive-scan (function symbol)) +(define-extern set-graphics-mode (function none)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; main ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype disc-error-proc (process-drawable) + ((error basic :offset-assert 248) + (bmask uint32 :offset-assert 252) + ) + :method-count-assert 50 + :size-assert #x100 + :flag-assert #x3200700100 + ) + +(define-extern set-letterbox-frames "Enable letterbox for the given amount of time." (function time-frame none)) +(define-extern letterbox "Draw letterbox" (function bucket-id float none)) +(define-extern set-blackout-frames "Enable blackout for the given amount of time." (function time-frame none)) +(define-extern blackout "Draw blackout as a sprite." (function bucket-id none)) +(define-extern add-blackout "Update display settings to do blackout with GS pmode alp." (function time-frame int int int int int)) +(define-extern paused? "Are we paused? Counts any type of pause/menu/freeze." (function symbol)) +(define-extern movie? "Are we in a movie?" (function symbol)) +(define-extern scene-select? (function symbol)) +(define-extern demo? "Is this a demo version?" (function symbol)) +(define-extern kiosk? "Is this a kiosk version of the game?" (function symbol)) +(define-extern beta? "Is this a beta version?" (function symbol)) +(define-extern *last-master-mode* symbol) +(define-extern set-master-mode "Change the master mode and adjust a few masks" (function symbol none)) +(define-extern pause-allowed? "Should we allow a pause?" (function symbol)) +(define-extern toggle-pause "Update the pause state. Call this if the user presses a pause button + This function will check the button and state and do a pause if needed." + (function int)) +(define-extern *screen-filter-array* (array screen-filter)) +(define-extern *screen-filter* screen-filter) +(define-extern *master-exit* symbol) +(define-extern *progress-cheat* symbol) +(define-extern *first-boot* symbol) +(define-extern main-timeouts "Maybe reset/restart the game if no input has been given. + Mainly used for kiosk/demo modes." (function none)) +(define-extern main-cheats (function none)) +(define-extern end-display (function display none)) +;; (define-extern disc-idle state) +;; (define-extern disc-error-proc-init-by-other function) +(define-extern display-loop-main (function display none)) +(define-extern display-loop "Main loop for running the game." (function int :behavior process)) +(define-extern on "Start the display process." (function symbol process)) +(define-extern off "Stop the display process." (function none)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; collide-cache ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype collide-puls-work (structure) + ((ignore-pat pat-surface :offset-assert 0) ;; guessed by decompiler + (bsphere sphere :inline :offset-assert 16) + (move-dist vector :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype lsmi-work (structure) + ((best-u float :offset-assert 0) + (orig-best-u float :offset-assert 4) + (action uint32 :offset-assert 8) + (cquery collide-query :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x22c + :flag-assert #x90000022c + ) + +(define-extern test-closest-pt-in-triangle (function collide-cache symbol)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; collide-debug ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype col-rend-filter (structure) + ((show-pat uint32 :offset-assert 0) + (show-pat-mask uint32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +;; (define-extern col-rend-draw function) ;; (function col-rend col-rend-filter none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; relocate ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; memory-usage ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; memory-usage-block is already defined! + +(define-extern mem-size (function basic symbol int int)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; entity ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype debug-actor-info (basic) + ((name string :offset-assert 4) ;; guessed by decompiler + (handle handle :offset-assert 8) ;; handle + (process process :offset-assert 16) ;; guessed by decompiler + (pid int32 :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) + +;; actor-group is already defined! + +(deftype entity (res-lump) + "Entities are mainly used to place objects in a level. + + As a child of [[res-lump]], they store various types of metadata + in [[res-tag]]s (such as name, curve data, volume data, etc.) + that gets accessed by the accompanying process." + ((trans vector :inline :offset-assert 32) + (aid uint32 :offset-assert 48) + (pad uint32) + ) + :method-count-assert 27 + :size-assert #x38 + :flag-assert #x1b00000038 + (:methods + (birth! (_type_) _type_) ;; 22 + (kill! (_type_) _type_) ;; 23 + (add-to-level! (_type_ level-group level actor-id) none) ;; 24 + (remove-from-level! (_type_ level-group) _type_) ;; 25 + (get-level (_type_) level) ;; 26 + ) + ) + +(deftype entity-nav-mesh (entity) + ((nav-mesh nav-mesh :offset-assert 56) ;; field could not be read. + ) + :method-count-assert 29 + :size-assert #x3c + :flag-assert #x1d0000003c + (:methods + (initialize-nav-mesh! "Initialize the nav-mesh in this entity." (_type_) none) ;; 27 + (debug-draw (_type_) none) ;; 28 + ) + ) + +(deftype entity-actor (entity) + ((kill-mask task-mask :offset-assert 56) + (etype type :offset-assert 60) ;; guessed by decompiler + (task game-task :offset-assert 64) ;; game-task + (vis-id int16 :offset-assert 66) + (quat quaternion :inline :offset 80) ;; quaternion :inline + ) + :method-count-assert 33 + :size-assert #x60 + :flag-assert #x2100000060 + (:methods + (next-actor (_type_) entity-actor) ;; 27 + (prev-actor (_type_) entity-actor) ;; 28 + (debug-print (_type_ symbol type) none) ;; 29 + (toggle-status (_type_ entity-perm-status symbol) none) ;; 30 + (get-simple-travel-vector (_type_ vector vector vector object float) nav-mesh) ;; 31 + (project-point-to-nav-mesh (_type_ vector vector nav-poly float) nav-poly) ;; 32 + ) + ) + +(define-extern *spawn-actors* symbol) +(define-extern *compact-actors* symbol) +(define-extern *vis-actors* symbol) +;; (define-extern *additional-spawner-count* object) +;; (define-extern *additional-spawners* object) +;; (define-extern register-additional-spawner function) +;; (define-extern unregister-spawner-at-index function) +;; (define-extern *camera-pos-0* object) +;; (define-extern *camera-pos-1* object) +;; (define-extern vis-cull-all? function) +;; (define-extern vis-dist-additional-ok? function) +;; (define-extern vis-dist-ok? function) +(define-extern entity-by-name (function string entity)) +(define-extern entity-by-type (function type entity-actor)) +(define-extern entity-by-aid (function uint entity)) +(define-extern entity-actor-from-level-name (function symbol entity-actor)) +(define-extern entity-nav-mesh-by-aid (function actor-id entity-nav-mesh)) +(define-extern nav-mesh-from-res-tag (function entity symbol int nav-mesh)) +(define-extern entity-by-meters (function float float float entity-actor)) +(define-extern process-by-ename (function string process)) +(define-extern entity-process-count (function symbol int)) +(define-extern entity-count (function int)) +(define-extern entity-remap-names (function pair none)) +(define-extern process-status-bits (function process symbol none)) +(define-extern process-entity-set! (function process entity entity)) +(define-extern process-task-mask (function process task-mask)) +(define-extern update-actor-vis-box (function process-drawable vector vector none)) +(define-extern expand-bounding-box (function vector vector vector vector none)) +(define-extern expand-bounding-box-from-nav-meshes (function entity vector vector object)) +(define-extern expand-vis-box-with-point (function entity vector none)) +(define-extern *debug-actor-info* debug-actor-info) +(define-extern *pid-string* string) +(define-extern debug-actor (function string none)) +(define-extern debug-actor-process (function process none)) +(define-extern draw-actor-marks (function process none)) +(define-extern init-entity (function process entity-actor type none)) +(define-extern entity-deactivate-handler (function process entity-actor none)) +(define-extern check-for-rougue-process (function process int int level none)) +(define-extern process-drawable-scale-from-entity! (function process-drawable entity none)) +(define-extern process-drawable-from-entity! (function process-drawable entity-actor none)) +;; (define-extern reset-actors-by-game-type function) +(define-extern reset-actors (function symbol none)) +(define-extern reset-cameras (function none)) +(define-extern entity-birth-no-kill (function entity process)) +(define-extern entity-task-complete-on (function entity none)) +(define-extern entity-task-complete-off (function entity none)) +(define-extern process-entity-status! (function process entity-perm-status symbol entity-perm-status)) +(define-extern find-nearest-entity (function vector type entity)) +(define-extern entity-speed-test (function string entity)) +(define-extern dump-entity-remap (function object object none)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; path ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; vol ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern plane-volume-intersect-dist function) ;; (function vector vector vector float) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; nav-engine ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype nav-engine-spr-buffer (structure) + ((mem-addr (pointer nav-mesh) :offset-assert 0) ;; guessed by decompiler + (mem-nav uint32 :offset-assert 0) + (spr-addr (inline-array nav-control) :offset-assert 4) ;; guessed by decompiler + (spr-nav uint32 :offset-assert 4) + (q-size uint32 :offset-assert 8) + (i-nav uint8 :offset-assert 12) + (done int8 :offset-assert 13) + (nav-count int8 :offset-assert 14) + (i-pass int8 :offset-assert 15) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype nav-engine (structure) + ((spr-addr uint32 :offset-assert 0) + (nav-work-addr uint32 :offset-assert 4) + (nav-mesh-addr nav-mesh :offset-assert 8) ;; guessed by decompiler + (poly-array-addr uint32 :offset-assert 12) + (hash-sphere-addr uint32 :offset-assert 16) + (hash-buckets-addr uint32 :offset-assert 20) + (buf-nav-control-count int8 :offset-assert 24) + (max-pass-count int8 :offset-assert 25) + (output-sphere-hash uint8 :offset-assert 26) + (work-buf-array nav-engine-spr-buffer 3 :offset-assert 28) ;; guessed by decompiler + (spr-work nav-mesh-work :offset-assert 4) + (mem-work nav-mesh-work :offset-assert 76) + (spr-mesh nav-mesh :offset-assert 8) ;; guessed by decompiler + (mem-mesh nav-mesh :offset-assert 80) ;; guessed by decompiler + (spr-poly-array uint32 :offset-assert 12) + (mem-poly-array (inline-array nav-poly) :offset-assert 84) ;; guessed by decompiler + (hash-sphere-list uint32 :offset-assert 16) + (hash-buckets uint32 :offset-assert 20) + (to-spr-wait uint32 :offset-assert 88) + (from-spr-wait uint32 :offset-assert 92) + ) + :method-count-assert 22 + :size-assert #x60 + :flag-assert #x1600000060 + (:methods + (nav-engine-method-9 () none) ;; 9 ;; (inc-spr-addr! (_type_ uint) uint) + (nav-engine-method-10 () none) ;; 10 ;; (lay-out-spad-memory (_type_ nav-mesh) none) + (nav-engine-method-11 () none) ;; 11 ;; (set-up-mem-work (_type_) none) + (nav-engine-method-12 () none) ;; 12 ;; (add-spheres-from-mesh-user-list (_type_ sphere-hash nav-mesh) none) + (nav-engine-method-13 () none) ;; 13 ;; (add-all-spheres (_type_) none) + (nav-engine-method-14 () none) ;; 14 ;; (do-sphere-lookups (_type_) none) + (nav-engine-method-15 () none) ;; 15 ;; (update-nav-controls-pipelined-in-spr (_type_) none) + (nav-engine-method-16 () none) ;; 16 ;; (update-nav-controls-in-spr (_type_) none) + (nav-engine-method-17 () none) ;; 17 ;; (upload-nav-to-spr (_type_ nav-engine-spr-buffer) none) + (nav-engine-method-18 () none) ;; 18 ;; (download-nav-from-spr (_type_ nav-engine-spr-buffer) none) + (nav-engine-method-19 () none) ;; 19 ;; (do-callbacks (_type_ nav-engine-spr-buffer) none) + (nav-engine-method-20 () none) ;; 20 ;; (reloc-ptrs-to-spad (_type_ nav-engine-spr-buffer) none) + (nav-engine-method-21 () none) ;; 21 ;; (reloc-ptrs-to-mem (_type_ nav-engine-spr-buffer) none) + ) + ) +|# + +;; (define-extern nav-dma-send-to-spr-no-flush function) ;; (function pointer pointer int none) +;; (define-extern nav-dma-send-from-spr-no-flush function) ;; (function pointer pointer int none) +;; (define-extern inc-mod3 function) ;; (function int int) +;; (define-extern nav-state-patch-pointers function) ;; (function nav-state int none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; nav-mesh ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype nav-find-clear-spot-work (structure) + ((id-array int8 16 :offset-assert 0) ;; guessed by decompiler + (sphere-array sphere 16 :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x110 + :flag-assert #x900000110 + ) +|# + +#| +(deftype nav-find-corner-work (structure) + ((cur-poly nav-poly :offset-assert 0) + (target-poly nav-poly :offset-assert 4) + (start-pos vector :inline :offset-assert 16) + (target-pos vector :inline :offset-assert 32) + (tmp UNKNOWN 2 :offset-assert 48) + (dir vector :inline :offset-assert 80) + (frust UNKNOWN 2 :offset-assert 96) + (route-portal nav-route-portal :inline :offset-assert 128) + (portal-count int16 :offset-assert 166) + (frust-dots UNKNOWN 2 :offset-assert 168) + (frust-x-dots UNKNOWN 2 :offset-assert 176) + ) + :method-count-assert 9 + :size-assert #xb8 + :flag-assert #x9000000b8 + ) +|# + +;; (define-extern *debug-nav-control-output* object) ;; symbol +;; (define-extern *debug-nav-control* object) ;; symbol +;; (define-extern *debug-nav-mesh-output* object) ;; symbol +;; (define-extern *debug-nav-ray* object) ;; nav-ray +;; (define-extern *debug-ray-offset* object) ;; vector +;; (define-extern *debug-offset* object) ;; vector +;; (define-extern *nav-mesh-work* object) ;; nav-mesh-work +;; (define-extern *default-nav-mesh* nav-mesh) ;; nav-mesh +;; (define-extern *nav-mesh-id-hash* array) +;; (define-extern id-hash-find-free-index function) +;; (define-extern id-hash-find-matching-index function) +;; (define-extern nav-mesh-connect-from-ent function) ;; (function process-drawable symbol) +;; (define-extern connection-validate function) ;; (function connection none) +;; (define-extern connection-list-validate function) ;; (function (inline-array connection) symbol) +;; (define-extern nav-control-validate function) ;; (function process-drawable none) +;; (define-extern debug-validate-nav-poly function) ;; (function nav-mesh-link nav-poly none) +;; (define-extern vu-point-triangle-intersection? function) ;; (function vector vector vector vector symbol) +;; (define-extern poly-in-height-range? function) ;; (function nav-poly float float symbol) +;; (define-extern nav-ray-test function) ;; (function nav-mesh nav-poly vector vector meters) +;; (define-extern point-poly-distance-min function) ;; (function nav-mesh-work nav-poly float nav-poly float) +;; (define-extern nav-mesh-route-table-bit-index function) ;; (function nav-mesh uint int int) +;; (define-extern ray-ccw-line-segment-intersection? function) ;; (function vector vector vector vector symbol) +;; (define-extern ray-line-segment-intersection? function) ;; (function vector vector vector vector symbol) +;; (define-extern plane-height-at-xz-point function) ;; (function plane vector float) +;; (define-extern nav-normal-from-3-points function) ;; (function vector vector vector vector none) +;; (define-extern get-nav-mesh function) ;; (function actor-id nav-mesh) +;; (define-extern find-nearest-nav-mesh function) ;; (function vector float nav-mesh) +;; (define-extern point-to-poly-boundary function) ;; (function nav-poly vector vector float) +;; (define-extern find-first-containing-nav-mesh function) +;; (define-extern find-nav-mesh function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; nav-control ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype nav-link-search-info (structure) + ((open-list nav-mesh-link-search-node :offset-assert 0) + (closed-list nav-mesh-link-search-node :offset-assert 4) + (target-pos vector :inline :offset-assert 16) + (current-pos vector :inline :offset-assert 32) + ) + :method-count-assert 17 + :size-assert #x30 + :flag-assert #x1100000030 + (:methods + (nav-link-search-info-method-9 () none) ;; 9 + (nav-link-search-info-method-10 () none) ;; 10 + (nav-link-search-info-method-11 () none) ;; 11 + (nav-link-search-info-method-12 () none) ;; 12 + (nav-link-search-info-method-13 () none) ;; 13 + (nav-link-search-info-method-14 () none) ;; 14 + (nav-link-search-info-method-15 () none) ;; 15 + (nav-link-search-info-method-16 () none) ;; 16 + ) + ) +|# + +(deftype nav-control-cfs-work (structure) + ((in-dir vector :inline :offset-assert 0) + (right-dir vector :inline :offset-assert 16) + (best-dir vector 2 :inline :offset-assert 32) ;; guessed by decompiler + (temp-dir vector 2 :inline :offset-assert 64) ;; guessed by decompiler + (away-dir vector :inline :offset-assert 96) + (best-dir-angle degrees 2 :offset-assert 112) ;; guessed by decompiler + (ignore-mask uint64 :offset-assert 120) + (initial-ignore-mask uint64 :offset-assert 128) + (i-sphere int32 :offset-assert 136) + (i-first-sphere int32 :offset-assert 140) + (i-inside-sphere int32 :offset-assert 144) + (inside-sphere-dist float :offset-assert 148) + (sign float :offset-assert 152) + (travel-len float :offset-assert 156) + (dist2 float :offset-assert 160) + (inside-dist float :offset-assert 164) + (rand-angle float :offset-assert 168) + (dir-update basic :offset-assert 172) + (debug-offset vector :inline :offset-assert 176) + ) + :method-count-assert 9 + :size-assert #xc0 + :flag-assert #x9000000c0 + ) + +;; (define-extern *nav-triangle-test-count* object) ;; int +;; (define-extern *nav-last-triangle-test-count* object) ;; int +;; (define-extern debug-nav-validate-current-poly function) ;; (function nav-mesh nav-poly vector symbol) +;; (define-extern debug-report-nav-stats function) ;; (function none) +;; (define-extern get-nav-control function) ;; (function process-drawable nav-mesh none) +;; (define-extern get-pos-from-node function) +;; (define-extern add-nav-sphere function) ;; (function nav-control sphere int none) +;; (define-extern add-collide-shape-spheres function) ;; (function nav-control collide-shape sphere none) +;; (define-extern circle-tangent-directions function) ;; (function vector vector vector vector vector) +;; (define-extern circle-ray-intersection? function) ;; (function vector vector float vector symbol) +;; (define-extern find-closest-circle-ray-intersection function) ;; (function vector vector float int (inline-array vector) int int) +;; (define-extern compute-dir-parm function) ;; (function vector vector vector float) +;; (define-extern vector-rotate-y-sincos! function) ;; (function vector vector float float float) +;; (define-extern test-xz-point-on-line-segment? function) ;; (function vector vector vector float symbol) +;; (define-extern *null-nav-callback-info* object) ;; nav-callback-info +;; (define-extern *default-nav-callback-info* object) ;; nav-callback-info +;; (define-extern *physics-nav-callback-info* object) ;; nav-callback-info + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; effect-control ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern *footstep-surface* pat-surface) +(define-extern *debug-effect-control* symbol) +(define-extern sound-name-with-material (function string pat-surface string sound-name)) +(define-extern effect-param->sound-spec (function sound-spec (pointer float) int process-focusable sound-spec)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; water-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *range-wsplash-color* curve-color-fast) ;; curve-color-fast +;; (define-extern *range-wsplash-alpha* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-wsplash-scale-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-wsplash-scale-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-wsplash-alpha* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-wsplash-scale-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-wsplash-scale-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *part-water-splash-curve-settings* object) ;; particle-curve-settings +;; (define-extern *range-splash-color* curve-color-fast) ;; curve-color-fast +;; (define-extern *range-splash-alpha* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-splash-scale-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-splash-scale-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-splash-alpha* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-splash-scale-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-splash-scale-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *part-water-splash-center-curve-settings* object) ;; particle-curve-settings +;; (define-extern *curve-wsplash-small-scale-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-wsplash-small-scale-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *part-water-splash-small-curve-settings* object) ;; particle-curve-settings + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; water ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern check-water-level-drop function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern check-water-level-drop-and-die function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern check-water-level-drop-and-die-motion function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern check-water-level-above-and-die function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern check-water-level-drop-motion function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern *water-simple-alpha-curve-in* object) ;; curve2d-piecewise +;; (define-extern *growing-curve* object) ;; curve2d-piecewise +;; (define-extern *water-simple-alpha-curve-fade-out* object) ;; curve2d-piecewise +;; (define-extern *color-curve-tan-brown* object) ;; curve-color-piecewise +;; (define-extern *water-wake-trail* object) ;; light-trail-composition +;; (define-extern part-water-splash-callback function) ;; (function part-tracker none) +;; (define-extern splash-spawn function) ;; (function float vector int none) +;; (define-extern rings-water-spawn function) ;; (function float vector vector float float none) +;; (define-extern water-info<-region function) ;; (function water-info drawable-region-prim (inline-array water-sphere) collide-action process-drawable water-info) +;; (define-extern find-water-1 function) ;; (function water-sphere water-info water-info symbol) +;; (define-extern find-water-2 function) ;; (function (inline-array water-sphere) int water-info water-info process-drawable water-info) +;; (define-extern find-water-simple function) +;; (define-extern find-water-with-spheres function) ;; (function (inline-array water-sphere) int water-info object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; water-flow ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype flow-section (structure) + ((start vector :inline :offset-assert 0) + (trailing plane :inline :offset-assert 16) + (pull-dir vector :inline :offset-assert 32) + (radial-dir vector :inline :offset-assert 48) + (speed float :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x44 + :flag-assert #x900000044 + ) +|# + +#| +(deftype flow-section-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data flow-section :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype flow-control (basic) + ((path path-control :offset-assert 4) ;; guessed by decompiler + (speed float :offset-assert 8) + (belt-radius float :offset-assert 12) + (sections flow-section-array :offset-assert 16) ;; guessed by decompiler + (leading plane :inline :offset-assert 32) + (collide-bounds sphere :inline :offset-assert 48) + ) + :method-count-assert 14 + :size-assert #x40 + :flag-assert #xe00000040 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type process-drawable res-lump) _type_) + (flow-control-method-9 () none) ;; 9 ;; (draw-path (_type_) none) + (flow-control-method-10 () none) ;; 10 ;; (setup (_type_ (pointer float) int) none) + (flow-control-method-11 () none) ;; 11 ;; (push-process (_type_ process-focusable) none) + (flow-control-method-12 () none) ;; 12 ;; (find-and-push-things (_type_) none) + (flow-control-method-13 () none) ;; 13 ;; (flow-control-method-13 (_type_ water-info vector) symbol) + ) + ) +|# + +#| +(deftype water-flow (process-drawable) + ((flow flow-control :offset-assert 248) ;; guessed by decompiler + ) + :method-count-assert 51 + :size-assert #xfc + :flag-assert #x33007000fc + (:state-methods + idle ;; 50 + ) + ) +|# + +;; (define-extern ray-plane-equation-intersect function) ;; (function vector vector vector vector float) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; task-control ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype scene-stage (process-hidden) + () + :method-count-assert 16 + :size-assert #x90 + :flag-assert #x1000000090 + ) + +(define-extern game-task-node->string (function game-task-node string)) +(define-extern reset-city-squad-control (function symbol none)) +(define-extern city-task-faction-commands (function object)) +(define-extern evaluate-faction-commands (function pair object)) +(define-extern update-task-masks (function symbol int)) +(define-extern play-clean (function symbol int)) +(define-extern play-task (function game-task symbol symbol string)) +(define-extern task-node-by-name (function string game-task-node-info)) +(define-extern task-node-index-by-name (function string int)) +(define-extern task-resolution-close! (function game-task symbol)) +(define-extern task-close! (function string symbol)) +(define-extern task-closed? (function string symbol)) +(define-extern open-task-nodes (function (array game-task-node-info) (array game-task-node-info))) +(define-extern task-node-closed? (function game-task-node symbol)) +(define-extern task-node-close! (function game-task-node symbol int)) +(define-extern task-open? (function string symbol)) +(define-extern task-node-open? (function game-task-node symbol)) +(define-extern task-node-open! (function game-task-node symbol int)) +(define-extern task-node-close-upwards (function (array game-task-node-info) int none)) +(define-extern task-node-reset (function symbol int)) +(define-extern cheat-add-gold (function int)) +(define-extern *cache-open-node* game-task-node) +(define-extern get-open-task-node-info (function game-task-node-info)) +(define-extern get-task-total-score (function int)) +(define-extern get-task-cup-score (function game-task-node-flag int)) +(define-extern stats-weapon-used (function none)) +(define-extern stats-player-died (function none)) +(define-extern stats-player-medal (function none)) +(define-extern stats-player-ranking (function none)) +(define-extern stats-player-score (function none)) +(define-extern stats-player-end-mode (function none)) +(define-extern stats-player-time (function none)) +(define-extern stats-player-duration (function none)) +(define-extern stats-player-vehicle (function none)) +(define-extern stats-player-cash (function none)) +(define-extern get-medal-reward-ignore-medal (function float int)) +(define-extern get-medal-reward (function float int)) +(define-extern update-high-scores (function float int)) +(define-extern *last-medal* game-task-medal) +(define-extern report-score (function float int)) +(define-extern task-node-dump (function symbol symbol)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; scene ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype subtitle-work (structure) + ((draw-tmpl dma-gif-packet :inline :offset-assert 0) + (color0 vector4w :inline :offset-assert 32) + (color1 vector4w :inline :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) +|# + +;; (define-extern scene-decode-continue function) ;; (function basic continue-point) +;; (define-extern scene-lookup function) ;; (function basic scene) +;; (define-extern *subtitle-work* object) ;; subtitle-work +;; (define-extern draw-subtitle-image function) ;; (function subtitle-image font-context none) +;; (define-extern process-drawable-draw-subtitles function) ;; (function none :behavior process-drawable) +;; (define-extern scene-player-init function) ;; (function object symbol string none :behavior scene-player) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; movie-path ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype movie-path (process) + ((root basic :offset-assert 144) + (path basic :offset-assert 148) + (path-pos float :offset-assert 152) + (path-speed float :offset-assert 156) + (rot vector :inline :offset-assert 160) + (enabled? basic :offset-assert 176) + (movie-frame uint32 :offset-assert 180) + ) + :method-count-assert 17 + :size-assert #xb8 + :flag-assert #x11003000b8 + (:methods + (movie-path-method-9 () none) ;; 9 + (movie-path-method-10 () none) ;; 10 + (movie-path-method-11 () none) ;; 11 + (movie-path-method-12 () none) ;; 12 + (movie-path-method-13 () none) ;; 13 + (movie-path-method-14 () none) ;; 14 + (movie-path-method-16 () none) ;; 16 + ) + (:state-methods + active ;; 15 + ) + ) +|# + +;; (define-extern *movie-path-dir* object) +;; (define-extern *movie-path-filename* object) +;; (define-extern *movie-path* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; pov-camera ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern pov-camera-play-and-reposition function) ;; (function art-joint-anim vector float none :behavior pov-camera) +;; (define-extern pov-camera-init-by-other function) ;; (function vector skeleton-group string pov-camera-flag process-drawable pair none :behavior pov-camera) +;; (define-extern othercam-calc function) ;; (function float float) +;; (define-extern othercam-init-by-other function) ;; (function pov-camera int symbol symbol none :behavior othercam) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; powerups ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern cloud-track function) ;; (function process-tree process-tree (function vector none) time-frame time-frame time-frame none :behavior process) +;; (define-extern eco-blue-glow function) ;; (function vector none) +;; (define-extern process-contact-action function) ;; (function process none :behavior target) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; hud ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-string-record (structure) + ((str hud-string :offset-assert 0) + (next hud-string-record :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype hud-sprite-work (structure) + ((adgif-tmpl dma-gif-packet :inline :offset-assert 0) + (draw-tmpl dma-gif-packet :inline :offset-assert 32) + (draw-no-tex-tmpl dma-gif-packet :inline :offset-assert 64) + (sprite-tmpl dma-gif-packet :inline :offset-assert 96) + (sprite-no-tex-tmpl dma-gif-packet :inline :offset-assert 128) + (box-tmpl dma-gif-packet :inline :offset-assert 160) + (box2-tmpl dma-gif-packet :inline :offset-assert 192) + (mask-tmpl dma-gif-packet :inline :offset-assert 224) + (line-tmpl dma-gif-packet :inline :offset-assert 256) + (scan-tmpl dma-gif-packet :inline :offset-assert 288) + (line-color uint64 :offset-assert 320) ;; gs-rgbaq + (scan-colors vector4w 32 :offset-assert 336) ;; guessed by decompiler + (scanline uint32 :offset-assert 848) + ) + :method-count-assert 9 + :size-assert #x354 + :flag-assert #x900000354 + ) +|# + +;; (define-extern *hud-string-array* object) +;; (define-extern *hud-string-used-list* object) +;; (define-extern *hud-string-free-list* object) +;; (define-extern *font-hud-context* object) +;; (define-extern hud-string-init function) +;; (define-extern hud-string-add function) +;; (define-extern hud-string-draw-all function) +;; (define-extern *hud-sprite-work* object) ;; hud-sprite-work +;; (define-extern hud-sprite-add function) +;; (define-extern *debug-hud-disable* object) +;; (define-extern hud-create-icon function) ;; (function hud int int (pointer manipy)) +;; (define-extern hud-post function) +;; (define-extern hud-handler function) +;; (define-extern hud-init-by-other function) ;; (function object :behavior hud) +;; (define-extern set-hud-piece-position! function) ;; (function hud-sprite int int none) +;; (define-extern set-as-offset-from! function) ;; (function hud-sprite vector4w int int none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; hud-classes ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype race-map-info (structure) + ((corner vector2 :offset-assert 0) + (tex-offset vector2 :offset-assert 4) + (tex-id uint32 :offset-assert 8) + (scale float :offset-assert 12) + (mode int32 :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) +|# + +;; (define-extern *race-map-info-array* object) +;; (define-extern hud-map-init-by-other function) +;; (define-extern hack-set-level-bbox function) +;; (define-extern init-level-bbox-from-map function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; progress ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern *progress-process* (pointer process)) ;; (pointer progress) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ocean-trans-tables ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *ocean-left-table* object) ;; (pointer float) +;; (define-extern *ocean-right-table* object) ;; (pointer float) +;; (define-extern *ocean-up-table* object) ;; (pointer float) +;; (define-extern *ocean-down-table* object) ;; (pointer float) +;; (define-extern *ocean-down-left-table* object) ;; (pointer float) +;; (define-extern *ocean-down-right-table* object) ;; (pointer float) +;; (define-extern *ocean-up-right-table* object) ;; (pointer float) +;; (define-extern *ocean-up-left-table* object) ;; (pointer float) +;; (define-extern *ocean-trans-left-table* object) ;; (pointer float) +;; (define-extern *ocean-trans-right-table* object) ;; (pointer float) +;; (define-extern *ocean-trans-up-table* object) ;; (pointer float) +;; (define-extern *ocean-trans-down-table* object) ;; (pointer float) +;; (define-extern *ocean-trans-down-left-table* object) ;; (pointer float) +;; (define-extern *ocean-trans-down-right-table* object) ;; (pointer float) +;; (define-extern *ocean-trans-up-right-table* object) ;; (pointer float) +;; (define-extern *ocean-trans-up-left-table* object) ;; (pointer float) +;; (define-extern *ocean-trans-corner-table* object) ;; (inline-array vector4w-2) +;; (define-extern *ocean-trans-strip-array* object) ;; (pointer float) +;; (define-extern *ocean-trans-st-table* object) ;; (inline-array vector) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ocean ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern init-ocean-far-regs function) ;; (function none) +;; (define-extern draw-large-polygon-ocean function) ;; (function none) +;; (define-extern render-ocean-quad function) ;; (function (inline-array ocean-vertex) dma-buffer symbol) +;; (define-extern test-seq-read function) +;; (define-extern test-worst-read function) +;; (define-extern test-seq-write function) +;; (define-extern test-worst-write function) +;; (define-extern test-to-spr function) +;; (define-extern test-from-spr function) +;; (define-extern test-to-from-spr function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ocean-mid ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern ocean-mid-block object) ;; vu-function + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ocean-transition ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ocean-near ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern ocean-near-block object) ;; vu-function + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; sparks ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern *sparks-work* sparks-work) +(define-extern sparks-vu1-block object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; eye ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *eye-work* object) ;; eye-work +;; (define-extern find-free-eye-index function) ;; (function int string int int) +;; (define-extern free-eye-index function) ;; (function int int) +;; (define-extern render-eyes-32 function) ;; (function dma-buffer eye-control int pointer) +;; (define-extern render-eyes-64 function) ;; (function dma-buffer eye-control int pointer) +;; (define-extern dirty-eyes function) +;; (define-extern update-eyes function) ;; (function none) +;; (define-extern convert-eye-data function) ;; (function eye uint float) +;; (define-extern merc-eye-anim function) ;; (function process-drawable none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; mem-buffer ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; dynamic-mem ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype memblock (structure) + ((tp uint8 :offset-assert 0) + (flavor uint8 :offset-assert 1) + (pad2 int16 :offset-assert 2) + (paras int32 :offset-assert 4) + (prev memblock :offset-assert 8) + (next memblock :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype mem-manager (structure) + ((pool memblock :offset-assert 0) + (pool-sz int32 :offset-assert 4) + ) + :method-count-assert 16 + :size-assert #x8 + :flag-assert #x1000000008 + (:methods + (mem-manager-method-9 () none) ;; 9 + (mem-manager-method-10 () none) ;; 10 + (mem-manager-method-11 () none) ;; 11 + (mem-manager-method-12 () none) ;; 12 + (mem-manager-method-13 () none) ;; 13 + (mem-manager-method-14 () none) ;; 14 + (mem-manager-method-15 () none) ;; 15 + ) + ) +|# + +;; (define-extern *dynamic-alloc-pool* object) +;; (define-extern *mem-manager* object) +;; (define-extern mem-alloc-scert function) +;; (define-extern mem-free-scert function) +;; (define-extern mem-realloc-scert function) +;; (define-extern mem-alloc-nelly function) +;; (define-extern mem-free-nelly function) +;; (define-extern mem-realloc-nelly function) +;; (define-extern mem-alloc-lgaud function) +;; (define-extern mem-free-lgaud function) +;; (define-extern mem-realloc-lgaud function) +;; (define-extern mem-alloc-flash function) +;; (define-extern mem-free-flash function) +;; (define-extern mem-realloc-flash function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; headset-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype headset-queue (structure) + ((write-offset int32 :offset-assert 0) + (read-offset int32 :offset-assert 4) + (bytes int32 :offset-assert 8) + (size int32 :offset-assert 12) + (data uint32 :offset-assert 16) + ) + :method-count-assert 13 + :size-assert #x14 + :flag-assert #xd00000014 + (:methods + (headset-queue-method-9 () none) ;; 9 + (headset-queue-method-10 () none) ;; 10 + (headset-queue-method-11 () none) ;; 11 + (headset-queue-method-12 () none) ;; 12 + ) + ) +|# + +#| +(deftype nci-codec-io-block (structure) + ((pcm-buffer uint32 :offset-assert 0) + (samples-in-pcm-buffer int16 :offset-assert 4) + (nelly-buffer uint32 :offset-assert 8) + (nelly-buffer-size uint16 :offset-assert 12) + (nelly-buffer-read-byte-offset uint16 :offset-assert 14) + (nelly-buffer-read-bit-offset uint8 :offset-assert 16) + (nelly-buffer-write-byte-offset uint16 :offset-assert 18) + (nelly-buffer-write-bit-offset uint8 :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x15 + :flag-assert #x900000015 + ) +|# + +#| +(deftype headset-decoder (structure) + ((client-idx int8 :offset-assert 0) + (last-time int32 :offset-assert 4) + (cmp-queue headset-queue :inline :offset-assert 8) + (io nci-codec-io-block :inline :offset-assert 28) + (scratch UNKNOWN 16 :offset-assert 49) + (id int8 :offset-assert 65) + ) + :method-count-assert 9 + :size-assert #x42 + :flag-assert #x900000042 + ) +|# + +#| +(deftype headset (process) + ((flags uint32 :offset-assert 144) + (decoders UNKNOWN 4 :offset-assert 148) + (client-to-decoder UNKNOWN 16 :offset-assert 468) + (encoder-io nci-codec-io-block :inline :offset-assert 484) + (last-speech-time int32 :offset-assert 508) + (prev-operation basic :offset-assert 512) + (bytes-in-playback-queue int32 :offset-assert 516) + (first-send basic :offset-assert 520) + (frame-ct int32 :offset-assert 524) + (client-talking UNKNOWN 16 :offset-assert 528) + ) + :method-count-assert 33 + :size-assert #x220 + :flag-assert #x2101900220 + (:methods + (headset-method-9 () none) ;; 9 + (headset-method-10 () none) ;; 10 + (headset-method-11 () none) ;; 11 + (headset-method-12 () none) ;; 12 + (headset-method-13 () none) ;; 13 + (headset-method-14 () none) ;; 14 + (headset-method-15 () none) ;; 15 + (headset-method-16 () none) ;; 16 + (headset-method-17 () none) ;; 17 + (headset-method-18 () none) ;; 18 + (headset-method-19 () none) ;; 19 + (headset-method-20 () none) ;; 20 + (headset-method-21 () none) ;; 21 + (headset-method-22 () none) ;; 22 + (headset-method-23 () none) ;; 23 + (headset-method-24 () none) ;; 24 + (headset-method-25 () none) ;; 25 + (headset-method-26 () none) ;; 26 + (headset-method-27 () none) ;; 27 + (headset-method-28 () none) ;; 28 + (headset-method-29 () none) ;; 29 + (headset-method-30 () none) ;; 30 + (headset-method-31 () none) ;; 31 + (headset-method-32 () none) ;; 32 + ) + ) +|# + +;; (define-extern *headset-input-buffer* object) +;; (define-extern *headset-input-bytes* object) +;; (define-extern *headset-output-buffer* object) +;; (define-extern *headset-output-bytes* object) +;; (define-extern *headset-output-offset* object) +;; (define-extern *headset-cmp-out-buffer* object) +;; (define-extern *headset-cmp-out-frames* object) +;; (define-extern *headset-scratch-buffer* object) +;; (define-extern *headset-mix-buffer* object) +;; (define-extern *headset-decoder-ids* object) +;; (define-extern *headset-decoder-ptrs* array) +;; (define-extern *headset* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; stream-media-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; joint-exploder ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype joint-exploder-tuning (structure) + ((explosion uint64 :offset-assert 0) + (duration time-frame :offset-assert 8) ;; time-frame + (gravity float :offset-assert 16) + (rot-speed float :offset-assert 20) + (bounds-inflate float :offset-assert 24) + (max-probes uint8 :offset-assert 28) + (max-probe-width float :offset-assert 32) + (max-probe-height float :offset-assert 36) + (max-probe-depth float :offset-assert 40) + (max-y-offset float :offset-assert 44) + (friction float :offset-assert 48) + (fountain-rand-transv-lo vector :inline :offset-assert 64) + (fountain-rand-transv-hi vector :inline :offset-assert 80) + (away-from-focal-pt vector :inline :offset 64) + (away-from-rand-transv-xz-lo float :offset 80) + (away-from-rand-transv-xz-hi float :offset 84) + (away-from-rand-transv-y-lo float :offset 88) + (away-from-rand-transv-y-hi float :offset 92) + (hit-xz-reaction float :offset-assert 96) + (hit-y-reaction float :offset-assert 100) + ) + :method-count-assert 9 + :size-assert #x68 + :flag-assert #x900000068 + (:methods + (new (symbol type uint) _type_) ;; 0 + ) + ) + +(deftype joint-exploder-static-joint-params (structure) + ((joint-index int16 :offset-assert 0) + (parent-joint-index int16 :offset-assert 2) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + +(deftype joint-exploder-static-params (basic) + ((joints (array joint-exploder-static-joint-params) :offset-assert 4) ;; guessed by decompiler + (collide-spec collide-spec :offset-assert 8) ;; guessed by decompiler + (art-level symbol :offset-assert 12) ;; guessed by decompiler + (collide-sound uint16 :offset-assert 16) ;; sound-name + (collide-sound-interval uint64 :offset-assert 24) ;; time-frame + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype joint-exploder-joint (structure) + ((next int16 :offset-assert 0) + (prev int16 :offset-assert 2) + (joint-index int16 :offset-assert 4) + (mat matrix :inline :offset-assert 16) + (rmat matrix :inline :offset-assert 80) + (update-rmat matrix :inline :offset-assert 144) + (transv vector :inline :offset-assert 208) + (prev-pos vector :inline :offset-assert 224) + ) + :method-count-assert 9 + :size-assert #xf0 + :flag-assert #x9000000f0 + ) + +(deftype joint-exploder-joints (basic) + ((num-joints int32 :offset-assert 4) + (joint joint-exploder-joint :dynamic :inline :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + (:methods + (new (symbol type joint-exploder-static-params) _type_) ;; 0 + ) + ) + +(deftype joint-exploder-list (structure) + ((head int32 :offset-assert 0) + (pre-moved? symbol :offset-assert 4) ;; guessed by decompiler + (bbox-valid? symbol :offset-assert 8) ;; guessed by decompiler + (probeless? symbol :offset-assert 12) ;; guessed by decompiler + (bbox bounding-box :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype joint-exploder-list-array (inline-array-class) + ((data joint-exploder-list :dynamic :inline :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) + +(deftype joint-exploder (process-drawable) + ((die-if-below-y float :offset-assert 248) + (die-if-beyond-xz-dist-sqrd float :offset-assert 252) + (joints joint-exploder-joints :offset-assert 256) ;; guessed by decompiler + (static-params joint-exploder-static-params :offset-assert 260) ;; guessed by decompiler + (anim art-joint-anim :offset-assert 264) ;; guessed by decompiler + (scale-vector vector :inline :offset-assert 272) + (tuning joint-exploder-tuning :inline :offset-assert 288) + (lists joint-exploder-list-array :offset-assert 392) ;; guessed by decompiler + (last-colsound-time time-frame :offset-assert 400) ;; time-frame + ) + :method-count-assert 60 + :size-assert #x198 + :flag-assert #x3c01100198 + (:methods + (joint-exploder-method-50 () none) ;; 50 + (joint-exploder-method-51 () none) ;; 51 + (joint-exploder-method-52 () none) ;; 52 + (joint-exploder-method-53 () none) ;; 53 + (joint-exploder-method-54 () none) ;; 54 + (joint-exploder-method-55 () none) ;; 55 + (joint-exploder-method-56 () none) ;; 56 + (joint-exploder-method-57 () none) ;; 57 + (joint-exploder-method-58 () none) ;; 58 + (joint-exploder-method-59 () none) ;; 59 + ) + (:states + joint-exploder-shatter ;; associated process guessed by decompiler, old: (state joint-exploder) + ) + ) + +(define-extern joint-exploder-joint-callback (function draw-control cspace-array joint-control none)) +(define-extern joint-exploder-init-by-other (function skeleton-group int joint-exploder-tuning joint-exploder-static-params object :behavior joint-exploder)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; debris ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype debris-static-joint-params (structure) + ((parent-joint-index int16 :offset-assert 0) + (group string :offset-assert 4) ;; guessed by decompiler + (offset vector :offset-assert 8) + (color-tint rgbaf :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype debris-static-params (basic) + ((joints (array debris-static-joint-params) :offset-assert 4) ;; guessed by decompiler + (collide-spec collide-spec :offset-assert 8) ;; guessed by decompiler + (sound-hit uint16 :offset-assert 12) ;; sound-name + (initial-sound-hit uint16 :offset-assert 14) + (roll-sound uint16 :offset-assert 16) + (art-level symbol :offset-assert 20) ;; guessed by decompiler + (vscale float :offset-assert 24) + (volume-time float :offset-assert 28) + (play-delay int32 :offset-assert 32) + (min-speed float :offset-assert 36) + (max-speed float :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) + +(deftype debris (basic) + ((root transformq :inline :offset-assert 16) + (node-list cspace-array :offset-assert 64) ;; guessed by decompiler + (draw draw-control :offset-assert 68) ;; guessed by decompiler + (duration float :offset-assert 72) + (hit-xz-reaction float :offset-assert 76) + (hit-y-reaction float :offset-assert 80) + (prev-pos vector :inline :offset-assert 96) + (gravity float :offset-assert 112) + (rot-axis vector :inline :offset-assert 128) + (rot-angle float :offset-assert 144) + (transv vector :inline :offset-assert 160) + (time-fade-out time-frame :offset-assert 176) ;; time-frame + (params debris-static-params :offset-assert 184) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #xbc + :flag-assert #x9000000bc + ) + +(deftype debris-box (structure) + ((start uint32 :offset-assert 0) + (num uint32 :offset-assert 4) + (bbox bounding-box :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype debris-group (process) + ((had-first-hit symbol :offset-assert 144) + (dead-debris-num int32 :offset-assert 148) + (debris-num int32 :offset-assert 152) + (next-play int32 :offset-assert 156) + (debris (array debris) :offset-assert 160) ;; guessed by decompiler + (max-probe-width float :offset-assert 164) + (state-time time-frame :offset-assert 168) ;; time-frame + (num-boxes uint32 :offset-assert 176) + (boxes debris-box 16 :inline :offset-assert 192) ;; guessed by decompiler + ) + :method-count-assert 18 + :size-assert #x3c0 + :flag-assert #x12033003c0 + (:methods + (debris-group-method-14 () none) ;; 14 ;; (idle () _type_ :state) + ) + (:state-methods + idle ;; 15, old: (do-collision (_type_ int) none) + ) + (:methods + (debris-group-method-16 () none) ;; 16 ;; (update-box! (_type_ int) none) + (debris-group-method-17 () none) ;; 17 + ) + ) + +(deftype debris-tuning (structure) + ((explosion uint64 :offset-assert 0) + (duration uint64 :offset-assert 8) ;; time-frame + (gravity float :offset-assert 16) + (rot-speed float :offset-assert 20) + (bounds-inflate float :offset-assert 24) + (max-probe-width float :offset-assert 28) + (max-probe-height float :offset-assert 32) + (max-probe-depth float :offset-assert 36) + (fountain-rand-transv-lo vector :inline :offset-assert 48) + (fountain-rand-transv-hi vector :inline :offset-assert 64) + (away-from-focal-pt vector :inline :offset 48) + (away-from-rand-transv-xz-lo float :offset 64) + (away-from-rand-transv-xz-hi float :offset 68) + (away-from-rand-transv-y-lo float :offset 72) + (away-from-rand-transv-y-hi float :offset 76) + (hit-xz-reaction float :offset-assert 80) + (hit-y-reaction float :offset-assert 84) + (scale-rand-lo float :offset-assert 88) + (scale-rand-hi float :offset-assert 92) + ) + :method-count-assert 9 + :size-assert #x60 + :flag-assert #x900000060 + ) + +(define-extern debris-group-init-by-other (function debris-tuning debris-static-params process-drawable object :behavior debris-group)) +(define-extern debris-spawn (function process-drawable debris-tuning debris-static-params process-drawable (pointer debris-group))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-process-mgr-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype net-process-mgr-machine (structure) + ((state uint8 :offset-assert 0) + (delay int32 :offset-assert 4) + (acct-id int32 :offset-assert 8) + (overall-score int32 :offset-assert 12) + (clan-id int32 :offset-assert 16) + (local-player-ct int32 :offset-assert 20) + (cookie int32 :offset-assert 24) + (reported-ping int32 :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype net-process-mgr (process) + ((local-machine-idx int32 :offset-assert 144) + (session-master-idx int32 :offset-assert 148) + (machines UNKNOWN 8 :offset-assert 152) + (last-allocated-local-id int32 :offset-assert 408) + (last-allocated-global-id int32 :offset-assert 412) + (have-send-pending-objects basic :offset-assert 416) + (snap-time-of-day basic :offset-assert 420) + (owner-lists UNKNOWN 10 :offset-assert 424) + (active-list linked-list :inline :offset-assert 584) + (cur-proc-valid basic :offset-assert 592) + (cur-proc-id uint16 :offset-assert 596) + (cur-proc-owner-idx int8 :offset-assert 598) + (cur-proc-type basic :offset-assert 600) + (cur-proc-entity entity-links :offset-assert 604) + (entity-creation-messages-enabled basic :offset-assert 608) + ) + :method-count-assert 59 + :size-assert #x264 + :flag-assert #x3b01e00264 + (:methods + (net-process-mgr-method-9 () none) ;; 9 + (net-process-mgr-method-10 () none) ;; 10 + (net-process-mgr-method-11 () none) ;; 11 + (net-process-mgr-method-12 () none) ;; 12 + (net-process-mgr-method-13 () none) ;; 13 + (net-process-mgr-method-14 () none) ;; 14 + (net-process-mgr-method-15 () none) ;; 15 + (net-process-mgr-method-16 () none) ;; 16 + (net-process-mgr-method-17 () none) ;; 17 + (net-process-mgr-method-18 () none) ;; 18 + (net-process-mgr-method-19 () none) ;; 19 + (net-process-mgr-method-20 () none) ;; 20 + (net-process-mgr-method-21 () none) ;; 21 + (net-process-mgr-method-22 () none) ;; 22 + (net-process-mgr-method-23 () none) ;; 23 + (net-process-mgr-method-24 () none) ;; 24 + (net-process-mgr-method-25 () none) ;; 25 + (net-process-mgr-method-26 () none) ;; 26 + (net-process-mgr-method-27 () none) ;; 27 + (net-process-mgr-method-28 () none) ;; 28 + (net-process-mgr-method-29 () none) ;; 29 + (net-process-mgr-method-30 () none) ;; 30 + (net-process-mgr-method-31 () none) ;; 31 + (net-process-mgr-method-32 () none) ;; 32 + (net-process-mgr-method-33 () none) ;; 33 + (net-process-mgr-method-34 () none) ;; 34 + (net-process-mgr-method-35 () none) ;; 35 + (net-process-mgr-method-36 () none) ;; 36 + (net-process-mgr-method-37 () none) ;; 37 + (net-process-mgr-method-38 () none) ;; 38 + (net-process-mgr-method-39 () none) ;; 39 + (net-process-mgr-method-40 () none) ;; 40 + (net-process-mgr-method-41 () none) ;; 41 + (net-process-mgr-method-42 () none) ;; 42 + (net-process-mgr-method-43 () none) ;; 43 + (net-process-mgr-method-44 () none) ;; 44 + (net-process-mgr-method-45 () none) ;; 45 + (net-process-mgr-method-46 () none) ;; 46 + (net-process-mgr-method-47 () none) ;; 47 + (net-process-mgr-method-48 () none) ;; 48 + (net-process-mgr-method-49 () none) ;; 49 + (net-process-mgr-method-50 () none) ;; 50 + (net-process-mgr-method-51 () none) ;; 51 + (net-process-mgr-method-52 () none) ;; 52 + (net-process-mgr-method-53 () none) ;; 53 + (net-process-mgr-method-54 () none) ;; 54 + (net-process-mgr-method-55 () none) ;; 55 + (net-process-mgr-method-56 () none) ;; 56 + (net-process-mgr-method-57 () none) ;; 57 + (net-process-mgr-method-58 () none) ;; 58 + ) + ) +|# + +;; (define-extern *net-process-mgr* object) +;; (define-extern get-event-level function) +;; (define-extern get-shared-level function) +;; (define-extern nos function) +;; (define-extern write-process-as-handle function) +;; (define-extern write-handle function) +;; (define-extern read-handle function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; statistics ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype stat-info (structure) + ((text-id uint32 :offset-assert 0) + (taskname basic :offset-assert 4) + (name basic :offset-assert 8) + (offset int32 :offset-assert 12) + (tp uint64 :offset-assert 16) + (scale float :offset-assert 24) + (format-scale float :offset-assert 28) + (flags uint64 :offset-assert 32) + (init int32 :offset-assert 40) + (min-div int32 :offset-assert 44) + ) + :method-count-assert 15 + :size-assert #x30 + :flag-assert #xf00000030 + (:methods + (stat-info-method-9 () none) ;; 9 + (stat-info-method-10 () none) ;; 10 + (stat-info-method-11 () none) ;; 11 + (stat-info-method-12 () none) ;; 12 + (stat-info-method-13 () none) ;; 13 + (stat-info-method-14 () none) ;; 14 + ) + ) +|# + +#| +(deftype net-player-ladder-stats (structure) + ((version uint32 :offset-assert 0) + (overall-score uint32 :offset-assert 4) + (events-started uint32 :offset-assert 8) + (events-ended-or-quit uint32 :offset-assert 12) + (events-ended-or-quit-pct uint32 :offset-assert 16) + (events-played uint32 :offset-assert 20) + (events-played-pct uint32 :offset-assert 24) + (events-won uint32 :offset-assert 28) + (events-won-pct uint32 :offset-assert 32) + (time-spent-playing uint32 :offset-assert 36) + (track-events-played uint32 :offset-assert 40) + (track-events-won uint32 :offset-assert 44) + (track-events-won-pct uint32 :offset-assert 48) + (track-events-top-three uint32 :offset-assert 52) + (track-events-top-three-pct uint32 :offset-assert 56) + (arena-events-played uint32 :offset-assert 60) + (arena-events-won uint32 :offset-assert 64) + (arena-events-won-pct uint32 :offset-assert 68) + (arena-events-top-three uint32 :offset-assert 72) + (arena-events-top-three-pct uint32 :offset-assert 76) + (human-kills uint32 :offset-assert 80) + (human-kills-per-minute uint32 :offset-assert 84) + (cpu-kills uint32 :offset-assert 88) + (cpu-kills-per-minute uint32 :offset-assert 92) + (deaths uint32 :offset-assert 96) + (deaths-per-minute uint32 :offset-assert 100) + (top-speed uint32 :offset-assert 104) + (biggest-air uint32 :offset-assert 108) + (best-deathmatch-kills uint32 :offset-assert 112) + (best-hunt-score uint32 :offset-assert 116) + (best-artifact-score uint32 :offset-assert 120) + (best-lap-snow uint32 :offset-assert 124) + (best-lap-jungle uint32 :offset-assert 128) + (best-lap-kras uint32 :offset-assert 132) + (best-lap-canyon uint32 :offset-assert 136) + (best-lap-canspar uint32 :offset-assert 140) + (best-lap-haven uint32 :offset-assert 144) + (best-lap-havjung uint32 :offset-assert 148) + (best-lap-havsew uint32 :offset-assert 152) + (best-lap-havtour uint32 :offset-assert 156) + (best-lap-sewer uint32 :offset-assert 160) + (best-lap-spargus uint32 :offset-assert 164) + (best-lap-docks uint32 :offset-assert 168) + (best-lap-dockkra uint32 :offset-assert 172) + (best-lap-dromdoc uint32 :offset-assert 176) + (best-lap-drome uint32 :offset-assert 180) + (best-lap-ice uint32 :offset-assert 184) + (best-lap-temple uint32 :offset-assert 188) + (best-lap-spartem uint32 :offset-assert 192) + (best-lap-iceberg uint32 :offset-assert 196) + (best-lap-kratour uint32 :offset-assert 200) + (best-lap-spatour uint32 :offset-assert 204) + (best-lap-icepass uint32 :offset-assert 208) + (best-lap-peak uint32 :offset-assert 212) + (best-lap-icetour uint32 :offset-assert 216) + (best-timetrial-snow uint32 :offset-assert 220) + (best-timetrial-jungle uint32 :offset-assert 224) + (best-timetrial-kras uint32 :offset-assert 228) + (best-timetrial-canyon uint32 :offset-assert 232) + (best-timetrial-canspar uint32 :offset-assert 236) + (best-timetrial-haven uint32 :offset-assert 240) + (best-timetrial-havjung uint32 :offset-assert 244) + (best-timetrial-havsew uint32 :offset-assert 248) + (best-timetrial-havtour uint32 :offset-assert 252) + (best-timetrial-sewer uint32 :offset-assert 256) + (best-timetrial-spargus uint32 :offset-assert 260) + (best-timetrial-docks uint32 :offset-assert 264) + (best-timetrial-dockkra uint32 :offset-assert 268) + (best-timetrial-dromdoc uint32 :offset-assert 272) + (best-timetrial-drome uint32 :offset-assert 276) + (best-timetrial-ice uint32 :offset-assert 280) + (best-timetrial-temple uint32 :offset-assert 284) + (best-timetrial-spartem uint32 :offset-assert 288) + (best-timetrial-iceberg uint32 :offset-assert 292) + (best-timetrial-kratour uint32 :offset-assert 296) + (best-timetrial-spatour uint32 :offset-assert 300) + (best-timetrial-icepass uint32 :offset-assert 304) + (best-timetrial-peak uint32 :offset-assert 308) + (best-timetrial-icetour uint32 :offset-assert 312) + ) + :method-count-assert 9 + :size-assert #x13c + :flag-assert #x90000013c + ) +|# + +#| +(deftype net-player-ladder-stats-info (structure) + ((version stat-info :offset-assert 0) + (overall-score stat-info :offset-assert 4) + (events-started stat-info :offset-assert 8) + (events-ended-or-quit stat-info :offset-assert 12) + (events-ended-or-quit-pct stat-info :offset-assert 16) + (events-played stat-info :offset-assert 20) + (events-played-pct stat-info :offset-assert 24) + (events-won stat-info :offset-assert 28) + (events-won-pct stat-info :offset-assert 32) + (time-spent-playing stat-info :offset-assert 36) + (track-events-played stat-info :offset-assert 40) + (track-events-won stat-info :offset-assert 44) + (track-events-won-pct stat-info :offset-assert 48) + (track-events-top-three stat-info :offset-assert 52) + (track-events-top-three-pct stat-info :offset-assert 56) + (arena-events-played stat-info :offset-assert 60) + (arena-events-won stat-info :offset-assert 64) + (arena-events-won-pct stat-info :offset-assert 68) + (arena-events-top-three stat-info :offset-assert 72) + (arena-events-top-three-pct stat-info :offset-assert 76) + (human-kills stat-info :offset-assert 80) + (human-kills-per-minute stat-info :offset-assert 84) + (cpu-kills stat-info :offset-assert 88) + (cpu-kills-per-minute stat-info :offset-assert 92) + (deaths stat-info :offset-assert 96) + (deaths-per-minute stat-info :offset-assert 100) + (top-speed stat-info :offset-assert 104) + (biggest-air stat-info :offset-assert 108) + (best-deathmatch-kills stat-info :offset-assert 112) + (best-hunt-score stat-info :offset-assert 116) + (best-artifact-score stat-info :offset-assert 120) + (best-lap-snow stat-info :offset-assert 124) + (best-lap-jungle stat-info :offset-assert 128) + (best-lap-kras stat-info :offset-assert 132) + (best-lap-canyon stat-info :offset-assert 136) + (best-lap-canspar stat-info :offset-assert 140) + (best-lap-haven stat-info :offset-assert 144) + (best-lap-havjung stat-info :offset-assert 148) + (best-lap-havsew stat-info :offset-assert 152) + (best-lap-havtour stat-info :offset-assert 156) + (best-lap-sewer stat-info :offset-assert 160) + (best-lap-spargus stat-info :offset-assert 164) + (best-lap-docks stat-info :offset-assert 168) + (best-lap-dockkra stat-info :offset-assert 172) + (best-lap-dromdoc stat-info :offset-assert 176) + (best-lap-drome stat-info :offset-assert 180) + (best-lap-ice stat-info :offset-assert 184) + (best-lap-temple stat-info :offset-assert 188) + (best-lap-spartem stat-info :offset-assert 192) + (best-lap-iceberg stat-info :offset-assert 196) + (best-lap-kratour stat-info :offset-assert 200) + (best-lap-spatour stat-info :offset-assert 204) + (best-lap-icepass stat-info :offset-assert 208) + (best-lap-peak stat-info :offset-assert 212) + (best-lap-icetour stat-info :offset-assert 216) + (best-timetrial-snow stat-info :offset-assert 220) + (best-timetrial-jungle stat-info :offset-assert 224) + (best-timetrial-kras stat-info :offset-assert 228) + (best-timetrial-canyon stat-info :offset-assert 232) + (best-timetrial-canspar stat-info :offset-assert 236) + (best-timetrial-haven stat-info :offset-assert 240) + (best-timetrial-havjung stat-info :offset-assert 244) + (best-timetrial-havsew stat-info :offset-assert 248) + (best-timetrial-havtour stat-info :offset-assert 252) + (best-timetrial-sewer stat-info :offset-assert 256) + (best-timetrial-spargus stat-info :offset-assert 260) + (best-timetrial-docks stat-info :offset-assert 264) + (best-timetrial-dockkra stat-info :offset-assert 268) + (best-timetrial-dromdoc stat-info :offset-assert 272) + (best-timetrial-drome stat-info :offset-assert 276) + (best-timetrial-ice stat-info :offset-assert 280) + (best-timetrial-temple stat-info :offset-assert 284) + (best-timetrial-spartem stat-info :offset-assert 288) + (best-timetrial-iceberg stat-info :offset-assert 292) + (best-timetrial-kratour stat-info :offset-assert 296) + (best-timetrial-spatour stat-info :offset-assert 300) + (best-timetrial-icepass stat-info :offset-assert 304) + (best-timetrial-peak stat-info :offset-assert 308) + (best-timetrial-icetour stat-info :offset-assert 312) + ) + :method-count-assert 11 + :size-assert #x13c + :flag-assert #xb0000013c + (:methods + (net-player-ladder-stats-info-method-9 () none) ;; 9 + (net-player-ladder-stats-info-method-10 () none) ;; 10 + ) + ) +|# + +#| +(deftype net-clan-ladder-stats (structure) + ((version uint32 :offset-assert 0) + (overall-score uint32 :offset-assert 4) + (events-played uint32 :offset-assert 8) + (events-won uint32 :offset-assert 12) + (events-won-pct uint32 :offset-assert 16) + (events-lost uint32 :offset-assert 20) + (events-lost-pct uint32 :offset-assert 24) + (events-drawn uint32 :offset-assert 28) + (events-drawn-pct uint32 :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) +|# + +#| +(deftype net-clan-ladder-stats-info (structure) + ((version stat-info :offset-assert 0) + (overall-score stat-info :offset-assert 4) + (events-played stat-info :offset-assert 8) + (events-won stat-info :offset-assert 12) + (events-won-pct stat-info :offset-assert 16) + (events-lost stat-info :offset-assert 20) + (events-lost-pct stat-info :offset-assert 24) + (events-drawn stat-info :offset-assert 28) + (events-drawn-pct stat-info :offset-assert 32) + ) + :method-count-assert 11 + :size-assert #x24 + :flag-assert #xb00000024 + (:methods + (net-clan-ladder-stats-info-method-9 () none) ;; 9 + (net-clan-ladder-stats-info-method-10 () none) ;; 10 + ) + ) +|# + +;; (define-extern *net-player-ladder-stats-info-array* array) +;; (define-extern *net-player-ladder-stats-info* object) +;; (define-extern *net-clan-ladder-stats-info-array* array) +;; (define-extern *net-clan-ladder-stats-info* object) +;; (define-extern get-skill-level function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-mgr-medius-cache-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype medius-cached-info (basic) + ((medius-id int32 :offset-assert 4) + (accessed-time int32 :offset-assert 8) + (fetched-time int32 :offset-assert 12) + (status uint64 :offset-assert 16) + ) + :method-count-assert 12 + :size-assert #x18 + :flag-assert #xc00000018 + (:methods + (medius-cached-info-method-9 () none) ;; 9 + (medius-cached-info-method-10 () none) ;; 10 + (medius-cached-info-method-11 () none) ;; 11 + ) + ) +|# + +#| +(deftype medius-cache (basic) + ((objects basic :offset-assert 4) + ) + :method-count-assert 15 + :size-assert #x8 + :flag-assert #xf00000008 + (:methods + (medius-cache-method-9 () none) ;; 9 + (medius-cache-method-10 () none) ;; 10 + (medius-cache-method-11 () none) ;; 11 + (medius-cache-method-12 () none) ;; 12 + (medius-cache-method-13 () none) ;; 13 + (medius-cache-method-14 () none) ;; 14 + ) + ) +|# + +#| +(deftype medius-cache-index (structure) + ((id int32 :offset-assert 0) + ) + :method-count-assert 11 + :size-assert #x4 + :flag-assert #xb00000004 + (:methods + (medius-cache-index-method-9 () none) ;; 9 + (medius-cache-index-method-10 () none) ;; 10 + ) + ) +|# + +#| +(deftype medius-cache-index-array (structure) + ((ct int32 :offset-assert 0) + (max-ct int32 :offset-assert 4) + (data UNKNOWN :dynamic :offset-assert 8) + ) + :method-count-assert 13 + :size-assert #x8 + :flag-assert #xd00000008 + (:methods + (medius-cache-index-array-method-9 () none) ;; 9 + (medius-cache-index-array-method-10 () none) ;; 10 + (medius-cache-index-array-method-11 () none) ;; 11 + (medius-cache-index-array-method-12 () none) ;; 12 + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-mgr-medius-players-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype net-player-stats (structure) + ((stats-version int8 :offset-assert 0) + (current-clan int32 :offset-assert 4) + (last-channel-id int32 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype medius-cached-info-player (medius-cached-info) + ((name UNKNOWN 32 :offset-assert 24) + (format-name UNKNOWN 160 :offset-assert 56) + (online-state medius-player-online-state :inline :offset-assert 216) + (stats net-player-stats :inline :offset-assert 356) + (ladder-stats net-player-ladder-stats :inline :offset-assert 368) + ) + :method-count-assert 12 + :size-assert #x2ac + :flag-assert #xc000002ac + ) +|# + +#| +(deftype medius-player (medius-cache-index) + () + :method-count-assert 14 + :size-assert #x4 + :flag-assert #xe00000004 + (:methods + (medius-player-method-11 () none) ;; 11 + (medius-player-method-12 () none) ;; 12 + (medius-player-method-13 () none) ;; 13 + ) + ) +|# + +#| +(deftype medius-player-index-array (medius-cache-index-array) + () + :method-count-assert 13 + :size-assert #x8 + :flag-assert #xd00000008 + ) +|# + +;; (define-extern *medius-player-cache* medius-cache) +;; (define-extern *medius-buddies* object) +;; (define-extern *medius-buddies-online* object) +;; (define-extern *medius-ignores* object) +;; (define-extern *medius-room-players* object) +;; (define-extern *medius-recent-players* object) +;; (define-extern *medius-in-game-players* object) +;; (define-extern *medius-local-game-players* object) +;; (define-extern *medius-outstanding-clan-invites* object) +;; (define-extern *medius-mute-list* object) +;; (define-extern *medius-clan-members-online* object) +;; (define-extern *medius-my-player* medius-cached-info-player) +;; (define-extern *medius-recent-opponents* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-mgr-medius-clans-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype medius-cached-info-clan (medius-cached-info) + ((name UNKNOWN 32 :offset-assert 24) + (leader-acct-id int32 :offset-assert 56) + (leader-name UNKNOWN 32 :offset-assert 60) + (stats UNKNOWN 256 :offset-assert 92) + (members medius-player-index-array :offset-assert 348) + (ladder-stats net-clan-ladder-stats :inline :offset-assert 352) + ) + :method-count-assert 13 + :size-assert #x184 + :flag-assert #xd00000184 + (:methods + (medius-cached-info-clan-method-12 () none) ;; 12 + ) + ) +|# + +#| +(deftype medius-clan (medius-cache-index) + () + :method-count-assert 12 + :size-assert #x4 + :flag-assert #xc00000004 + (:methods + (medius-clan-method-11 () none) ;; 11 + ) + ) +|# + +#| +(deftype medius-clan-index-array (medius-cache-index-array) + () + :method-count-assert 13 + :size-assert #x8 + :flag-assert #xd00000008 + ) +|# + +#| +(deftype medius-incoming-clan-invite (structure) + ((clan-id int32 :offset-assert 0) + (invite-id int32 :offset-assert 4) + (clan-name UNKNOWN 32 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + ) +|# + +#| +(deftype medius-clan-challenge (structure) + ((send-clan-id int32 :offset-assert 0) + (recv-clan-id int32 :offset-assert 4) + (challenge-id int32 :offset-assert 8) + (status int32 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +;; (define-extern *clan-pending-deltas-valid* object) +;; (define-extern *clan-pending-deltas* object) +;; (define-extern *clan-msg-text* object) +;; (define-extern *clan-msg-id* object) +;; (define-extern *medius-clan-cache* medius-cache) +;; (define-extern *medius-recent-clans* object) +;; (define-extern *medius-clan-members-31* object) +;; (define-extern *medius-clan-members-30* object) +;; (define-extern *medius-clan-members-29* object) +;; (define-extern *medius-clan-members-28* object) +;; (define-extern *medius-clan-members-27* object) +;; (define-extern *medius-clan-members-26* object) +;; (define-extern *medius-clan-members-25* object) +;; (define-extern *medius-clan-members-24* object) +;; (define-extern *medius-clan-members-23* object) +;; (define-extern *medius-clan-members-22* object) +;; (define-extern *medius-clan-members-21* object) +;; (define-extern *medius-clan-members-20* object) +;; (define-extern *medius-clan-members-19* object) +;; (define-extern *medius-clan-members-18* object) +;; (define-extern *medius-clan-members-17* object) +;; (define-extern *medius-clan-members-16* object) +;; (define-extern *medius-clan-members-15* object) +;; (define-extern *medius-clan-members-14* object) +;; (define-extern *medius-clan-members-13* object) +;; (define-extern *medius-clan-members-12* object) +;; (define-extern *medius-clan-members-11* object) +;; (define-extern *medius-clan-members-10* object) +;; (define-extern *medius-clan-members-9* object) +;; (define-extern *medius-clan-members-8* object) +;; (define-extern *medius-clan-members-7* object) +;; (define-extern *medius-clan-members-6* object) +;; (define-extern *medius-clan-members-5* object) +;; (define-extern *medius-clan-members-4* object) +;; (define-extern *medius-clan-members-3* object) +;; (define-extern *medius-clan-members-2* object) +;; (define-extern *medius-clan-members-1* object) +;; (define-extern *medius-clan-members-0* object) +;; (define-extern *medius-incoming-clan-invites* array) +;; (define-extern *medius-clan-challenges* array) +;; (define-extern *medius-visible-clan-challenges* array) +;; (define-extern *medius-my-clan* medius-cached-info-clan) +;; (define-extern *medius-my-clan-members* object) +;; (define-extern *medius-enemy-clan* medius-cached-info-clan) +;; (define-extern *medius-enemy-clan-members* object) +;; (define-extern *medius-enemy-clan-id* object) +;; (define-extern *challenge-clans* array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-mgr-medius-games-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype medius-cached-info-game-status (medius-cached-info) + ((game-status int32 :offset-assert 24) + ) + :method-count-assert 12 + :size-assert #x1c + :flag-assert #xc0000001c + ) +|# + +#| +(deftype medius-game-array (structure) + ((ct int32 :offset-assert 0) + (data UNKNOWN 64 :offset-assert 4) + ) + :method-count-assert 11 + :size-assert #x5404 + :flag-assert #xb00005404 + (:methods + (medius-game-array-method-9 () none) ;; 9 + (medius-game-array-method-10 () none) ;; 10 + ) + ) +|# + +#| +(deftype medius-game-filter-settings (structure) + ((burn-version-and-flags int32 :offset-assert 0) + (event int8 :offset-assert 4) + (location int8 :offset-assert 5) + (world int32 :offset-assert 8) + (max-players int8 :offset-assert 12) + (class-type int8 :offset-assert 13) + ) + :method-count-assert 9 + :size-assert #xe + :flag-assert #x90000000e + ) +|# + +;; (define-extern *medius-game-status-cache* medius-cache) +;; (define-extern *medius-games* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-predict-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype net-predictor-simple-state (structure) + ((time int32 :offset-assert 0) + (pos vector :inline :offset-assert 16) + (vel vector :inline :offset-assert 32) + (rot quaternion :inline :offset-assert 48) + (angvel vector :inline :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) + +(deftype net-predictor-simple (structure) + ((last-net net-predictor-simple-state :inline :offset-assert 0) + (extrapolated net-predictor-simple-state :inline :offset-assert 80) + (active net-predictor-simple-state :inline :offset-assert 160) + (vel-scale vector :inline :offset-assert 240) + (angvel-scale vector :inline :offset-assert 256) + (min-delay int32 :offset-assert 272) + (max-delay int32 :offset-assert 276) + (pos-err-thresh float :offset-assert 280) + (rot-err-thresh float :offset-assert 284) + (pos-track-factor float :offset-assert 288) + (vel-track-factor float :offset-assert 292) + (max-extrapolation int32 :offset-assert 296) + (error-snap float :offset-assert 300) + (flags uint8 :offset-assert 304) + ) + :method-count-assert 18 + :size-assert #x131 + :flag-assert #x1200000131 + (:methods + (net-predictor-simple-method-9 () none) ;; 9 + (net-predictor-simple-method-10 () none) ;; 10 + (net-predictor-simple-method-11 () none) ;; 11 + (net-predictor-simple-method-12 () none) ;; 12 + (net-predictor-simple-method-13 () none) ;; 13 + (net-predictor-simple-method-14 () none) ;; 14 + (net-predictor-simple-method-15 () none) ;; 15 + (net-predictor-simple-method-16 () none) ;; 16 + (net-predictor-simple-method-17 () none) ;; 17 + ) + ) + +(deftype net-predictor-sphcol (net-predictor-simple) + () + :method-count-assert 18 + :size-assert #x131 + :flag-assert #x1200000131 + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; rigid-body-surface-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype rigid-body-surface (structure) + ((flags rigid-body-surface-flag :offset-assert 0) + (surface-type uint8 :offset-assert 1) + (friction float :offset-assert 4) + (bounce float :offset-assert 8) + (drag float :offset-assert 12) + (depth float :offset-assert 16) + (damage float :offset-assert 20) + (scrape-sound uint16 :offset-assert 24) + (glance-sound uint16 :offset-assert 26) + (impact-sound uint16 :offset-assert 28) + (tire-roll-mix UNKNOWN 6 :offset-assert 32) + (tire-roll-hum float :offset-assert 32) + (tire-roll-dirt float :offset-assert 36) + (tire-roll-sand float :offset-assert 40) + (tire-roll-snow float :offset-assert 44) + (tire-roll-grass float :offset-assert 48) + (tire-roll-knobby float :offset-assert 52) + (tire-slide-mix UNKNOWN 2 :offset-assert 56) + (tire-slide-road float :offset-assert 56) + (tire-slide-dirt float :offset-assert 60) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ;; field rigid-body-surface-flag is likely a value type. + ) +|# + +;; (define-extern *material-to-rb-material-table* object) +;; (define-extern rigid-body-surface-type-from-material function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; vehicle-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype vehicle-handling-info (structure) + ((brake-factor float :offset-assert 0) + (turbo-boost-factor float :offset-assert 4) + (turbo-boost-half-gain-speed float :offset-assert 8) + (tire-steering-angle float :offset-assert 12) + (tire-steering-speed-factor float :offset-assert 16) + (tire-steering-speed-bias float :offset-assert 20) + (ackermann-factor float :offset-assert 24) + (tire-static-friction float :offset-assert 28) + (tire-static-friction-speed meters :offset-assert 32) + (tire-dynamic-friction float :offset-assert 36) + (tire-dynamic-friction-speed meters :offset-assert 40) + (tire-arcade-factor float :offset-assert 44) + (drag-force-factor float :offset-assert 48) + (rolling-resistance float :offset-assert 52) + (downforce-factor float :offset-assert 56) + (roll-control-factor float :offset-assert 60) + (jump-thrust-factor float :offset-assert 64) + (buoyancy-factor float :offset-assert 68) + (water-drag-factor float :offset-assert 72) + (air-roll-torque float :offset-assert 76) + (air-pitch-torque float :offset-assert 80) + (air-angular-damping float :offset-assert 84) + (hop-turn-torque float :offset-assert 88) + (ground-torque-scale float :offset-assert 92) + (cos-ground-effect-angle float :offset-assert 96) + (ai-steering-factor float :offset-assert 100) + (ai-throttle-factor float :offset-assert 104) + ) + :pack-me + :method-count-assert 9 + :size-assert #x6c + :flag-assert #x90000006c + ) + +(deftype vehicle-engine-info (structure) + ((max-torque float :offset-assert 0) + (inertia float :offset-assert 4) + (drag float :offset-assert 8) + (idle-rpm float :offset-assert 12) + (clutch-min-rpm float :offset-assert 16) + (clutch-max-rpm float :offset-assert 20) + (min-rpm float :offset-assert 24) + (max-rpm float :offset-assert 28) + (peak-torque-rpm float :offset-assert 32) + (powerband-width-rpm float :offset-assert 36) + (torque-data uint8 16 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x38 + :flag-assert #x900000038 + ) + +(deftype vehicle-transmission-info (structure) + ((inertia float :offset-assert 0) + (upshift-rpm float :offset-assert 4) + (downshift-rpm float :offset-assert 8) + (final-drive-ratio float :offset-assert 12) + (gear-ratio-array float 8 :offset-assert 16) ;; guessed by decompiler + (gear-count int8 :offset-assert 48) + ) + :pack-me + :method-count-assert 9 + :size-assert #x31 + :flag-assert #x900000031 + ) + +;; +++vehicle-h:vehicle-wheel-flag +(defenum vehicle-wheel-flag + :type uint64 + :bitfield #t + (vwf0 0) + (vwf1 1) + (vwf2 2) + (vwf3 3) + (vwf4 4) + (vwf5 5) + ) +;; ---vehicle-h:vehicle-wheel-flag + +(declare-type vehicle-wheel-state structure) +(deftype vehicle-wheel-info (structure) + ((local-pos vector :inline :offset-assert 0) + (flags vehicle-wheel-flag :offset-assert 16) ;; vehicle-wheel-flag + (callback (function rigid-body-object vehicle-wheel-state vehicle-wheel-info none) :offset-assert 24) ;; guessed by decompiler + (inertia float :offset-assert 28) + (radius float :offset-assert 32) + (susp-arm-length float :offset-assert 36) + (steer-arm-length float :offset-assert 40) + (scale float :offset-assert 44) + (travel float :offset-assert 48) + (probe-x-offset float :offset-assert 52) + (probe-y-offset float :offset-assert 56) + (suspension-spring float :offset-assert 60) + (suspension-damping float :offset-assert 64) + (forward-grip float :offset-assert 68) + (side-grip float :offset-assert 72) + (max-brake-torque float :offset-assert 76) + (camber float :offset-assert 80) + (x-scale float :offset-assert 84) + (probe-radius float :offset-assert 88) + (width float :offset-assert 92) + (settle-pos float :offset-assert 96) + ) + :method-count-assert 9 + :size-assert #x64 + :flag-assert #x900000064 + ) + +(deftype vehicle-physics-model-info (structure) + ((front-wheel vehicle-wheel-info :inline :offset-assert 0) + (rear-wheel vehicle-wheel-info :inline :offset-assert 112) + ) + :method-count-assert 9 + :size-assert #xd4 + :flag-assert #x9000000d4 + ) + +(deftype vehicle-camera-info (structure) + ((string-min-height meters :offset-assert 0) + (string-max-height meters :offset-assert 4) + (string-min-length meters :offset-assert 8) + (string-max-length meters :offset-assert 12) + (min-fov float :offset-assert 16) + (max-fov float :offset-assert 20) + (head-offset float :offset-assert 24) + (foot-offset float :offset-assert 28) + (look-pos-array vector 4 :inline :offset-assert 32) ;; guessed by decompiler + (look-front vector :inline :offset 32) + (look-left vector :inline :offset 48) + (look-right vector :inline :offset 64) + (look-rear vector :inline :offset 80) + ) + :method-count-assert 9 + :size-assert #x60 + :flag-assert #x900000060 + ) + +(deftype vehicle-sound-loop-info (structure) + ((sound uint16 :offset-assert 0) + (speed float :offset-assert 4) + (min-speed float :offset-assert 8) + (max-speed float :offset-assert 12) + (pitch-offset float :offset-assert 16) + (pitch-scale float :offset-assert 20) + (min-pitch float :offset-assert 24) + (max-pitch float :offset-assert 28) + ) + :pack-me + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype vehicle-sound-engine-loop-info (structure) + ((sound-array uint16 3 :offset-assert 0) + (base-sound uint16 :offset 0) + (load-sound uint16 :offset 2) + (ai-sound uint16 :offset 4) + (original-rpm float :offset-assert 8) + (min-rpm float :offset-assert 12) + (max-rpm float :offset-assert 16) + (pitch-scale float :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) + +(deftype vehicle-sound-info (structure) + ((water-sound uint16 :offset-assert 0) ;; sound-name + (jump-sound uint16 :offset-assert 2) ;; sound-name + (turbo-sound uint16 :offset-assert 4) ;; sound-name + (susp-creak-sound uint16 :offset-assert 6) ;; sound-name + (susp-bottom-out-sound uint16 :offset-assert 8) ;; sound-name + (susp-speed-threshold float :offset-assert 12) + (rpm-scale float :offset-assert 16) + (engine-loop-count int8 :offset-assert 20) + (engine-loop-array uint32 :offset-assert 24) + (tire-roll-sounds vehicle-sound-loop-info 6 :inline :offset-assert 28) ;; guessed by decompiler + (tire-roll-hum-sound vehicle-sound-loop-info :inline :offset 28) + (tire-roll-dirt-sound vehicle-sound-loop-info :inline :offset 60) + (tire-roll-sand-sound vehicle-sound-loop-info :inline :offset 92) + (tire-roll-snow-sound vehicle-sound-loop-info :inline :offset 124) + (tire-roll-grass-sound vehicle-sound-loop-info :inline :offset 156) + (tire-roll-knobby-sound vehicle-sound-loop-info :inline :offset 188) + (tire-slide-sounds vehicle-sound-loop-info 2 :inline :offset-assert 220) ;; guessed by decompiler + (tire-slide-road-sound vehicle-sound-loop-info :inline :offset 220) + (tire-slide-dirt-sound vehicle-sound-loop-info :inline :offset 252) + ) + :method-count-assert 9 + :size-assert #x11c + :flag-assert #x90000011c + ) + +(deftype vehicle-particle-info (structure) + ((headlight-count int8 :offset-assert 0) + (taillight-count int8 :offset-assert 1) + (thruster-count int8 :offset-assert 2) + (thruster-flame-width meters :offset-assert 4) + (thruster-flame-length meters :offset-assert 8) + (thruster-local-pos vector :offset-assert 12) ;; guessed by decompiler + (exhaust-local-pos vector 2 :inline :offset-assert 16) ;; guessed by decompiler + (exhaust-local-dir vector 2 :inline :offset-assert 48) ;; guessed by decompiler + (smoke-local-pos vector 2 :inline :offset-assert 80) ;; guessed by decompiler + (smoke-local-vel vector 2 :inline :offset-assert 112) ;; guessed by decompiler + (headlight-local-pos vector 3 :inline :offset-assert 144) ;; guessed by decompiler + (taillight-local-pos vector 2 :inline :offset-assert 192) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #xe0 + :flag-assert #x9000000e0 + ) + +(deftype vehicle-section-info (structure) + ((rbody rigid-body-object-constants :offset-assert 0) + (hinge-axis vector :inline :offset-assert 16) + (color rgbaf :inline :offset-assert 32) + (joint-local matrix :inline :offset-assert 48) + (min-angle float :offset-assert 112) + (max-angle float :offset-assert 116) + (inv-hit-points float :offset-assert 120) + (hit-points float :offset-assert 124) + (rattle-sound uint16 :offset-assert 128) + (impact-sound uint16 :offset-assert 130) + ) + :pack-me + :method-count-assert 9 + :size-assert #x84 + :flag-assert #x900000084 + ) + +(deftype vehicle-damage-info (structure) + ((inv-toughness-factor float :offset-assert 0) + (hit-points float :offset-assert 4) + (inv-hit-points float :offset-assert 8) + (hit-threshold float :offset-assert 12) + (impact-damage-factor float :offset-assert 16) + (section-mask uint32 :offset-assert 20) + (section-array vehicle-section-info 12 :inline :offset-assert 32) ;; guessed by decompiler + (section-lf-fender vehicle-section-info :inline :offset 32) + (section-rf-fender vehicle-section-info :inline :offset 176) + (section-lr-fender vehicle-section-info :inline :offset 320) + (section-rr-fender vehicle-section-info :inline :offset 464) + (section-l-door vehicle-section-info :inline :offset 608) + (section-r-door vehicle-section-info :inline :offset 752) + (section-hood vehicle-section-info :inline :offset 1184) + (section-trunk vehicle-section-info :inline :offset 1328) + (section-f-bumper vehicle-section-info :inline :offset 896) + (section-r-bumper vehicle-section-info :inline :offset 1040) + (section-roof vehicle-section-info :inline :offset 1472) + (section-cockpit vehicle-section-info :inline :offset 1616) + ) + :method-count-assert 9 + :size-assert #x6e0 + :flag-assert #x9000006e0 + ) + +(deftype vehicle-setup-info (structure) + ((settle-height float :offset-assert 0) + (settle-rot-x float :offset-assert 4) + (idle-settle-height float :offset-assert 8) + (idle-settle-rot-x float :offset-assert 12) + (shadow-bot-clip float :offset-assert 16) + (shadow-locus-dist float :offset-assert 20) + (look-select uint8 :offset-assert 24) + (rp-node-count int8 :offset-assert 25) + (color-option-count int8 :offset-assert 26) + (color-option-select int8 :offset-assert 27) + (pad uint32) ;; added + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +(deftype vehicle-pilot-info (structure) + ((player-turn-anim-bias float :offset-assert 0) + (player-turn-anim-min float :offset-assert 4) + (player-turn-anim-max float :offset-assert 8) + (pilot-x-accel-factor float :offset-assert 12) + (pilot-y-accel-factor float :offset-assert 16) + (pilot-z-accel-factor float :offset-assert 20) + ) + :pack-me + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) + +;; +++vehicle-h:vehicle-seat-flag +(defenum vehicle-seat-flag + :type uint8 + :bitfield #t + (vsf0 0) + (vsf1 1) + (vsf2 2) + ) +;; ---vehicle-h:vehicle-seat-flag + +(deftype vehicle-seat-info (structure) + ((data uint8 16 :offset-assert 0 :score -1) ;; guessed by decompiler + (position vector :inline :offset 0) + (pos-x float :offset 0) + (pos-y float :offset 4) + (pos-z float :offset 8) + (angle int16 :offset 12) + (flags vehicle-seat-flag :offset 14) ;; vehicle-seat-flag + (mask uint16 :offset 14) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype vehicle-daxter-info (structure) + ((data uint32 3 :offset-assert 0 :score -1) + (counts int8 3 :offset-assert 12 :score -1) + (chassis-seats uint32 :offset 0) + (trunk-seats uint32 :offset 4) + (roof-seats uint32 :offset 8) + (chassis-seat-count int8 :offset 12) + (trunk-seat-count int8 :offset 13) + (roof-seat-count int8 :offset 14) + ) + :method-count-assert 9 + :size-assert #xf + :flag-assert #x90000000f + ) + +(deftype vehicle-rider-info (structure) + ((seat-count int8 :offset-assert 0) + (attach-point-count int8 :offset-assert 1) + (seat-array vehicle-seat-info 2 :inline :offset-assert 16) ;; guessed by decompiler + (rider-hand-offset vector 2 :inline :offset-assert 48) ;; guessed by decompiler + (attach-point-array uint32 :offset-assert 80) + (attach-node-array uint32 :offset-assert 84) + ) + :method-count-assert 9 + :size-assert #x58 + :flag-assert #x900000058 + ) + +(deftype vehicle-hardpoint-info (structure) + ((local-pos-array uint32 :offset-assert 0) + (flag-attach vector :inline :offset-assert 16) + (antenna-attach vector :inline :offset-assert 32) + (nodes uint8 7 :offset-assert 48 :score -1) + (left-gun int8 :offset 48) + (right-gun int8 :offset 49) + (mine-launcher int8 :offset 50) + (trunk int8 :offset 51) + (super-turbo-attach uint8 3 :offset 52) + (shield-anim int16 :offset-assert 56) + ) + :method-count-assert 9 + :size-assert #x3a + :flag-assert #x90000003a + ) + +(deftype vehicle-explosion-info (joint-exploder-static-params) + ((skel skeleton-group :offset-assert 32) ;; guessed by decompiler + (skel-name string :offset-assert 36) ;; guessed by decompiler + (anim int32 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) + +;; bunch of fields missing from inspect +(deftype vehicle-particle-common-info (structure) + ((headlight-glow-template sprite-glow-data :offset 36) + (taillight-glow-template sprite-glow-data :offset-assert 40) + (thruster-glow-template sprite-glow-data :offset-assert 44) + (thrust-tex-id uint32 :offset 72) + (dark-thrust-tex-id uint32 :offset-assert 76) + (rgb rgbaf :inline :offset 128) + (lights vu-lights :offset-assert 144) + (pad uint16 4) ;; added + ) + :method-count-assert 10 + :size-assert #x9c + :flag-assert #xa0000009c + (:methods + (vehicle-particle-common-info-method-9 () none) ;; 9 ;; (init! (_type_) none) + ) + ) + +(deftype vehicle-shield-info (structure) + ((inner ellipsoid :inline :offset-assert 0) + (offset vector :inline :offset-assert 16) + (outer-multiple float :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x24 + :flag-assert #x900000024 + ) + +(deftype rigid-body-vehicle-constants (rigid-body-object-constants) + ((flags uint32 :offset-assert 200) + (vehicle-type uint8 :offset-assert 204) ;; vehicle-type-u8 + (engine vehicle-engine-info :inline :offset-assert 208) + (transmission vehicle-transmission-info :inline :offset-assert 264) + (handling vehicle-handling-info :inline :offset-assert 316) + (pilot vehicle-pilot-info :inline :offset-assert 424) + (camera vehicle-camera-info :inline :offset-assert 448) + (sound vehicle-sound-info :inline :offset-assert 544) + (particles vehicle-particle-info :inline :offset-assert 832) + (damage vehicle-damage-info :inline :offset-assert 1056) + (physics-model vehicle-physics-model-info :inline :offset-assert 2816) + (setup vehicle-setup-info :offset-assert 3028) + (rider vehicle-rider-info :inline :offset-assert 3040) + (daxter vehicle-daxter-info :offset-assert 3128) + (hardpoint vehicle-hardpoint-info :inline :offset-assert 3136) + (shield vehicle-shield-info :inline :offset-assert 3200) + (explosion vehicle-explosion-info :offset-assert 3236) ;; guessed by decompiler + (explosion-part int32 :offset-assert 3240) + (debris debris-static-params :offset-assert 3244) ;; guessed by decompiler + (name-text text-id :offset-assert 3248) ;; guessed by decompiler + (helmet-offset vector :offset-assert 3252) + (particle-common vehicle-particle-common-info :offset-assert 3256) + ) + :method-count-assert 11 + :size-assert #xcbc + :flag-assert #xb00000cbc + (:methods + (rigid-body-vehicle-constants-method-10 () none) ;; 10 + ) + ) + +(deftype vehicle-section (structure) + ((vel vector :inline :offset-assert 0) + (info vehicle-section-info :offset-assert 16) + (node-list basic :offset-assert 20) + (draw basic :offset-assert 24) + (car-info car-info-full :offset-assert 28) + (debris uint64 :offset-assert 32) + (damage float :offset-assert 40) + (angle float :offset-assert 44) + (d-angle float :offset-assert 48) + (node-index int8 :offset-assert 52) + (parent-node-index int8 :offset-assert 53) + (flags uint8 :offset-assert 54) + (car-part int8 :offset-assert 55) + ) + :method-count-assert 20 + :size-assert #x38 + :flag-assert #x1400000038 + (:methods + (vehicle-section-method-9 () none) ;; 9 + (vehicle-section-method-10 () none) ;; 10 + (vehicle-section-method-11 () none) ;; 11 + (vehicle-section-method-12 () none) ;; 12 + (vehicle-section-method-13 () none) ;; 13 + (vehicle-section-method-14 () none) ;; 14 + (vehicle-section-method-15 () none) ;; 15 + (vehicle-section-method-16 () none) ;; 16 + (vehicle-section-method-17 () none) ;; 17 + (vehicle-section-method-18 () none) ;; 18 + (vehicle-section-method-19 () none) ;; 19 + ) + ) + +;; +++vehicle-h:vehicle-controls-flag +(defenum vehicle-controls-flag + :type uint8 + :bitfield #t + (vcf0 0) + (vcf1 1) + (vcf2 2) + (vcf3 3) + (vcf4 4) + (vcf5 5) + (vcf6 6) + (vcf7 7) + ) +;; ---vehicle-h:vehicle-controls-flag + +(deftype vehicle-controls (structure) + ((dataf float 5 :offset-assert 0) + (dataw float 5 :offset 0) + (steering float :offset 0) + (throttle float :offset 4) + (brake float :offset 8) + (lean-z float :offset 12) + (handbrake float :offset 16) + (flags vehicle-controls-flag :offset-assert 20) ;; vehicle-controls-flag + (prev-flags vehicle-controls-flag :offset-assert 21) ;; vehicle-controls-flag + (pad0 uint8 2 :offset-assert 22) ;; guessed by decompiler + ) + :pack-me + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) + +(deftype vehicle-particle (structure) + ((birth-accum uint32 2 :offset-assert 0) + (launcher sparticle-launcher :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) + +;; +++vehicle-h:vehicle-flag +(defenum vehicle-flag + :type uint64 + :bitfield #t + :copy-entries rigid-body-object-flag + (suppress-physics 4) + (in-air 5) + (on-ground 6) + (riding 7) + (player-grabbed 8) + (player-driving 9) + (player-owned 10) + (remote-control 11) + (ai-driving 12) + (ignition 13) + (nav-spheres 14) + (turbo-boost 15) + (reverse-gear 16) + (camera 17) + (camera-inside-view 18) + (camera-look-mode 19) + (sounds 20) + (particles 21) + (joints 22) + (lights-on 23) + (lights-update 24) + (lights-dead 25) + (overturned 26) + (ignore-damage 27) + (ignore-impulse 28) + (highspeed-collision 29) + (oil-slick 30) + (turbo-pad 31) + (fragile 32) + (fragile-death 33) + (ignore-powerups 34) + (turbo-toggle 35) + (start-boost-latch 36) + (start-boost 37) + (shield 38) + (respawn-invul 39) + (draw-marks 40) + (temp 41) + (dark-eco-boost-triggered 42) + (ai-off-nav-mesh 43) + (oversteer 44) + (ghost 45) + (wheel-fire 46) + (stuck 47) + (sinking 48) + (no-color-mod 49) + (suppress-look 50) + (disable-weapons 51) + (superhero 52) + ) +;; ---vehicle-h:vehicle-flag + +(deftype vehicle (rigid-body-object) + ((car-info car-info-full :offset-assert 288) + (vehicle-flags vehicle-flag :offset 264 :score 1) ;; renamed ;; rigid-body-object-flag + (damage-matrix matrix 2 :inline :offset-assert 304) + (damage-direction vector :inline :offset-assert 432) + (camera-pos vector :inline :offset-assert 448) + (control-hook (function vehicle vehicle-controls) :offset 472) ;; guessed by decompiler + (control-mask vehicle-controls :offset-assert 476) + (impact-callback basic :offset-assert 480) + (controls vehicle-controls :inline :offset-assert 484) + (prev-controls vehicle-controls :inline :offset-assert 508) + (impact rigid-body-impact :inline :offset-assert 544) + (target-acceleration vector :inline :offset-assert 624) + (impact-local-pos vector :inline :offset-assert 640) + (lin-acceleration vector :inline :offset-assert 656) + (max-impact-impulse float :offset-assert 672) + (sum-impact-impulse float :offset-assert 676) + (underside-y float :offset-assert 680) + (side-x float :offset-assert 684) + (health float :offset-assert 688) + (damage-factor float :offset-assert 692) + (speed-factor float :offset 700) + (behavior uint64 :offset 728) + (cam-view int8 :offset-assert 736) + (cam-speed-interp float :offset 744) + (camera-dist float :offset-assert 748) + (impact-proc handle :offset 768) ;; handle + (net-player uint64 :offset-assert 776) + (impact-time uint32 :offset 788) + (prev-impact-time uint32 :offset-assert 792) + (offscreen-time uint32 :offset 808) + (physics-enabled-time uint32 :offset 824) + (water-height float :offset 856) + (pred net-predictor-sphcol :inline :offset 1808) + (next-reliable-send-time int32 :offset-assert 2116) + (player-id int8 :offset-assert 2120) + (killed-by int8 :offset-assert 2121) + (killed-with int8 :offset-assert 2122) + (last-warp-time int32 :offset 2132) + (last-sent-vehicle-control-flags uint8 :offset-assert 2136) + ) + :method-count-assert 204 + :size-assert #x859 + :flag-assert #xcc07d00859 + ;; field vehicle-flag is likely a value type. + (:methods + (vehicle-method-89 () none) ;; 89 ;; (init-reverse (_type_ vehicle-controls) none) + (vehicle-method-90 () none) ;; 90 ;; (control-hook-ai (_type_ vehicle-controls) none) + (vehicle-method-91 () none) ;; 91 ;; (control-hook-player (_type_) none) + (vehicle-method-92 () none) ;; 92 ;; (vehicle-method-92 (_type_ vehicle-controls) none) + (vehicle-method-93 () none) ;; 93 ;; (vehicle-method-93 (_type_) none) + (vehicle-method-94 () none) ;; 94 ;; (vehicle-method-94 (_type_) none) + (vehicle-method-95 () none) ;; 95 ;; (vehicle-method-95 (_type_ vector float) none) + (vehicle-method-96 () none) ;; 96 ;; (vehicle-method-96 (_type_ float) none) + (vehicle-method-97 () none) ;; 97 ;; (vehicle-method-97 (_type_ float vehicle-physics-work) none) + (vehicle-method-98 () none) ;; 98 ;; (vehicle-method-98 (_type_) none) + (vehicle-method-99 () none) ;; 99 ;; (vehicle-method-99 (_type_) none) + (vehicle-method-100 () none) ;; 100 ;; (vehicle-method-100 (_type_) none) + (vehicle-method-101 () none) ;; 101 ;; (vehicle-method-101 (_type_) none) + (vehicle-method-102 () none) ;; 102 ;; (vehicle-method-102 (_type_) symbol) + (vehicle-method-103 () none) ;; 103 ;; (vehicle-method-103 (_type_) none) + (vehicle-method-104 () none) ;; 104 ;; (vehicle-method-104 (_type_) none) + (vehicle-method-105 () none) ;; 105 ;; (vehicle-method-105 (_type_) none) + (vehicle-method-106 () none) ;; 106 ;; (vehicle-method-106 (_type_) none) + (vehicle-method-107 () none) ;; 107 ;; (vehicle-method-107 (_type_ int process) none) + (vehicle-method-108 () none) ;; 108 ;; (vehicle-method-108 (_type_ int) none) + (vehicle-method-109 () none) ;; 109 ;; (vehicle-method-109 (_type_) none) + (vehicle-method-110 () none) ;; 110 ;; (vehicle-method-110 (_type_) none) + (vehicle-method-111 () none) ;; 111 ;; (get-linear-accel! (_type_ vector) none) + (vehicle-method-112 () none) ;; 112 ;; (copy-vehicle-controls! (_type_ vehicle-controls) none) + (vehicle-method-113 () none) ;; 113 ;; (vehicle-method-113 (_type_ vector int int) none) + (vehicle-method-114 () none) ;; 114 ;; (vehicle-method-114 (_type_ int) none) + (vehicle-method-115 () none) ;; 115 ;; (vehicle-method-115 (_type_) none) + (vehicle-method-116 () none) ;; 116 ;; (vehicle-method-116 (_type_ symbol) none) + (vehicle-method-117 () none) ;; 117 ;; (vehicle-method-117 (_type_) none) + (vehicle-method-118 () none) ;; 118 ;; (vehicle-method-118 (_type_) none) + (vehicle-method-119 () none) ;; 119 ;; (vehicle-method-119 (_type_) none) + (vehicle-method-120 () none) ;; 120 ;; (apply-gravity (_type_ float) none) + (vehicle-method-121 () none) ;; 121 ;; (apply-gravity1 (_type_ float) none) + (vehicle-method-122 () none) ;; 122 ;; (vehicle-method-122 (_type_) none) + (vehicle-method-123 () none) ;; 123 ;; (vehicle-method-123 (_type_) none) + (vehicle-method-124 () none) ;; 124 ;; (vehicle-method-124 (_type_) none) + (vehicle-method-125 () none) ;; 125 ;; (vehicle-method-125 (_type_) none) + (vehicle-method-126 () none) ;; 126 ;; (vehicle-method-126 (_type_) none) + (vehicle-method-127 () none) ;; 127 ;; (check-player-get-on (_type_ process-focusable) symbol) + (vehicle-method-128 () none) ;; 128 ;; (vehicle-method-128 (_type_) symbol) + (vehicle-method-129 () none) ;; 129 ;; (vehicle-method-129 (_type_) none) + (vehicle-method-130 () none) ;; 130 ;; (vehicle-method-130 (_type_) none) + (vehicle-method-131 () none) ;; 131 ;; (vehicle-method-131 (_type_ traffic-object-spawn-params) none) + (vehicle-method-132 () none) ;; 132 ;; (vehicle-method-132 (_type_ traffic-object-spawn-params) none) + (vehicle-method-133 () none) ;; 133 ;; (vehicle-method-133 (_type_ traffic-object-spawn-params) none) + (vehicle-method-134 () none) ;; 134 ;; (vehicle-method-134 (_type_) none) + (vehicle-method-135 () none) ;; 135 ;; (vehicle-method-135 (_type_) none) + (vehicle-method-136 () none) ;; 136 ;; (vehicle-method-136 (_type_) none) + (vehicle-method-137 () none) ;; 137 ;; (vehicle-method-137 (_type_) none) + (vehicle-method-138 () none) ;; 138 ;; (vehicle-method-138 (_type_) none) + (vehicle-method-139 () none) ;; 139 ;; (vehicle-method-139 (_type_) none) + (vehicle-method-140 () none) ;; 140 ;; (vehicle-method-140 (_type_) none) + (vehicle-method-141 () none) ;; 141 ;; (vehicle-method-141 (_type_) symbol) + (vehicle-method-142 () none) ;; 142 ;; (vehicle-method-142 (_type_) none) + (vehicle-method-143 () none) ;; 143 ;; (vehicle-method-143 (_type_ process) object) + (vehicle-method-144 () none) ;; 144 ;; (vehicle-method-144 (_type_) none) + (vehicle-method-145 () none) ;; 145 ;; (vehicle-method-145 (_type_) none) + (vehicle-method-146 () none) ;; 146 ;; (vehicle-method-146 (_type_ vector) none) + (vehicle-method-147 () none) ;; 147 ;; (vehicle-method-147 (_type_) none) + (vehicle-method-148 () none) ;; 148 ;; (vehicle-method-148 (_type_) none) + (vehicle-method-149 () none) ;; 149 ;; (vehicle-method-149 (_type_) none) + (vehicle-method-150 () none) ;; 150 ;; (vehicle-method-150 (_type_) none) + (vehicle-method-151 () none) ;; 151 ;; (set-hit-points (_type_ float) none) + (vehicle-method-152 () none) ;; 152 + (vehicle-method-153 () none) ;; 153 + (vehicle-method-154 () none) ;; 154 + (vehicle-method-155 () none) ;; 155 + (vehicle-method-156 () none) ;; 156 + (vehicle-method-157 () none) ;; 157 + (vehicle-method-158 () none) ;; 158 + (vehicle-method-159 () none) ;; 159 + (vehicle-method-160 () none) ;; 160 + (vehicle-method-161 () none) ;; 161 + (vehicle-method-162 () none) ;; 162 + (vehicle-method-163 () none) ;; 163 + (vehicle-method-164 () none) ;; 164 + (vehicle-method-165 () none) ;; 165 + (vehicle-method-166 () none) ;; 166 + (vehicle-method-167 () none) ;; 167 + (vehicle-method-168 () none) ;; 168 + (vehicle-method-169 () none) ;; 169 + (vehicle-method-170 () none) ;; 170 + (vehicle-method-171 () none) ;; 171 + (vehicle-method-172 () none) ;; 172 + (vehicle-method-173 () none) ;; 173 + (vehicle-method-174 () none) ;; 174 + (vehicle-method-175 () none) ;; 175 + (vehicle-method-176 () none) ;; 176 + (vehicle-method-177 () none) ;; 177 + (vehicle-method-178 () none) ;; 178 + (vehicle-method-179 () none) ;; 179 + (vehicle-method-180 () none) ;; 180 + (vehicle-method-181 () none) ;; 181 + (vehicle-method-182 () none) ;; 182 + (vehicle-method-183 () none) ;; 183 + (vehicle-method-184 () none) ;; 184 + (vehicle-method-185 () none) ;; 185 + (vehicle-method-186 () none) ;; 186 + (vehicle-method-187 () none) ;; 187 + (vehicle-method-188 () none) ;; 188 + (vehicle-method-189 () none) ;; 189 + (vehicle-method-190 () none) ;; 190 + (vehicle-method-191 () none) ;; 191 + (vehicle-method-192 () none) ;; 192 + (vehicle-method-193 () none) ;; 193 + (vehicle-method-194 () none) ;; 194 + (vehicle-method-195 () none) ;; 195 + (vehicle-method-196 () none) ;; 196 + (vehicle-method-197 () none) ;; 197 + (vehicle-method-198 () none) ;; 198 + (vehicle-method-199 () none) ;; 199 + (vehicle-method-200 () none) ;; 200 + (vehicle-method-201 () none) ;; 201 + (vehicle-method-202 () none) ;; 202 + (vehicle-method-203 () none) ;; 203 + ) + ) + +(deftype vehicle-draw-thruster-params (structure) + ((quat quaternion :inline :offset-assert 0) + (trans vector :inline :offset-assert 16) + (thrust-rgb rgbaf :inline :offset-assert 32) + (glow-rgb rgbaf :inline :offset-assert 48) + (tex-id uint32 :offset-assert 64) + (thrust float :offset-assert 68) + (width float :offset-assert 72) + (length float :offset-assert 76) + (fog-fade float :offset-assert 80) + ) + :method-count-assert 9 + :size-assert #x54 + :flag-assert #x900000054 + ) + +;; (deftype debug-vehicle-work (basic) +;; () +;; :flag-assert #x900000080 +;; ) + +;; (define-extern vehicle-init-remote function) +;; (define-extern *msg-map-vehicle* array) +;; (define-extern *net-process-class-info-vehicle* object) +;; (define-extern vehicle-get-flag-attach-point function) +;; (define-extern meters-per-sec->mph function) ;; (function float float) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; race-ai-tuning-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype race-ai-tuning-entry (structure) + ((player-ahead-distance float :offset-assert 0) + (ahead-speed-delta float :offset-assert 4) + (behind-speed-delta float :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) + +(deftype race-ai-base-speed-info (structure) + ((adventure-minimum float :offset-assert 0) + (adventure-diff-mod float :offset-assert 4) + (exhibition-rookie float :offset-assert 8) + (exhibition-pro float :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype race-ai-tuning-info (structure) + ((tuning-entry race-ai-tuning-entry 6 :inline :offset-assert 0) + (ahead-threshold float :offset-assert 96) + (behind-threshold float :offset-assert 100) + (base-speed race-ai-base-speed-info :offset-assert 104) + ) + :method-count-assert 9 + :size-assert #x6c + :flag-assert #x90000006c + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; race-line-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype race-line-slice-mapping (structure) + ((valid-entries uint16 :offset-assert 0) + (index-entries uint32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype race-line-query-info (structure) + ((query-position vector :inline :offset-assert 0) + (nearest-position vector :inline :offset-assert 16) + (ahead-position vector :inline :offset-assert 32) + (ahead-direction vector :inline :offset-assert 48) + (direction vector :inline :offset-assert 64) + (angle-sum-distance float :offset-assert 80) + (look-ahead-distance float :offset-assert 84) + (current-slice int32 :offset-assert 88) + (current-line basic :offset-assert 92) + (total-angle-delta float :offset-assert 96) + (skip-gaps? basic :offset-assert 100) + ) + :method-count-assert 9 + :size-assert #x68 + :flag-assert #x900000068 + ) +|# + +#| +(deftype race-line (structure) + ((scale vector :inline :offset-assert 0) + (offset vector :inline :offset-assert 16) + (length float :offset-assert 32) + (flags uint16 :offset-assert 36) + (points-per-slice int16 :offset-assert 38) + (point-count int16 :offset-assert 40) + (gap-index-count int16 :offset-assert 42) + (slice-count int16 :offset-assert 44) + (extra-points int16 :offset-assert 46) + (points uint32 :offset-assert 48) + (gap-indices uint32 :offset-assert 52) + (slices uint32 :offset-assert 56) + (pad uint32 :offset-assert 60) + ) + :method-count-assert 15 + :size-assert #x40 + :flag-assert #xf00000040 + (:methods + (race-line-method-9 () none) ;; 9 + (race-line-method-10 () none) ;; 10 + (race-line-method-11 () none) ;; 11 + (race-line-method-12 () none) ;; 12 + (race-line-method-13 () none) ;; 13 + (race-line-method-14 () none) ;; 14 + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; race-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype racer-state (structure) + ((position vector :inline :offset-assert 0) + (start-position vector :inline :offset-assert 16) + (last-race-mesh-position vector :inline :offset-assert 32) + (racer uint64 :offset-assert 48) ;; handle + (lap-distance float :offset-assert 56) + (lap float :offset-assert 60) + (prev-racer-lap float :offset-assert 64) + (next-racer-lap float :offset-assert 68) + (end-of-race-dist float :offset-assert 72) + (max-speed float :offset-assert 76) + (last-race-line race-line :offset-assert 80) + (last-slice int16 :offset-assert 84) + (flags uint16 :offset-assert 86) ;; racer-state-flags + (rank int8 :offset-assert 88) + (ai-rank int8 :offset-assert 89) + (lap-count int8 :offset-assert 90) + (lap-quadrant int8 :offset-assert 91) + ) + :method-count-assert 12 + :size-assert #x5c + :flag-assert #xc0000005c + (:methods + (racer-state-method-9 () none) ;; 9 ;; (update-lap-distance (_type_ race-state) none) + (racer-state-method-10 () none) ;; 10 ;; (begin-lap (_type_ race-state) none) + (racer-state-method-11 () none) ;; 11 ;; (end-lap (_type_ race-state) none) + ) + ) +|# + +#| +(deftype race-state (structure) + ((start-sphere sphere :inline :offset-assert 0) + (start-dir vector :inline :offset-assert 16) + (finish-sphere sphere :inline :offset-assert 32) + (finish-dir vector :inline :offset-assert 48) + (race-state uint8 :offset-assert 64) + (racer-count int8 :offset-assert 65) + (lap-count int8 :offset-assert 66) + (start-time int32 :offset-assert 68) + (min-player-lap float :offset-assert 72) + (max-player-lap float :offset-assert 76) + (ai-tuning-indices basic :offset-assert 80) + (first-place-human-id int32 :offset-assert 84) + (rubberband-ref-lap float :offset-assert 88) + (mesh basic :offset-assert 92) + (race-ai-tuning basic :offset-assert 96) + (race-ai-tuning-indices basic :offset-assert 100) + (longest-race-line-dist float :offset-assert 104) + (racer-array racer-state 10 :offset-assert 112) ;; guessed by decompiler + ) + :method-count-assert 12 + :size-assert #x430 + :flag-assert #xc00000430 + (:methods + (race-state-method-9 () none) ;; 9 ;; (init-racers! (_type_ process-drawable int) none) + (race-state-method-10 () none) ;; 10 ;; (begin-race (_type_) none) + (race-state-method-11 () none) ;; 11 ;; (update (_type_) none) + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; race-mesh-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype race-mesh-hash-search (structure) + ((best-dist float :offset-assert 0) + (debug-cells-searched int32 :offset-assert 4) + (debug-slices-searched int32 :offset-assert 8) + (bounds bounding-box4w :inline :offset-assert 16) + (cell-quads vector 2 :offset-assert 48) ;; guessed by decompiler + (slice-quads vector 4 :offset-assert 80) ;; guessed by decompiler + (cell-bits vector16ub 2 :offset-assert 48) ;; guessed by decompiler + (slice-bits vector16ub 2 :offset-assert 80) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x90 + :flag-assert #x900000090 + ) +|# + +#| +(deftype race-mesh-slice-query (structure) + ((search-sphere sphere :inline :offset-assert 0) + (slice-range UNKNOWN 2 :offset-assert 16) + (race-line race-line :offset-assert 20) + (pt-on-slice vector :inline :offset-assert 32) + (slice-corners vector 4 :offset-assert 48) ;; guessed by decompiler + (lap-dist float :offset-assert 112) + (slice-id int16 :offset-assert 116) + ) + :method-count-assert 9 + :size-assert #x76 + :flag-assert #x900000076 + ) +|# + +#| +(deftype race-mesh-edge (structure) + ((left vector :inline :offset-assert 0) + (right vector :inline :offset-assert 16) + (lap-dist float :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype race-mesh-slice (structure) + ((edge-index-array uint16 2 :offset-assert 0) ;; guessed by decompiler + (start-edge int16 :offset-assert 0) + (end-edge int16 :offset-assert 2) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype race-mesh-hash-cell (structure) + ((first-slice int16 :offset-assert 0) + (slice-count uint8 :offset-assert 2) + (pad uint8 :offset-assert 3) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype race-mesh-hash (structure) + ((cells-wide int8 :offset-assert 0) + (cells-tall int8 :offset-assert 1) + (cell-length float :offset-assert 4) + (cells (inline-array race-mesh-hash-cell) :offset-assert 8) ;; guessed by decompiler + (slice-table (inline-array race-mesh-slice) :offset-assert 12) ;; guessed by decompiler + (origin vector :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype race-mesh (basic) + ((version uint8 :offset-assert 4) + (flags uint8 :offset-assert 5) ;; race-mesh-flag + (slice-count int16 :offset-assert 6) + (edge-count int16 :offset-assert 8) + (race-line-count int16 :offset-assert 10) + (ai-valid-mask int16 :offset-assert 12) + (pad uint8 2 :offset-assert 14) ;; guessed by decompiler + (slices (inline-array race-mesh-slice) :offset-assert 16) ;; guessed by decompiler + (edges (inline-array race-mesh-edge) :offset-assert 20) ;; guessed by decompiler + (hash race-mesh-hash :offset-assert 24) + (race-lines uint32 :offset-assert 28) + ) + :method-count-assert 21 + :size-assert #x20 + :flag-assert #x1500000020 + (:methods + (race-mesh-method-9 () none) ;; 9 ;; (debug-draw-path (_type_ int int rgba rgba) none) + (race-mesh-method-10 () none) ;; 10 ;; (debug-draw-path-from-history (_type_ int int) symbol) + (race-mesh-method-11 () none) ;; 11 ;; (debug-draw-slice (_type_ int) none) + (race-mesh-method-12 () none) ;; 12 ;; (debug-draw-edges (_type_) none) + (race-mesh-method-13 () none) ;; 13 ;; (race-mesh-method-13 (_type_ race-mesh-slice-query) none) + (race-mesh-method-14 () none) ;; 14 ;; (race-mesh-method-14 (_type_ race-mesh-slice-query) none) + (race-mesh-method-15 () none) ;; 15 ;; (race-mesh-method-15 (_type_ int race-mesh-slice-query) none) + (race-mesh-method-16 () none) ;; 16 ;; (race-mesh-method-16 (_type_ race-mesh-slice-query) none) + (race-mesh-method-17 () none) ;; 17 ;; (race-mesh-method-17 (_type_ race-mesh-slice-query) symbol) + (race-mesh-method-18 () none) ;; 18 ;; (race-mesh-method-18 (_type_ race-mesh-hash-search int int race-mesh-slice-query) none) + (race-mesh-method-19 () none) ;; 19 ;; (race-mesh-method-19 (_type_ int race-mesh-slice-query) symbol) + (race-mesh-method-20 () none) ;; 20 + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; race-control ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype race-control (structure) + ((state race-state :offset-assert 0) + (racer-state racer-state :offset-assert 4) + (mesh race-mesh :offset-assert 8) ;; guessed by decompiler + (line race-line :offset-assert 12) + ) + :method-count-assert 10 + :size-assert #x10 + :flag-assert #xa00000010 + (:methods + (race-control-method-9 () none) ;; 9 ;; (race-control-method-9 (_type_ int vector) none) + ) + ) +|# + +;; (define-extern output-race-mesh function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-weapons-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype vehicle-weapon-slot (process-drawable) + ((owning-vehicle uint64 :offset-assert 248) + (ammunition int8 :offset-assert 256) + (flags uint8 :offset-assert 257) + (in-slot uint8 :offset-assert 258) + (powerup-level uint8 :offset-assert 259) + (my-type uint8 :offset-assert 260) + ) + :method-count-assert 60 + :size-assert #x105 + :flag-assert #x3c00800105 + (:methods + (vehicle-weapon-slot-method-51 () none) ;; 51 + (vehicle-weapon-slot-method-52 () none) ;; 52 + (vehicle-weapon-slot-method-53 () none) ;; 53 + (vehicle-weapon-slot-method-54 () none) ;; 54 + (vehicle-weapon-slot-method-55 () none) ;; 55 + (vehicle-weapon-slot-method-56 () none) ;; 56 + (vehicle-weapon-slot-method-57 () none) ;; 57 + (vehicle-weapon-slot-method-58 () none) ;; 58 + (vehicle-weapon-slot-method-59 () none) ;; 59 + ) + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype gunmount-drawable (process-drawable) + ((mounted-on uint64 :offset-assert 248) + (hardpoint int8 :offset-assert 256) + ) + :method-count-assert 54 + :size-assert #x101 + :flag-assert #x3600800101 + (:methods + (gunmount-drawable-method-50 () none) ;; 50 + (gunmount-drawable-method-51 () none) ;; 51 + (gunmount-drawable-method-52 () none) ;; 52 + (gunmount-drawable-method-53 () none) ;; 53 + ) + ) +|# + +#| +(deftype gunmount-generic-drawable (gunmount-drawable) + ((config uint8 :offset-assert 257) + (flash uint64 :offset-assert 264) + (changeover-anim int32 :offset-assert 272) + (powerup-level int8 :offset-assert 276) + ) + :method-count-assert 56 + :size-assert #x115 + :flag-assert #x3800900115 + (:methods + (gunmount-generic-drawable-method-54 () none) ;; 54 + (gunmount-generic-drawable-method-55 () none) ;; 55 + ) + ) +|# + +#| +(deftype warning-hud-icon (basic) + ((hsprite hud-sprite :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x44 + :flag-assert #x900000044 + ) +|# + +#| +(deftype rapid-fire-params (structure) + ((rof uint16 :offset-assert 0) + (shot-radius float :offset-assert 4) + (shot-range float :offset-assert 8) + (beam-effect uint16 :offset-assert 12) + (impact-callback basic :offset-assert 16) + (impact-callback-params basic :offset-assert 20) + (shot-sound uint16 :offset-assert 24) + (hit-sound uint16 :offset-assert 26) + (wpn-type uint8 :offset-assert 28) + (wpn-powerup-level int8 :offset-assert 29) + ) + :method-count-assert 9 + :size-assert #x1e + :flag-assert #x90000001e + ;; field impact-callback-params uses ~A with a signed load. + ) +|# + +#| +(deftype rapid-fire-control (basic) + ((owner uint64 :offset-assert 8) + (params rapid-fire-params :offset-assert 16) + (shot-clock uint16 :offset-assert 20) + (next-shot-from int8 :offset-assert 22) + (hit-spang-part basic :offset-assert 24) + (old-origin vector :inline :offset-assert 32) + (old-rot quaternion :inline :offset-assert 48) + (emitters basic :offset-assert 64) + ) + :method-count-assert 13 + :size-assert #x44 + :flag-assert #xd00000044 + (:methods + (rapid-fire-control-method-9 () none) ;; 9 + (rapid-fire-control-method-10 () none) ;; 10 + (rapid-fire-control-method-11 () none) ;; 11 + (rapid-fire-control-method-12 () none) ;; 12 + ) + ) +|# + +#| +(deftype rapid-fire-callback-gun-hitspang-params (structure) + ((bits-part-id uint32 :offset-assert 0) + (dust-part-id uint32 :offset-assert 4) + (group-part-id uint32 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype vehicle-weapon-drone (process-focusable) + ((owning-vehicle uint64 :offset-assert 256) + (owning-slot uint64 :offset-assert 264) + (target uint64 :offset-assert 272) + (orbit-height float :offset-assert 280) + (orbit-radius float :offset-assert 284) + (orbit-period uint32 :offset-assert 288) + (orbit-phase uint32 :offset-assert 292) + (scaled-last-frame basic :offset-assert 296) + (ammunition uint32 :offset-assert 300) + (next-gaze quaternion :inline :offset-assert 304) + (next-gaze-time uint64 :offset-assert 320) + (last-gaze-time uint64 :offset-assert 328) + (pitch-bend float :offset-assert 336) + (sweep-loop uint32 :offset-assert 340) + (muzzle-flashes UNKNOWN 4 :offset-assert 344) + (next-target-poll uint64 :offset-assert 376) + (firecontrol basic :offset-assert 384) + (blam uint32 :offset-assert 388) + ) + :method-count-assert 67 + :size-assert #x188 + :flag-assert #x4301000188 + (:methods + (vehicle-weapon-drone-method-59 () none) ;; 59 + (vehicle-weapon-drone-method-60 () none) ;; 60 + (vehicle-weapon-drone-method-61 () none) ;; 61 + (vehicle-weapon-drone-method-62 () none) ;; 62 + (vehicle-weapon-drone-method-63 () none) ;; 63 + (vehicle-weapon-drone-method-64 () none) ;; 64 + (vehicle-weapon-drone-method-65 () none) ;; 65 + (vehicle-weapon-drone-method-66 () none) ;; 66 + ) + ) +|# + +#| +(deftype v-wpn-ptable-entry (structure) + ((chance uint16 :offset-assert 0) + (weapon-type uint8 :offset-assert 2) + (pad1 uint8 :offset-assert 3) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype v-wpn-ptable (structure) + ((entries-count int8 :offset-assert 0) + (total-chance uint16 :offset-assert 2) + (entries-array uint32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype v-wpn-ptable-quad (structure) + ((base v-wpn-ptable :offset-assert 0) + (last-lap v-wpn-ptable :offset-assert 4) + (base-behind v-wpn-ptable :offset-assert 8) + (last-lap-behind v-wpn-ptable :offset-assert 12) + (behind-threshold float :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) +|# + +;; v-wpn-net-info is already defined! + +;; (define-extern V_R_MINE1_ARMED? object) +;; (define-extern weapon-mask->type function) +;; (define-extern *weapon-suppression-table* object) +;; (define-extern v-wpn-base-common-trans function) +;; (define-extern v-wpn-event-base function) +;; (define-extern *cheat-defaultgun-in-race* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype wvehicle-sound-loop-state (structure) + ((id sound-id :offset-assert 0) ;; guessed by decompiler + (vol float :offset-assert 4) + (pitch float :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype vehicle-wheel-state (structure) + ((info vehicle-wheel-info :offset-assert 0) + (flags uint8 :offset-assert 4) + (prev-flags uint8 :offset-assert 5) + (handle uint64 :offset-assert 8) ;; handle + (probe-local-pos vector :inline :offset-assert 16) + (probe-local-dir vector :inline :offset-assert 32) + (local-axis vector :inline :offset-assert 48) + (surface-pos vector :inline :offset-assert 64) + (ground-pos vector :inline :offset-assert 80) + (ground-normal vector :inline :offset-assert 96) + (trans vector :inline :offset-assert 112) + (quat quaternion :inline :offset-assert 128) + (trail-pos vector 2 :offset-assert 144) ;; guessed by decompiler + (surface rigid-body-surface :offset-assert 176) ;; vehicle-wheel-surface + (pos float :offset-assert 180) + (pos2 float :offset-assert 184) + (inertia float :offset-assert 188) + (steer-angle float :offset-assert 192) + (angle float :offset-assert 196) + (rev float :offset-assert 200) + (x-scale float :offset-assert 204) + (torque float :offset-assert 208) + (braking-torque float :offset-assert 212) + (up-force float :offset-assert 216) + (drive-diff float :offset-assert 220) + (side-vel float :offset-assert 224) + (up-vel float :offset-assert 228) + (forward-vel float :offset-assert 232) + (forward-slip-vel float :offset-assert 236) + (friction-coef float :offset-assert 240) + (sink-depth float :offset-assert 244) + (sin-susp-ang float :offset-assert 248) + (cos-susp-ang float :offset-assert 252) + (part-birth-accum sparticle-launch-control 4 :offset-assert 256) ;; guessed by decompiler + (tread-time uint32 :offset-assert 272) + (tread-tracker uint64 :offset-assert 280) ;; handle + ) + :method-count-assert 9 + :size-assert #x120 + :flag-assert #x900000120 + ) +|# + +#| +(deftype wvehicle-net-extra (structure) + ((desired-steering float :offset-assert 0) + (desired-throttle float :offset-assert 4) + (desired-wheel-rev float :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype wvehicle-ai-destination (structure) + ((final-position vector :inline :offset-assert 0) + (position vector :inline :offset-assert 16) + (velocity vector :inline :offset-assert 32) + (nav-location nav-location :inline :offset-assert 48) + (handle uint64 :offset-assert 56) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) +|# + +#| +(deftype wvehicle-ai-state (structure) + ((destination wvehicle-ai-destination :inline :offset-assert 0) + (nav-location nav-location :inline :offset-assert 64) + (current-travel vector :inline :offset-assert 80) + (previous-steering-error float :offset-assert 96) + (no-physics-speed float :offset-assert 100) + (blocked-timer float :offset-assert 104) + (reverse-timer float :offset-assert 108) + (flags uint32 :offset-assert 112) + (desired-speed float :offset-assert 116) + (weapon-timer uint64 :offset-assert 120) + (weapon-aggression float :offset-assert 128) + (mode uint8 :offset-assert 132) + ) + :method-count-assert 9 + :size-assert #x85 + :flag-assert #x900000085 + ) +|# + +#| +(deftype wvehicle-engine-loop-state (structure) + ((id uint32 :offset-assert 0) + (index int8 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x5 + :flag-assert #x900000005 + ) +|# + +#| +(deftype wvehicle-engine-mix-state (structure) + ((loops UNKNOWN 2 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype v-wpn-turbo-lightning-info (structure) + ((pt-start vector :inline :offset-assert 0) + (pt-end vector :inline :offset-assert 16) + (next-start vector :inline :offset-assert 32) + (next-end vector :inline :offset-assert 48) + (next-recomp-time uint64 :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x48 + :flag-assert #x900000048 + ) +|# + +#| +(deftype wvehicle-weapon-sync-blob (structure) + ((data UNKNOWN 4 :offset-assert 0) + (wpn-left-type int8 :offset-assert 0) + (wpn-right-type int8 :offset-assert 1) + (wpn-left-powerup int8 :offset-assert 2) + (wpn-right-powerup int8 :offset-assert 3) + (blob int32 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype wvehicle (vehicle) + ((net-extra wvehicle-net-extra :inline :offset-assert 2140) + (antenna uint64 :offset-assert 2152) + (fire-tracker uint64 :offset-assert 2160) + (race race-control :inline :offset-assert 2168) + (ai wvehicle-ai-state :inline :offset-assert 2192) + (engine-rev float :offset-assert 2328) + (engine-inertia float :offset-assert 2332) + (engine-torque float :offset-assert 2336) + (engine-max-torque float :offset-assert 2340) + (engine-rpm float :offset-assert 2344) + (engine-load float :offset-assert 2348) + (sound-engine-rpm float :offset-assert 2352) + (sound-engine-load float :offset-assert 2356) + (sound-engine-envelope float :offset-assert 2360) + (wheel-rev float :offset-assert 2364) + (wheel-inertia float :offset-assert 2368) + (wheel-torque float :offset-assert 2372) + (wheel-braking-torque float :offset-assert 2376) + (wheel-ground-torque float :offset-assert 2380) + (clutch-grab float :offset-assert 2384) + (gear-ratio float :offset-assert 2388) + (final-drive-ratio float :offset-assert 2392) + (total-gear-ratio float :offset-assert 2396) + (inv-total-gear-ratio float :offset-assert 2400) + (avg-drive-wheel-radius float :offset-assert 2404) + (drive-wheel-inertia float :offset-assert 2408) + (clutch-inertia float :offset-assert 2412) + (idle-throttle float :offset-assert 2416) + (wheelbase float :offset-assert 2420) + (f-track-width float :offset-assert 2424) + (r-track-width float :offset-assert 2428) + (susp-spring-control float :offset-assert 2432) + (jump-control float :offset-assert 2436) + (shortcut-speed-factor float :offset-assert 2440) + (path-deviation float :offset-assert 2444) + (turbo-supply float :offset-assert 704) + (turbo-ready float :offset-assert 2448) + (slide-factor float :offset-assert 2452) + (slide-time uint32 :offset-assert 2456) + (max-speed float :offset-assert 2460) + (shift-state uint8 :offset-assert 2464) + (gear-select int8 :offset-assert 2465) + (next-gear-select int8 :offset-assert 2466) + (shift-time uint32 :offset-assert 2468) + (wheel vehicle-wheel-state 4 :offset-assert 2480) ;; guessed by decompiler + (gravity-dir vector :inline :offset-assert 3632) + (surface-velocity vector :inline :offset-assert 3648) + (tire-roll-loop-state wvehicle-sound-loop-state 6 :offset-assert 3664) ;; guessed by decompiler + (tire-slide-loop-state wvehicle-sound-loop-state 2 :offset-assert 3760) ;; guessed by decompiler + (engine-mix-state-array UNKNOWN 2 :offset-assert 3792) + (min-load-engine-mix-state wvehicle-engine-mix-state :inline :offset-assert 3792) + (max-load-engine-mix-state wvehicle-engine-mix-state :inline :offset-assert 3824) + (damage-sound-id sound-id :offset-assert 3856) ;; guessed by decompiler + (water-sound-id sound-id :offset-assert 3860) ;; guessed by decompiler + (wheel-fire-sound-id uint32 :offset-assert 3864) + (oil-sound-id uint32 :offset-assert 3868) + (turbo-sound-id sound-id :offset-assert 3872) ;; guessed by decompiler + (turbo-sound2-id uint32 :offset-assert 3876) + (car-fire-loop uint32 :offset-assert 3880) + (hang-time-sound-id uint32 :offset-assert 3884) + (overturned-time uint32 :offset-assert 3888) + (engine-steady-time uint32 :offset-assert 3892) + (splash-time uint32 :offset-assert 3896) + (knobby-time uint32 :offset-assert 3900) + (susp-creak-time uint32 :offset-assert 3904) + (ground-time uint32 :offset-assert 3908) + (jump-time uint32 :offset-assert 3912) + (no-slide-time uint32 :offset-assert 3916) + (slide-distance float :offset-assert 3920) + (power-slide-hud uint64 :offset-assert 3928) + (hang-time-hud uint64 :offset-assert 3936) + (hang-time float :offset-assert 3944) + (next-slide-sound-play-distance float :offset-assert 3948) + (attached-array handle 16 :offset-assert 3952) ;; guessed by decompiler + (eng-pitch-offset float :offset-assert 4080) + (eng-pitch-variance float :offset-assert 4084) + (eng-pitch-variance-seek float :offset-assert 4088) + (eng-vol-variance float :offset-assert 4092) + (eng-vol-variance-seek float :offset-assert 4096) + (turbo-pitch float :offset-assert 4100) + (health-pickup-multiplier float :offset-assert 4104) + (jmod-steering-wheel joint-mod-rotate-local :inline :offset-assert 4112) + (jmod-frame UNKNOWN 2 :offset-assert 4144) + (jmod-axles UNKNOWN 4 :offset-assert 4272) + (water-sound-envelope float :offset-assert 4464) + (wpn-current-target uint64 :offset-assert 4488) + (wpn-current-target-acquired uint64 :offset-assert 4496) + (wpn-left uint64 :offset-assert 4504) + (wpn-right uint64 :offset-assert 4512) + (wpn-shield uint64 :offset-assert 4520) + (wpn-drone uint64 :offset-assert 4528) + (wpn-oil uint64 :offset-assert 4536) + (wpn-turbo uint64 :offset-assert 4544) + (wpn-bulldog-gun uint64 :offset-assert 4552) + (wpn-drawables UNKNOWN 2 :offset-assert 4560) + (wpn-drawable-left uint64 :offset-assert 4560) + (wpn-drawable-right uint64 :offset-assert 4568) + (wpn-spin-done-left int32 :offset-assert 4576) + (wpn-spin-done-right int32 :offset-assert 4580) + (prev-wpn-sync wvehicle-weapon-sync-blob :inline :offset-assert 4584) + (turbo-suppressor-particle basic :offset-assert 4588) + (dark-seeking-me basic :offset-assert 4592) + (dark-suck-sound-pending int8 :offset-assert 4596) + (vehicle-exhaust-subsampler UNKNOWN 2 :offset-assert 4600) + (wheel-launcher UNKNOWN 4 :offset-assert 4608) + (wheel-fire-launcher UNKNOWN 4 :offset-assert 4624) + (hack-armed-right basic :offset-assert 4640) + (hack-armed-left basic :offset-assert 4644) + (shake-amount float :offset-assert 4648) + (whoosh-sound-id uint32 :offset-assert 4652) + (sink-sound-id uint32 :offset-assert 4656) + ) + :method-count-assert 272 + :size-assert #x1234 + :flag-assert #x11011b01234 + (:methods + (wvehicle-method-204 () none) ;; 204 + (wvehicle-method-205 () none) ;; 205 + (wvehicle-method-206 () none) ;; 206 + (wvehicle-method-207 () none) ;; 207 + (wvehicle-method-208 () none) ;; 208 + (wvehicle-method-209 () none) ;; 209 + (wvehicle-method-210 () none) ;; 210 + (wvehicle-method-211 () none) ;; 211 + (wvehicle-method-212 () none) ;; 212 + (wvehicle-method-213 () none) ;; 213 + (wvehicle-method-214 () none) ;; 214 + (wvehicle-method-215 () none) ;; 215 + (wvehicle-method-216 () none) ;; 216 + (wvehicle-method-217 () none) ;; 217 + (wvehicle-method-218 () none) ;; 218 + (wvehicle-method-219 () none) ;; 219 + (wvehicle-method-220 () none) ;; 220 + (wvehicle-method-221 () none) ;; 221 + (wvehicle-method-222 () none) ;; 222 + (wvehicle-method-223 () none) ;; 223 + (wvehicle-method-224 () none) ;; 224 + (wvehicle-method-225 () none) ;; 225 + (wvehicle-method-226 () none) ;; 226 + (wvehicle-method-227 () none) ;; 227 + (wvehicle-method-228 () none) ;; 228 + (wvehicle-method-229 () none) ;; 229 + (wvehicle-method-230 () none) ;; 230 + (wvehicle-method-231 () none) ;; 231 + (wvehicle-method-232 () none) ;; 232 + (wvehicle-method-233 () none) ;; 233 + (wvehicle-method-234 () none) ;; 234 + (wvehicle-method-235 () none) ;; 235 + (wvehicle-method-236 () none) ;; 236 + (wvehicle-method-237 () none) ;; 237 + (wvehicle-method-238 () none) ;; 238 + (wvehicle-method-239 () none) ;; 239 + (wvehicle-method-240 () none) ;; 240 + (wvehicle-method-241 () none) ;; 241 + (wvehicle-method-242 () none) ;; 242 + (wvehicle-method-243 () none) ;; 243 + (wvehicle-method-244 () none) ;; 244 + (wvehicle-method-245 () none) ;; 245 + (wvehicle-method-246 () none) ;; 246 + (wvehicle-method-247 () none) ;; 247 + (wvehicle-method-248 () none) ;; 248 + (wvehicle-method-249 () none) ;; 249 + (wvehicle-method-250 () none) ;; 250 + (wvehicle-method-251 () none) ;; 251 + (wvehicle-method-252 () none) ;; 252 + (wvehicle-method-253 () none) ;; 253 + (wvehicle-method-254 () none) ;; 254 + (wvehicle-method-255 () none) ;; 255 + (wvehicle-method-256 () none) ;; 256 + (wvehicle-method-257 () none) ;; 257 + (wvehicle-method-258 () none) ;; 258 + (wvehicle-method-259 () none) ;; 259 + (wvehicle-method-260 () none) ;; 260 + (wvehicle-method-261 () none) ;; 261 + (wvehicle-method-262 () none) ;; 262 + (wvehicle-method-263 () none) ;; 263 + (wvehicle-method-264 () none) ;; 264 + (wvehicle-method-265 () none) ;; 265 + (wvehicle-method-266 () none) ;; 266 + (wvehicle-method-267 () none) ;; 267 + (wvehicle-method-268 () none) ;; 268 + (wvehicle-method-269 () none) ;; 269 + (wvehicle-method-270 () none) ;; 270 + (wvehicle-method-271 () none) ;; 271 + ) + ) +|# + +#| +(deftype vehicle-antenna-init-params (structure) + ((pos vector :inline :offset-assert 0) + (tilt float :offset-assert 16) + (vehicle basic :offset-assert 20) + (skel basic :offset-assert 24) + (level basic :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +;; (define-extern rpm->radians-per-sec function) ;; (function float degrees) +;; (define-extern radians-per-sec->rpm function) ;; (function degrees float) +;; (define-extern vehicle-shielded? function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-player-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype net-player-respawn-info (structure) + ((position vector :inline :offset-assert 0) + (quat quaternion :inline :offset-assert 16) + (velocity vector :inline :offset-assert 32) + (want-count int8 :offset-assert 48) + (want (inline-array level-buffer-state-small) :offset-assert 52) + ) + :method-count-assert 11 + :size-assert #x38 + :flag-assert #xb00000038 + (:methods + (net-player-respawn-info-method-9 () none) ;; 9 + (net-player-respawn-info-method-10 () none) ;; 10 + ) + ) + +(deftype net-player (process-nettable) + ((last-known-pos vector :inline :offset-assert 192) + (last-known-pos-valid symbol :offset-assert 208) + (mgr basic :offset-assert 212) + (vehicle uint64 :offset-assert 216) + (rev-mgr uint64 :offset-assert 224) + (score int32 :offset 236) + (player-num int8 :offset-assert 240) + (team uint8 :offset-assert 241) + (color uint32 :offset-assert 244) + (font-color uint8 :offset-assert 248) + (multiplier int8 :offset-assert 249) + (death-indicator-1 uint64 :offset-assert 256) + (death-indicator-2 uint64 :offset-assert 264) + (wpn-left-type uint8 :offset-assert 272) + (wpn-right-type uint8 :offset-assert 273) + (wpn-left-ammo uint8 :offset-assert 274) + (wpn-right-ammo uint8 :offset-assert 275) + (turbo-qty uint8 :offset-assert 276) + (dark-eco uint8 :offset-assert 277) + (health uint8 :offset-assert 278) + (last-weapon-provision float :offset-assert 280) + (top-speed float :offset-assert 284) + (player-id int8 :offset-assert 288) + (flags uint8 :offset-assert 289) + (rank int8 :offset-assert 290) + (human-rank int8 :offset-assert 291) + (next-spawn-time uint64 :offset-assert 296) + (state-time uint64 :offset-assert 304) + (vehicle-impact-callback function :offset-assert 312) + (spawn-count int32 :offset-assert 316) + (speech-id uint8 :offset-assert 320) + (last-speech-time uint64 :offset-assert 328) + (best-power-slide float :offset-assert 336) + (best-hang-time int32 :offset-assert 340) + (display-score int32 :offset-assert 344) + (kills int32 :offset-assert 348) + (deaths int32 :offset-assert 352) + (last-spawn-time uint64 :offset-assert 360) + (dead-camera-pos-valid symbol :offset-assert 368) + (dead-camera-pos vector :inline :offset-assert 384) + ) + :method-count-assert 98 + :size-assert #x190 + :flag-assert #x6201000190 + (:methods + (net-player-method-42 () none) ;; 42 + (net-player-method-43 () none) ;; 43 + (net-player-method-44 () none) ;; 44 + (net-player-method-45 () none) ;; 45 + (net-player-method-46 () none) ;; 46 + (net-player-method-47 () none) ;; 47 + (net-player-method-48 () none) ;; 48 + (net-player-method-49 () none) ;; 49 + (net-player-method-50 () none) ;; 50 + (net-player-method-51 () none) ;; 51 + (net-player-method-52 () none) ;; 52 + (net-player-method-53 () none) ;; 53 + (net-player-method-54 () none) ;; 54 + (net-player-method-55 () none) ;; 55 + (net-player-method-56 () none) ;; 56 + (net-player-method-57 () none) ;; 57 + (net-player-method-58 () none) ;; 58 + (net-player-method-59 () none) ;; 59 + (net-player-method-60 () none) ;; 60 + (net-player-method-61 () none) ;; 61 + (net-player-method-62 () none) ;; 62 + (net-player-method-63 () none) ;; 63 + (net-player-method-64 () none) ;; 64 + (net-player-method-65 () none) ;; 65 + (net-player-method-66 () none) ;; 66 + (net-player-method-67 () none) ;; 67 + (net-player-method-68 () none) ;; 68 + (net-player-method-69 () none) ;; 69 + (net-player-method-70 () none) ;; 70 + (net-player-method-71 () none) ;; 71 + (net-player-method-72 () none) ;; 72 + (net-player-method-73 () none) ;; 73 + (net-player-method-74 () none) ;; 74 + (net-player-method-75 () none) ;; 75 + (net-player-method-76 () none) ;; 76 + (net-player-method-77 () none) ;; 77 + (net-player-method-78 () none) ;; 78 + (net-player-method-79 () none) ;; 79 + (net-player-method-80 () none) ;; 80 + (net-player-method-81 () none) ;; 81 + (net-player-method-82 () none) ;; 82 + (net-player-method-83 () none) ;; 83 + (net-player-method-84 () none) ;; 84 + (net-player-method-85 () none) ;; 85 + (net-player-method-86 () none) ;; 86 + (net-player-method-87 () none) ;; 87 + (net-player-method-88 () none) ;; 88 + (net-player-method-89 () none) ;; 89 + (net-player-method-90 () none) ;; 90 + (net-player-method-91 () none) ;; 91 + (net-player-method-92 () none) ;; 92 + (net-player-method-93 () none) ;; 93 + (net-player-method-94 () none) ;; 94 + (net-player-method-95 () none) ;; 95 + (net-player-method-96 () none) ;; 96 + (net-player-method-97 () none) ;; 97 + ) + ) + +;; (define-extern net-player-init-remote function) +(define-extern *msg-map-net-player* array) +(define-extern *net-process-class-info-net-player* object) +(define-extern *net-players* (array net-player)) +;; (define-extern *active-net-player-count* object) +;; (define-extern *active-net-players* array) +;; (define-extern *active-net-non-spectator-count* object) +;; (define-extern *active-net-non-spectators* array) +;; (define-extern *team-colors* object) +;; (define-extern *team-font-colors* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-world-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype vehicle-load-parts (uint64) + ((part1 uint8 :offset 0 :size 3) ;; added + (part2 uint8 :offset 3 :size 3) ;; added + (part3 uint8 :offset 6 :size 3) ;; added + (part4 uint8 :offset 9 :size 3) ;; added + (part5 uint8 :offset 12 :size 3) ;; added + (part6 uint8 :offset 15 :size 3) ;; added + (part7 uint8 :offset 18 :size 3) ;; added + (part8 uint8 :offset 21 :size 3) ;; added + (part9 uint8 :offset 24 :size 5) ;; added ;; Tires ?? + ) + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype net-world-game-options (structure) + ((advanced-options game-task-advanced-options :inline :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype net-world-staging-player (structure) + ((vehicle-load-parts vehicle-load-parts :offset-assert 0) + (vehicle-tuning-info tuning-info :offset-assert 8) + (vehicle-selection int8 :offset-assert 12) + (desired-driver-selection int8 :offset-assert 13) + (flags uint8 :offset-assert 14) + (team-id uint8 :offset-assert 15) + (player-num int8 :offset-assert 16) + (base-color rgba :offset-assert 20) + (stripe-color rgba :offset-assert 24) + (skill-level int32 :offset-assert 28) + ) + :method-count-assert 10 + :size-assert #x20 + :flag-assert #xa00000020 + (:methods + (net-world-staging-player-method-9 () none) ;; 9 + ) + ) + +(deftype green-room-stats (structure) + ((intro-end-time int32 :offset-assert 0) + (scheduled-finish-time int32 :offset-assert 4) + (scores uint16 6 :offset-assert 8) + (laps uint8 6 :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x1a + :flag-assert #x90000001a + ) + +(deftype net-world-state (structure) + ((players net-world-staging-player 24 :inline :offset-assert 0) + (assigned-drivers int8 24 :offset-assert 768) + (game-creator-ip uint32 :offset-assert 792) + (game-creation-time uint32 :offset-assert 796) + (game-start-time int32 :offset-assert 800) + (total-pause-time int32 :offset-assert 804) + (task-node-name uint8 32 :offset-assert 808) + (player-ready-flags uint8 :offset-assert 840) + (flags int8 :offset-assert 841) + (max-humans int8 :offset-assert 842) + (buddy-slots int8 :offset-assert 843) + (clan-slots int8 :offset-assert 844) + (ai-slots int8 :offset-assert 845) + (vehicle-class int8 :offset-assert 846) + (options net-world-game-options :inline :offset-assert 848) + (clan-ids uint8 2 :offset-assert 856) + (green-room-stats green-room-stats :inline :offset-assert 864) + (time-of-day int8 :offset-assert 890) + ) + :method-count-assert 9 + :size-assert #x37b + :flag-assert #x90000037b + ) + +(deftype net-world (process-nettable) + ((net-state net-world-state :inline :offset-assert 192) + (is-late-join symbol :offset-assert 1084) + (need-start-load symbol :offset-assert 1088) + (current-garage-player int32 :offset-assert 1092) + (current-garage-spare-slot int32 :offset-assert 1096) + (cont symbol :offset-assert 1100) + (task uint8 :offset-assert 1104) + (task-node uint16 :offset-assert 1106) + (task-info game-task-info :offset-assert 1108) + (task-node-info game-task-node-info :offset-assert 1112) + (player-to-vehicle-slot-map uint8 24 :offset-assert 1116) + (vehicle-slot-to-player-map uint8 6 :offset-assert 1140) + ) + :method-count-assert 87 + :size-assert #x47a + :flag-assert #x5703f0047a + (:methods + (net-world-method-42 () none) ;; 42 + (net-world-method-43 () none) ;; 43 + (net-world-method-44 () none) ;; 44 + (net-world-method-45 () none) ;; 45 + (net-world-method-46 () none) ;; 46 + (net-world-method-47 () none) ;; 47 + (net-world-method-48 () none) ;; 48 + (net-world-method-49 () none) ;; 49 + (net-world-method-50 () none) ;; 50 + (net-world-method-51 () none) ;; 51 + (net-world-method-52 () none) ;; 52 + (net-world-method-53 () none) ;; 53 + (net-world-method-54 () none) ;; 54 + (net-world-method-55 () none) ;; 55 + (net-world-method-56 () none) ;; 56 + (net-world-method-57 () none) ;; 57 + (net-world-method-58 () none) ;; 58 + (net-world-method-59 () none) ;; 59 + (net-world-method-60 () none) ;; 60 + (net-world-method-61 () none) ;; 61 + (net-world-method-62 () none) ;; 62 + (net-world-method-63 () none) ;; 63 + (net-world-method-64 () none) ;; 64 + (net-world-method-65 () none) ;; 65 + (net-world-method-66 () none) ;; 66 + (net-world-method-67 () none) ;; 67 + (net-world-method-68 () none) ;; 68 + (net-world-method-69 () none) ;; 69 + (net-world-method-70 () none) ;; 70 + (net-world-method-71 () none) ;; 71 + (net-world-method-72 () none) ;; 72 + (net-world-method-73 () none) ;; 73 + (net-world-method-74 () none) ;; 74 + (net-world-method-75 () none) ;; 75 + (net-world-method-76 () none) ;; 76 + (net-world-method-77 () none) ;; 77 + (net-world-method-78 () none) ;; 78 + (net-world-method-79 () none) ;; 79 + (net-world-method-80 () none) ;; 80 + (net-world-method-81 () none) ;; 81 + (net-world-method-82 () none) ;; 82 + (net-world-method-83 () none) ;; 83 + (net-world-method-84 () none) ;; 84 + (net-world-method-85 () none) ;; 85 + (net-world-method-86 () none) ;; 86 + ) + ) + +(deftype net-player-name (structure) + ((name uint8 32 :offset-assert 0) + (format-name uint8 64 :offset-assert 32) + ) + :method-count-assert 10 + :size-assert #x60 + :flag-assert #xa00000060 + (:methods + (net-player-name-method-9 () none) ;; 9 + ) + ) + +(deftype prebuilt-ai-vehicle (structure) + ((levname symbol :offset-assert 0) + (v-type uint8 :offset-assert 4) + (load-parts uint64 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype net-vehicle (structure) + ((id uint32 :offset-assert 0) + (name symbol :offset-assert 4) + (levname symbol :offset-assert 8) + (vt uint8 :offset-assert 12) + (ct int8 :offset-assert 13) + (tex-name symbol :offset-assert 16) + (sound-bank symbol :offset-assert 20) + (index int8 :offset-assert 24) + (cup-mask uint32 :offset-assert 28) + (id-variant uint32 :offset-assert 32) + (ai-levels symbol :offset-assert 36) + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + ) + +(deftype net-driver (structure) + ((id uint32 :offset-assert 0) + (levname symbol :offset-assert 4) + (dt uint8 :offset-assert 8) + (tex-name symbol :offset-assert 12) + (picture-part1 uint32 :offset-assert 16) + (picture-part2 uint32 :offset-assert 20) + (icon-part1 uint32 :offset-assert 24) + (icon-part2 uint32 :offset-assert 28) + (base-color uint32 :offset-assert 32) + (stripe-color uint32 :offset-assert 36) + (ai-car-levels symbol :offset-assert 40) + (driver-name string :offset-assert 44) + (sex int8 :offset-assert 48) + (height int8 :offset-assert 49) + (weight int16 :offset-assert 50) + (eyes symbol :offset-assert 52) + (age int8 :offset-assert 56) + (helmet-scale float :offset-assert 60) + (no-ai symbol :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x44 + :flag-assert #x900000044 + ) + +(deftype race-end-cam (process) + () + :method-count-assert 15 + :size-assert #x90 + :flag-assert #xf00000090 + (:methods + (race-end-cam-method-14 () none) ;; 14 + ) + ) + +;; (define-extern *ghost-info-ptr* object) +;; (define-extern net-play-mode-race? function) +;; (define-extern get-task-node-id-from-location-and-event function) +;; (define-extern *default-vehicle-load-parts* object) +;; (define-extern encode-green-room-stats function) +;; (define-extern decode-green-room-stats function) +;; (define-extern encode-net-world-state function) +;; (define-extern decode-net-world-state function) +;; (define-extern net-world-init-remote function) +;; (define-extern *msg-map-net-world* array) +;; (define-extern *net-process-class-info-net-world* object) +(define-extern *net-world* net-world) +;; (define-extern *net-player-names* object) +;; (define-extern *prebuilt-ai-vehicles* array) +;; (define-extern *net-vehicles* array) +;; (define-extern find-vehicle-info function) +;; (define-extern find-prebuilt-ai-vehicle function) +;; (define-extern *net-drivers* array) +;; (define-extern get-vehicle-name function) +;; (define-extern *protect-vehicle-slot-1* object) +;; (define-extern protect-vehicle-slot-1 function) +;; (define-extern *in-end-of-race-preload* object) +;; (define-extern *race-end-camera-pos-valid* object) +;; (define-extern *race-end-camera-pos* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-logging-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype net-log-event-header (structure) + ((length uint16 :offset-assert 0) + (type uint8 :offset-assert 2) + (pad int8 :offset-assert 3) + (time int32 :offset-assert 4) + (id int32 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +;; (define-extern *net-log-tmp-header* object) +;; (define-extern *comment-string* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-powerup-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype net-powerup-motion-info (basic) + ((motion-hook basic :offset-assert 4) + (flight-end-time int32 :offset-assert 8) + (vel vector :inline :offset-assert 16) + (rest-pos vector :inline :offset-assert 32) + ) + :method-count-assert 13 + :size-assert #x30 + :flag-assert #xd00000030 + (:methods + (net-powerup-motion-info-method-9 () none) ;; 9 + (net-powerup-motion-info-method-10 () none) ;; 10 + (net-powerup-motion-info-method-11 () none) ;; 11 + (net-powerup-motion-info-method-12 () none) ;; 12 + ) + ) +|# + +#| +(deftype net-powerup-spawn-params (structure) + ((tp basic :offset-assert 0) + (pos vector :inline :offset-assert 16) + (lifetime int32 :offset-assert 32) + (initial-owner int8 :offset-assert 36) + (motion-info basic :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +#| +(deftype net-powerup (process-nettable) + ((child-proc uint64 :offset-assert 192) + (die-or-respawn-time int32 :offset-assert 200) + (touched-time int32 :offset-assert 204) + (touched-by int8 :offset-assert 208) + (ignore-frames int8 :offset-assert 209) + (hash-id int16 :offset-assert 210) + (pos vector :inline :offset-assert 224) + (motion-info basic :offset-assert 240) + ) + :method-count-assert 56 + :size-assert #xf4 + :flag-assert #x38007000f4 + (:methods + (net-powerup-method-42 () none) ;; 42 + (net-powerup-method-43 () none) ;; 43 + (net-powerup-method-44 () none) ;; 44 + (net-powerup-method-45 () none) ;; 45 + (net-powerup-method-46 () none) ;; 46 + (net-powerup-method-47 () none) ;; 47 + (net-powerup-method-48 () none) ;; 48 + (net-powerup-method-49 () none) ;; 49 + (net-powerup-method-50 () none) ;; 50 + (net-powerup-method-51 () none) ;; 51 + (net-powerup-method-52 () none) ;; 52 + (net-powerup-method-53 () none) ;; 53 + (net-powerup-method-54 () none) ;; 54 + (net-powerup-method-55 () none) ;; 55 + ) + ) +|# + +#| +(deftype powerup-draw (process-drawable) + ((parent-proc uint64 :offset-assert 248) + (glow-sound basic :offset-assert 256) + (part-time int32 :offset-assert 260) + ) + :method-count-assert 57 + :size-assert #x108 + :flag-assert #x3900800108 + (:methods + (powerup-draw-method-50 () none) ;; 50 + (powerup-draw-method-51 () none) ;; 51 + (powerup-draw-method-52 () none) ;; 52 + (powerup-draw-method-53 () none) ;; 53 + (powerup-draw-method-54 () none) ;; 54 + (powerup-draw-method-55 () none) ;; 55 + (powerup-draw-method-56 () none) ;; 56 + ) + ) +|# + +;; (define-extern *powerup-static-hash* object) +;; (define-extern *powerup-dynamic-hash* object) +;; (define-extern net-powerup-init-remote function) +;; (define-extern *msg-map-net-powerup* array) +;; (define-extern *net-process-class-info-net-powerup* object) +;; (define-extern powerup-draw-init-by-other function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-game-mgr-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype net-game-mgr-vehicle-info (structure) + ((all-vehicles UNKNOWN 6 :offset-assert 0) + (local-vehicles UNKNOWN 6 :offset-assert 24) + (ai-vehicles UNKNOWN 6 :offset-assert 48) + (player-vehicles UNKNOWN 6 :offset-assert 72) + (all-vehicle-count int8 :offset-assert 96) + (local-vehicle-count int8 :offset-assert 97) + (ai-vehicle-count int8 :offset-assert 98) + (player-vehicle-count int8 :offset-assert 99) + ) + :method-count-assert 9 + :size-assert #x64 + :flag-assert #x900000064 + ) +|# + +#| +(deftype net-game-mgr (process-nettable) + ((scheduled-finish-time int32 :offset-assert 188) + (scheduled-finish-mode basic :offset-assert 192) + (sorted-ct int8 :offset-assert 196) + (human-ct int8 :offset-assert 197) + (sorted-ids UNKNOWN 24 :offset-assert 198) + (intro-end-time int32 :offset-assert 224) + (hud-player-indicators UNKNOWN 2 :offset-assert 232) + (net-players basic :offset-assert 248) + (stats-hud UNKNOWN 2 :offset-assert 256) + (intro-handle UNKNOWN 2 :offset-assert 272) + (cheats UNKNOWN 4 :offset-assert 288) + (state-time uint64 :offset-assert 296) + ) + :method-count-assert 80 + :size-assert #x130 + :flag-assert #x5000a00130 + (:methods + (net-game-mgr-method-42 () none) ;; 42 + (net-game-mgr-method-43 () none) ;; 43 + (net-game-mgr-method-44 () none) ;; 44 + (net-game-mgr-method-45 () none) ;; 45 + (net-game-mgr-method-46 () none) ;; 46 + (net-game-mgr-method-47 () none) ;; 47 + (net-game-mgr-method-48 () none) ;; 48 + (net-game-mgr-method-49 () none) ;; 49 + (net-game-mgr-method-50 () none) ;; 50 + (net-game-mgr-method-51 () none) ;; 51 + (net-game-mgr-method-52 () none) ;; 52 + (net-game-mgr-method-53 () none) ;; 53 + (net-game-mgr-method-54 () none) ;; 54 + (net-game-mgr-method-55 () none) ;; 55 + (net-game-mgr-method-56 () none) ;; 56 + (net-game-mgr-method-57 () none) ;; 57 + (net-game-mgr-method-58 () none) ;; 58 + (net-game-mgr-method-59 () none) ;; 59 + (net-game-mgr-method-60 () none) ;; 60 + (net-game-mgr-method-61 () none) ;; 61 + (net-game-mgr-method-62 () none) ;; 62 + (net-game-mgr-method-63 () none) ;; 63 + (net-game-mgr-method-64 () none) ;; 64 + (net-game-mgr-method-65 () none) ;; 65 + (net-game-mgr-method-66 () none) ;; 66 + (net-game-mgr-method-67 () none) ;; 67 + (net-game-mgr-method-68 () none) ;; 68 + (net-game-mgr-method-69 () none) ;; 69 + (net-game-mgr-method-70 () none) ;; 70 + (net-game-mgr-method-71 () none) ;; 71 + (net-game-mgr-method-72 () none) ;; 72 + (net-game-mgr-method-73 () none) ;; 73 + (net-game-mgr-method-74 () none) ;; 74 + (net-game-mgr-method-75 () none) ;; 75 + (net-game-mgr-method-76 () none) ;; 76 + (net-game-mgr-method-77 () none) ;; 77 + (net-game-mgr-method-78 () none) ;; 78 + (net-game-mgr-method-79 () none) ;; 79 + ) + ) +|# + +;; (define-extern net-game-mgr-init-remote function) +;; (define-extern *msg-map-net-game-mgr* array) +;; (define-extern *net-process-class-info-net-game-mgr* object) +;; (define-extern *net-game-mgr* object) +;; (define-extern *should-update-stats* object) +;; (define-extern *stats-adjusted* object) +;; (define-extern current-finish-mode function) +;; (define-extern *fake-continue* continue-point) +;; (define-extern *overall-score-penalty* object) +;; (define-extern *total-pts-at-stake* object) +;; (define-extern *user-pts-at-stake* object) +;; (define-extern *place-suffix* array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-race-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype net-player-race (net-player) + ((last-on-track-pos vector :inline :offset-assert 400) + (last-on-track-rot quaternion :inline :offset-assert 416) + (wrong-way-bot uint64 :offset-assert 432) + (finish-time int32 :offset-assert 440) + (last-lap-update-time int32 :offset-assert 444) + (last-on-track-time int32 :offset-assert 448) + (last-slice int32 :offset-assert 452) + (last-slice-change-time int32 :offset-assert 456) + (last-valid-vehicle-time uint64 :offset-assert 464) + (rstate racer-state :offset-assert 472) + (current-lap int8 :offset-assert 476) + (racer-idx int8 :offset-assert 477) + (current-lap-start-time int32 :offset-assert 480) + (best-lap-time int32 :offset-assert 484) + (speed-factor float :offset-assert 488) + (max-lap-reached int32 :offset-assert 492) + ) + :method-count-assert 108 + :size-assert #x1f0 + :flag-assert #x6c016001f0 + (:methods + (net-player-race-method-98 () none) ;; 98 + (net-player-race-method-99 () none) ;; 99 + (net-player-race-method-100 () none) ;; 100 + (net-player-race-method-101 () none) ;; 101 + (net-player-race-method-102 () none) ;; 102 + (net-player-race-method-103 () none) ;; 103 + (net-player-race-method-104 () none) ;; 104 + (net-player-race-method-105 () none) ;; 105 + (net-player-race-method-106 () none) ;; 106 + (net-player-race-method-107 () none) ;; 107 + ) + ) +|# + +#| +(deftype net-game-mgr-race (net-game-mgr) + ((lap-count int8 :offset-assert 304) + (racer-ct int8 :offset-assert 305) + (racer-ids UNKNOWN 24 :offset-assert 306) + (race-count-down int8 :offset-assert 330) + (banner uint64 :offset-assert 344) + (hud-clock uint64 :offset-assert 352) + (auto-end-time int32 :offset-assert 360) + ) + :method-count-assert 88 + :size-assert #x16c + :flag-assert #x5800e0016c + (:methods + (net-game-mgr-race-method-80 () none) ;; 80 + (net-game-mgr-race-method-81 () none) ;; 81 + (net-game-mgr-race-method-82 () none) ;; 82 + (net-game-mgr-race-method-83 () none) ;; 83 + (net-game-mgr-race-method-84 () none) ;; 84 + (net-game-mgr-race-method-85 () none) ;; 85 + (net-game-mgr-race-method-86 () none) ;; 86 + (net-game-mgr-race-method-87 () none) ;; 87 + ) + ) +|# + +;; (define-extern net-player-race-init-remote function) +;; (define-extern *msg-map-net-player-race* array) +;; (define-extern *net-process-class-info-net-player-race* object) +;; (define-extern net-game-mgr-race-init-remote function) +;; (define-extern *msg-map-net-game-mgr-race* array) +;; (define-extern *net-process-class-info-net-game-mgr-race* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-game-modes-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype deathmatch-spawner (structure) + ((entity basic :offset-assert 0) + (next-spawn-time uint64 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype deathmatch-spawner-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data UNKNOWN :dynamic :offset-assert 16) + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype net-player-deathmatch (net-player) + ((target-vehicle uint64 :offset-assert 400) + (last-attack-time uint64 :offset-assert 408) + (last-attacker uint64 :offset-assert 416) + (dropdown-score uint64 :offset-assert 424) + (next-spawn-seed int32 :offset-assert 432) + (last-push-time int32 :offset-assert 436) + (free-powerup-timer uint64 :offset-assert 440) + ) + :method-count-assert 100 + :size-assert #x1c0 + :flag-assert #x64013001c0 + (:methods + (net-player-deathmatch-method-98 () none) ;; 98 + (net-player-deathmatch-method-99 () none) ;; 99 + ) + ) +|# + +#| +(deftype net-game-mgr-deathmatch (net-game-mgr) + ((spawner-array basic :offset-assert 304) + (spawner-count int8 :offset-assert 308) + ) + :method-count-assert 84 + :size-assert #x135 + :flag-assert #x5400b00135 + (:methods + (net-game-mgr-deathmatch-method-80 () none) ;; 80 + (net-game-mgr-deathmatch-method-81 () none) ;; 81 + (net-game-mgr-deathmatch-method-82 () none) ;; 82 + (net-game-mgr-deathmatch-method-83 () none) ;; 83 + ) + ) +|# + +#| +(deftype net-player-assassin (net-player-deathmatch) + () + :method-count-assert 100 + :size-assert #x1c0 + :flag-assert #x64013001c0 + ) +|# + +#| +(deftype net-game-mgr-assassin (net-game-mgr-deathmatch) + ((mark UNKNOWN 24 :offset-assert 305) + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 86 + :size-assert #x14d + :flag-assert #x5600c0014d + (:methods + (net-game-mgr-assassin-method-84 () none) ;; 84 + (net-game-mgr-assassin-method-85 () none) ;; 85 + ) + ) +|# + +#| +(deftype net-player-deathrace (net-player-race) + ((impact-death basic :offset-assert 496) + (focus-player-index int8 :offset-assert 500) + (combo-score int32 :offset-assert 504) + (combo-count int32 :offset-assert 508) + (last-score-time int32 :offset-assert 512) + (combo-hud uint64 :offset-assert 520) + ) + :method-count-assert 111 + :size-assert #x210 + :flag-assert #x6f01800210 + (:methods + (net-player-deathrace-method-108 () none) ;; 108 + (net-player-deathrace-method-109 () none) ;; 109 + (net-player-deathrace-method-110 () none) ;; 110 + ) + ) +|# + +#| +(deftype net-game-mgr-deathrace (net-game-mgr-race) + ((next-drone-spawn-time uint64 :offset-assert 368) + ) + :method-count-assert 88 + :size-assert #x178 + :flag-assert #x5800f00178 + ) +|# + +#| +(deftype net-game-mgr-football (net-game-mgr-race) + ((borrow-level basic :offset-assert 364) + (intro-hud-manager UNKNOWN 2 :offset-assert 368) + (intro-sfx UNKNOWN 2 :offset-assert 384) + ) + :method-count-assert 88 + :size-assert #x188 + :flag-assert #x5801000188 + ) +|# + +#| +(deftype net-player-football (net-player-race) + ((my-potato uint64 :offset-assert 496) + (slow-warning uint64 :offset-assert 504) + (pt-multiplier-timeout uint64 :offset-assert 512) + (aux-hud uint64 :offset-assert 520) + (turbo-part-tracker uint64 :offset-assert 528) + (turbo-meter float :offset-assert 536) + (cheat-award-time uint64 :offset-assert 544) + (cheat-turbo-fill float :offset-assert 552) + (bing UNKNOWN 2 :offset-assert 556) + ) + :method-count-assert 108 + :size-assert #x234 + :flag-assert #x6c01b00234 + ) +|# + +#| +(deftype powercell-dispenser (net-powerup) + ((original-owner int32 :offset-assert 244) + ) + :method-count-assert 56 + :size-assert #xf8 + :flag-assert #x38007000f8 + ) +|# + +#| +(deftype powercell-dispenser-draw (powerup-draw) + ((subdraw uint64 :offset-assert 264) + ) + :method-count-assert 58 + :size-assert #x110 + :flag-assert #x3a00800110 + (:methods + (powercell-dispenser-draw-method-57 () none) ;; 57 + ) + ) +|# + +#| +(deftype powercell-footie (rigid-body-object) + ((owner uint64 :offset-assert 288) + (plyid int8 :offset-assert 296) + (tip-vel vector :inline :offset-assert 304) + (spring-pos vector :inline :offset-assert 320) + (spring-vel vector :inline :offset-assert 336) + (bolt basic :offset-assert 352) + (loose-part basic :offset-assert 356) + ) + :method-count-assert 91 + :size-assert #x168 + :flag-assert #x5b00e00168 + (:methods + (powercell-footie-method-89 () none) ;; 89 + (powercell-footie-method-90 () none) ;; 90 + ) + ) +|# + +#| +(deftype net-player-artifact (net-player-deathmatch) + ((seek-after int32 :offset-assert 448) + ) + :method-count-assert 100 + :size-assert #x1c4 + :flag-assert #x64014001c4 + ) +|# + +#| +(deftype artifact-location-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data UNKNOWN :dynamic :offset-assert 16) + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype net-game-mgr-artifact (net-game-mgr-deathmatch) + ((artifact-location-array basic :offset-assert 312) + (artifact-location-count int8 :offset-assert 316) + (artifact UNKNOWN 6 :offset-assert 320) + (num-artifacts int32 :offset-assert 368) + (last-artifact-index int32 :offset-assert 372) + (last-position-index UNKNOWN 6 :offset-assert 376) + (special-rule basic :offset-assert 400) + ) + :method-count-assert 86 + :size-assert #x194 + :flag-assert #x5601100194 + (:methods + (net-game-mgr-artifact-method-84 () none) ;; 84 + (net-game-mgr-artifact-method-85 () none) ;; 85 + ) + ) +|# + +#| +(deftype net-player-beasthunt (net-player-deathmatch) + ((prev-send-score int32 :offset-assert 448) + (last-score-send-time int32 :offset-assert 452) + (big-air-launch-time int32 :offset-assert 456) + (in-big-air basic :offset-assert 460) + (last-fly-time int32 :offset-assert 464) + ) + :method-count-assert 100 + :size-assert #x1d4 + :flag-assert #x64015001d4 + ) +|# + +#| +(deftype net-game-mgr-beasthunt (net-game-mgr-deathmatch) + () + :method-count-assert 84 + :size-assert #x135 + :flag-assert #x5400b00135 + ) +|# + +#| +(deftype net-player-collectable (net-player-deathmatch) + () + :method-count-assert 100 + :size-assert #x1c0 + :flag-assert #x64013001c0 + ) +|# + +#| +(deftype net-game-mgr-collectable (net-game-mgr-deathmatch) + ((steal-mode basic :offset-assert 312) + ) + :method-count-assert 84 + :size-assert #x13c + :flag-assert #x5400b0013c + ) +|# + +;; (define-extern net-player-deathmatch-init-remote function) +;; (define-extern *msg-map-net-player-deathmatch* array) +;; (define-extern *net-process-class-info-net-player-deathmatch* object) +;; (define-extern net-game-mgr-deathmatch-init-remote function) +;; (define-extern *msg-map-net-game-mgr-deathmatch* array) +;; (define-extern *net-process-class-info-net-game-mgr-deathmatch* object) +;; (define-extern net-player-assassin-init-remote function) +;; (define-extern *msg-map-net-player-assassin* array) +;; (define-extern *net-process-class-info-net-player-assassin* object) +;; (define-extern net-game-mgr-assassin-init-remote function) +;; (define-extern *msg-map-net-game-mgr-assassin* array) +;; (define-extern *net-process-class-info-net-game-mgr-assassin* object) +;; (define-extern net-player-deathrace-init-remote function) +;; (define-extern *msg-map-net-player-deathrace* array) +;; (define-extern *net-process-class-info-net-player-deathrace* object) +;; (define-extern net-game-mgr-deathrace-init-remote function) +;; (define-extern *msg-map-net-game-mgr-deathrace* array) +;; (define-extern *net-process-class-info-net-game-mgr-deathrace* object) +;; (define-extern net-game-mgr-football-init-remote function) +;; (define-extern *msg-map-net-game-mgr-football* array) +;; (define-extern *net-process-class-info-net-game-mgr-football* object) +;; (define-extern net-player-football-init-remote function) +;; (define-extern *msg-map-net-player-football* array) +;; (define-extern *net-process-class-info-net-player-football* object) +;; (define-extern powercell-dispenser-init-remote function) +;; (define-extern *msg-map-powercell-dispenser* array) +;; (define-extern *net-process-class-info-powercell-dispenser* object) +;; (define-extern powercell-dispenser-draw-init-remote function) +;; (define-extern *msg-map-powercell-dispenser-draw* array) +;; (define-extern *net-process-class-info-powercell-dispenser-draw* object) +;; (define-extern powercell-footie-init-remote function) +;; (define-extern *msg-map-powercell-footie* array) +;; (define-extern *net-process-class-info-powercell-footie* object) +;; (define-extern net-player-artifact-init-remote function) +;; (define-extern *msg-map-net-player-artifact* array) +;; (define-extern *net-process-class-info-net-player-artifact* object) +;; (define-extern net-game-mgr-artifact-init-remote function) +;; (define-extern *msg-map-net-game-mgr-artifact* array) +;; (define-extern *net-process-class-info-net-game-mgr-artifact* object) +;; (define-extern net-player-beasthunt-init-remote function) +;; (define-extern *msg-map-net-player-beasthunt* array) +;; (define-extern *net-process-class-info-net-player-beasthunt* object) +;; (define-extern net-game-mgr-beasthunt-init-remote function) +;; (define-extern *msg-map-net-game-mgr-beasthunt* array) +;; (define-extern *net-process-class-info-net-game-mgr-beasthunt* object) +;; (define-extern net-player-collectable-init-remote function) +;; (define-extern *msg-map-net-player-collectable* array) +;; (define-extern *net-process-class-info-net-player-collectable* object) +;; (define-extern net-game-mgr-collectable-init-remote function) +;; (define-extern *msg-map-net-game-mgr-collectable* array) +;; (define-extern *net-process-class-info-net-game-mgr-collectable* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-game-modes2-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype net-player-ctf (net-player-deathmatch) + ((info-text-display-stop-time int32 :offset-assert 448) + (flag-event uint64 :offset-assert 456) + (indicate-flag-event-stop-time int32 :offset-assert 464) + ) + :method-count-assert 103 + :size-assert #x1d4 + :flag-assert #x67015001d4 + (:methods + (net-player-ctf-method-100 () none) ;; 100 + (net-player-ctf-method-101 () none) ;; 101 + (net-player-ctf-method-102 () none) ;; 102 + ) + ) +|# + +#| +(deftype net-game-mgr-ctf (net-game-mgr-deathmatch) + ((red-spawners-count int8 :offset-assert 309) + ) + :method-count-assert 84 + :size-assert #x136 + :flag-assert #x5400b00136 + ) +|# + +#| +(deftype ctf-flag (process-focusable) + ((carrier uint64 :offset-assert 256) + (grabbed-time int32 :offset-assert 264) + (carried-part uint64 :offset-assert 272) + (task-arrow uint64 :offset-assert 280) + (team uint8 :offset-assert 288) + (count uint8 :offset-assert 289) + (spawn-pos vector :inline :offset-assert 304) + (last-good-pos vector :inline :offset-assert 320) + ) + :method-count-assert 78 + :size-assert #x150 + :flag-assert #x4e00c00150 + (:methods + (ctf-flag-method-59 () none) ;; 59 + (ctf-flag-method-60 () none) ;; 60 + (ctf-flag-method-61 () none) ;; 61 + (ctf-flag-method-62 () none) ;; 62 + (ctf-flag-method-63 () none) ;; 63 + (ctf-flag-method-64 () none) ;; 64 + (ctf-flag-method-65 () none) ;; 65 + (ctf-flag-method-66 () none) ;; 66 + (ctf-flag-method-67 () none) ;; 67 + (ctf-flag-method-68 () none) ;; 68 + (ctf-flag-method-69 () none) ;; 69 + (ctf-flag-method-70 () none) ;; 70 + (ctf-flag-method-71 () none) ;; 71 + (ctf-flag-method-72 () none) ;; 72 + (ctf-flag-method-73 () none) ;; 73 + (ctf-flag-method-74 () none) ;; 74 + (ctf-flag-method-75 () none) ;; 75 + (ctf-flag-method-76 () none) ;; 76 + (ctf-flag-method-77 () none) ;; 77 + ) + ) +|# + +#| +(deftype net-player-rushhour (net-player-race) + ((combo-score int32 :offset-assert 496) + (combo-count int32 :offset-assert 500) + (last-score-time int32 :offset-assert 504) + (combo-hud uint64 :offset-assert 512) + (drone-type uint16 :offset-assert 520) + (powerup-timer uint64 :offset-assert 536) + ) + :method-count-assert 111 + :size-assert #x220 + :flag-assert #x6f01900220 + (:methods + (net-player-rushhour-method-108 () none) ;; 108 + (net-player-rushhour-method-109 () none) ;; 109 + (net-player-rushhour-method-110 () none) ;; 110 + ) + ) +|# + +#| +(deftype net-game-mgr-rushhour (net-game-mgr-race) + ((next-drone-spawn-time uint64 :offset-assert 368) + (drone-type-counter int32 :offset-assert 376) + ) + :method-count-assert 88 + :size-assert #x17c + :flag-assert #x5800f0017c + ) +|# + +#| +(deftype net-game-mgr-king-of-hill (net-game-mgr-deathmatch) + ((king-id int16 :offset-assert 310) + (kingfx-part UNKNOWN 4 :offset-assert 312) + ) + :method-count-assert 85 + :size-assert #x148 + :flag-assert #x5500c00148 + (:methods + (net-game-mgr-king-of-hill-method-84 () none) ;; 84 + ) + ) +|# + +#| +(deftype net-player-king-of-hill (net-player-deathmatch) + ((zap-interval uint64 :offset-assert 448) + ) + :method-count-assert 100 + :size-assert #x1c8 + :flag-assert #x64014001c8 + ) +|# + +#| +(deftype net-player-time-box (net-player-race) + ((player-timer float :offset-assert 496) + (start-time uint32 :offset-assert 500) + (freeze-time-total uint32 :offset-assert 504) + (freeze-time-current uint32 :offset-assert 508) + (freeze-time-remaining uint32 :offset-assert 512) + (start-freeze-time uint32 :offset-assert 516) + (total-race-time uint32 :offset-assert 520) + (lose-time uint32 :offset-assert 524) + (pickup-total int32 :offset-assert 528) + (pickup-collected int32 :offset-assert 532) + (bonus-time int32 :offset-assert 536) + ) + :method-count-assert 109 + :size-assert #x21c + :flag-assert #x6d0190021c + (:methods + (net-player-time-box-method-108 () none) ;; 108 + ) + ) +|# + +#| +(deftype net-game-mgr-time-box (net-game-mgr-race) + ((total-race-time uint32 :offset-assert 364) + (sound-id uint32 :offset-assert 368) + ) + :method-count-assert 88 + :size-assert #x174 + :flag-assert #x5800f00174 + ) +|# + +#| +(deftype net-player-time-trial (net-player-race) + () + :method-count-assert 108 + :size-assert #x1f0 + :flag-assert #x6c016001f0 + ) +|# + +#| +(deftype net-game-mgr-time-trial (net-game-mgr-race) + () + :method-count-assert 88 + :size-assert #x16c + :flag-assert #x5800e0016c + ) +|# + +#| +(deftype net-game-mgr-training (net-game-mgr-deathrace) + ((spawn-ai-num int32 :offset-assert 376) + (ai-num int32 :offset-assert 380) + (ais-move? basic :offset-assert 384) + (ai-attack? basic :offset-assert 388) + (can-shoot? basic :offset-assert 392) + ) + :method-count-assert 88 + :size-assert #x18c + :flag-assert #x580100018c + ) +|# + +#| +(deftype net-player-boss-battle (net-player-race) + ((give-weapon-timer uint64 :offset-assert 496) + ) + :method-count-assert 114 + :size-assert #x1f8 + :flag-assert #x72017001f8 + (:methods + (net-player-boss-battle-method-108 () none) ;; 108 + (net-player-boss-battle-method-109 () none) ;; 109 + (net-player-boss-battle-method-110 () none) ;; 110 + (net-player-boss-battle-method-111 () none) ;; 111 + (net-player-boss-battle-method-112 () none) ;; 112 + (net-player-boss-battle-method-113 () none) ;; 113 + ) + ) +|# + +#| +(deftype net-game-mgr-boss-battle (net-game-mgr-race) + ((player-won? basic :offset-assert 364) + (player-lost? basic :offset-assert 368) + (lose-time uint64 :offset-assert 376) + ) + :method-count-assert 88 + :size-assert #x180 + :flag-assert #x5800f00180 + ) +|# + +;; (define-extern *ctf-flag* object) +;; (define-extern *ctf-red-base* object) +;; (define-extern *ctf-blue-base* object) +;; (define-extern net-player-ctf-init-remote function) +;; (define-extern *msg-map-net-player-ctf* array) +;; (define-extern *net-process-class-info-net-player-ctf* object) +;; (define-extern net-game-mgr-ctf-init-remote function) +;; (define-extern *msg-map-net-game-mgr-ctf* array) +;; (define-extern *net-process-class-info-net-game-mgr-ctf* object) +;; (define-extern ctf-flag-init-remote function) +;; (define-extern *msg-map-ctf-flag* array) +;; (define-extern *net-process-class-info-ctf-flag* object) +;; (define-extern net-player-rushhour-init-remote function) +;; (define-extern *msg-map-net-player-rushhour* array) +;; (define-extern *net-process-class-info-net-player-rushhour* object) +;; (define-extern net-game-mgr-rushhour-init-remote function) +;; (define-extern *msg-map-net-game-mgr-rushhour* array) +;; (define-extern *net-process-class-info-net-game-mgr-rushhour* object) +;; (define-extern net-game-mgr-king-of-hill-init-remote function) +;; (define-extern *msg-map-net-game-mgr-king-of-hill* array) +;; (define-extern *net-process-class-info-net-game-mgr-king-of-hill* object) +;; (define-extern net-player-king-of-hill-init-remote function) +;; (define-extern *msg-map-net-player-king-of-hill* array) +;; (define-extern *net-process-class-info-net-player-king-of-hill* object) +;; (define-extern net-player-time-box-init-remote function) +;; (define-extern *msg-map-net-player-time-box* array) +;; (define-extern *net-process-class-info-net-player-time-box* object) +;; (define-extern net-game-mgr-time-box-init-remote function) +;; (define-extern *msg-map-net-game-mgr-time-box* array) +;; (define-extern *net-process-class-info-net-game-mgr-time-box* object) +;; (define-extern net-player-time-trial-init-remote function) +;; (define-extern *msg-map-net-player-time-trial* array) +;; (define-extern *net-process-class-info-net-player-time-trial* object) +;; (define-extern net-game-mgr-time-trial-init-remote function) +;; (define-extern *msg-map-net-game-mgr-time-trial* array) +;; (define-extern *net-process-class-info-net-game-mgr-time-trial* object) +;; (define-extern net-game-mgr-training-init-remote function) +;; (define-extern *msg-map-net-game-mgr-training* array) +;; (define-extern *net-process-class-info-net-game-mgr-training* object) +;; (define-extern net-player-boss-battle-init-remote function) +;; (define-extern *msg-map-net-player-boss-battle* array) +;; (define-extern *net-process-class-info-net-player-boss-battle* object) +;; (define-extern net-game-mgr-boss-battle-init-remote function) +;; (define-extern *msg-map-net-game-mgr-boss-battle* array) +;; (define-extern *net-process-class-info-net-game-mgr-boss-battle* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-simple-destruct-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype net-simple-destruct (process-focusable) + ((hit-points float :offset-assert 256) + (incoming-attack-id int32 :offset-assert 260) + (impact-velocity vector :inline :offset-assert 272) + ) + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + (:methods + (net-simple-destruct-method-59 () none) ;; 59 + (net-simple-destruct-method-60 () none) ;; 60 + (net-simple-destruct-method-61 () none) ;; 61 + (net-simple-destruct-method-62 () none) ;; 62 + (net-simple-destruct-method-63 () none) ;; 63 + (net-simple-destruct-method-64 () none) ;; 64 + (net-simple-destruct-method-65 () none) ;; 65 + (net-simple-destruct-method-66 () none) ;; 66 + (net-simple-destruct-method-67 () none) ;; 67 + (net-simple-destruct-method-68 () none) ;; 68 + (net-simple-destruct-method-69 () none) ;; 69 + ) + ) +|# + +#| +(deftype net-simple-destruct-mgr (process-nettable) + () + :method-count-assert 48 + :size-assert #xbc + :flag-assert #x30003000bc + (:methods + (net-simple-destruct-mgr-method-42 () none) ;; 42 + (net-simple-destruct-mgr-method-43 () none) ;; 43 + (net-simple-destruct-mgr-method-44 () none) ;; 44 + (net-simple-destruct-mgr-method-45 () none) ;; 45 + (net-simple-destruct-mgr-method-46 () none) ;; 46 + (net-simple-destruct-mgr-method-47 () none) ;; 47 + ) + ) +|# + +;; (define-extern net-simple-destruct-mgr-init-remote function) +;; (define-extern *msg-map-net-simple-destruct-mgr* array) +;; (define-extern *net-process-class-info-net-simple-destruct-mgr* object) +;; (define-extern *net-simple-destruct-mgr* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-hud-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-util-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-proxy-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-projectile-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype net-projectile (projectile) + () + :method-count-assert 75 + :size-assert #x231 + :flag-assert #x4b01b00231 + (:methods + (net-projectile-method-72 () none) ;; 72 + (net-projectile-method-73 () none) ;; 73 + (net-projectile-method-74 () none) ;; 74 + ) + ) +|# + +;; (define-extern net-projectile-init-remote function) +;; (define-extern *msg-map-net-projectile* array) +;; (define-extern *net-process-class-info-net-projectile* object) +;; (define-extern spawn-net-projectile function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-time-trial-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype timetrial-snapshot (structure) + ((pos-x-lo uint16 :offset-assert 0) + (pos-y uint16 :offset-assert 2) + (pos-z-lo uint16 :offset-assert 4) + (pos-xz-hi uint8 :offset-assert 6) + (rot UNKNOWN 3 :offset-assert 7) + (flags uint8 :offset-assert 10) + (skip uint8 :offset-assert 11) + ) + :method-count-assert 13 + :size-assert #xc + :flag-assert #xd0000000c + (:methods + (timetrial-snapshot-method-9 () none) ;; 9 + (timetrial-snapshot-method-10 () none) ;; 10 + (timetrial-snapshot-method-11 () none) ;; 11 + (timetrial-snapshot-method-12 () none) ;; 12 + ) + ) +|# + +#| +(deftype timetrial-recording (structure) + ((crc uint32 :offset-assert 0) + (total-snaps uint32 :offset-assert 4) + (total-time uint32 :offset-assert 8) + (task-node uint32 :offset-assert 12) + (acct-id uint32 :offset-assert 16) + (player-info net-world-staging-player :inline :offset-assert 24) + (player-name UNKNOWN 32 :offset-assert 56) + (cur-idx int32 :offset-assert 88) + (start-pos int32 :offset-assert 92) + (cur-snap-time int32 :offset-assert 96) + (data UNKNOWN :dynamic :offset-assert 100) + ) + :method-count-assert 14 + :size-assert #x64 + :flag-assert #xe00000064 + (:methods + (timetrial-recording-method-9 () none) ;; 9 + (timetrial-recording-method-10 () none) ;; 10 + (timetrial-recording-method-11 () none) ;; 11 + (timetrial-recording-method-12 () none) ;; 12 + (timetrial-recording-method-13 () none) ;; 13 + ) + ) +|# + +;; (define-extern *ghosts-enabled* object) +;; (define-extern *ghost-rec* object) +;; (define-extern *ghost-upload-proc* object) +;; (define-extern *ghost-download-proc* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-eco-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype eco-perm (structure) + ((time int32 :offset-assert 0) + (owner int8 :offset-assert 4) + (hit-by-local int8 :offset-assert 5) + (flags uint64 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype eco (process-drawable) + () + :method-count-assert 56 + :size-assert #xf8 + :flag-assert #x38007000f8 + (:methods + (eco-method-50 () none) ;; 50 + (eco-method-51 () none) ;; 51 + (eco-method-52 () none) ;; 52 + (eco-method-53 () none) ;; 53 + (eco-method-54 () none) ;; 54 + (eco-method-55 () none) ;; 55 + ) + ) +|# + +#| +(deftype eco-mgr (process-nettable) + () + :method-count-assert 51 + :size-assert #xbc + :flag-assert #x33003000bc + (:methods + (eco-mgr-method-42 () none) ;; 42 + (eco-mgr-method-43 () none) ;; 43 + (eco-mgr-method-44 () none) ;; 44 + (eco-mgr-method-45 () none) ;; 45 + (eco-mgr-method-46 () none) ;; 46 + (eco-mgr-method-47 () none) ;; 47 + (eco-mgr-method-48 () none) ;; 48 + (eco-mgr-method-49 () none) ;; 49 + (eco-mgr-method-50 () none) ;; 50 + ) + ) +|# + +;; (define-extern eco-mgr-init-remote function) +;; (define-extern *msg-map-eco-mgr* array) +;; (define-extern *net-process-class-info-eco-mgr* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; menu2-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype menu-string (hud-string) + () + :method-count-assert 10 + :size-assert #x44 + :flag-assert #xa00000044 + ) +|# + +#| +(deftype menu-option-info (structure) + ((display-name-id uint32 :offset-assert 0) + (sym basic :offset-assert 4) + (extra basic :offset-assert 8) + (extra-object basic :offset-assert 8) + (extra-int int32 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ;; field extra uses ~A with a signed load. field extra-object uses ~A with a signed load. + ) +|# + +#| +(deftype strings-extra-struct (structure) + ((text UNKNOWN 128 :offset-assert 0) + (extra basic :offset-assert 128) + (extra-object basic :offset-assert 128) + (extra-int int32 :offset-assert 128) + (extra-int16 UNKNOWN 2 :offset-assert 128) + ) + :method-count-assert 9 + :size-assert #x84 + :flag-assert #x900000084 + ;; field extra uses ~A with a signed load. field extra-object uses ~A with a signed load. + ) +|# + +#| +(deftype menu-selection-struct (structure) + ((array-ptr basic :offset-assert 0) + (selection-index int32 :offset-assert 4) + (last-sym basic :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype animation-info (structure) + ((enter-anim int32 :offset-assert 0) + (exit-anim int32 :offset-assert 4) + (running-anim int32 :offset-assert 8) + (anim-speed float :offset-assert 12) + (enter-delay uint32 :offset-assert 16) + (3d-offset vector :inline :offset-assert 32) + (3d-offset-x float :offset-assert 32) + (3d-offset-y float :offset-assert 36) + (3d-offset-z float :offset-assert 40) + (3d-offset-w float :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype base-menu-info (structure) + ((menu-type basic :offset-assert 0) + (children basic :offset-assert 4) + (name-symbol basic :offset-assert 8) + (3d-menu-type basic :offset-assert 12) + (trans-info animation-info :offset-assert 16) + (joint-index int8 :offset-assert 20) + (joint-index-2 int8 :offset-assert 21) + (box-index int8 :offset-assert 22) + (flags uint8 :offset-assert 23) + (joints basic :offset-assert 24) + (anim-delay uint32 :offset-assert 28) + (width int32 :offset-assert 32) + (height int32 :offset-assert 36) + (scale-y float :offset-assert 40) + (scale-x float :offset-assert 44) + (user-data uint32 :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x34 + :flag-assert #x900000034 + ) +|# + +#| +(deftype base-menu (process-drawable) + ((child-handles basic :offset-assert 248) + (info-ptr base-menu-info :offset-assert 252) + (focused? basic :offset-assert 256) + (3d-menu-2d-offset vector :inline :offset-assert 272) + (pos-x float :offset-assert 288) + (pos-y float :offset-assert 292) + (pos-z float :offset-assert 296) + (menu-time uint32 :offset-assert 300) + (width int32 :offset-assert 304) + (height int32 :offset-assert 308) + (width-array basic :offset-assert 312) + (height-array basic :offset-assert 316) + (joint-mat matrix :inline :offset-assert 320) + (offset-matrix matrix :inline :offset-assert 384) + (j-mod joint-mod-set-world :inline :offset-assert 448) + (extra-offset vector :inline :offset-assert 512) + (pad int8 :offset-assert 528) + (hidden? basic :offset-assert 532) + ) + :method-count-assert 65 + :size-assert #x218 + :flag-assert #x4101900218 + (:methods + (base-menu-method-50 () none) ;; 50 + (base-menu-method-51 () none) ;; 51 + (base-menu-method-52 () none) ;; 52 + (base-menu-method-53 () none) ;; 53 + (base-menu-method-54 () none) ;; 54 + (base-menu-method-55 () none) ;; 55 + (base-menu-method-56 () none) ;; 56 + (base-menu-method-57 () none) ;; 57 + (base-menu-method-58 () none) ;; 58 + (base-menu-method-59 () none) ;; 59 + (base-menu-method-60 () none) ;; 60 + (base-menu-method-61 () none) ;; 61 + (base-menu-method-62 () none) ;; 62 + (base-menu-method-63 () none) ;; 63 + (base-menu-method-64 () none) ;; 64 + ) + ) +|# + +#| +(deftype jakx-logo-menu (base-menu) + () + :method-count-assert 65 + :size-assert #x218 + :flag-assert #x4101900218 + ) +|# + +#| +(deftype map-menu (base-menu) + () + :method-count-assert 66 + :size-assert #x218 + :flag-assert #x4201900218 + (:methods + (map-menu-method-65 () none) ;; 65 + ) + ) +|# + +#| +(deftype selection-menu-manager (base-menu) + ((selection-index int32 :offset-assert 536) + (prev-selection-index int32 :offset-assert 540) + (enabled basic :offset-assert 544) + ) + :method-count-assert 67 + :size-assert #x224 + :flag-assert #x4301a00224 + (:methods + (selection-menu-manager-method-65 () none) ;; 65 + (selection-menu-manager-method-66 () none) ;; 66 + ) + ) +|# + +#| +(deftype sprite-info (structure) + ((offset vector :inline :offset-assert 0) + (offset-x float :offset-assert 0) + (offset-y float :offset-assert 4) + (offset-z float :offset-assert 8) + (offset-w float :offset-assert 12) + (pos-z int32 :offset-assert 16) + (tex-name basic :offset-assert 20) + (tex-id uint32 :offset-assert 24) + (scale-x float :offset-assert 28) + (scale-y float :offset-assert 32) + (flags uint16 :offset-assert 36) + (offset-from-index int8 :offset-assert 38) + (offset-dir uint8 :offset-assert 39) + (texture-index int8 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x29 + :flag-assert #x900000029 + ) +|# + +#| +(deftype transition-info (animation-info) + ((enter-pos-x float :offset-assert 48) + (enter-pos-y float :offset-assert 52) + (enter-alpha float :offset-assert 56) + (running-alpha float :offset-assert 60) + (exit-alpha float :offset-assert 64) + (running-pos-x float :offset-assert 68) + (running-pos-y float :offset-assert 72) + (exit-pos-x float :offset-assert 76) + (exit-pos-y float :offset-assert 80) + (move-rate float :offset-assert 84) + (scroll-offset-x int32 :offset-assert 88) + (scroll-offset-y int32 :offset-assert 92) + (scroll-rate float :offset-assert 96) + ) + :method-count-assert 9 + :size-assert #x64 + :flag-assert #x900000064 + ) +|# + +#| +(deftype sprite-menu-info (base-menu-info) + ((trans-info transition-info :offset-assert 16) + (sprites-info basic :offset-assert 52) + (color uint32 :offset-assert 56) + ) + :method-count-assert 9 + :size-assert #x3c + :flag-assert #x90000003c + ) +|# + +#| +(deftype hud-sprite-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data UNKNOWN :dynamic :offset-assert 16) + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype sprite-menu (base-menu) + ((sprites basic :offset-assert 536) + (alpha float :offset-assert 540) + ) + :method-count-assert 66 + :size-assert #x220 + :flag-assert #x4201900220 + (:methods + (sprite-menu-method-65 () none) ;; 65 + ) + ) +|# + +#| +(deftype menu-prim-strip-client (prim-client) + ((strip basic :offset-assert 4) + ) + :method-count-assert 11 + :size-assert #x8 + :flag-assert #xb00000008 + (:methods + (menu-prim-strip-client-method-10 () none) ;; 10 + ) + ) +|# + +#| +(deftype prim-strip-menu (sprite-menu) + ((p-client-array basic :offset-assert 544) + (colors basic :offset-assert 548) + ) + :method-count-assert 67 + :size-assert #x228 + :flag-assert #x4301a00228 + (:methods + (prim-strip-menu-method-66 () none) ;; 66 + ) + ) +|# + +#| +(deftype sprite-ptr-info (sprite-info) + ((sprite-ptr basic :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype sprite-ptr-menu-info (sprite-menu-info) + () + :method-count-assert 9 + :size-assert #x3c + :flag-assert #x90000003c + ) +|# + +#| +(deftype sprite-ptr-menu (prim-strip-menu) + () + :method-count-assert 67 + :size-assert #x228 + :flag-assert #x4301a00228 + ) +|# + +#| +(deftype index-sprite-list-menu-info (sprite-menu-info) + ((index-list basic :offset-assert 68) + (horiz-list? basic :offset-assert 72) + (item-offset int32 :offset-assert 76) + (color-array basic :offset-assert 80) + ) + :method-count-assert 9 + :size-assert #x54 + :flag-assert #x900000054 + ) +|# + +#| +(deftype index-sprite-list-menu (prim-strip-menu) + ((index-list basic :offset-assert 552) + ) + :method-count-assert 67 + :size-assert #x22c + :flag-assert #x4301a0022c + ) +|# + +#| +(deftype string-info (structure) + ((offset vector :inline :offset-assert 0) + (offset-x float :offset-assert 0) + (offset-y float :offset-assert 4) + (offset-z float :offset-assert 8) + (offset-w float :offset-assert 12) + (pos-z int32 :offset-assert 16) + (id uint32 :offset-assert 20) + (font-scale float :offset-assert 24) + (width float :offset-assert 28) + (height float :offset-assert 32) + (string-ptr basic :offset-assert 36) + (string-ptr-needs-format basic :offset-assert 40) + (font-flags uint16 :offset-assert 44) + (font-color uint8 :offset-assert 46) + (font-color-2 uint8 :offset-assert 47) + (font-color-3 uint8 :offset-assert 48) + (offset-dir uint8 :offset-assert 49) + (offset-from-index int8 :offset-assert 50) + (offset-type-from int8 :offset-assert 51) + (is-player-string basic :offset-assert 52) + (tmp-talking int32 :offset-assert 56) + (extra-arg basic :offset-assert 60) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) +|# + +#| +(deftype menu-string-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data UNKNOWN :dynamic :offset-assert 16) + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype string-menu-info (sprite-menu-info) + ((strings-info basic :offset-assert 60) + (text-ids basic :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x44 + :flag-assert #x900000044 + ) +|# + +#| +(deftype string-menu (prim-strip-menu) + ((strings basic :offset-assert 552) + (text-ids basic :offset-assert 556) + ) + :method-count-assert 69 + :size-assert #x230 + :flag-assert #x4501a00230 + (:methods + (string-menu-method-67 () none) ;; 67 + (string-menu-method-68 () none) ;; 68 + ) + ) +|# + +#| +(deftype options-bar-indicator (string-menu) + () + :method-count-assert 69 + :size-assert #x230 + :flag-assert #x4501a00230 + ) +|# + +#| +(deftype game-text-menu-info (string-menu-info) + ((text-id uint32 :offset-assert 68) + ) + :method-count-assert 9 + :size-assert #x48 + :flag-assert #x900000048 + ) +|# + +#| +(deftype game-text-menu (string-menu) + ((text-id uint32 :offset-assert 560) + ) + :method-count-assert 69 + :size-assert #x234 + :flag-assert #x4501b00234 + ) +|# + +#| +(deftype dynamic-string-menu (string-menu) + () + :method-count-assert 69 + :size-assert #x230 + :flag-assert #x4501a00230 + ) +|# + +#| +(deftype dynamic-driver-info (dynamic-string-menu) + () + :method-count-assert 69 + :size-assert #x230 + :flag-assert #x4501a00230 + ) +|# + +#| +(deftype dropdown-trans-info (transition-info) + ((selected-offset vector :offset-assert 100) + ) + :method-count-assert 9 + :size-assert #x68 + :flag-assert #x900000068 + ) +|# + +#| +(deftype dropdown-item-info (string-menu-info) + ((trans-info dropdown-trans-info :offset-assert 16) + (selection-box-width int32 :offset-assert 68) + (selection-box-height int32 :offset-assert 72) + (selection-type basic :offset-assert 76) + (selection-extra int32 :offset-assert 80) + (selection-box-offset vector :inline :offset-assert 96) + (selection-box-offset-x float :offset-assert 96) + (selection-box-offset-y float :offset-assert 100) + (selection-box-offset-z float :offset-assert 104) + (selection-box-offset-w float :offset-assert 108) + (selection-box-color uint32 :offset-assert 112) + (down-index-modifier int8 :offset-assert 116) + (up-index-modifier int8 :offset-assert 117) + (left-index-modifier int8 :offset-assert 118) + (right-index-modifier int8 :offset-assert 119) + (selection-box-texture-index int8 :offset-assert 120) + (reset-pad uint8 :offset-assert 121) + ) + :method-count-assert 9 + :size-assert #x7a + :flag-assert #x90000007a + ) +|# + +#| +(deftype dropdown-item (string-menu) + ((selected basic :offset-assert 560) + (p-client-selection basic :offset-assert 564) + (prev-selection int32 :offset-assert 568) + (enabled basic :offset-assert 572) + (selected-offset vector :inline :offset-assert 576) + ) + :method-count-assert 70 + :size-assert #x250 + :flag-assert #x4601c00250 + (:methods + (dropdown-item-method-69 () none) ;; 69 + ) + ) +|# + +#| +(deftype item-list-selection-info (dropdown-item-info) + ((menu-options-info-sym basic :offset-assert 124) + (add-string uint32 :offset-assert 128) + ) + :method-count-assert 9 + :size-assert #x84 + :flag-assert #x900000084 + ) +|# + +#| +(deftype item-list-selection (dropdown-item) + ((menu-options-info-ptr menu-selection-struct :offset-assert 592) + (selection-type basic :offset-assert 596) + (selection-index int32 :offset-assert 600) + ) + :method-count-assert 70 + :size-assert #x25c + :flag-assert #x4601d0025c + ) +|# + +#| +(deftype item-list-driver-selection (item-list-selection) + () + :method-count-assert 70 + :size-assert #x25c + :flag-assert #x4601d0025c + ) +|# + +#| +(deftype item-num-selection-info (item-list-selection-info) + () + :method-count-assert 9 + :size-assert #x88 + :flag-assert #x900000088 + ) +|# + +#| +(deftype menu-num-info (structure) + ((min int32 :offset-assert 0) + (max int32 :offset-assert 4) + (current-num int32 :offset-assert 8) + (last-num int32 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype item-num-selection (item-list-selection) + ((num-selection int32 :offset-assert 604) + (sound-id uint32 :offset-assert 608) + ) + :method-count-assert 70 + :size-assert #x264 + :flag-assert #x4601e00264 + ) +|# + +#| +(deftype item-num-max-selection (item-num-selection) + () + :method-count-assert 70 + :size-assert #x268 + :flag-assert #x4601e00268 + ) +|# + +#| +(deftype games-list-selection (string-menu) + ((selection-index int8 :offset-assert 560) + ) + :method-count-assert 69 + :size-assert #x231 + :flag-assert #x4501b00231 + ) +|# + +#| +(deftype player-ct-string-menu (string-menu) + () + :method-count-assert 69 + :size-assert #x230 + :flag-assert #x4501a00230 + ) +|# + +#| +(deftype string-list-selection (dropdown-item) + ((selection-index int8 :offset-assert 592) + ) + :method-count-assert 70 + :size-assert #x251 + :flag-assert #x4601d00251 + ) +|# + +#| +(deftype basic-list-selection-info (string-menu-info) + ((menu-options-info-sym basic :offset-assert 68) + ) + :method-count-assert 9 + :size-assert #x48 + :flag-assert #x900000048 + ) +|# + +#| +(deftype basic-list-selection (string-menu) + ((menu-options-info-ptr basic :offset-assert 560) + (selection-index int8 :offset-assert 564) + ) + :method-count-assert 69 + :size-assert #x235 + :flag-assert #x4501b00235 + ) +|# + +#| +(deftype big-text-menu-info (sprite-menu-info) + ((string-info string-info :offset-assert 60) + (text basic :offset-assert 64) + (off-2d-x float :offset-assert 68) + (off-2d-y float :offset-assert 72) + ) + :method-count-assert 9 + :size-assert #x4c + :flag-assert #x90000004c + ) +|# + +#| +(deftype big-text-menu (sprite-menu) + ((big-text basic :offset-assert 544) + (vert-offset float :offset-assert 548) + (vert-extent float :offset-assert 552) + (temp-string basic :offset-assert 556) + ) + :method-count-assert 67 + :size-assert #x230 + :flag-assert #x4301a00230 + (:methods + (big-text-menu-method-66 () none) ;; 66 + ) + ) +|# + +;; (define-extern *jakx-logo-seen?* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; menu2-lists ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype vehicle-configuration (structure) + ((load-parts uint64 :offset-assert 0) + (id uint32 :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype selection-cache (structure) + ((state basic :offset-assert 0) + (selection-type basic :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +;; (define-extern *menu-level-info-array* array) +;; (define-extern *menu-level-info-beta-array* array) +;; (define-extern *game-connection-info-array* array) +;; (define-extern *menu-events-info-all* array) +;; (define-extern *menu-events-info-beta* array) +;; (define-extern *lobby-entrance-info-array* array) +;; (define-extern *num-local-players-info-array* array) +;; (define-extern *error-lobby-array* array) +;; (define-extern *mirror-mode-array* array) +;; (define-extern *mirror-mode* object) +;; (define-extern *num-players-info* object) +;; (define-extern *ai-num-players-info* object) +;; (define-extern *buddy-num-players-info* object) +;; (define-extern *clan-num-players-info* object) +;; (define-extern *sfx-volume-info* object) +;; (define-extern *music-volume-info* object) +;; (define-extern *speech-volume-info* object) +;; (define-extern *brightness-info* object) +;; (define-extern *contrast-info* object) +;; (define-extern *menu-events-info-array* object) +;; (define-extern *menu-level-array* object) +;; (define-extern *menu-vehicle-array* object) +;; (define-extern *menu-driver-array* object) +;; (define-extern *menu-vehicle-parts-array* object) +;; (define-extern *player-index* array) +;; (define-extern *menu-ready-room-stats-extra-array* array) +;; (define-extern *menu-ready-room-instruct-array* array) +;; (define-extern *menu-ready-room-vehicle-array* array) +;; (define-extern *menu-ready-room-avatar-array* array) +;; (define-extern *ready-room-x-string* array) +;; (define-extern *menu-split-selection-string* array) +;; (define-extern *player-headphones?-list* array) +;; (define-extern *player-ready?-list* array) +;; (define-extern *split-screen-sprite-list* array) +;; (define-extern *graphic-options-sprite-list* array) +;; (define-extern *sound-options-sprite-list* array) +;; (define-extern *adventure-bottom-bar-ids* array) +;; (define-extern *adventure-bottom-bar-dpad-ids* array) +;; (define-extern *adventure-bottom-bar-triangle-ids* array) +;; (define-extern *adventure-top-bar-title-ids* array) +;; (define-extern *adventure-garage-reminder-ids* array) +;; (define-extern *adventure-city-ids* array) +;; (define-extern *adventure-venue-ids* array) +;; (define-extern *secrets-accept-ids* array) +;; (define-extern *player-names-extra* array) +;; (define-extern *driver-owner-dynamic-strings* array) +;; (define-extern *driver-taken-string* array) +;; (define-extern *driver-name* array) +;; (define-extern *driver-height* array) +;; (define-extern *driver-weight* array) +;; (define-extern *driver-sex* array) +;; (define-extern *driver-eyes* array) +;; (define-extern *driver-age* array) +;; (define-extern *personal-selection-bottom-bar-ids* array) +;; (define-extern *garage-string* array) +;; (define-extern *game-title-extra* array) +;; (define-extern *player-to-be-kicked-extra* array) +;; (define-extern *high-score-string* array) +;; (define-extern *high-score-ranking-string* array) +;; (define-extern *high-score-title-ids* array) +;; (define-extern *player-cash-extra* array) +;; (define-extern *mongoose-configurations* array) +;; (define-extern *falcon-configurations* array) +;; (define-extern *wombat-configurations* array) +;; (define-extern *aspect-ratio-data* array) +;; (define-extern *aspect-ratio* object) +;; (define-extern *vibration-menu-data* array) +;; (define-extern *vibration-menu-info* object) +;; (define-extern *crash-cam-menu-data* array) +;; (define-extern *crash-cam-menu-info* object) +;; (define-extern *kill-cam-menu-data* array) +;; (define-extern *kill-cam-menu-info* object) +;; (define-extern *progressive-menu-data* array) +;; (define-extern *progressive-menu-info* object) +;; (define-extern *video-mode-menu-data* array) +;; (define-extern *video-mode-menu-info* object) +;; (define-extern *stereo-mode-data* array) +;; (define-extern *stereo-mode-info* object) +;; (define-extern *languge-text-ids* array) +;; (define-extern *bottom-bar-ready-room-circle* array) +;; (define-extern *vehicle-class-ids* array) +;; (define-extern *screen-mode-ids* array) +;; (define-extern *video-mode-ids* array) +;; (define-extern *video-mode-change-ids* array) +;; (define-extern *advanced-options-button-ids* array) +;; (define-extern *menu-vehicle-colors-data* array) +;; (define-extern *menu-vehicle-colors-info* object) +;; (define-extern *level-texture-string* object) +;; (define-extern *map-texture-string* object) +;; (define-extern *icon-texture-string* object) +;; (define-extern *player-1-name* object) +;; (define-extern *player-2-name* object) +;; (define-extern *player-3-name* object) +;; (define-extern *player-4-name* object) +;; (define-extern *player-5-name* object) +;; (define-extern *player-6-name* object) +;; (define-extern *player-1-extra* object) +;; (define-extern *player-2-extra* object) +;; (define-extern *player-3-extra* object) +;; (define-extern *player-4-extra* object) +;; (define-extern *player-5-extra* object) +;; (define-extern *player-6-extra* object) +;; (define-extern get-extra-player-string function) +;; (define-extern set-index function) +;; (define-extern *selection-cache-array* object) +;; (define-extern *selection-cache-index* object) +;; (define-extern *last-lobby-state* object) +;; (define-extern insert-selection-cache function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; keyboard ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype keyboard-key (structure) + ((data UNKNOWN 4 :offset-assert 0) + (char uint8 :offset-assert 0) + (char2 uint8 :offset-assert 1) + (char3 uint8 :offset-assert 2) + (char4 uint8 :offset-assert 3) + (pos-x int8 :offset-assert 4) + (pos-y int8 :offset-assert 5) + (size int8 :offset-assert 6) + (dummy uint8 :offset-assert 7) + (tid uint32 :offset-assert 8) + (tid2 uint32 :offset-assert 12) + (scale float :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) +|# + +#| +(deftype keyboard-control (process-drawable) + ((selected int32 :offset-assert 248) + (pos-x int32 :offset-assert 252) + (pos-y int32 :offset-assert 256) + (up basic :offset-assert 260) + (down basic :offset-assert 264) + (left basic :offset-assert 268) + (right basic :offset-assert 272) + (up-count int32 :offset-assert 276) + (down-count int32 :offset-assert 280) + (left-count int32 :offset-assert 284) + (right-count int32 :offset-assert 288) + (layout-select int32 :offset-assert 292) + (name basic :offset-assert 4) + (screen-pos-x int32 :offset-assert 300) + (screen-pos-y int32 :offset-assert 304) + (max-chars int32 :offset-assert 308) + (flags uint64 :offset-assert 312) + (alpha float :offset-assert 320) + (j-mod joint-mod-set-world :inline :offset-assert 336) + ) + :method-count-assert 55 + :size-assert #x190 + :flag-assert #x3701000190 + (:methods + (keyboard-control-method-53 () none) ;; 53 + (keyboard-control-method-54 () none) ;; 54 + ) + (:state-methods + done ;; 51 + cancel ;; 52 + idle ;; 50 + ) + ) +|# + +;; (define-extern cpad-or-kbd-pressed-var? function) +;; (define-extern kbd-clear! function) +;; (define-extern cpad-or-kbd-clear-func! function) +;; (define-extern *keyboard-proc* object) +;; (define-extern *keyboard-string-buf* object) +;; (define-extern *keyboard-init-state* object) +;; (define-extern *keyboard-layout-default* array) +;; (define-extern char-allowed function) +;; (define-extern set-keyboard-jmod function) +;; (define-extern render-entered-text function) +;; (define-extern keyboard-control-init-by-other function) +;; (define-extern keyboard-control-spawn function) +;; (define-extern kill-keyboard-control function) +;; (define-extern get-keyboard-control function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-menu-manager-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype lobby-menu-manager (process) + ((game-type uint32 :offset-assert 144) + (menu-handles UNKNOWN 8 :offset-assert 152) + (in-focus-index int8 :offset-assert 216) + (menu-handle-1 uint64 :offset-assert 152) + (menu-handle-2 uint64 :offset-assert 160) + (menu-handle-popup uint64 :offset-assert 168) + (menu-handle-background uint64 :offset-assert 224) + (menu-handle-logo-main uint64 :offset-assert 232) + (menu-handle-logo-subtitle uint64 :offset-assert 240) + (local-players int32 :offset-assert 248) + (refresh-time uint32 :offset-assert 252) + (game-connection-type uint8 :offset-assert 256) + (vehicle-handle uint64 :offset-assert 264) + (vehicle-selected uint8 :offset-assert 272) + (vehicle-flags uint64 :offset-assert 280) + (vehicle-paint-mode uint64 :offset-assert 288) + (tuning-type-selected uint64 :offset-assert 296) + (all-ready? basic :offset-assert 304) + (map-proc uint64 :offset-assert 312) + (venue-map uint64 :offset-assert 320) + (current-local-player int8 :offset-assert 328) + (spawn-another? basic :offset-assert 332) + (state-time uint64 :offset-assert 336) + (has-driver? UNKNOWN 2 :offset-assert 344) + (car-part-type-selected uint8 :offset-assert 352) + (cam-string basic :offset-assert 356) + (driver-was-taken? basic :offset-assert 360) + (interpolate-camera? basic :offset-assert 364) + (last-selected-human-count int8 :offset-assert 368) + (last-selected-cpu-count int8 :offset-assert 369) + (game-visible? basic :offset-assert 372) + (psp-mode-run? basic :offset-assert 376) + (garage-lights float :offset-assert 380) + (garage-lights-target float :offset-assert 384) + (memcard-status uint32 :offset-assert 388) + (time-limit? basic :offset-assert 392) + (profile-save-mode basic :offset-assert 396) + (machine-id-to-kick int8 :offset-assert 400) + (cookie-id-to-kick int8 :offset-assert 401) + (override-fov basic :offset-assert 404) + (profile-new-save basic :offset-assert 408) + (voice-id uint32 :offset-assert 412) + (split-selection-prev-state basic :offset-assert 416) + (vehicle-part-fade uint8 :offset-assert 420) + (vehicle-loaded-time uint64 :offset-assert 424) + ) + :method-count-assert 196 + :size-assert #x1b0 + :flag-assert #xc4012001b0 + (:methods + (lobby-menu-manager-method-9 () none) ;; 9 + (lobby-menu-manager-method-10 () none) ;; 10 + (lobby-menu-manager-method-11 () none) ;; 11 + (lobby-menu-manager-method-12 () none) ;; 12 + (lobby-menu-manager-method-13 () none) ;; 13 + (lobby-menu-manager-method-14 () none) ;; 14 + (lobby-menu-manager-method-15 () none) ;; 15 + (lobby-menu-manager-method-16 () none) ;; 16 + (lobby-menu-manager-method-17 () none) ;; 17 + (lobby-menu-manager-method-18 () none) ;; 18 + (lobby-menu-manager-method-19 () none) ;; 19 + (lobby-menu-manager-method-20 () none) ;; 20 + (lobby-menu-manager-method-21 () none) ;; 21 + (lobby-menu-manager-method-22 () none) ;; 22 + (lobby-menu-manager-method-23 () none) ;; 23 + (lobby-menu-manager-method-24 () none) ;; 24 + (lobby-menu-manager-method-25 () none) ;; 25 + (lobby-menu-manager-method-26 () none) ;; 26 + (lobby-menu-manager-method-27 () none) ;; 27 + (lobby-menu-manager-method-28 () none) ;; 28 + (lobby-menu-manager-method-29 () none) ;; 29 + (lobby-menu-manager-method-30 () none) ;; 30 + (lobby-menu-manager-method-31 () none) ;; 31 + (lobby-menu-manager-method-32 () none) ;; 32 + (lobby-menu-manager-method-33 () none) ;; 33 + (lobby-menu-manager-method-34 () none) ;; 34 + (lobby-menu-manager-method-35 () none) ;; 35 + (lobby-menu-manager-method-36 () none) ;; 36 + (lobby-menu-manager-method-37 () none) ;; 37 + (lobby-menu-manager-method-38 () none) ;; 38 + (lobby-menu-manager-method-39 () none) ;; 39 + (lobby-menu-manager-method-40 () none) ;; 40 + (lobby-menu-manager-method-41 () none) ;; 41 + (lobby-menu-manager-method-42 () none) ;; 42 + (lobby-menu-manager-method-43 () none) ;; 43 + (lobby-menu-manager-method-44 () none) ;; 44 + (lobby-menu-manager-method-45 () none) ;; 45 + (lobby-menu-manager-method-46 () none) ;; 46 + (lobby-menu-manager-method-47 () none) ;; 47 + (lobby-menu-manager-method-48 () none) ;; 48 + (lobby-menu-manager-method-49 () none) ;; 49 + (lobby-menu-manager-method-50 () none) ;; 50 + (lobby-menu-manager-method-51 () none) ;; 51 + (lobby-menu-manager-method-52 () none) ;; 52 + (lobby-menu-manager-method-53 () none) ;; 53 + (lobby-menu-manager-method-54 () none) ;; 54 + (lobby-menu-manager-method-55 () none) ;; 55 + (lobby-menu-manager-method-56 () none) ;; 56 + (lobby-menu-manager-method-57 () none) ;; 57 + (lobby-menu-manager-method-58 () none) ;; 58 + (lobby-menu-manager-method-59 () none) ;; 59 + (lobby-menu-manager-method-60 () none) ;; 60 + (lobby-menu-manager-method-61 () none) ;; 61 + (lobby-menu-manager-method-62 () none) ;; 62 + (lobby-menu-manager-method-63 () none) ;; 63 + (lobby-menu-manager-method-64 () none) ;; 64 + (lobby-menu-manager-method-65 () none) ;; 65 + (lobby-menu-manager-method-66 () none) ;; 66 + (lobby-menu-manager-method-67 () none) ;; 67 + (lobby-menu-manager-method-68 () none) ;; 68 + (lobby-menu-manager-method-69 () none) ;; 69 + (lobby-menu-manager-method-70 () none) ;; 70 + (lobby-menu-manager-method-71 () none) ;; 71 + (lobby-menu-manager-method-72 () none) ;; 72 + (lobby-menu-manager-method-73 () none) ;; 73 + (lobby-menu-manager-method-74 () none) ;; 74 + (lobby-menu-manager-method-75 () none) ;; 75 + (lobby-menu-manager-method-76 () none) ;; 76 + (lobby-menu-manager-method-77 () none) ;; 77 + (lobby-menu-manager-method-78 () none) ;; 78 + (lobby-menu-manager-method-79 () none) ;; 79 + (lobby-menu-manager-method-80 () none) ;; 80 + (lobby-menu-manager-method-81 () none) ;; 81 + (lobby-menu-manager-method-82 () none) ;; 82 + (lobby-menu-manager-method-83 () none) ;; 83 + (lobby-menu-manager-method-84 () none) ;; 84 + (lobby-menu-manager-method-85 () none) ;; 85 + (lobby-menu-manager-method-86 () none) ;; 86 + (lobby-menu-manager-method-87 () none) ;; 87 + (lobby-menu-manager-method-88 () none) ;; 88 + (lobby-menu-manager-method-89 () none) ;; 89 + (lobby-menu-manager-method-90 () none) ;; 90 + (lobby-menu-manager-method-91 () none) ;; 91 + (lobby-menu-manager-method-92 () none) ;; 92 + (lobby-menu-manager-method-93 () none) ;; 93 + (lobby-menu-manager-method-94 () none) ;; 94 + (lobby-menu-manager-method-95 () none) ;; 95 + (lobby-menu-manager-method-96 () none) ;; 96 + (lobby-menu-manager-method-97 () none) ;; 97 + (lobby-menu-manager-method-98 () none) ;; 98 + (lobby-menu-manager-method-99 () none) ;; 99 + (lobby-menu-manager-method-100 () none) ;; 100 + (lobby-menu-manager-method-101 () none) ;; 101 + (lobby-menu-manager-method-102 () none) ;; 102 + (lobby-menu-manager-method-103 () none) ;; 103 + (lobby-menu-manager-method-104 () none) ;; 104 + (lobby-menu-manager-method-105 () none) ;; 105 + (lobby-menu-manager-method-106 () none) ;; 106 + (lobby-menu-manager-method-107 () none) ;; 107 + (lobby-menu-manager-method-108 () none) ;; 108 + (lobby-menu-manager-method-109 () none) ;; 109 + (lobby-menu-manager-method-110 () none) ;; 110 + (lobby-menu-manager-method-111 () none) ;; 111 + (lobby-menu-manager-method-112 () none) ;; 112 + (lobby-menu-manager-method-113 () none) ;; 113 + (lobby-menu-manager-method-114 () none) ;; 114 + (lobby-menu-manager-method-115 () none) ;; 115 + (lobby-menu-manager-method-116 () none) ;; 116 + (lobby-menu-manager-method-117 () none) ;; 117 + (lobby-menu-manager-method-118 () none) ;; 118 + (lobby-menu-manager-method-119 () none) ;; 119 + (lobby-menu-manager-method-120 () none) ;; 120 + (lobby-menu-manager-method-121 () none) ;; 121 + (lobby-menu-manager-method-122 () none) ;; 122 + (lobby-menu-manager-method-123 () none) ;; 123 + (lobby-menu-manager-method-124 () none) ;; 124 + (lobby-menu-manager-method-125 () none) ;; 125 + (lobby-menu-manager-method-126 () none) ;; 126 + (lobby-menu-manager-method-127 () none) ;; 127 + (lobby-menu-manager-method-128 () none) ;; 128 + (lobby-menu-manager-method-129 () none) ;; 129 + (lobby-menu-manager-method-130 () none) ;; 130 + (lobby-menu-manager-method-131 () none) ;; 131 + (lobby-menu-manager-method-132 () none) ;; 132 + (lobby-menu-manager-method-133 () none) ;; 133 + (lobby-menu-manager-method-134 () none) ;; 134 + (lobby-menu-manager-method-135 () none) ;; 135 + (lobby-menu-manager-method-136 () none) ;; 136 + (lobby-menu-manager-method-137 () none) ;; 137 + (lobby-menu-manager-method-138 () none) ;; 138 + (lobby-menu-manager-method-139 () none) ;; 139 + (lobby-menu-manager-method-140 () none) ;; 140 + (lobby-menu-manager-method-141 () none) ;; 141 + (lobby-menu-manager-method-142 () none) ;; 142 + (lobby-menu-manager-method-143 () none) ;; 143 + (lobby-menu-manager-method-144 () none) ;; 144 + (lobby-menu-manager-method-145 () none) ;; 145 + (lobby-menu-manager-method-146 () none) ;; 146 + (lobby-menu-manager-method-147 () none) ;; 147 + (lobby-menu-manager-method-148 () none) ;; 148 + (lobby-menu-manager-method-149 () none) ;; 149 + (lobby-menu-manager-method-150 () none) ;; 150 + (lobby-menu-manager-method-151 () none) ;; 151 + (lobby-menu-manager-method-152 () none) ;; 152 + (lobby-menu-manager-method-153 () none) ;; 153 + (lobby-menu-manager-method-154 () none) ;; 154 + (lobby-menu-manager-method-155 () none) ;; 155 + (lobby-menu-manager-method-156 () none) ;; 156 + (lobby-menu-manager-method-157 () none) ;; 157 + (lobby-menu-manager-method-158 () none) ;; 158 + (lobby-menu-manager-method-159 () none) ;; 159 + (lobby-menu-manager-method-160 () none) ;; 160 + (lobby-menu-manager-method-161 () none) ;; 161 + (lobby-menu-manager-method-162 () none) ;; 162 + (lobby-menu-manager-method-163 () none) ;; 163 + (lobby-menu-manager-method-164 () none) ;; 164 + (lobby-menu-manager-method-165 () none) ;; 165 + (lobby-menu-manager-method-166 () none) ;; 166 + (lobby-menu-manager-method-167 () none) ;; 167 + (lobby-menu-manager-method-168 () none) ;; 168 + (lobby-menu-manager-method-169 () none) ;; 169 + (lobby-menu-manager-method-170 () none) ;; 170 + (lobby-menu-manager-method-171 () none) ;; 171 + (lobby-menu-manager-method-172 () none) ;; 172 + (lobby-menu-manager-method-173 () none) ;; 173 + (lobby-menu-manager-method-174 () none) ;; 174 + (lobby-menu-manager-method-175 () none) ;; 175 + (lobby-menu-manager-method-176 () none) ;; 176 + (lobby-menu-manager-method-177 () none) ;; 177 + (lobby-menu-manager-method-178 () none) ;; 178 + (lobby-menu-manager-method-179 () none) ;; 179 + (lobby-menu-manager-method-180 () none) ;; 180 + (lobby-menu-manager-method-181 () none) ;; 181 + (lobby-menu-manager-method-182 () none) ;; 182 + (lobby-menu-manager-method-183 () none) ;; 183 + (lobby-menu-manager-method-184 () none) ;; 184 + (lobby-menu-manager-method-185 () none) ;; 185 + (lobby-menu-manager-method-186 () none) ;; 186 + (lobby-menu-manager-method-187 () none) ;; 187 + (lobby-menu-manager-method-188 () none) ;; 188 + (lobby-menu-manager-method-189 () none) ;; 189 + (lobby-menu-manager-method-190 () none) ;; 190 + (lobby-menu-manager-method-191 () none) ;; 191 + (lobby-menu-manager-method-192 () none) ;; 192 + (lobby-menu-manager-method-193 () none) ;; 193 + (lobby-menu-manager-method-194 () none) ;; 194 + (lobby-menu-manager-method-195 () none) ;; 195 + ) + ) +|# + +;; (define-extern lobby-vehicle-flag->string function) +;; (define-extern *lobby-reset-mode* object) +;; (define-extern *net-mgr-finish-mode* object) +;; (define-extern *lobby-menu-manager* object) +;; (define-extern get-selected-local-player-count function) +;; (define-extern kiosk-code? function) +;; (define-extern min-max-wrap-around function) ;; (function int int int int) +;; (define-extern *lobby-last-selected-task-index* object) +;; (define-extern *last-selected-human-ct* object) +;; (define-extern *last-selected-ai-ct* object) +;; (define-extern *last-selected-buddy-ct* object) +;; (define-extern *last-selected-clan-ct* object) +;; (define-extern *lobby-menu-manager-game-connection-type* object) +;; (define-extern *lobby-handling-db-error* object) +;; (define-extern *no-net-hw-warning-shown* object) +;; (define-extern *ready-room-human-ct* object) +;; (define-extern *ready-room-ai-ct* object) +;; (define-extern *game-launched-from-room* object) +;; (define-extern camera-seek-time object) +;; (define-extern real-camera-seek-time object) +;; (define-extern set-lobby-camera-seek-time! function) +;; (define-extern *class-mode* object) +;; (define-extern restore-selection-index function) +;; (define-extern *lobby-timetrial-lock-mode* object) +;; (define-extern *vehicle-class-data* array) +;; (define-extern *vehicle-class* object) +;; (define-extern *time-of-day-data* array) +;; (define-extern *time-of-day-array* object) +;; (define-extern *ready-room-host-id* object) +;; (define-extern *keyboard-buf* object) +;; (define-extern kbd-auto-activate function) +;; (define-extern *return-to-secrets* object) +;; (define-extern *this-create-menu-state-name* object) +;; (define-extern *prev-create-menu-state-name* object) +;; (define-extern *lobby-fast-connect* object) +;; (define-extern *lobby-body-parts-return-state-name* object) +;; (define-extern *eligible-for-body-part-award* object) +;; (define-extern *pending-op* object) +;; (define-extern *pending-op-serial* object) +;; (define-extern *pending-op-arg-ct* object) +;; (define-extern *pending-op-args* object) +;; (define-extern teams-valid-to-start-game? function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; hostnames ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype ip-to-name-map (structure) + ((ip uint32 :offset-assert 0) + (mac uint64 :offset-assert 8) + (name basic :offset-assert 16) + (has-16x9 basic :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) +|# + +;; (define-extern *ip-to-name-map* array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-mgr-async ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype medius-simple-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (status-code int32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype mgcl-simple-response (structure) + ((message-id UNKNOWN 21 :offset-assert 0) + (confirmation int8 :offset-assert 21) + ) + :method-count-assert 9 + :size-assert #x16 + :flag-assert #x900000016 + ) +|# + +;; (define-extern *medius-last-response* object) +;; (define-extern *mgcl-last-response* object) +;; (define-extern *async-request-ct* object) +;; (define-extern *medius-session-key-valid* object) +;; (define-extern *medius-session-key* object) +;; (define-extern *mgcl-session-key-valid* object) +;; (define-extern *mgcl-session-key* object) +;; (define-extern *mgcl-confirmation-offset* object) +;; (define-extern do-net-update function) +;; (define-extern medius-simple-request-callback function) +;; (define-extern trivial-callback function) +;; (define-extern mgcl-simple-request-callback function) +;; (define-extern *net-error-icon* object) +;; (define-extern display-net-problem-icon function) +;; (define-extern lobby-fatal-error function) +;; (define-extern timeout-lobby-fatal-error function) +;; (define-extern net-async-wait function) +;; (define-extern dme-disconnect function) +;; (define-extern mgcl-disconnect function) +;; (define-extern medius-disconnect function) +;; (define-extern do-disconnect function) +;; (define-extern *net-mgr-pending-behavior-result* object) +;; (define-extern *net-mgr-pending-behavior-result-extra* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-mgr-chat ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype received-chat-msg (structure) + ((text UNKNOWN 600 :offset-assert 0) + (disp-time int32 :offset-assert 600) + (id int32 :offset-assert 604) + (resp-type basic :offset-assert 608) + ) + :method-count-assert 9 + :size-assert #x264 + :flag-assert #x900000264 + ) +|# + +#| +(deftype lobby-chat-string (structure) + ((text UNKNOWN 100 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x64 + :flag-assert #x900000064 + ) +|# + +#| +(deftype lobby-chat-window (structure) + ((strings UNKNOWN 16 :offset-assert 0) + (x int32 :offset-assert 1792) + (y int32 :offset-assert 1796) + (sx int32 :offset-assert 1800) + (sy int32 :offset-assert 1804) + ) + :method-count-assert 13 + :size-assert #x710 + :flag-assert #xd00000710 + (:methods + (lobby-chat-window-method-9 () none) ;; 9 + (lobby-chat-window-method-10 () none) ;; 10 + (lobby-chat-window-method-11 () none) ;; 11 + (lobby-chat-window-method-12 () none) ;; 12 + ) + ) +|# + +#| +(deftype magic-chat (structure) + ((prefix basic :offset-assert 0) + (popup-text-id uint32 :offset-assert 4) + (send-lobby-event basic :offset-assert 8) + (has-player-name basic :offset-assert 12) + (add-clan-id basic :offset-assert 16) + (buddies-only basic :offset-assert 20) + (resp-type basic :offset-assert 24) + (stale-player basic :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +;; (define-extern *chat-msg-buffer* object) +;; (define-extern *chat-msg-string-ct* object) +;; (define-extern *chat-msg-strings* array) +;; (define-extern is-whitespace function) +;; (define-extern split-chat-msg function) +;; (define-extern do-split-chat-msg function) +;; (define-extern *received-chat-msg-ct* object) +;; (define-extern *received-chat-msgs* object) +;; (define-extern *chat-msg-string* object) +;; (define-extern *chat-msg-string2* object) +;; (define-extern *chat-msg-player* object) +;; (define-extern *lobby-chat-window* object) +;; (define-extern purge-top-chat-msg function) +;; (define-extern purge-all-chat-msgs function) +;; (define-extern get-top-chat-msg function) +;; (define-extern add-raw-popup-msg function) +;; (define-extern *magic-chat* array) +;; (define-extern handle-chat-msg function) +;; (define-extern fake-chat-msg function) +;; (define-extern send-chat-with-clan-id function) +;; (define-extern send-chat-with-game-id function) +;; (define-extern *chat-msg-box* object) +;; (define-extern *chat-popup-sx* object) +;; (define-extern *r2-press-time* object) +;; (define-extern temp-render-chat-messages function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-mgr-sysmsg ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *sys-msg-cheat* object) +;; (define-extern handle-sys-msg function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-mgr ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *net-keypair-valid* object) +;; (define-extern *net-local-rsa-keypair* object) +;; (define-extern *net-app-rsa-keypair* object) +;; (define-extern *net-app-msg-id* object) +;; (define-extern *aux-voice-msg-id* object) +;; (define-extern *net-log-write* object) +;; (define-extern *net-memory-callbacks* object) +;; (define-extern *net-mgr-notify-engine* object) +;; (define-extern net-mgr-init-by-other function) +;; (define-extern net-mgr-start function) +;; (define-extern net-mgr-stop function) +;; (define-extern net-mgr-default-handler function) +;; (define-extern *pause-time* object) +;; (define-extern *prev-total-pause-time* object) +;; (define-extern *last-pause-state* object) +;; (define-extern handle-pause function) +;; (define-extern handle-unpause function) +;; (define-extern pause-check function) +;; (define-extern handle-pause-request function) +;; (define-extern *tmp-mac* object) +;; (define-extern find-ip-map function) +;; (define-extern *tmpstring* string) +;; (define-extern *already-formatted-prefix* object) +;; (define-extern get-player-name function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-mgr-dme ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype fake-msg (structure) + ((data UNKNOWN 512 :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x200 + :flag-assert #x900000200 + ) +|# + +;; (define-extern *dme-init-in* object) +;; (define-extern *dme-init-out* object) +;; (define-extern *dme-connect-in* object) +;; (define-extern *dme-connect-out* object) +;; (define-extern *dme-host-in* object) +;; (define-extern *dme-host-out* object) +;; (define-extern *dme-join-in* object) +;; (define-extern *dme-join-out* object) +;; (define-extern *dme-disconnect* object) +;; (define-extern *net-lan-find-in-params* object) +;; (define-extern *net-local-ip* object) +;; (define-extern *net-external-ip* object) +;; (define-extern *medius-joined-game-info* object) +;; (define-extern *net-app-name* string) +;; (define-extern *net-last-packet-recv-times* object) +;; (define-extern net-packet-recv-time-reset-client function) +;; (define-extern net-packet-recv-time-reset-all function) +;; (define-extern net-packet-recv-time-trouble function) +;; (define-extern *fake-msg-count* object) +;; (define-extern *fake-msg-read* object) +;; (define-extern *fake-msgs* object) +;; (define-extern *in-msg-callback* object) +;; (define-extern *cb-buf* object) +;; (define-extern do-net-app-msg-callback function) +;; (define-extern net-app-msg-callback function) +;; (define-extern lan-game-find-callback function) +;; (define-extern net-sys-msg-callback function) +;; (define-extern kick-machines function) +;; (define-extern write-init-complete-msg function) +;; (define-extern handle-machine-connect function) +;; (define-extern handle-machine-disconnect function) +;; (define-extern remote-client-connect-callback function) +;; (define-extern remote-client-disconnect-callback function) +;; (define-extern remote-client-event-callback function) +;; (define-extern init-complete-msg-handler function) +;; (define-extern chat-msg-handler function) +;; (define-extern session-master-change-callback function) +;; (define-extern dme-token-callback function) +;; (define-extern *last-ping-latency* object) +;; (define-extern *last-ping-time* object) +;; (define-extern *avg-ping* object) +;; (define-extern ping-report-msg-handler function) +;; (define-extern cb-server-ping function) +;; (define-extern consider-server-ping function) +;; (define-extern dummy-callback function) +;; (define-extern *lanfind-scratch* object) +;; (define-extern *lanfind-scratch-buf* object) +;; (define-extern net-lanfind-exchange-callback function) +;; (define-extern kick-msg-handler function) +;; (define-extern *rsa-key-dont-use-this-for-release* object) +;; (define-extern *headset-buffers-received* object) +;; (define-extern *headset-buffers-played* object) +;; (define-extern *headset-buffers-decoded* object) +;; (define-extern *iop-mem-stats* object) +;; (define-extern *real-sm* object) +;; (define-extern bw-metrics object) +;; (define-extern *tmp-addr* object) +;; (define-extern *tmp-game* object) +;; (define-extern *lan-game-verified* object) +;; (define-extern memeq function) +;; (define-extern lan-game-verify-callback function) +;; (define-extern *net-msg-pending* object) +;; (define-extern send-fake-msg function) +;; (define-extern verify-msg function) +;; (define-extern net-send-msg function) +;; (define-extern parse-ip function) +;; (define-extern *tmp-hostname* string) +;; (define-extern format-ip function) +;; (define-extern format-ip-raw function) +;; (define-extern net-get-local-ip function) +;; (define-extern *ip-lookup* object) +;; (define-extern get-host-by-name-callback function) +;; (define-extern *dns-string* object) +;; (define-extern *dns-string2* object) +;; (define-extern get-host-by-name function) +;; (define-extern net-get-client-ip function) +;; (define-extern per-process-hook function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-aux-voice ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype aux-voice-mgr (process) + ((game-id int32 :offset-assert 144) + (my-id int32 :offset-assert 148) + (bitfield int32 :offset-assert 152) + (connect-handle basic :offset-assert 156) + ) + :method-count-assert 22 + :size-assert #xa0 + :flag-assert #x16001000a0 + ;; field connect-handle uses ~A with a signed load. + (:methods + (aux-voice-mgr-method-9 () none) ;; 9 + (aux-voice-mgr-method-10 () none) ;; 10 + (aux-voice-mgr-method-11 () none) ;; 11 + (aux-voice-mgr-method-12 () none) ;; 12 + (aux-voice-mgr-method-13 () none) ;; 13 + (aux-voice-mgr-method-14 () none) ;; 14 + (aux-voice-mgr-method-20 () none) ;; 20 + (aux-voice-mgr-method-21 () none) ;; 21 + ) + (:state-methods + die ;; 19 + startup ;; 15 + creating ;; 16 + joining ;; 17 + active ;; 18 + ) + ) +|# + +;; (define-extern *aux-voice-mgr* object) +;; (define-extern *aux-voice-resp* object) +;; (define-extern *aux-game-name* object) +;; (define-extern *aux-voice-game-info* object) +;; (define-extern *aux-voice-connect-info* object) +;; (define-extern *aux-voice-got-callback* object) +;; (define-extern *aux-voice-world-report* object) +;; (define-extern *aux-voice-enabled* object) +;; (define-extern *aux-voice-last-startup* object) +;; (define-extern *aux-voice-acct-ids* object) +;; (define-extern aux-voice-mgr-init-by-other function) +;; (define-extern aux-voice-mgr-activate function) +;; (define-extern aux-voice-mgr-deactivate function) +;; (define-extern aux-voice-mgr-failed function) +;; (define-extern do-aux-voice-msg-callback function) +;; (define-extern aux-voice-msg-callback function) +;; (define-extern aux-voice-acct-id-callback function) +;; (define-extern aux-voice-mgr-default-handler function) +;; (define-extern aux-voice-local-disconnect-callback function) +;; (define-extern aux-voice-client-connect-callback function) +;; (define-extern aux-voice-client-disconnect-callback function) +;; (define-extern aux-voice-local-connect-callback function) +;; (define-extern *aux-voice-last-update* object) +;; (define-extern aux-voice-running function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-mgr-medius ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *medius-mas-default-hostname* string) +;; (define-extern *medius-mas-hostname* string) +;; (define-extern *medius-mas-port* object) +;; (define-extern *medius-init-in-params* object) +;; (define-extern *medius-init-out-params* object) +;; (define-extern *medius-connect-in-params* object) +;; (define-extern *medius-connect-out-params* object) +;; (define-extern *medius-public-key* object) +;; (define-extern *medius-connect-info* object) +;; (define-extern *medius-world-report* object) +;; (define-extern *medius-player-report* object) +;; (define-extern *medius-chat-message* object) +;; (define-extern *medius-auth-request* object) +;; (define-extern *medius-player-ladder-stats* object) +;; (define-extern *medius-account-name* object) +;; (define-extern *medius-account-password* object) +;; (define-extern *medius-register-if-not-exist* object) +;; (define-extern *medius-channel-ct* object) +;; (define-extern *medius-user-ct* object) +;; (define-extern *medius-total-game-ct* object) +;; (define-extern *net-mgr-pending-behavior* object) +;; (define-extern *net-mgr-pending-behavior-valid* object) +;; (define-extern medius-error-msg-callback function) +;; (define-extern *chat-tmp-string* object) +;; (define-extern medius-chat-callback function) +;; (define-extern medius-reassign-world-id-callback function) +;; (define-extern lobby-non-fatal-error function) +;; (define-extern mas-connect-callback function) +;; (define-extern medius-text-filter-request-callback function) +;; (define-extern net-filter-text function) +;; (define-extern net-mgr-process-pending-behavior function) +;; (define-extern refreshing-games-callback function) +;; (define-extern total-games-callback function) +;; (define-extern *tmp-game-name* object) +;; (define-extern *medius-join-game-response* object) +;; (define-extern *medius-policy* object) +;; (define-extern *medius-policy-length* object) +;; (define-extern *medius-language* object) +;; (define-extern cb-get-policy function) +;; (define-extern get-medius-language function) +;; (define-extern *medius-announcement-ids* object) +;; (define-extern cb-get-announcements function) +;; (define-extern get-announcements function) +;; (define-extern mark-announcement-as-read function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-mgr-muis ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype universe-choice (structure) + ((id int32 :offset-assert 0) + (name UNKNOWN 64 :offset-assert 4) + (desc UNKNOWN 128 :offset-assert 68) + ) + :method-count-assert 9 + :size-assert #xc4 + :flag-assert #x9000000c4 + ) +|# + +;; (define-extern *net-universe-is-ngs* object) +;; (define-extern *jakx-patch-file* string) +;; (define-extern *jakx-patch-tmp* object) +;; (define-extern *net-patch-url* object) +;; (define-extern *net-patch-version* object) +;; (define-extern *universe-choice-ct* object) +;; (define-extern *universe-choices* object) +;; (define-extern *medius-muis-hostname* object) +;; (define-extern *medius-muis-port* object) +;; (define-extern *medius-muis-id* object) +;; (define-extern *found-id* object) +;; (define-extern set-muis-hostname function) +;; (define-extern construct-patch-file-name function) +;; (define-extern muis-connect-callback function) +;; (define-extern muis-news-callback function) +;; (define-extern muis-info-callback function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-mgr-medius-cache ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern medius-cache-tick function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-mgr-medius-players ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern add-recent-opponent function) +;; (define-extern get-recent-players function) +;; (define-extern *tmp-player* medius-cached-info-player) +;; (define-extern medius-player-info-retrieve-behavior function) +;; (define-extern update-client-state function) +;; (define-extern init-player-lists function) +;; (define-extern *tmp-player-name* object) +;; (define-extern get-player-amplitude function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-mgr-medius-buddies ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *medius-player-account-id* object) +;; (define-extern buddies-refreshing-callback function) +;; (define-extern buddies-refreshing function) +;; (define-extern buddies-adding-player function) +;; (define-extern buddies-removing-player function) +;; (define-extern ignore-refreshing-callback function) +;; (define-extern ignore-refreshing function) +;; (define-extern ignore-adding-player function) +;; (define-extern ignore-removing-player function) +;; (define-extern finding-player-callback function) +;; (define-extern finding-player function) +;; (define-extern retrieve-player-lists function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-mgr-medius-clans ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *last-medius-clan* object) +;; (define-extern clan-msg-callback-my function) +;; (define-extern clan-msg-callback-all function) +;; (define-extern get-clan-msg function) +;; (define-extern *clan-is-my-clan* object) +;; (define-extern clan-member-list-callback function) +;; (define-extern *tmp-clan* medius-cached-info-clan) +;; (define-extern *tmp-clan-members* object) +;; (define-extern medius-clan-info-retrieve-behavior function) +;; (define-extern clan-create function) +;; (define-extern clan-disband function) +;; (define-extern clan-leave function) +;; (define-extern clan-remove-player function) +;; (define-extern respond-to-clan-invite function) +;; (define-extern *in-clan* object) +;; (define-extern get-my-clans-callback function) +;; (define-extern clan-invitations-sent-callback function) +;; (define-extern check-my-clan-invitations-callback function) +;; (define-extern check-my-clan-invitations function) +;; (define-extern get-clan-member-list function) +;; (define-extern get-my-clans function) +;; (define-extern *cur-challenge-type* object) +;; (define-extern get-clan-challenges function) +;; (define-extern challenge-clan function) +;; (define-extern respond-to-challenge function) +;; (define-extern tidy-clan-challenges function) +;; (define-extern retrieve-my-clan-data function) +;; (define-extern invite-player-to-clan function) +;; (define-extern revoke-clan-invite function) +;; (define-extern retrieve-outstanding-invites function) +;; (define-extern net-test-shit function) +;; (define-extern clan-allowed-to-join-game function) +;; (define-extern lookup-clan-challenge function) +;; (define-extern get-clan-challenge-pair-status function) +;; (define-extern transfer-clan-leadership function) +;; (define-extern set-clan-msg function) +;; (define-extern is-clan-challenge function) +;; (define-extern can-start-clan-challenge function) +;; (define-extern *clan-update-stats-request* object) +;; (define-extern *clan-get-stats-request* object) +;; (define-extern *clan-current-stats* object) +;; (define-extern *enemy-clan-current-stats* object) +;; (define-extern *clan-update-busy* object) +;; (define-extern *this-game-penalty* object) +;; (define-extern should-i-update-clan-stats function) +;; (define-extern get-all-clan-stats function) +;; (define-extern make-new-score function) +;; (define-extern post-game-clan-stats-adjust function) +;; (define-extern apply-clan-deltas function) +;; (define-extern pre-game-clan-stats-adjust function) +;; (define-extern get-clans-in-challenge-info function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-mgr-medius-ladders ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-mgr-medius-rooms ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype medius-room (structure) + ((id int32 :offset-assert 0) + (name UNKNOWN 32 :offset-assert 4) + (player-ct int32 :offset-assert 36) + (max-players int32 :offset-assert 40) + (game-world-ct int32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype medius-room-array (structure) + ((total-ct int32 :offset-assert 0) + (base-page int32 :offset-assert 4) + (total-pages int32 :offset-assert 8) + (ct int32 :offset-assert 12) + (data UNKNOWN 5 :offset-assert 16) + ) + :method-count-assert 11 + :size-assert #x100 + :flag-assert #xb00000100 + (:methods + (medius-room-array-method-9 () none) ;; 9 + (medius-room-array-method-10 () none) ;; 10 + ) + ) +|# + +;; (define-extern *current-room-name* object) +;; (define-extern *room-clan-id* object) +;; (define-extern *room-clan-id-2* object) +;; (define-extern *medius-rooms* object) +;; (define-extern *last-normal-room* object) +;; (define-extern refresh-rooms-callback function) +;; (define-extern refresh-rooms function) +;; (define-extern *tmp-clan-string* object) +;; (define-extern join-room function) +;; (define-extern room-players-refreshing-callback function) +;; (define-extern get-players-in-room function) +;; (define-extern get-room-name function) +;; (define-extern get-current-room-name-and-info function) +;; (define-extern create-room function) +;; (define-extern find-room-by-name function) +;; (define-extern ensure-room-is-good function) +;; (define-extern test-rooms function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-mgr-medius-games ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype medius-filter (structure) + ((field int32 :offset-assert 0) + (comp-op int32 :offset-assert 4) + (base-val int32 :offset-assert 8) + ) + :method-count-assert 10 + :size-assert #xc + :flag-assert #xa0000000c + (:methods + (medius-filter-method-9 () none) ;; 9 + ) + ) +|# + +;; (define-extern *medius-filters* object) +;; (define-extern *medius-server-filters* object) +;; (define-extern *medius-desired-server-filters* object) +;; (define-extern medius-game-status-info-retrieve-behavior function) +;; (define-extern get-game-status-cached function) +;; (define-extern in-game-players-refreshing-callback function) +;; (define-extern refresh-game-info function) +;; (define-extern filter-game function) +;; (define-extern *unfiltered-game-ct* object) +;; (define-extern *game-end-idx* object) +;; (define-extern get-game-list-callback function) +;; (define-extern get-game-list function) +;; (define-extern clear-game-list-filters function) +;; (define-extern set-filter-state function) +;; (define-extern refresh-lan-games function) +;; (define-extern filter-test function) +;; (define-extern get-all-games function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-ghost ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype ghost-file (structure) + ((name UNKNOWN 128 :offset-assert 0) + (time int32 :offset-assert 128) + (len int32 :offset-assert 132) + (acct-id int32 :offset-assert 136) + (vehicle-selection int32 :offset-assert 140) + (driver-selection int32 :offset-assert 144) + (load-parts uint64 :offset-assert 152) + ) + :method-count-assert 10 + :size-assert #xa0 + :flag-assert #xa000000a0 + (:methods + (ghost-file-method-9 () none) ;; 9 + ) + ) +|# + +#| +(deftype ghost-info (structure) + ((lev uint8 :offset-assert 0) + (acct-id int32 :offset-assert 4) + (acct-name UNKNOWN 64 :offset-assert 8) + (vehicle-selection int8 :offset-assert 72) + (driver-selection int8 :offset-assert 73) + (load-parts uint64 :offset-assert 80) + (time int32 :offset-assert 88) + (last-update-time int32 :offset-assert 92) + ) + :method-count-assert 9 + :size-assert #x60 + :flag-assert #x900000060 + ) +|# + +;; (define-extern task-level-to-idx function) +;; (define-extern ghost-crc-ok function) +;; (define-extern *ghost-tmp-string* string) +;; (define-extern *ghost-file-ct* object) +;; (define-extern *ghost-files* object) +;; (define-extern *ghost-file-info* object) +;; (define-extern *ghost-download-ptr* object) +;; (define-extern *ghost-download-len* object) +;; (define-extern *ghost-tmp-buf* object) +;; (define-extern *ghost-info* object) +;; (define-extern *ghost-async-status* object) +;; (define-extern *ghost-req-id* object) +;; (define-extern send-ghost-file function) +;; (define-extern restore-ghost-from-memcard function) +;; (define-extern do-get-best-ghost function) +;; (define-extern get-best-ghost function) +;; (define-extern nuke-all-ghosts function) +;; (define-extern get-best-ghost-info function) +;; (define-extern *async-ghost-compress-busy* object) +;; (define-extern async-compress-and-upload function) +;; (define-extern is-ghost? function) +;; (define-extern reset-ghost function) +;; (define-extern poop2 function) +;; (define-extern poop3 function) +;; (define-extern poop4 function) +;; (define-extern poop5 function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-mgr-mgcl ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *medius-server-session-begin-request* object) +;; (define-extern *mgcl-init-in-params* object) +;; (define-extern *mgcl-init-out-params* object) +;; (define-extern *mgcl-connect-in-params* object) +;; (define-extern *mgcl-connect-out-params* object) +;; (define-extern *mgcl-connect-info* object) +;; (define-extern *mgcl-server-report* object) +;; (define-extern *mgcl-access-key* object) +;; (define-extern *player-entered-ready-room* object) +;; (define-extern *medius-server-join-game-response* object) +;; (define-extern mgcl-join-game-callback function) +;; (define-extern mgcl-end-game-callback function) +;; (define-extern mgcl-world-status-callback function) +;; (define-extern mgcl-connect-games-callback function) +;; (define-extern send-game-update function) +;; (define-extern connect-callback-mgcl function) +;; (define-extern get-mgcl-connection function) +;; (define-extern end-game-on-me function) +;; (define-extern create-game-on-me function) +;; (define-extern send-end-of-game-report function) +;; (define-extern end-game-on-me-callback function) +;; (define-extern move-game-on-me-callback function) +;; (define-extern check-game-on-me function) +;; (define-extern *medius-account-update-stats-request* object) +;; (define-extern *medius-update-ladder-stats-wide-request* object) +;; (define-extern medius-start-account-stats-update function) +;; (define-extern medius-start-clan-stats-update function) +;; (define-extern host-change-callback function) +;; (define-extern game-connect-failed function) +;; (define-extern wait-connect function) +;; (define-extern dme-connect-callback function) +;; (define-extern dme-join-callback function) +;; (define-extern *sent-end-of-game-report* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-mgr-playback ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *playback-stream* file-stream) +;; (define-extern *playback-name* object) +;; (define-extern *playback-start-time* object) +;; (define-extern *playback-log-start-time* object) +;; (define-extern *playback-buf-mem* object) +;; (define-extern *playback-buf* object) +;; (define-extern *playback-next-event-time* object) +;; (define-extern *playback-time* object) +;; (define-extern *playback-bytes-left* object) +;; (define-extern *playback-machine* object) +;; (define-extern *playback-delay* object) +;; (define-extern *playback-event-header* object) +;; (define-extern read-event-header function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-colarb ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype net-colarb-req (structure) + ((req-by int8 :offset-assert 0) + (req-time int32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +;; (define-extern *net-colarb-last-reqs* object) +;; (define-extern net-colarb-clear function) +;; (define-extern colarb-request-msg-callback function) +;; (define-extern net-colarb-request-id function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-init ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype sce-stat (structure) + ((mode uint32 :offset-assert 0) + (attr int32 :offset-assert 4) + (size int32 :offset-assert 8) + (ctime UNKNOWN 8 :offset-assert 12) + (atime UNKNOWN 8 :offset-assert 20) + (mtime UNKNOWN 8 :offset-assert 28) + (hisize int32 :offset-assert 36) + (private UNKNOWN 6 :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) +|# + +#| +(deftype sce-dirent (structure) + ((stat sce-stat :inline :offset-assert 0) + (name UNKNOWN 256 :offset-assert 64) + (private basic :offset-assert 320) + ) + :method-count-assert 9 + :size-assert #x144 + :flag-assert #x900000144 + ;; field private uses ~A with a signed load. + ) +|# + +#| +(deftype eznet-combination (structure) + ((status int32 :offset-assert 0) + (iftype int32 :offset-assert 4) + (name UNKNOWN 64 :offset-assert 8) + (ifc-name UNKNOWN 64 :offset-assert 72) + (dev-name UNKNOWN 64 :offset-assert 136) + ) + :method-count-assert 9 + :size-assert #xc8 + :flag-assert #x9000000c8 + ) +|# + +#| +(deftype eznet-combination-list (structure) + ((length int32 :offset-assert 0) + (default int32 :offset-assert 4) + (netdb-order UNKNOWN 10 :offset-assert 8) + (list UNKNOWN 10 :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x800 + :flag-assert #x900000800 + ) +|# + +#| +(deftype sce-dnas2-unique-id (structure) + ((category uint32 :offset-assert 0) + (ptr uint32 :offset-assert 4) + (sizep uint32 :offset-assert 8) + (result int32 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype sce-dnas2-status (structure) + ((code int32 :offset-assert 0) + (sub-code int32 :offset-assert 4) + (progress int32 :offset-assert 8) + (optional uint32 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype patch-hdr (structure) + ((magic uint32 :offset-assert 0) + (this-len uint32 :offset-assert 4) + (uncomp-len uint32 :offset-assert 8) + (src-file-len uint32 :offset-assert 12) + (dest-file-len uint32 :offset-assert 16) + (src-hash uint32 :offset-assert 20) + (dest-hash uint32 :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype patch-group-entry (structure) + ((name-hash uint32 :offset-assert 0) + (offset uint32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype patch-group (structure) + ((patch-ct uint32 :offset-assert 0) + (data UNKNOWN :dynamic :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +;; (define-extern simple-dir-test function) +;; (define-extern *scert-extra-params* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-start ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *net-start-view-ct* object) +;; (define-extern *listener-cpt* object) +;; (define-extern *net-hw-initted* object) +;; (define-extern *net-hw-config-id* object) +;; (define-extern *net-hw-last-error* object) +;; (define-extern net-hw-stop function) +;; (define-extern net-hw-start-part1 function) +;; (define-extern net-hw-start-part2 function) +;; (define-extern hack-reset-state function) +;; (define-extern net-mgr-start-hardware-already-done function) +;; (define-extern hack-start-local-game function) +;; (define-extern artist-clean-up-net-mgr function) +;; (define-extern *artist-continue-busy* object) +;; (define-extern artist-continue function) +;; (define-extern listener-continue function) +;; (define-extern listener-task function) +;; (define-extern select-continue-point function) +;; (define-extern set-local-vehicle function) +;; (define-extern qo function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-process-mgr ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (deftype owner-and-flags (int8) +;; () +;; :flag-assert #x900000001 +;; ) + +#| +(deftype nospawn (process) + ((name basic :offset-assert 0) + (mask process-mask :offset-assert 4) + (clock basic :offset-assert 8) + (view basic :offset-assert 12) + (parent uint32 :offset-assert 16) + (brother uint32 :offset-assert 20) + (child uint32 :offset-assert 24) + (ppointer uint32 :offset-assert 28) + (self basic :offset-assert 32) + (profile-ticks uint32 :offset-assert 36) + (pool basic :offset-assert 40) + (status basic :offset-assert 44) + (pid int32 :offset-assert 48) + (main-thread basic :offset-assert 52) + (top-thread basic :offset-assert 56) + (entity basic :offset-assert 60) + (level basic :offset-assert 64) + (state basic :offset-assert 68) + (prev-state basic :offset-assert 72) + (next-state basic :offset-assert 76) + (state-stack basic :offset-assert 80) + (trans-hook basic :offset-assert 84) + (post-hook basic :offset-assert 88) + (event-hook basic :offset-assert 92) + (allocated-length int32 :offset-assert 96) + (heap-base uint32 :offset-assert 108) + (heap-top uint32 :offset-assert 112) + (heap-cur uint32 :offset-assert 116) + (stack-frame-top basic :offset-assert 120) + (heap kheap :inline :offset-assert 108) + (connection-list connectable :inline :offset-assert 124) + (stack UNKNOWN :dynamic :offset-assert 140) + ) + :method-count-assert 15 + :size-assert #x90 + :flag-assert #xf00000090 + (:methods + (nospawn-method-9 () none) ;; 9 + (nospawn-method-10 () none) ;; 10 + (nospawn-method-11 () none) ;; 11 + (nospawn-method-12 () none) ;; 12 + (nospawn-method-13 () none) ;; 13 + (nospawn-method-14 () none) ;; 14 + ) + ) +|# + +;; (define-extern net-process-mgr-init-by-other function) +;; (define-extern spawn-net-entity function) +;; (define-extern *net-process-table* array) +;; (define-extern net-process-mgr-start function) +;; (define-extern net-process-mgr-stop function) +;; (define-extern net-process-mgr-handle-aux-msg-recv-end function) +;; (define-extern net-process-mgr-handle-aux-msg-recv-end-ack function) +;; (define-extern net-process-mgr-handle-aux-msg-spawn-entities function) +;; (define-extern net-process-mgr-default-handler function) +;; (define-extern go-running function) +;; (define-extern *prev-time-of-day-time* object) +;; (define-extern tweak-local-net-entities function) +;; (define-extern update-local-net-entities function) +;; (define-extern net-process-msg-handler function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-http ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype http-downloader (process) + ((socket int32 :offset-assert 144) + (buffer UNKNOWN 1024 :offset-assert 148) + (hostname UNKNOWN 128 :offset-assert 1172) + (url UNKNOWN 128 :offset-assert 1300) + (ip int32 :offset-assert 1428) + (port int32 :offset-assert 1432) + (http-rc int32 :offset-assert 1436) + (content-len int32 :offset-assert 1440) + (quench basic :offset-assert 1444) + ) + :method-count-assert 23 + :size-assert #x5a8 + :flag-assert #x17052005a8 + (:methods + (http-downloader-method-9 () none) ;; 9 + (http-downloader-method-10 () none) ;; 10 + (http-downloader-method-11 () none) ;; 11 + (http-downloader-method-12 () none) ;; 12 + (http-downloader-method-13 () none) ;; 13 + (http-downloader-method-14 () none) ;; 14 + (http-downloader-method-20 () none) ;; 20 + (http-downloader-method-21 () none) ;; 21 + (http-downloader-method-22 () none) ;; 22 + ) + (:state-methods + resolving ;; 15 + connecting ;; 16 + fetching-headers ;; 17 + fetching-data ;; 18 + die ;; 19 + ) + ) +|# + +;; (define-extern *http-downloader* object) +;; (define-extern *http-request-string* object) +;; (define-extern http-downloader-init-by-other function) +;; (define-extern http-start-fetch function) +;; (define-extern http-downloader-default-handler function) +;; (define-extern *socket-blocking* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; capture ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern gs-set-default-store-image function) ;; (function gs-store-image-packet int int gs-psm int int int int int) +;; (define-extern *capture-tga-temp* object) +;; (define-extern store-image function) ;; (function screen-shot-work none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; fmv-player ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype fmv-buffer (structure) + ((buff uint32 :offset-assert 0) + (start int32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype fmv-work (structure) + ((current-buffer uint32 :offset-assert 0) + (buffers UNKNOWN 2 :offset-assert 4) + (buffer-size uint32 :offset-assert 36) + (cursor uint32 :offset-assert 40) + (name basic :offset-assert 44) + (dma-addr uint32 :offset-assert 48) + (data-size uint32 :offset-assert 52) + (num-frames uint32 :offset-assert 56) + (copied-size uint32 :offset-assert 60) + (count-frame uint32 :offset-assert 64) + (own-rpc basic :offset-assert 68) + (len-read int32 :offset-assert 72) + (finished basic :offset-assert 76) + (current-frame int32 :offset-assert 80) + (page basic :offset-assert 84) + (tex basic :offset-assert 88) + (corner UNKNOWN 4 :offset-assert 96) + (pos UNKNOWN 4 :offset-assert 160) + (uv UNKNOWN 4 :offset-assert 224) + (col vector4w :inline :offset-assert 288) + (draw-tmpl dma-gif-packet :inline :offset-assert 304) + ) + :method-count-assert 9 + :size-assert #x150 + :flag-assert #x900000150 + ) +|# + +;; (define-extern *subtitles-text* object) +;; (define-extern *fmv-m2v-name* object) +;; (define-extern *fmv-snd-name* object) +;; (define-extern *fmv-old-hflip* object) +;; (define-extern *fmv-work* object) +;; (define-extern *menu-movie-texture-anim-array* texture-anim-array) +;; (define-extern *movie-texture-anim-array* texture-anim-array) +;; (define-extern movie-texture-anim-init function) +;; (define-extern movie-texture-anim-func function) +;; (define-extern fmv-file-init function) +;; (define-extern fmv-get-time function) +;; (define-extern fmv-memcpy function) +;; (define-extern fmv-file-read function) +;; (define-extern fmv-fade-out function) +;; (define-extern fmv-player-init-by-other function) +;; (define-extern fmv-player-run function) +;; (define-extern fmv-player-run-texture function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; game-save ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; +++game-save:game-save-elt +(defenum game-save-elt + :type uint16 + (name 100) + (base-time 101) + (real-time 102) + (game-time 103) + (frame-time 104) + (real-frame-time 105) + (session-time 106) + (bg-time 107) + (total-game-time 108) + + (continue 200) + (life 201) + (money 202) + (money-total 203) + (money-per-level 204) + (buzzer-total 205) + (fuel-cell 206) + (death-movie-tick 207) + (skill 208) + (skill-total 209) + (karma 210) + (eco-pill-dark 211) + (eco-pill-dark-total 212) + (shield 213) + (features 214) + (gun-type 215) + (gun-ammo 216) + (gem 218) + (gem-total 219) + (secrets 220) + (scores 221) + (purchase-secrets 222) + (eco-pill-light 223) + (eco-pill-light-total 224) + (vehicles 225) + (vehicle 226) + (resetter-node 227) + (items 228) + (skill-high-watermark 229) + (car-info 230) + (last-selected-vehicle 231) + (cash 232) + (car-parts-info 233) + (game-movie 234) + (driver-unlock 235) + (venue-unlock 236) + + (task-list 300) + (perm-list 301) + (level-open-list 305) + (task-node-list 306) + (talker-state 307) + (bigmap-data 308) + (bigmap-offsets 309) + + (total-deaths 400) + (continue-deaths 401) + (task-deaths 402) + (game-start-time 403) + (death-time 405) + (hit-time 406) + (task-pickup-time 407) + (continue-time 408) + (task-complete-time 409) + (enter-level-time 410) + (deaths-per-level 411) + (death-pos 412) + (auto-save-count 413) + (in-level-time 414) + (task-start-time 415) + (node-death-count 416) + (node-gem-count 417) + (node-skill-count 418) + (node-close-time 419) + (node-name 420) + (total-trys 421) + (enemies-killed 422) + (civilians-killed 423) + (marauders-killed 424) + (shot-info 425) + (crates-opened 426) + (health-collected 427) + (board-time 428) + (task-stats 429) + (task-medals 430) + (task-play-count 431) + (task-options 432) + (view-mode1 433) + (view-mode2 434) + (task-high-scores 435) + (grand-prix-trophy 436) + (m2v-info 437) + + (sfx-volume 500) + (music-volume 501) + (dialog-volume 502) + (language 503) + (screenx 504) + (screeny 505) + (vibration 506) + (play-hints 507) + (video-mode 508) + (aspect-ratio 509) + (camera-stick-dir 510) + (subtitle 511) + (subtitle-language 512) + (stereo-mode 513) + (brightness 514) + (contrast 515) + (audio-language 516) + (flip-horizontal 517) + (flip-vertical 518) + (crash-cam 519) + (rotate-arena-minimap 520) + (kill-cam 521) + + (disk-tester 600) + ) +;; ---game-save:game-save-elt + +(deftype game-save-tag (structure) + ((user-object object 2 :offset-assert 0) ;; guessed by decompiler + (user-uint64 uint64 :offset 0) + (user-float0 float :offset 0) + (user-float float 2 :offset 0) ;; guessed by decompiler + (user-int32 int32 2 :offset 0) ;; guessed by decompiler + (user-uint32 uint32 2 :offset 0) ;; guessed by decompiler + (user-int16 int16 4 :offset 0) ;; guessed by decompiler + (user-uint16 uint16 4 :offset 0) ;; guessed by decompiler + (user-int8 int8 8 :offset 0) ;; guessed by decompiler + (user-int80 int8 :offset 0) + (user-int81 int8 :offset 1) + (user-uint8 uint8 8 :offset 0) ;; guessed by decompiler + (elt-count int32 :offset-assert 8) + (elt-size uint16 :offset-assert 12) + (elt-type game-save-elt :offset-assert 14) ;; game-save-elt + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(deftype game-save (basic) + ((version int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (length int32 :offset-assert 12) + (level-index int32 :offset-assert 16) + (gem-count float :offset-assert 20) + (skill-count float :offset-assert 24) + (completion-percentage float :offset-assert 28) + (minute uint8 :offset 36) + (hour uint8 :offset-assert 37) + (week uint8 :offset-assert 38) + (day uint8 :offset-assert 39) + (month uint8 :offset-assert 40) + (year uint8 :offset-assert 41) + (game-time uint64 :offset 48) + (secrets uint32 2 :offset 64) + (features uint32 2 :offset-assert 72) + (tag game-save-tag :inline :dynamic :offset-assert 80) + ) + :method-count-assert 12 + ;; :size-assert #x70 + ;; :flag-assert #xc00000070 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type int) _type_) + (game-save-method-9 () none) ;; 9 ;; (save-to-file (_type_ string) _type_) + (game-save-method-10 () none) ;; 10 ;; (load-from-file (_type_ string) _type_) + (debug-inspect (_type_ symbol) _type_) ;; 11 ;; (debug-inspect (_type_ symbol) _type_) + ) + ) + +#| +(deftype auto-save (process) + ((card int32 :offset-assert 144) + (slot int32 :offset-assert 148) + (which int32 :offset-assert 152) + (buffer kheap :offset-assert 156) + (mode symbol :offset-assert 160) ;; guessed by decompiler + (starting-auto-save-status basic :offset-assert 164) + (result mc-status-code :offset-assert 168) ;; guessed by decompiler + (save game-save :offset-assert 172) ;; guessed by decompiler + (info mc-slot-info :inline :offset-assert 176) + (notify uint64 :offset-assert 608) ;; handle + (force symbol :offset-assert 616) ;; guessed by decompiler + (state-time uint64 :offset-assert 624) ;; time-frame + (icon hud-sprite :inline :offset-assert 640) + (icon-gui-id uint32 :offset-assert 692) + (message-gui-id uint32 :offset-assert 696) + (game-name UNKNOWN 16 :offset-assert 700) + ) + :method-count-assert 29 + :size-assert #x2cc + :flag-assert #x1d024002cc + (:methods + (auto-save-method-9 () none) ;; 9 + (auto-save-method-10 () none) ;; 10 + (auto-save-method-11 () none) ;; 11 + (auto-save-method-12 () none) ;; 12 + (auto-save-method-13 () none) ;; 13 + (auto-save-method-14 () none) ;; 14 ;; (get-heap () _type_ :state) + ) + (:state-methods + get-heap ;; 15, old: (get-card () _type_ :state) + save-ghost ;; 24 + get-card ;; 16, old: (format-card () _type_ :state) + format-card ;; 17, old: (unformat-card () _type_ :state) + unformat-card ;; 18, old: (create-file () _type_ :state) + create-file ;; 19, old: (save () _type_ :state) + save ;; 20, old: (restore () _type_ :state) + save-common ;; 22, old: (done () _type_ :state) + save-patch ;; 26 + restore ;; 21, old: (error (mc-status-code) _type_ :state) + restore-common ;; 23 + restore-ghost ;; 25 + error ;; 27 + done ;; 28 + ) + ) +|# + +#| +(deftype auto-save-error-proc (process-drawable) + ((error basic :offset-assert 248) + (bmask uint32 :offset-assert 252) + ) + :method-count-assert 50 + :size-assert #x100 + :flag-assert #x3200700100 + ) +|# + +;; (define-extern *mc-ghost-idx* object) +;; (define-extern *mc-ghost-ptr* object) +(define-extern game-save-elt->string (function game-save-elt string)) +;; (define-extern *auto-save-info* object) ;; mc-slot-info +;; (define-extern auto-save-post function) ;; (function pointer :behavior auto-save) +;; (define-extern auto-save-init-by-other function) ;; (function symbol process int int symbol object :behavior auto-save) +;; (define-extern auto-idle state) +;; (define-extern auto-save-error-proc-init-by-other function) +(define-extern progress-allowed? (function symbol)) +;; (define-extern auto-save-command function) ;; (function symbol int int process-tree symbol (pointer auto-save)) +;; (define-extern auto-save-check function) ;; (function int) +;; (define-extern auto-save-user function) ;; (function (pointer auto-save)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; title-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype title-control (process) + ((buffer external-art-buffer 2 :offset-assert 140) ;; guessed by decompiler + (want int32 2 :offset-assert 148) ;; guessed by decompiler + (want-name string 2 :offset-assert 156) ;; guessed by decompiler + (have int32 2 :offset-assert 164) ;; guessed by decompiler + (draw int32 :offset-assert 172) + (draw-name string :offset-assert 176) ;; guessed by decompiler + (active symbol :offset-assert 180) ;; guessed by decompiler + ) + :method-count-assert 22 + :size-assert #xbc + :flag-assert #x16003000bc + (:methods + (title-control-method-9 () none) ;; 9 + (title-control-method-10 () none) ;; 10 + (title-control-method-11 () none) ;; 11 + (title-control-method-12 () none) ;; 12 + (title-control-method-13 () none) ;; 13 + (title-control-method-14 () none) ;; 14 ;; (startup () _type_ :state) + (title-control-method-16 () none) ;; 16 ;; (idle () _type_ :state) + (title-control-method-17 () none) ;; 17 ;; (scrap-book (int) _type_ :state) + ) + (:state-methods + startup ;; 15, old: (wait () _type_ :state) + scrap-book ;; 18, old: (control-spec (int) _type_ :state) + control-spec ;; 19 + splash-screen ;; 20 + thx-dolby ;; 21 + ) + ) +|# + +;; (define-extern title-control-init function) ;; (function object :behavior title-control) +;; (define-extern title-control-spawn function) +;; (define-extern title-screen-change function) ;; (function string int string int symbol symbol int :behavior title-control) +;; (define-extern title-progress function) ;; (function symbol int) +;; (define-extern title-fade-out function) ;; (function float int) +;; (define-extern direction-press function) ;; (function time-frame time-frame symbol symbol) +;; (define-extern *scrap-book-3* array) +;; (define-extern *scrap-book-1* array) ;; (array int16) +;; (define-extern *scrap-book-2* array) ;; (array int16) +;; (define-extern *progress-save-info* object) ;; mc-slot-info +;; (define-extern post-memcard function) +;; (define-extern *game-name-entered* object) +;; (define-extern draw-language-select function) +;; (define-extern check-language function) +;; (define-extern *end-credits-proc* object) +;; (define-extern end-end-credits function) +;; (define-extern start-end-credits function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; dynamic-patch ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *dynamic-patches* object) +;; (define-extern *dynamic-patch-size* object) +;; (define-extern dynamic-patch-hook function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; process-nettable ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype net-test (process-nettable) + ((spoon int32 :offset-assert 188) + ) + :method-count-assert 44 + :size-assert #xc0 + :flag-assert #x2c003000c0 + (:state-methods + running ;; 42 + die ;; 43 + ) + ) +|# + +;; (define-extern net-test-init-remote function) +;; (define-extern *msg-map-net-test* array) +;; (define-extern *net-process-class-info-net-test* object) +;; (define-extern net-test-init-by-other function) +;; (define-extern spawn-local function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-player ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype vehicle-rev-manager (process) + ((vehicle uint64 :offset-assert 144) + (state-time uint32 :offset-assert 152) + (throttle float :offset-assert 156) + (on-period uint32 :offset-assert 160) + (off-period uint32 :offset-assert 164) + (long-period uint32 :offset-assert 168) + (wait-period uint32 :offset-assert 172) + (pulse-count int8 :offset-assert 176) + (i-pulse int8 :offset-assert 177) + ) + :method-count-assert 17 + :size-assert #xb2 + :flag-assert #x11003000b2 + (:methods + (vehicle-rev-manager-method-14 () none) ;; 14 + ) + (:state-methods + idle ;; 15 + ) + (:methods + (vehicle-rev-manager-method-16 () none) ;; 16 + ) + ) + +;; (define-extern *target-cam-off-time* object) +;; (define-extern update-active-net-players function) +;; (define-extern net-player-default-handler function) +;; (define-extern use-target-cam-base-helper function) +;; (define-extern net-player-init-local function) +;; (define-extern clear-local-players function) +;; (define-extern playback-cam function) +;; (define-extern all-players-spawned-vehicles? function) +;; (define-extern local-human-player-above-height? function) +;; (define-extern find-ground-info function) +(define-extern get-player-pos (function int vector)) +;; (define-extern vehicle-rev-manager-init-by-other function) +;; (define-extern vehicle-rev-manager-spawn function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-util ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype auto-test-levels (process) + ((cur-task int32 :offset-assert 144) + ) + :method-count-assert 16 + :size-assert #x94 + :flag-assert #x1000100094 + (:methods + (auto-test-levels-method-9 () none) ;; 9 + (auto-test-levels-method-10 () none) ;; 10 + (auto-test-levels-method-11 () none) ;; 11 + (auto-test-levels-method-12 () none) ;; 12 + (auto-test-levels-method-13 () none) ;; 13 + (auto-test-levels-method-14 () none) ;; 14 + ) + (:state-methods + running ;; 15 + ) + ) +|# + +;; (define-extern *closest-player-dist-sq* object) +;; (define-extern get-closest-human-player function) +;; (define-extern get-closest-human-or-ai-player function) +;; (define-extern search-for-code function) +;; (define-extern *poop* object) +;; (define-extern *pooplen* object) +;; (define-extern test-patch function) +;; (define-extern long-game2 function) +;; (define-extern *channel-id-ct* object) +;; (define-extern *channel-ids* object) +;; (define-extern *user-ct* object) +;; (define-extern broadcast-message function) +;; (define-extern *auto-test-break* object) +;; (define-extern check-entities function) +;; (define-extern auto-test-node function) +;; (define-extern auto-test-levels-init-by-other function) +;; (define-extern auto-test-levels-start function) +;; (define-extern check-levels function) +;; (define-extern *sound-clone* object) +;; (define-extern *sound-info-fields* array) +;; (define-extern *tmp-line* object) +;; (define-extern *tmp-buf* object) +;; (define-extern *tmp-buf-len* object) +;; (define-extern read-sound-line function) +;; (define-extern crappy-atof function) +;; (define-extern tweak-sound function) +;; (define-extern read-sound-info-tweaks function) +;; (define-extern process-is-in-tree function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-predict ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-logging ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *lock-stream* file-stream) +;; (define-extern *lock-name* object) +;; (define-extern *net-log-stream* file-stream) +;; (define-extern *net-log-name* object) +;; (define-extern *net-ip-string* object) +;; (define-extern *net-log-buf-mem* object) +;; (define-extern *net-log-buf* object) +;; (define-extern *net-ip* object) +;; (define-extern *net-log-id* object) +;; (define-extern net-log-world-ident function) +;; (define-extern net-log-start function) +;; (define-extern net-log-remove-lock function) +;; (define-extern net-log-stop function) +;; (define-extern net-log-client function) +;; (define-extern net-log-msg function) +;; (define-extern net-log-comment function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-world ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern verify-drivers function) +;; (define-extern *net-world-load-levels* array) +;; (define-extern *net-world-display-levels* array) +;; (define-extern *net-world-load-levels2* array) +;; (define-extern *net-task-mask* object) +;; (define-extern *waiting-for-lock* object) +;; (define-extern *net-world-entity-hash* object) +;; (define-extern set-net-task-mask function) +;; (define-extern convert-load-parts-to-car-info function) +;; (define-extern convert-car-info-to-load-parts function) +;; (define-extern cleanup-at-game-end function) +;; (define-extern check-start-load function) +;; (define-extern *font-context-loading* object) +;; (define-extern do-loading-text function) +;; (define-extern *movie-string* object) +;; (define-extern do-movie function) +;; (define-extern wait-target-load function) +;; (define-extern load-sound-banks function) +;; (define-extern do-late-join function) +;; (define-extern *tmp-reset-string* object) +;; (define-extern *last-flash* object) +;; (define-extern check-host-timeout function) +;; (define-extern do-encode-net-world-state function) +;; (define-extern wait-for-lock function) +;; (define-extern wait-for-ghost-download function) +;; (define-extern save-vehicle-camera-inside-state function) +;; (define-extern set-net-world-time-of-day function) +;; (define-extern wait-for-lobby-to-die function) +;; (define-extern check-grand-prix-restart function) +;; (define-extern wait-for-levels function) +;; (define-extern get-ai-vehicle-cup-idx function) +;; (define-extern *tmp-string* string) +;; (define-extern set-continue-point-from-task function) +;; (define-extern *place-players* array) +;; (define-extern *place-player-ct* object) +;; (define-extern allow-machine-to-join function) +;; (define-extern allow-machine-to-join-rec function) +;; (define-extern *bkp-cols* object) +;; (define-extern do-decode-net-world-state function) +;; (define-extern player-connected? function) +;; (define-extern net-world-init-local function) +;; (define-extern init-local-world function) +;; (define-extern do-ghost-ai-setup function) +;; (define-extern get-non-conflicting-driver function) +;; (define-extern set-ai-vehicle function) +;; (define-extern request-game-start function) +;; (define-extern is-late-join? function) +;; (define-extern driver-allowed function) +;; (define-extern ai-driver-allowed function) +;; (define-extern get-total-humans function) +;; (define-extern get-total-skill-level function) +;; (define-extern get-player-clan-info function) +;; (define-extern lobby-level-set! function) +;; (define-extern set-player-car-from-level-array function) +;; (define-extern *in-end-of-race-preload* object) +;; (define-extern end-of-race-start-preload function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; stream-media ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern init-stream-media-params function) +;; (define-extern stream-media-end-recording function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-projectile ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern net-projectile-init-by-other function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; udp-layer ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype udp-layer-machine (structure) + ((idx int8 :offset-assert 0) + (state int8 :offset-assert 1) + (state-enter-time int32 :offset-assert 4) + (last-time int32 :offset-assert 8) + (last-reply-time int32 :offset-assert 12) + (reachable-ip uint32 :offset-assert 16) + (reachable-port int32 :offset-assert 20) + (scert-ip uint32 :offset-assert 24) + ) + :method-count-assert 12 + :size-assert #x1c + :flag-assert #xc0000001c + (:methods + (udp-layer-machine-method-9 () none) ;; 9 + (udp-layer-machine-method-10 () none) ;; 10 + (udp-layer-machine-method-11 () none) ;; 11 + ) + ) +|# + +#| +(deftype udp-layer (structure) + ((machines UNKNOWN 8 :offset-assert 0) + (socket int32 :offset-assert 256) + (data-cb basic :offset-assert 260) + (nat-discovery-time int32 :offset-assert 264) + (nat-discovery-tries int32 :offset-assert 268) + (nat-discovery-ip uint32 :offset-assert 272) + (nat-discovery-port int32 :offset-assert 276) + ) + :method-count-assert 20 + :size-assert #x118 + :flag-assert #x1400000118 + (:methods + (udp-layer-method-9 () none) ;; 9 + (udp-layer-method-10 () none) ;; 10 + (udp-layer-method-11 () none) ;; 11 + (udp-layer-method-12 () none) ;; 12 + (udp-layer-method-13 () none) ;; 13 + (udp-layer-method-14 () none) ;; 14 + (udp-layer-method-15 () none) ;; 15 + (udp-layer-method-16 () none) ;; 16 + (udp-layer-method-17 () none) ;; 17 + (udp-layer-method-18 () none) ;; 18 + (udp-layer-method-19 () none) ;; 19 + ) + ) +|# + +;; (define-extern *udp-buffer* object) +;; (define-extern *udp-layer* object) +;; (define-extern *nat-addr* object) +;; (define-extern udp-announce-msg-callback function) +;; (define-extern fw-test-2 function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; headset ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *headset-op-size* object) +;; (define-extern *headset-result* object) +;; (define-extern *decoder-queue-3-buf* object) +;; (define-extern *decoder-queue-2-buf* object) +;; (define-extern *decoder-queue-1-buf* object) +;; (define-extern *decoder-queue-0-buf* object) +;; (define-extern *decoder-queue-buffers* array) +;; (define-extern headset-init-by-other function) +;; (define-extern headset-activate function) +;; (define-extern headset-deactivate function) +;; (define-extern headset-audio-msg-callback function) +;; (define-extern headset-udp-callback function) +;; (define-extern should-talk-to function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; idle-control ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype idle-control-frame (structure) + ((command uint8 :offset-assert 0) ;; idle-control-cmd + (anim uint32 :offset-assert 4) + (param0 int32 :offset-assert 8) + (param1 int32 :offset-assert 12) + (param2 pair :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ;; field param2 uses ~A with a signed load. + ) +|# + +#| +(deftype idle-control (structure) + ((anim (inline-array idle-control-frame) :offset-assert 0) ;; guessed by decompiler + (anim-speed float :offset-assert 4) + (current-index int32 :offset-assert 8) + (counter int32 :offset-assert 12) + (target int32 :offset-assert 16) + ) + :method-count-assert 11 + :size-assert #x14 + :flag-assert #xb00000014 + (:methods + (idle-control-method-9 () none) ;; 9 ;; (init! (_type_ (inline-array idle-control-frame)) none) + (idle-control-method-10 () none) ;; 10 ;; (play-idle-frames! (_type_ process-drawable) none) + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; water-anim ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype water-anim (process-drawable) + ((water-height meters :offset-assert 248) + (wade-height meters :offset-assert 252) + (swim-height meters :offset-assert 256) + (bottom-height meters :offset-assert 260) + (attack-event symbol :offset-assert 264) ;; guessed by decompiler + (attack-id uint32 :offset-assert 268) + (flow flow-control :offset-assert 272) ;; guessed by decompiler + (target uint64 :offset-assert 280) ;; handle + (flags water-flag :offset-assert 288) ;; guessed by decompiler + (look int32 :offset-assert 292) ;; wanim-look + (play-ambient-sound? symbol :offset-assert 296) ;; guessed by decompiler + (visible symbol :offset-assert 300) ;; guessed by decompiler + ) + :method-count-assert 59 + :size-assert #x130 + :flag-assert #x3b00a00130 + (:methods + (water-anim-method-50 () none) ;; 50 + (water-anim-method-52 () none) ;; 52 + (water-anim-method-53 () none) ;; 53 + (water-anim-method-54 () none) ;; 54 + (water-anim-method-55 () none) ;; 55 + (water-anim-method-56 () none) ;; 56 + (water-anim-method-57 () none) ;; 57 + (water-anim-method-58 () none) ;; 58 + ) + (:state-methods + idle ;; 51 + ) + ) +|# + +#| +(deftype water-anim-look (structure) + ((skel-group string :offset-assert 0) ;; guessed by decompiler + (anim int32 :offset-assert 4) + (ambient-sound-spec sound-spec :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +;; (define-extern *water-anim-look* array) ;; (array water-anim-look) +;; (define-extern water-anim-event-handler function) ;; (function process int symbol event-message-block object :behavior water-anim) +;; (define-extern water-anim-init-by-other function) ;; (function entity-actor object :behavior water-anim) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; rigid-body-debug ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern adjust-playback-index function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; rigid-body-surface ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *rigid-body-surfaces* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; rigid-body ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype debug-rigid-body-move (structure) + ((vel-dot-norm float :offset-assert 0) + (time-step-scale float :offset-assert 4) + (best-u float :offset-assert 8) + (i-step int8 :offset-assert 12) + (proc2 basic :offset-assert 16) + (rbody2 basic :offset-assert 20) + (best-my-prim basic :offset-assert 24) + (bsphere sphere :inline :offset-assert 32) + (impact-info rigid-body-impact :inline :offset-assert 48) + (rbody rigid-body-control :inline :offset-assert 132) + ) + :method-count-assert 9 + :size-assert #x1b4 + :flag-assert #x9000001b4 + ) +|# + +#| +(deftype rigid-body-work (structure) + ((max-ang-momentum float :offset-assert 0) + (max-ang-velocity float :offset-assert 4) + (pid uint32 :offset-assert 8) + (step-count int8 :offset-assert 12) + (debug-history UNKNOWN 16 :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x1c10 + :flag-assert #x900001c10 + ) +|# + +#| +(deftype rb-penalty-forces-work (structure) + ((impact-info rigid-body-impact :inline :offset-assert 0) + (impact-info2 rigid-body-impact :inline :offset-assert 80) + (force vector :inline :offset-assert 160) + (tmp vector :inline :offset-assert 176) + (surf-this vector :inline :offset-assert 192) + (surf-other vector :inline :offset-assert 208) + (vel vector :inline :offset-assert 224) + (vel2 vector :inline :offset-assert 240) + (len2 float :offset-assert 256) + (overlap-count int8 :offset-assert 260) + (prim-count int8 :offset-assert 261) + (prim-ctr int8 :offset-assert 262) + (i-cprim int8 :offset-assert 263) + (penetrated-by uint64 :offset-assert 264) + ) + :method-count-assert 9 + :size-assert #x110 + :flag-assert #x900000110 + ) +|# + +#| +(deftype check-line-spheres-hack-params (structure) + ((time-step float :offset-assert 0) + (mat matrix :offset-assert 4) + (cquery collide-query :offset-assert 8) + (rbody basic :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +#| +(deftype hack-line-sphere (structure) + ((spheres UNKNOWN 2 :offset-assert 0) + (prim basic :offset-assert 28) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype check-line-spheres-hack-work (structure) + ((fill-sphere sphere :inline :offset-assert 0) + (fill-delta vector :inline :offset-assert 16) + (delta vector :inline :offset-assert 32) + (line-spheres UNKNOWN 4 :offset-assert 48) + (cshape basic :offset-assert 176) + (collide-with uint32 :offset-assert 180) + (group-collide-with uint32 :offset-assert 184) + (group-collide-as uint32 :offset-assert 188) + (actor-count int8 :offset-assert 192) + (prim-count int8 :offset-assert 193) + (lsphere-count int8 :offset-assert 194) + (search-result-array UNKNOWN 10 :offset-assert 196) + ) + :method-count-assert 9 + :size-assert #xec + :flag-assert #x9000000ec + ) +|# + +#| +(deftype ray-tube-intersect-params (structure) + ((ray-start sphere :inline :offset-assert 0) + (ray-extrude vector :inline :offset-assert 16) + (tube-start vector :inline :offset-assert 32) + (tube-extrude vector :inline :offset-assert 48) + (tube-radius float :offset-assert 64) + (tt float :offset-assert 68) + (intersect vector :inline :offset-assert 80) + (normal vector :inline :offset-assert 96) + ) + :method-count-assert 9 + :size-assert #x70 + :flag-assert #x900000070 + ) +|# + +#| +(deftype rigid-body-move-work (structure) + ((cquery collide-query :inline :offset-assert 0) + (mat matrix :inline :offset-assert 544) + (impact-info rigid-body-impact :inline :offset-assert 608) + (impact-info2 rigid-body-impact :inline :offset-assert 688) + (orig-position vector :inline :offset-assert 768) + (orig-rotation quaternion :inline :offset-assert 784) + (force vector :inline :offset-assert 800) + (vel vector :inline :offset-assert 816) + (p-body vector :inline :offset-assert 832) + (tmp vector :inline :offset-assert 848) + (tangent-dir vector :inline :offset-assert 864) + (proc2 process-focusable :offset-assert 880) ;; guessed by decompiler + (rbody2 rigid-body-control :offset-assert 884) ;; guessed by decompiler + (vel-dot-norm float :offset-assert 888) + (denom float :offset-assert 892) + (denom2 float :offset-assert 896) + (bounce-factor float :offset-assert 900) + (friction-factor float :offset-assert 904) + (time-step float :offset-assert 908) + (time-step-scale float :offset-assert 912) + (penetrate-depth float :offset-assert 916) + (material uint64 :offset-assert 920) + (surface-type uint8 :offset-assert 928) + (surface rigid-body-surface :offset-assert 932) + (step-count int8 :offset-assert 936) + (start-time uint32 :offset-assert 940) + (end-time uint32 :offset-assert 944) + ) + :method-count-assert 9 + :size-assert #x3b4 + :flag-assert #x9000003b4 + ) +|# + +;; (define-extern *debug-move-rigid-body* object) +;; (define-extern *rigid-body-work* object) ;; rigid-body-work +;; (define-extern debug-draw-rigid-body-move function) +;; (define-extern matrix-3x3-triple-transpose-product function) ;; (function matrix matrix matrix matrix) +;; (define-extern damping-time-adjust function) ;; (function float float float) +;; (define-extern apply-overlap-penalty-forces function) +;; (define-extern ray-tube-intersect function) +;; (define-extern collide-sphere-with-line-sphere-hack function) +;; (define-extern check-vehicle-line-spheres-hack function) +;; (define-extern transform-rigid-body-prims function) ;; (function collide-shape-prim matrix symbol) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; rigid-body-queue ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype rb-line-sphere-test (structure) + ((params ray-tube-intersect-params :inline :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x70 + :flag-assert #x900000070 + ) +|# + +#| +(deftype rigid-body-queue-manager (process) + ((queue rigid-body-queue :offset-assert 144) + (time-val uint32 :offset-assert 148) + (pad uint32 :offset-assert 152) + (state-time uint64 :offset-assert 160) + (delay uint32 :offset-assert 168) + (times UNKNOWN 4 :offset-assert 172) + ) + :method-count-assert 16 + :size-assert #xbc + :flag-assert #x10003000bc + (:methods + (rigid-body-queue-manager-method-9 () none) ;; 9 + (rigid-body-queue-manager-method-10 () none) ;; 10 + (rigid-body-queue-manager-method-11 () none) ;; 11 + (rigid-body-queue-manager-method-12 () none) ;; 12 + (rigid-body-queue-manager-method-13 () none) ;; 13 + (rigid-body-queue-manager-method-14 () none) ;; 14 ;; (idle () _type_ :state) + ) + (:state-methods + idle ;; 15 + ) + ) +|# + +;; (define-extern *rigid-body-queue* object) +;; (define-extern *rigid-body-queue-manager* object) ;; rigid-body-queue-manager +;; (define-extern *rb-line-sphere-test* object) +;; (define-extern rb-line-sphere-test-update function) +;; (define-extern rb-reset-perf-array function) +;; (define-extern rb-reset-perf-times function) +;; (define-extern rb-get-perf function) +;; (define-extern *rb-raw-time-val* object) +;; (define-extern rb-cpu-delay function) +;; (define-extern rigid-body-queue-manager-post function) +;; (define-extern rigid-body-queue-manager-init-by-other function) ;; (function rigid-body-queue object :behavior rigid-body-queue-manager) +;; (define-extern rigid-body-queue-manager-spawn function) ;; (function rigid-body-queue process-tree process) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; rigid-body-object ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *rigid-body-object-constants* object) ;; rigid-body-object-constants +;; (define-extern rigid-body-object-event-handler function) ;; (function process int symbol event-message-block object :behavior rigid-body-object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; scene-actor ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ragdoll-test ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype ragdoll-test (process-focusable) + ((ragdoll-proc uint64 :offset-assert 256) ;; handle + ) + :method-count-assert 64 + :size-assert #x108 + :flag-assert #x4000800108 + (:state-methods + reform ;; 59 + tweak ;; 60 + freefall-reform ;; 61 + freefall ;; 62 + idle ;; 63 + ) + ) +|# + +;; (define-extern *ragdoll-test-ragdoll-setup* object) ;; ragdoll-setup +;; (define-extern ragdoll-test-init-by-other function) ;; (function ragdoll-setup entity-actor object :behavior ragdoll-test) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; spartacus ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern spartacus-birth-func-set-color function) +;; (define-extern spt-birth-func-spartacus-part-steam function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype helmet (structure) + ((node-list basic :offset-assert 0) + (draw basic :offset-assert 4) + (node-index int8 :offset-assert 8) + (scale float :offset-assert 12) + ) + :method-count-assert 12 + :size-assert #x10 + :flag-assert #xc00000010 + (:methods + (helmet-method-9 () none) ;; 9 + (helmet-method-10 () none) ;; 10 + (helmet-method-11 () none) ;; 11 + ) + ) +|# + +#| +(deftype driver-initialize-params (structure) + ((vehicle basic :offset-assert 0) + (level-slot int8 :offset-assert 4) + (driver-type uint8 :offset-assert 5) + ) + :method-count-assert 9 + :size-assert #x6 + :flag-assert #x900000006 + ) +|# + +#| +(deftype driver-info (structure) + ((skel basic :offset-assert 0) + (turn-back-anim int8 :offset-assert 4) + (turn-front-anim int8 :offset-assert 5) + (up-down-anim int8 :offset-assert 6) + (intro-anim UNKNOWN 4 :offset-assert 7) + (head-node int8 :offset-assert 11) + (arm0-node int8 :offset-assert 12) + (arm1-node int8 :offset-assert 13) + (arm0-dist float :offset-assert 16) + (arm1-dist float :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) +|# + +#| +(deftype joint-mod-head (joint-mod) + ((mode uint32 :offset-assert 0) + (process basic :offset-assert 4) + (joint cspace :offset-assert 8) + (target vector :inline :offset-assert 12) + (twist vector :inline :offset-assert 28) + (twist-max vector :inline :offset-assert 44) + (extra-twist deg :offset-assert 36) + (track-mode track-mode :offset-assert 40) + (look-at-count uint16 :offset-assert 42) + (twist-range-x meters :offset-assert 52) + (twist-range-y meters :offset-assert 56) + (twist-speed-x float :offset-assert 60) + (twist-speed-y float :offset-assert 64) + (trans vector :inline :offset-assert 76) + (smushy-old float :offset-assert 76) + (smushy-off float :offset-assert 80) + (smushyv float :offset-assert 84) + (quat quaternion :inline :offset-assert 92) + (scale vector :inline :offset-assert 108) + (notice-time uint64 :offset-assert 124) + (flex-blend float :offset-assert 132) + (blend float :offset-assert 136) + (old-blend float :offset-assert 140) + (max-dist meters :offset-assert 144) + (ignore-angle deg :offset-assert 148) + (up uint8 :offset-assert 152) + (nose uint8 :offset-assert 153) + (ear uint8 :offset-assert 154) + (base-joint uint8 :offset-assert 155) + (base-nose uint8 :offset-assert 156) + (shutting-down? basic :offset-assert 160) + (parented-scale? basic :offset-assert 164) + ) + :method-count-assert 16 + :size-assert #xac + :flag-assert #x10000000ac + ;; field track-mode is likely a value type. + ) +|# + +#| +(deftype driver (process-focusable) + ((info driver-info :inline :offset-assert 256) + (vehicle uint64 :offset-assert 280) + (speech-time uint64 :offset-assert 288) + (anim-vel vector :inline :offset-assert 304) + (anim-pos vector :inline :offset-assert 320) + (turn-back-anim int8 :offset-assert 336) + (turn-front-anim int8 :offset-assert 337) + (up-down-anim int8 :offset-assert 338) + (intro-anim UNKNOWN 4 :offset-assert 339) + (jmod-head basic :offset-assert 344) + (arm-ik UNKNOWN 2 :offset-assert 348) + (looking-at uint64 :offset-assert 360) + (looking-at-timeout int32 :offset-assert 368) + (helmet helmet :inline :offset-assert 372) + ) + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + (:methods + (driver-method-62 () none) ;; 62 + (driver-method-63 () none) ;; 63 + (driver-method-64 () none) ;; 64 + (driver-method-65 () none) ;; 65 + (driver-method-66 () none) ;; 66 + ) + (:state-methods + idle ;; 59 + intro ;; 60 + die ;; 61 + ) + ) +|# + +;; (define-extern joint-mod-head-handler function) +;; (define-extern driver-trans function) +;; (define-extern driver-post function) +;; (define-extern driver-head function) +;; (define-extern driver-anim function) +;; (define-extern driver-event-handler function) +;; (define-extern driver-init-by-other function) +;; (define-extern driver-spawn function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; helmet ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype helmet-hud (process-drawable) + () + :method-count-assert 52 + :size-assert #xf8 + :flag-assert #x34007000f8 + (:methods + (helmet-hud-method-51 () none) ;; 51 + ) + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype helmet-garage (process-drawable) + ((offset vector :inline :offset-assert 256) + (hud-handle uint64 :offset-assert 272) + (vehicle-level basic :offset-assert 280) + ) + :method-count-assert 52 + :size-assert #x11c + :flag-assert #x340090011c + (:methods + (helmet-garage-method-51 () none) ;; 51 + ) + (:state-methods + idle ;; 50 + ) + ) +|# + +;; (define-extern helmet-hud-init-by-other function) +;; (define-extern helmet-hud-spawn function) +;; (define-extern helmet-garage-init-by-other function) +;; (define-extern helmet-garage-spawn function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-jak ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-jak (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-ashelin ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-ashelin (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-razer ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-razer (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-klever ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-klever (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-kiera ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-kiera (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-thug-a ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-thug-a (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-thug-b ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-thug-b (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-thug-c ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-thug-c (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-taryn ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-taryn (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-torn ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-torn (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-sig ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-sig (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-ur-86 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-ur-86 (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-kaeden ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-kaeden (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-rayn ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-rayn (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-ratchet ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-ratchet (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-jaka ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-jaka (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-jakb ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-jakb (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-jakc ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-jakc (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-daxter ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-daxter (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-gtblitz ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-gtblitz (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-pecker ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-pecker (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-ximon ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-ximon (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; driver-osmo ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype driver-osmo (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; cam-states ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype target-camera-runtime-info (structure) + ((active symbol :offset-assert 0) + (shot uint64 :offset-assert 8) + (mirror symbol :offset-assert 16) + (need-new-cam symbol :offset-assert 20) + (prefix symbol :offset-assert 24) + (interp float :offset-assert 28) + (last-good-los int32 :offset-assert 32) + (cur-cam-idx int8 :offset-assert 36) + (num-camera-changes int8 :offset-assert 37) + (cur-trans vector :inline :offset-assert 48) + (cur-quat quaternion :inline :offset-assert 64) + (interp-from-trans vector :inline :offset-assert 80) + (interp-from-quat quaternion :inline :offset-assert 96) + (vehicle-release-timer uint64 :offset-assert 112) + (state-time uint64 :offset-assert 120) + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) + +(deftype crash-camera (basic) + ((camera-type uint64 :offset-assert 8) + (world-position vector :inline :offset-assert 16) + (last-target-position vector :inline :offset-assert 32) + (rating float :offset-assert 48) + (master-mult float :offset-assert 52) + (offset vector :inline :offset-assert 64) + (follow float :offset-assert 80) + (percent-delta-y-move float :offset-assert 84) + (diverge-distance float :offset-assert 88) + (zoom-factor float :offset-assert 92) + (start-time int32 :offset-assert 96) + (sparks-reset-in int32 :offset-assert 100) + (camera-rotation float :offset-assert 104) + (likelyhood float :offset-assert 108) + (group int32 :offset-assert 112) + (camera-valid? symbol :offset-assert 116) + (allow-shake? symbol :offset-assert 120) + (last-visible-check-time int32 :offset-assert 124) + (last-car-visible-time int32 :offset-assert 128) + (force-cut symbol :offset-assert 132) + (force-freeze symbol :offset-assert 136) + ) + :method-count-assert 19 + :size-assert #x8c + :flag-assert #x130000008c + (:methods + (crash-camera-method-9 () none) ;; 9 + (crash-camera-method-10 () none) ;; 10 + (crash-camera-method-11 () none) ;; 11 + (crash-camera-method-12 () none) ;; 12 + (crash-camera-method-13 () none) ;; 13 + (crash-camera-method-14 () none) ;; 14 + (crash-camera-method-15 () none) ;; 15 + (crash-camera-method-16 () none) ;; 16 + (crash-camera-method-17 () none) ;; 17 + (crash-camera-method-18 () none) ;; 18 + ) + ) + +(deftype victor-prefix-camera (crash-camera) + () + :method-count-assert 19 + :size-assert #x8c + :flag-assert #x130000008c + ) + +(deftype target-camera (basic) + ((offset-mode symbol :offset-assert 4) + (behind-offset float :offset-assert 8) + (up-offset float :offset-assert 12) + (perp-offset float :offset-assert 16) + (look-at-along float :offset-assert 20) + (fov float :offset-assert 24) + (flags uint64 :offset-assert 32) + ) + :method-count-assert 11 + :size-assert #x28 + :flag-assert #xb00000028 + (:methods + (target-camera-method-9 () none) ;; 9 + (target-camera-method-10 () none) ;; 10 + ) + ) + +(deftype vehicle-AI-control-timer (process) + ((timeout int32 :offset-assert 144) + (veh uint64 :offset-assert 152) + (cam-timer float :offset-assert 160) + ) + :method-count-assert 16 + :size-assert #xa4 + :flag-assert #x10002000a4 + (:methods + (vehicle-AI-control-timer-method-14 () none) ;; 14 + ) + (:state-methods + idle ;; 15 + ) + ) + +(define-extern cam-fixed (state camera-slave)) +(define-extern cam-fixed-read-entity (state camera-slave)) +(define-extern cam-standoff-calc-trans (function vector :behavior camera-slave)) +(define-extern cam-standoff (state camera-slave)) +(define-extern cam-standoff-read-entity (state camera-slave)) +(define-extern cam-curve-closest-point (function curve vector float float int float)) +(define-extern cam-spline (state camera-slave)) +(define-extern cam-decel (state camera-slave)) +(define-extern cam-endlessfall (state camera-slave)) +(define-extern cam-vehicle-update function) +(define-extern cam-vehicle state) +(define-extern *target-camera-runtime* object) +(define-extern target-cam-runtime-push function) +(define-extern *freeze-camera* array) +(define-extern *crash-camera-array* (array crash-camera)) +(define-extern *crash-camera-force-position* object) +(define-extern *crash-camera-force-position-valid* object) +(define-extern *target-time-speed* float) +(define-extern target-time-go-slow function) +(define-extern target-time-go-normal function) +(define-extern *plow-camera* array) +(define-extern choose-crash-camera function) +(define-extern cam-vehicle-crash state) +(define-extern *camera-training-lifetime* object) +(define-extern set-training-camera-lifetime function) +(define-extern cam-training state) +(define-extern *victor-prefix-camera-array* array) +(define-extern choose-victor-prefix-camera function) +(define-extern target-camera-active? function) +(define-extern *target-camera-array* array) +(define-extern vehicle-AI-control-timer-init-by-other function) +(define-extern target-camera-heuristic-cam-point! function) +(define-extern target-camera-heuristic-look-at! function) +(define-extern target-camera-heuristic-fov function) +(define-extern target-camera-test-los function) +(define-extern choose-target-camera function) +(define-extern camera-go-target function) +(define-extern cam-akira-mode-enter function) +(define-extern cam-vehicle-shot state) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; cam-states-dbg ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype cam-point-watch-bank (basic) + ((speed float :offset-assert 4) + (rot-speed deg :offset-assert 8) ;; degrees + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype cam-free-bank (basic) + ((speed float :offset-assert 4) + (rot-speed deg :offset-assert 8) ;; degrees + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype camera-free-floating-move-info (structure) + ((rv vector :inline :offset-assert 0) + (tv vector :inline :offset-assert 16) + (up vector :inline :offset-assert 32) + (tm matrix :inline :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x70 + :flag-assert #x900000070 + ) +|# + +;; (define-extern *CAM_POINT_WATCH-bank* cam-point-watch-bank) ;; cam-point-watch-bank +;; (define-extern cam-point-watch state) ;; (state camera-slave) +;; (define-extern *CAM_FREE-bank* cam-free-bank) ;; cam-free-bank +;; (define-extern cam-mouse-input function) ;; (function matrix vector vector object) +;; (define-extern cam-free-floating-input function) ;; (function matrix vector vector int int vector) +;; (define-extern cam-free-floating-move function) ;; (function matrix vector vector int vector) +;; (define-extern cam-free-floating state) ;; (state camera-slave) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-jak ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-daxter ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-pecker ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-gtblitz ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-mizo ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; vehicle-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern sparticle-vehicle-direction-light function) +;; (define-extern sparticle-sparks-birth function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; vehicle-debris ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype vehicle-debris-init-params (structure) + ((mat matrix :inline :offset-assert 0) + (velocity vector :inline :offset-assert 64) + (ang-velocity vector :inline :offset-assert 80) + (color rgbaf :inline :offset-assert 96) + (radius float :offset-assert 112) + (skel basic :offset-assert 116) + (info rigid-body-object-constants :offset-assert 120) + (level basic :offset-assert 124) + (impact-sound uint16 :offset-assert 128) + (has-particles basic :offset-assert 132) + ) + :method-count-assert 9 + :size-assert #x88 + :flag-assert #x900000088 + ) +|# + +#| +(deftype vehicle-debris (rigid-body-object) + ((impact-sound uint16 :offset-assert 288) + (camera-dist float :offset-assert 292) + ) + :method-count-assert 92 + :size-assert #x128 + :flag-assert #x5c00a00128 + (:state-methods + explode ;; 89 + fade-out ;; 90 + die ;; 91 + ) + ) +|# + +;; (define-extern *vehicle-debris-constants* object) +;; (define-extern vehicle-debris-init-by-other function) +;; (define-extern vehicle-debris-spawn function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; vehicle-effects ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern calc-fade-vals function) ;; (function float none) +;; (define-extern *vehicle-headlight-glow-template* object) ;; sprite-glow-data +;; (define-extern *vehicle-taillight-glow-template* object) ;; sprite-glow-data +;; (define-extern *vehicle-thruster-glow-template* object) ;; sprite-glow-data +;; (define-extern *vehicle-particle-common-info* object) ;; vehicle-particle-common-info +;; (define-extern vehicle-draw-thruster function) ;; (function vehicle-particle-common-info vehicle-draw-thruster-params none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; vehicle ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *debug-vehicle-work* debug-vehicle-work) ;; debug-vehicle-work +;; (define-extern *tmp-vehicle-info* object) +;; (define-extern *tmp-rigid-body-control* object) +;; (define-extern *vehicle-shadow-control* shadow-control) ;; shadow-control +;; (define-extern *vehicle-shadow-control-disabled* shadow-control) ;; shadow-control +;; (define-extern vehicle-event-handler function) ;; (function process int symbol event-message-block object :behavior vehicle) +;; (define-extern get-player-id function) +;; (define-extern twiddle-collision-cache-verts function) +;; (define-extern vehicle-damage-local-space-0 function) +;; (define-extern vehicle-damage-local-space-1 function) +;; (define-extern get-vehicle-player-id function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wcar-skel-template ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *car-part-temp-string* string) +;; (define-extern get-car-skel-part function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; vehicle-util ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *car-part-art-group-names* array) +;; (define-extern *v-tmp-str* string) +;; (define-extern debug-draw-merc function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; vehicle-physics ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; vehicle-states ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern vehicle-idle-post function) +;; (define-extern player-wait-control-hook function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; vehicle-manager ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype vehicle-manager (process) + ((name string :offset-assert 0) ;; guessed by decompiler + (mask process-mask :offset-assert 4) + (clock clock :offset-assert 8) ;; guessed by decompiler + (view basic :offset-assert 12) + (parent (pointer process-tree) :offset-assert 16) ;; guessed by decompiler + (brother (pointer process-tree) :offset-assert 20) ;; guessed by decompiler + (child (pointer process-tree) :offset-assert 24) ;; guessed by decompiler + (ppointer (pointer process) :offset-assert 28) ;; guessed by decompiler + (self process :offset-assert 32) ;; guessed by decompiler + (profile-ticks uint32 :offset-assert 36) + (pool dead-pool :offset-assert 40) ;; guessed by decompiler + (status symbol :offset-assert 44) ;; guessed by decompiler + (pid int32 :offset-assert 48) + (main-thread cpu-thread :offset-assert 52) ;; guessed by decompiler + (top-thread cpu-thread :offset-assert 56) ;; guessed by decompiler + (entity entity-actor :offset-assert 60) ;; guessed by decompiler + (level level :offset-assert 64) ;; guessed by decompiler + (state state :offset-assert 68) ;; guessed by decompiler + (prev-state state :offset-assert 72) ;; guessed by decompiler + (next-state state :offset-assert 76) ;; guessed by decompiler + (state-stack (array state) :offset-assert 80) ;; guessed by decompiler + (trans-hook function :offset-assert 84) ;; guessed by decompiler + (post-hook function :offset-assert 88) ;; guessed by decompiler + (event-hook (function process int symbol event-message-block object) :offset-assert 92) ;; guessed by decompiler + (allocated-length int32 :offset-assert 96) + (heap-base pointer :offset-assert 108) ;; guessed by decompiler + (heap-top pointer :offset-assert 112) ;; guessed by decompiler + (heap-cur pointer :offset-assert 116) ;; guessed by decompiler + (stack-frame-top stack-frame :offset-assert 120) ;; guessed by decompiler + (heap kheap :inline :offset-assert 108) + (connection-list connectable :inline :offset-assert 124) + (stack uint8 :dynamic :offset-assert 140) ;; guessed by decompiler + ) + :method-count-assert 19 + :size-assert #x90 + :flag-assert #x1300000090 + (:methods + (vehicle-manager-method-9 () none) ;; 9 + (vehicle-manager-method-10 () none) ;; 10 + (vehicle-manager-method-11 () none) ;; 11 + (vehicle-manager-method-12 () none) ;; 12 + (vehicle-manager-method-13 () none) ;; 13 + (vehicle-manager-method-14 () none) ;; 14 ;; (idle () _type_ :state) + (vehicle-manager-method-17 () none) ;; 17 ;; (vehicle-manager-method-17 (_type_) none) + (vehicle-manager-method-18 () none) ;; 18 + ) + (:state-methods + idle ;; 15, old: (active () _type_ :state) + active ;; 16, old: (vehicle-manager-method-16 (_type_) none) + ) + ) +|# + +;; (define-extern vehicle-manager-event-handler function) ;; (function process int symbol event-message-block object :behavior vehicle-manager) +;; (define-extern vehicle-manager-init-by-other function) ;; (function object :behavior vehicle-manager) +;; (define-extern vehicle-manager-start function) ;; (function process none) +;; (define-extern vehicle-manager-kill function) ;; (function none) +;; (define-extern *car-appearance-hack* object) +;; (define-extern *car-info-default* object) +;; (define-extern vehicle-init-by-other function) ;; (function int traffic-object-spawn-params object :behavior vehicle) +;; (define-extern vehicle-idx-from-level-name function) +;; (define-extern vehicle-in-level? function) +;; (define-extern vehicle-spawn function) ;; (function vehicle-type traffic-object-spawn-params process-drawable) +;; (define-extern find-vehicle function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; vehicle-hud ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; vehicle-net ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype vehicle-net-state (structure) + ((hit-points float :offset-assert 0) + (flags uint8 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x5 + :flag-assert #x900000005 + ) +|# + +#| +(deftype vehicle-net-construction (structure) + ((vehicle-type uint8 :offset-assert 0) + (pos vector :inline :offset-assert 16) + (rot quaternion :inline :offset-assert 32) + (player-id int8 :offset-assert 48) + (behavior uint64 :offset-assert 56) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) +|# + +;; (define-extern *vehicle-remote-spawn-data* object) +;; (define-extern *last-latencies* object) +;; (define-extern encode-vehicle-net-state function) +;; (define-extern decode-vehicle-net-state function) +;; (define-extern encode-vehicle-net-construction function) +;; (define-extern decode-vehicle-net-construction function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; target-pilot ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern target-pilot-post function) ;; (function none :behavior target) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; pilot-states ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; find-nearest ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype search-info (structure) + ((point vector :inline :offset-assert 0) + (best-point vector :inline :offset-assert 16) + (match-handle uint64 :offset-assert 32) ;; handle + (match process-focusable :offset-assert 40) ;; guessed by decompiler + (best float :offset-assert 44) + (radius float :offset-assert 48) + (rating search-info-flag :offset-assert 52) + (require search-info-flag :offset-assert 56) + (mask search-info-flag :offset-assert 60) + (rot-base vector :inline :offset-assert 64) + (back-point vector :inline :offset-assert 80) + (rot-range float :offset-assert 96) + ) + :method-count-assert 9 + :size-assert #x64 + :flag-assert #x900000064 + ) +|# + +;; (define-extern *search-info* object) ;; search-info +;; (define-extern find-nearest-focusable function) ;; (function (array collide-shape) vector float search-info-flag search-info-flag vector vector float process-focusable) +;; (define-extern in-process-array? function) +;; (define-extern fst-insertion-helper function) +;; (define-extern find-sorted-targets! function) +;; (define-extern find-sorted-targets-faster! function) +;; (define-extern sorted-targ-validator-test-collision function) +;; (define-extern sorted-targ-validator-is-player-vehicle function) +;; (define-extern sorted-targ-validator-is-any-vehicle function) +;; (define-extern sorted-targ-validator-player-needs-los function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; glist-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype glst-node (structure) + ((next glst-node :offset-assert 0) + (prev glst-node :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype glst-named-node (glst-node) + ((privname string :offset-assert 8) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +#| +(deftype glst-list (structure) + ((head glst-node :offset-assert 0) + (tail glst-node :offset-assert 4) + (tailpred glst-node :offset-assert 8) + (numelem int32 :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) +|# + +;; (define-extern glst-next function) ;; (function glst-node glst-node) +;; (define-extern glst-prev function) ;; (function glst-node glst-node) +;; (define-extern glst-head function) ;; (function glst-list glst-node) +;; (define-extern glst-tail function) ;; (function glst-list glst-node) +;; (define-extern glst-end-of-list? function) ;; (function glst-node symbol) +;; (define-extern glst-start-of-list? function) ;; (function glst-node symbol) +;; (define-extern glst-empty? function) ;; (function glst-list symbol) +;; (define-extern glst-node-name function) ;; (function glst-named-node string) +;; (define-extern glst-set-name! function) ;; (function glst-named-node string string) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; glist ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern glst-num-elements function) ;; (function glst-list int) +;; (define-extern glst-remove function) ;; (function glst-list glst-node glst-node) +;; (define-extern glst-remove-tail function) ;; (function glst-list glst-node) +;; (define-extern glst-remove-head function) ;; (function glst-list glst-node) +;; (define-extern glst-insert-before function) ;; (function glst-list glst-node glst-node glst-node) +;; (define-extern glst-insert-after function) ;; (function glst-list glst-node glst-node glst-node) +;; (define-extern glst-add-tail function) ;; (function glst-list glst-node glst-node) +;; (define-extern glst-add-head function) ;; (function glst-list glst-node glst-node) +;; (define-extern glst-init-list! function) ;; (function glst-list glst-list) +;; (define-extern glst-find-node-by-name function) ;; (function glst-list string glst-node) +;; (define-extern glst-get-node-by-index function) ;; (function glst-list int glst-node) +;; (define-extern glst-length-of-longest-name function) ;; (function glst-list int) +;; (define-extern glst-get-node-index function) ;; (function glst-list glst-node int) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; anim-tester ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype list-control (structure) + ((listfunc (function int list-control symbol) :offset-assert 0) ;; guessed by decompiler + (list-owner uint32 :offset-assert 4) + (top int32 :offset-assert 8) + (left int32 :offset-assert 12) + (list glst-list :offset-assert 16) + (the-node glst-node :offset-assert 20) + (top-index int32 :offset-assert 24) + (the-index int32 :offset-assert 28) + (the-disp-line int32 :offset-assert 32) + (highlight-index int32 :offset-assert 36) + (current-index int32 :offset-assert 40) + (numlines int32 :offset-assert 44) + (lines-to-disp int32 :offset-assert 48) + (charswide int32 :offset-assert 52) + (highlight-disp-line int32 :offset-assert 56) + (field-id int32 :offset-assert 60) + (xpos int32 :offset-assert 64) + (ypos int32 :offset-assert 68) + (user-info int32 :offset-assert 72) + (return-int int32 :offset-assert 76) + ) + :method-count-assert 9 + :size-assert #x50 + :flag-assert #x900000050 + ) +|# + +#| +(deftype list-field (structure) + ((left int32 :offset-assert 0) + (width int32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype DISP_LIST-bank (basic) + ((V_SPACING int32 :offset-assert 4) + (BORDER_WIDTH int32 :offset-assert 8) + (BORDER_HEIGHT int32 :offset-assert 12) + (MAX_LINES int32 :offset-assert 16) + (CHAR_WIDTH int32 :offset-assert 20) + (INC_DELAY int32 :offset-assert 24) + (BORDER_LINES int32 :offset-assert 28) + (CXOFF int32 :offset-assert 32) + (CYOFF int32 :offset-assert 36) + (BXOFF int32 :offset-assert 40) + (BYOFF int32 :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype anim-tester-bank (basic) + ((ANIM_SPEED float :offset-assert 4) + (BLEND float :offset-assert 8) + (OBJECT_LIST_X int32 :offset-assert 12) + (OBJECT_LIST_Y int32 :offset-assert 16) + (OBJECT_LIST_MIN_WIDTH int32 :offset-assert 20) + (ANIM_LIST_X int32 :offset-assert 24) + (ANIM_LIST_Y int32 :offset-assert 28) + (ANIM_LIST_MIN_WIDTH int32 :offset-assert 32) + (PICK_LIST_X int32 :offset-assert 36) + (PICK_LIST_Y int32 :offset-assert 40) + (PICK_LIST_MIN_WIDTH int32 :offset-assert 44) + (EDIT_LIST_X int32 :offset-assert 48) + (EDIT_LIST_Y int32 :offset-assert 52) + (EDIT_STATS_X int32 :offset-assert 56) + (EDIT_LIST_MIN_WIDTH int32 :offset-assert 60) + (EDIT_PICK_X int32 :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x44 + :flag-assert #x900000044 + ) +|# + +;; anim-tester is already defined! + +#| +(deftype anim-test-obj (glst-named-node) + ((obj-art-group basic :offset-assert 12) + (seq-list glst-list :inline :offset-assert 16) + (flags int32 :offset-assert 32) + (mesh-geo basic :offset-assert 36) + (joint-geo basic :offset-assert 40) + (list-con list-control :inline :offset-assert 44) + (parent uint32 :offset-assert 124) + (anim-index int32 :offset-assert 128) + (anim-hindex int32 :offset-assert 132) + (seq-index int32 :offset-assert 136) + (seq-hindex int32 :offset-assert 140) + ) + :method-count-assert 9 + :size-assert #x90 + :flag-assert #x900000090 + ) +|# + +#| +(deftype anim-test-sequence (glst-named-node) + ((item-list glst-list :inline :offset-assert 12) + (playing-item int32 :offset-assert 28) + (flags int32 :offset-assert 32) + (list-con list-control :inline :offset-assert 36) + (parent anim-test-obj :offset-assert 116) + ) + :method-count-assert 9 + :size-assert #x78 + :flag-assert #x900000078 + ) +|# + +#| +(deftype anim-test-seq-item (glst-named-node) + ((speed int32 :offset-assert 12) + (blend int32 :offset-assert 16) + (first-frame float :offset-assert 20) + (last-frame float :offset-assert 24) + (num-frames float :offset-assert 28) + (artist-base float :offset-assert 32) + (flags int32 :offset-assert 36) + (parent anim-test-sequence :offset-assert 40) + ) + :method-count-assert 9 + :size-assert #x2c + :flag-assert #x90000002c + ) +|# + +;; (define-extern *DISP_LIST-bank* DISP_LIST-bank) +;; (define-extern display-list-control function) +;; (define-extern *ANIM_TESTER-bank* anim-tester-bank) +;; (define-extern anim-tester-num-print function) +;; (define-extern *anim-tester* object) ;; (pointer anim-tester) +;; (define-extern anim-test-obj-init function) +;; (define-extern anim-test-sequence-init function) +;; (define-extern anim-test-seq-item-copy! function) +;; (define-extern anim-test-obj-item-valid? function) +;; (define-extern anim-test-obj-remove-invalid function) +;; (define-extern anim-tester-real-post function) +;; (define-extern anim-tester-post function) +;; (define-extern anim-tester-update-anim-info function) +;; (define-extern anim-tester-reset function) +;; (define-extern anim-tester-disp-frame-num function) +;; (define-extern anim-tester-standard-event-handler function) +;; (define-extern anim-test-obj-list-handler function) +;; (define-extern anim-test-anim-list-handler function) +;; (define-extern anim-test-sequence-list-handler function) +;; (define-extern anim-test-field-highlight-lw object) +;; (define-extern anim-tester-adjust-frame function) +;; (define-extern anim-tester-pick-item-setup function) +;; (define-extern anim-test-seq-mark-as-edited function) +;; (define-extern anim-test-edit-seq-insert-item function) +;; (define-extern anim-test-edit-sequence-list-handler function) +;; (define-extern anim-tester-interface function) +;; (define-extern anim-tester-get-playing-item function) +;; (define-extern initialize-anim-tester function) +;; (define-extern anim-tester-string-get-frame!! function) +;; (define-extern anim-tester-load-object-seqs function) +;; (define-extern anim-tester-save-object-seqs function) +;; (define-extern anim-tester-save-all-objects function) +;; (define-extern anim-tester-add-newobj function) +;; (define-extern anim-tester-stop function) +;; (define-extern anim-tester-start function) ;; (function symbol) +;; (define-extern anim-tester-add-object function) ;; (function string none) +;; (define-extern anim-tester-set-name function) +;; (define-extern anim-tester-add-sequence function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; viewer ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype viewer (process-drawable) + ((janim art-joint-anim :offset-assert 248) ;; guessed by decompiler + ) + :method-count-assert 50 + :size-assert #xfc + :flag-assert #x32007000fc + (:states + viewer-process ;; associated process guessed by decompiler, old: (state viewer) + ) + ) +|# + +;; (define-extern *viewer-sg* skeleton-group) ;; skeleton-group +;; (define-extern viewer-string object) ;; string +;; (define-extern viewer-ja-name object) ;; string +;; (define-extern viewer-geo-name object) ;; string +;; (define-extern actor-get-arg! function) ;; (function string string string symbol) +;; (define-extern art-part-name function) ;; (function string string) +;; (define-extern init-viewer function) ;; (function string string object :behavior viewer) +;; (define-extern init-viewer-for-other function) ;; (function string vector entity-actor object :behavior viewer) +;; (define-extern add-a-bunch function) ;; (function string int int float process-tree entity-actor symbol) +;; (define-extern birth-viewer function) ;; (function process entity-actor object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; part-tester ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype save-memcard (process) + ((name basic :offset-assert 4) + ) + :method-count-assert 19 + :size-assert #x94 + :flag-assert #x1300100094 + (:methods + (save-memcard-method-9 () none) ;; 9 + (save-memcard-method-10 () none) ;; 10 + (save-memcard-method-11 () none) ;; 11 + (save-memcard-method-12 () none) ;; 12 + (save-memcard-method-13 () none) ;; 13 + (save-memcard-method-14 () none) ;; 14 + ) + (:state-methods + create-file ;; 15 + save-account ;; 18 + error-error ;; 16 + done-done ;; 17 + ) + ) +|# + +#| +(deftype part-tester (process) + ((root trsqv :offset-assert 144) ;; guessed by decompiler + (part sparticle-launch-control :offset-assert 148) ;; guessed by decompiler + (old-group sparticle-launch-group :offset-assert 152) ;; guessed by decompiler + ) + :method-count-assert 15 + :size-assert #x9c + :flag-assert #xf0010009c + (:methods + (part-tester-method-9 () none) ;; 9 + (part-tester-method-10 () none) ;; 10 + (part-tester-method-11 () none) ;; 11 + (part-tester-method-12 () none) ;; 12 + (part-tester-method-13 () none) ;; 13 + (part-tester-method-14 () none) ;; 14 + ) + (:states + part-tester-idle ;; associated process guessed by decompiler, old: (state part-tester) + ) + ) +|# + +#| +(deftype test-process (process-focusable) + ((state-time uint64 :offset-assert 240) + (effect uint8 :offset-assert 264) + (sound-id uint32 :offset-assert 268) + ) + :method-count-assert 59 + :size-assert #x110 + :flag-assert #x3b00800110 + ) +|# + +;; (define-extern save-memcard-init-by-other function) +;; (define-extern *debug-save-memcard-dead-pool* object) +;; (define-extern start-save-memcard function) +;; (define-extern *part-tester-name* object) ;; string +;; (define-extern part-tester-init-by-other function) ;; (function vector none :behavior process-drawable) +;; (define-extern *debug-part-dead-pool* object) ;; dead-pool +;; (define-extern start-part function) ;; (function none) +;; (define-extern test-idle state) +;; (define-extern test-process-init-by-other function) +;; (define-extern start-test function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; manipulator ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype manipulator (structure) + ((action manipulator-action :offset-assert 0) ;; guessed by decompiler + (mode manipulator-mode :offset-assert 4) ;; guessed by decompiler + (dragging? symbol :offset-assert 8) ;; guessed by decompiler + (position vector :inline :offset-assert 16) + (speed vector :inline :offset-assert 32) + (drag-ref-position vector :inline :offset-assert 48) + (mouse-ref-position vector :inline :offset-assert 64) + (mat matrix :inline :offset-assert 80) + (rotate-ref int32 :offset-assert 144) + (angles euler-angles :inline :offset-assert 160) + ) + :method-count-assert 15 + :size-assert #xb0 + :flag-assert #xf000000b0 + (:methods + (manipulator-method-9 () none) ;; 9 ;; (set-mode (_type_ manipulator-mode) none) + (manipulator-method-10 () none) ;; 10 ;; (manipulator-method-10 (_type_) none) + (manipulator-method-11 () none) ;; 11 ;; (manipulator-method-11 (_type_) none) + (manipulator-method-12 () none) ;; 12 ;; (manipulator-method-12 (_type_ vector) none) + (manipulator-method-13 () none) ;; 13 ;; (manipulator-method-13 (_type_ vector vector) none) + (manipulator-method-14 () none) ;; 14 ;; (manipulator-method-14 (_type_) none) + ) + ) +|# + +;; (define-extern draw-axis function) ;; (function vector vector float float rgba none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; editable-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype editable-region (basic) + ((changed symbol :offset-assert 4) ;; guessed by decompiler + (locked symbol :offset-assert 8) ;; guessed by decompiler + (id uint64 :offset-assert 16) + (filter editable-filter :offset-assert 24) ;; guessed by decompiler + (tree symbol :offset-assert 28) ;; guessed by decompiler + (level string :offset-assert 32) ;; guessed by decompiler + (on-enter string :offset-assert 36) ;; guessed by decompiler + (on-inside string :offset-assert 40) ;; guessed by decompiler + (on-exit string :offset-assert 44) ;; guessed by decompiler + ) + :method-count-assert 13 + :size-assert #x30 + :flag-assert #xd00000030 + ;; field on-enter uses ~A with a signed load. field on-inside uses ~A with a signed load. field on-exit uses ~A with a signed load. + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type) _type_) + (editable-region-method-9 () none) ;; 9 ;; (editable-region-method-9 () none) + (editable-region-method-10 () none) ;; 10 ;; (editable-region-method-10 () none) + (editable-region-method-11 () none) ;; 11 ;; (editable-region-method-11 () none) + (editable-region-method-12 () none) ;; 12 ;; (editable-region-method-12 () none) + ) + ) +|# + +#| +(deftype editable (basic) + ((flags editable-flag :offset-assert 4) + (name string :offset-assert 8) ;; guessed by decompiler + (id uint32 :offset-assert 12) + (region editable-region :offset-assert 16) ;; guessed by decompiler + (owner pair :offset-assert 20) ;; guessed by decompiler + (prefix basic :offset-assert 24) + ) + :method-count-assert 36 + :size-assert #x1c + :flag-assert #x240000001c + (:methods + (editable-method-9 () none) ;; 9 ;; (editable-method-9 () none) + (editable-method-10 () none) ;; 10 ;; (editable-method-10 () none) + (editable-method-11 () none) ;; 11 ;; (editable-method-11 () none) + (editable-method-12 () none) ;; 12 ;; (editable-method-12 () none) + (editable-method-13 () none) ;; 13 ;; (editable-method-13 () none) + (editable-method-14 () none) ;; 14 ;; (editable-method-14 () none) + (editable-method-15 () none) ;; 15 ;; (editable-method-15 () none) + (editable-method-16 () none) ;; 16 ;; (editable-method-16 () none) + (editable-method-17 () none) ;; 17 ;; (editable-method-17 () none) + (editable-method-18 () none) ;; 18 ;; (editable-method-18 () none) + (editable-method-19 () none) ;; 19 ;; (editable-method-19 () none) + (editable-method-20 () none) ;; 20 ;; (editable-method-20 () none) + (editable-method-21 () none) ;; 21 ;; (editable-method-21 () none) + (editable-method-22 () none) ;; 22 ;; (editable-method-22 () none) + (editable-method-23 () none) ;; 23 ;; (editable-method-23 () none) + (editable-method-24 () none) ;; 24 ;; (editable-method-24 () none) + (editable-method-25 () none) ;; 25 ;; (editable-method-25 () none) + (editable-method-26 () none) ;; 26 ;; (editable-method-26 () none) + (editable-method-27 () none) ;; 27 ;; (editable-method-27 () none) + (editable-method-28 () none) ;; 28 ;; (editable-method-28 () none) + (editable-method-29 () none) ;; 29 ;; (editable-method-29 () none) + (editable-method-30 () none) ;; 30 ;; (editable-method-30 () none) + (editable-method-31 () none) ;; 31 ;; (editable-method-31 () none) + (editable-method-32 () none) ;; 32 ;; (editable-method-32 () none) + (editable-method-33 () none) ;; 33 ;; (editable-method-33 () none) + (editable-method-34 () none) ;; 34 ;; (editable-method-34 () none) + (editable-method-35 () none) ;; 35 ;; (editable-method-35 () none) + ) + ) +|# + +#| +(deftype editable-array (basic) + ((allocated-length int32 :offset-assert 4) + (length int32 :offset-assert 8) + (region editable-region :offset-assert 12) ;; guessed by decompiler + (backup-region editable-region :offset-assert 16) ;; guessed by decompiler + (region-lock? symbol :offset-assert 20) ;; guessed by decompiler + (move-lock? symbol :offset-assert 24) ;; guessed by decompiler + (move-speed float :offset-assert 28) + (selection (array editable) :offset-assert 32) ;; guessed by decompiler + (filter editable-filter 2 :offset-assert 36) ;; guessed by decompiler + (target editable :offset-assert 44) ;; guessed by decompiler + (target-mode editable-command :offset-assert 48) ;; guessed by decompiler + (target-command editable-command :offset-assert 52) ;; guessed by decompiler + (target-message string :offset-assert 56) ;; guessed by decompiler + (edit-plane editable-plane :offset-assert 60) ;; guessed by decompiler + (edit-plane-center vector :inline :offset-assert 64) + (edit-plane-normal vector :inline :offset-assert 80) + (level-offset vector :inline :offset-assert 96) + (level-info-id uint32 :offset-assert 112) + (level uint32 :offset-assert 116) ;; guessed by decompiler + (edit-param0 float :offset-assert 120) + (data editable :dynamic :offset-assert 124) ;; guessed by decompiler + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 20 + :size-assert #x7c + :flag-assert #x140000007c + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type int) _type_) + (editable-array-method-9 () none) ;; 9 ;; (editable-array-method-9 () none) + (editable-array-method-10 () none) ;; 10 ;; (editable-array-method-10 () none) + (editable-array-method-11 () none) ;; 11 ;; (editable-array-method-11 () none) + (editable-array-method-12 () none) ;; 12 ;; (editable-array-method-12 () none) + (editable-array-method-13 () none) ;; 13 ;; (editable-array-method-13 () none) + (editable-array-method-14 () none) ;; 14 ;; (editable-array-method-14 () none) + (editable-array-method-15 () none) ;; 15 ;; (editable-array-method-15 () none) + (editable-array-method-16 () none) ;; 16 ;; (editable-array-method-16 () none) + (editable-array-method-17 () none) ;; 17 ;; (editable-array-method-17 () none) + (editable-array-method-18 () none) ;; 18 ;; (editable-array-method-18 () none) + (editable-array-method-19 () none) ;; 19 ;; (editable-array-method-19 () none) + ) + ) +|# + +#| +(deftype editable-point (editable) + ((flags editable-flag :offset-assert 0) + (name string :offset-assert 4) ;; guessed by decompiler + (id uint32 :offset-assert 8) + (region editable-region :offset-assert 12) ;; guessed by decompiler + (owner pair :offset-assert 16) ;; guessed by decompiler + (prefix basic :offset-assert 20) + (radius meters :offset-assert 24) + (trans vector :inline :offset-assert 28) + ) + :method-count-assert 36 + :size-assert #x30 + :flag-assert #x2400000030 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type vector editable-region) _type_) + ) + ) +|# + +#| +(deftype editable-sphere (editable-point) + () + :method-count-assert 36 + :size-assert #x30 + :flag-assert #x2400000030 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type vector float editable-region) _type_) + ) + ) +|# + +#| +(deftype editable-sample (editable-point) + () + :method-count-assert 36 + :size-assert #x30 + :flag-assert #x2400000030 + ) +|# + +#| +(deftype editable-light (editable-sphere) + ((direction vector :inline :offset-assert 44) + (color vector :inline :offset-assert 60) + (decay-start float :offset-assert 76) + (ambient-point-ratio float :offset-assert 80) + (brightness float :offset-assert 84) + (shadow uint32 :offset-assert 44) + (shadows float 5 :offset-assert 88) ;; guessed by decompiler + (shadow-ambi float :offset-assert 88) + (shadow-dir0 float :offset-assert 92) + (shadow-dir1 float :offset-assert 96) + (shadow-dir2 float :offset-assert 100) + (shadow-dir3 float :offset-assert 104) + (alt-level basic :offset-assert 108) + ) + :method-count-assert 36 + :size-assert #x74 + :flag-assert #x2400000074 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type vector float editable-region) _type_) + ) + ) +|# + +#| +(deftype editable-entity (editable-point) + ((angles euler-angles :inline :offset-assert 44) + (idx int32 :offset-assert 60) + ) + :method-count-assert 37 + :size-assert #x44 + :flag-assert #x2500000044 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type vector float editable-region) _type_) + (editable-entity-method-36 () none) ;; 36 ;; (editable-entity-method-36 () none) + ) + ) +|# + +#| +(deftype editable-face (editable) + ((flags editable-flag :offset-assert 0) + (name string :offset-assert 4) ;; guessed by decompiler + (id uint32 :offset-assert 8) + (region editable-region :offset-assert 12) ;; guessed by decompiler + (owner pair :offset-assert 16) ;; guessed by decompiler + (prefix basic :offset-assert 20) + (length int32 :offset-assert 24) + (normal vector :inline :offset-assert 28) + (center vector :inline :offset-assert 44) + (vertex editable-point 6 :offset-assert 60) ;; guessed by decompiler + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 38 + :size-assert #x58 + :flag-assert #x2600000058 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type editable-region) _type_) + (editable-face-method-36 () none) ;; 36 ;; (editable-face-method-36 () none) + (editable-face-method-37 () none) ;; 37 ;; (editable-face-method-37 () none) + ) + ) +|# + +#| +(deftype editable-plane (editable) + ((flags editable-flag :offset-assert 0) + (name string :offset-assert 4) ;; guessed by decompiler + (id uint32 :offset-assert 8) + (region editable-region :offset-assert 12) ;; guessed by decompiler + (owner pair :offset-assert 16) ;; guessed by decompiler + (prefix basic :offset-assert 20) + (length int32 :offset-assert 24) + (radius meters :offset-assert 28) + (vertex editable-point 2 :offset-assert 32) ;; guessed by decompiler + (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ) + :method-count-assert 38 + :size-assert #x2c + :flag-assert #x260000002c + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type editable-region) _type_) + (editable-plane-method-36 () none) ;; 36 ;; (editable-plane-method-36 () none) + (editable-plane-method-37 () none) ;; 37 ;; (editable-plane-method-37 () none) + ) + ) +|# + +#| +(deftype editable-player (process-drawable) + ((current editable-array :offset-assert 248) ;; guessed by decompiler + (current-command uint32 :offset-assert 252) + (select-command function :offset-assert 256) ;; guessed by decompiler + (drag-command uint32 :offset-assert 260) + (extra-command function :offset-assert 264) ;; guessed by decompiler + (left-handed basic :offset-assert 268) + (light-names basic :offset-assert 272) + (external-cam-mode symbol :offset-assert 276) ;; guessed by decompiler + (command editable-command 6 :offset-assert 280) ;; guessed by decompiler + (close-menu-time uint64 :offset-assert 304) ;; time-frame + (mouse-pos vector :inline :offset-assert 320) + (mouse-end vector :inline :offset-assert 336) + (manipulator manipulator :inline :offset-assert 352) + (mouse-box vector 2 :offset-assert 528) ;; guessed by decompiler + (mouse-hit vector :inline :offset-assert 560) + (mouse-normal vector :inline :offset-assert 576) + (float-variable float :offset-assert 592) + (float-step float :offset-assert 596) + (float-max float :offset-assert 600) + (float-min float :offset-assert 604) + (float-id uint32 :offset-assert 608) + ) + :method-count-assert 54 + :size-assert #x264 + :flag-assert #x3601e00264 + (:methods + (editable-player-method-50 () none) ;; 50 + (editable-player-method-51 () none) ;; 51 + (editable-player-method-52 () none) ;; 52 + (editable-player-method-53 () none) ;; 53 + ) + ) +|# + +#| +(deftype editable-work (basic) + ((num-found int16 :offset-assert 4) + (last-found int16 :offset-assert 6) + (last-x float :offset-assert 8) + (last-y float :offset-assert 12) + (hide symbol :offset-assert 16) ;; guessed by decompiler + (found editable 256 :offset-assert 20) ;; guessed by decompiler + (dists uint32 256 :offset-assert 1044) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x814 + :flag-assert #x900000814 + ) +|# + +;; (define-extern *editable-temp-id* object) ;; int +;; (define-extern *editable-default-name* object) ;; string +;; (define-extern editable-command->string function) ;; (function editable-command string) +;; (define-extern editable-filter->string function) ;; (function editable-filter basic string) +;; (define-extern *editable-work* object) ;; editable-work +;; (define-extern *editable* object) ;; (pointer editable-player) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; editable ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern common-owner function) +;; (define-extern update-light-sphere-from-editable-light function) +;; (define-extern load-editable-lights function) +;; (define-extern *editable-sample-region* object) +;; (define-extern *editable-light-region* object) +;; (define-extern *editable-entity-region* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; editable-player ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern cleanup-selection function) +;; (define-extern insert-box function) +;; (define-extern insert-wall function) +;; (define-extern update-manipulator-position function) +;; (define-extern execute-select function) +;; (define-extern execute-mouse-move function) +;; (define-extern execute-move function) +;; (define-extern get-light-value function) +;; (define-extern set-light-value function) +;; (define-extern keybd-set-time-of-day! function) +;; (define-extern lookup-bsp-by-name function) +;; (define-extern editable-player-init function) ;; (function symbol none :behavior editable-player) +;; (define-extern set-editable-name function) +;; (define-extern select-editable-by-name function) +;; (define-extern *editable-menu-context* object) ;; debug-menu-context +;; (define-extern editable-menu-command function) +;; (define-extern editable-menu-command-no-close function) +;; (define-extern dm-region-tree-pick-func function) +;; (define-extern dm-editable-flag-pick-func function) +;; (define-extern dm-editable-filter0-pick-func function) +;; (define-extern dm-editable-filter1-pick-func function) +;; (define-extern dm-editable-light-float-func function) +;; (define-extern dm-cam-externalize2 function) +;; (define-extern dm-editable-boolean-toggle-pick-func function) +;; (define-extern editable-menu-context-make-menus function) +;; (define-extern insert-sample-camera function) +;; (define-extern *debug-hook* object) ;; pair + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; mysql-nav-graph ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype mysql-nav-node (structure) + ((mysql-save-flag mysql-save-flag :offset-assert 0) ;; guessed by decompiler + (runtime-id uint32 :offset-assert 4) + (temp-edge-list (inline-array mysql-nav-edge) :offset-assert 8) ;; guessed by decompiler + (level-node-index int32 :offset-assert 12) + (cam-dist float :offset-assert 16) + (visible symbol :offset-assert 20) ;; guessed by decompiler + (nav_node_id uint32 :offset-assert 24) + (nav_graph_id uint32 :offset-assert 28) + (position vector :inline :offset-assert 32) + (level_name symbol :offset-assert 48) ;; guessed by decompiler + (angle float :offset-assert 52) + (radius float :offset-assert 56) + (nav_node_flag nav-node-flag :offset-assert 60) ;; guessed by decompiler + (nav_mesh_id uint32 :offset-assert 64) + (data_int_0 uint32 :offset-assert 68) + (data_int_1 uint32 :offset-assert 72) + ) + :method-count-assert 11 + :size-assert #x4c + :flag-assert #xb0000004c + (:methods + (mysql-nav-node-method-9 () none) ;; 9 ;; (exec-sql! (_type_) symbol) + (mysql-nav-node-method-10 () none) ;; 10 ;; (temp-edge-size (_type_) int) + ) + ) +|# + +#| +(deftype mysql-nav-node-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data mysql-nav-node :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype mysql-nav-edge (structure) + ((mysql-save-flag mysql-save-flag :offset-assert 0) ;; guessed by decompiler + (runtime-id uint32 :offset-assert 4) + (runtime-node-id-1 int32 :offset-assert 8) + (runtime-node-id-2 int32 :offset-assert 12) + (temp-next-edge mysql-nav-edge :offset-assert 16) + (nav_edge_id uint32 :offset-assert 20) + (nav_graph_id uint32 :offset-assert 24) + (nav_node_id_1 uint32 :offset-assert 28) + (nav_node_id_2 uint32 :offset-assert 32) + (directionality nav-directionality :offset-assert 36) ;; guessed by decompiler + (speed_limit float :offset-assert 40) + (density float :offset-assert 44) + (traffic_edge_flag int32 :offset-assert 48) + (nav_clock_mask nav-clock-mask :offset-assert 52) ;; guessed by decompiler + (nav_clock_type nav-clock-type :offset-assert 56) ;; guessed by decompiler + (nav_territory_type uint32 :offset-assert 60) + (exclusive_data uint32 :offset-assert 64) + (width float :offset-assert 68) + (minimap_edge_flag int32 :offset-assert 72) + ) + :method-count-assert 10 + :size-assert #x4c + :flag-assert #xa0000004c + (:methods + (mysql-nav-edge-method-9 () none) ;; 9 ;; (mysql-nav-edge-method-9 () none) + ) + ) +|# + +#| +(deftype mysql-nav-edge-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data mysql-nav-edge :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype mysql-nav-visnode (structure) + ((mysql-save-flag mysql-save-flag :offset-assert 0) ;; guessed by decompiler + (runtime-node-id int32 :offset-assert 4) + (runtime-edge-id int32 :offset-assert 8) + (nav_visnode_id uint32 :offset-assert 12) + (nav_graph_id uint32 :offset-assert 16) + (nav_node_id uint32 :offset-assert 20) + (nav_edge_id uint32 :offset-assert 24) + ) + :method-count-assert 10 + :size-assert #x1c + :flag-assert #xa0000001c + (:methods + (mysql-nav-visnode-method-9 () none) ;; 9 ;; (mysql-nav-visnode-method-9 () none) + ) + ) +|# + +#| +(deftype mysql-nav-visnode-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data mysql-nav-visnode :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype mysql-nav-pov-conn (structure) + ((runtime-node-id-1 int32 :offset-assert 0) + (runtime-node-id-2 int32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype mysql-nav-graph-level-info (structure) + ((level symbol :offset-assert 0) ;; guessed by decompiler + (level-id uint32 :offset-assert 4) + (node-count int32 :offset-assert 8) + (branch-count int32 :offset-assert 12) + (to-link-count int32 :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) +|# + +#| +(deftype mysql-nav-graph (basic) + ((nav_graph_id uint32 :offset-assert 4) + (graph-type basic :offset-assert 8) + (node-array mysql-nav-node-array :offset-assert 12) ;; guessed by decompiler + (edge-array mysql-nav-edge-array :offset-assert 16) ;; guessed by decompiler + (visnode-array mysql-nav-visnode-array :offset-assert 20) ;; guessed by decompiler + (pov-conn-array uint32 :offset-assert 24) + (pov-conn-array-length int32 :offset-assert 28) + (level-info-array-length int32 :offset-assert 32) + (level-info-last-lookup int32 :offset-assert 36) + (level-info-array mysql-nav-graph-level-info 32 :offset-assert 40) ;; guessed by decompiler + ) + :method-count-assert 24 + :size-assert #x428 + :flag-assert #x1800000428 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type string) _type_) + (mysql-nav-graph-method-9 () none) ;; 9 ;; (init-from-sql! (_type_ string string) symbol) + (mysql-nav-graph-method-10 () none) ;; 10 ;; (exec-sql! (_type_) symbol) + (mysql-nav-graph-method-11 () none) ;; 11 ;; (indexof-nav-node (_type_ int) int) + (mysql-nav-graph-method-12 () none) ;; 12 ;; (indexof-nav-edge (_type_ int) int) + (mysql-nav-graph-method-13 () none) ;; 13 ;; (mysql-nav-graph-method-13 (_type_) none) + (mysql-nav-graph-method-14 () none) ;; 14 ;; (mysql-nav-graph-method-14 (_type_) none) + (mysql-nav-graph-method-15 () none) ;; 15 ;; (mysql-nav-graph-method-15 (_type_) none) + (mysql-nav-graph-method-16 () none) ;; 16 ;; (mysql-nav-graph-method-16 (_type_) none) + (mysql-nav-graph-method-17 () none) ;; 17 ;; (mysql-nav-graph-method-17 (_type_) none) + (mysql-nav-graph-method-18 () none) ;; 18 ;; (lookup-level-info2 (_type_ mysql-nav-node symbol) mysql-nav-graph-level-info) + (mysql-nav-graph-method-19 () none) ;; 19 ;; (mysql-nav-graph-method-19 (_type_) none) + (mysql-nav-graph-method-20 () none) ;; 20 ;; (mysql-nav-graph-method-20 (_type_) none) + (mysql-nav-graph-method-21 () none) ;; 21 ;; (mysql-nav-graph-method-21 (_type_) none) + (mysql-nav-graph-method-22 () none) ;; 22 ;; (mysql-nav-graph-method-22 (_type_) none) + (mysql-nav-graph-method-23 () none) ;; 23 ;; (mysql-nav-graph-method-23 (_type_) none) + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; nav-graph-editor ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype nav-graph-command (structure) + ((com-type uint32 :offset-assert 0) + (id int32 :offset-assert 4) + (index int32 :offset-assert 8) + (move-vec vector :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype nav-graph-command-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data nav-graph-command :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype nav-graph-editor (process) + ((nav-graph mysql-nav-graph :offset-assert 144) ;; guessed by decompiler + (mode symbol :offset-assert 148) ;; guessed by decompiler + (command-id int32 :offset-assert 152) + (max-command int32 :offset-assert 156) + (selected-index int32 :offset-assert 160) + (selected-dist float :offset-assert 164) + (selected-node-edge? symbol :offset-assert 168) ;; guessed by decompiler + (closest-node int32 :offset-assert 172) + (dist-closest-node float :offset-assert 176) + (closest-edge int32 :offset-assert 180) + (dist-closest-edge float :offset-assert 184) + (mouse-pos vector :inline :offset-assert 192) + (mouse-hit vector :inline :offset-assert 208) + (mouse-hit-pick vector :inline :offset-assert 224) + (mouse-normal vector :inline :offset-assert 240) + (mouse-spos-hold vector :inline :offset-assert 256) + (edge-src int32 :offset-assert 272) + (edge-dst int32 :offset-assert 276) + (edge-visibility int32 :offset-assert 280) + (vehicle-edit-mode symbol :offset-assert 284) ;; guessed by decompiler + (hover-edit-mode symbol :offset-assert 288) ;; guessed by decompiler + (plane-height float :offset-assert 292) + (plane-height-hold float :offset-assert 296) + (minimap-make-mode uint8 :offset-assert 300) + (clipping-dist float :offset-assert 304) + (default-node mysql-nav-node :inline :offset-assert 320) + (default-edge mysql-nav-edge :inline :offset-assert 396) + (command-array nav-graph-command-array :offset-assert 472) ;; guessed by decompiler + ) + :method-count-assert 69 + :size-assert #x1dc + :flag-assert #x45015001dc + (:methods + (nav-graph-editor-method-9 () none) ;; 9 + (nav-graph-editor-method-10 () none) ;; 10 + (nav-graph-editor-method-11 () none) ;; 11 + (nav-graph-editor-method-12 () none) ;; 12 + (nav-graph-editor-method-13 () none) ;; 13 + (nav-graph-editor-method-14 () none) ;; 14 ;; (move-node () _type_ :state) + (nav-graph-editor-method-30 () none) ;; 30 ;; (nav-graph-editor-method-30 () none) + (nav-graph-editor-method-31 () none) ;; 31 ;; (nav-graph-editor-method-31 () none) + (nav-graph-editor-method-32 () none) ;; 32 ;; (nav-graph-editor-method-32 () none) + (nav-graph-editor-method-33 () none) ;; 33 ;; (nav-graph-editor-method-33 () none) + (nav-graph-editor-method-34 () none) ;; 34 ;; (nav-graph-editor-method-34 () none) + (nav-graph-editor-method-35 () none) ;; 35 ;; (nav-graph-editor-method-35 () none) + (nav-graph-editor-method-36 () none) ;; 36 ;; (nav-graph-editor-method-36 () none) + (nav-graph-editor-method-37 () none) ;; 37 ;; (nav-graph-editor-method-37 () none) + (nav-graph-editor-method-38 () none) ;; 38 ;; (nav-graph-editor-method-38 () none) + (nav-graph-editor-method-39 () none) ;; 39 ;; (nav-graph-editor-method-39 () none) + (nav-graph-editor-method-40 () none) ;; 40 ;; (nav-graph-editor-method-40 () none) + (nav-graph-editor-method-41 () none) ;; 41 ;; (nav-graph-editor-method-41 () none) + (nav-graph-editor-method-42 () none) ;; 42 ;; (nav-graph-editor-method-42 () none) + (nav-graph-editor-method-43 () none) ;; 43 ;; (nav-graph-editor-method-43 () none) + (nav-graph-editor-method-44 () none) ;; 44 ;; (nav-graph-editor-method-44 () none) + (nav-graph-editor-method-45 () none) ;; 45 ;; (nav-graph-editor-method-45 () none) + (nav-graph-editor-method-46 () none) ;; 46 ;; (nav-graph-editor-method-46 () none) + (nav-graph-editor-method-47 () none) ;; 47 ;; (nav-graph-editor-method-47 () none) + (nav-graph-editor-method-48 () none) ;; 48 ;; (nav-graph-editor-method-48 () none) + (nav-graph-editor-method-49 () none) ;; 49 ;; (nav-graph-editor-method-49 () none) + (nav-graph-editor-method-50 () none) ;; 50 ;; (nav-graph-editor-method-50 () none) + (nav-graph-editor-method-51 () none) ;; 51 ;; (nav-graph-editor-method-51 () none) + (nav-graph-editor-method-52 () none) ;; 52 ;; (nav-graph-editor-method-52 () none) + (nav-graph-editor-method-53 () none) ;; 53 ;; (nav-graph-editor-method-53 () none) + (nav-graph-editor-method-54 () none) ;; 54 ;; (nav-graph-editor-method-54 () none) + (nav-graph-editor-method-55 () none) ;; 55 ;; (nav-graph-editor-method-55 () none) + (nav-graph-editor-method-56 () none) ;; 56 ;; (nav-graph-editor-method-56 () none) + (nav-graph-editor-method-57 () none) ;; 57 ;; (nav-graph-editor-method-57 () none) + (nav-graph-editor-method-58 () none) ;; 58 ;; (nav-graph-editor-method-58 () none) + (nav-graph-editor-method-59 () none) ;; 59 ;; (nav-graph-editor-method-59 () none) + (nav-graph-editor-method-60 () none) ;; 60 ;; (nav-graph-editor-method-60 () none) + (nav-graph-editor-method-61 () none) ;; 61 ;; (nav-graph-editor-method-61 () none) + (nav-graph-editor-method-62 () none) ;; 62 ;; (nav-graph-editor-method-62 () none) + (nav-graph-editor-method-63 () none) ;; 63 ;; (nav-graph-editor-method-63 () none) + (nav-graph-editor-method-64 () none) ;; 64 ;; (nav-graph-editor-method-64 () none) + (nav-graph-editor-method-65 () none) ;; 65 ;; (nav-graph-editor-method-65 () none) + (nav-graph-editor-method-66 () none) ;; 66 ;; (nav-graph-editor-method-66 () none) + (nav-graph-editor-method-67 () none) ;; 67 ;; (nav-graph-editor-method-67 () none) + (nav-graph-editor-method-68 () none) ;; 68 + ) + (:state-methods + adjust-node-angle ;; 23, old: (adjust-node-radius () _type_ :state) + move-node ;; 15, old: (move-plane () _type_ :state) + adjust-plane ;; 20, old: (adjust-it () _type_ :state) + adjust-node-radius ;; 24, old: (adjust-edge-visibility () _type_ :state) + move-plane ;; 16, old: (create () _type_ :state) + create-edge ;; 19, old: (adjust-plane () _type_ :state) + edit-edge ;; 18, old: (create-edge () _type_ :state) + adjust-edge-visibility ;; 25, old: (adjust-edge-width () _type_ :state) + adjust-edge-width ;; 26, old: (adjust-edge-density () _type_ :state) + adjust-edge-density ;; 27, old: (draw-closest-minimap () _type_ :state) + adjust-it ;; 21, old: (adjust-minimap () _type_ :state) + adjust-minimap ;; 22, old: (adjust-node-angle () _type_ :state) + draw-closest-minimap ;; 28, old: (create-pov () _type_ :state) + create ;; 17, old: (edit-edge () _type_ :state) + create-pov ;; 29, old: (nav-graph-editor-method-29 () none) + ) + ) +|# + +;; (define-extern *nav-graph-editor* object) ;; (pointer nav-graph-editor) +;; (define-extern get-node-draw-position function) +;; (define-extern nav-graph-editor-init-by-other function) +;; (define-extern run-nav-graph-editor function) ;; (function symbol (pointer process)) +;; (define-extern get-nav-graph-editor function) ;; (function nav-graph-editor) +;; (define-extern exit-nav-graph-editor function) ;; (function none) +;; (define-extern nav-graph-set-level function) +;; (define-extern set-minimap-edge-flag function) +;; (define-extern set-vehicle-edit-mode function) +;; (define-extern translate-nav-graph function) +;; (define-extern update-nav-meshes function) +;; (define-extern delete-node-nav-mesh function) +;; (define-extern smooth-nav-graph function) +;; (define-extern update-height function) +;; (define-extern update-width function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; nav-mesh-editor-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; vector-array is already defined! + +#| +(deftype int16-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data int16 :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype nav-mesh-poly (structure) + ((poly-id uint32 :offset-assert 0) + (flags uint32 :offset-assert 4) + (index basic :offset-assert 8) + (insert-pos uint32 :offset-assert 12) + ) + :method-count-assert 15 + :size-assert #x10 + :flag-assert #xf00000010 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type) _type_) + (nav-mesh-poly-method-9 () none) ;; 9 ;; (nav-mesh-poly-method-9 () none) + (nav-mesh-poly-method-10 () none) ;; 10 ;; (nav-mesh-poly-method-10 () none) + (nav-mesh-poly-method-11 () none) ;; 11 ;; (nav-mesh-poly-method-11 () none) + (nav-mesh-poly-method-12 () none) ;; 12 ;; (nav-mesh-poly-method-12 () none) + (nav-mesh-poly-method-13 () none) ;; 13 ;; (nav-mesh-poly-method-13 () none) + (nav-mesh-poly-method-14 () none) ;; 14 ;; (nav-mesh-poly-method-14 () none) + ) + ) +|# + +#| +(deftype nav-mesh-poly-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data nav-mesh-poly :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype nav-mesh-tri-quad (structure) + ((indices int32 4 :offset-assert 0) ;; guessed by decompiler + (poly uint32 :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) +|# + +#| +(deftype nav-mesh-tri-quad-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data nav-mesh-tri-quad :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype nav-mesh-editable (structure) + ((flags uint32 :offset-assert 0) + (verts basic :offset-assert 4) + (tris basic :offset-assert 8) + (quads nav-mesh-tri-quad-array :offset-assert 12) ;; guessed by decompiler + (navmesh-id uint32 :offset-assert 16) + (idx uint32 :offset-assert 20) + (level-name symbol :offset-assert 24) ;; guessed by decompiler + (level-id uint32 :offset-assert 28) + (polys nav-mesh-poly-array :offset-assert 32) ;; guessed by decompiler + (selected-poly uint32 :offset-assert 36) + ) + :method-count-assert 19 + :size-assert #x28 + :flag-assert #x1300000028 + (:methods + (nav-mesh-editable-method-9 () none) ;; 9 ;; (nav-mesh-editable-method-9 () none) + (nav-mesh-editable-method-10 () none) ;; 10 ;; (nav-mesh-editable-method-10 () none) + (nav-mesh-editable-method-11 () none) ;; 11 ;; (nav-mesh-editable-method-11 () none) + (nav-mesh-editable-method-12 () none) ;; 12 ;; (nav-mesh-editable-method-12 () none) + (nav-mesh-editable-method-13 () none) ;; 13 ;; (nav-mesh-editable-method-13 () none) + (nav-mesh-editable-method-14 () none) ;; 14 ;; (nav-mesh-editable-method-14 () none) + (nav-mesh-editable-method-15 () none) ;; 15 ;; (nav-mesh-editable-method-15 () none) + (nav-mesh-editable-method-16 () none) ;; 16 ;; (nav-mesh-editable-method-16 () none) + (nav-mesh-editable-method-17 () none) ;; 17 ;; (nav-mesh-editable-method-17 () none) + (nav-mesh-editable-method-18 () none) ;; 18 ;; (nav-mesh-editable-method-18 () none) + ) + ) +|# + +#| +(deftype nav-mesh-editable-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data nav-mesh-editable :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype nav-mesh-editor-undo (structure) + ((current-nav-mesh nav-mesh-editable :offset-assert 0) + (selected-poly uint32 :offset-assert 4) + (index basic :offset-assert 8) + (insert-pos uint32 :offset-assert 12) + (verts basic :offset-assert 16) + ) + :method-count-assert 10 + :size-assert #x14 + :flag-assert #xa00000014 + (:methods + (new (symbol type) _type_) ;; 0 ;; (new (symbol type) _type_) + (nav-mesh-editor-undo-method-9 () none) ;; 9 ;; (nav-mesh-editor-undo-method-9 () none) + ) + ) +|# + +#| +(deftype nav-mesh-editor-undo-array (inline-array-class) + ((length int32 :offset-assert 4) + (allocated-length int32 :offset-assert 8) + (data nav-mesh-editor-undo :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 14 + :size-assert #x10 + :flag-assert #xe00000010 + ) +|# + +#| +(deftype nav-mesh-editor (process-drawable) + ((close-menu-time uint64 :offset-assert 248) + (external-cam-mode basic :offset-assert 256) + (mouse-pressed uint64 :offset-assert 264) + (mouse-screen-pos vector :inline :offset-assert 272) + (mouse-pos vector :inline :offset-assert 288) + (mouse-end vector :inline :offset-assert 304) + (mouse-hit vector :inline :offset-assert 320) + (mouse-hit-pick vector :inline :offset-assert 336) + (mouse-snap vector :inline :offset-assert 352) + (mouse-normal vector :inline :offset-assert 368) + (mouse-collide basic :offset-assert 384) + (mouse-tumble-dist float :offset-assert 388) + (mouse-tumble vector :inline :offset-assert 400) + (manipulator-pos vector :inline :offset-assert 416) + (manipulator-back-pos vector :inline :offset-assert 432) + (lock-action basic :offset-assert 448) + (mouse-action uint32 :offset-assert 452) + (mouse-action-pos-ref vector :inline :offset-assert 464) + (nav-meshes basic :offset-assert 480) + (current-nav-mesh nav-mesh-editable :offset-assert 484) + (manipulator manipulator :inline :offset-assert 496) + (level-name basic :offset-assert 672) + (level-id uint32 :offset-assert 676) + (undo-min uint32 :offset-assert 680) + (undo-id uint32 :offset-assert 684) + (undo-max uint32 :offset-assert 688) + (undos basic :offset-assert 692) + (hide-unselected basic :offset-assert 696) + (allow-snap basic :offset-assert 700) + ) + :method-count-assert 58 + :size-assert #x2c0 + :flag-assert #x3a023002c0 + (:methods + (nav-mesh-editor-method-50 () none) ;; 50 + (nav-mesh-editor-method-51 () none) ;; 51 + (nav-mesh-editor-method-52 () none) ;; 52 + (nav-mesh-editor-method-53 () none) ;; 53 + (nav-mesh-editor-method-54 () none) ;; 54 + (nav-mesh-editor-method-55 () none) ;; 55 + (nav-mesh-editor-method-56 () none) ;; 56 + (nav-mesh-editor-method-57 () none) ;; 57 + ) + ) +|# + +;; (define-extern *nav-mesh-editor* object) ;; nav-mesh-editor + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; nav-mesh-editor ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype triangulation-vert (structure) + ((index uint32 :offset-assert 0) + (ear? basic :offset-assert 4) + (score float :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xc + :flag-assert #x90000000c + ) +|# + +;; (define-extern snap-level-navmesh function) +;; (define-extern mouse-intersect-triangle function) +;; (define-extern *clean-vertex-array* object) +;; (define-extern *clean-index-array* object) +;; (define-extern poly-flag-to-string function) +;; (define-extern point-in-cone function) +;; (define-extern segment-in-cone function) +;; (define-extern point-in-triangle function) +;; (define-extern segments-intersect function) +;; (define-extern is-diagonal function) +;; (define-extern *verts-buf-1* object) +;; (define-extern *verts-buf-2* object) +;; (define-extern draw-square-point function) +;; (define-extern get-level-id function) +;; (define-extern nav-mesh-editor-new function) +;; (define-extern nav-delete function) +;; (define-extern nav-mesh-editor-translate function) +;; (define-extern nav-mesh-editor-rotate-y function) +;; (define-extern nav-mesh-editor-load function) +;; (define-extern nav-mesh-editor-set-level function) +;; (define-extern nav-set-lev function) +;; (define-extern nav-set-flag function) +;; (define-extern nav-mesh-editor-init function) ;; (function none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; sampler ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *sampler-mem* object) +;; (define-extern *sampler-compare* object) +;; (define-extern *sampler-count* object) +;; (define-extern *sampler-above-range-count* object) +;; (define-extern timer0-handler function) +;; (define-extern sampler-start function) +;; (define-extern sampler-stop function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; default-menu ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *debug-menu-context* object) ;; debug-menu-context +;; (define-extern *dm-cam-mode-interpolation* object) ;; int +;; (define-extern dm-cam-mode-func function) ;; (function (state camera-slave) debug-menu-msg object) +;; (define-extern dm-cam-mode-default function) ;; (function object debug-menu-msg symbol) +;; (define-extern dm-cam-settings-default function) ;; (function object debug-menu-msg symbol) +;; (define-extern dm-cam-settings-func function) ;; (function int debug-menu-msg symbol) +;; (define-extern dm-cam-settings-func-int function) ;; (function int debug-menu-msg int int int) +;; (define-extern dm-cam-externalize function) ;; (function symbol debug-menu-msg symbol) +;; (define-extern dm-cam-setting-float function) ;; (function float debug-menu-msg float float float) +;; (define-extern dm-cam-render-float function) ;; (function int debug-menu-msg float float float) +;; (define-extern dm-subdiv-float function) ;; (function symbol debug-menu-msg float float float) +;; (define-extern dm-subdiv-int function) ;; (function symbol debug-menu-msg int int int) +;; (define-extern dm-select-race-path function) ;; (function object debug-menu-msg int int) +;; (define-extern dm-select-start-record-scene function) +;; (define-extern dm-select-end-record-scene function) +;; (define-extern dm-setting-player1-controls function) +;; (define-extern dm-setting-player2-controls function) +;; (define-extern dm-setting-vehicle-tuning-engine function) +;; (define-extern dm-setting-vehicle-tuning-gearbox function) +;; (define-extern dm-setting-vehicle-tuning-armor function) +;; (define-extern dm-setting-vehicle-tuning-turbo function) +;; (define-extern dm-setting-net-vehicle function) +;; (define-extern dm-setting-net-player-count function) +;; (define-extern dm-setting-language function) ;; (function int debug-menu-msg symbol) +;; (define-extern dm-setting-subtitle-language function) ;; (function int debug-menu-msg symbol) +;; (define-extern dm-setting-audio-language function) ;; (function int debug-menu-msg symbol) +;; (define-extern dm-setting-stereo-mode function) ;; (function object debug-menu-msg symbol) +;; (define-extern dm-current-continue function) ;; (function string debug-menu-msg symbol) +;; (define-extern dm-subdiv-draw-func function) ;; (function int debug-menu-msg symbol) +;; (define-extern dm-scissor-subdiv-draw-func function) ;; (function int debug-menu-msg symbol) +;; (define-extern dm-foreground-subdiv-draw-func function) ;; (function int debug-menu-msg symbol) +;; (define-extern dm-col-rend-on-func function) ;; (function object debug-menu-msg symbol) +;; (define-extern dm-col-cache-on-func function) +;; (define-extern dm-col-rend-outline-func function) ;; (function object debug-menu-msg symbol) +;; (define-extern dm-col-rend-back-face-func function) ;; (function object debug-menu-msg symbol) +;; (define-extern dm-col-rend-normals-func function) ;; (function object debug-menu-msg symbol) +;; (define-extern dm-col-rend-ghost-hidden-func function) ;; (function object debug-menu-msg symbol) +;; (define-extern dm-col-rend-track-func function) ;; (function int debug-menu-msg symbol) +;; (define-extern dm-col-rend-show-only-toggle-func function) ;; (function uint debug-menu-msg symbol) +;; (define-extern dm-col-rend-show-material-func function) +;; (define-extern dm-col-rend-show-event-func function) +;; (define-extern dm-col-rend-show-only-set-func function) ;; (function uint debug-menu-msg symbol) +;; (define-extern dm-col-rend-cspec-toggle function) ;; (function uint debug-menu-msg symbol) +;; (define-extern dm-col-rend-size function) ;; (function object debug-menu-msg float float) +;; (define-extern dm-col-rend-cam-dist function) ;; (function object debug-menu-msg float float) +;; (define-extern dm-ocean-subdiv-draw-func function) ;; (function object debug-menu-msg symbol) +;; (define-extern dm-time-of-day-func function) ;; (function int debug-menu-msg symbol) +;; (define-extern dm-time-of-day-func2 function) ;; (function symbol debug-menu-msg object) +;; (define-extern dm-time-of-day-palette-func function) ;; (function int debug-menu-msg symbol) +;; (define-extern dm-boolean-toggle-pick-func function) ;; (function symbol debug-menu-msg object) +;; (define-extern dm-time-of-day-pick-func function) ;; (function symbol debug-menu-msg symbol) +;; (define-extern dm-stats-memory-func function) ;; (function int debug-menu-msg symbol) +;; (define-extern dm-actor-marks-pick-func function) ;; (function symbol debug-menu-msg symbol) +;; (define-extern dm-debug-actor-lod-dist function) ;; (function int debug-menu-msg float object) +;; (define-extern dm-select-race-pick-func function) ;; (function int debug-menu-msg symbol) +;; (define-extern dm-compact-actor-pick-func function) ;; (function symbol debug-menu-msg symbol) +;; (define-extern dm-actor-vis-pick-func function) ;; (function symbol debug-menu-msg symbol) +;; (define-extern dm-game-mode-pick-func function) ;; (function symbol debug-menu-msg symbol) +;; (define-extern dm-game-feature-toggle-pick-func function) ;; (function int debug-menu-msg symbol) +;; (define-extern dm-game-vehicle-toggle-pick-func function) ;; (function int debug-menu-msg symbol) +;; (define-extern dm-game-secret-toggle-pick-func function) ;; (function int debug-menu-msg symbol) +;; (define-extern display-scene-control-toggle-pick-func function) ;; (function int debug-menu-msg symbol) +;; (define-extern display-scene-control-set-pick-func function) ;; (function scene-controls debug-menu-msg symbol) +;; (define-extern display-bot-marks-toggle-pick-func function) ;; (function int debug-menu-msg symbol) +;; (define-extern display-bot-marks-set-pick-func function) ;; (function bot-marks-controls debug-menu-msg symbol) +;; (define-extern display-race-marks-toggle-pick-func function) ;; (function int debug-menu-msg symbol) +;; (define-extern display-race-marks-set-pick-func function) ;; (function race-marks-controls debug-menu-msg symbol) +;; (define-extern dm-vu1-user-toggle-pick-func function) ;; (function vu1-renderer-mask debug-menu-msg symbol) +;; (define-extern dm-vu1-user-all-pick-func function) ;; (function symbol debug-menu-msg symbol) +;; (define-extern dm-vu1-user-none-pick-func function) ;; (function symbol debug-menu-msg symbol) +;; (define-extern dm-texture-user-toggle-pick-func function) ;; (function int debug-menu-msg symbol) +;; (define-extern dm-texture-user-set-pick-func function) ;; (function int debug-menu-msg symbol) +;; (define-extern dm-strip-lines-toggle-pick-func function) ;; (function int debug-menu-msg symbol) +;; (define-extern dm-strip-lines-set-pick-func function) ;; (function strip-lines-controls debug-menu-msg symbol) +;; (define-extern dm-edit-instance-toggle-pick-func function) ;; (function int debug-menu-msg symbol) +;; (define-extern all-texture-tweak-adjust function) ;; (function texture-page-dir float none) +;; (define-extern dm-float-field-tie-rvanish-func function) ;; (function symbol debug-menu-msg float float float) +;; (define-extern dm-float-field-tie-vanish-far-func function) ;; (function symbol debug-menu-msg float float float) +;; (define-extern dm-bug-report-output-pick-func function) ;; (function symbol debug-menu-msg symbol) +;; (define-extern dm-bug-report-report-pick-func function) ;; (function symbol debug-menu-msg none) +;; (define-extern debug-menu-node? "Slightly incorrect ordering of strings." (function string string symbol)) +(define-extern string<=? "Slightly incorrect ordering of strings." (function string string symbol)) +(define-extern string>=? "Slightly incorrect ordering of strings." (function string string symbol)) +(define-extern *string-tmp-str* string) +(define-extern string-skip-to-char "Advance to the given character." + (function (pointer uint8) uint (pointer uint8))) +(define-extern string-cat-to-last-char "Append append-str to end of base-str, up to the last occurance of char" (function string string uint (pointer uint8))) +(define-extern string-skip-whitespace "Jump over whitespace chars." + (function (pointer uint8) (pointer uint8))) +(define-extern string-suck-up! "Move the string forward so the pointer is now at the beginning." + (function string (pointer uint8) symbol)) +(define-extern string-strip-leading-whitespace! "Strip leading whitespace." (function string symbol)) +(define-extern string-strip-trailing-whitespace! "String trailing whitespace." (function string symbol)) +(define-extern string-strip-whitespace! "Strip whitespace from the beginning and end of a string" (function string symbol)) +(define-extern string-upcase "Uppercase characters. If convert-dash is set, - will be uppercased to _" (function string string symbol none)) +(define-extern string-get-arg!! (function string string symbol)) +(define-extern string->int "Convert string to int." (function string int)) +(define-extern string->float "Convert string to float. Finally implemented!" (function string float)) +(define-extern string-get-int32!! (function (pointer int32) string symbol)) +(define-extern string-get-float!! (function (pointer float) string symbol)) +(define-extern string-get-flag!! (function (pointer symbol) string string string symbol)) +(define-extern string-word-wrap "Wrap lines to specified width." (function string int none)) +(define-extern *debug-draw-pauseable* symbol) +(define-extern *stdcon0* string) +(define-extern *stdcon1* string) +(define-extern *null* string) +(define-extern *stdcon* string) +(define-extern *stdebug* string) +(define-extern *temp-string* string) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; dgo-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype dgo-header (structure) + ((length uint32 :offset-assert 0) + (rootname uint8 60 :offset-assert 4) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +(deftype dgo-entry (structure) + ((offset uint32 :offset-assert 0) + (length uint32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype dgo-file (basic) + ((num-go-files uint32 :offset-assert 4) + (total-length uint32 :offset-assert 8) + (rsvd uint32 :offset-assert 12) + (data uint8 :dynamic :offset-assert 16) ;; guessed by decompiler + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; gstate ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-extern inherit-state (function state state state)) +(define-extern state-type? (function state symbol symbol)) +(define-extern enter-state (function object object object object object object object)) +(define-extern *event-queue* event-message-block-array) +(define-extern send-event-function (function process-tree event-message-block object)) +(define-extern looping-code (function symbol)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-ashelin ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; atoll-ocean ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *ocean-colors-atoll* object) +;; (define-extern *ocean-near-indices-atoll* ocean-near-indices) +;; (define-extern *ocean-trans-indices-atoll* ocean-trans-indices) +;; (define-extern *ocean-mid-indices-atoll* ocean-mid-indices) +;; (define-extern *ocean-mid-masks-atoll* ocean-mid-masks) +;; (define-extern *ocean-map-atoll* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; atoll-effects ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *atoll-water-texture-anim-array* texture-anim-array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; atoll-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *range-atoll-splash-color* curve-color-fast) +;; (define-extern *range-atoll-splash-alpha* curve2d-fast) +;; (define-extern *range-atoll-splash-scale-x* curve2d-fast) +;; (define-extern *range-atoll-splash-scale-y* curve2d-fast) +;; (define-extern *curve-atoll-splash-alpha* curve2d-fast) +;; (define-extern *curve-atoll-splash-scale-x* curve2d-fast) +;; (define-extern *curve-atoll-splash-scale-y* curve2d-fast) +;; (define-extern *part-atoll-ocean-splash-curve-settings* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; atoll-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype atoll-rotor (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype atoll-dish (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-artifact ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype artifact (net-powerup) + ((high-value basic :offset-assert 244) + (original-owner int32 :offset-assert 248) + ) + :method-count-assert 56 + :size-assert #xfc + :flag-assert #x38007000fc + (:state-methods + idle ;; 42 + ) + ) +|# + +#| +(deftype artifact-draw (eco-powerup-draw) + () + :method-count-assert 57 + :size-assert #x110 + :flag-assert #x3900800110 + (:state-methods + idle ;; 50 + ) + ) +|# + +;; (define-extern artifact-init-remote function) +;; (define-extern *msg-map-artifact* array) +;; (define-extern *net-process-class-info-artifact* object) +;; (define-extern artifact-draw-init-remote function) +;; (define-extern *msg-map-artifact-draw* array) +;; (define-extern *net-process-class-info-artifact-draw* object) +;; (define-extern get-artifact-position function) +;; (define-extern get-artifact-color function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ctf-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ctf-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype ctf-base (process-drawable) + ((base-b uint64 :offset-assert 248) + (base-c uint64 :offset-assert 256) + (team uint8 :offset-assert 264) + ) + :method-count-assert 51 + :size-assert #x109 + :flag-assert #x3300800109 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype ctf-base-b (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype ctf-base-c (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype ctf-captured-flag (process-drawable) + ((pos vector :inline :offset-assert 256) + (end vector :inline :offset-assert 272) + (l-control basic :offset-assert 288) + (lightning-time int32 :offset-assert 292) + (arc-sound uint32 :offset-assert 296) + (lightning-on basic :offset-assert 300) + (index int8 :offset-assert 304) + ) + :method-count-assert 51 + :size-assert #x131 + :flag-assert #x3300b00131 + (:state-methods + idle ;; 50 + ) + ) +|# + +;; (define-extern ctf-base-b-init-by-other function) +;; (define-extern ctf-base-b-spawn function) +;; (define-extern ctf-base-c-init-by-other function) +;; (define-extern ctf-base-c-spawn function) +;; (define-extern flag-at-base? function) +;; (define-extern seek-default-size function) +;; (define-extern move-captured-flag function) +;; (define-extern ctf-captured-flag-init-by-other function) +;; (define-extern ctf-captured-flag-spawn function) +;; (define-extern ctf-flag-init-by-other function) +;; (define-extern ctf-flag-spawn function) +;; (define-extern flag-post function) +;; (define-extern movement-post function) +;; (define-extern seek-size function) +;; (define-extern place-on-car function) +;; (define-extern flag-fall function) +;; (define-extern ctf-cap-red function) +;; (define-extern ctf-cap-blue function) +;; (define-extern ctf-drop-flag function) +;; (define-extern ctf-grab-blue function) +;; (define-extern ctf-grab-red function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-ctf ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-ctf-indicators (hud-player-indicators) + () + :method-count-assert 25 + :size-assert #x2c + :flag-assert #x190000002c + ) +|# + +#| +(deftype hud-ctf-indicators-view0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-ctf-indicators-view1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern *hud-ctf-indicators-view0* array) +;; (define-extern *hud-ctf-indicators-view0-proc* object) +;; (define-extern spawn-hud-ctf-indicators-view0 function) +;; (define-extern *hud-ctf-indicators-view1* array) +;; (define-extern *hud-ctf-indicators-view1-proc* object) +;; (define-extern spawn-hud-ctf-indicators-view1 function) +;; (define-extern spawn-unused-hud-ctf-indicators-view function) +;; (define-extern net-player-ctf-init-local function) +;; (define-extern set-flag-event function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-beasthunt ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-hunt-indicators (hud-item-group) + ((last-position vector :inline :offset-assert 48) + ) + :method-count-assert 24 + :size-assert #x40 + :flag-assert #x1800000040 + ) +|# + +#| +(deftype hud-hunt-indicators-view0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-hunt-indicators-view1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern *hud-hunt-indicators-view0* array) +;; (define-extern *hud-hunt-indicators-view0-proc* object) +;; (define-extern spawn-hud-hunt-indicators-view0 function) +;; (define-extern *hud-hunt-indicators-view1* array) +;; (define-extern *hud-hunt-indicators-view1-proc* object) +;; (define-extern spawn-hud-hunt-indicators-view1 function) +;; (define-extern spawn-unused-hud-hunt-indicators-view function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; plow ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype plow (net-enemy) + ((tracking-player uint64 :offset-assert 872) + (do-flip-anim basic :offset-assert 880) + (been-hit basic :offset-assert 884) + (thruster-left basic :offset-assert 888) + (thruster-right basic :offset-assert 892) + (thruster-left-small basic :offset-assert 896) + (thruster-right-small basic :offset-assert 900) + (thruster-main basic :offset-assert 904) + (eye-left basic :offset-assert 908) + (eye-right basic :offset-assert 912) + (eye-left-small basic :offset-assert 916) + (eye-right-small basic :offset-assert 920) + (smoke basic :offset-assert 924) + (smoke2 basic :offset-assert 928) + (engine-sound-id uint32 :offset-assert 932) + ) + :method-count-assert 90 + :size-assert #x3a8 + :flag-assert #x5a032003a8 + (:state-methods + startup ;; 59 + intro-path ;; 87 + following-path ;; 88 + reverse ;; 89 + waiting-respawn ;; 61 + ) + ) +|# + +;; (define-extern *plow-debris-params* debris-static-params) +;; (define-extern *plow-enemy-info* object) +;; (define-extern plow-init-remote function) +;; (define-extern *msg-map-plow* array) +;; (define-extern *net-process-class-info-plow* object) +;; (define-extern *range-plowexplo-color* curve-color-fast) +;; (define-extern *range-plowexplo-alpha* curve2d-fast) +;; (define-extern *range-plowexplo-scale-x* curve2d-fast) +;; (define-extern *range-plowexplo-scale-y* curve2d-fast) +;; (define-extern *curve-plowexplo-alpha* curve2d-fast) +;; (define-extern *curve-plowexplo-scale-x* curve2d-fast) +;; (define-extern *curve-plowexplo-scale-y* curve2d-fast) +;; (define-extern *part-plow-explosion-texture-curve-settings* object) +;; (define-extern do-bob function) +;; (define-extern *plow-avoidance-bbox-rad* object) +;; (define-extern *plow-ignore-if-above* object) +;; (define-extern check-collision-with-other-plows function) +;; (define-extern probe-hits-stuff function) +;; (define-extern do-launch function) +;; (define-extern launch-nearby-players function) +;; (define-extern *flip-speed* object) +;; (define-extern *flip-blend* object) +;; (define-extern plow-trans function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; brdroom-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype brd-pool-water (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; brdroom-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; raceline-weapon ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype raceline-weapon (process-drawable) + ((owner-id int8 :offset-assert 248) + (delta-height float :offset-assert 252) + (birth-time int32 :offset-assert 256) + (minimap connection-minimap :offset-assert 260) + (visible basic :offset-assert 264) + (last-sent-time int32 :offset-assert 268) + (prox basic :offset-assert 168) + (mesh basic :offset-assert 276) + (slice-id int16 :offset-assert 280) + (race-line race-line :offset-assert 284) + (lap-dist float :offset-assert 288) + (lap int32 :offset-assert 292) + (direction vector :inline :offset-assert 304) + (nearest-pos vector :inline :offset-assert 320) + (target-pos vector :inline :offset-assert 336) + (speed float :offset-assert 352) + ) + :method-count-assert 79 + :size-assert #x164 + :flag-assert #x4f00e00164 + (:methods + (raceline-weapon-method-52 () none) ;; 52 + (raceline-weapon-method-53 () none) ;; 53 + (raceline-weapon-method-54 () none) ;; 54 + (raceline-weapon-method-55 () none) ;; 55 + (raceline-weapon-method-56 () none) ;; 56 + (raceline-weapon-method-57 () none) ;; 57 + (raceline-weapon-method-58 () none) ;; 58 + (raceline-weapon-method-59 () none) ;; 59 + (raceline-weapon-method-60 () none) ;; 60 + (raceline-weapon-method-61 () none) ;; 61 + (raceline-weapon-method-62 () none) ;; 62 + (raceline-weapon-method-63 () none) ;; 63 + (raceline-weapon-method-64 () none) ;; 64 + (raceline-weapon-method-65 () none) ;; 65 + (raceline-weapon-method-66 () none) ;; 66 + (raceline-weapon-method-67 () none) ;; 67 + (raceline-weapon-method-68 () none) ;; 68 + (raceline-weapon-method-69 () none) ;; 69 + (raceline-weapon-method-70 () none) ;; 70 + (raceline-weapon-method-71 () none) ;; 71 + (raceline-weapon-method-72 () none) ;; 72 + (raceline-weapon-method-73 () none) ;; 73 + (raceline-weapon-method-74 () none) ;; 74 + (raceline-weapon-method-75 () none) ;; 75 + (raceline-weapon-method-76 () none) ;; 76 + (raceline-weapon-method-77 () none) ;; 77 + (raceline-weapon-method-78 () none) ;; 78 + ) + (:state-methods + tracking ;; 50 + die ;; 51 + ) + ) +|# + +;; (define-extern raceline-weapon-init-remote function) +;; (define-extern *msg-map-raceline-weapon* array) +;; (define-extern *net-process-class-info-raceline-weapon* object) +;; (define-extern raceline-weapon-init-by-other function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wvehicle-weapons-chicken-drone ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype chicken-drone (raceline-weapon) + ((beam-fire-control basic :offset-assert 356) + (machinegun-sound uint32 :offset-assert 360) + (particle-matrix matrix :inline :offset-assert 368) + (sound-id uint32 :offset-assert 432) + ) + :method-count-assert 81 + :size-assert #x1b4 + :flag-assert #x51013001b4 + (:methods + (chicken-drone-method-79 () none) ;; 79 + (chicken-drone-method-80 () none) ;; 80 + ) + (:state-methods + tracking ;; 50 + die ;; 51 + ) + ) +|# + +#| +(deftype chicken-drone-2 (chicken-drone) + () + :method-count-assert 81 + :size-assert #x1b4 + :flag-assert #x51013001b4 + ) +|# + +#| +(deftype seeker (raceline-weapon) + ((sound-id uint32 :offset-assert 356) + (start-speed float :offset-assert 360) + ) + :method-count-assert 79 + :size-assert #x16c + :flag-assert #x4f00e0016c + (:state-methods + die ;; 51 + tracking ;; 50 + ) + ) +|# + +#| +(deftype lightning-point (structure) + ((active basic :offset-assert 0) + (vehicle-id int8 :offset-assert 4) + (sound-id uint32 :offset-assert 8) + (point vector :inline :offset-assert 16) + (l-control basic :offset-assert 32) + (next-test-time int32 :offset-assert 36) + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + ) +|# + +#| +(deftype success-seeker (seeker) + ((last-had-target-time int32 :offset-assert 364) + (lightning-point UNKNOWN 3 :offset-assert 368) + (particle-matrix matrix :inline :offset-assert 512) + (lost-target basic :offset-assert 576) + (center-quad basic :offset-assert 580) + ) + :method-count-assert 84 + :size-assert #x248 + :flag-assert #x5401c00248 + (:methods + (success-seeker-method-79 () none) ;; 79 + (success-seeker-method-80 () none) ;; 80 + (success-seeker-method-81 () none) ;; 81 + (success-seeker-method-82 () none) ;; 82 + (success-seeker-method-83 () none) ;; 83 + ) + (:state-methods + tracking ;; 50 + ) + ) +|# + +#| +(deftype success-seeker-2 (success-seeker) + () + :method-count-assert 84 + :size-assert #x248 + :flag-assert #x5401c00248 + ) +|# + +#| +(deftype turbodash-seeker (seeker) + ((trail-tracker uint64 :offset-assert 368) + (target-id int8 :offset-assert 376) + (center-quad basic :offset-assert 380) + ) + :method-count-assert 81 + :size-assert #x180 + :flag-assert #x5100f00180 + (:methods + (turbodash-seeker-method-79 () none) ;; 79 + (turbodash-seeker-method-80 () none) ;; 80 + ) + (:state-methods + tracking ;; 50 + die ;; 51 + ) + ) +|# + +#| +(deftype v-wpn-success-seeker (vehicle-weapon-slot) + ((next-shot-time int32 :offset-assert 268) + (next-to-fire uint8 :offset-assert 272) + ) + :method-count-assert 60 + :size-assert #x111 + :flag-assert #x3c00900111 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype v-wpn-chicken-drone (vehicle-weapon-slot) + ((next-shot-time int32 :offset-assert 268) + (next-to-fire uint8 :offset-assert 272) + ) + :method-count-assert 60 + :size-assert #x111 + :flag-assert #x3c00900111 + (:state-methods + idle ;; 50 + ) + ) +|# + +;; (define-extern chicken-drone-init-remote function) +;; (define-extern *msg-map-chicken-drone* array) +;; (define-extern *net-process-class-info-chicken-drone* object) +;; (define-extern v-wpn-chicken-drone-rapid-fire-control-params object) +;; (define-extern chicken-drone-spawn function) +;; (define-extern chicken-drone-local-space function) +;; (define-extern chicken-drone-2-init-remote function) +;; (define-extern *msg-map-chicken-drone-2* array) +;; (define-extern *net-process-class-info-chicken-drone-2* object) +;; (define-extern chicken-drone-2-spawn function) +;; (define-extern seeker-init-remote function) +;; (define-extern *msg-map-seeker* array) +;; (define-extern *net-process-class-info-seeker* object) +;; (define-extern success-seeker-init-remote function) +;; (define-extern *msg-map-success-seeker* array) +;; (define-extern *net-process-class-info-success-seeker* object) +;; (define-extern success-seeker-1-spawn function) +;; (define-extern success-seeker-local-space function) +;; (define-extern success-seeker-2-init-remote function) +;; (define-extern *msg-map-success-seeker-2* array) +;; (define-extern *net-process-class-info-success-seeker-2* object) +;; (define-extern success-seeker-2-spawn function) +;; (define-extern turbodash-seeker-init-remote function) +;; (define-extern *msg-map-turbodash-seeker* array) +;; (define-extern *net-process-class-info-turbodash-seeker* object) +;; (define-extern turbodash-seeker-spawn function) +;; (define-extern fire-seeker function) +;; (define-extern fire-drone function) +;; (define-extern spawn-success-seeker-weapon function) +;; (define-extern spawn-chicken-drone-weapon function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; football ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-item-football-lap (hud-item-group) + () + :method-count-assert 24 + :size-assert #x2c + :flag-assert #x180000002c + ) +|# + +#| +(deftype hud-powerbar-slider (hud-item-group) + () + :method-count-assert 25 + :size-assert #x2c + :flag-assert #x190000002c + (:methods + (hud-powerbar-slider-method-24 () none) ;; 24 + ) + ) +|# + +#| +(deftype hud-football-turbojuice-meter (hud-item-group) + () + :method-count-assert 24 + :size-assert #x2c + :flag-assert #x180000002c + ) +|# + +#| +(deftype hud-football-stats-aux-view00 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-football-stats-aux-view01 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-football-stats-aux-view10 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-football-stats-aux-view11 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-football-stats-view-view-0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-football-stats-view-view-1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-football-stats-top-view-view-0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-football-stats-top-view-view-1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-manager-football-intro (basic-manager) + ((start-time int32 :offset-assert 16) + ) + :method-count-assert 12 + :size-assert #x14 + :flag-assert #xc00000014 + ) +|# + +#| +(deftype hud-football-managed-intro0 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-football-managed-intro1 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-football-managed-intro2 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-football-managed-intro3 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-football-managed-intro4 (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype powercell-dispenser-subdraw (process-drawable) + ((fuel-cell uint64 :offset-assert 248) + (luxo vu-lights :inline :offset-assert 256) + (draw-part? basic :offset-assert 368) + ) + :method-count-assert 52 + :size-assert #x174 + :flag-assert #x3400f00174 + (:methods + (powercell-dispenser-subdraw-method-50 () none) ;; 50 + (powercell-dispenser-subdraw-method-51 () none) ;; 51 + ) + ) +|# + +;; (define-extern *powercell-footie-constants* object) +;; (define-extern *vehicle-control-football-throttle-jammed-open* object) +;; (define-extern football-find-borrow-level function) +;; (define-extern *hud-intro-turbo-meter* object) +;; (define-extern *hud-football-stats-aux-view00* array) +;; (define-extern *hud-football-stats-aux-view00-proc* object) +;; (define-extern spawn-hud-football-stats-aux-view00 function) +;; (define-extern *hud-football-stats-aux-view01* array) +;; (define-extern *hud-football-stats-aux-view01-proc* object) +;; (define-extern spawn-hud-football-stats-aux-view01 function) +;; (define-extern spawn-unused-hud-football-stats-aux-view0 function) +;; (define-extern *hud-football-stats-aux-view10* array) +;; (define-extern *hud-football-stats-aux-view10-proc* object) +;; (define-extern spawn-hud-football-stats-aux-view10 function) +;; (define-extern *hud-football-stats-aux-view11* array) +;; (define-extern *hud-football-stats-aux-view11-proc* object) +;; (define-extern spawn-hud-football-stats-aux-view11 function) +;; (define-extern spawn-unused-hud-football-stats-aux-view1 function) +;; (define-extern *hud-football-stats-view-view-0* array) +;; (define-extern *hud-football-stats-view-view-0-proc* object) +;; (define-extern spawn-hud-football-stats-view-view-0 function) +;; (define-extern *hud-football-stats-view-view-1* array) +;; (define-extern *hud-football-stats-view-view-1-proc* object) +;; (define-extern spawn-hud-football-stats-view-view-1 function) +;; (define-extern spawn-hud-football-stats-view function) +;; (define-extern *hud-football-stats-top-view-view-0* array) +;; (define-extern *hud-football-stats-top-view-view-0-proc* object) +;; (define-extern spawn-hud-football-stats-top-view-view-0 function) +;; (define-extern *hud-football-stats-top-view-view-1* array) +;; (define-extern *hud-football-stats-top-view-view-1-proc* object) +;; (define-extern spawn-hud-football-stats-top-view-view-1 function) +;; (define-extern spawn-hud-football-stats-top-view function) +;; (define-extern spawn-hud-football-stats function) +;; (define-extern *hud-football-managed-intro0* array) +;; (define-extern *hud-football-managed-intro0-proc* object) +;; (define-extern spawn-hud-football-managed-intro0 function) +;; (define-extern *hud-football-managed-intro1* array) +;; (define-extern *hud-football-managed-intro1-proc* object) +;; (define-extern spawn-hud-football-managed-intro1 function) +;; (define-extern *hud-football-managed-intro2* array) +;; (define-extern *hud-football-managed-intro2-proc* object) +;; (define-extern spawn-hud-football-managed-intro2 function) +;; (define-extern *hud-football-managed-intro3* array) +;; (define-extern *hud-football-managed-intro3-proc* object) +;; (define-extern spawn-hud-football-managed-intro3 function) +;; (define-extern *hud-football-managed-intro4* array) +;; (define-extern *hud-football-managed-intro4-proc* object) +;; (define-extern spawn-hud-football-managed-intro4 function) +;; (define-extern spawn-unused-hud-football-managed-intro function) +;; (define-extern *pcell-colors* object) +;; (define-extern *pcell-vec* object) +;; (define-extern *pcell-origin?* object) +;; (define-extern birth-func-pcell function) +;; (define-extern net-player-football-handle-pcells function) +;; (define-extern has-powercell? function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; football2 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern spt-func-cell-grabbed function) +;; (define-extern powercell-subdraw-init-by-other function) +;; (define-extern powercell-footie-init-by-other function) +;; (define-extern powercell-footie-update-pos-on-vehicle function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; spargus-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype spar-lighthouse-light (process-drawable) + ((part-tracker uint64 :offset-assert 248) + ) + :method-count-assert 51 + :size-assert #x100 + :flag-assert #x3300700100 + (:state-methods + idle ;; 50 + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; canspar-ocean ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *ocean-colors-canspar* object) +;; (define-extern *ocean-near-indices-canspar* ocean-near-indices) +;; (define-extern *ocean-trans-indices-canspar* ocean-trans-indices) +;; (define-extern *ocean-mid-indices-canspar* ocean-mid-indices) +;; (define-extern *ocean-mid-masks-canspar* ocean-mid-masks) +;; (define-extern *ocean-map-canspar* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; canyon-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern spt-birth-func-brightness-part-canyon-leaf-fall function) +;; (define-extern spt-birth-func-part-canyon-leaf-fall function) +;; (define-extern spt-canyon-check-ground-lie-flat function) +;; (define-extern *range-cynsplash-color* curve-color-fast) +;; (define-extern *range-cynsplash-alpha* curve2d-fast) +;; (define-extern *range-cynsplash-scale-x* curve2d-fast) +;; (define-extern *range-cynsplash-scale-y* curve2d-fast) +;; (define-extern *curve-cynsplash-alpha* curve2d-fast) +;; (define-extern *curve-cynsplash-scale-x* curve2d-fast) +;; (define-extern *curve-cynsplash-scale-y* curve2d-fast) +;; (define-extern *part-canyon-ocean-splash-curve-settings* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; canyon-effects ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *canyona-water-texture-anim-array* texture-anim-array) +;; (define-extern *canyonc-water-texture-anim-array* texture-anim-array) +;; (define-extern *canyone-water-texture-anim-array* texture-anim-array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-time-box ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-time-collected (hud-item-group) + () + :method-count-assert 24 + :size-assert #x2c + :flag-assert #x180000002c + ) +|# + +#| +(deftype time-freeze-clock (hud-clock) + () + :method-count-assert 25 + :size-assert #x48 + :flag-assert #x1900000048 + ) +|# + +#| +(deftype hud-time-box-stats (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern freeze-fade-func function) +;; (define-extern *hud-time-collected-items* array) +;; (define-extern *hud-time-box-stats* array) +;; (define-extern *hud-time-box-stats-proc* object) +;; (define-extern spawn-hud-time-box-stats function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; time-box-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype time-freeze-short-draw (powerup-draw) + ((base-y float :offset-assert 264) + (vehicle-handle uint64 :offset-assert 272) + ) + :method-count-assert 58 + :size-assert #x118 + :flag-assert #x3a00900118 + (:methods + (time-freeze-short-draw-method-57 () none) ;; 57 + ) + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype time-freeze-short (net-powerup) + ((freeze-time uint32 :offset-assert 244) + ) + :method-count-assert 56 + :size-assert #xf8 + :flag-assert #x38007000f8 + ) +|# + +#| +(deftype time-freeze-long-draw (time-freeze-short-draw) + () + :method-count-assert 58 + :size-assert #x128 + :flag-assert #x3a00a00128 + ) +|# + +#| +(deftype time-freeze-long (time-freeze-short) + () + :method-count-assert 56 + :size-assert #xf8 + :flag-assert #x38007000f8 + ) +|# + +#| +(deftype time-freeze-med-draw (time-freeze-short-draw) + () + :method-count-assert 58 + :size-assert #x128 + :flag-assert #x3a00a00128 + ) +|# + +#| +(deftype time-freeze-med (time-freeze-short) + () + :method-count-assert 56 + :size-assert #xf8 + :flag-assert #x38007000f8 + ) +|# + +;; (define-extern *time-freeze-short-debris-params* debris-static-params) +;; (define-extern *time-freeze-med-debris-params* debris-static-params) +;; (define-extern *time-freeze-long-debris-params* debris-static-params) +;; (define-extern time-freeze-short-draw-init-remote function) +;; (define-extern *msg-map-time-freeze-short-draw* array) +;; (define-extern *net-process-class-info-time-freeze-short-draw* object) +;; (define-extern time-freeze-short-init-remote function) +;; (define-extern *msg-map-time-freeze-short* array) +;; (define-extern *net-process-class-info-time-freeze-short* object) +;; (define-extern time-freeze-long-draw-init-remote function) +;; (define-extern *msg-map-time-freeze-long-draw* array) +;; (define-extern *net-process-class-info-time-freeze-long-draw* object) +;; (define-extern time-freeze-long-init-remote function) +;; (define-extern *msg-map-time-freeze-long* array) +;; (define-extern *net-process-class-info-time-freeze-long* object) +;; (define-extern time-freeze-med-draw-init-remote function) +;; (define-extern *msg-map-time-freeze-med-draw* array) +;; (define-extern *net-process-class-info-time-freeze-med-draw* object) +;; (define-extern time-freeze-med-init-remote function) +;; (define-extern *msg-map-time-freeze-med* array) +;; (define-extern *net-process-class-info-time-freeze-med* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-time-trial ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *timetrial-rec* object) +;; (define-extern *ghost-cmp-rec* object) +;; (define-extern *ttbox* object) +;; (define-extern *ttbox-valid* object) +;; (define-extern *ghost-recording-complete* object) +;; (define-extern ghost-recording-complete function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; canyon-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype can-leaves-floor (process-drawable) + () + :method-count-assert 51 + :size-assert #x100 + :flag-assert #x3300700100 + (:state-methods + idle ;; 50 + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; cliffs-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern spt-func-birth-on-height-die-drip function) +;; (define-extern part-cliffs-bird1-path function) +;; (define-extern part-cliffs-bird2-path function) +;; (define-extern part-cliffs-bird3-path function) +;; (define-extern part-cliffs-bird4-path function) +;; (define-extern part-cliffs-bird5-path function) +;; (define-extern part-cliffs-bird6-path function) +;; (define-extern part-cliffs-bird7-path function) +;; (define-extern part-cliffs-bird8-path function) +;; (define-extern part-cliffs-bird9-path function) +;; (define-extern part-cliffs-bird10-path function) +;; (define-extern part-wascitya-fly1-path function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern part-wascitya-fly2-path function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern part-wascitya-fly3-path function) ;; (function sparticle-system sparticle-cpuinfo vector none) +;; (define-extern spt-func-part-cliffs-drops-splash function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; cliffs-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; cliffs-effects ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *cliffs-water-texture-anim-array* texture-anim-array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; cliffs-ocean ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *ocean-colors-cliffs* object) +;; (define-extern *ocean-near-indices-cliffs* ocean-near-indices) +;; (define-extern *ocean-trans-indices-cliffs* ocean-trans-indices) +;; (define-extern *ocean-mid-indices-cliffs* ocean-mid-indices) +;; (define-extern *ocean-mid-masks-cliffs* ocean-mid-masks) +;; (define-extern *ocean-map-cliffs* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; common-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern spt-birth-func-brightness-cliffs-fence-dust function) +;; (define-extern spt-birth-func-brightness-cliffs-fence-splinters function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; common-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype snow-icebreak-a (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +#| +(deftype snow-icebreak-b (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +#| +(deftype snow-icebreak-c (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +#| +(deftype cliffs-wood-fence-a (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +#| +(deftype cliffs-wood-fence-b (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +#| +(deftype cliffs-wood-fence-c (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +#| +(deftype cliffs-wood-fence-d (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +;; (define-extern *ice-debris-params-a* debris-static-params) +;; (define-extern *ice-debris-params-b* debris-static-params) +;; (define-extern *ice-debris-params-c* debris-static-params) +;; (define-extern *cliffs-wood-fence-a-debris-params* debris-static-params) +;; (define-extern *cliffs-wood-fence-b-debris-params* debris-static-params) +;; (define-extern *cliffs-wood-fence-c-debris-params* debris-static-params) +;; (define-extern *cliffs-wood-fence-d-debris-params* debris-static-params) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ragdoll ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern ragdoll-matrix-interp function) ;; (function matrix matrix matrix float matrix) +;; (define-extern ragdoll-joint-callback function) ;; (function cspace transformq process-drawable ragdoll-proc none) +;; (define-extern ragdoll-other-joint-callback function) ;; (function cspace transformq none :behavior ragdoll-proc) +;; (define-extern ragdoll-reflect-matrix function) ;; (function matrix vector vector vector) +;; (define-extern ragdoll-proc-init-by-other function) ;; (function ragdoll-setup object :behavior ragdoll-proc) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; raptor ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype raptor (net-enemy) + () + :method-count-assert 91 + :size-assert #x368 + :flag-assert #x5b02e00368 + (:state-methods + startup ;; 59 + following-path ;; 87 + reverse ;; 89 + idle-wait ;; 88 + chase ;; 90 + ) + ) +|# + +;; (define-extern *raptor-ragdoll-info* object) +;; (define-extern *raptor-enemy-info* object) +;; (define-extern spt-birth-func-brightness-raptor-blood function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-training ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype hud-training-clock (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype hud-vehicle-left-training (hud-vehicle-left) + () + :method-count-assert 24 + :size-assert #x2c + :flag-assert #x180000002c + ) +|# + +#| +(deftype hud-vehicle-right-training (hud-vehicle-right) + () + :method-count-assert 24 + :size-assert #x2c + :flag-assert #x180000002c + ) +|# + +#| +(deftype vehicle-hud-training (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype training-goal-info (structure) + ((i-rog-select int8 :offset-assert 0) + (goal-pos vector :inline :offset-assert 16) + (respawn-info net-player-respawn-info :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x58 + :flag-assert #x900000058 + ) +|# + +#| +(deftype training-info (structure) + ((goal-count int8 :offset-assert 0) + (goals uint32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype net-player-training (net-player-deathrace) + ((explained-dark-eco basic :offset-assert 528) + (explained-mult-weapons basic :offset-assert 532) + (explained-full-dark-eco basic :offset-assert 536) + (complete basic :offset-assert 540) + (race-info basic :offset-assert 544) + (info training-info :offset-assert 548) + (goal-pos vector :inline :offset-assert 560) + (player-pos vector :inline :offset-assert 576) + (player-vel vector :inline :offset-assert 592) + (player-mat matrix :inline :offset-assert 608) + (player-controls vehicle-controls :inline :offset-assert 672) + (mask-controls vehicle-controls :offset-assert 696) + (locked-controls vehicle-controls :offset-assert 700) + (arrow uint64 :offset-assert 704) + (hud-timer uint64 :offset-assert 712) + (state-time uint64 :offset-assert 304) + (start-time uint64 :offset-assert 728) + (time-limit uint64 :offset-assert 736) + (test-time uint64 :offset-assert 744) + (player-health float :offset-assert 752) + (prev-player-health float :offset-assert 756) + (goal-dist float :offset-assert 760) + (desired-letterbox float :offset-assert 764) + (letterbox float :offset-assert 768) + (fail-dist float :offset-assert 772) + (max-count int16 :offset-assert 776) + (i-goal int8 :offset-assert 778) + (show-message? basic :offset-assert 780) + (bot uint64 :offset-assert 784) + (lap-distance float :offset-assert 792) + (lap-count int8 :offset-assert 796) + ) + :method-count-assert 132 + :size-assert #x31d + :flag-assert #x840290031d + (:methods + (net-player-training-method-113 () none) ;; 113 + (net-player-training-method-114 () none) ;; 114 + (net-player-training-method-115 () none) ;; 115 + (net-player-training-method-116 () none) ;; 116 + (net-player-training-method-117 () none) ;; 117 + (net-player-training-method-118 () none) ;; 118 + (net-player-training-method-119 () none) ;; 119 + (net-player-training-method-120 () none) ;; 120 + (net-player-training-method-121 () none) ;; 121 + (net-player-training-method-122 () none) ;; 122 + (net-player-training-method-123 () none) ;; 123 + (net-player-training-method-124 () none) ;; 124 + (net-player-training-method-125 () none) ;; 125 + (net-player-training-method-126 () none) ;; 126 + (net-player-training-method-127 () none) ;; 127 + (net-player-training-method-128 () none) ;; 128 + (net-player-training-method-129 () none) ;; 129 + (net-player-training-method-130 () none) ;; 130 + (net-player-training-method-131 () none) ;; 131 + ) + (:state-methods + waiting ;; 42 + failed ;; 111 + restart ;; 112 + running ;; 43 + ) + ) +|# + +#| +(deftype training2-race-hud (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +#| +(deftype training3-race-hud (in-game-hud) + () + :method-count-assert 33 + :size-assert #x18ec + :flag-assert #x21186018ec + ) +|# + +;; (define-extern *hud-training-clock* array) +;; (define-extern *hud-training-clock-proc* object) +;; (define-extern spawn-hud-training-clock function) +;; (define-extern *vehicle-hud-training* array) +;; (define-extern *vehicle-hud-training-proc* object) +;; (define-extern spawn-vehicle-hud-training function) +;; (define-extern kill-vehicle-hud-training function) +;; (define-extern net-player-training-init-remote function) +;; (define-extern *msg-map-net-player-training* array) +;; (define-extern *net-process-class-info-net-player-training* object) +;; (define-extern *training-info* object) +;; (define-extern training-wait-for-speech-end function) +;; (define-extern training-trans function) +;; (define-extern disable-green-eco-for-entity function) +;; (define-extern disable-green-eco function) +;; (define-extern training1-goal1 function) +;; (define-extern spawn-green-eco-for-entity function) +;; (define-extern spawn-green-eco function) +;; (define-extern training1-goal2 function) +;; (define-extern training2-goal1 function) +;; (define-extern *training2-race-hud* array) +;; (define-extern *training2-race-hud-proc* object) +;; (define-extern spawn-training2-race-hud function) +;; (define-extern training2-goal2 function) +;; (define-extern reset-training-table function) +;; (define-extern training3-goal1 function) +;; (define-extern *training3-race-hud* array) +;; (define-extern *training3-race-hud-proc* object) +;; (define-extern spawn-training3-race-hud function) +;; (define-extern change-weapon-table function) +;; (define-extern training3-goal2 function) +;; (define-extern do-mine-training function) +;; (define-extern training4-goal1 function) +;; (define-extern training4-goal2 function) +;; (define-extern training4-goal3 function) +;; (define-extern training5-goal1 function) +;; (define-extern training5-goal2 function) +;; (define-extern training5-goal3 function) +;; (define-extern count-ai function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-training-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype training-bollard (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype training-marker (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype training-wall (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wcar-drone ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype v-drone (wcar-base) + () + :method-count-assert 272 + :size-assert #x13c0 + :flag-assert #x110133013c0 + ) +|# + +;; (define-extern *v-drone-headlight-glow-template* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; coliseum-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern spt-birth-func-brightness-coliseum-statue-dust function) +;; (define-extern spt-birth-func-brightness-coliseum-bridge-dust function) +;; (define-extern spt-birth-func-brightness-coliseum-bridge-leg-dust function) +;; (define-extern spt-birth-func-brightness-coliseum-hanger-dust function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; coliseum-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype coli-center-arch (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +;; (define-extern *coli-center-arch-explode-params* joint-exploder-static-params) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; coliseum-obs-atlas ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype coli-object-base (net-simple-destruct) + ((actor-group uint32 :offset-assert 284) + (actor-group-count int32 :offset-assert 288) + ) + :method-count-assert 71 + :size-assert #x128 + :flag-assert #x4700a00128 + (:methods + (coli-object-base-method-70 () none) ;; 70 + ) + (:state-methods + idle ;; 59 + ) + ) +|# + +#| +(deftype coli-statue (process-drawable) + ((actor-group uint32 :offset-assert 244) + (actor-group-count int32 :offset-assert 248) + (destruction-time int32 :offset-assert 252) + (check-time int32 :offset-assert 256) + ) + :method-count-assert 55 + :size-assert #x108 + :flag-assert #x3700800108 + (:methods + (coli-statue-method-52 () none) ;; 52 + (coli-statue-method-53 () none) ;; 53 + (coli-statue-method-54 () none) ;; 54 + ) + (:state-methods + idle ;; 50 + explode ;; 51 + ) + ) +|# + +#| +(deftype coli-atlas-statue (coli-statue) + () + :method-count-assert 55 + :size-assert #x108 + :flag-assert #x3700800108 + ) +|# + +#| +(deftype coli-atlas-base-a (coli-object-base) + () + :method-count-assert 71 + :size-assert #x128 + :flag-assert #x4700a00128 + (:state-methods + idle ;; 59 + ) + ) +|# + +#| +(deftype coli-atlas-base-b (coli-object-base) + () + :method-count-assert 71 + :size-assert #x128 + :flag-assert #x4700a00128 + (:state-methods + idle ;; 59 + ) + ) +|# + +#| +(deftype coli-atlas-base-c (coli-object-base) + () + :method-count-assert 71 + :size-assert #x128 + :flag-assert #x4700a00128 + (:state-methods + idle ;; 59 + ) + ) +|# + +#| +(deftype coli-ball-collision (process-focusable) + () + :method-count-assert 60 + :size-assert #x100 + :flag-assert #x3c00700100 + (:state-methods + idle ;; 59 + ) + ) +|# + +#| +(deftype coli-atlas-globe (rigid-body-object) + ((set-angular-velocity basic :offset-assert 288) + (send-update basic :offset-assert 292) + (last-sent-position vector :inline :offset-assert 304) + (angular-velocity vector :inline :offset-assert 320) + (orientation quaternion :inline :offset-assert 336) + (blend-position vector :inline :offset-assert 352) + (last-position vector :inline :offset-assert 368) + (rolling-sound uint32 :offset-assert 384) + (rolling-speed float :offset-assert 388) + (last-bounce-time int32 :offset-assert 392) + (last-sync-time int32 :offset-assert 396) + (volume-modulate float :offset-assert 400) + (roll-sound-stop-time int32 :offset-assert 404) + (roll-sound-start-time int32 :offset-assert 408) + ) + :method-count-assert 95 + :size-assert #x19c + :flag-assert #x5f0110019c + (:methods + (coli-atlas-globe-method-89 () none) ;; 89 + (coli-atlas-globe-method-90 () none) ;; 90 + (coli-atlas-globe-method-91 () none) ;; 91 + (coli-atlas-globe-method-92 () none) ;; 92 + (coli-atlas-globe-method-93 () none) ;; 93 + (coli-atlas-globe-method-94 () none) ;; 94 + ) + (:state-methods + idle ;; 59 + active ;; 60 + ) + ) +|# + +#| +(deftype coli-atlas-statue-break-a (process-drawable) + () + :method-count-assert 52 + :size-assert #xf8 + :flag-assert #x34007000f8 + (:state-methods + idle ;; 50 + die ;; 51 + ) + ) +|# + +#| +(deftype coli-atlas-statue-break-b (process-drawable) + () + :method-count-assert 52 + :size-assert #xf8 + :flag-assert #x34007000f8 + (:state-methods + idle ;; 50 + die ;; 51 + ) + ) +|# + +#| +(deftype coli-atlas-base-break (process-drawable) + () + :method-count-assert 52 + :size-assert #xf8 + :flag-assert #x34007000f8 + (:state-methods + idle ;; 50 + die ;; 51 + ) + ) +|# + +;; (define-extern restore-self function) +;; (define-extern coli-statue-init-remote function) +;; (define-extern *msg-map-coli-statue* array) +;; (define-extern *net-process-class-info-coli-statue* object) +;; (define-extern coli-atlas-globe-init-remote function) +;; (define-extern *msg-map-coli-atlas-globe* array) +;; (define-extern *net-process-class-info-coli-atlas-globe* object) +;; (define-extern *coli-atlas-ball-constants* object) +;; (define-extern atlas-base-fix function) +;; (define-extern atlas-collapse function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; coliseum-obs-2 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype coli-pillar-break (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +#| +(deftype coli-gate-a-straight (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +#| +(deftype coli-gate-b-curved (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +#| +(deftype coli-stands-rail-a (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +#| +(deftype coli-stands-rail-b (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +#| +(deftype coli-stands-rail-c (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +;; (define-extern *coli-pillar-debris-params* debris-static-params) +;; (define-extern *coli-gate-a-debris-params* debris-static-params) +;; (define-extern *coli-gate-b-debris-params* debris-static-params) +;; (define-extern *coli-stands-rail-a-debris-params* debris-static-params) +;; (define-extern *coli-stands-rail-b-debris-params* debris-static-params) +;; (define-extern *coli-stands-rail-c-debris-params* debris-static-params) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; coliseum-obs-female-statue ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype coli-break-object (process-drawable) + () + :method-count-assert 52 + :size-assert #xf8 + :flag-assert #x34007000f8 + (:methods + (coli-break-object-method-51 () none) ;; 51 + ) + (:state-methods + die ;; 50 + ) + ) +|# + +#| +(deftype coli-statue-female-s-break (coli-break-object) + () + :method-count-assert 52 + :size-assert #xf8 + :flag-assert #x34007000f8 + ) +|# + +#| +(deftype coli-statue-female-s-break-a (coli-break-object) + () + :method-count-assert 52 + :size-assert #xf8 + :flag-assert #x34007000f8 + ) +|# + +#| +(deftype coli-statue-female-s-break-b (coli-break-object) + () + :method-count-assert 52 + :size-assert #xf8 + :flag-assert #x34007000f8 + ) +|# + +#| +(deftype coli-statue-female-c-break (coli-break-object) + () + :method-count-assert 52 + :size-assert #xf8 + :flag-assert #x34007000f8 + ) +|# + +#| +(deftype coli-statue-female-c-break-a (coli-break-object) + () + :method-count-assert 52 + :size-assert #xf8 + :flag-assert #x34007000f8 + ) +|# + +#| +(deftype coli-statue-female-c-break-b (coli-break-object) + () + :method-count-assert 52 + :size-assert #xf8 + :flag-assert #x34007000f8 + ) +|# + +#| +(deftype coli-statue-chain-straight (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype coli-statue-chain-curved (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype coli-statue-female (coli-statue) + () + :method-count-assert 55 + :size-assert #x108 + :flag-assert #x3700800108 + ) +|# + +#| +(deftype coli-statue-base-se (coli-object-base) + () + :method-count-assert 71 + :size-assert #x128 + :flag-assert #x4700a00128 + ) +|# + +#| +(deftype coli-statue-base-c-sw (coli-object-base) + () + :method-count-assert 71 + :size-assert #x128 + :flag-assert #x4700a00128 + ) +|# + +#| +(deftype coli-statue-base-nw (coli-object-base) + () + :method-count-assert 71 + :size-assert #x128 + :flag-assert #x4700a00128 + ) +|# + +#| +(deftype coli-statue-base-ne (coli-object-base) + () + :method-count-assert 71 + :size-assert #x128 + :flag-assert #x4700a00128 + ) +|# + +#| +(deftype coli-statue-base-s-se (coli-object-base) + () + :method-count-assert 71 + :size-assert #x128 + :flag-assert #x4700a00128 + ) +|# + +#| +(deftype coli-statue-base-s-sw (coli-object-base) + () + :method-count-assert 71 + :size-assert #x128 + :flag-assert #x4700a00128 + ) +|# + +#| +(deftype coli-statue-base-s-nw (coli-object-base) + () + :method-count-assert 71 + :size-assert #x128 + :flag-assert #x4700a00128 + ) +|# + +#| +(deftype coli-statue-base-s-ne (coli-object-base) + () + :method-count-assert 71 + :size-assert #x128 + :flag-assert #x4700a00128 + ) +|# + +;; (define-extern coli-break-object-init-by-other function) +;; (define-extern coli-statue-female-s-break-spawn function) +;; (define-extern coli-statue-female-s-break-a-spawn function) +;; (define-extern coli-statue-female-s-break-b-spawn function) +;; (define-extern coli-statue-female-c-break-spawn function) +;; (define-extern coli-statue-female-c-break-a-spawn function) +;; (define-extern coli-statue-female-c-break-b-spawn function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; net-collectable-game ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype collectoid-draw (powerup-draw) + ((base-y float :offset-assert 264) + ) + :method-count-assert 57 + :size-assert #x10c + :flag-assert #x390080010c + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype collectoid (net-powerup) + ((controlled-by int8 :offset-assert 244) + (part-time int32 :offset-assert 248) + ) + :method-count-assert 57 + :size-assert #xfc + :flag-assert #x39007000fc + (:methods + (collectoid-method-56 () none) ;; 56 + ) + ) +|# + +;; (define-extern collectoid-draw-init-remote function) +;; (define-extern *msg-map-collectoid-draw* array) +;; (define-extern *net-process-class-info-collectoid-draw* object) +;; (define-extern *steal-mode* object) +;; (define-extern drop-collectoids function) +;; (define-extern *collectoid-debris-params* debris-static-params) +;; (define-extern collectoid-init-remote function) +;; (define-extern *msg-map-collectoid* array) +;; (define-extern *net-process-class-info-collectoid* object) +;; (define-extern *desclct-pris-texture-anim-array* texture-anim-array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; credits-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *credits-ids* array) ;; (array text-id) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; credits-cloth ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *enable-method-set* object) ;; int +;; (define-extern get-neighboring-faces function) ;; (function vector4w int int int int int) +;; (define-extern *normal-array* object) ;; (inline-array vector) +;; (define-extern light-vertex function) ;; (function current-position-info vector rgba) +;; (define-extern *once* object) ;; symbol +;; (define-extern *cloth-fade-alpha* object) ;; gs-alpha +;; (define-extern symbol->cloth-flags function) ;; (function symbol cloth-flag) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; credits-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype credits-char (structure) + ((levname basic :offset-assert 0) + (skel basic :offset-assert 4) + (anim uint32 :offset-assert 8) + (scale float :offset-assert 12) + (dt uint8 :offset-assert 16) + (rotoff float :offset-assert 20) + (rotvel float :offset-assert 24) + ) + :method-count-assert 9 + :size-assert #x1c + :flag-assert #x90000001c + ) +|# + +#| +(deftype hirez-viewer (process-drawable) + ((char credits-char :offset-assert 248) ;; museum-char + (id sound-id :offset-assert 252) ;; guessed by decompiler + (credits symbol :offset-assert 256) ;; guessed by decompiler + ) + :method-count-assert 51 + :size-assert #x104 + :flag-assert #x3300800104 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype end-credits-proc (process) + ((char-viewer uint64 :offset-assert 144) + ) + :method-count-assert 17 + :size-assert #x98 + :flag-assert #x1100100098 + (:methods + (end-credits-proc-method-9 () none) ;; 9 + (end-credits-proc-method-10 () none) ;; 10 + (end-credits-proc-method-11 () none) ;; 11 + (end-credits-proc-method-12 () none) ;; 12 + (end-credits-proc-method-13 () none) ;; 13 + (end-credits-proc-method-14 () none) ;; 14 + ) + (:state-methods + running ;; 15 + die ;; 16 + ) + ) +|# + +#| +(deftype end-credits-character-viewer (process) + ((hirez-viewer uint64 :offset-assert 144) + (vehicle uint64 :offset-assert 152) + (turntable-handle uint64 :offset-assert 160) + (last-up-time int32 :offset-assert 168) + (finish basic :offset-assert 172) + (anim-ending basic :offset-assert 176) + (current-char credits-char :offset-assert 180) + ) + :method-count-assert 17 + :size-assert #xb8 + :flag-assert #x11003000b8 + (:methods + (end-credits-character-viewer-method-9 () none) ;; 9 + (end-credits-character-viewer-method-10 () none) ;; 10 + (end-credits-character-viewer-method-11 () none) ;; 11 + (end-credits-character-viewer-method-12 () none) ;; 12 + (end-credits-character-viewer-method-13 () none) ;; 13 + (end-credits-character-viewer-method-14 () none) ;; 14 + ) + (:state-methods + running ;; 15 + die ;; 16 + ) + ) +|# + +;; (define-extern *credits-chars* array) +;; (define-extern hirez-viewer-init-by-other function) ;; (function museum-char symbol symbol object :behavior hirez-viewer) +;; (define-extern spawn-hirez-viewer function) ;; (function museum-char symbol symbol handle) +;; (define-extern draw-end-credits function) ;; (function level float symbol) +;; (define-extern end-credits-character-viewer-init-by-other function) +;; (define-extern update-stuff function) +;; (define-extern end-credits-proc-init-by-other function) +;; (define-extern activate-end-credits-proc function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; kras-effects ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *kras-alpha-texture-anim-array* texture-anim-array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; train-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype train-object (rigid-body-object) + ((target-position vector :inline :offset-assert 288) + ) + :method-count-assert 89 + :size-assert #x130 + :flag-assert #x5900a00130 + ) +|# + +#| +(deftype train-car (train-object) + () + :method-count-assert 89 + :size-assert #x130 + :flag-assert #x5900a00130 + (:state-methods + idle ;; 59 + ) + ) +|# + +#| +(deftype train (train-object) + ((curve basic :offset-assert 304) + (head-car int32 :offset-assert 308) + (number-of-cars int32 :offset-assert 312) + (cars UNKNOWN 10 :offset-assert 320) + (length float :offset-assert 400) + (train-sound-id uint32 :offset-assert 404) + (horn-id uint32 :offset-assert 408) + (next-horn-time int32 :offset-assert 412) + (start vector :inline :offset-assert 416) + (end vector :inline :offset-assert 432) + (offset-time float :offset-assert 448) + ) + :method-count-assert 89 + :size-assert #x1c4 + :flag-assert #x59014001c4 + (:state-methods + idle ;; 59 + ) + (:states + training-mine + ) + ) +|# + +;; (define-extern *train-constants* object) +;; (define-extern *train-headlight-glow-template* object) +;; (define-extern train-car-init-by-other function) +;; (define-extern train-car-spawn function) +;; (define-extern *desired-number-of-cars* object) +;; (define-extern position-train-car function) +;; (define-extern train-move function) +;; (define-extern cars-spawn function) +;; (define-extern play-horn function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; docks-effects ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype docks-states (structure) + ((light light-state :inline :offset-assert 0) + (flame flames-state :inline :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xf + :flag-assert #x90000000f + ) +|# + +;; (define-extern update-mood-docks function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; docks-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern spt-func-birth-on-height-die-drops function) +;; (define-extern spt-func-part-docks-drops-splash function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; docks-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype wind-rotor (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; docks-ocean ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *ocean-colors-docks* object) +;; (define-extern *ocean-near-indices-docks* ocean-near-indices) +;; (define-extern *ocean-trans-indices-docks* ocean-trans-indices) +;; (define-extern *ocean-mid-indices-docks* ocean-mid-indices) +;; (define-extern *ocean-mid-masks-docks* ocean-mid-masks) +;; (define-extern *ocean-map-docks* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; kras-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern spt-func-birth-on-die1 function) +;; (define-extern spt-func-birth-on-die2 function) +;; (define-extern spt-func-birth-on-die3 function) +;; (define-extern spt-func-birth-on-die4 function) +;; (define-extern spt-func-rocket function) +;; (define-extern *firework-colors* object) +;; (define-extern *firework-vec* object) +;; (define-extern *firework-origin?* object) +;; (define-extern birth-func-firework function) +;; (define-extern spt-func-part-firework1-burst function) +;; (define-extern *range-osplash-color* curve-color-fast) +;; (define-extern *range-osplash-alpha* curve2d-fast) +;; (define-extern *range-osplash-scale-x* curve2d-fast) +;; (define-extern *range-osplash-scale-y* curve2d-fast) +;; (define-extern *curve-osplash-alpha* curve2d-fast) +;; (define-extern *curve-osplash-scale-x* curve2d-fast) +;; (define-extern *curve-osplash-scale-y* curve2d-fast) +;; (define-extern *part-water-ocean-splash-curve-settings* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; kras-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype kras-tower (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype kras-fishtank-lo (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype kras-rusty-sign (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype kras-fireworks-ship-a (process-drawable) + ((curve basic :offset-assert 248) + (location float :offset-assert 252) + (fireworks uint64 :offset-assert 256) + ) + :method-count-assert 51 + :size-assert #x108 + :flag-assert #x3300800108 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype kras-flag (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype kras-windsock (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype kras-pump-break-proxy (process-focusable) + ((actor-group uint32 :offset-assert 256) + (actor-group-count int32 :offset-assert 260) + (impact-velocity vector :inline :offset-assert 272) + (hit-points float :offset-assert 288) + (start-exploded basic :offset-assert 292) + (net-parent uint64 :offset-assert 296) + ) + :method-count-assert 65 + :size-assert #x130 + :flag-assert #x4100a00130 + (:methods + (kras-pump-break-proxy-method-61 () none) ;; 61 + (kras-pump-break-proxy-method-62 () none) ;; 62 + (kras-pump-break-proxy-method-63 () none) ;; 63 + (kras-pump-break-proxy-method-64 () none) ;; 64 + ) + (:state-methods + idle ;; 59 + explode ;; 60 + ) + ) +|# + +#| +(deftype kras-pump-break-draw (kras-pump-break-proxy) + ((flame-sound uint32 :offset-assert 304) + ) + :method-count-assert 65 + :size-assert #x134 + :flag-assert #x4100b00134 + (:state-methods + explode ;; 60 + ) + ) +|# + +#| +(deftype kras-pump-break (process-nettable) + ((exploded basic :offset-assert 188) + (drawable uint64 :offset-assert 192) + ) + :method-count-assert 46 + :size-assert #xc8 + :flag-assert #x2e004000c8 + (:methods + (kras-pump-break-method-43 () none) ;; 43 + (kras-pump-break-method-44 () none) ;; 44 + (kras-pump-break-method-45 () none) ;; 45 + ) + (:state-methods + idle ;; 42 + ) + ) +|# + +;; (define-extern kras-pump-break-draw-init-by-other function) +;; (define-extern kras-pump-break-init-remote function) +;; (define-extern *msg-map-kras-pump-break* array) +;; (define-extern *net-process-class-info-kras-pump-break* object) +;; (define-extern *kras-pump-debris-params* debris-static-params) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; kras-ocean ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *ocean-colors-kras* object) +;; (define-extern *ocean-near-indices-kras* ocean-near-indices) +;; (define-extern *ocean-trans-indices-kras* ocean-trans-indices) +;; (define-extern *ocean-mid-indices-kras* ocean-mid-indices) +;; (define-extern *ocean-mid-masks-kras* ocean-mid-masks) +;; (define-extern *ocean-map-kras* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; construction-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype construction-cone (construction-object) + ((has-hit-ground basic :offset-assert 304) + ) + :method-count-assert 93 + :size-assert #x134 + :flag-assert #x5d00b00134 + ) +|# + +#| +(deftype construction-barricade (construction-object) + ((has-hit-ground basic :offset-assert 304) + ) + :method-count-assert 93 + :size-assert #x134 + :flag-assert #x5d00b00134 + ) +|# + +;; (define-extern *construction-cone-constants* object) +;; (define-extern *construction-barricade-constants* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; drome-effects ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype drome-states (structure) + ((light light-state :inline :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +;; (define-extern update-mood-drome function) +;; (define-extern *dromec-water-texture-anim-array* texture-anim-array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; drome-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; drome-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype drome-tunnel-drum (process-drawable) + ((sound-id uint32 :offset-assert 248) + ) + :method-count-assert 51 + :size-assert #xfc + :flag-assert #x33007000fc + (:state-methods + idle ;; 50 + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; drome-ocean ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *ocean-colors-drome* object) +;; (define-extern *ocean-near-indices-drome* ocean-near-indices) +;; (define-extern *ocean-trans-indices-drome* ocean-trans-indices) +;; (define-extern *ocean-mid-indices-drome* ocean-mid-indices) +;; (define-extern *ocean-mid-masks-drome* ocean-mid-masks) +;; (define-extern *ocean-map-drome* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; desisle-ocean ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *ocean-colors-desisle* object) +;; (define-extern *ocean-near-indices-desisle* ocean-near-indices) +;; (define-extern *ocean-trans-indices-desisle* ocean-trans-indices) +;; (define-extern *ocean-mid-indices-desisle* ocean-mid-indices) +;; (define-extern *ocean-mid-masks-desisle* ocean-mid-masks) +;; (define-extern *ocean-map-desisle* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; desisle-effects ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *desisle-water-texture-anim-array* texture-anim-array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; desisle-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *range-displash-color* curve-color-fast) +;; (define-extern *range-displash-alpha* curve2d-fast) +;; (define-extern *range-displash-scale-x* curve2d-fast) +;; (define-extern *range-displash-scale-y* curve2d-fast) +;; (define-extern *curve-displash-alpha* curve2d-fast) +;; (define-extern *curve-displash-scale-x* curve2d-fast) +;; (define-extern *curve-displash-scale-y* curve2d-fast) +;; (define-extern *part-desisle-ocean-splash-curve-settings* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; des-cactus ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype des-plant (net-simple-destruct) + ((exploder-params joint-exploder-static-params :offset-assert 288) ;; guessed by decompiler + (exploder-skel skeleton-group :offset-assert 292) ;; guessed by decompiler + (exploder-anim uint32 :offset-assert 296) + (exploder uint64 :offset-assert 304) ;; handle + (attack-vel vector :inline :offset-assert 320) + (spring-pos vector :inline :offset-assert 336) + (spring-vel vector :inline :offset-assert 352) + (jmods joint-mod-rotate-local 4 :offset-assert 368) ;; guessed by decompiler + ) + :method-count-assert 74 + :size-assert #x1f0 + :flag-assert #x4a016001f0 + (:methods + (des-plant-method-70 () none) ;; 70 + (des-plant-method-71 () none) ;; 71 + (des-plant-method-72 () none) ;; 72 + (des-plant-method-73 () none) ;; 73 + ) + (:state-methods + idle ;; 59 + explode ;; 60 + ) + ) +|# + +#| +(deftype des-cactus-a (des-plant) + () + :method-count-assert 74 + :size-assert #x1f0 + :flag-assert #x4a016001f0 + ) +|# + +#| +(deftype des-cactus-b (des-plant) + () + :method-count-assert 74 + :size-assert #x1f0 + :flag-assert #x4a016001f0 + ) +|# + +;; (define-extern *des-cactus-a-explode-params* joint-exploder-static-params) ;; joint-exploder-static-params +;; (define-extern *des-cactus-b-explode-params* joint-exploder-static-params) ;; joint-exploder-static-params + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; desert-effects ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype desert-states (structure) + ((light light-state :inline :offset-assert 0) + (flame flames-state :inline :offset-assert 8) + (bsphere0 vector :inline :offset-assert 16) + (bsphere1 vector :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +#| +(deftype desertg-states (structure) + ((light light-state :inline :offset-assert 0) + (flame flames-state :inline :offset-assert 8) + (bsphere vector :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) +|# + +#| +(deftype deswalk-states (structure) + ((light light-state :inline :offset-assert 0) + (flame flames-state :inline :offset-assert 8) + (bsphere0 vector :inline :offset-assert 16) + (bsphere1 vector :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) +|# + +;; (define-extern update-mood-desert function) ;; (function mood-context float int none :behavior time-of-day-proc) +;; (define-extern init-mood-desertg function) ;; (function mood-context float) +;; (define-extern update-mood-desertg function) ;; (function mood-context float int none :behavior time-of-day-proc) +;; (define-extern update-mood-deswalk function) ;; (function mood-context float int none :behavior time-of-day-proc) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; desert-ocean ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *ocean-colors-desert* object) ;; ocean-colors +;; (define-extern *ocean-near-indices-desert* ocean-near-indices) ;; ocean-near-indices +;; (define-extern *ocean-trans-indices-desert* ocean-trans-indices) ;; ocean-trans-indices +;; (define-extern *ocean-mid-indices-desert* ocean-mid-indices) ;; ocean-mid-indices +;; (define-extern *ocean-mid-masks-desert* ocean-mid-masks) ;; ocean-mid-masks +;; (define-extern *ocean-map-desert* object) ;; ocean-map + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; desert-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *range-color-desert-hanging-fire-flame* curve-color-fast) ;; curve-color-fast +;; (define-extern *range-alpha-desert-hanging-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-scale-desert-hanging-fire-flame-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-scale-desert-hanging-fire-flame-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *r-curve-desert-hanging-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *g-curve-desert-hanging-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *b-curve-desert-hanging-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-alpha-desert-hanging-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-desert-hanging-fire-flame-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-desert-hanging-fire-flame-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *part-desert-hanging-fire-flame-curve-settings* object) ;; particle-curve-settings +;; (define-extern *range-color-desert-bowl-fire-flame* curve-color-fast) ;; curve-color-fast +;; (define-extern *range-alpha-desert-bowl-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-scale-desert-bowl-fire-flame-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-scale-desert-bowl-fire-flame-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *r-curve-desert-bowl-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *g-curve-desert-bowl-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *b-curve-desert-bowl-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-alpha-desert-bowl-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-desert-bowl-fire-flame-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-desert-bowl-fire-flame-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *part-desert-bowl-fire-flame-curve-settings* object) ;; particle-curve-settings +;; (define-extern *range-color-desert-small-bowl-fire-flame* curve-color-fast) ;; curve-color-fast +;; (define-extern *range-alpha-desert-small-bowl-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-scale-desert-small-bowl-fire-flame-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-scale-desert-small-bowl-fire-flame-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *r-curve-desert-small-bowl-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *g-curve-desert-small-bowl-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *b-curve-desert-small-bowl-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-alpha-desert-small-bowl-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-desert-small-bowl-fire-flame-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-desert-small-bowl-fire-flame-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *part-desert-small-bowl-fire-flame-curve-settings* object) ;; particle-curve-settings +;; (define-extern *scenecamera-fog-update?* object) ;; symbol +;; (define-extern scenecamera-fog-update function) ;; (function none) +;; (define-extern birth-func-desert-beacon-set-accel function) ;; (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none) +;; (define-extern *range-wrsplash-color* curve-color-fast) ;; curve-color-fast +;; (define-extern *range-wrsplash-alpha* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-wrsplash-scale-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-wrsplash-scale-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-wrsplash-alpha* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-wrsplash-scale-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-wrsplash-scale-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *part-water-rocks-splash-curve-settings* object) ;; particle-curve-settings +;; (define-extern *range-color-firepit-fire-flame* curve-color-fast) ;; curve-color-fast +;; (define-extern *range-alpha-firepit-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-scale-firepit-fire-flame-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-scale-firepit-fire-flame-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *r-curve-firepit-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *g-curve-firepit-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *b-curve-firepit-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-alpha-firepit-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-firepit-fire-flame-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-firepit-fire-flame-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *part-firepit-fire-flame-curve-settings* object) ;; particle-curve-settings +;; (define-extern *stronghold-range-color-flame* curve-color-fast) ;; curve-color-fast +;; (define-extern *stronghold-range-alpha-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *stronghold-range-scale-flame-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *stronghold-range-scale-flame-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *r-stronghold-curve-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *g-stronghold-curve-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *b-stronghold-curve-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *stronghold-curve-alpha-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *stronghold-curve-flame-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *stronghold-curve-flame-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *part-stronghold-torchfire-flame-curve-settings* object) ;; particle-curve-settings +;; (define-extern *range-color-desert-bollard-fire-flame* curve-color-fast) ;; curve-color-fast +;; (define-extern *range-alpha-desert-bollard-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-scale-desert-bollard-fire-flame-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-scale-desert-bollard-fire-flame-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *r-curve-desert-bollard-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *g-curve-desert-bollard-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *b-curve-desert-bollard-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-alpha-desert-bollard-fire-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-desert-bollard-fire-flame-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-desert-bollard-fire-flame-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *part-desert-bollard-fire-flame-curve-settings* object) ;; particle-curve-settings +;; (define-extern *range-dessplash-color* curve-color-fast) ;; curve-color-fast +;; (define-extern *range-dessplash-alpha* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-dessplash-scale-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-dessplash-scale-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-dessplash-alpha* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-dessplash-scale-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-dessplash-scale-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *part-desert-water-rocks-splash-curve-settings* object) ;; particle-curve-settings + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; desarena-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; desarena-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype palm-tree (process-drawable) + ((attack-vel vector :inline :offset-assert 256) + (spring-pos vector :inline :offset-assert 272) + (spring-vel vector :inline :offset-assert 288) + (jmods UNKNOWN 5 :offset-assert 304) + (last-impulse-time int32 :offset-assert 464) + ) + :method-count-assert 56 + :size-assert #x1d4 + :flag-assert #x38015001d4 + (:methods + (palm-tree-method-52 () none) ;; 52 + (palm-tree-method-53 () none) ;; 53 + (palm-tree-method-54 () none) ;; 54 + (palm-tree-method-55 () none) ;; 55 + ) + (:state-methods + idle ;; 50 + vibrate ;; 51 + ) + ) +|# + +#| +(deftype palm-tree-a (palm-tree) + () + :method-count-assert 56 + :size-assert #x1d4 + :flag-assert #x38015001d4 + ) +|# + +#| +(deftype palm-tree-b (palm-tree) + () + :method-count-assert 56 + :size-assert #x1d4 + :flag-assert #x38015001d4 + ) +|# + +#| +(deftype palm-tree-c (palm-tree) + () + :method-count-assert 56 + :size-assert #x1d4 + :flag-assert #x38015001d4 + ) +|# + +;; (define-extern desarena-activate function) +;; (define-extern desarena-deactivate function) +;; (define-extern *palm-tree-a-debris-params* debris-static-params) +;; (define-extern *palm-tree-b-debris-params* debris-static-params) +;; (define-extern *palm-tree-c-debris-params* debris-static-params) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; desarena-effects ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype desarena-states (structure) + ((light light-state :inline :offset-assert 0) + (flame flames-state :inline :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xf + :flag-assert #x90000000f + ) +|# + +;; (define-extern update-mood-desarena function) +;; (define-extern *desarena-water-texture-anim-array* texture-anim-array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; garage-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; haven-ocean ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *ocean-colors-haven* object) +;; (define-extern *ocean-near-indices-haven* ocean-near-indices) +;; (define-extern *ocean-trans-indices-haven* ocean-trans-indices) +;; (define-extern *ocean-mid-indices-haven* ocean-mid-indices) +;; (define-extern *ocean-mid-masks-haven* ocean-mid-masks) +;; (define-extern *ocean-map-haven* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; haven-effects ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *havend-alpha-texture-anim-array* texture-anim-array) +;; (define-extern *havend-water-texture-anim-array* texture-anim-array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; haven-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern spt-birth-func-brightness-sewer-water function) +;; (define-extern spt-birth-func-brightness-sewer-water-foam function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; haven-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype haven-gen-light (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +#| +(deftype haven-trashcan (construction-object) + ((has-hit-ground basic :offset-assert 304) + (barrel-roll uint32 :offset-assert 308) + (rolling basic :offset-assert 312) + ) + :method-count-assert 93 + :size-assert #x13c + :flag-assert #x5d00b0013c + ) +|# + +;; (define-extern *haven-gen-light-debris-params* debris-static-params) +;; (define-extern *haven-trashcan-constants* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; havjung-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern part-jungle-bird1-path function) +;; (define-extern part-jungle-bird2-path function) +;; (define-extern part-jungle-bird3-path function) +;; (define-extern part-jungle-bird4-path function) +;; (define-extern part-jungle-bird5-path function) +;; (define-extern part-jungle-bird6-path function) +;; (define-extern part-jungle-bird7-path function) +;; (define-extern part-jungle-bird8-path function) +;; (define-extern part-jungle-bird9-path function) +;; (define-extern part-jungle-bird10-path function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; havjung-ocean ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *ocean-colors-havjung* object) +;; (define-extern *ocean-near-indices-havjung* ocean-near-indices) +;; (define-extern *ocean-trans-indices-havjung* ocean-trans-indices) +;; (define-extern *ocean-mid-indices-havjung* ocean-mid-indices) +;; (define-extern *ocean-mid-masks-havjung* ocean-mid-masks) +;; (define-extern *ocean-map-havjung* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; jungle-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern spt-birth-func-brightness-statue-dust function) +;; (define-extern spt-birth-func-brightness-tree-root-dust function) +;; (define-extern spt-birth-func-brightness-tree-root-splinters function) +;; (define-extern spt-birth-func-brightness-jungle-snake-dust function) +;; (define-extern spt-func-birth-on-height-die function) +;; (define-extern spt-birth-func-part-jungle-waterspout-head function) +;; (define-extern *range-color-lava-geyser-flame* curve-color-fast) ;; curve-color-fast +;; (define-extern *range-alpha-lava-geyser-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-scale-lava-geyser-flame-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *range-scale-lava-geyser-flame-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *r-curve-lava-geyser-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *g-curve-lava-geyser-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *b-curve-lava-geyser-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-alpha-lava-geyser-flame* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-scale-lava-geyser-flame-x* curve2d-fast) ;; curve2d-fast +;; (define-extern *curve-scale-lava-geyser-flame-y* curve2d-fast) ;; curve2d-fast +;; (define-extern *part-jungle-lavafire-small-curve-settings* object) +;; (define-extern spt-func-birth-on-pop function) ;; (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; jungle-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype jungle-clay-jar-a (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +#| +(deftype jungle-clay-jar-b (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +#| +(deftype flaming-arrow (process-drawable) + ((flame-sound basic :offset-assert 248) + ) + :method-count-assert 51 + :size-assert #xfc + :flag-assert #x33007000fc + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype jungle-stone-snake-head-proxy (process-focusable) + ((actor-group uint32 :offset-assert 256) + (actor-group-count int32 :offset-assert 260) + (impact-velocity vector :inline :offset-assert 272) + (hit-points float :offset-assert 288) + (start-exploded basic :offset-assert 292) + (net-parent uint64 :offset-assert 296) + ) + :method-count-assert 65 + :size-assert #x130 + :flag-assert #x4100a00130 + (:methods + (jungle-stone-snake-head-proxy-method-61 () none) ;; 61 + (jungle-stone-snake-head-proxy-method-62 () none) ;; 62 + (jungle-stone-snake-head-proxy-method-63 () none) ;; 63 + (jungle-stone-snake-head-proxy-method-64 () none) ;; 64 + ) + (:state-methods + idle ;; 59 + explode ;; 60 + ) + ) +|# + +#| +(deftype jungle-stone-snake-head-draw (jungle-stone-snake-head-proxy) + ((waterfall-part uint64 :offset-assert 304) + ) + :method-count-assert 65 + :size-assert #x138 + :flag-assert #x4100b00138 + (:state-methods + idle ;; 59 + explode ;; 60 + ) + ) +|# + +#| +(deftype jungle-stone-snake-head (process-nettable) + ((exploded basic :offset-assert 188) + (drawable uint64 :offset-assert 192) + ) + :method-count-assert 46 + :size-assert #xc8 + :flag-assert #x2e004000c8 + (:methods + (jungle-stone-snake-head-method-43 () none) ;; 43 + (jungle-stone-snake-head-method-44 () none) ;; 44 + (jungle-stone-snake-head-method-45 () none) ;; 45 + ) + (:state-methods + idle ;; 42 + ) + ) +|# + +#| +(deftype jungle-tree-root-large-a (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +#| +(deftype jungle-tree-root-large-b (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +#| +(deftype jungle-statue-small-outdoors (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +#| +(deftype jungle-statue-small-indoors (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +;; (define-extern *jungle-clay-jar-a-debris-params* debris-static-params) +;; (define-extern *jungle-clay-jar-b-debris-params* debris-static-params) +;; (define-extern spawn-flame function) +;; (define-extern jungle-stone-snake-head-draw-init-by-other function) +;; (define-extern jungle-stone-snake-head-init-remote function) +;; (define-extern *msg-map-jungle-stone-snake-head* array) +;; (define-extern *net-process-class-info-jungle-stone-snake-head* object) +;; (define-extern *jungle-stone-snake-head-explode-params* joint-exploder-static-params) +;; (define-extern *jungle-tree-root-large-a-debris-params* debris-static-params) +;; (define-extern *jungle-tree-root-large-b-debris-params* debris-static-params) +;; (define-extern *jungle-statue-small-outdoors-debris-params* debris-static-params) +;; (define-extern *jungle-statue-small-indoors-debris-params* debris-static-params) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; jungle-effects ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *junglea-water-texture-anim-array* texture-anim-array) +;; (define-extern *jungleb-water-texture-anim-array* texture-anim-array) +;; (define-extern *jungley-water-texture-anim-array* texture-anim-array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; havjung-effects ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *junglee-water-texture-anim-array* texture-anim-array) +;; (define-extern *junglef-alpha-texture-anim-array* texture-anim-array) +;; (define-extern *havjung-water-texture-anim-array* texture-anim-array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; havsew-effects ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype havsewx-states (UNKNOWN) + () + :method-count-assert 0 + :size-assert #x0 + :flag-assert #x0 + ) +|# + +;; (define-extern update-mood-havsewx function) +;; (define-extern *havsewx-water-texture-anim-array* texture-anim-array) +;; (define-extern *havsewy-alpha-texture-anim-array* texture-anim-array) +;; (define-extern *havsewy-water-texture-anim-array* texture-anim-array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; sewer-effects ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype sewer-states (structure) + ((rot float :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) +|# + +#| +(deftype sewerx-states (UNKNOWN) + () + :method-count-assert 0 + :size-assert #x0 + :flag-assert #x0 + ) +|# + +;; (define-extern update-mood-sewer function) +;; (define-extern update-mood-sewerx function) +;; (define-extern *sewb-water-texture-anim-array* texture-anim-array) +;; (define-extern *sewc-water-texture-anim-array* texture-anim-array) ;; (texture-anim-array texture-anim) +;; (define-extern *sewd-water-texture-anim-array* texture-anim-array) ;; (texture-anim-array texture-anim) +;; (define-extern *sewe-water-texture-anim-array* texture-anim-array) ;; (texture-anim-array texture-anim) +;; (define-extern *sewf-water-texture-anim-array* texture-anim-array) +;; (define-extern *sewx-water-texture-anim-array* texture-anim-array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; sewer-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern spt-func-birth-on-height-die-drip-sewer function) +;; (define-extern spt-func-part-sewer-drops-splash function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; havtour-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern part-jungle-bird1-path function) +;; (define-extern part-jungle-bird2-path function) +;; (define-extern part-jungle-bird3-path function) +;; (define-extern part-jungle-bird4-path function) +;; (define-extern part-jungle-bird5-path function) +;; (define-extern part-jungle-bird6-path function) +;; (define-extern part-jungle-bird7-path function) +;; (define-extern part-jungle-bird8-path function) +;; (define-extern part-jungle-bird9-path function) +;; (define-extern part-jungle-bird10-path function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; jungle-ocean ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *ocean-colors-jungle* object) +;; (define-extern *ocean-near-indices-jungle* ocean-near-indices) +;; (define-extern *ocean-trans-indices-jungle* ocean-trans-indices) +;; (define-extern *ocean-mid-indices-jungle* ocean-mid-indices) +;; (define-extern *ocean-mid-masks-jungle* ocean-mid-masks) +;; (define-extern *ocean-map-jungle* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; peak-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype peak-states (structure) + ((light light-state :inline :offset-assert 0) + (flame flames-state :inline :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xf + :flag-assert #x90000000f + ) +|# + +;; (define-extern update-mood-peak function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; peak-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype peak-snowball (rigid-body-object) + ((target-position vector :inline :offset-assert 288) + (impact-direction vector :inline :offset-assert 304) + (particle-matrix matrix :inline :offset-assert 320) + (path-length float :offset-assert 384) + (last-u float :offset-assert 396) + (roll-sound uint32 :offset-assert 400) + (offset float :offset-assert 404) + ) + :method-count-assert 90 + :size-assert #x198 + :flag-assert #x5a01100198 + (:state-methods + explode ;; 89 + idle ;; 59 + ) + ) +|# + +;; (define-extern peak-snowball-init-remote function) +;; (define-extern *msg-map-peak-snowball* array) +;; (define-extern *net-process-class-info-peak-snowball* object) +;; (define-extern *snowball-constants* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ice-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype ice-flag (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; jungle-part2 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern part-jungle-bird1-path function) +;; (define-extern part-jungle-bird2-path function) +;; (define-extern part-jungle-bird3-path function) +;; (define-extern part-jungle-bird4-path function) +;; (define-extern part-jungle-bird5-path function) +;; (define-extern part-jungle-bird6-path function) +;; (define-extern part-jungle-bird7-path function) +;; (define-extern part-jungle-bird8-path function) +;; (define-extern part-jungle-bird9-path function) +;; (define-extern part-jungle-bird10-path function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-kaeden ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; kcross-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern spt-birth-func-brightness-kcross-fence-dust function) +;; (define-extern spt-birth-func-brightness-kcross-fence-splinters function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; kcross-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype kcro-flag-down (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype kcro-bouncy-tire-a (construction-object) + ((has-hit-ground basic :offset-assert 304) + ) + :method-count-assert 93 + :size-assert #x134 + :flag-assert #x5d00b00134 + ) +|# + +#| +(deftype kcro-fence-piece-a (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +#| +(deftype kcro-fence-piece-b (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +#| +(deftype kcro-oil-barrel (construction-object) + ((has-hit-ground basic :offset-assert 304) + ) + :method-count-assert 93 + :size-assert #x134 + :flag-assert #x5d00b00134 + ) +|# + +;; (define-extern *kcro-bouncy-tire-a-constants* object) +;; (define-extern *kcro-fence-piece-a-debris-params* debris-static-params) +;; (define-extern *kcro-fence-piece-b-debris-params* debris-static-params) +;; (define-extern *kcro-oil-barrel-constants* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; kcross-ocean ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *ocean-colors-kcross* object) +;; (define-extern *ocean-near-indices-kcross* ocean-near-indices) +;; (define-extern *ocean-trans-indices-kcross* ocean-trans-indices) +;; (define-extern *ocean-mid-indices-kcross* ocean-mid-indices) +;; (define-extern *ocean-mid-masks-kcross* ocean-mid-masks) +;; (define-extern *ocean-map-kcross* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; kcross-effects ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *kcross-water-texture-anim-array* texture-anim-array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-keira ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-kleiver ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; 3d-menu-elements ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype interface-cam (process-drawable) + () + :method-count-assert 55 + :size-assert #xf8 + :flag-assert #x37007000f8 + (:methods + (interface-cam-method-53 () none) ;; 53 + (interface-cam-method-54 () none) ;; 54 + ) + (:state-methods + enter ;; 51 + idle ;; 50 + exit ;; 52 + ) + ) +|# + +#| +(deftype garage-cinema (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +;; (define-extern *interface-cam* object) +;; (define-extern interface-cam-init-by-other function) +;; (define-extern activate-bar function) +;; (define-extern *garage-cinema* object) +;; (define-extern garage-cinema-init-by-other function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-menu-data ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *background-menu-info* object) +;; (define-extern *logo-menu-info* object) +;; (define-extern *logo-subtitle-menu-info* object) +;; (define-extern *base-menu-info* object) +;; (define-extern *single-event-menu-info* object) +;; (define-extern *options-menu-info* object) +;; (define-extern *video-options-menu-info* object) +;; (define-extern *video-options-menu-info-europe* object) +;; (define-extern *secrets-title-menu-info* object) +;; (define-extern *psp-secrets-menu-info* object) +;; (define-extern *center-screen-menu-info* object) +;; (define-extern *sound-options-menu-info* object) +;; (define-extern *game-options-menu-info* object) +;; (define-extern *internet-connection* object) +;; (define-extern *join-create-menu* object) +;; (define-extern *num-local-players-menu* object) +;; (define-extern *join-game-menu* object) +;; (define-extern *player-headphones?-color-array* array) +;; (define-extern *ready-room-host* object) +;; (define-extern *ready-room* object) +;; (define-extern *choose-event-menu-info* object) +;; (define-extern *choose-event-menu-info-local* object) +;; (define-extern *personal-selection-pop-up* object) +;; (define-extern *kick-player-info* object) +;; (define-extern *lobby-generic-error-text-ids* array) +;; (define-extern *lobby-generic-error-bottom-text-ids* array) +;; (define-extern *lobby-generic-error-bottom-text-ids2* array) +;; (define-extern *lobby-generic-error-bottom-text-ids3* array) +;; (define-extern *lobby-generic-error-bottom-text-ids4* array) +;; (define-extern *lobby-generic-error-bottom-text-ids5* array) +;; (define-extern *lobby-generic-error-arg* object) +;; (define-extern *lobby-generic-error* object) +;; (define-extern *lobby-generic-confirmation* object) +;; (define-extern *connecting-to-lobby* object) +;; (define-extern *delete-buddy-confirmation* object) +;; (define-extern *progressive-warning* object) +;; (define-extern *progressive-accept* object) +;; (define-extern *ready-room-options-menu* object) +;; (define-extern *local-highscore-table-info* object) +;; (define-extern get-net-driver-idx-by-type function) +;; (define-extern get-net-driver-by-type function) +;; (define-extern get-driver-flavor-text function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-menu-manager ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *confirm-prev-state-name* object) +;; (define-extern *thrash-level-loader* object) +;; (define-extern *lan-crap-last-time* object) +;; (define-extern check-lan-crap function) +;; (define-extern lobby-default-post function) +;; (define-extern lobby-menu-manager-default-handler function) +;; (define-extern filter-events-for-readyroom function) +;; (define-extern lmm-make-background-menu function) +;; (define-extern lmm-make-logo-menu function) +;; (define-extern kill-logo-menu function) +;; (define-extern *lobby-error-accept* object) +;; (define-extern *lobby-error-cancel* object) +;; (define-extern *lobby-error-action* object) +;; (define-extern *lobby-error-arg* object) +;; (define-extern *lobby-error-extra-confirm-check* object) +;; (define-extern *lobby-error-trans* object) +;; (define-extern adventure-map-fade-in function) +;; (define-extern adventure-map-fade-out function) +;; (define-extern next-language function) +;; (define-extern prev-language function) +;; (define-extern *video-change* object) +;; (define-extern *join-wait-prev-state-name* object) +;; (define-extern go-confirm-net-quit function) +;; (define-extern filter-highscore-venues function) +;; (define-extern set-driver-license-info function) +;; (define-extern jak-selection-clear? function) +;; (define-extern jak-owner function) +;; (define-extern *timetrial-ghost-time-string* string) +;; (define-extern lobby-menu-manager-init-by-other function) +;; (define-extern lobby-start function) +;; (define-extern flash-game-started function) +;; (define-extern update-lobby-camera function) +;; (define-extern cam-lobby state) +;; (define-extern text-id-for-vehicle-type function) +;; (define-extern text-id-class-for-vehicle-type function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-scroll ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype scrolling-item (string-menu) + ((selected basic :offset-assert 560) + (scroll-alpha float :offset-assert 564) + ) + :method-count-assert 69 + :size-assert #x238 + :flag-assert #x4501b00238 + ) +|# + +#| +(deftype scrolling-menu-info (dropdown-item-info) + ((item-spacing vector :inline :offset-assert 128) + (offset-to-top-item vector :inline :offset-assert 144) + (scroll-stages int32 :offset-assert 160) + (visible-item-ct int32 :offset-assert 164) + (child-info base-menu-info :offset-assert 168) + (sel-id-backup-symbol basic :offset-assert 172) + (use-third-color basic :offset-assert 176) + (selection-box-item-offset-x int32 :offset-assert 180) + (selection-box-item-offset-y int32 :offset-assert 184) + (lr-scroll basic :offset-assert 188) + ) + :method-count-assert 9 + :size-assert #xc0 + :flag-assert #x9000000c0 + ) +|# + +#| +(deftype scrolling-menu (dropdown-item) + ((cur-idx int32 :offset-assert 592) + (top-idx int32 :offset-assert 596) + (cur-scroll int32 :offset-assert 600) + (scroll-dir int32 :offset-assert 604) + (total-item-ct int32 :offset-assert 608) + (physical-item-ct int32 :offset-assert 612) + ) + :method-count-assert 77 + :size-assert #x268 + :flag-assert #x4d01e00268 + (:methods + (scrolling-menu-method-70 () none) ;; 70 + (scrolling-menu-method-71 () none) ;; 71 + (scrolling-menu-method-72 () none) ;; 72 + (scrolling-menu-method-73 () none) ;; 73 + (scrolling-menu-method-74 () none) ;; 74 + (scrolling-menu-method-75 () none) ;; 75 + (scrolling-menu-method-76 () none) ;; 76 + ) + (:state-methods + running ;; 52 + ) + ) +|# + +#| +(deftype scrolling-menu-medius (scrolling-menu) + ((prev-id int32 :offset-assert 616) + (prev-top-offset int32 :offset-assert 620) + ) + :method-count-assert 79 + :size-assert #x270 + :flag-assert #x4f01e00270 + (:methods + (scrolling-menu-medius-method-77 () none) ;; 77 + (scrolling-menu-medius-method-78 () none) ;; 78 + ) + ) +|# + +#| +(deftype dropdown-menu (dropdown-item) + () + :method-count-assert 70 + :size-assert #x250 + :flag-assert #x4601c00250 + (:state-methods + running ;; 52 + ) + ) +|# + +#| +(deftype indicator (string-menu) + ((got int32 :offset-assert 560) + (max int32 :offset-assert 564) + (msg uint32 :offset-assert 568) + ) + :method-count-assert 69 + :size-assert #x23c + :flag-assert #x4501b0023c + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-brs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype scrolling-task-item (scrolling-item) + () + :method-count-assert 69 + :size-assert #x238 + :flag-assert #x4501b00238 + ) +|# + +#| +(deftype scrolling-task-menu (scrolling-menu) + ((task-ct int32 :offset-assert 616) + (task-ids UNKNOWN 32 :offset-assert 620) + ) + :method-count-assert 77 + :size-assert #x28c + :flag-assert #x4d0200028c + ) +|# + +#| +(deftype scrolling-net-task-menu (scrolling-task-menu) + () + :method-count-assert 77 + :size-assert #x28c + :flag-assert #x4d0200028c + ) +|# + +;; (define-extern *choose-your-adventure* object) +;; (define-extern *choose-your-online-adventure* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-profile ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype profile-error-string (string-menu) + () + :method-count-assert 69 + :size-assert #x230 + :flag-assert #x4501a00230 + ) +|# + +#| +(deftype profile-yes-no-string (string-menu) + () + :method-count-assert 69 + :size-assert #x230 + :flag-assert #x4501a00230 + ) +|# + +#| +(deftype profile-loading-string (string-menu) + () + :method-count-assert 69 + :size-assert #x230 + :flag-assert #x4501a00230 + ) +|# + +#| +(deftype dropdown-profile (dropdown-item) + () + :method-count-assert 70 + :size-assert #x250 + :flag-assert #x4601c00250 + ) +|# + +#| +(deftype title-load-save-profile (string-menu) + () + :method-count-assert 69 + :size-assert #x230 + :flag-assert #x4501a00230 + ) +|# + +;; (define-extern *profile-errors-continue* array) +;; (define-extern *profile-yes-no* array) +;; (define-extern *profile-not-remove* array) +;; (define-extern *profile-load-save-ids* array) +;; (define-extern *menu-new-load-profile* object) +;; (define-extern *menu-new-load-save-profile* object) +;; (define-extern *dropdown-profile-load-save* object) +;; (define-extern *menu-load-profile* object) +;; (define-extern go-profile-state function) +;; (define-extern *menu-loading-profile* object) +;; (define-extern *menu-save-profile* object) +;; (define-extern *menu-profile-error* object) +;; (define-extern memcard-continue function) +;; (define-extern *menu-want-format-profile* object) +;; (define-extern *menu-formating-card-profile* object) +;; (define-extern *create-hero-mode-profile* object) +;; (define-extern *menu-profile-auto-save* object) +;; (define-extern *menu-boot-memorycard* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; menumap-effects ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype menumap-states (structure) + ((current-values UNKNOWN 5 :offset-assert 0) + (target-values UNKNOWN 5 :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x28 + :flag-assert #x900000028 + ) +|# + +;; (define-extern init-mood-menumap function) +;; (define-extern update-mood-menumap function) +;; (define-extern set-menumap-target! function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-adventure-awards ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype lobby-awards-score->car-type-row (structure) + ((score uint16 :offset-assert 0) + (ctype int8 :offset-assert 2) + (cup-index uint8 :offset-assert 3) + (cup uint32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) +|# + +#| +(deftype lobby-awards-score->driver-type-row (structure) + ((movie-index uint16 :offset-assert 0) + (driver uint8 :offset-assert 2) + ) + :method-count-assert 9 + :size-assert #x3 + :flag-assert #x900000003 + ) +|# + +;; (define-extern lobby-awards-table-adv-score->car-type array) +;; (define-extern lobby-awards-table-adv-score->driver-type array) +;; (define-extern *lobby-awards-first-new-vehicle* object) +;; (define-extern *lobby-awards-new-vehicle* object) +;; (define-extern *lobby-awards-new-event* object) +;; (define-extern *lobby-awards-new-body-part* object) +;; (define-extern *lobby-awards-new-driver* object) +;; (define-extern lobby-awards-handle-vehicle-awarding function) +;; (define-extern lobby-awards-handle-body-part-awarding function) +;; (define-extern lobby-awards-handle-driver-awarding function) +;; (define-extern lobby-awards-handle-event-awarding function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-adventure-maps ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype interface-world-map (process-drawable) + ((u float :offset-assert 248) + (curve basic :offset-assert 256) + (path-u float :offset-assert 260) + (draw? basic :offset-assert 264) + (particle-matrix matrix :inline :offset-assert 272) + ) + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + (:methods + (interface-world-map-method-52 () none) ;; 52 + ) + (:state-methods + idle ;; 50 + leave ;; 51 + ) + ) +|# + +#| +(deftype world-map-kras-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-docks-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-drome-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-dockkra-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-dromedoc-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-kras-tour-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-coliseum-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-kcross-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-jungle-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-haven-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-sewer-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-havjung-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-havsew-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-hav-tour-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-atoll-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-cliffs-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +;; (define-extern *lobby-maps-y-delta* object) +;; (define-extern spt-func-set-delta-y function) +;; (define-extern *world-map-shadow-control* shadow-control) +;; (define-extern align-to-interface-world-map function) +;; (define-extern hidden state) +;; (define-extern interface-world-map-local-space function) +;; (define-extern *world-map-kras-mesh-proc* object) +;; (define-extern *world-map-docks-mesh-proc* object) +;; (define-extern *world-map-drome-mesh-proc* object) +;; (define-extern *world-map-dockkra-mesh-proc* object) +;; (define-extern *world-map-dromedoc-mesh-proc* object) +;; (define-extern *world-map-kras-tour-mesh-proc* object) +;; (define-extern *world-map-coliseum-mesh-proc* object) +;; (define-extern *world-map-kcross-mesh-proc* object) +;; (define-extern *world-map-jungle-mesh-proc* object) +;; (define-extern *world-map-haven-mesh-proc* object) +;; (define-extern *world-map-sewer-mesh-proc* object) +;; (define-extern *world-map-havjung-mesh-proc* object) +;; (define-extern *world-map-havsew-mesh-proc* object) +;; (define-extern *world-map-hav-tour-mesh-proc* object) +;; (define-extern *world-map-atoll-mesh-proc* object) +;; (define-extern *world-map-cliffs-mesh-proc* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-adventure-maps-2 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype world-map-spargus-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-canyon-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-temple-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-canspar-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-spartem-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-spar-tour-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-desarena-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-desisle-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-snow-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-peak-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-ice-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-iceberg-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-icepass-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-ice-tour-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +#| +(deftype world-map-snowbowl-mesh (interface-world-map) + () + :method-count-assert 53 + :size-assert #x150 + :flag-assert #x3500c00150 + ) +|# + +;; (define-extern *world-map-spargus-mesh-proc* object) +;; (define-extern *world-map-canyon-mesh-proc* object) +;; (define-extern *world-map-temple-mesh-proc* object) +;; (define-extern *world-map-canspar-mesh-proc* object) +;; (define-extern *world-map-spartem-mesh-proc* object) +;; (define-extern *world-map-spar-tour-mesh-proc* object) +;; (define-extern *world-map-desarena-mesh-proc* object) +;; (define-extern *world-map-desisle-mesh-proc* object) +;; (define-extern *world-map-snow-mesh-proc* object) +;; (define-extern *world-map-peak-mesh-proc* object) +;; (define-extern *world-map-ice-mesh-proc* object) +;; (define-extern *world-map-iceberg-mesh-proc* object) +;; (define-extern *world-map-icepass-mesh-proc* object) +;; (define-extern *world-map-ice-tour-mesh-proc* object) +;; (define-extern *world-map-snowbowl-mesh-proc* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-adventure ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype dropdown-cup (dropdown-item) + () + :method-count-assert 70 + :size-assert #x250 + :flag-assert #x4601c00250 + ) +|# + +#| +(deftype dropdown-cup-strings (dynamic-string-menu) + () + :method-count-assert 69 + :size-assert #x230 + :flag-assert #x4501a00230 + ) +|# + +#| +(deftype dropdown-cup-borders (prim-strip-menu) + () + :method-count-assert 67 + :size-assert #x228 + :flag-assert #x4301a00228 + ) +|# + +#| +(deftype adventure-top-bar (string-menu) + () + :method-count-assert 69 + :size-assert #x230 + :flag-assert #x4501a00230 + ) +|# + +#| +(deftype adventure-cup-score (string-menu) + () + :method-count-assert 69 + :size-assert #x230 + :flag-assert #x4501a00230 + ) +|# + +#| +(deftype dropdown-fade (dropdown-item) + () + :method-count-assert 70 + :size-assert #x250 + :flag-assert #x4601c00250 + (:state-methods + enter ;; 51 + exit ;; 55 + ) + ) +|# + +#| +(deftype dropdown-city (dropdown-fade) + () + :method-count-assert 70 + :size-assert #x250 + :flag-assert #x4601c00250 + ) +|# + +#| +(deftype dropdown-venue (dropdown-fade) + () + :method-count-assert 70 + :size-assert #x250 + :flag-assert #x4601c00250 + ) +|# + +#| +(deftype dropdown-task (dropdown-fade) + ((medal-msg-start-time uint32 :offset-assert 592) + ) + :method-count-assert 70 + :size-assert #x254 + :flag-assert #x4601d00254 + ) +|# + +;; (define-extern *lobby-adv-cup-mask* object) +;; (define-extern *lobby-adv-grand-prix* object) +;; (define-extern *adv-coming-back-from-game* object) +;; (define-extern *open-new-cup* object) +;; (define-extern *adventure-map-city* array) +;; (define-extern *adventure-map-stats* array) +;; (define-extern *adventure-map-new* array) +;; (define-extern *adventure-venue-name* array) +;; (define-extern *adventure-venue-new* array) +;; (define-extern *adventure-venue-stats* array) +;; (define-extern *adventure-task-stats* array) +;; (define-extern pulse-new-font-color function) +;; (define-extern *cup1-extra* array) +;; (define-extern *cup2-extra* array) +;; (define-extern *cup3-extra* array) +;; (define-extern *cup4-extra* array) +;; (define-extern *adventure-cup* object) +;; (define-extern get-next-training-task function) +;; (define-extern setup-cup-menu-score function) +;; (define-extern *adventure-top-bottom* object) +;; (define-extern *grand-prix-medal* object) +;; (define-extern *adventure-map* object) +;; (define-extern adventure-map-update function) +;; (define-extern update-adventure-map-data function) +;; (define-extern *list-task-medals* array) +;; (define-extern *adventure-venue-info-array* array) +;; (define-extern *adventure-venue* object) +;; (define-extern adventure-venue-init function) +;; (define-extern *adventure-task-sprite-info-array* array) +;; (define-extern *adventure-task-info-array* array) +;; (define-extern *task-medals* array) +;; (define-extern *grand-prix-locked* object) +;; (define-extern *adventure-task* object) +;; (define-extern *map-screen* object) +;; (define-extern adventure-task-init function) +;; (define-extern *adventure-vehicle-select* object) +;; (define-extern wait-for-fmvlev function) +;; (define-extern get-new-qualifier function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-customize ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype customize-main-dropdown-item (dropdown-item) + ((orig-3d-offset vector :inline :offset-assert 592) + (offset-targ vector :inline :offset-assert 608) + ) + :method-count-assert 70 + :size-assert #x270 + :flag-assert #x4601e00270 + ) +|# + +#| +(deftype customize-main-selection-menu-manager (selection-menu-manager) + () + :method-count-assert 67 + :size-assert #x224 + :flag-assert #x4301a00224 + ) +|# + +#| +(deftype customize-vs-dropdown-item (dropdown-item) + ((orig-3d-offset vector :inline :offset-assert 592) + (offset-targ vector :inline :offset-assert 608) + ) + :method-count-assert 70 + :size-assert #x270 + :flag-assert #x4601e00270 + ) +|# + +#| +(deftype customize-vs-selection-menu-manager (selection-menu-manager) + () + :method-count-assert 67 + :size-assert #x224 + :flag-assert #x4301a00224 + ) +|# + +#| +(deftype customize-bp-dropdown-item (dropdown-item) + ((orig-3d-offset vector :inline :offset-assert 592) + (offset-targ vector :inline :offset-assert 608) + (load-part? basic :offset-assert 624) + ) + :method-count-assert 70 + :size-assert #x274 + :flag-assert #x4601f00274 + ) +|# + +#| +(deftype customize-bp-selection-menu-manager (selection-menu-manager) + () + :method-count-assert 67 + :size-assert #x224 + :flag-assert #x4301a00224 + ) +|# + +#| +(deftype paintjob-menu (string-menu) + ((j-mod-color joint-mod-rotate-local :inline :offset-assert 560) + (sat-lum-tri basic :offset-assert 592) + (saturation float :offset-assert 596) + (value float :offset-assert 600) + (sat-lum-pos vector :inline :offset-assert 608) + ) + :method-count-assert 69 + :size-assert #x270 + :flag-assert #x4501e00270 + (:state-methods + running ;; 52 + ) + ) +|# + +#| +(deftype upgrade-dropdown-item (dropdown-item) + () + :method-count-assert 70 + :size-assert #x250 + :flag-assert #x4601c00250 + ) +|# + +;; (define-extern *customize-menu-text-ids* array) +;; (define-extern *tune-performance-text-ids* array) +;; (define-extern *body-parts-text-ids* array) +;; (define-extern *respray-paintjob-text-ids* array) +;; (define-extern *paintjob-menu* object) +;; (define-extern *customize-menu-info* object) +;; (define-extern *vehicle-selection-menu-info* object) +;; (define-extern *cash-bar-extra* array) +;; (define-extern *engine-extra* array) +;; (define-extern *gearbox-extra* array) +;; (define-extern *armor-extra* array) +;; (define-extern *turbo-extra* array) +;; (define-extern *engine-sprite-list* array) +;; (define-extern *gearbox-sprite-list* array) +;; (define-extern *armor-sprite-list* array) +;; (define-extern *turbo-sprite-list* array) +;; (define-extern *tune-performance-menu-info* object) +;; (define-extern *confirm-upgrade-text-ids* array) +;; (define-extern *confirm-price-extra* array) +;; (define-extern *confirm-purchase-popup* object) +;; (define-extern *not-enough-orbs-popup* object) +;; (define-extern *customize-body-parts-text-ids* array) +;; (define-extern *f-fender-extra* array) +;; (define-extern *r-fender-extra* array) +;; (define-extern *door-extra* array) +;; (define-extern *f-bumper-extra* array) +;; (define-extern *r-bumper-extra* array) +;; (define-extern *hood-extra* array) +;; (define-extern *trunk-extra* array) +;; (define-extern *roof-extra* array) +;; (define-extern *wheel-extra* array) +;; (define-extern *body-parts-menu-info* object) +;; (define-extern *body-parts-selection-menu-info* object) +;; (define-extern *customize-paintjob-text-ids* array) +;; (define-extern *customize-paintjob-control-text-ids* array) +;; (define-extern *customize-paintjob-menu-info* object) +;; (define-extern *antenna-extra* array) +;; (define-extern *helmet-extra* array) +;; (define-extern *accessorize-menu-info* object) +;; (define-extern lobby-menu-update-performance-globals function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-results ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *lobby-results-enabled* object) +;; (define-extern *lobby-results-no-adventure-mode* object) +;; (define-extern wait-and-play-award function) +;; (define-extern lobby-results-awarded-vehicle function) +;; (define-extern lobby-results-first-awarded-vehicle function) +;; (define-extern lobby-results-awarded-event function) +;; (define-extern lobby-results-awarded-car-parts function) +;; (define-extern lobby-awards-test-qualifier function) +;; (define-extern *gtb-speech-last-venue* object) +;; (define-extern lobby-speech-gtb-new-venue function) +;; (define-extern *lobby-results-new-body-part-screen-text* array) +;; (define-extern *lobby-results-new-body-part-tab-text* array) +;; (define-extern *lobby-results-new-body-part-tab-text-ii* array) +;; (define-extern *lobby-results-new-body-part-screen* object) +;; (define-extern *lobby-results-new-vehicle-screen-text* array) +;; (define-extern *lobby-results-new-vehicle-class-text* array) +;; (define-extern *lobby-results-new-vehicle-screen* object) +;; (define-extern *lobby-results-new-events-levname-text* array) +;; (define-extern *lobby-results-new-events-levmode-text* array) +;; (define-extern *lobby-results-new-events-screen-back* object) +;; (define-extern *lobby-results-new-events-screen-front* object) +;; (define-extern *lobby-results-new-qualifier-screen* object) +;; (define-extern *lobby-results-new-driver-screen* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-net-h ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype scrolling-item-player (scrolling-item) + ((idx int32 :offset-assert 568) + ) + :method-count-assert 69 + :size-assert #x23c + :flag-assert #x4501b0023c + ) +|# + +#| +(deftype scrolling-menu-player (scrolling-menu-medius) + ((players medius-cache-index-array :offset-assert 624) + ) + :method-count-assert 79 + :size-assert #x274 + :flag-assert #x4f01f00274 + ) +|# + +#| +(deftype scrolling-item-room (scrolling-item) + () + :method-count-assert 69 + :size-assert #x238 + :flag-assert #x4501b00238 + ) +|# + +#| +(deftype scrolling-menu-room (scrolling-menu-medius) + () + :method-count-assert 79 + :size-assert #x270 + :flag-assert #x4f01e00270 + ) +|# + +#| +(deftype scrolling-item-game (scrolling-item) + ((burn-version uint32 :offset-assert 568) + (avg-ping int32 :offset-assert 572) + ) + :method-count-assert 69 + :size-assert #x240 + :flag-assert #x4501b00240 + ) +|# + +#| +(deftype scrolling-menu-game (scrolling-menu-medius) + () + :method-count-assert 79 + :size-assert #x270 + :flag-assert #x4f01e00270 + ) +|# + +;; (define-extern *dnas-mode* object) +;; (define-extern *dnas-on-success* object) +;; (define-extern *dnas-on-failure* object) +;; (define-extern *last-player-id-of-interest* object) +;; (define-extern *last-room-id-of-interest* object) +;; (define-extern *last-game-id-of-interest* object) +;; (define-extern *clan-info-id* object) +;; (define-extern *eznet-list* object) +;; (define-extern *tmp-netconf-string* object) +;; (define-extern *ladder-stat-idx-current* object) +;; (define-extern *ladder-stat-idx-of-interest* object) +;; (define-extern *medius-policy-buffer* object) +;; (define-extern *medius-policy-formatted-buffer* object) +;; (define-extern *medius-policy-string* object) +;; (define-extern *medius-policy-formatted-buffer2* object) +;; (define-extern *medius-policy-string2* object) +;; (define-extern *medius-policy-string-data* object) +;; (define-extern do-pending-operation function) +;; (define-extern fixup-netstring function) +;; (define-extern *player-menu-array-to-use* object) +;; (define-extern *player-info-player* object) +;; (define-extern *game-menu-array-to-use* object) +;; (define-extern *medius-game-info-id* object) +;; (define-extern *medius-game-info-game* object) +;; (define-extern get-ping-crapness function) +;; (define-extern construct-game-name function) +;; (define-extern lobby-refresh-game-list function) +;; (define-extern bm-equal function) +;; (define-extern lobby-check-buttons function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-stats ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype scrolling-item-stats (scrolling-item) + ((idx int32 :offset-assert 568) + ) + :method-count-assert 69 + :size-assert #x23c + :flag-assert #x4501b0023c + ) +|# + +#| +(deftype scrolling-menu-stats (scrolling-menu-medius) + ((stats basic :offset-assert 624) + (info-array basic :offset-assert 628) + (show-vehicles basic :offset-assert 632) + ) + :method-count-assert 80 + :size-assert #x27c + :flag-assert #x5001f0027c + (:methods + (scrolling-menu-stats-method-79 () none) ;; 79 + ) + ) +|# + +#| +(deftype scrolling-item-ladder (scrolling-item) + () + :method-count-assert 69 + :size-assert #x238 + :flag-assert #x4501b00238 + ) +|# + +#| +(deftype scrolling-menu-ladder (scrolling-menu-medius) + () + :method-count-assert 79 + :size-assert #x270 + :flag-assert #x4f01e00270 + ) +|# + +;; (define-extern *last-stat-idx-of-interest* object) +;; (define-extern *ladder-stat-name* object) +;; (define-extern *ladder-stat-your-best* object) +;; (define-extern *ladder-results* array) +;; (define-extern *ladder-results-ct* object) +;; (define-extern *ladder-results-stat-info* object) +;; (define-extern *ladder-results-offset* object) +;; (define-extern *ladder-results-total* object) +;; (define-extern ladder-list-callback function) +;; (define-extern clan-ladder-list-callback function) +;; (define-extern get-player-ladder-pos function) +;; (define-extern get-clan-ladder-pos function) +;; (define-extern get-ladder-total-rankings function) +;; (define-extern get-ladder-list function) +;; (define-extern *player-ladder-stats* object) +;; (define-extern setup-existing-clan-stats function) +;; (define-extern *stats-title* object) +;; (define-extern *clear-stats-text-ids* array) +;; (define-extern *my-stats-screen* object) +;; (define-extern *test-screen* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-net-startup ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype scrolling-netconfig-item (scrolling-item) + () + :method-count-assert 69 + :size-assert #x238 + :flag-assert #x4501b00238 + ) +|# + +#| +(deftype scrolling-netconfig-menu (scrolling-menu) + ((valid-indices UNKNOWN 16 :offset-assert 616) + ) + :method-count-assert 77 + :size-assert #x278 + :flag-assert #x4d01f00278 + ) +|# + +#| +(deftype scrolling-account-item (scrolling-item) + ((is-create basic :offset-assert 568) + ) + :method-count-assert 69 + :size-assert #x23c + :flag-assert #x4501b0023c + ) +|# + +#| +(deftype scrolling-account-menu (scrolling-menu) + () + :method-count-assert 77 + :size-assert #x268 + :flag-assert #x4d01e00268 + ) +|# + +#| +(deftype edit-account-selection-manager (selection-menu-manager) + () + :method-count-assert 67 + :size-assert #x224 + :flag-assert #x4301a00224 + ) +|# + +#| +(deftype editable-selection (dropdown-item) + ((disabled basic :offset-assert 596) + (keyboard-flags uint64 :offset-assert 600) + (max-chars int32 :offset-assert 608) + (text uint32 :offset-assert 612) + ) + :method-count-assert 70 + :size-assert #x268 + :flag-assert #x4601e00268 + (:state-methods + running ;; 52 + ) + ) +|# + +#| +(deftype dropdown-button (dropdown-item) + () + :method-count-assert 70 + :size-assert #x250 + :flag-assert #x4601c00250 + ) +|# + +#| +(deftype non-accepting-item-list-selection (item-list-selection) + () + :method-count-assert 70 + :size-assert #x25c + :flag-assert #x4601d0025c + ) +|# + +#| +(deftype scrolling-universe-item (scrolling-item) + () + :method-count-assert 69 + :size-assert #x238 + :flag-assert #x4501b00238 + ) +|# + +#| +(deftype scrolling-universe-menu (scrolling-menu) + () + :method-count-assert 77 + :size-assert #x268 + :flag-assert #x4d01e00268 + ) +|# + +;; (define-extern create-and-wait-menu function) +;; (define-extern get-mc-error-text-id function) +;; (define-extern *choose-network-config* object) +;; (define-extern *user-accounts-valid* object) +;; (define-extern *waiting-network-hardware* object) +;; (define-extern *waiting-mc* object) +;; (define-extern *waiting-network-hardware-shutdown* object) +;; (define-extern *edit-stored-network-account-idx* object) +;; (define-extern *edit-stored-network-account* object) +;; (define-extern update-stored-network-account function) +;; (define-extern *edit-account-ids* array) +;; (define-extern *delete-account-ids* array) +;; (define-extern *choose-account* object) +;; (define-extern start-logging-on function) +;; (define-extern get-max-password-chars function) +;; (define-extern get-password-flags function) +;; (define-extern *menu-yes-no-array-data* array) +;; (define-extern *menu-yes-no-array* object) +;; (define-extern *edit-account* object) +;; (define-extern *fake-mc-stream* file-stream) +;; (define-extern *fake-mc-filename* string) +;; (define-extern fake-mc-cmd function) +;; (define-extern *lobby-mc-ok-function* object) +;; (define-extern *lobby-mc-error-function* object) +;; (define-extern *enter-pw-acct-name* object) +;; (define-extern *entering-password* object) +;; (define-extern *showing-policy* object) +;; (define-extern *showing-announcements* object) +;; (define-extern *changing-password* object) +;; (define-extern *medius-new-account-password* object) +;; (define-extern *medius-old-account-password* object) +;; (define-extern do-change-password function) +;; (define-extern *anti-cheat* object) +;; (define-extern check-mc-during-error function) +;; (define-extern lobby-safe-state? function) +;; (define-extern lobby-respond-to-msg function) +;; (define-extern *lobby-universe-selection* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-patch ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype dnas-error (structure) + ((min int32 :offset-assert 0) + (max int32 :offset-assert 4) + (main-text-id uint32 :offset-assert 8) + (footer-text-id uint32 :offset-assert 12) + (errtype-text-id uint32 :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) +|# + +;; (define-extern *dnas-errors-usa* array) +;; (define-extern *dnas-errors-eur* array) +;; (define-extern get-dnas-error function) +;; (define-extern get-clean-driver-heap function) +;; (define-extern *dnas-error-text-ids* array) +;; (define-extern *dnas-error-code* object) +;; (define-extern *dnas-error-code-string* object) +;; (define-extern *dnas-status* object) +;; (define-extern *dnas-is-loaded* object) +;; (define-extern *dnas-is-started* object) +;; (define-extern *dnas-abort* object) +;; (define-extern *dnas-unique-id-size* object) +;; (define-extern *dnas-unique-id* object) +;; (define-extern *dnas-unique-id-req* object) +;; (define-extern *dnas-error-screen* object) +;; (define-extern dnas-do-shutdown function) +;; (define-extern *dnas-running-screen* object) +;; (define-extern medius-post-dnas-signature function) +;; (define-extern *patch-total-bytes* object) +;; (define-extern *patch-recv-bytes* object) +;; (define-extern *patch-buffer* object) +;; (define-extern *patch-buffer-size* object) +;; (define-extern *patch-encrypted-size* object) +;; (define-extern *patch-downloading* object) +;; (define-extern encrypt-patch function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-buddies ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype player-info-menu (string-menu) + ((player medius-player :offset-assert 560) + ) + :method-count-assert 70 + :size-assert #x234 + :flag-assert #x4601b00234 + (:methods + (player-info-menu-method-69 () none) ;; 69 + ) + ) +|# + +;; (define-extern *remove-buddy-id* object) +;; (define-extern *buddy-list-type* object) +;; (define-extern construct-buddy-confirmation-string function) +;; (define-extern player-in-game function) +;; (define-extern *lobby-main-screen* object) +;; (define-extern *lobby-main-screen-no-clan* object) +;; (define-extern *buddy-list-management-buddy* object) +;; (define-extern *buddy-list-management-ignore* object) +;; (define-extern *buddy-list-management-recent* object) +;; (define-extern *player-info-button-manager* array) +;; (define-extern setup-player-info-buttons function) +;; (define-extern player-info-screen-check-buttons function) +;; (define-extern *player-info-screen* object) +;; (define-extern *inviting-buddies* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-games ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype game-info-menu (string-menu) + ((game net-available-game :offset-assert 560) + ) + :method-count-assert 70 + :size-assert #x234 + :flag-assert #x4601b00234 + (:methods + (game-info-menu-method-69 () none) ;; 69 + ) + ) +|# + +;; (define-extern *menu-events-filter-array* object) +;; (define-extern *menu-locations-filter-array* object) +;; (define-extern *menu-events-filter-ct* object) +;; (define-extern *menu-locations-filter-ct* object) +;; (define-extern *menu-max-players-filter* object) +;; (define-extern *menu-events-filter-any* object) +;; (define-extern *menu-locations-filter-any* object) +;; (define-extern *menu-class-filter-array* object) +;; (define-extern init-event-filter-array function) +;; (define-extern init-location-filter-array function) +;; (define-extern set-cstring-from-text-id function) +;; (define-extern *game-info-screen* object) +;; (define-extern *vehicle-class-search-data* array) +;; (define-extern *vehicle-class-search* object) +;; (define-extern *game-search-screen* object) +;; (define-extern *do-quickplay* object) +;; (define-extern *e3-join-game-menu-screen* object) +;; (define-extern refresh-games-lan-or-internet function) +;; (define-extern *set-game-name* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-rooms ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype green-room-game-info-menu (string-menu) + () + :method-count-assert 69 + :size-assert #x230 + :flag-assert #x4501a00230 + ) +|# + +;; (define-extern *chat-room-select* object) +;; (define-extern *chat-room* object) +;; (define-extern *chat-refresh* object) +;; (define-extern *current-game-list-anim* object) +;; (define-extern *green-room* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-clans ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype scrolling-item-incoming-clan-invite (scrolling-item) + ((idx int32 :offset-assert 568) + ) + :method-count-assert 69 + :size-assert #x23c + :flag-assert #x4501b0023c + ) +|# + +#| +(deftype scrolling-menu-incoming-clan-invite (scrolling-menu-medius) + () + :method-count-assert 79 + :size-assert #x270 + :flag-assert #x4f01e00270 + ) +|# + +#| +(deftype scrolling-item-recent-clan (scrolling-item) + ((idx int32 :offset-assert 568) + ) + :method-count-assert 69 + :size-assert #x23c + :flag-assert #x4501b0023c + ) +|# + +#| +(deftype scrolling-menu-recent-clan (scrolling-menu-medius) + () + :method-count-assert 79 + :size-assert #x270 + :flag-assert #x4f01e00270 + ) +|# + +#| +(deftype scrolling-item-clan-challenge (scrolling-item) + ((idx int32 :offset-assert 568) + ) + :method-count-assert 69 + :size-assert #x23c + :flag-assert #x4501b0023c + ) +|# + +#| +(deftype scrolling-menu-clan-challenge (scrolling-menu-medius) + () + :method-count-assert 79 + :size-assert #x270 + :flag-assert #x4f01e00270 + ) +|# + +#| +(deftype clan-info-menu (string-menu) + () + :method-count-assert 69 + :size-assert #x230 + :flag-assert #x4501a00230 + ) +|# + +;; (define-extern *prev-room-before-clan* object) +;; (define-extern *in-special-room* object) +;; (define-extern *clan-challenge-id* object) +;; (define-extern *my-clan-or-create-clan-text-ids* array) +;; (define-extern *clan-voice-text-ids* array) +;; (define-extern *clan-challenge-status-text-ids* object) +;; (define-extern get-other-clan-id function) +;; (define-extern *clan-incoming-invites-screen* object) +;; (define-extern *clan-info-button-manager* array) +;; (define-extern setup-clan-info-buttons function) +;; (define-extern *clan-info-screen* object) +;; (define-extern *create-clan-screen* object) +;; (define-extern *clan-room-name* string) +;; (define-extern *clan-sent-invites* object) +;; (define-extern *clan-challenges* object) +;; (define-extern *editing-clan-msg* object) +;; (define-extern *my-clan-name* object) +;; (define-extern *my-clan-leader* object) +;; (define-extern *my-clan-message* object) +;; (define-extern *clan-main-screen* object) +;; (define-extern *clan-main-screen-no-clan* object) +;; (define-extern *invite-player-to-clan* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-advanced ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype dropdown-weapon-item-info (dropdown-item-info) + ((weapon-type int8 :offset-assert 122) + (weapon-text-id uint32 :offset-assert 124) + ) + :method-count-assert 9 + :size-assert #x80 + :flag-assert #x900000080 + ) +|# + +#| +(deftype item-minute-selection (item-num-selection) + () + :method-count-assert 70 + :size-assert #x264 + :flag-assert #x4601e00264 + ) +|# + +#| +(deftype dropdown-advanced-flag-item-info (dropdown-item-info) + ((advanced-flags uint8 :offset-assert 122) + (text-id-1 uint32 :offset-assert 124) + (text-id-2 uint32 :offset-assert 128) + ) + :method-count-assert 9 + :size-assert #x84 + :flag-assert #x900000084 + ) +|# + +#| +(deftype dropdown-advanced-flag-item (dropdown-item) + () + :method-count-assert 70 + :size-assert #x250 + :flag-assert #x4601c00250 + ) +|# + +#| +(deftype dropdown-weapon-item (dropdown-item) + () + :method-count-assert 70 + :size-assert #x250 + :flag-assert #x4601c00250 + (:state-methods + running ;; 52 + ) + ) +|# + +#| +(deftype non-host-advanced-options-menu (string-menu) + () + :method-count-assert 69 + :size-assert #x230 + :flag-assert #x4501a00230 + ) +|# + +;; (define-extern *num-laps* object) +;; (define-extern *num-laps-tours* object) +;; (define-extern *num-lives* object) +;; (define-extern *time-limit* object) +;; (define-extern *simul-artifact-count* object) +;; (define-extern *win-count-ctf* object) +;; (define-extern *win-count-artifact* object) +;; (define-extern *win-count-deathmatch* object) +;; (define-extern *win-count-collect* object) +;; (define-extern *last-team-setting* object) +;; (define-extern *advanced-options-race* object) +;; (define-extern *advanced-options-timetrial* object) +;; (define-extern *advanced-options-timetrial-no-ghost* object) +;; (define-extern *advanced-options-football* object) +;; (define-extern *advanced-options-timebox* object) +;; (define-extern *advanced-options-deathrace* object) +;; (define-extern *advanced-options-ctf* object) +;; (define-extern *advanced-options-deathmatch* object) +;; (define-extern *advanced-options-rushhour* object) +;; (define-extern *advanced-options-assassin* object) +;; (define-extern *advanced-options-collectathon* object) +;; (define-extern *advanced-options-artifact* object) +;; (define-extern *advanced-options-non-host* object) +;; (define-extern *advanced-options* object) +;; (define-extern *param1-num-info* object) +;; (define-extern *param2-num-info* object) +;; (define-extern *param3-num-info* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-secrets ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype secret-item (structure) + ((id uint32 :offset-assert 0) + (price int32 :offset-assert 4) + (secret uint64 :offset-assert 8) + (cup uint32 :offset-assert 16) + (cup-score uint32 :offset-assert 20) + (button-behavior uint64 :offset-assert 24) + (flags uint8 :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x21 + :flag-assert #x900000021 + ) +|# + +#| +(deftype scrolling-secrets-item (scrolling-item) + ((idx int8 :offset-assert 568) + ) + :method-count-assert 69 + :size-assert #x239 + :flag-assert #x4501b00239 + ) +|# + +#| +(deftype scrolling-secrets-menu (scrolling-menu-medius) + ((last-delta int8 :offset-assert 624) + (valid-indices UNKNOWN 64 :offset-assert 625) + ) + :method-count-assert 79 + :size-assert #x2b1 + :flag-assert #x4f023002b1 + ) +|# + +#| +(deftype scrolling-scenes-item (scrolling-secrets-item) + () + :method-count-assert 69 + :size-assert #x23a + :flag-assert #x4501b0023a + ) +|# + +#| +(deftype scrolling-scenes-menu (scrolling-secrets-menu) + () + :method-count-assert 79 + :size-assert #x2b1 + :flag-assert #x4f023002b1 + ) +|# + +;; (define-extern *secret-items* array) +;; (define-extern *time-lock-check* object) +;; (define-extern *locked-text-id* object) +;; (define-extern *locked-msg-index* object) +;; (define-extern *scene-type* object) +;; (define-extern player-finished-adventure-mode? function) +;; (define-extern *last-secret-selected* object) +;; (define-extern *last-scene-selected* object) +;; (define-extern *secrets-menu-info* object) +;; (define-extern *scene-player-menu-info* object) +;; (define-extern check-for-valid-secret-chars function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; garage-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype garage-tool-arm (process-drawable) + ((track joint-mod-rotate-world :inline :offset-assert 256) + (elbow UNKNOWN 4 :offset-assert 288) + (dest vector :inline :offset-assert 416) + (arm-lengths UNKNOWN 4 :offset-assert 432) + (dest-angles UNKNOWN 4 :offset-assert 448) + (elbow-quat UNKNOWN 4 :offset-assert 464) + (total-length float :offset-assert 528) + (flags uint64 :offset-assert 536) + ) + :method-count-assert 52 + :size-assert #x220 + :flag-assert #x3401900220 + (:methods + (garage-tool-arm-method-51 () none) ;; 51 + ) + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype garage-turntable (process-drawable) + ((dest-trans vector :inline :offset-assert 256) + (dest-quat quaternion :inline :offset-assert 272) + (rotv float :offset-assert 288) + (flags uint64 :offset-assert 296) + (plat-sound-id uint32 :offset-assert 304) + (room-sound-id uint32 :offset-assert 308) + (speed float :offset-assert 312) + (vehicle-pos vector :inline :offset-assert 320) + (smush smush-control :inline :offset-assert 336) + (auto-rotate? basic :offset-assert 368) + (no-pad basic :offset-assert 372) + (lift-sound-id uint32 :offset-assert 376) + (turn-start-time uint64 :offset-assert 384) + ) + :method-count-assert 54 + :size-assert #x188 + :flag-assert #x3601000188 + (:methods + (garage-turntable-method-52 () none) ;; 52 + (garage-turntable-method-53 () none) ;; 53 + ) + (:state-methods + up ;; 51 + down ;; 50 + ) + ) +|# + +#| +(deftype garage-car-arm (process-drawable) + ((arm-rot joint-mod-rotate-local :inline :offset-assert 256) + ) + :method-count-assert 52 + :size-assert #x120 + :flag-assert #x3400900120 + (:methods + (garage-car-arm-method-51 () none) ;; 51 + ) + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype garage-sliding-door (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +;; (define-extern set-mult function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; menumap-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern spt-func-menumap-birth-on-die1 function) +;; (define-extern spt-func-menumap-birth-on-die2 function) +;; (define-extern spt-func-menumap-birth-on-die3 function) +;; (define-extern spt-func-menumap-birth-on-die4 function) +;; (define-extern spt-func-menumap-rocket function) +;; (define-extern *menumap-firework-colors* object) +;; (define-extern *menumap-firework-vec* object) +;; (define-extern *menumap-firework-origin?* object) +;; (define-extern birth-func-menumap-firework function) +;; (define-extern part-menumap-bird1-path function) +;; (define-extern part-menumap-bird2-path function) +;; (define-extern part-menumap-bird3-path function) +;; (define-extern part-menumap-bird4-path function) +;; (define-extern part-menumap-bird5-path function) +;; (define-extern part-menumap-bird6-path function) +;; (define-extern part-menumap-bird7-path function) +;; (define-extern part-menumap-bird8-path function) +;; (define-extern part-menumap-bird9-path function) +;; (define-extern part-menumap-bird10-path function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; lobby-adventure-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype wm-docks-crane (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype wm-drome-wind-machine (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype wm-kras-circular-tower (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype menu-haven-trophy (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype menu-kras-trophy (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype menu-marauder-trophy (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype menu-spargus-trophy (process-drawable) + () + :method-count-assert 51 + :size-assert #xf8 + :flag-assert #x33007000f8 + (:state-methods + idle ;; 50 + ) + ) +|# + +#| +(deftype wm-fireworks-ship (process-drawable) + ((curve basic :offset-assert 248) + (location float :offset-assert 252) + (fireworks uint64 :offset-assert 256) + ) + :method-count-assert 51 + :size-assert #x108 + :flag-assert #x3300800108 + (:state-methods + idle ;; 50 + ) + ) +|# + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-osmo ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-ratchet ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-rayn ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-razer ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; rustyh-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern spt-birth-func-brightness-fishtank-bubbles function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-sig ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; snow-obs ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype snow-dinobreak (net-simple-destruct) + () + :method-count-assert 70 + :size-assert #x120 + :flag-assert #x4600900120 + ) +|# + +;; (define-extern *snow-dinobreak-explode-params* joint-exploder-static-params) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; snow-effects ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +#| +(deftype snow-states (structure) + ((light light-state :inline :offset-assert 0) + (flame flames-state :inline :offset-assert 8) + ) + :method-count-assert 9 + :size-assert #xf + :flag-assert #x90000000f + ) +|# + +;; (define-extern update-mood-snow function) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; snow-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *range-color-snow-torch-flame* curve-color-fast) +;; (define-extern *range-alpha-snow-torch-flame* curve2d-fast) +;; (define-extern *range-scale-snow-torch-flame-x* curve2d-fast) +;; (define-extern *range-scale-snow-torch-flame-y* curve2d-fast) +;; (define-extern *r-curve-snow-torch-flame* curve2d-fast) +;; (define-extern *g-curve-snow-torch-flame* curve2d-fast) +;; (define-extern *b-curve-snow-torch-flame* curve2d-fast) +;; (define-extern *curve-alpha-snow-torch-flame* curve2d-fast) +;; (define-extern *curve-snow-torch-flame-x* curve2d-fast) +;; (define-extern *curve-snow-torch-flame-y* curve2d-fast) +;; (define-extern *part-snow-torch-flame-curve-settings* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; spargus-ocean ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *ocean-colors-spargus* object) +;; (define-extern *ocean-near-indices-spargus* ocean-near-indices) +;; (define-extern *ocean-trans-indices-spargus* ocean-trans-indices) +;; (define-extern *ocean-mid-indices-spargus* ocean-mid-indices) +;; (define-extern *ocean-mid-masks-spargus* ocean-mid-masks) +;; (define-extern *ocean-map-spargus* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; spargus-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern spt-birth-func-brightness-spargus-sewer-water function) +;; (define-extern spt-birth-func-brightness-spargus-sewer-water-foam function) +;; (define-extern *range-ssplash-color* curve-color-fast) +;; (define-extern *range-ssplash-alpha* curve2d-fast) +;; (define-extern *range-ssplash-scale-x* curve2d-fast) +;; (define-extern *range-ssplash-scale-y* curve2d-fast) +;; (define-extern *curve-ssplash-alpha* curve2d-fast) +;; (define-extern *curve-ssplash-scale-x* curve2d-fast) +;; (define-extern *curve-ssplash-scale-y* curve2d-fast) +;; (define-extern *part-spargus-ocean-splash-curve-settings* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; temple-part ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; temple-effects ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *templec-alpha-texture-anim-array* texture-anim-array) +;; (define-extern *templed-alpha-texture-anim-array* texture-anim-array) +;; (define-extern *templed-water-texture-anim-array* texture-anim-array) +;; (define-extern *templee-alpha-texture-anim-array* texture-anim-array) +;; (define-extern *templex-alpha-texture-anim-array* texture-anim-array) +;; (define-extern *templex-water-texture-anim-array* texture-anim-array) ;; (texture-anim-array texture-anim) +;; (define-extern *templey-water-texture-anim-array* texture-anim-array) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; temple-ocean ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; (define-extern *ocean-colors-temple* object) +;; (define-extern *ocean-near-indices-temple* ocean-near-indices) +;; (define-extern *ocean-trans-indices-temple* ocean-trans-indices) +;; (define-extern *ocean-mid-indices-temple* ocean-mid-indices) +;; (define-extern *ocean-mid-masks-temple* ocean-mid-masks) +;; (define-extern *ocean-map-temple* object) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-taryn ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-thuga ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-thugb ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-thugc ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-torn ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-ur86 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; speech-ximon ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + + + diff --git a/decompiler/config/jakx/jakx_config.jsonc b/decompiler/config/jakx/jakx_config.jsonc new file mode 100644 index 00000000000..8c5b3e3467d --- /dev/null +++ b/decompiler/config/jakx/jakx_config.jsonc @@ -0,0 +1,209 @@ +{ + "game_version": 4, + "text_version": 40, + + "game_name": "jakx", + "expected_elf_name": "SCUS_974.29", + + // if you want to filter to only some object names. + // it will make the decompiler much faster. + "allowed_objects": [ + /**"debug-h", + "debug", + "collide-h", + "collide-mesh-h", + "collide-cache-h", + "collide", + "collide-func-h", + "collide-touch-h", + "collide-hash-h", + "collide-func", + "collide-hash", + "collide-probe", + "collide-frag", + "collide-mesh", + "collide-touch", + "collide-shape", + "collide-shape-rider", + "collide-planes", + "main-collide", + "collide-cache", + "collide-debug", + "collide-shape-h", + "pat-h"**/ + /**"gkernel-h", + "gkernel", + "view-h", + "view", + "viewport-h", + "viewport", + "target-h", + "target", + "target-death", + "target-pilot", + "sparks-h", + "sparks", + "warp", + "hflip", + "texture-h", + "level-h", + "gsound-h", + "gsound", + "file-io", + "settings-h", + "vu1-user-h", + "texture", + "menu"**/ + "memcard-h", + "font-h", + "font" + ], + + "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, + + "find_functions": 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, + // write goal imports for tpages and textures + "write_tpage_imports": false, + // unpack game text to assets folder + "process_game_text": false, + // unpack game count to assets folder + "process_game_count": false, + // 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, + + // set to false to skip adding .STR files to the decompiler database + "read_spools": true, + // write out spool subtitle text, implies read_spools + "process_subtitle_text": false, + // write out spool subtitle images, implies read_spools + "process_subtitle_images": 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, + + // generate the all-types file + "generate_all_types": false, + + // debug option for instruction decoder + "write_hex_near_instructions": false, + + // to write out "scripts", which are currently just all the linked lists found. mostly a jak 2/3 thing + "write_scripts": true, + + // 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, + + "old_all_types_file": "decompiler/config/jak3/all-types.gc", + + //////////////////////////// + // CONFIG FILES + //////////////////////////// + + // Using the PAL directory as this work was begun using a PAL copy. + // In theory this should all still apply to NTSC. + + "type_casts_file": "decompiler/config/jakx/pal/type_casts.jsonc", + "anonymous_function_types_file": "decompiler/config/jakx/pal/anonymous_function_types.jsonc", + "var_names_file": "decompiler/config/jakx/pal/var_names.jsonc", + "label_types_file": "decompiler/config/jakx/pal/label_types.jsonc", + "stack_structures_file": "decompiler/config/jakx/pal/stack_structures.jsonc", + "hacks_file": "decompiler/config/jakx/pal/hacks.jsonc", + "inputs_file": "decompiler/config/jakx/pal/inputs.jsonc", + "art_info_file": "decompiler/config/jakx/pal/art_info.jsonc", + "import_deps_file": "decompiler/config/jakx/pal/import_deps.jsonc", + "all_types_file": "decompiler/config/jakx/all-types.gc", + "art_group_dump_file": "decompiler/config/jakx/pal/art-group-info.min.json", + "joint_node_dump_file": "decompiler/config/jakx/pal/joint-node-info.min.json", + "tex_dump_file": "decompiler/config/jakx/pal/tex-info.min.json", + "process_stack_size_file": "decompiler/config/jakx/pal/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/jakx/build/all_objs.json", + + //////////////////////////// + // LEVEL EXTRACTION + //////////////////////////// + + // turn this on to extract level background graphics data as .fr3 files in out//fr3 + "levels_extract": false, + // turn this on if you want extracted levels to be saved out as .glb files in glb_out/ + "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/ + "rip_collision": false, + // save game textures as .png files to decompiler_out//textures + "save_texture_pngs": false, + + // whether or not to dump out streamed audio files to decompiler_out//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": {}, + "version_overrides": { + "ntsc_v1": {}, + "pal": { + "game_name": "jakx_pal", + "expected_elf_name": "SCES_532.86", + "is_pal": true, + "object_patches": {} + } + } +} diff --git a/decompiler/config/jakx/pal/anonymous_function_types.jsonc b/decompiler/config/jakx/pal/anonymous_function_types.jsonc new file mode 100644 index 00000000000..6af4a3a5806 --- /dev/null +++ b/decompiler/config/jakx/pal/anonymous_function_types.jsonc @@ -0,0 +1,893 @@ +{ + "gkernel": [ + [17, "(function process symbol)"], + [24, "(function process symbol)"], + [26, "(function process symbol)"], + [29, "(function process symbol)"], + [32, "(function process symbol)"], + [34, "(function process symbol)"], + [36, "(function process symbol)"] + ], + "profile": [[3, "(function profile-segment-array profile-collapse none)"]], + "surface-h": [ + [0, "(function none)"], + [1, "(function none)"], + [2, "(function none)"] + ], + "gsound": [[1, "(function none)"], [3, "(function none)"], [5, "(function none)"]], + "joint-mod": [[21, "(function cspace transformq none)"]], + "level-info": [ + [0, "(function int)"], + [1, "(function int)"], + [2, "(function int)"] + ], + "game-info": [ + [11, "(function string none :behavior process)"], + [17, "(function symbol symbol int none :behavior process)"], + [ + 22, + "(function symbol symbol continue-point game-save resetter-spec none :behavior process)" + ] + ], + "game-task": [ + [0, "(function symbol)"], + [1, "(function symbol)"], + [2, "(function symbol)"], + [3, "(function symbol)"] + ], + "settings": [ + [6, "(function engine-pers connection-pers object object symbol)"] + ], + "generic-obs": [[51, "(function symbol :behavior touch-tracker)"]], + "target-util": [ + [2, "(function none :behavior target)"], + [3, "(function none :behavior target)"], + [4, "(function none :behavior manipy)"], + [5, "(function none :behavior manipy)"], + [6, "(function none :behavior target)"] + ], + "logic-target": [ + [0, "(function external-art-buffer none)"], + [1, "(function external-art-buffer none)"] + ], + "sidekick": [[6, "(function object vector int string :behavior sidekick)"]], + "target-handler": [ + [10, "(function handle none :behavior target)"], + [14, "(function none :behavior target)"] + ], + "target-anim": [ + [3, "(function none :behavior target)"], + [4, "(function none :behavior target)"], + [7, "(function none :behavior target)"], + [8, "(function none :behavior target)"], + [13, "(function (pointer time-frame) none :behavior target)"], + [14, "(function none :behavior target)"], + [15, "(function none :behavior target)"], + [16, "(function none :behavior target)"], + [17, "(function none :behavior target)"] + ], + "target": [ + [1, "(function object :behavior target)"], + [7, "(function object :behavior target)"], + [18, "(function process-focusable object :behavior target)"], + [29, "(function surface surface surface int object :behavior target)"], + [35, "(function surface surface surface int object :behavior target)"], + [45, "(function surface surface surface int object :behavior target)"], + [46, "(function surface surface surface int object :behavior target)"], + [77, "(function surface surface surface int object :behavior target)"] + ], + "target2": [ + [12, "(function vector time-frame float object :behavior process)"], + [15, "(function object :behavior target)"], + [23, "(function object :behavior target)"], + [64, "(function symbol :behavior target)"] + ], + "target-lightjak": [[68, "(function symbol object :behavior target)"]], + "target-invisible": [[10, "(function object :behavior target)"]], + "target-death": [ + [1, "(function object :behavior target)"], + [2, "(function object :behavior target)"], + [3, "(function symbol object :behavior target)"], + [4, "(function object :behavior target)"], + [9, "(function handle object :behavior target)"], + [10, "(function object :behavior target)"], + [14, "(function process-drawable object)"], + [25, "(function surface surface surface int object :behavior target)"], + [26, "(function surface surface surface int object :behavior target)"], + [28, "(function continue-point object)"], + [34, "(function process symbol)"], + [35, "(function process symbol)"], + [36, "(function process symbol)"], + [37, "(function process symbol)"], + [38, "(function process symbol)"] + ], + "target-gun": [ + [15, "(function pickup-type pickup-type none :behavior target)"], + [16, "(function pickup-type none :behavior target)"], + [25, "(function surface surface surface int object :behavior target)"] + ], + "target-board": [ + [30, "(function surface surface surface int object :behavior target)"], + [31, "(function surface surface surface int object :behavior target)"], + [32, "(function surface surface surface int object :behavior target)"], + [33, "(function surface surface surface int object :behavior target)"], + [34, "(function surface surface surface int object :behavior target)"] + ], + "vent": [ + [26, "(function vent symbol)"], + [27, "(function vent symbol)"], + [28, "(function vent symbol)"], + [29, "(function vent symbol)"] + ], + "crates": [[35, "(function process symbol)"]], + "collectables": [ + [77, "(function part-tracker vector)"], + [78, "(function part-tracker vector)"] + ], + "trajectory": [[15, "(function trajectory none)"]], + "progress": [[3, "(function int none :behavior process)"]], + "level": [ + [25, "(function level-group int symbol)"], + [7, "(function none)"], + [4, "(function load-state sound-bank-state symbol)"] + ], + "main": [ + [11, "(function int none)"], + [9, "(function none)"], + [8, "(function none)"], + [7, "(function none)"], + [3, "(function symbol :behavior process)"] + ], + "scene": [[4, "(function symbol :behavior scene-player)"]], + "pov-camera": [ + [ + 7, + "(function process int symbol event-message-block object :behavior pov-camera)" + ] + ], + "airlock": [ + [7, "(function object :behavior com-airlock)"], + [11, "(function object :behavior com-airlock)"], + [12, "(function object :behavior com-airlock)"] + ], + "default-menu": [ + [3, "(function object)"], + [4, "(function object)"], + [5, "(function object)"], + [6, "(function object)"], + [7, "(function int debug-menu-msg object)"], + [8, "(function object)"], + [9, "(function object)"], + [10, "(function object)"], + [11, "(function object)"], + [12, "(function object)"], + [13, "(function object)"], + [14, "(function object)"], + [15, "(function object)"], + [16, "(function object)"], + [17, "(function object)"], + [18, "(function int debug-menu-msg float object)"], + [20, "(function object)"], + [21, "(function object)"], + [22, "(function object)"], + [23, "(function object)"], + [24, "(function object)"], + [25, "(function object)"], + [26, "(function object)"], + [27, "(function int debug-menu-msg float object)"], + [28, "(function int debug-menu-msg float object)"], + [29, "(function object)"], + [30, "(function int debug-menu-msg float object)"], + [31, "(function int debug-menu-msg float object)"], + [32, "(function int debug-menu-msg float object)"], + [33, "(function int debug-menu-msg float object)"], + [34, "(function object)"], + [35, "(function object)"], + [36, "(function int debug-menu-msg float object)"], + [37, "(function int debug-menu-msg float object)"], + [38, "(function int debug-menu-msg float object)"], + [39, "(function int debug-menu-msg float object)"], + [40, "(function object)"], + [41, "(function object)"], + [42, "(function int debug-menu-msg float object)"], + [43, "(function int debug-menu-msg float object)"], + [44, "(function int debug-menu-msg float object)"], + [45, "(function int debug-menu-msg float object)"], + [46, "(function int debug-menu-msg float object)"], + [47, "(function int debug-menu-msg float object)"], + [48, "(function int debug-menu-msg float object)"], + [49, "(function int debug-menu-msg float object)"], + [50, "(function int debug-menu-msg float object)"], + [51, "(function int debug-menu-msg float object)"], + [52, "(function int debug-menu-msg float object)"], + [53, "(function int debug-menu-msg float object)"], + [54, "(function int debug-menu-msg float object)"], + [55, "(function int debug-menu-msg float object)"], + [56, "(function int debug-menu-msg float object)"], + [57, "(function int debug-menu-msg float object)"], + [58, "(function int debug-menu-msg float object)"], + [59, "(function int debug-menu-msg float object)"], + [60, "(function int debug-menu-msg float object)"], + [61, "(function int debug-menu-msg float object)"], + [62, "(function int debug-menu-msg float object)"], + [63, "(function int debug-menu-msg float object)"], + [64, "(function int debug-menu-msg float object)"], + [65, "(function int debug-menu-msg float object)"], + [66, "(function int debug-menu-msg float object)"], + [67, "(function int debug-menu-msg float object)"], + [68, "(function int debug-menu-msg float object)"], + [69, "(function int debug-menu-msg float object)"], + [70, "(function int debug-menu-msg float object)"], + [71, "(function int debug-menu-msg float object)"], + [72, "(function int debug-menu-msg float object)"], + [73, "(function int debug-menu-msg float object)"], + [74, "(function int debug-menu-msg float object)"], + [75, "(function int debug-menu-msg float object)"], + [76, "(function int debug-menu-msg float object)"], + [77, "(function int debug-menu-msg float object)"], + [78, "(function int debug-menu-msg float object)"], + [79, "(function int debug-menu-msg float object)"], + [80, "(function int debug-menu-msg float object)"], + [81, "(function int debug-menu-msg float object)"], + [82, "(function int debug-menu-msg float object)"], + [83, "(function int debug-menu-msg float object)"], + [84, "(function int debug-menu-msg float object)"], + [85, "(function int debug-menu-msg float object)"], + [86, "(function int debug-menu-msg float object)"], + [87, "(function int debug-menu-msg float object)"], + [88, "(function int debug-menu-msg float object)"], + [89, "(function int debug-menu-msg float object)"], + [90, "(function int debug-menu-msg float object)"], + [91, "(function int debug-menu-msg float object)"], + [92, "(function int debug-menu-msg float object)"], + [93, "(function int debug-menu-msg float object)"], + [94, "(function int debug-menu-msg float object)"], + [95, "(function int debug-menu-msg float object)"], + [96, "(function int debug-menu-msg float object)"], + [97, "(function int debug-menu-msg float object)"], + [98, "(function int debug-menu-msg float object)"], + [99, "(function int debug-menu-msg float object)"], + [100, "(function int debug-menu-msg float object)"], + [101, "(function int debug-menu-msg float object)"], + [102, "(function int debug-menu-msg float object)"], + [103, "(function int debug-menu-msg float object)"], + [104, "(function int debug-menu-msg float object)"], + [105, "(function int debug-menu-msg float object)"], + [106, "(function int debug-menu-msg float object)"], + [107, "(function int debug-menu-msg float object)"], + [108, "(function int debug-menu-msg float object)"], + [109, "(function int debug-menu-msg float object)"], + [110, "(function int debug-menu-msg float object)"], + [111, "(function int debug-menu-msg float object)"], + [112, "(function int debug-menu-msg float object)"], + [113, "(function int debug-menu-msg float object)"], + [114, "(function int debug-menu-msg float object)"], + [115, "(function int debug-menu-msg float object)"], + [116, "(function int debug-menu-msg float object)"], + [117, "(function int debug-menu-msg float object)"], + [118, "(function int debug-menu-msg float object)"], + [119, "(function int debug-menu-msg float object)"], + [120, "(function int debug-menu-msg float object)"], + [121, "(function int debug-menu-msg float object)"], + [122, "(function int debug-menu-msg float object)"], + [123, "(function int debug-menu-msg float object)"], + [124, "(function int debug-menu-msg float object)"], + [125, "(function int debug-menu-msg float object)"], + [126, "(function int debug-menu-msg float object)"], + [127, "(function int debug-menu-msg float object)"], + [128, "(function int debug-menu-msg float object)"], + [129, "(function int debug-menu-msg float object)"], + [130, "(function int debug-menu-msg float object)"], + [131, "(function int debug-menu-msg float object)"], + [132, "(function int debug-menu-msg float object)"], + [133, "(function int debug-menu-msg float object)"], + [134, "(function int debug-menu-msg float object)"], + [135, "(function int debug-menu-msg float object)"], + [136, "(function int debug-menu-msg float object)"], + [137, "(function int debug-menu-msg float object)"], + [138, "(function int debug-menu-msg float object)"], + [139, "(function int debug-menu-msg float object)"], + [140, "(function int debug-menu-msg float object)"], + [141, "(function int debug-menu-msg float object)"], + [142, "(function int debug-menu-msg float object)"], + [143, "(function int debug-menu-msg float object)"], + [144, "(function int debug-menu-msg float object)"], + [145, "(function int debug-menu-msg float object)"], + [146, "(function int debug-menu-msg float object)"], + [147, "(function int debug-menu-msg float object)"], + [148, "(function int debug-menu-msg float object)"], + [149, "(function int debug-menu-msg float object)"], + [150, "(function int debug-menu-msg float object)"], + [151, "(function int debug-menu-msg float object)"], + [152, "(function int debug-menu-msg float object)"], + [153, "(function int debug-menu-msg float object)"], + [154, "(function int debug-menu-msg float object)"], + [155, "(function int debug-menu-msg float object)"], + [156, "(function int debug-menu-msg float object)"], + [157, "(function int debug-menu-msg float object)"], + [158, "(function int debug-menu-msg float object)"], + [159, "(function int debug-menu-msg float object)"], + [160, "(function object)"], + [161, "(function object)"], + [162, "(function object)"], + [163, "(function object)"], + [164, "(function object)"], + [165, "(function object)"], + [166, "(function object)"], + [167, "(function object)"], + [168, "(function int debug-menu-msg object)"], + [169, "(function int debug-menu-msg object)"], + [170, "(function int debug-menu-msg object)"], + [171, "(function int debug-menu-msg object)"], + [172, "(function int debug-menu-msg object)"], + [173, "(function int debug-menu-msg float object)"], + [174, "(function int debug-menu-msg float object)"], + [175, "(function int debug-menu-msg float object)"], + [176, "(function int debug-menu-msg float object)"], + [177, "(function int debug-menu-msg float object)"], + [178, "(function int debug-menu-msg float object)"], + [179, "(function int debug-menu-msg float object)"], + [180, "(function int debug-menu-msg float object)"], + [181, "(function int debug-menu-msg float object)"], + [182, "(function int debug-menu-msg float object)"], + [183, "(function int debug-menu-msg float object)"], + [184, "(function int debug-menu-msg float object)"], + [185, "(function int debug-menu-msg float object)"], + [186, "(function int debug-menu-msg float object)"], + [187, "(function int debug-menu-msg float object)"], + [188, "(function int debug-menu-msg float object)"], + [189, "(function int debug-menu-msg float object)"], + [190, "(function int debug-menu-msg float object)"], + [191, "(function int debug-menu-msg float object)"], + [192, "(function int debug-menu-msg float object)"], + [193, "(function int debug-menu-msg float object)"], + [194, "(function int debug-menu-msg float object)"], + [195, "(function int debug-menu-msg float object)"], + [196, "(function int debug-menu-msg float object)"], + [197, "(function int debug-menu-msg float object)"], + [198, "(function int debug-menu-msg float object)"], + [199, "(function int debug-menu-msg float object)"], + [200, "(function int debug-menu-msg float object)"], + [201, "(function int debug-menu-msg float object)"], + [202, "(function int debug-menu-msg float object)"], + [203, "(function int debug-menu-msg float object)"], + [204, "(function int debug-menu-msg float object)"], + [205, "(function int debug-menu-msg float object)"], + [206, "(function int debug-menu-msg float object)"], + [207, "(function int debug-menu-msg float object)"], + [208, "(function int debug-menu-msg float object)"], + [209, "(function int debug-menu-msg float object)"], + [210, "(function int debug-menu-msg float object)"], + [211, "(function int debug-menu-msg float object)"], + [212, "(function int debug-menu-msg float object)"], + [213, "(function int debug-menu-msg float object)"], + [214, "(function int debug-menu-msg float object)"], + [215, "(function symbol debug-menu-msg float float object)"], + [216, "(function symbol debug-menu-msg float float object)"], + [217, "(function int debug-menu-msg float object)"], + [218, "(function symbol debug-menu-msg float float object)"], + [219, "(function symbol debug-menu-msg float float object)"], + [220, "(function symbol debug-menu-msg float float object)"], + [221, "(function symbol debug-menu-msg float float object)"], + [222, "(function symbol debug-menu-msg float float object)"], + [223, "(function symbol debug-menu-msg float float object)"], + [224, "(function symbol debug-menu-msg float float object)"], + [225, "(function symbol debug-menu-msg float float object)"], + [226, "(function symbol debug-menu-msg float float object)"], + [227, "(function symbol debug-menu-msg float float object)"], + [228, "(function symbol debug-menu-msg float float object)"], + [229, "(function symbol debug-menu-msg float float object)"], + [230, "(function symbol debug-menu-msg float float object)"], + [231, "(function symbol debug-menu-msg float float object)"], + [232, "(function symbol debug-menu-msg float float object)"], + [233, "(function symbol debug-menu-msg float float object)"], + [234, "(function symbol debug-menu-msg float float object)"], + [235, "(function object)"], + [236, "(function object)"], + [237, "(function symbol debug-menu-msg float float object)"], + [239, "(function symbol debug-menu-msg object)"], + [240, "(function int debug-menu-msg float object)"], + [241, "(function int debug-menu-msg float object)"], + [242, "(function int debug-menu-msg float object)"], + [243, "(function int debug-menu-msg float object)"], + [244, "(function debug-menu debug-menu symbol)"], + [245, "(function debug-menu debug-menu symbol)"], + [246, "(function debug-menu debug-menu symbol)"], + [247, "(function debug-menu debug-menu symbol)"] + ], + "enemy-states": [[38, "(function object :behavior enemy)"]], + "scene-actor": [ + [0, "(function none)"], + [1, "(function flut-npc none)"], + [2, "(function flut-npc art-element)"], + [39, "(function flut-npc flut-npc)"] + ], + "warp-gate": [ + [0, "(function object)"], + [8, "(function string object :behavior process)"], + [12, "(function object :behavior target)"] + ], + "gun-yellow-shot": [[59, "(function handle object :behavior process)"]], + "gun-dark-shot": [ + [25, "(function collide-shape-prim none :behavior gravity-spinner)"], + [34, "(function handle float object :behavior process)"] + ], + "entity": [ + [11, "(function process object)"], + [16, "(function process object)"], + [57, "(function process object)"], + [61, "(function process object)"] + ], + "target-darkjak": [ + [5, "(function object :behavior target)"], + [ + 20, + "(function (pointer float) (pointer int64) (pointer int64) object :behavior target)" + ], + [21, "(function object :behavior target)"] + ], + "memory-usage": [ + [2, "(function process-drawable symbol)"], + [3, "(function basic symbol)"] + ], + "bug-report": [ + [0, "(function object :behavior bug-report)"], + [1, "(function object :behavior bug-report)"] + ], + "relocate": [[7, "(function sparticle-system sparticle-cpuinfo none)"]], + "target-mech": [ + [7, "(function object :behavior target)"], + [8, "(function object :behavior target)"], + [9, "(function object :behavior target)"], + [18, "(function surface surface surface int object :behavior target)"], + [19, "(function surface surface surface int object :behavior target)"] + ], + "mech-states": [[57, "(function object :behavior target)"]], + "target-flut": [ + [14, "(function surface surface surface int object :behavior target)"], + [20, "(function object :behavior target)"], + [21, "(function object :behavior target)"], + [33, "(function process-focusable object)"], + [72, "(function object)"], + [73, "(function object :behavior target)"], + [74, "(function object :behavior target)"] + ], + "nav-control": [ + [0, "(function object nav-control none)"], + [1, "(function object nav-control none)"], + [2, "(function object nav-control none)"], + [3, "(function object nav-control none)"], + [4, "(function object nav-control none)"], + [5, "(function object nav-control none)"], + [6, "(function object nav-control none)"], + [7, "(function object nav-control none)"], + [8, "(function object nav-control none)"], + [9, "(function object nav-control none)"] + ], + "nav-enemy": [[7, "(function enemy-jump-info none :behavior nav-enemy)"]], + "task-control": [ + [53, "(function game-task-node-info symbol object)"], + [54, "(function game-task-node-info object)"], + [67, "(function pair symbol)"] + ], + "merc-death": [[3, "(function time-frame :behavior process-drawable)"]], + "vehicle-states": [ + [10, "(function collide-shape-prim none)"], + [12, "(function collide-shape-prim none)"] + ], + "prebot-states": [[21, "(function vector :behavior prebot)"]], + "wasall-obs": [ + [0, "(function object)"], + [1, "(function object)"], + [2, "(function object)"], + [3, "(function object)"] + ], + "roboguard": [ + [1, "(function cspace transformq none)"], + [2, "(function cspace transformq none)"], + [25, "(function int int float object :behavior roboguard)"], + [45, "(function roboguard symbol object)"] + ], + "vehicle": [ + [6, "(function collide-shape-prim none)"], + [7, "(function collide-shape-prim none)"] + ], + "wvehicle-wheel": [ + [7, "(function collide-shape-prim none)"], + [11, "(function collide-shape-prim none)"], + [17, "(function collide-shape-prim none)"] + ], + "wvehicle-states": [ + [20, "(function collide-shape-prim none)"], + [22, "(function collide-shape-prim none)"] + ], + "wvehicle": [[6, "(function collide-shape-prim none)"]], + "pilot-states": [ + [15, "(function surface surface surface int object :behavior target)"] + ], + "was-squad-control": [[16, "(function object object)"]], + "des-cactus": [[13, "(function collide-shape-prim none)"]], + "desertg-obs": [ + [4, "(function collide-shape-prim none)"], + [7, "(function collide-shape-prim none)"] + ], + "desertf-obs": [[7, "(function none)"]], + "temple-obs2": [ + [43, "(function symbol)"], + [46, "(function object :behavior tpl-watcher)"] + ], + "temple-scenes": [ + [0, "(function none)"], + [1, "(function none)"], + [2, "(function none)"], + [3, "(function none :behavior scene-player)"], + [4, "(function none :behavior scene-player)"] + ], + "des-beast-2": [ + [1, "(function cspace transformq none)"], + [2, "(function cspace transformq none)"], + [23, "(function projectile none)"] + ], + "scorpion-gun": [ + [33, "(function cspace transformq none)"], + [34, "(function cspace transformq none)"] + ], + "hover-formation": [ + [10, "(function form-search-info float)"], + [11, "(function int int form-search-info uint)"], + [14, "(function vector object)"], + [15, "(function int int (pointer object) int)"] + ], + "robo-hover": [ + [14, "(function robo-hover cspace float float vector vector int object)"] + ], + "tower-scenes": [ + [0, "(function none :behavior scene-player)"], + [1, "(function none :behavior scene-player)"] + ], + "forest-kill-plants": [ + [5, "(function engine-pers connection-pers object object symbol)"], + [7, "(function engine-pers connection-pers object object symbol)"] + ], + "forest-tasks": [ + [0, "(function none :behavior scene-player)"], + [1, "(function none :behavior scene-player)"], + [2, "(function none :behavior scene-player)"], + [3, "(function none :behavior scene-player)"], + [4, "(function none :behavior scene-player)"], + [5, "(function none :behavior scene-player)"], + [6, "(function none :behavior scene-player)"], + [7, "(function none :behavior scene-player)"], + [8, "(function none :behavior scene-player)"], + [9, "(function none :behavior scene-player)"], + [10, "(function none :behavior scene-player)"], + [11, "(function none :behavior scene-player)"], + [12, "(function none :behavior scene-player)"], + [13, "(function none :behavior scene-player)"], + [14, "(function none :behavior scene-player)"], + [15, "(function none :behavior scene-player)"], + [16, "(function none :behavior scene-player)"], + [17, "(function none :behavior scene-player)"], + [18, "(function none :behavior scene-player)"], + [19, "(function none :behavior scene-player)"], + [20, "(function none :behavior scene-player)"], + [21, "(function none :behavior scene-player)"] + ], + "neo-wasp": [[15, "(function neo-wasp cspace transformq float float none)"]], + "for-turret": [ + [1, "(function cspace transformq none)"], + [2, "(function cspace transformq none)"], + [3, "(function cspace transformq none)"], + [4, "(function cspace transformq none)"] + ], + "volcano-obs": [[38, "(function cspace transformq none)"]], + "spiky-frog": [[9, "(function cspace transformq none)"]], + "volcano-scenes": [ + [1, "(function none :behavior scene-player)"], + [2, "(function none :behavior scene-player)"] + ], + "mantis": [ + [8, "(function mantis vector float int vector vector)"], + [15, "(function mantis collide-shape-moving vector symbol)"] + ], + "wcar-faccar": [[9, "(function handle object :behavior process)"]], + "wasstadb-obs": [[5, "(function object)"]], + "arena-scenes": [ + [0, "(function none :behavior scene-player)"], + [1, "(function none :behavior scene-player)"], + [2, "(function none :behavior scene-player)"], + [3, "(function none :behavior scene-player)"], + [4, "(function none :behavior scene-player)"], + [5, "(function none :behavior scene-player)"], + [6, "(function none :behavior scene-player)"], + [7, "(function none :behavior scene-player)"], + [8, "(function none :behavior scene-player)"], + [9, "(function none :behavior scene-player)"] + ], + "traffic-engine": [ + [24, "(function traffic-find-segment-struct nav-segment none)"] + ], + "desert-scenes": [ + [5, "(function none :behavior scene-player)"], + [6, "(function none :behavior scene-player)"], + [7, "(function none :behavior scene-player)"], + [8, "(function none :behavior scene-player)"], + [9, "(function none :behavior scene-player)"], + [10, "(function none :behavior scene-player)"], + [11, "(function none :behavior scene-player)"], + [12, "(function none :behavior scene-player)"], + [13, "(function none :behavior scene-player)"], + [14, "(function none :behavior scene-player)"], + [15, "(function none :behavior scene-player)"], + [16, "(function none :behavior scene-player)"], + [17, "(function none :behavior scene-player)"], + [18, "(function none :behavior scene-player)"], + [19, "(function none :behavior scene-player)"], + [20, "(function none :behavior scene-player)"], + [21, "(function none :behavior scene-player)"], + [22, "(function none :behavior scene-player)"], + [23, "(function none :behavior scene-player)"], + [24, "(function none :behavior scene-player)"], + [25, "(function none :behavior scene-player)"], + [26, "(function none :behavior scene-player)"], + [27, "(function none :behavior scene-player)"], + [28, "(function none :behavior scene-player)"], + [29, "(function none :behavior scene-player)"], + [30, "(function none :behavior scene-player)"], + [31, "(function none :behavior scene-player)"], + [32, "(function none :behavior scene-player)"], + [33, "(function none :behavior scene-player)"], + [34, "(function none :behavior scene-player)"], + [35, "(function none :behavior scene-player)"], + [36, "(function symbol :behavior scene-player)"] + ], + "throne-scenes": [[0, "(function none :behavior scene-player)"]], + "terraformer-setup": [[38, "(function object :behavior manipy)"]], + "mined-scenes": [ + [6, "(function none :behavior scene-player)"], + [7, "(function process-drawable vector none :behavior scene-player)"], + [8, "(function process-drawable vector none :behavior scene-player)"] + ], + "wasteland-scenes": [ + [0, "(function none :behavior scene-player)"], + [1, "(function none :behavior scene-player)"], + [2, "(function none :behavior scene-player)"], + [3, "(function none :behavior scene-player)"], + [4, "(function none :behavior scene-player)"], + [5, "(function none :behavior scene-player)"], + [6, "(function none :behavior scene-player)"], + [7, "(function none :behavior scene-player)"], + [8, "(function none :behavior scene-player)"], + [9, "(function none :behavior scene-player)"], + [10, "(function none :behavior scene-player)"] + ], + "wasdoors-scenes": [[2, "(function none :behavior scene-player)"]], + "wasdef-manager": [ + [7, "(function process-tree object)"], + [8, "(function process-tree object)"], + [9, "(function process-tree object)"] + ], + "des-burning-bush": [[37, "(function symbol)"]], + "mh-wasp": [ + [9, "(function mh-wasp cspace float float vector vector int none)"] + ], + "mh-bat": [ + [1, "(function cspace transformq none)"], + [21, "(function object :behavior mh-bat)"], + [26, "(function object :behavior mh-bat)"], + [30, "(function object :behavior mh-bat)"], + [34, "(function object :behavior mh-bat)"], + [39, "(function object :behavior mh-bat)"] + ], + "factoryc-obs2": [ + [67, "(function (pointer joint-exploder) :behavior fac-break-floor)"] + ], + "factory-scenes": [ + [0, "(function none :behavior scene-player)"], + [1, "(function none :behavior scene-player)"], + [2, "(function none :behavior scene-player)"], + [3, "(function none :behavior scene-player)"], + [4, "(function none :behavior scene-player)"], + [5, "(function none :behavior scene-player)"], + [6, "(function none :behavior scene-player)"], + [7, "(function none :behavior scene-player)"], + [8, "(function none :behavior scene-player)"], + [9, "(function none :behavior scene-player)"], + [10, "(function process-drawable none :behavior scene-player)"], + [11, "(function none :behavior scene-player)"], + [12, "(function none :behavior scene-player)"], + [13, "(function none :behavior scene-player)"], + [14, "(function none :behavior scene-player)"], + [15, "(function none :behavior scene-player)"] + ], + "factory-boss-setup": [[37, "(function object :behavior manipy)"]], + "factory-boss-scenes": [ + [1, "(function none :behavior scene-player)"], + [2, "(function none :behavior scene-player)"] + ], + "bot": [[25, "(function gui-connection symbol :behavior bot)"]], + "oasis-defense": [ + [4, "(function collide-shape-prim none)"], + [11, "(function collide-shape-prim none)"] + ], + "ash-oasis-course": [ + [0, "(function ashelin-oasis object)"], + [1, "(function ashelin-oasis object)"], + [2, "(function asht-wait-spot ashelin-oasis object)"], + [3, "(function ashelin-oasis symbol)"] + ], + "comb-obs": [ + [16, "(function collide-shape-prim none)"], + [33, "(function collide-shape-prim none)"], + [49, "(function collide-shape-prim none)"] + ], + "comb-sentry": [[19, "(function collide-shape-prim none)"]], + "comb-field": [[5, "(function symbol)"]], + "comb-scenes": [ + [0, "(function none :behavior scene-player)"], + [1, "(function none :behavior scene-player)"], + [2, "(function none :behavior scene-player)"], + [3, "(function none :behavior scene-player)"], + [4, "(function none :behavior scene-player)"], + [5, "(function none :behavior scene-player)"], + [6, "(function none :behavior scene-player)"], + [7, "(function none :behavior scene-player)"], + [8, "(function none :behavior scene-player)"] + ], + "railx-scenes": [ + [0, "(function none :behavior scene-player)"], + [1, "(function none :behavior scene-player)"], + [2, "(function none :behavior scene-player)"], + [3, "(function none :behavior scene-player)"], + [4, "(function none :behavior scene-player)"], + [5, "(function none :behavior scene-player)"], + [6, "(function none :behavior scene-player)"], + [7, "(function none :behavior scene-player)"], + [8, "(function none :behavior scene-player)"], + [9, "(function none :behavior scene-player)"], + [10, "(function none :behavior scene-player)"], + [11, "(function none :behavior scene-player)"] + ], + "title-obs": [ + [20, "(function external-art-buffer int)"], + [22, "(function game-task object)"], + [26, "(function vector :behavior manipy)"], + [30, "(function object :behavior manipy)"] + ], + "ff-squad-control": [ + [6, "(function process-focusable traffic-object-type-info none)"], + [7, "(function process-focusable traffic-object-type-info none)"], + [8, "(function process-focusable traffic-object-type-info none)"], + [9, "(function crimson-guard traffic-object-type-info none)"] + ], + "guard": [ + [31, "(function crimson-guard collide-shape vector symbol)"], + [49, "(function process city-attacker-info int)"] + ], + "guard-tazer": [ + [7, "(function collide-shape-prim none)"], + [13, "(function collide-shape-prim none)"] + ], + "roboguard-city": [ + [13, "(function cspace transformq none)"], + [78, "(function roboguard-city symbol quaternion :behavior process)"] + ], + "ctywide-obs": [[93, "(function symbol)"]], + "ctywide-scenes": [ + [1, "(function none :behavior scene-player)"], + [2, "(function none :behavior scene-player)"], + [3, "(function none :behavior scene-player)"] + ], + "ctyport-obs": [[5, "(function collide-shape-prim none)"]], + "ctyport-scenes": [ + [3, "(function none :behavior scene-player)"], + [4, "(function none :behavior scene-player)"], + [5, "(function none :behavior scene-player)"], + [6, "(function none :behavior scene-player)"] + ], + "ctyport-attack": [[45, "(function object :behavior process)"]], + "intro-scenes": [ + [0, "(function none :behavior scene-player)"], + [1, "(function none :behavior scene-player)"], + [2, "(function none :behavior scene-player)"], + [3, "(function none :behavior scene-player)"], + [4, "(function none :behavior scene-player)"], + [5, "(function none :behavior scene-player)"], + [6, "(function none :behavior scene-player)"], + [7, "(function none :behavior scene-player)"], + [8, "(function none :behavior scene-player)"], + [9, "(function none :behavior scene-player)"], + [10, "(function none :behavior scene-player)"], + [11, "(function none :behavior scene-player)"], + [12, "(function none :behavior scene-player)"], + [13, "(function none :behavior scene-player)"], + [14, "(function none :behavior scene-player)"], + [15, "(function none :behavior scene-player)"], + [16, "(function none :behavior scene-player)"], + [17, "(function none :behavior scene-player)"], + [18, "(function none :behavior scene-player)"], + [19, "(function none :behavior scene-player)"], + [20, "(function none :behavior scene-player)"], + [21, "(function none :behavior scene-player)"], + [22, "(function none :behavior scene-player)"], + [23, "(function none :behavior scene-player)"], + [24, "(function none :behavior scene-player)"], + [25, "(function none :behavior scene-player)"], + [26, "(function none :behavior scene-player)"], + [27, "(function none :behavior scene-player)"], + [28, "(function none :behavior scene-player)"], + [29, "(function none :behavior scene-player)"], + [30, "(function none :behavior scene-player)"], + [31, "(function none :behavior scene-player)"], + [32, "(function none :behavior scene-player)"], + [33, "(function none :behavior scene-player)"], + [34, "(function none :behavior scene-player)"], + [35, "(function none :behavior scene-player)"], + [36, "(function none :behavior scene-player)"], + [37, "(function none :behavior scene-player)"], + [38, "(function none :behavior scene-player)"], + [39, "(function none :behavior scene-player)"] + ], + "freehq-scenes": [[0, "(function none :behavior scene-player)"]], + "hiphog-scenes": [ + [0, "(function none :behavior scene-player)"], + [1, "(function none :behavior scene-player)"], + [2, "(function none :behavior scene-player)"], + [3, "(function none :behavior scene-player)"] + ], + "rubble-attack": [[7, "(function int)"]], + "rublcst-scenes": [ + [0, "(function none :behavior scene-player)"], + [1, "(function none :behavior scene-player)"], + [2, "(function none :behavior scene-player)"], + [3, "(function none :behavior scene-player)"], + [4, "(function none :behavior scene-player)"], + [5, "(function none :behavior scene-player)"], + [6, "(function none :behavior scene-player)"], + [7, "(function none :behavior scene-player)"], + [8, "(function none :behavior scene-player)"], + [9, "(function none :behavior scene-player)"], + [10, "(function none :behavior scene-player)"], + [11, "(function none :behavior scene-player)"], + [12, "(function none :behavior scene-player)"], + [13, "(function none :behavior scene-player)"] + ], + "vinroom-scenes": [ + [0, "(function none :behavior scene-player)"], + [1, "(function none :behavior scene-player)"] + ], + "gungame-manager": [[6, "(function process symbol)"]], + "blow-tower-obs2": [ + [16, "(function bt-mh-flyer cspace float float vector vector int none)"], + [117, "(function bt-roboguard symbol quaternion)"], + [124, "(function cspace transformq none)"] + ], + "cty-blow-tower": [ + [39, "(function collide-shape-prim none)"], + [27, "(function process symbol)"], + [46, "(function collide-shape-prim none)"], + [69, "(function process object)"] + ], + "assault-enemies": [ + [36, "(function assault-crimson-guard city-attacker-info int)"] + ], + "assault-task": [[11, "(function symbol :behavior process)"]], + "precura-obs": [[98, "(function symbol :behavior process)"]], + "precurd-scenes": [ + [0, "(function none :behavior scene-player)"], + [1, "(function none :behavior scene-player)"], + [2, "(function none :behavior scene-player)"], + [3, "(function none :behavior scene-player)"], + [4, "(function none :behavior scene-player)"], + [5, "(function none :behavior scene-player)"], + [6, "(function none :behavior scene-player)"], + [7, "(function none :behavior scene-player)"], + [8, "(function none :behavior scene-player)"], + [9, "(function none :behavior scene-player)"], + [10, "(function none :behavior scene-player)"], + [11, "(function none :behavior scene-player)"], + [12, "(function none :behavior scene-player)"], + [13, "(function none :behavior scene-player)"], + [14, "(function none :behavior scene-player)"] + ] +} diff --git a/decompiler/config/jakx/pal/art-group-info.min.json b/decompiler/config/jakx/pal/art-group-info.min.json new file mode 100644 index 00000000000..3f7e4988697 --- /dev/null +++ b/decompiler/config/jakx/pal/art-group-info.min.json @@ -0,0 +1 @@ +{"adv-event-panel-ag":[[0,"adv-event-panel-lod0-jg"],[1,"adv-event-panel-lod0-mg"],[2,"adv-event-panel-idle-ja"],[3,"adv-event-panel-entera-ja"],[4,"adv-event-panel-exita-ja"]],"antenna-all-ag":[[0,"antenna-all-lod0-jg"],[1,"antenna-all-lod0-mg"],[2,"antenna-all-idle-ja"]],"ash-hr-cred-ag":[[0,"ash-hr-cred-lod0-jg"],[1,"ash-hr-cred-lod0-mg"],[2,"ash-hr-cred-shadow-mg"],[3,"ash-hr-cred-turntable-ja"]],"atoll-dish-ag":[[0,"atoll-dish-lod0-jg"],[1,"atoll-dish-lod0-mg"],[2,"atoll-dish-idle-ja"]],"atoll-rotor-ag":[[0,"atoll-rotor-lod0-jg"],[1,"atoll-rotor-lod0-mg"],[2,"atoll-rotor-idle-ja"]],"body-parts-tab-ag":[[0,"body-parts-tab-lod0-jg"],[1,"body-parts-tab-lod0-mg"],[2,"body-parts-tab-idle-ja"],[3,"body-parts-tab-entera-ja"],[4,"body-parts-tab-exita-ja"]],"bottom-bar-ag":[[0,"bottom-bar-lod0-jg"],[1,"bottom-bar-lod0-mg"],[2,"bottom-bar-idle-ja"],[3,"bottom-bar-entera-ja"],[4,"bottom-bar-enterb-ja"],[5,"bottom-bar-exita-ja"],[6,"bottom-bar-exitb-ja"]],"brd-pool-water-ag":[[0,"brd-pool-water-lod0-jg"],[1,"brd-pool-water-lod0-mg"],[2,"brd-pool-water-idle-ja"]],"car-color-tab-ag":[[0,"car-color-tab-lod0-jg"],[1,"car-color-tab-lod0-mg"],[2,"car-color-tab-idle-ja"],[3,"car-color-tab-entera-ja"],[4,"car-color-tab-exita-ja"]],"car-interior-ag":[[0,"car-interior-lod0-jg"],[1,"car-interior-lod0-mg"],[2,"car-interior-lod1-mg"],[3,"car-interior-idle-ja"]],"car-vert-tab-ag":[[0,"car-vert-tab-lod0-jg"],[1,"car-vert-tab-lod0-mg"],[2,"car-vert-tab-idle-ja"],[3,"car-vert-tab-entera-ja"],[4,"car-vert-tab-exita-ja"]],"cash-bar-ag":[[0,"cash-bar-lod0-jg"],[1,"cash-bar-lod0-mg"],[2,"cash-bar-idle-ja"],[3,"cash-bar-entera-ja"],[4,"cash-bar-exita-ja"]],"character-select-ag":[[0,"character-select-lod0-jg"],[1,"character-select-lod0-mg"],[2,"character-select-idle-ja"],[3,"character-select-entera-ja"],[4,"character-select-exitrb-ja"]],"cliffs-fence-debris-ag":[[0,"cliffs-fence-debris-post-lod0-jg"],[1,"cliffs-fence-debris-post-lod0-mg"],[2,"cliffs-fence-debris-raila-lod0-jg"],[3,"cliffs-fence-debris-raila-lod0-mg"],[4,"cliffs-fence-debris-railb-lod0-jg"],[5,"cliffs-fence-debris-railb-lod0-mg"],[6,"cliffs-fence-debris-railc-lod0-jg"],[7,"cliffs-fence-debris-railc-lod0-mg"]],"cliffs-wood-fence-a-ag":[[0,"cliffs-wood-fence-a-lod0-jg"],[1,"cliffs-wood-fence-a-lod0-mg"],[2,"cliffs-wood-fence-a-idle-ja"]],"cliffs-wood-fence-b-ag":[[0,"cliffs-wood-fence-b-lod0-jg"],[1,"cliffs-wood-fence-b-lod0-mg"],[2,"cliffs-wood-fence-b-idle-ja"]],"cliffs-wood-fence-c-ag":[[0,"cliffs-wood-fence-c-lod0-jg"],[1,"cliffs-wood-fence-c-lod0-mg"],[2,"cliffs-wood-fence-c-idle-ja"]],"cliffs-wood-fence-d-ag":[[0,"cliffs-wood-fence-d-lod0-jg"],[1,"cliffs-wood-fence-d-lod0-mg"],[2,"cliffs-wood-fence-d-idle-ja"]],"coli-atlas-base-ag":[[0,"coli-atlas-base-lod0-jg"],[1,"coli-atlas-base-lod0-mg"],[2,"coli-atlas-base-lod1-mg"],[3,"coli-atlas-base-lod2-mg"],[4,"coli-atlas-base-idle-ja"],[5,"coli-atlas-base-a-lod0-jg"],[6,"coli-atlas-base-a-lod0-mg"],[7,"coli-atlas-base-a-lod1-mg"],[8,"coli-atlas-base-a-lod2-mg"],[9,"coli-atlas-base-a-idle-ja"],[10,"coli-atlas-base-b-lod0-jg"],[11,"coli-atlas-base-b-lod0-mg"],[12,"coli-atlas-base-b-lod1-mg"],[13,"coli-atlas-base-b-lod2-mg"],[14,"coli-atlas-base-b-idle-ja"]],"coli-atlas-break-ag":[[0,"coli-atlas-break-lod0-jg"],[1,"coli-atlas-break-lod0-mg"],[2,"coli-atlas-break-idle-ja"],[3,"coli-atlas-break-a-lod0-jg"],[4,"coli-atlas-break-a-lod0-mg"],[5,"coli-atlas-break-a-idle-ja"],[6,"coli-atlas-break-b-lod0-jg"],[7,"coli-atlas-break-b-lod0-mg"],[8,"coli-atlas-break-b-idle-ja"]],"coli-atlas-globe-ag":[[0,"coli-atlas-globe-lod0-jg"],[1,"coli-atlas-globe-lod0-mg"],[2,"coli-atlas-globe-lod1-mg"],[3,"coli-atlas-globe-lod2-mg"],[4,"coli-atlas-globe-idle-ja"]],"coli-atlas-pillar-ag":[[0,"coli-atlas-pillar-lod0-jg"],[1,"coli-atlas-pillar-lod0-mg"],[2,"coli-atlas-pillar-lod1-mg"],[3,"coli-atlas-pillar-lod2-mg"],[4,"coli-atlas-pillar-idle-ja"]],"coli-atlas-statue-ag":[[0,"coli-atlas-statue-lod0-jg"],[1,"coli-atlas-statue-lod0-mg"],[2,"coli-atlas-statue-lod1-mg"],[3,"coli-atlas-statue-lod2-mg"],[4,"coli-atlas-statue-idle-ja"]],"coli-ball-collision-ag":[[0,"coli-ball-collision-lod0-jg"],[1,"coli-ball-collision-lod0-mg"],[2,"coli-ball-collision-idle-ja"]],"coli-bowl-a-ag":[[0,"coli-bowl-a-lod0-jg"],[1,"coli-bowl-a-lod0-mg"],[2,"coli-bowl-a-lod1-mg"],[3,"coli-bowl-a-lod2-mg"],[4,"coli-bowl-a-idle-ja"]],"coli-bowl-a-debris-ag":[[0,"coli-bowl-a-debris-a-lod0-jg"],[1,"coli-bowl-a-debris-a-lod0-mg"],[2,"coli-bowl-a-debris-b-lod0-jg"],[3,"coli-bowl-a-debris-b-lod0-mg"],[4,"coli-bowl-a-debris-c-lod0-jg"],[5,"coli-bowl-a-debris-c-lod0-mg"]],"coli-bowl-hanger-ag":[[0,"coli-bowl-hanger-lod0-jg"],[1,"coli-bowl-hanger-lod0-mg"],[2,"coli-bowl-hanger-lod1-mg"],[3,"coli-bowl-hanger-lod2-mg"],[4,"coli-bowl-hanger-idle-ja"]],"coli-bowl-hanger-debris-ag":[[0,"coli-bowl-hanger-debris-a-lod0-jg"],[1,"coli-bowl-hanger-debris-a-lod0-mg"],[2,"coli-bowl-hanger-debris-b-lod0-jg"],[3,"coli-bowl-hanger-debris-b-lod0-mg"],[4,"coli-bowl-hanger-debris-c-lod0-jg"],[5,"coli-bowl-hanger-debris-c-lod0-mg"]],"coli-bridge-a-ag":[[0,"coli-bridge-a-lod0-jg"],[1,"coli-bridge-a-lod0-mg"],[2,"coli-bridge-a-idle-ja"],[3,"coli-bridge-a-a-lod0-jg"],[4,"coli-bridge-a-a-lod0-mg"],[5,"coli-bridge-a-a-lod1-mg"],[6,"coli-bridge-a-a-lod2-mg"],[7,"coli-bridge-a-a-idle-ja"],[8,"coli-bridge-a-b-lod0-jg"],[9,"coli-bridge-a-b-lod0-mg"],[10,"coli-bridge-a-b-idle-ja"],[11,"coli-bridge-a-c-lod0-jg"],[12,"coli-bridge-a-c-lod0-mg"],[13,"coli-bridge-a-c-idle-ja"]],"coli-bridge-a-debris-ag":[[0,"coli-bridge-a-debris-a-lod0-jg"],[1,"coli-bridge-a-debris-a-lod0-mg"],[2,"coli-bridge-a-debris-b-lod0-jg"],[3,"coli-bridge-a-debris-b-lod0-mg"],[4,"coli-bridge-a-debris-c-lod0-jg"],[5,"coli-bridge-a-debris-c-lod0-mg"]],"coli-center-arch-ag":[[0,"coli-center-arch-lod0-jg"],[1,"coli-center-arch-lod0-mg"],[2,"coli-center-arch-idle-ja"],[3,"coli-center-arch-explode-lod0-jg"],[4,"coli-center-arch-explode-lod0-mg"],[5,"coli-center-arch-explode-idle-ja"]],"coli-center-arch-debris-ag":[[0,"coli-center-arch-debris-a-lod0-jg"],[1,"coli-center-arch-debris-a-lod0-mg"],[2,"coli-center-arch-debris-b-lod0-jg"],[3,"coli-center-arch-debris-b-lod0-mg"],[4,"coli-center-arch-debris-c-lod0-jg"],[5,"coli-center-arch-debris-c-lod0-mg"]],"coli-gate-a-straight-ag":[[0,"coli-gate-a-straight-lod0-jg"],[1,"coli-gate-a-straight-lod0-mg"],[2,"coli-gate-a-straight-lod1-mg"],[3,"coli-gate-a-straight-lod2-mg"],[4,"coli-gate-a-straight-idle-ja"]],"coli-gate-b-curved-ag":[[0,"coli-gate-b-curved-lod0-jg"],[1,"coli-gate-b-curved-lod0-mg"],[2,"coli-gate-b-curved-lod1-mg"],[3,"coli-gate-b-curved-lod2-mg"],[4,"coli-gate-b-curved-idle-ja"]],"coli-gate-debris-ag":[[0,"coli-gate-debris-a-lod0-jg"],[1,"coli-gate-debris-a-lod0-mg"],[2,"coli-gate-debris-b-lod0-jg"],[3,"coli-gate-debris-b-lod0-mg"],[4,"coli-gate-debris-c-lod0-jg"],[5,"coli-gate-debris-c-lod0-mg"]],"coli-pillar-break-ag":[[0,"coli-pillar-break-lod0-jg"],[1,"coli-pillar-break-lod0-mg"],[2,"coli-pillar-break-lod1-mg"],[3,"coli-pillar-break-lod2-mg"],[4,"coli-pillar-break-idle-ja"]],"coli-pillar-debris-ag":[[0,"coli-pillar-debris-a-lod0-jg"],[1,"coli-pillar-debris-a-lod0-mg"],[2,"coli-pillar-debris-b-lod0-jg"],[3,"coli-pillar-debris-b-lod0-mg"],[4,"coli-pillar-debris-c-lod0-jg"],[5,"coli-pillar-debris-c-lod0-mg"]],"coli-stands-rail-a-ag":[[0,"coli-stands-rail-a-lod0-jg"],[1,"coli-stands-rail-a-lod0-mg"],[2,"coli-stands-rail-a-lod1-mg"],[3,"coli-stands-rail-a-lod2-mg"],[4,"coli-stands-rail-a-idle-ja"]],"coli-stands-rail-b-ag":[[0,"coli-stands-rail-b-lod0-jg"],[1,"coli-stands-rail-b-lod0-mg"],[2,"coli-stands-rail-b-lod1-mg"],[3,"coli-stands-rail-b-lod2-mg"],[4,"coli-stands-rail-b-idle-ja"]],"coli-stands-rail-c-ag":[[0,"coli-stands-rail-c-lod0-jg"],[1,"coli-stands-rail-c-lod0-mg"],[2,"coli-stands-rail-c-lod1-mg"],[3,"coli-stands-rail-c-lod2-mg"],[4,"coli-stands-rail-c-idle-ja"]],"coli-stands-rail-debris-ag":[[0,"coli-stands-rail-debris-a-lod0-jg"],[1,"coli-stands-rail-debris-a-lod0-mg"],[2,"coli-stands-rail-debris-b-lod0-jg"],[3,"coli-stands-rail-debris-b-lod0-mg"],[4,"coli-stands-rail-debris-c-lod0-jg"],[5,"coli-stands-rail-debris-c-lod0-mg"]],"coli-statue-base-c-ag":[[0,"coli-statue-base-c-lod0-jg"],[1,"coli-statue-base-c-lod0-mg"],[2,"coli-statue-base-c-lod1-mg"],[3,"coli-statue-base-c-lod2-mg"],[4,"coli-statue-base-c-idle-ja"],[5,"coli-statue-base-c-a-lod0-jg"],[6,"coli-statue-base-c-a-lod0-mg"],[7,"coli-statue-base-c-a-lod1-mg"],[8,"coli-statue-base-c-a-lod2-mg"],[9,"coli-statue-base-c-a-idle-ja"],[10,"coli-statue-base-c-b-lod0-jg"],[11,"coli-statue-base-c-b-lod0-mg"],[12,"coli-statue-base-c-b-lod1-mg"],[13,"coli-statue-base-c-b-lod2-mg"],[14,"coli-statue-base-c-b-idle-ja"],[15,"coli-statue-base-c-c-lod0-jg"],[16,"coli-statue-base-c-c-lod0-mg"],[17,"coli-statue-base-c-c-lod1-mg"],[18,"coli-statue-base-c-c-lod2-mg"],[19,"coli-statue-base-c-c-idle-ja"]],"coli-statue-base-s-ag":[[0,"coli-statue-base-s-lod0-jg"],[1,"coli-statue-base-s-lod0-mg"],[2,"coli-statue-base-s-lod1-mg"],[3,"coli-statue-base-s-lod2-mg"],[4,"coli-statue-base-s-idle-ja"],[5,"coli-statue-base-s-a-lod0-jg"],[6,"coli-statue-base-s-a-lod0-mg"],[7,"coli-statue-base-s-a-lod1-mg"],[8,"coli-statue-base-s-a-lod2-mg"],[9,"coli-statue-base-s-a-idle-ja"],[10,"coli-statue-base-s-b-lod0-jg"],[11,"coli-statue-base-s-b-lod0-mg"],[12,"coli-statue-base-s-b-lod1-mg"],[13,"coli-statue-base-s-b-lod2-mg"],[14,"coli-statue-base-s-b-idle-ja"],[15,"coli-statue-base-s-c-lod0-jg"],[16,"coli-statue-base-s-c-lod0-mg"],[17,"coli-statue-base-s-c-lod1-mg"],[18,"coli-statue-base-s-c-lod2-mg"],[19,"coli-statue-base-s-c-idle-ja"]],"coli-statue-chain-ag":[[0,"coli-statue-chain-lod0-jg"],[1,"coli-statue-chain-lod0-mg"],[2,"coli-statue-chain-idle-ja"],[3,"coli-statue-chain-a-lod0-jg"],[4,"coli-statue-chain-a-lod0-mg"],[5,"coli-statue-chain-a-idle-ja"]],"coli-statue-female-ag":[[0,"coli-statue-female-lod0-jg"],[1,"coli-statue-female-lod0-mg"],[2,"coli-statue-female-lod1-mg"],[3,"coli-statue-female-lod2-mg"],[4,"coli-statue-female-idle-ja"]],"coli-statue-female-c-break-ag":[[0,"coli-statue-female-c-break-lod0-jg"],[1,"coli-statue-female-c-break-lod0-mg"],[2,"coli-statue-female-c-break-idle-ja"],[3,"coli-statue-female-c-break-a-lod0-jg"],[4,"coli-statue-female-c-break-a-lod0-mg"],[5,"coli-statue-female-c-break-a-idle-ja"],[6,"coli-statue-female-c-break-b-lod0-jg"],[7,"coli-statue-female-c-break-b-lod0-mg"],[8,"coli-statue-female-c-break-b-idle-ja"]],"coli-statue-female-s-break-ag":[[0,"coli-statue-female-s-break-lod0-jg"],[1,"coli-statue-female-s-break-lod0-mg"],[2,"coli-statue-female-s-break-idle-ja"],[3,"coli-statue-female-s-break-a-lod0-jg"],[4,"coli-statue-female-s-break-a-lod0-mg"],[5,"coli-statue-female-s-break-a-idle-ja"],[6,"coli-statue-female-s-break-b-lod0-jg"],[7,"coli-statue-female-s-break-b-lod0-mg"],[8,"coli-statue-female-s-break-b-idle-ja"]],"collectables-ag":[[0,"collectables-generic-ripples-lod0-jg"],[1,"collectables-generic-ripples-lod0-mg"],[2,"collectables-generic-ripples-idle-ja"],[3,"collectables-generic-ripples-cycle-ja"]],"collectoid-ag":[[0,"collectoid-lod0-jg"],[1,"collectoid-lod0-mg"],[2,"collectoid-shadow-mg"],[3,"collectoid-idle-ja"]],"collectoid-debris-ag":[[0,"collectoid-debris-a-lod0-jg"],[1,"collectoid-debris-a-lod0-mg"],[2,"collectoid-debris-b-lod0-jg"],[3,"collectoid-debris-b-lod0-mg"],[4,"collectoid-debris-c-lod0-jg"],[5,"collectoid-debris-c-lod0-mg"],[6,"collectoid-debris-d-lod0-jg"],[7,"collectoid-debris-d-lod0-mg"]],"com-rod-of-god-ag":[[0,"com-rod-of-god-lod0-jg"],[1,"com-rod-of-god-lod0-mg"],[2,"com-rod-of-god-idle-ja"]],"combat-racing-ag":[[0,"combat-racing-lod0-jg"],[1,"combat-racing-lod0-mg"],[2,"combat-racing-idle-ja"],[3,"combat-racing-onscreen-ja"]],"confirm-screen-ag":[[0,"confirm-screen-lod0-jg"],[1,"confirm-screen-lod0-mg"],[2,"confirm-screen-idle-ja"],[3,"confirm-screen-entera-ja"],[4,"confirm-screen-exita-ja"]],"construction-barricade-ag":[[0,"construction-barricade-lod0-jg"],[1,"construction-barricade-lod0-mg"],[2,"construction-barricade-lod1-mg"],[3,"construction-barricade-lod2-mg"],[4,"construction-barricade-shadow-mg"],[5,"construction-barricade-idle-ja"]],"construction-cone-ag":[[0,"construction-cone-lod0-jg"],[1,"construction-cone-lod0-mg"],[2,"construction-cone-lod1-mg"],[3,"construction-cone-lod2-mg"],[4,"construction-cone-idle-ja"]],"crate-ag":[[0,"crate-metal-lod0-jg"],[1,"crate-metal-lod0-mg"],[2,"crate-metal-lod1-mg"],[3,"crate-idle-ja"]],"ctf-base-ag":[[0,"ctf-base-lod0-jg"],[1,"ctf-base-lod0-mg"],[2,"ctf-base-idle-ja"],[3,"ctf-base-b-lod0-jg"],[4,"ctf-base-b-lod0-mg"],[5,"ctf-base-b-idle-ja"],[6,"ctf-base-c-lod0-jg"],[7,"ctf-base-c-lod0-mg"],[8,"ctf-base-c-flag-ja"]],"cust-icon-tab-ag":[[0,"cust-icon-tab-lod0-jg"],[1,"cust-icon-tab-lod0-mg"],[2,"cust-icon-tab-idle-ja"],[3,"cust-icon-tab-entera-ja"],[4,"cust-icon-tab-exita-ja"]],"cust-title-tab-ag":[[0,"cust-title-tab-lod0-jg"],[1,"cust-title-tab-lod0-mg"],[2,"cust-title-tab-idle-ja"],[3,"cust-title-tab-entera-ja"],[4,"cust-title-tab-exita-ja"]],"dax-hr-cred-ag":[[0,"dax-hr-cred-lod0-jg"],[1,"dax-hr-cred-lod0-mg"],[2,"dax-hr-cred-shadow-mg"],[3,"dax-hr-cred-turntable-ja"]],"daxter-ag":[[0,"daxter-lod0-jg"],[1,"daxter-lod0-mg"],[2,"daxter-falcon-left-ja"],[3,"daxter-falcon-center-ja"],[4,"daxter-falcon-right-big-ja"],[5,"daxter-falcon-left-big-ja"],[6,"daxter-falcon-right-ja"],[7,"daxter-falcon-up-ja"],[8,"daxter-falcon-jump-ja"],[9,"daxter-falcon-right-return-ja"],[10,"daxter-falcon-left-return-ja"]],"daxter-highres-ag":[[0,"daxter-highres-lod0-jg"],[1,"daxter-highres-lod0-mg"],[2,"daxter-highres-shadow-mg"]],"deathrace-drone-ag":[[0,"deathrace-drone-lod0-jg"],[1,"deathrace-drone-lod0-mg"],[2,"deathrace-drone-lod1-mg"],[3,"deathrace-drone-lod2-mg"],[4,"deathrace-drone-shadow-mg"],[5,"deathrace-drone-idle-ja"],[6,"deathrace-drone-wheel-lod0-jg"],[7,"deathrace-drone-wheel-lod0-mg"],[8,"deathrace-drone-wheel-lod1-mg"],[9,"deathrace-drone-wheel-lod2-mg"],[10,"deathrace-drone-wheel-idle-ja"]],"des-cactus-a-ag":[[0,"des-cactus-a-lod0-jg"],[1,"des-cactus-a-lod0-mg"],[2,"des-cactus-a-lod1-mg"],[3,"des-cactus-a-lod2-mg"],[4,"des-cactus-a-lod3-mg"],[5,"des-cactus-a-idle-ja"],[6,"des-cactus-a-explode-lod0-jg"],[7,"des-cactus-a-explode-lod0-mg"],[8,"des-cactus-a-explode-idle-ja"]],"des-cactus-b-ag":[[0,"des-cactus-b-lod0-jg"],[1,"des-cactus-b-lod0-mg"],[2,"des-cactus-b-lod1-mg"],[3,"des-cactus-b-lod2-mg"],[4,"des-cactus-b-lod3-mg"],[5,"des-cactus-b-idle-ja"],[6,"des-cactus-b-explode-lod0-jg"],[7,"des-cactus-b-explode-lod0-mg"],[8,"des-cactus-b-explode-idle-ja"]],"drome-tunnel-drum-ag":[[0,"drome-tunnel-drum-lod0-jg"],[1,"drome-tunnel-drum-lod0-mg"],[2,"drome-tunnel-drum-idle-ja"]],"eco-blue-ag":[[0,"eco-blue-lod0-jg"],[1,"eco-blue-lod0-mg"],[2,"eco-blue-lod1-mg"],[3,"eco-blue-lod2-mg"],[4,"eco-blue-shadow-mg"],[5,"eco-blue-idle-ja"]],"eco-blue-debris-ag":[[0,"eco-blue-debris-a-lod0-jg"],[1,"eco-blue-debris-a-lod0-mg"],[2,"eco-blue-debris-b-lod0-jg"],[3,"eco-blue-debris-b-lod0-mg"],[4,"eco-blue-debris-c-lod0-jg"],[5,"eco-blue-debris-c-lod0-mg"],[6,"eco-blue-debris-d-lod0-jg"],[7,"eco-blue-debris-d-lod0-mg"]],"eco-dark-ag":[[0,"eco-dark-lod0-jg"],[1,"eco-dark-lod0-mg"],[2,"eco-dark-lod1-mg"],[3,"eco-dark-lod2-mg"],[4,"eco-dark-shadow-mg"],[5,"eco-dark-idle-ja"]],"eco-green-ag":[[0,"eco-green-lod0-jg"],[1,"eco-green-lod0-mg"],[2,"eco-green-lod1-mg"],[3,"eco-green-lod2-mg"],[4,"eco-green-shadow-mg"],[5,"eco-green-idle-ja"]],"eco-light-ag":[[0,"eco-light-lod0-jg"],[1,"eco-light-lod0-mg"],[2,"eco-light-idle-ja"]],"eco-red-ag":[[0,"eco-red-lod0-jg"],[1,"eco-red-lod0-mg"],[2,"eco-red-lod1-mg"],[3,"eco-red-lod2-mg"],[4,"eco-red-shadow-mg"],[5,"eco-red-idle-ja"]],"eco-yellow-ag":[[0,"eco-yellow-lod0-jg"],[1,"eco-yellow-lod0-mg"],[2,"eco-yellow-lod1-mg"],[3,"eco-yellow-lod2-mg"],[4,"eco-yellow-shadow-mg"],[5,"eco-yellow-idle-ja"]],"finish-banner-ag":[[0,"finish-banner-lod0-jg"],[1,"finish-banner-lod0-mg"],[2,"finish-banner-idle-ja"]],"fuel-cell-ag":[[0,"fuel-cell-lod0-jg"],[1,"fuel-cell-lod0-mg"],[2,"fuel-cell-shadow-mg"],[3,"fuel-cell-idle-ja"],[4,"fuel-cell-still-ja"]],"fuel-cell-shield-ag":[[0,"fuel-cell-shield-lod0-jg"],[1,"fuel-cell-shield-lod0-mg"],[2,"fuel-cell-shield-idle-ja"]],"full-screen-ag":[[0,"full-screen-lod0-jg"],[1,"full-screen-lod0-mg"],[2,"full-screen-idle-ja"],[3,"full-screen-entera-ja"],[4,"full-screen-exita-ja"]],"garage-car-arm-ag":[[0,"garage-car-arm-lod0-jg"],[1,"garage-car-arm-lod0-mg"],[2,"garage-car-arm-idle-ja"]],"garage-cinema-ag":[[0,"garage-cinema-lod0-jg"],[1,"garage-cinema-lod0-mg"],[2,"garage-cinema-idle-ja"]],"garage-door-ag":[[0,"garage-door-lod0-jg"],[1,"garage-door-lod0-mg"],[2,"garage-door-idle-ja"]],"garage-sliding-door-ag":[[0,"garage-sliding-door-lod0-jg"],[1,"garage-sliding-door-lod0-mg"],[2,"garage-sliding-door-idle-ja"]],"garage-tool-arm-ag":[[0,"garage-tool-arm-lod0-jg"],[1,"garage-tool-arm-lod0-mg"],[2,"garage-tool-arm-idle-ja"]],"garage-turntable-ag":[[0,"garage-turntable-lod0-jg"],[1,"garage-turntable-lod0-mg"],[2,"garage-turntable-idle-ja"]],"grenade-ag":[[0,"grenade-lod0-jg"],[1,"grenade-lod0-mg"],[2,"grenade-idle-ja"]],"gtb-hr-cred-ag":[[0,"gtb-hr-cred-lod0-jg"],[1,"gtb-hr-cred-lod0-mg"],[2,"gtb-hr-cred-shadow-mg"],[3,"gtb-hr-cred-turntable-ja"]],"gun-ag":[[0,"gun-lod0-jg"],[1,"gun-lod0-mg"],[2,"gun-idle-ja"],[3,"gun-yellow-to-missile-ja"],[4,"gun-missile-to-grenade-ja"],[5,"gun-grenade-to-yellow-ja"],[6,"gun-missile-to-yellow-ja"],[7,"gun-grenade-to-missile-ja"],[8,"gun-yellow-to-grenade-ja"]],"haven-gen-light-ag":[[0,"haven-gen-light-lod0-jg"],[1,"haven-gen-light-lod0-mg"],[2,"haven-gen-light-idle-ja"]],"haven-gen-light-debris-ag":[[0,"haven-gen-light-debris-a-lod0-jg"],[1,"haven-gen-light-debris-a-lod0-mg"],[2,"haven-gen-light-debris-b-lod0-jg"],[3,"haven-gen-light-debris-b-lod0-mg"],[4,"haven-gen-light-debris-c-lod0-jg"],[5,"haven-gen-light-debris-c-lod0-mg"],[6,"haven-gen-light-debris-d-lod0-jg"],[7,"haven-gen-light-debris-d-lod0-mg"]],"haven-trashcan-ag":[[0,"haven-trashcan-lod0-jg"],[1,"haven-trashcan-lod0-mg"],[2,"haven-trashcan-idle-ja"]],"helmet-a-ag":[[0,"helmet-a-lod0-jg"],[1,"helmet-a-lod0-mg"],[2,"helmet-a-idle-ja"]],"helmet-b-ag":[[0,"helmet-b-lod0-jg"],[1,"helmet-b-lod0-mg"],[2,"helmet-b-idle-ja"]],"helmet-c-ag":[[0,"helmet-c-lod0-jg"],[1,"helmet-c-lod0-mg"],[2,"helmet-c-idle-ja"]],"helmet-d-ag":[[0,"helmet-d-lod0-jg"],[1,"helmet-d-lod0-mg"],[2,"helmet-d-idle-ja"]],"helmet-e-ag":[[0,"helmet-e-lod0-jg"],[1,"helmet-e-lod0-mg"],[2,"helmet-e-idle-ja"]],"helmet-f-ag":[[0,"helmet-f-lod0-jg"],[1,"helmet-f-lod0-mg"],[2,"helmet-f-idle-ja"]],"ice-debris-ag":[[0,"ice-debris-a-lod0-jg"],[1,"ice-debris-a-lod0-mg"],[2,"ice-debris-b-lod0-jg"],[3,"ice-debris-b-lod0-mg"],[4,"ice-debris-c-lod0-jg"],[5,"ice-debris-c-lod0-mg"],[6,"ice-debris-d-lod0-jg"],[7,"ice-debris-d-lod0-mg"],[8,"ice-debris-e-lod0-jg"],[9,"ice-debris-e-lod0-mg"]],"ice-flag-ag":[[0,"ice-flag-lod0-jg"],[1,"ice-flag-lod0-mg"],[2,"ice-flag-idle-ja"]],"interface-cam-ag":[[0,"interface-cam-lod0-jg"],[1,"interface-cam-lod0-mg"],[2,"interface-cam-idle-ja"],[3,"interface-cam-move-ja"]],"jakd-hr-cred-ag":[[0,"jakd-hr-cred-lod0-jg"],[1,"jakd-hr-cred-lod0-mg"],[2,"jakd-hr-cred-shadow-mg"],[3,"jakd-hr-cred-turntable-ja"]],"jakxlogo-ag":[[0,"jakxlogo-lod0-jg"],[1,"jakxlogo-lod0-mg"],[2,"jakxlogo-idle-ja"],[3,"jakxlogo-onscreen-ja"]],"jungle-branch-collision-a-ag":[[0,"jungle-branch-collision-a-lod0-jg"],[1,"jungle-branch-collision-a-lod0-mg"],[2,"jungle-branch-collision-a-idle-ja"]],"jungle-clay-jar-a-ag":[[0,"jungle-clay-jar-a-lod0-jg"],[1,"jungle-clay-jar-a-lod0-mg"],[2,"jungle-clay-jar-a-idle-ja"]],"jungle-clay-jar-b-ag":[[0,"jungle-clay-jar-b-lod0-jg"],[1,"jungle-clay-jar-b-lod0-mg"],[2,"jungle-clay-jar-b-idle-ja"]],"jungle-debris-ag":[[0,"jungle-debris-wooda-lod0-jg"],[1,"jungle-debris-wooda-lod0-mg"],[2,"jungle-debris-woodb-lod0-jg"],[3,"jungle-debris-woodb-lod0-mg"],[4,"jungle-debris-woodc-lod0-jg"],[5,"jungle-debris-woodc-lod0-mg"],[6,"jungle-debris-woodd-lod0-jg"],[7,"jungle-debris-woodd-lod0-mg"]],"jungle-debris-jar-a-ag":[[0,"jungle-debris-jar-a-a-lod0-jg"],[1,"jungle-debris-jar-a-a-lod0-mg"],[2,"jungle-debris-jar-a-b-lod0-jg"],[3,"jungle-debris-jar-a-b-lod0-mg"],[4,"jungle-debris-jar-a-c-lod0-jg"],[5,"jungle-debris-jar-a-c-lod0-mg"],[6,"jungle-debris-jar-a-d-lod0-jg"],[7,"jungle-debris-jar-a-d-lod0-mg"]],"jungle-debris-jar-b-ag":[[0,"jungle-debris-jar-b-a-lod0-jg"],[1,"jungle-debris-jar-b-a-lod0-mg"],[2,"jungle-debris-jar-b-b-lod0-jg"],[3,"jungle-debris-jar-b-b-lod0-mg"],[4,"jungle-debris-jar-b-c-lod0-jg"],[5,"jungle-debris-jar-b-c-lod0-mg"],[6,"jungle-debris-jar-b-d-lod0-jg"],[7,"jungle-debris-jar-b-d-lod0-mg"]],"jungle-flaming-arrow-ag":[[0,"jungle-flaming-arrow-lod0-jg"],[1,"jungle-flaming-arrow-lod0-mg"],[2,"jungle-flaming-arrow-idle-ja"]],"jungle-statue-small-debris-ag":[[0,"jungle-statue-small-debris-a-lod0-jg"],[1,"jungle-statue-small-debris-a-lod0-mg"],[2,"jungle-statue-small-debris-b-lod0-jg"],[3,"jungle-statue-small-debris-b-lod0-mg"],[4,"jungle-statue-small-debris-c-lod0-jg"],[5,"jungle-statue-small-debris-c-lod0-mg"],[6,"jungle-statue-small-debris-d-lod0-jg"],[7,"jungle-statue-small-debris-d-lod0-mg"]],"jungle-statue-small-outdoors-ag":[[0,"jungle-statue-small-outdoors-lod0-jg"],[1,"jungle-statue-small-outdoors-lod0-mg"],[2,"jungle-statue-small-outdoors-idle-ja"]],"jungle-stone-snake-head-ag":[[0,"jungle-stone-snake-head-lod0-jg"],[1,"jungle-stone-snake-head-lod0-mg"],[2,"jungle-stone-snake-head-lod1-mg"],[3,"jungle-stone-snake-head-idle-ja"],[4,"jungle-stone-snake-head-explode-lod0-jg"],[5,"jungle-stone-snake-head-explode-lod0-mg"],[6,"jungle-stone-snake-head-explode-idle-ja"]],"jungle-tree-root-large-a-ag":[[0,"jungle-tree-root-large-a-lod0-jg"],[1,"jungle-tree-root-large-a-lod0-mg"],[2,"jungle-tree-root-large-a-idle-ja"]],"jungle-tree-root-large-b-ag":[[0,"jungle-tree-root-large-b-lod0-jg"],[1,"jungle-tree-root-large-b-lod0-mg"],[2,"jungle-tree-root-large-b-idle-ja"]],"kcro-bouncy-tire-a-ag":[[0,"kcro-bouncy-tire-a-lod0-jg"],[1,"kcro-bouncy-tire-a-lod0-mg"],[2,"kcro-bouncy-tire-a-idle-ja"]],"kcro-fence-debris-ag":[[0,"kcro-fence-debris-post-lod0-jg"],[1,"kcro-fence-debris-post-lod0-mg"],[2,"kcro-fence-debris-raila-lod0-jg"],[3,"kcro-fence-debris-raila-lod0-mg"],[4,"kcro-fence-debris-railb-lod0-jg"],[5,"kcro-fence-debris-railb-lod0-mg"],[6,"kcro-fence-debris-railc-lod0-jg"],[7,"kcro-fence-debris-railc-lod0-mg"]],"kcro-fence-piece-a-ag":[[0,"kcro-fence-piece-a-lod0-jg"],[1,"kcro-fence-piece-a-lod0-mg"],[2,"kcro-fence-piece-a-idle-ja"]],"kcro-fence-piece-b-ag":[[0,"kcro-fence-piece-b-lod0-jg"],[1,"kcro-fence-piece-b-lod0-mg"],[2,"kcro-fence-piece-b-idle-ja"]],"kcro-flag-down-ag":[[0,"kcro-flag-down-lod0-jg"],[1,"kcro-flag-down-lod0-mg"],[2,"kcro-flag-down-idle-ja"]],"kcro-oil-barrel-ag":[[0,"kcro-oil-barrel-lod0-jg"],[1,"kcro-oil-barrel-lod0-mg"],[2,"kcro-oil-barrel-idle-ja"]],"kcro-staff-flag-ag":[[0,"kcro-staff-flag-lod0-jg"],[1,"kcro-staff-flag-lod0-mg"],[2,"kcro-staff-flag-idle-ja"]],"kei-hr-cred-ag":[[0,"kei-hr-cred-lod0-jg"],[1,"kei-hr-cred-lod0-mg"],[2,"kei-hr-cred-shadow-mg"],[3,"kei-hr-cred-turntable-ja"]],"keira-highres-ag":[[0,"keira-highres-lod0-jg"],[1,"keira-highres-lod0-mg"],[2,"keira-highres-shadow-mg"],[3,"keira-highres-idle-ja"]],"keyboard-ag":[[0,"keyboard-lod0-jg"],[1,"keyboard-lod0-mg"],[2,"keyboard-idle-ja"],[3,"keyboard-entera-ja"],[4,"keyboard-exita-ja"]],"kle-hr-cred-ag":[[0,"kle-hr-cred-lod0-jg"],[1,"kle-hr-cred-lod0-mg"],[2,"kle-hr-cred-shadow-mg"],[3,"kle-hr-cred-kleever-R1-cg"],[4,"kle-hr-cred-kleever-L1-cg"],[5,"kle-hr-cred-kleever-Center-cg"],[6,"kle-hr-cred-kleever-R2-cg"],[7,"kle-hr-cred-kleever-L2-cg"],[8,"kle-hr-cred-turntable-ja"]],"kras-fireworks-ship-a-ag":[[0,"kras-fireworks-ship-a-lod0-jg"],[1,"kras-fireworks-ship-a-lod0-mg"],[2,"kras-fireworks-ship-a-idle-ja"]],"kras-fishtank-lo-ag":[[0,"kras-fishtank-lo-lod0-jg"],[1,"kras-fishtank-lo-lod0-mg"],[2,"kras-fishtank-lo-idle-ja"]],"kras-flag-ag":[[0,"kras-flag-lod0-jg"],[1,"kras-flag-lod0-mg"],[2,"kras-flag-idle-ja"]],"kras-pump-break-ag":[[0,"kras-pump-break-lod0-jg"],[1,"kras-pump-break-lod0-mg"],[2,"kras-pump-break-idle-ja"]],"kras-pump-debris-ag":[[0,"kras-pump-debris-a-lod0-jg"],[1,"kras-pump-debris-a-lod0-mg"],[2,"kras-pump-debris-b-lod0-jg"],[3,"kras-pump-debris-b-lod0-mg"],[4,"kras-pump-debris-c-lod0-jg"],[5,"kras-pump-debris-c-lod0-mg"]],"kras-rusty-sign-ag":[[0,"kras-rusty-sign-lod0-jg"],[1,"kras-rusty-sign-lod0-mg"],[2,"kras-rusty-sign-lod1-mg"],[3,"kras-rusty-sign-idle-ja"]],"kras-tower-ag":[[0,"kras-tower-lod0-jg"],[1,"kras-tower-lod0-mg"],[2,"kras-tower-idle-ja"]],"kras-windsock-ag":[[0,"kras-windsock-lod0-jg"],[1,"kras-windsock-lod0-mg"],[2,"kras-windsock-idle-ja"]],"krasfemale-ag":[[0,"krasfemale-lod0-jg"],[1,"krasfemale-lod0-mg"],[2,"krasfemale-idle-ja"],[3,"krasfemale-idle2-ja"]],"krasmale-ag":[[0,"krasmale-lod0-jg"],[1,"krasmale-lod0-mg"],[2,"krasmale-idle-ja"],[3,"krasmale-idle2-ja"],[4,"krasmale-idle3-ja"],[5,"krasmale-idle4-ja"],[6,"krasmale-idle5-ja"],[7,"krasmale-idle6-ja"],[8,"krasmale-idle7-ja"],[9,"krasmale-idle8-ja"],[10,"krasmale-idle9-ja"],[11,"krasmale-idle10-ja"]],"large-type-bar-ag":[[0,"large-type-bar-lod0-jg"],[1,"large-type-bar-lod0-mg"],[2,"large-type-bar-idle-ja"],[3,"large-type-bar-entera-ja"],[4,"large-type-bar-enterb-ja"],[5,"large-type-bar-exita-ja"],[6,"large-type-bar-exitb-ja"]],"lg-player-screen-ag":[[0,"lg-player-screen-lod0-jg"],[1,"lg-player-screen-lod0-mg"],[2,"lg-player-screen-idle-ja"],[3,"lg-player-screen-entera-ja"],[4,"lg-player-screen-exita-ja"]],"lobby-screen-a-ag":[[0,"lobby-screen-a-lod0-jg"],[1,"lobby-screen-a-lod0-mg"],[2,"lobby-screen-a-idle-ja"],[3,"lobby-screen-a-entera-ja"],[4,"lobby-screen-a-exita-ja"]],"lobby-screen-b-ag":[[0,"lobby-screen-b-lod0-jg"],[1,"lobby-screen-b-lod0-mg"],[2,"lobby-screen-b-idle-ja"],[3,"lobby-screen-b-entera-ja"],[4,"lobby-screen-b-exita-ja"]],"lobby-screen-c-ag":[[0,"lobby-screen-c-lod0-jg"],[1,"lobby-screen-c-lod0-mg"],[2,"lobby-screen-c-idle-ja"],[3,"lobby-screen-c-entera-ja"],[4,"lobby-screen-c-exita-ja"]],"lobby-screen-d-ag":[[0,"lobby-screen-d-lod0-jg"],[1,"lobby-screen-d-lod0-mg"],[2,"lobby-screen-d-idle-ja"],[3,"lobby-screen-d-entera-ja"],[4,"lobby-screen-d-exita-ja"]],"lobby-tab-large-ag":[[0,"lobby-tab-large-lod0-jg"],[1,"lobby-tab-large-lod0-mg"],[2,"lobby-tab-large-idle-ja"],[3,"lobby-tab-large-entera-ja"],[4,"lobby-tab-large-exita-ja"]],"lobby-tab-small-ag":[[0,"lobby-tab-small-lod0-jg"],[1,"lobby-tab-small-lod0-mg"],[2,"lobby-tab-small-idle-ja"],[3,"lobby-tab-small-entera-ja"],[4,"lobby-tab-small-exita-ja"]],"lobby-tab-small-b-ag":[[0,"lobby-tab-small-b-lod0-jg"],[1,"lobby-tab-small-b-lod0-mg"],[2,"lobby-tab-small-b-idle-ja"],[3,"lobby-tab-small-b-entera-ja"],[4,"lobby-tab-small-b-exita-ja"]],"map-screen-ag":[[0,"map-screen-lod0-jg"],[1,"map-screen-lod0-mg"],[2,"map-screen-idle-ja"],[3,"map-screen-entera-ja"],[4,"map-screen-enterb-ja"],[5,"map-screen-exita-ja"],[6,"map-screen-exitb-ja"]],"mem-card-screen-ag":[[0,"mem-card-screen-lod0-jg"],[1,"mem-card-screen-lod0-mg"],[2,"mem-card-screen-idle-ja"],[3,"mem-card-screen-entera-ja"],[4,"mem-card-screen-exita-ja"]],"menu-haven-trophy-ag":[[0,"menu-haven-trophy-lod0-jg"],[1,"menu-haven-trophy-lod0-mg"],[2,"menu-haven-trophy-idle-ja"]],"menu-kras-trophy-ag":[[0,"menu-kras-trophy-lod0-jg"],[1,"menu-kras-trophy-lod0-mg"],[2,"menu-kras-trophy-idle-ja"]],"menu-marauder-trophy-ag":[[0,"menu-marauder-trophy-lod0-jg"],[1,"menu-marauder-trophy-lod0-mg"],[2,"menu-marauder-trophy-idle-ja"]],"menu-spargus-trophy-ag":[[0,"menu-spargus-trophy-lod0-jg"],[1,"menu-spargus-trophy-lod0-mg"],[2,"menu-spargus-trophy-idle-ja"]],"metal-raptor-ag":[[0,"metal-raptor-lod0-jg"],[1,"metal-raptor-lod0-mg"],[2,"metal-raptor-lod1-mg"],[3,"metal-raptor-shadow-mg"],[4,"metal-raptor-idle-ja"],[5,"metal-raptor-run-ja"],[6,"metal-raptor-turn180-ja"],[7,"metal-raptor-ragdoll-ja"]],"mine-a-ag":[[0,"mine-a-lod0-jg"],[1,"mine-a-lod0-mg"],[2,"mine-a-lod1-mg"],[3,"mine-a-lod2-mg"],[4,"mine-a-idle-ja"]],"mine-b-ag":[[0,"mine-b-lod0-jg"],[1,"mine-b-lod0-mg"],[2,"mine-b-lod1-mg"],[3,"mine-b-idle-ja"]],"mine-c-ag":[[0,"mine-c-lod0-jg"],[1,"mine-c-lod0-mg"],[2,"mine-c-lod1-mg"],[3,"mine-c-lod2-mg"],[4,"mine-c-shadow-mg"],[5,"mine-c-idle-ja"],[6,"mine-c-walk-ja"]],"missile-a-ag":[[0,"missile-a-lod0-jg"],[1,"missile-a-lod0-mg"],[2,"missile-a-idle-ja"]],"muzzle-flash-ag":[[0,"muzzle-flash-lod0-jg"],[1,"muzzle-flash-lod0-mg"],[2,"muzzle-flash-idle-ja"]],"oil-slick-ag":[[0,"oil-slick-lod0-jg"],[1,"oil-slick-lod0-mg"],[2,"oil-slick-idle-ja"]],"palm-tree-a-ag":[[0,"palm-tree-a-lod0-jg"],[1,"palm-tree-a-lod0-mg"],[2,"palm-tree-a-lod1-mg"],[3,"palm-tree-a-lod2-mg"],[4,"palm-tree-a-idle-ja"]],"palm-tree-b-ag":[[0,"palm-tree-b-lod0-jg"],[1,"palm-tree-b-lod0-mg"],[2,"palm-tree-b-lod1-mg"],[3,"palm-tree-b-lod2-mg"],[4,"palm-tree-b-idle-ja"]],"palm-tree-c-ag":[[0,"palm-tree-c-lod0-jg"],[1,"palm-tree-c-lod0-mg"],[2,"palm-tree-c-lod1-mg"],[3,"palm-tree-c-lod2-mg"],[4,"palm-tree-c-idle-ja"]],"palm-tree-debris-ag":[[0,"palm-tree-debris-a-lod0-jg"],[1,"palm-tree-debris-a-lod0-mg"],[2,"palm-tree-debris-a-idle-ja"],[3,"palm-tree-debris-b-lod0-jg"],[4,"palm-tree-debris-b-lod0-mg"],[5,"palm-tree-debris-b-idle-ja"]],"peak-double-flag-ag":[[0,"peak-double-flag-lod0-jg"],[1,"peak-double-flag-lod0-mg"],[2,"peak-double-flag-idle-ja"]],"peak-snowball-ag":[[0,"peak-snowball-lod0-jg"],[1,"peak-snowball-lod0-mg"],[2,"peak-snowball-idle-ja"]],"pec-hr-cred-ag":[[0,"pec-hr-cred-lod0-jg"],[1,"pec-hr-cred-lod0-mg"],[2,"pec-hr-cred-shadow-mg"],[3,"pec-hr-cred-turntable-ja"]],"plane-screen-ag":[[0,"plane-screen-lod0-jg"],[1,"plane-screen-lod0-mg"],[2,"plane-screen-idle-ja"],[3,"plane-screen-entera-ja"],[4,"plane-screen-exita-ja"]],"play-screen-ag":[[0,"play-screen-lod0-jg"],[1,"play-screen-lod0-mg"],[2,"play-screen-idle-ja"],[3,"play-screen-entera-ja"],[4,"play-screen-exita-ja"]],"play-screen-b-ag":[[0,"play-screen-b-lod0-jg"],[1,"play-screen-b-lod0-mg"],[2,"play-screen-b-idle-ja"],[3,"play-screen-b-entera-ja"],[4,"play-screen-b-exita-ja"]],"plow-ag":[[0,"plow-lod0-jg"],[1,"plow-lod0-mg"],[2,"plow-shadow-mg"],[3,"plow-idle-ja"],[4,"plow-flip-ja"]],"plow-debris-ag":[[0,"plow-debris-a-lod0-jg"],[1,"plow-debris-a-lod0-mg"],[2,"plow-debris-b-lod0-jg"],[3,"plow-debris-b-lod0-mg"],[4,"plow-debris-c-lod0-jg"],[5,"plow-debris-c-lod0-mg"],[6,"plow-debris-d-lod0-jg"],[7,"plow-debris-d-lod0-mg"],[8,"plow-debris-e-lod0-jg"],[9,"plow-debris-e-lod0-mg"],[10,"plow-debris-f-lod0-jg"],[11,"plow-debris-f-lod0-mg"],[12,"plow-debris-g-lod0-jg"],[13,"plow-debris-g-lod0-mg"],[14,"plow-debris-h-lod0-jg"],[15,"plow-debris-h-lod0-mg"],[16,"plow-debris-i-lod0-jg"],[17,"plow-debris-i-lod0-mg"],[18,"plow-debris-j-lod0-jg"],[19,"plow-debris-j-lod0-mg"],[20,"plow-debris-k-lod0-jg"],[21,"plow-debris-k-lod0-mg"],[22,"plow-debris-l-lod0-jg"],[23,"plow-debris-l-lod0-mg"],[24,"plow-debris-m-lod0-jg"],[25,"plow-debris-m-lod0-mg"],[26,"plow-debris-n-lod0-jg"],[27,"plow-debris-n-lod0-mg"],[28,"plow-debris-o-lod0-jg"],[29,"plow-debris-o-lod0-mg"],[30,"plow-debris-p-lod0-jg"],[31,"plow-debris-p-lod0-mg"]],"points-counter-ag":[[0,"points-counter-lod0-jg"],[1,"points-counter-lod0-mg"],[2,"points-counter-idle-ja"],[3,"points-counter-entera-ja"],[4,"points-counter-exita-ja"]],"pop-up-screen-a-ag":[[0,"pop-up-screen-a-lod0-jg"],[1,"pop-up-screen-a-lod0-mg"],[2,"pop-up-screen-a-idle-ja"],[3,"pop-up-screen-a-enter-ja"],[4,"pop-up-screen-a-exit-ja"]],"pop-up-screen-b-ag":[[0,"pop-up-screen-b-lod0-jg"],[1,"pop-up-screen-b-lod0-mg"],[2,"pop-up-screen-b-idle-ja"],[3,"pop-up-screen-b-enter-ja"],[4,"pop-up-screen-b-exit-ja"],[5,"pop-up-screen-b-enterb-ja"],[6,"pop-up-screen-b-exitb-ja"]],"pop-up-screen-c-ag":[[0,"pop-up-screen-c-lod0-jg"],[1,"pop-up-screen-c-lod0-mg"],[2,"pop-up-screen-c-idle-ja"],[3,"pop-up-screen-c-enter-ja"],[4,"pop-up-screen-c-exit-ja"]],"pre-artifact-a-ag":[[0,"pre-artifact-a-lod0-jg"],[1,"pre-artifact-a-lod0-mg"],[2,"pre-artifact-a-idle-ja"]],"pre-artifact-b-ag":[[0,"pre-artifact-b-lod0-jg"],[1,"pre-artifact-b-lod0-mg"],[2,"pre-artifact-b-idle-ja"]],"pre-artifact-c-ag":[[0,"pre-artifact-c-lod0-jg"],[1,"pre-artifact-c-lod0-mg"],[2,"pre-artifact-c-idle-ja"]],"pre-artifact-d-ag":[[0,"pre-artifact-d-lod0-jg"],[1,"pre-artifact-d-lod0-mg"],[2,"pre-artifact-d-idle-ja"]],"prize-crate-ag":[[0,"prize-crate-lod0-jg"],[1,"prize-crate-lod0-mg"],[2,"prize-crate-lod1-mg"],[3,"prize-crate-lod2-mg"],[4,"prize-crate-shadow-mg"],[5,"prize-crate-idle-ja"]],"ray-hr-cred-ag":[[0,"ray-hr-cred-lod0-jg"],[1,"ray-hr-cred-lod0-mg"],[2,"ray-hr-cred-shadow-mg"],[3,"ray-hr-cred-turntable-ja"]],"raz-hr-cred-ag":[[0,"raz-hr-cred-lod0-jg"],[1,"raz-hr-cred-lod0-mg"],[2,"raz-hr-cred-shadow-mg"],[3,"raz-hr-cred-turntable-ja"]],"rustyh-bar-stool-ag":[[0,"rustyh-bar-stool-lod0-jg"],[1,"rustyh-bar-stool-lod0-mg"],[2,"rustyh-bar-stool-idle-ja"]],"rustyh-blue-fish-ag":[[0,"rustyh-blue-fish-lod0-jg"],[1,"rustyh-blue-fish-lod0-mg"],[2,"rustyh-blue-fish-idle-ja"]],"rustyh-bottle-c-ag":[[0,"rustyh-bottle-c-lod0-jg"],[1,"rustyh-bottle-c-lod0-mg"],[2,"rustyh-bottle-c-idle-ja"]],"rustyh-bottle-d-ag":[[0,"rustyh-bottle-d-lod0-jg"],[1,"rustyh-bottle-d-lod0-mg"],[2,"rustyh-bottle-d-idle-ja"]],"rustyh-fishtank-ag":[[0,"rustyh-fishtank-lod0-jg"],[1,"rustyh-fishtank-lod0-mg"],[2,"rustyh-fishtank-idle-ja"]],"rustyh-fishtank-broken-ag":[[0,"rustyh-fishtank-broken-lod0-jg"],[1,"rustyh-fishtank-broken-lod0-mg"],[2,"rustyh-fishtank-broken-idle-ja"]],"rustyh-mug-ag":[[0,"rustyh-mug-lod0-jg"],[1,"rustyh-mug-lod0-mg"],[2,"rustyh-mug-idle-ja"]],"rustyh-mug-b-ag":[[0,"rustyh-mug-b-lod0-jg"],[1,"rustyh-mug-b-lod0-mg"],[2,"rustyh-mug-b-idle-ja"]],"rustyh-pink-fish-ag":[[0,"rustyh-pink-fish-lod0-jg"],[1,"rustyh-pink-fish-lod0-mg"],[2,"rustyh-pink-fish-idle-ja"]],"rustyh-seaweed-a-ag":[[0,"rustyh-seaweed-a-lod0-jg"],[1,"rustyh-seaweed-a-lod0-mg"],[2,"rustyh-seaweed-a-idle-ja"]],"rustyh-seaweed-b-ag":[[0,"rustyh-seaweed-b-lod0-jg"],[1,"rustyh-seaweed-b-lod0-mg"],[2,"rustyh-seaweed-b-idle-ja"]],"rustyh-seaweed-c-ag":[[0,"rustyh-seaweed-c-lod0-jg"],[1,"rustyh-seaweed-c-lod0-mg"],[2,"rustyh-seaweed-c-idle-ja"]],"rustyh-seaweed-d-ag":[[0,"rustyh-seaweed-d-lod0-jg"],[1,"rustyh-seaweed-d-lod0-mg"],[2,"rustyh-seaweed-d-idle-ja"]],"rustyh-small-fish-ag":[[0,"rustyh-small-fish-lod0-jg"],[1,"rustyh-small-fish-lod0-mg"],[2,"rustyh-small-fish-idle-ja"]],"rustyh-tank-stuff-ag":[[0,"rustyh-tank-stuff-lod0-jg"],[1,"rustyh-tank-stuff-lod0-mg"],[2,"rustyh-tank-stuff-idle-ja"]],"rustyh-treasure-chest-ag":[[0,"rustyh-treasure-chest-lod0-jg"],[1,"rustyh-treasure-chest-lod0-mg"],[2,"rustyh-treasure-chest-idle-ja"]],"saucer-ag":[[0,"saucer-lod0-jg"],[1,"saucer-lod0-mg"],[2,"saucer-lod1-mg"],[3,"saucer-lod2-mg"],[4,"saucer-shadow-mg"],[5,"saucer-idle-ja"]],"scenecamera-ag":[[0,"scenecamera-lod0-jg"],[1,"scenecamera-lod0-mg"],[2,"scenecamera-idle-ja"]],"select-mode-chooser-ag":[[0,"select-mode-chooser-lod0-jg"],[1,"select-mode-chooser-lod0-mg"],[2,"select-mode-chooser-idle-ja"],[3,"select-mode-chooser-entera-ja"],[4,"select-mode-chooser-exita-ja"]],"select-screen-ag":[[0,"select-screen-lod0-jg"],[1,"select-screen-lod0-mg"],[2,"select-screen-idle-ja"],[3,"select-screen-enter-ja"],[4,"select-screen-exit-ja"]],"select-screen-sml-ag":[[0,"select-screen-sml-lod0-jg"],[1,"select-screen-sml-lod0-mg"],[2,"select-screen-sml-idle-ja"],[3,"select-screen-sml-enter-ja"],[4,"select-screen-sml-exit-ja"]],"sentry-bot-ag":[[0,"sentry-bot-lod0-jg"],[1,"sentry-bot-lod0-mg"],[2,"sentry-bot-shadow-mg"],[3,"sentry-bot-idle-ja"],[4,"sentry-bot-open-ja"],[5,"sentry-bot-pop-up-ja"]],"shield-ag":[[0,"shield-lod0-jg"],[1,"shield-lod0-mg"],[2,"shield-open-ja"],[3,"shield-idle-ja"],[4,"shield-idle-mongoose-ja"],[5,"shield-open-mongoose-ja"],[6,"shield-dissipate-mongoose-ja"],[7,"shield-idle-falcon-ja"],[8,"shield-open-falcon-ja"],[9,"shield-dissipate-falcon-ja"],[10,"shield-idle-wombat-ja"],[11,"shield-open-wombat-ja"],[12,"shield-dissipate-wombat-ja"],[13,"shield-idle-possum-ja"],[14,"shield-open-possum-ja"],[15,"shield-dissipate-possum-ja"],[16,"shield-idle-tiger-ja"],[17,"shield-open-tiger-ja"],[18,"shield-dissipate-tiger-ja"],[19,"shield-idle-bobcat-ja"],[20,"shield-open-bobcat-ja"],[21,"shield-dissipate-bobcat-ja"],[22,"shield-idle-wolf-ja"],[23,"shield-open-wolf-ja"],[24,"shield-dissipate-wolf-ja"],[25,"shield-idle-panther-ja"],[26,"shield-open-panther-ja"],[27,"shield-dissipate-panther-ja"],[28,"shield-idle-leopard-ja"],[29,"shield-open-leopard-ja"],[30,"shield-dissipate-leopard-ja"],[31,"shield-idle-cougar-ja"],[32,"shield-open-cougar-ja"],[33,"shield-dissipate-cougar-ja"],[34,"shield-idle-cheetah-ja"],[35,"shield-open-cheetah-ja"],[36,"shield-idle-daxtermobile-ja"],[37,"shield-open-daxtermobile-ja"],[38,"shield-idle-bear-ja"],[39,"shield-open-bear-ja"],[40,"shield-idle-gila-ja"],[41,"shield-open-gila-ja"],[42,"shield-idle-snake-ja"],[43,"shield-open-snake-ja"]],"side-bar-ag":[[0,"side-bar-lod0-jg"],[1,"side-bar-lod0-mg"],[2,"side-bar-idle-ja"],[3,"side-bar-entera-ja"],[4,"side-bar-enterb-ja"],[5,"side-bar-exita-ja"],[6,"side-bar-exitb-ja"]],"side-bar-b-ag":[[0,"side-bar-b-lod0-jg"],[1,"side-bar-b-lod0-mg"],[2,"side-bar-b-idle-ja"],[3,"side-bar-b-entera-ja"],[4,"side-bar-b-exita-ja"]],"side-bar-c-ag":[[0,"side-bar-c-lod0-jg"],[1,"side-bar-c-lod0-mg"],[2,"side-bar-c-idle-ja"],[3,"side-bar-c-entera-ja"],[4,"side-bar-c-exita-ja"]],"side-bar-d-ag":[[0,"side-bar-d-lod0-jg"],[1,"side-bar-d-lod0-mg"],[2,"side-bar-d-idle-ja"],[3,"side-bar-d-entera-ja"],[4,"side-bar-d-exita-ja"]],"side-bar-e-ag":[[0,"side-bar-e-lod0-jg"],[1,"side-bar-e-lod0-mg"],[2,"side-bar-e-idle-ja"],[3,"side-bar-e-entera-ja"],[4,"side-bar-e-exita-ja"],[5,"side-bar-e-enterb-ja"],[6,"side-bar-e-exitb-ja"]],"side-bar-title-ag":[[0,"side-bar-title-lod0-jg"],[1,"side-bar-title-lod0-mg"],[2,"side-bar-title-idle-ja"],[3,"side-bar-title-entera-ja"],[4,"side-bar-title-exita-ja"]],"side-walls-ag":[[0,"side-walls-lod0-jg"],[1,"side-walls-lod0-mg"],[2,"side-walls-idle-ja"],[3,"side-walls-entera-ja"]],"sig-hr-cred-ag":[[0,"sig-hr-cred-lod0-jg"],[1,"sig-hr-cred-lod0-mg"],[2,"sig-hr-cred-shadow-mg"],[3,"sig-hr-cred-turntable-ja"]],"sml-type-bar-ag":[[0,"sml-type-bar-lod0-jg"],[1,"sml-type-bar-lod0-mg"],[2,"sml-type-bar-idle-ja"],[3,"sml-type-bar-entera-ja"],[4,"sml-type-bar-enterb-ja"],[5,"sml-type-bar-exita-ja"],[6,"sml-type-bar-exitb-ja"]],"snow-dinobreak-ag":[[0,"snow-dinobreak-lod0-jg"],[1,"snow-dinobreak-lod0-mg"],[2,"snow-dinobreak-idle-ja"],[3,"snow-dinobreak-explode-lod0-jg"],[4,"snow-dinobreak-explode-lod0-mg"],[5,"snow-dinobreak-explode-idle-ja"]],"snow-icebreak-a-ag":[[0,"snow-icebreak-a-lod0-jg"],[1,"snow-icebreak-a-lod0-mg"],[2,"snow-icebreak-a-idle-ja"]],"snow-icebreak-b-ag":[[0,"snow-icebreak-b-lod0-jg"],[1,"snow-icebreak-b-lod0-mg"],[2,"snow-icebreak-b-idle-ja"],[3,"snow-icebreak-b-explode-lod0-jg"],[4,"snow-icebreak-b-explode-lod0-mg"],[5,"snow-icebreak-b-explode-idle-ja"]],"snow-icebreak-c-ag":[[0,"snow-icebreak-c-lod0-jg"],[1,"snow-icebreak-c-lod0-mg"],[2,"snow-icebreak-c-idle-ja"],[3,"snow-icebreak-c-explode-lod0-jg"],[4,"snow-icebreak-c-explode-lod0-mg"],[5,"snow-icebreak-c-explode-idle-ja"]],"spar-lighthouse-light-ag":[[0,"spar-lighthouse-light-lod0-jg"],[1,"spar-lighthouse-light-lod0-mg"],[2,"spar-lighthouse-light-idle-ja"]],"split-screen-ag":[[0,"split-screen-lod0-jg"],[1,"split-screen-lod0-mg"],[2,"split-screen-idle-ja"],[3,"split-screen-entera-ja"],[4,"split-screen-enterb-ja"],[5,"split-screen-exita-ja"],[6,"split-screen-exitb-ja"]],"start-banner-ag":[[0,"start-banner-lod0-jg"],[1,"start-banner-lod0-mg"],[2,"start-banner-idle-ja"]],"start-light-ag":[[0,"start-light-lod0-jg"],[1,"start-light-lod0-mg"],[2,"start-light-idle-ja"]],"starting-linebot-ag":[[0,"starting-linebot-lod0-jg"],[1,"starting-linebot-lod0-mg"],[2,"starting-linebot-idle-ja"]],"tha-hr-cred-ag":[[0,"tha-hr-cred-lod0-jg"],[1,"tha-hr-cred-lod0-mg"],[2,"tha-hr-cred-shadow-mg"],[3,"tha-hr-cred-turntable-ja"]],"thb-hr-cred-ag":[[0,"thb-hr-cred-lod0-jg"],[1,"thb-hr-cred-lod0-mg"],[2,"thb-hr-cred-shadow-mg"],[3,"thb-hr-cred-turntable-ja"]],"thc-hr-cred-ag":[[0,"thc-hr-cred-lod0-jg"],[1,"thc-hr-cred-lod0-mg"],[2,"thc-hr-cred-shadow-mg"],[3,"thc-hr-cred-turntable-ja"]],"this-way-ag":[[0,"this-way-arrow-lod0-jg"],[1,"this-way-arrow-lod0-mg"],[2,"this-way-arrow-idle-ja"]],"this-way-b-ag":[[0,"this-way-b-lod0-jg"],[1,"this-way-b-lod0-mg"],[2,"this-way-b-idle-ja"]],"time-freeze-ag":[[0,"time-freeze-time-freeze-cage-lod0-jg"],[1,"time-freeze-time-freeze-cage-lod0-mg"],[2,"time-freeze-time-freeze-cage-idle-ja"],[3,"time-freeze-time-freeze-short-lod0-jg"],[4,"time-freeze-time-freeze-short-lod0-mg"],[5,"time-freeze-time-freeze-short-idle-ja"],[6,"time-freeze-time-freeze-med-lod0-jg"],[7,"time-freeze-time-freeze-med-lod0-mg"],[8,"time-freeze-time-freeze-med-idle-ja"],[9,"time-freeze-time-freeze-long-lod0-jg"],[10,"time-freeze-time-freeze-long-lod0-mg"],[11,"time-freeze-time-freeze-long-idle-ja"]],"time-freeze-debris-ag":[[0,"time-freeze-debris-a-lod0-jg"],[1,"time-freeze-debris-a-lod0-mg"],[2,"time-freeze-debris-b-lod0-jg"],[3,"time-freeze-debris-b-lod0-mg"],[4,"time-freeze-debris-c-lod0-jg"],[5,"time-freeze-debris-c-lod0-mg"],[6,"time-freeze-debris-d-lod0-jg"],[7,"time-freeze-debris-d-lod0-mg"],[8,"time-freeze-debris-long-a-lod0-jg"],[9,"time-freeze-debris-long-a-lod0-mg"],[10,"time-freeze-debris-long-circle-lod0-jg"],[11,"time-freeze-debris-long-circle-lod0-mg"],[12,"time-freeze-debris-med-a-lod0-jg"],[13,"time-freeze-debris-med-a-lod0-mg"],[14,"time-freeze-debris-med-circle-lod0-jg"],[15,"time-freeze-debris-med-circle-lod0-mg"],[16,"time-freeze-debris-short-a-lod0-jg"],[17,"time-freeze-debris-short-a-lod0-mg"],[18,"time-freeze-debris-short-circle-lod0-jg"],[19,"time-freeze-debris-short-circle-lod0-mg"]],"top-bar-ag":[[0,"top-bar-lod0-jg"],[1,"top-bar-lod0-mg"],[2,"top-bar-idle-ja"],[3,"top-bar-entera-ja"],[4,"top-bar-enterb-ja"],[5,"top-bar-exita-ja"],[6,"top-bar-exitb-ja"]],"tor-hr-cred-ag":[[0,"tor-hr-cred-lod0-jg"],[1,"tor-hr-cred-lod0-mg"],[2,"tor-hr-cred-shadow-mg"],[3,"tor-hr-cred-turntable-ja"]],"train-ag":[[0,"train-loco-lod0-jg"],[1,"train-loco-lod0-mg"],[2,"train-loco-idle-ja"],[3,"train-car-lod0-jg"],[4,"train-car-lod0-mg"],[5,"train-car-idle-ja"],[6,"train-car-b-lod0-jg"],[7,"train-car-b-lod0-mg"],[8,"train-car-b-idle-ja"],[9,"train-car-c-lod0-jg"],[10,"train-car-c-lod0-mg"],[11,"train-car-c-idle-ja"]],"training-marker-ag":[[0,"training-marker-lod0-jg"],[1,"training-marker-lod0-mg"],[2,"training-marker-idle-ja"]],"training-wall-ag":[[0,"training-wall-lod0-jg"],[1,"training-wall-lod0-mg"],[2,"training-wall-idle-ja"]],"tune-meter-bar-ag":[[0,"tune-meter-bar-lod0-jg"],[1,"tune-meter-bar-lod0-mg"],[2,"tune-meter-bar-idle-ja"],[3,"tune-meter-bar-entera-ja"],[4,"tune-meter-bar-exita-ja"]],"tune-type-bar-ag":[[0,"tune-type-bar-lod0-jg"],[1,"tune-type-bar-lod0-mg"],[2,"tune-type-bar-idle-ja"],[3,"tune-type-bar-entera-ja"],[4,"tune-type-bar-exita-ja"]],"ur8-hr-cred-ag":[[0,"ur8-hr-cred-lod0-jg"],[1,"ur8-hr-cred-lod0-mg"],[2,"ur8-hr-cred-shadow-mg"],[3,"ur8-hr-cred-turntable-ja"]],"vehicle-explosion-ag":[[0,"vehicle-explosion-lod0-jg"],[1,"vehicle-explosion-lod0-mg"],[2,"vehicle-explosion-idle-ja"]],"weapon-drone-ag":[[0,"weapon-drone-lod0-jg"],[1,"weapon-drone-lod0-mg"],[2,"weapon-drone-idle-ja"]],"wind-rotor-ag":[[0,"wind-rotor-lod0-jg"],[1,"wind-rotor-lod0-mg"],[2,"wind-rotor-spin-ja"]],"wm-docks-crane-ag":[[0,"wm-docks-crane-lod0-jg"],[1,"wm-docks-crane-lod0-mg"],[2,"wm-docks-crane-idle-ja"]],"wm-drome-wind-machine-ag":[[0,"wm-drome-wind-machine-lod0-jg"],[1,"wm-drome-wind-machine-lod0-mg"],[2,"wm-drome-wind-machine-idle-ja"]],"wm-fireworks-ship-ag":[[0,"wm-fireworks-ship-lod0-jg"],[1,"wm-fireworks-ship-lod0-mg"],[2,"wm-fireworks-ship-idle-ja"]],"wm-kras-circular-tower-ag":[[0,"wm-kras-circular-tower-lod0-jg"],[1,"wm-kras-circular-tower-lod0-mg"],[2,"wm-kras-circular-tower-idle-ja"]],"wm-track-car-ag":[[0,"wm-track-car-lod0-jg"],[1,"wm-track-car-lod0-mg"],[2,"wm-track-car-idle-ja"]],"world-map-atoll-mesh-ag":[[0,"world-map-atoll-mesh-lod0-jg"],[1,"world-map-atoll-mesh-lod0-mg"],[2,"world-map-atoll-mesh-idle-ja"]],"world-map-canspar-mesh-ag":[[0,"world-map-canspar-mesh-lod0-jg"],[1,"world-map-canspar-mesh-lod0-mg"],[2,"world-map-canspar-mesh-shadow-mg"],[3,"world-map-canspar-mesh-idle-ja"]],"world-map-canyon-mesh-ag":[[0,"world-map-canyon-mesh-lod0-jg"],[1,"world-map-canyon-mesh-lod0-mg"],[2,"world-map-canyon-mesh-shadow-mg"],[3,"world-map-canyon-mesh-idle-ja"]],"world-map-cliffs-mesh-ag":[[0,"world-map-cliffs-mesh-lod0-jg"],[1,"world-map-cliffs-mesh-lod0-mg"],[2,"world-map-cliffs-mesh-idle-ja"]],"world-map-coliseum-mesh-ag":[[0,"world-map-coliseum-mesh-lod0-jg"],[1,"world-map-coliseum-mesh-lod0-mg"],[2,"world-map-coliseum-mesh-idle-ja"]],"world-map-desarena-mesh-ag":[[0,"world-map-desarena-mesh-lod0-jg"],[1,"world-map-desarena-mesh-lod0-mg"],[2,"world-map-desarena-mesh-idle-ja"]],"world-map-desisle-mesh-ag":[[0,"world-map-desisle-mesh-lod0-jg"],[1,"world-map-desisle-mesh-lod0-mg"],[2,"world-map-desisle-mesh-idle-ja"]],"world-map-dockkra-mesh-ag":[[0,"world-map-dockkra-mesh-lod0-jg"],[1,"world-map-dockkra-mesh-lod0-mg"],[2,"world-map-dockkra-mesh-shadow-mg"],[3,"world-map-dockkra-mesh-idle-ja"]],"world-map-docks-mesh-ag":[[0,"world-map-docks-mesh-lod0-jg"],[1,"world-map-docks-mesh-lod0-mg"],[2,"world-map-docks-mesh-shadow-mg"],[3,"world-map-docks-mesh-idle-ja"]],"world-map-drome-mesh-ag":[[0,"world-map-drome-mesh-lod0-jg"],[1,"world-map-drome-mesh-lod0-mg"],[2,"world-map-drome-mesh-shadow-mg"],[3,"world-map-drome-mesh-idle-ja"]],"world-map-dromedoc-mesh-ag":[[0,"world-map-dromedoc-mesh-lod0-jg"],[1,"world-map-dromedoc-mesh-lod0-mg"],[2,"world-map-dromedoc-mesh-shadow-mg"],[3,"world-map-dromedoc-mesh-idle-ja"]],"world-map-fort-mesh-ag":[[0,"world-map-fort-mesh-lod0-jg"],[1,"world-map-fort-mesh-lod0-mg"],[2,"world-map-fort-mesh-idle-ja"]],"world-map-hav-tour-mesh-ag":[[0,"world-map-hav-tour-mesh-lod0-jg"],[1,"world-map-hav-tour-mesh-lod0-mg"],[2,"world-map-hav-tour-mesh-idle-ja"]],"world-map-haven-mesh-ag":[[0,"world-map-haven-mesh-lod0-jg"],[1,"world-map-haven-mesh-lod0-mg"],[2,"world-map-haven-mesh-shadow-mg"],[3,"world-map-haven-mesh-idle-ja"]],"world-map-havenarena-mesh-ag":[[0,"world-map-havenarena-mesh-lod0-jg"],[1,"world-map-havenarena-mesh-lod0-mg"],[2,"world-map-havenarena-mesh-idle-ja"]],"world-map-havjung-mesh-ag":[[0,"world-map-havjung-mesh-lod0-jg"],[1,"world-map-havjung-mesh-lod0-mg"],[2,"world-map-havjung-mesh-shadow-mg"],[3,"world-map-havjung-mesh-idle-ja"]],"world-map-havsew-mesh-ag":[[0,"world-map-havsew-mesh-lod0-jg"],[1,"world-map-havsew-mesh-lod0-mg"],[2,"world-map-havsew-mesh-shadow-mg"],[3,"world-map-havsew-mesh-idle-ja"]],"world-map-ice-mesh-ag":[[0,"world-map-ice-mesh-lod0-jg"],[1,"world-map-ice-mesh-lod0-mg"],[2,"world-map-ice-mesh-shadow-mg"],[3,"world-map-ice-mesh-idle-ja"]],"world-map-ice-tour-mesh-ag":[[0,"world-map-ice-tour-mesh-lod0-jg"],[1,"world-map-ice-tour-mesh-lod0-mg"],[2,"world-map-ice-tour-mesh-idle-ja"]],"world-map-iceberg-mesh-ag":[[0,"world-map-iceberg-mesh-lod0-jg"],[1,"world-map-iceberg-mesh-lod0-mg"],[2,"world-map-iceberg-mesh-shadow-mg"],[3,"world-map-iceberg-mesh-idle-ja"]],"world-map-icepass-mesh-ag":[[0,"world-map-icepass-mesh-lod0-jg"],[1,"world-map-icepass-mesh-lod0-mg"],[2,"world-map-icepass-mesh-shadow-mg"],[3,"world-map-icepass-mesh-idle-ja"]],"world-map-jungle-mesh-ag":[[0,"world-map-jungle-mesh-lod0-jg"],[1,"world-map-jungle-mesh-lod0-mg"],[2,"world-map-jungle-mesh-shadow-mg"],[3,"world-map-jungle-mesh-idle-ja"]],"world-map-kcross-mesh-ag":[[0,"world-map-kcross-mesh-lod0-jg"],[1,"world-map-kcross-mesh-lod0-mg"],[2,"world-map-kcross-mesh-idle-ja"]],"world-map-kras-mesh-ag":[[0,"world-map-kras-mesh-lod0-jg"],[1,"world-map-kras-mesh-lod0-mg"],[2,"world-map-kras-mesh-shadow-mg"],[3,"world-map-kras-mesh-idle-ja"]],"world-map-kras-tour-mesh-ag":[[0,"world-map-kras-tour-mesh-lod0-jg"],[1,"world-map-kras-tour-mesh-lod0-mg"],[2,"world-map-kras-tour-mesh-idle-ja"]],"world-map-peak-mesh-ag":[[0,"world-map-peak-mesh-lod0-jg"],[1,"world-map-peak-mesh-lod0-mg"],[2,"world-map-peak-mesh-shadow-mg"],[3,"world-map-peak-mesh-idle-ja"]],"world-map-sewer-mesh-ag":[[0,"world-map-sewer-mesh-lod0-jg"],[1,"world-map-sewer-mesh-lod0-mg"],[2,"world-map-sewer-mesh-shadow-mg"],[3,"world-map-sewer-mesh-idle-ja"]],"world-map-snow-mesh-ag":[[0,"world-map-snow-mesh-lod0-jg"],[1,"world-map-snow-mesh-lod0-mg"],[2,"world-map-snow-mesh-shadow-mg"],[3,"world-map-snow-mesh-idle-ja"]],"world-map-snowbowl-mesh-ag":[[0,"world-map-snowbowl-mesh-lod0-jg"],[1,"world-map-snowbowl-mesh-lod0-mg"],[2,"world-map-snowbowl-mesh-idle-ja"]],"world-map-spar-tour-mesh-ag":[[0,"world-map-spar-tour-mesh-lod0-jg"],[1,"world-map-spar-tour-mesh-lod0-mg"],[2,"world-map-spar-tour-mesh-idle-ja"]],"world-map-spargus-mesh-ag":[[0,"world-map-spargus-mesh-lod0-jg"],[1,"world-map-spargus-mesh-lod0-mg"],[2,"world-map-spargus-mesh-shadow-mg"],[3,"world-map-spargus-mesh-idle-ja"]],"world-map-spartem-mesh-ag":[[0,"world-map-spartem-mesh-lod0-jg"],[1,"world-map-spartem-mesh-lod0-mg"],[2,"world-map-spartem-mesh-shadow-mg"],[3,"world-map-spartem-mesh-idle-ja"]],"world-map-temple-mesh-ag":[[0,"world-map-temple-mesh-lod0-jg"],[1,"world-map-temple-mesh-lod0-mg"],[2,"world-map-temple-mesh-shadow-mg"],[3,"world-map-temple-mesh-idle-ja"]],"wrong-way-ag":[[0,"wrong-way-lod0-jg"],[1,"wrong-way-lod0-mg"],[2,"wrong-way-idle-ja"]]} diff --git a/decompiler/config/jakx/pal/art_info.jsonc b/decompiler/config/jakx/pal/art_info.jsonc new file mode 100644 index 00000000000..6b782180767 --- /dev/null +++ b/decompiler/config/jakx/pal/art_info.jsonc @@ -0,0 +1,6 @@ +{ + "files": {}, + "functions": {}, + "type_remap": {}, + "joint_node_hacks": {} +} diff --git a/decompiler/config/jakx/pal/hacks.jsonc b/decompiler/config/jakx/pal/hacks.jsonc new file mode 100644 index 00000000000..388bcd7087b --- /dev/null +++ b/decompiler/config/jakx/pal/hacks.jsonc @@ -0,0 +1,785 @@ +{ + //////////////////////////// + // HACKS and ASM FUNCTIONS + //////////////////////////// + + "types_with_bad_inspect_methods": [ + "game-task-event", + "game-task-control", + "predator-edge", + "manipy", + "process-tree", + "vector", + "target", + "vehicle-load-parts" + ], + + "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)" + ], + + // 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": [], + + "asm_functions_by_name": [ + // checking boxed type is different now - these make the cfg stuff sad + "name=", + "(method 77 grenadier)", + "display-list-control", + "anim-test-anim-list-handler", + "anim-test-sequence-list-handler", + "anim-tester-get-playing-item", + "start-pilot-recorder", + "(anon-function 10 pilot-recorder)", + "(anon-function 10 sig-recorder)", + // actual asm + "quad-copy!", + "return-from-thread", + "return-from-thread-dead", + "reset-and-call", + "(method 10 cpu-thread)", + "(method 11 cpu-thread)", + "(method 0 catch-frame)", + "throw-dispatch", + "throw", + "run-function-in-process", + "set-to-run-bootstrap", + "return-from-exception", + "exp", + "(method 17 bounding-box)", + "(method 9 bounding-box)", + "(method 9 matrix)", + "quaternion->matrix-2", + "sin-rad", + "cos-rad", + "atan-series-rad", + "sign-float", + "dma-count-until-done", + "(method 11 collide-mesh-cache)", + "cpu-delay", + "qword-read-time", + "dma-test-func", + "move-test-func", + + "symlink2", + "blerc-a-fragment", + "blerc-execute", + "foreground-check-longest-edge-asm", + "generic-light-proc", + "(method 17 collide-edge-work)", + "(method 10 collide-cache-prim)", + "(method 17 collide-cache)", + "(method 16 ocean)", + + // unknown instructions + // logand with #f arg + // "bugfix?", + // CFG failed + "draw-inline-array-instance-shrub", + + "(method 9 editable-region)", // condition branch assert hit + "test-to-from-spr", + "test-from-spr", + "test-to-spr", + "test-seq-read", + "test-worst-read", + "test-seq-write", + "test-worst-write", + // texture + "adgif-shader<-texture!", + + // jak 3 + "(method 10 manipulator)", + "(method 46 ff-squad-control)", + "memcpy", + + // jak x + "get-string-length", + "rand-uint31-gen", + "vector-rotate-y-fast!", + + // jak x decompiler crashes + "(method 13 race-line)", + "(method 23 gui-control)", + "(method 34 sky-work)", + "(method 35 sky-work)", + "(method 11 collide-mesh)", + "target-standard-event-handler", + "display-loop-main", + "(method 22 level)", + "(method 11 medius-cache)", + "water-anim-event-handler" + ], + + // these functions use pairs and the decompiler + // will be less picky about types related to pairs. + "pair_functions_by_name": [ + "ref", + "ref&", + "(method 4 pair)", + "last", + "member", + "nmember", + "assoc", + "assoce", + "nassoc", + "nassoce", + "append!", + "delete!", + "delete-car!", + "insert-cons!", + "sort", + "unload-package", + "display-loop-main", + "lookup-level-info", + "(method 24 level-group)", + "(method 19 level-group)", + // script + "command-get-time", + "command-get-param", + "command-get-quoted-param", + "command-get-entity", + "(method 9 script-context)", + "(anon-function 6 script)", + "(anon-function 49 script)", + "(anon-function 52 script)", + "(anon-function 72 script)", + "(anon-function 73 script)", + "(anon-function 74 script)", + "(anon-function 75 script)", + "(anon-function 76 script)", + "(anon-function 80 script)", + "(method 11 script-context)", + "(method 10 script-context)", + "command-get-trans", + "key-assoc", + "(anon-function 0 script)", + // default-menu + "dm-scene-load-pick-func", + "debug-menu-make-continue-sub-menu", + "debug-menu-make-from-template", + "debug-menu-context-make-default-menus", + "debug-menu-make-task-menu", + "(method 19 gui-control)", + // menu + "debug-menu-rebuild", + "debug-menu-find-from-template", + "debug-menu-render", + "debug-menu-context-select-next-or-prev-item", + "debug-menu-context-select-new-item", + "debug-menu-send-msg", + // airlock + "(method 24 com-airlock)", + "(method 19 gui-control)", + "(method 28 editable)", + "execute-select", + "(method 29 editable)", + "(method 25 editable)", + // game-info + "(method 20 game-info)", + "print-continues", + // task-control + "(anon-function 55 task-control)", + "(method 17 load-state)", + "(method 12 level)", + "bg", + "update-sound-banks", + "entity-remap-names", + "(method 8 process-tree)", + "(post play-anim scene-player)", + "(method 25 scene-player)", + "(method 25 scene-player)", + "scene-player-init", + "next-continue", + "(method 25 warp-gate)", + "(code use warp-gate)", + "cspace-inspect-tree", + "(method 11 mtn-step-plat-rocks-a)", + "(method 11 mtn-step-plat-rocks-b)", + "(method 11 mtn-step-plat-rocks-c)", + "(method 22 fort-floor-spike-b)", + "prototypes-game-visible-set!", + "(method 22 fort-floor-spike-a)", + "(method 22 fort-floor-spike-b)", + "(method 22 fort-floor-spike-c)", + "(method 11 sew-catwalk)", + "(method 11 mtn-aval-rocks)", + "(method 11 gar-curtain)", + "(method 10 level-load-info)", + "(method 29 level-group)", + "(method 26 level-group)", + "(method 19 level)", + "(method 10 level)", + "update-sound-banks", + "level-base-level-name", + "borrow-city-expansion", + "add-want-level", + "level-find-borrow-slot", + "(method 18 level)", + "(method 11 tow-tentacle)", + "city-sound-expand-want-list", + "(method 12 cty-borrow-manager)", + "(method 16 cty-borrow-manager)", + "mark-permanent-holds", + "update-sound-info", + "insert-into-sound-list", + // title-obs + "(anon-function 22 title-obs)", + "cty-faction-evaluate-commands", + "traffic-manager-event-handler", + "(method 20 cty-faction-manager)" + ], + + // 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": { + "~170h~5d~220h~5d~280h~5,,2f": 3, + "~338h~5d~388h~5d~448h~5,,2f": 3, + "~30Htf: ~8D~134Hpr: ~8D~252Hsh: ~8D~370Hhd: ~8D~%": 4, + "~30Hal: ~8D~131Hwa: ~8D~252Hsp: ~8D~370Hwp: ~8D~%": 4, + "ERROR: ~A in spool anim loop for ~A ~D, but not loaded.~": 3, + // TODO - these should be automatic + " 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-scissor~456H~5DK~%": 2, + " shrub-instance ~192H~5DK ~280Hshrubbery~456H~5DK~%": 2, + " collision ~192H~5DK ~280Htie-generic~456H~5DK~%": 2, + " pris-anim ~192H~5DK ~280Hpris-generic~456H~5DK~%": 2, + " textures ~192H~5DK ~280Htextures~456H~5DK~%": 2, + " misc ~192H~5DK ~280Hsprite~456H~5DK~%": 2, + " entity ~192H~5DK~%": 1, + " pris-geo ~192H~5DK ~280Hpris-fragment~456H~5DK~%": 2, + "~33L~S~32L ~S": 2, + "~32L~S ~33L~S~1L": 2, + "~35L~S~33L ~S": 2, + "~1L~S~35L ~S": 2, + "~35L~S ~1L~S~1L": 2, + "~33L~S~35L ~S": 2, + "~33L~C~34L~S~33L~C": 3, + "~35L~S ~33L~S~1L": 2, + "~33L~S ~35L~S~1L": 2, + "~33L~C": 1, + "~33L~S~44L ~S": 2, + "~44L~S ~33L~S": 2, + "~10Htfrag: ~8,,0m": 1, + "~140Hshrub: ~8,,0m": 1, + "~272Halpha: ~8,,0m~%": 1, + "~27Htie: ~8,,0m": 1, + "~140Hfg-tf: ~8,,0m": 1, + "~270Hfg-pr: ~8,,0m~%": 1, + "~10Hfg-wa: ~8,,0m": 1, + "~140Hfg-sh: ~8,,0m": 1, + "~267Hfg-p2: ~8,,0m~%": 1, + "~30Hp2: ~8D~131Hhf: ~8D~%~1K": 2, + "Current time (~d:~d) [mission-percentage ~f~%": 2, + "~0K~Name~130HID~+50HVol~+15HPitch~+24HPan~+18HEar~+24HDist~%": 1, + "~130H~5D ~4D ~5D ~4D ~3D ~5,,0M~%": 5 + }, + + "blocks_ending_in_asm_branch": { + "light-merge!": [1, 2, 3, 5, 7], + "bsp-camera-asm": [1, 2, 3, 4, 6, 7], + "level-remap-texture": [2, 3, 4, 5, 6], + "start-perf-stat-collection": [26], + "end-perf-stat-collection": [0], + + "(method 23 gui-control)": [10, 46, 50, 58, 81, 90, 101], + + "find-offending-process-focusable": [16, 19], + "(method 19 process-drawable)": [0, 2, 3, 7, 10, 11, 30], + "(anon-function 11 game-save)": [0, 3, 4, 5], + "(anon-function 3 game-save)": [15, 16], + "(anon-function 12 lightjak-wings)": [2, 3], + "target-standard-event-handler": [ + 5, 6, 7, 20, 64, 65, 66, 67, 72, 73, 83, 84, 85, 86, 87, 88, 96, 97, 109, + 264, 265, 282, 283, 284, 290, 291, 306, 336, 350, 351, 412, 415, 427 + ], + "(method 9 curve-color-fast)": [0, 1], + "evaluate-color-curve-fast": [0, 1], + "(anon-function 0 target-death)": [71, 131, 132, 137], + "target-board-handler": [15, 16, 20], + "sprite-draw-distorters": [4, 5], + "(method 10 simple-sprite-system)": [0], + "add-debug-box-with-transform": [0, 3], + "add-debug-line-sphere": [0], + "bones-mtx-calc-execute": [19, 7], + "foreground-draw": [0, 1, 126], + "unpack-comp-rle": [1, 3, 5, 6], + "unpack-comp-huf": [2, 4, 5, 6, 7, 8, 9], + "unpack-comp-lzo": [ + 0, + 1, + 4, + 5, + 6, + 7, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, // branch fwd 39 + 39, // branch fwd no delay + 43, // goto 18 + 45 // goto 6 + ], + "(method 16 level)": [0, 1, 5, 13, 14, 15], + "upload-vis-bits": [2, 6, 3, 0], + "set-background-regs!": [4, 3], + "draw-drawable-tree-instance-shrub": [5, 7, 9, 11], + "draw-drawable-tree-instance-tie": [21, 23, 31, 33], + "(method 12 flow-control)": [3, 9, 22], + "(method 26 level-group)": [40, 41, 67], + "borrow-city-expansion": [0, 9, 13, 15, 17], + "dma-add-process-drawable": [0, 77], + "real-main-draw-hook": [120, 122], + "display-frame-finish": [61], + "display-loop-main": [130], + "(method 63 collide-shape-moving)": [1, 2, 14, 49], + "(method 67 collide-shape-moving)": [2, 3, 13], + "(method 51 rigid-body-object)": [5], + "(anon-function 2 rigid-body-queue)": [0, 2], + "(method 15 rigid-body-queue)": [5, 6, 7, 9], + "(method 13 rigid-body-queue)": [5, 6, 7, 9], + "(method 11 rigid-body-queue)": [0, 6, 7, 9], + "(method 10 rigid-body-queue)": [10, 34, 37], + "(method 9 los-control)": [0, 43], + "load-game-text-info": [19, 20, 21], + "draw-actor-marks": [8], + "find-nearest-entity": [7, 9], + "(method 13 collide-cache)": [7, 9], + "(method 11 collide-mesh)": [2, 4], + "(method 12 collide-mesh-cache)": [0, 1, 2, 3, 4, 5], + "(method 10 collide-mesh)": [2], + "(method 42 collide-shape)": [0, 1, 2, 3, 4, 7], + "(method 18 collide-shape-prim-mesh)": [2, 3, 4, 5, 6, 7], + "(method 18 collide-shape-prim-sphere)": [2, 3, 4], + "(method 15 collide-shape-prim-sphere)": [1, 2, 3, 4, 5, 6], + "(method 16 collide-shape-prim-sphere)": [0, 1, 2, 3, 4], + "(method 36 collide-shape)": [8, 9], + "(method 45 collide-shape)": [33], + "(method 40 collide-shape)": [ + 0, 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 + ], + "(method 12 collide-shape-prim-group)": [1, 2, 3, 4, 5, 6], + "(method 13 collide-shape-prim)": [1, 2, 3, 4, 5, 6], + "(method 12 collide-shape-prim-sphere)": [ + 1, 2, 3, 4, 5, 8, 10, 11, 13, 14, 15 + ], + "(method 12 collide-shape-prim-mesh)": [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16 + ], + "update-actor-hash": [0, 2, 4], + "(method 24 grid-hash)": [39, 35, 22, 15], + "(anon-function 4 gun-states)": [ + 18, 128, 129, 131, 133, 135, 138, 139, 143 + ], + "(method 16 sparticle-launch-control)": [25, 35, 36, 48, 62, 65, 100, 102], + "(anon-function 17 target-ladder)": [0, 1], + "command-get-process": [46], + "foreground-draw-hud": [0, 7, 8, 9, 16, 22], + "target-flut-falling-anim-trans": [8, 9], + "(method 12 nav-mesh)": [0, 1, 2, 9], + "(method 20 nav-mesh)": [9], + "(method 21 nav-mesh)": [7], + "(method 29 nav-mesh)": [0, 1, 2, 4], + "(method 33 nav-mesh)": [10, 11, 12, 13], + "(method 34 nav-mesh)": [0, 1, 2, 4], + "(method 35 nav-mesh)": [0, 1, 2, 4], + "(method 36 nav-mesh)": [1, 2], + "(method 37 nav-mesh)": [4], + "(method 45 nav-mesh)": [1, 2], + "(method 46 nav-mesh)": [1, 2, 19, 20], + "(method 48 nav-mesh)": [4, 5, 6, 8], + "(method 49 nav-mesh)": [0, 1, 2, 3, 5], + "(method 18 nav-control)": [11, 12, 19, 20, 31, 34], + "(method 19 nav-control)": [9, 10], + "(method 40 nav-state)": [1, 2], + "point-poly-distance-min": [0, 1, 2, 3, 4, 5, 6, 7, 10], + "find-closest-circle-ray-intersection": [0, 4, 15, 16, 17, 18], + "(method 39 vehicle)": [0, 10, 12, 15], + "(anon-function 7 vehicle-states)": [0, 2], + "(method 11 vehicle-hud-requests)": [0, 6, 7, 10], + "(anon-function 12 neo-juicer)": [29, 30], + "(method 160 neo-grenadier)": [1, 2, 3], + "(method 82 spydroid-orig)": [13], + "(method 118 vehicle)": [3, 4, 7, 8, 9, 10, 17, 26, 30, 31, 33], + "(method 25 squad-control)": [0, 4, 5, 7], + "target-pilot-post": [0, 29], + "(method 36 was-squad-control)": [0, 8, 14, 16], + "(anon-function 6 nst-tasks)": [4, 9, 10, 16, 23, 30], + "(method 33 task-manager-nest-cocoons)": [3, 7, 13, 28], + "(method 90 wvehicle)": [29, 37, 38, 44], + "(anon-function 2 artifact-race)": [40, 55, 56, 57, 65, 66], + "(anon-function 27 course-race)": [6], + "(anon-function 65 temple-obs)": [5, 6], + "(anon-function 5 target-turret)": [0, 1, 2, 3], + "dp-bipedal-consider-attacks": [15, 19], + "(anon-function 25 volcanox-obs)": [3, 5, 6], + "(method 36 task-manager-arena-fight-base)": [11], + "(method 28 hud-wasgun)": [0, 1, 2, 4], + "(method 15 hud-wasgun)": [8, 28, 29, 30, 54], + "(method 15 vehicle-controller)": [0, 3, 5, 6, 7, 10], + "(method 51 hvehicle)": [5], + "(method 159 hvehicle)": [0, 1, 10, 19, 21, 23, 26], + "(method 18 vehicle-controller)": [0, 1, 74, 75], + "glider-too-low?": [2, 19, 21], + "(method 39 task-manager-desert-glide)": [0, 3, 4, 9], + "(method 36 task-manager-desert-glide)": [20, 50, 60], + "(method 37 task-manager-desert-glide)": [11, 12, 23, 29, 31], + "(method 34 task-manager-desert-glide)": [3], + "(anon-function 20 target-flut)": [0, 38, 39], + "(anon-function 14 flut-racer)": [7, 17, 19], + "(method 28 conveyor)": [22], + "generic-merc-execute-all": [7, 15], + "check-enemy": [0, 1], + "(method 91 h-warf)": [0], + "(method 51 h-warf)": [5], + "(method 44 nav-graph)": [0, 7, 8, 26, 34], + "(method 15 city-level-info)": [0, 1, 2, 6, 7, 9, 11, 13], + "(method 10 traffic-suppressor)": [0, 1, 2, 4], + "(method 18 traffic-tracker)": [5, 6, 7, 8], + "(method 21 traffic-tracker)": [0], + "(method 9 cty-faction-manager)": [8], + "(method 46 traffic-engine)": [0, 1, 2, 4], + "(method 42 traffic-engine)": [6], + "(method 17 traffic-manager)": [7, 19, 27, 28, 29, 30, 41], + "(anon-function 10 guard-rifle)": [9], + "(method 261 crimson-guard)": [52, 64], + "(anon-function 13 metalhead-predator)": [24, 25], + "(anon-function 90 ctywide-obs)": [4], + "(anon-function 10 cty-sniper-turret)": [44], + "(method 33 rub-tower)": [9, 10], + "(method 30 gungame-manager)": [0, 4, 5, 7], + "closest-pt-in-triangle": [17], + + "find-knot-span": [0, 1, 2, 3, 5, 6, 7, 8, 9], + "curve-evaluate!": [0, 2, 5, 6, 7, 8, 9], + "circle-circle-xz-intersect": [ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 + ] + }, + + // 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": { + "auto-save-post": [[182, 1]], + "(method 10 menu-secret-option)": [[289, 1]], + "(method 10 menu-create-game-option)": [[49, 1]], + "(method 10 menu-format-card-option)": [[49, 1]], + "(method 10 menu-card-removed-option)": [[49, 1]], + "(method 10 menu-insert-card-option)": [[49, 1]], + "(method 10 menu-hero-mode-message-option)": [[50, 1]], + "(method 10 menu-secrets-insufficient-space-option)": [[51, 1]], + "(method 10 menu-error-loading-option)": [ + [65, 1], + [100, 1] + ], + "(method 10 menu-insufficient-space-option)": [ + [72, 1], + [112, 1] + ], + "(method 10 menu-error-auto-saving-option)": [[73, 1]], + "(method 10 menu-loading-option)": [[113, 1]], + "(method 10 menu-icon-info-option)": [[150, 1]], + "(method 17 hud-goal)": [[71, 0]], + "(method 17 hud-miss)": [[71, 0]], + "(method 16 resetter)": [ + [68, 1], + [101, 1], + [130, 1] + ], + "(method 32 task-manager-desert-turtle-training)": [[59, 1]], + "(method 24 race-manager)": [[97, 1]], + "(method 25 race-manager)": [ + [97, 1], + [126, 1] + ], + "(method 15 hud-race-final-stats)": [[131, 0]], + "(method 15 hud-wasbbv-goal-time)": [[74, 0]], + "(method 32 task-manager-lightjak-training)": [[53, 0]], + "(method 18 hover-training-manager)": [[69, 0]], + "(method 37 task-manager-arena-training)": [[67, 1]], + "(method 15 hud-arena-final-stats)": [ + [103, 0], + [147, 0] + ], + "(method 35 task-manager-arena-fight-base)": [[53, 0]], + "(method 32 task-manager-arena-gun-training)": [[53, 0]], + "(method 26 task-manager-arena-fight-2)": [ + [72, 0], + [186, 0] + ], + "(method 37 task-manager-wascity-gungame)": [ + [48, 0], + [78, 0], + [119, 0], + [157, 0], + [195, 0], + [227, 0], + [268, 0], + [306, 0], + [338, 0], + [379, 0], + [411, 0], + [446, 0] + ], + "(method 30 was-pre-game)": [ + [184, 0], + [276, 0] + ], + "(method 32 task-manager-throne-gun-training)": [[53, 0]], + "(method 17 hud-spider-killed)": [[71, 0]], + "(trans idle des-burning-bush)": [ + [226, 1], + [257, 0] + ], + "(method 37 des-burning-bush)": [ + [278, 0], + [336, 0] + ], + "(method 38 des-burning-bush)": [ + [109, 0], + [153, 0], + [196, 0] + ], + "(method 15 freeze-time-hud)": [[108, 0]], + "(method 17 freeze-time-hud)": [[97, 0]], + "(method 15 hud-wasbbv-score)": [[61, 0]], + "(method 15 hud-wasbbv-goal)": [[64, 0]], + "(method 32 task-manager-dark-punch-training)": [[53, 0]], + "(method 32 task-manager-lightjak-training-shield)": [[53, 0]], + "(trans credits highres-viewer-manager)": [[185, 0]], + "(trans idle hirez-viewer)": [[356, 0]], + "(trans idle burning-bush)": [ + [171, 1], + [202, 0] + ], + "(method 33 task-manager-bbush-board)": [[86, 0]], + "(method 17 board-score-hud)": [[71, 0]], + "(method 23 gungame-manager)": [ + [52, 0], + [90, 0], + [128, 0], + [164, 0], + [194, 0], + [235, 0], + [273, 0], + [305, 0], + [346, 0], + [378, 0], + [413, 0] + ], + "(trans carry precur-bomb)": [[60, 0]] + }, + + "mips2c_functions_by_name": [ + "collide-do-primitives", + "moving-sphere-triangle-intersect", + "calc-animation-from-spr", + "draw-string-asm", + // "draw-string", + // "get-string-length", + "adgif-shader<-texture-with-update!", + "init-boundary-regs", + "draw-boundary-polygon", + "render-boundary-quad", + "render-boundary-tri", + "clip-polygon-against-negative-hyperplane", + "clip-polygon-against-positive-hyperplane", + "sp-init-fields!", + "particle-adgif", + "sp-launch-particles-var", + "sparticle-motion-blur", + "sp-process-block-2d", + "sp-process-block-3d", + "set-tex-offset", + "draw-large-polygon", + "render-sky-quad", + "render-sky-tri", + "(method 17 sky-work)", + "(method 18 sky-work)", + "(method 32 sky-work)", + "(method 31 sky-work)", + "(method 29 sky-work)", + "(method 30 sky-work)", + // "(method 34 sky-work)", + // "(method 35 sky-work)", + "(method 11 collide-hash)", + "(method 12 collide-hash)", + "fill-bg-using-box-new", + "fill-bg-using-line-sphere-new", + "(method 12 collide-mesh)", + "(method 14 collide-mesh)", + "(method 15 collide-mesh)", + "(method 10 collide-edge-hold-list)", + "(method 19 collide-edge-work)", + "(method 9 edge-grab-info)", + "(method 16 collide-edge-work)", + "(method 17 collide-edge-work)", + "(method 18 collide-edge-work)", + "draw-large-polygon-ocean", + "render-ocean-quad", + "init-ocean-far-regs", + "(method 14 ocean)", + "(method 15 ocean)", + "(method 16 ocean)", + "(method 18 grid-hash)", + "(method 19 grid-hash)", + "(method 20 grid-hash)", + "(method 22 grid-hash)", + "(method 28 sphere-hash)", + "(method 33 sphere-hash)", + "(method 29 sphere-hash)", + "(method 30 sphere-hash)", + "(method 31 sphere-hash)", + "(method 32 sphere-hash)", + "(method 32 spatial-hash)", + "(method 34 spatial-hash)", + "(method 35 spatial-hash)", + "(method 36 spatial-hash)", + "(method 38 spatial-hash)", + "(method 10 collide-shape-prim-mesh)", + "(method 10 collide-shape-prim-sphere)", + "(method 10 collide-shape-prim-group)", + "(method 11 collide-shape-prim-mesh)", + "(method 11 collide-shape-prim-sphere)", + "(method 11 collide-shape-prim-group)", + "(method 9 collide-cache-prim)", + "(method 10 collide-cache-prim)", + "(method 17 collide-cache)", + "(method 9 collide-puss-work)", + "(method 10 collide-puss-work)", + "bones-mtx-calc", + "foreground-check-longest-edge-asm", + "foreground-merc", + "add-light-sphere-to-light-group", + "light-hash-add-items", + "light-hash-count-items", + "light-hash-get-bucket-index", + // nav-mesh / nav-control related + // TODO - it would be nice to eventually figure out the asm blocks for the majority of these + "nav-state-patch-pointers", + "(method 20 nav-engine)", + // "find-closest-circle-ray-intersection", + // "(method 18 nav-control)", + "nav-dma-send-to-spr-no-flush", + "nav-dma-send-from-spr-no-flush", + "(method 17 nav-engine)", + "(method 18 nav-engine)", + "(method 21 nav-engine)", + "(method 39 nav-state)", + "setup-blerc-chains-for-one-fragment", + "blerc-execute", + "ripple-create-wave-table", + "ripple-execute-init", + "ripple-apply-wave-table", + "ripple-matrix-scale", + "(method 53 squid)", + "init-vortex-regs", + "render-vortex-quad", + "draw-large-polygon-vortex", + "foreground-generic-merc", + "generic-merc-init-asm", + "mercneric-convert", + "high-speed-reject", + "generic-translucent", + "generic-merc-query", + "generic-merc-death", + "generic-merc-execute-asm", + "generic-merc-do-chain", + "generic-light-proc", + "generic-envmap-proc", + "generic-prepare-dma-double", + "generic-prepare-dma-single", + "generic-warp-source-proc", + "generic-warp-dest-proc", + "generic-warp-dest", + "generic-warp-envmap-dest", + "generic-no-light-proc", + "(method 21 cloth-system)", + "debug-line-clip?", + "(method 9 font-work)", + "live-func-curve", + "birth-func-curve", + "sparticle-motion-blur-dirt", + "foreground-draw-hud", + "shadow-execute", + "shadow-add-double-edges", + "shadow-add-single-edges", + "shadow-add-facing-single-tris", + "shadow-add-double-tris", + "shadow-xform-verts", + "shadow-calc-dual-verts", + "shadow-scissor-edges", + "shadow-scissor-top", + "shadow-init-vars", + "shadow-find-facing-single-tris", + "shadow-find-single-edges", + "shadow-find-facing-double-tris", + "shadow-find-double-edges", + "shadow-add-verts", + "shadow-add-single-tris" + ], + + "mips2c_jump_table_functions": {}, + + // there are some missing textures. I don't know what the game actually does here. + // the format for entries is [level, tpage, index] + "missing_textures": [ + ["lfac", 0, 0], + ["ltow", 0, 0], + ["lcit", 0, 0], + ["pow", 0, 0], + ["wasintro", 0, 0], + ["lfacctyb", 0, 0], + ["intpfall", 0, 0], + ["lfaccity", 0, 0], + ["ltowcity", 0, 0], + ["powergd", 0, 0], + ["lcitysml", 0, 0] + ], + + // some object files have garbage pad data at the end which makes the decompiler + // assume they must be different files, such as the art group for orb-cache-top. + // this just suppresses a message. + "expected_merged_objs": [] +} diff --git a/decompiler/config/jakx/pal/import_deps.jsonc b/decompiler/config/jakx/pal/import_deps.jsonc new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/decompiler/config/jakx/pal/import_deps.jsonc @@ -0,0 +1 @@ +{} diff --git a/decompiler/config/jakx/pal/inputs.jsonc b/decompiler/config/jakx/pal/inputs.jsonc new file mode 100644 index 00000000000..3de2c103750 --- /dev/null +++ b/decompiler/config/jakx/pal/inputs.jsonc @@ -0,0 +1,428 @@ +{ + ////////////////////// + // 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": [ + // engine files + "CGO/ART.CGO", + "CGO/COMMON.CGO", + "CGO/ENGINE.CGO", + "CGO/KERNEL.CGO", + "CGO/GAME.CGO", + "DGO/ASHCRED.DGO", + "DGO/ASHLEV.DGO", + "DGO/ASHVL.DGO", + "DGO/ASHVL2.DGO", + "DGO/ASHVL3.DGO", + "DGO/ATL.DGO", + "DGO/ATOLLART.DGO", + "DGO/ATOLLCTF.DGO", + "DGO/ATOLLS.DGO", + "DGO/ATOPLOW.DGO", + "DGO/ATX.DGO", + "DGO/BEARL.DGO", + "DGO/BOBCL.DGO", + "DGO/BRDROOM.DGO", + "DGO/BRDROOMF.DGO", + "DGO/CANFOOT.DGO", + "DGO/CANSPARS.DGO", + "DGO/CANSPARW.DGO", + "DGO/CANTBOX.DGO", + "DGO/CANYONS.DGO", + "DGO/CANYONTT.DGO", + "DGO/CANYONW.DGO", + "DGO/CARS.DGO", + "DGO/CHEEL.DGO", + "DGO/CLF.DGO", + "DGO/CLFX.DGO", + "DGO/CLIFCTF.DGO", + "DGO/CLIFFART.DGO", + "DGO/CLIFFSS.DGO", + "DGO/CLIFHUNT.DGO", + "DGO/CLIFTRN.DGO", + "DGO/CNSPFOOT.DGO", + "DGO/CNSPTBOX.DGO", + "DGO/CNSPTT.DGO", + "DGO/COL.DGO", + "DGO/COLART.DGO", + "DGO/COLICLCT.DGO", + "DGO/COLICTF.DGO", + "DGO/COLIREV.DGO", + "DGO/COLISEUS.DGO", + "DGO/COLX.DGO", + "DGO/COUGL.DGO", + "DGO/CREDITS.DGO", + "DGO/CSX.DGO", + "DGO/CSY.DGO", + "DGO/CYA.DGO", + "DGO/CYB.DGO", + "DGO/CYC.DGO", + "DGO/CYD.DGO", + "DGO/CYE.DGO", + "DGO/CYX.DGO", + "DGO/CYY.DGO", + "DGO/DAXCRED.DGO", + "DGO/DAXLEV.DGO", + "DGO/DAXTL.DGO", + "DGO/DESACTF.DGO", + "DGO/DESARENS.DGO", + "DGO/DESART.DGO", + "DGO/DESCLCT.DGO", + "DGO/DESHUNT.DGO", + "DGO/DESHUNT2.DGO", + "DGO/DESISLES.DGO", + "DGO/DESRAPT.DGO", + "DGO/DESREV.DGO", + "DGO/DETHRACE.DGO", + "DGO/DISLEART.DGO", + "DGO/DISLECTF.DGO", + "DGO/DKA.DGO", + "DGO/DKB.DGO", + "DGO/DKC.DGO", + "DGO/DKD.DGO", + "DGO/DKE.DGO", + "DGO/DKKRFOOT.DGO", + "DGO/DKKRTBOX.DGO", + "DGO/DKKRTT.DGO", + "DGO/DKKX.DGO", + "DGO/DKKY.DGO", + "DGO/DKX.DGO", + "DGO/DOCKFOOT.DGO", + "DGO/DOCKKRAS.DGO", + "DGO/DOCKKRAW.DGO", + "DGO/DOCKSS.DGO", + "DGO/DOCKSTT.DGO", + "DGO/DOCKSW.DGO", + "DGO/DOCKTBOX.DGO", + "DGO/DRA.DGO", + "DGO/DRB.DGO", + "DGO/DRC.DGO", + "DGO/DRD.DGO", + "DGO/DRDKFOOT.DGO", + "DGO/DRDKTBOX.DGO", + "DGO/DRDKTT.DGO", + "DGO/DRDX.DGO", + "DGO/DRDY.DGO", + "DGO/DROMDOCS.DGO", + "DGO/DROMDOCW.DGO", + "DGO/DROMES.DGO", + "DGO/DROMETT.DGO", + "DGO/DROMEW.DGO", + "DGO/DROMEX.DGO", + "DGO/DROMFOOT.DGO", + "DGO/DROMTBOX.DGO", + "DGO/DRONE.DGO", + "DGO/DRX.DGO", + "DGO/DRY.DGO", + "DGO/DSI.DGO", + "DGO/DSR.DGO", + "DGO/DSRX.DGO", + "DGO/DSX.DGO", + "DGO/EIGHT.DGO", + "DGO/EIGHTB.DGO", + "DGO/FALCL.DGO", + "DGO/FMVLEV.DGO", + "DGO/FOXL.DGO", + "DGO/GARAGE.DGO", + "DGO/GARAGEB.DGO", + "DGO/GILAL.DGO", + "DGO/GTBCRED.DGO", + "DGO/GTBLEV.DGO", + "DGO/GTBVL.DGO", + "DGO/HAVENS.DGO", + "DGO/HAVENW.DGO", + "DGO/HAVJUNGS.DGO", + "DGO/HAVJUNGW.DGO", + "DGO/HAVNFOOT.DGO", + "DGO/HAVNTBOX.DGO", + "DGO/HAVSEWS.DGO", + "DGO/HAVSEWW.DGO", + "DGO/HAVTFOOT.DGO", + "DGO/HAVTOURS.DGO", + "DGO/HAVTOURW.DGO", + "DGO/HAVTT.DGO", + "DGO/HAVTTBOX.DGO", + "DGO/HJNGFOOT.DGO", + "DGO/HJX.DGO", + "DGO/HJY.DGO", + "DGO/HSX.DGO", + "DGO/HSY.DGO", + "DGO/HVA.DGO", + "DGO/HVB.DGO", + "DGO/HVC.DGO", + "DGO/HVD.DGO", + "DGO/HVE.DGO", + "DGO/HVJGTBOX.DGO", + "DGO/HVJGTT.DGO", + "DGO/HVSWFOOT.DGO", + "DGO/HVSWTBOX.DGO", + "DGO/HVSWTT.DGO", + "DGO/HVTRTT.DGO", + "DGO/HVX.DGO", + "DGO/HVY.DGO", + "DGO/IBX.DGO", + "DGO/IBY.DGO", + "DGO/ICA.DGO", + "DGO/ICB.DGO", + "DGO/ICBGTT.DGO", + "DGO/ICC.DGO", + "DGO/ICD.DGO", + "DGO/ICEBERGS.DGO", + "DGO/ICEBERGW.DGO", + "DGO/ICEBFOOT.DGO", + "DGO/ICEBTBOX.DGO", + "DGO/ICEFOOT.DGO", + "DGO/ICEPASSS.DGO", + "DGO/ICEPASSW.DGO", + "DGO/ICEPFOOT.DGO", + "DGO/ICEPTBOX.DGO", + "DGO/ICES.DGO", + "DGO/ICETBOX.DGO", + "DGO/ICETFOOT.DGO", + "DGO/ICETOURS.DGO", + "DGO/ICETOURW.DGO", + "DGO/ICETRN.DGO", + "DGO/ICETT.DGO", + "DGO/ICETTBOX.DGO", + "DGO/ICEW.DGO", + "DGO/ICPSTT.DGO", + "DGO/ICTRTT.DGO", + "DGO/ICX.DGO", + "DGO/ICY.DGO", + "DGO/IPX.DGO", + "DGO/IPY.DGO", + "DGO/JAKCRED.DGO", + "DGO/JAKLEV.DGO", + "DGO/JAKVL.DGO", + "DGO/JGA.DGO", + "DGO/JGB.DGO", + "DGO/JGC.DGO", + "DGO/JGD.DGO", + "DGO/JGE.DGO", + "DGO/JGF.DGO", + "DGO/JGG.DGO", + "DGO/JGX.DGO", + "DGO/JGY.DGO", + "DGO/JKALEV.DGO", + "DGO/JKBLEV.DGO", + "DGO/JKCLEV.DGO", + "DGO/JUNGFOOT.DGO", + "DGO/JUNGLES.DGO", + "DGO/JUNGLETT.DGO", + "DGO/JUNGLEW.DGO", + "DGO/JUNGTBOX.DGO", + "DGO/JUNGTRN.DGO", + "DGO/KAELEV.DGO", + "DGO/KCR.DGO", + "DGO/KCROSART.DGO", + "DGO/KCROSCTF.DGO", + "DGO/KCROSSS.DGO", + "DGO/KCRSCLCT.DGO", + "DGO/KCRSPLOW.DGO", + "DGO/KCRX.DGO", + "DGO/KEICRED.DGO", + "DGO/KIELEV.DGO", + "DGO/KIEVL.DGO", + "DGO/KLECRED.DGO", + "DGO/KLELEV.DGO", + "DGO/KLEVL.DGO", + "DGO/KLEVL2.DGO", + "DGO/KRA.DGO", + "DGO/KRASFOOT.DGO", + "DGO/KRASS.DGO", + "DGO/KRASTBOX.DGO", + "DGO/KRASTRN.DGO", + "DGO/KRASTT.DGO", + "DGO/KRASW.DGO", + "DGO/KRATFOOT.DGO", + "DGO/KRATOURS.DGO", + "DGO/KRATOURW.DGO", + "DGO/KRATTBOX.DGO", + "DGO/KRB.DGO", + "DGO/KRC.DGO", + "DGO/KRTRTT.DGO", + "DGO/KRX.DGO", + "DGO/KRY.DGO", + "DGO/LEOPL.DGO", + "DGO/MENU2.DGO", + "DGO/MENUMAP.DGO", + "DGO/MONGL.DGO", + "DGO/OSMLEV.DGO", + "DGO/PANTL.DGO", + "DGO/PEAKFOOT.DGO", + "DGO/PEAKS.DGO", + "DGO/PEAKTBOX.DGO", + "DGO/PEAKTT.DGO", + "DGO/PEAKW.DGO", + "DGO/PECCRED.DGO", + "DGO/PECLEV.DGO", + "DGO/PECVL.DGO", + "DGO/PKA.DGO", + "DGO/PKB.DGO", + "DGO/PKC.DGO", + "DGO/PKD.DGO", + "DGO/PKE.DGO", + "DGO/PKX.DGO", + "DGO/POSSL.DGO", + "DGO/RACEWEAP.DGO", + "DGO/RATLEV.DGO", + "DGO/RAYCRED.DGO", + "DGO/RAYLEV.DGO", + "DGO/RAYVL.DGO", + "DGO/RAYVL2.DGO", + "DGO/RAZCRED.DGO", + "DGO/RAZLEV.DGO", + "DGO/RAZVL.DGO", + "DGO/RTH.DGO", + "DGO/RUSTYH.DGO", + "DGO/S2A.DGO", + "DGO/S3A.DGO", + "DGO/SBWLCTF.DGO", + "DGO/SEWERS.DGO", + "DGO/SEWERTT.DGO", + "DGO/SEWERW.DGO", + "DGO/SEWFOOT.DGO", + "DGO/SEWTBOX.DGO", + "DGO/SIGCRED.DGO", + "DGO/SIGLEV.DGO", + "DGO/SIGVL.DGO", + "DGO/SIGVL2.DGO", + "DGO/SIGVL3.DGO", + "DGO/SNAKL.DGO", + "DGO/SNO.DGO", + "DGO/SNOBART.DGO", + "DGO/SNOBOWLS.DGO", + "DGO/SNOWFOOT.DGO", + "DGO/SNOWS.DGO", + "DGO/SNOWTBOX.DGO", + "DGO/SNOWTRN2.DGO", + "DGO/SNOWTT.DGO", + "DGO/SNOX.DGO", + "DGO/SNW.DGO", + "DGO/SNWX.DGO", + "DGO/SPA.DGO", + "DGO/SPARFOOT.DGO", + "DGO/SPARGUSS.DGO", + "DGO/SPARGUSW.DGO", + "DGO/SPARTEMS.DGO", + "DGO/SPARTEMW.DGO", + "DGO/SPARTT.DGO", + "DGO/SPATFOOT.DGO", + "DGO/SPATOURS.DGO", + "DGO/SPATOURW.DGO", + "DGO/SPATTBOX.DGO", + "DGO/SPB.DGO", + "DGO/SPC.DGO", + "DGO/SPD.DGO", + "DGO/SPE.DGO", + "DGO/SPRGSTBX.DGO", + "DGO/SPTMFOOT.DGO", + "DGO/SPTMTBOX.DGO", + "DGO/SPTMTT.DGO", + "DGO/SPTRTT.DGO", + "DGO/SPX.DGO", + "DGO/SPY.DGO", + "DGO/STX.DGO", + "DGO/STY.DGO", + "DGO/SWA.DGO", + "DGO/SWB.DGO", + "DGO/SWC.DGO", + "DGO/SWD.DGO", + "DGO/SWE.DGO", + "DGO/SWF.DGO", + "DGO/SWX.DGO", + "DGO/TARLEV.DGO", + "DGO/TEMPFOOT.DGO", + "DGO/TEMPLES.DGO", + "DGO/TEMPLETT.DGO", + "DGO/TEMPLEW.DGO", + "DGO/TEMPTBOX.DGO", + "DGO/THACRED.DGO", + "DGO/THALEV.DGO", + "DGO/THAVL.DGO", + "DGO/THAVL2.DGO", + "DGO/THAVL3.DGO", + "DGO/THBCRED.DGO", + "DGO/THBLEV.DGO", + "DGO/THBVL.DGO", + "DGO/THBVL2.DGO", + "DGO/THBVL3.DGO", + "DGO/THCCRED.DGO", + "DGO/THCLEV.DGO", + "DGO/THCVL.DGO", + "DGO/THCVL2.DGO", + "DGO/THCVL3.DGO", + "DGO/TIGEL.DGO", + "DGO/TOADL.DGO", + "DGO/TORCRED.DGO", + "DGO/TORLEV.DGO", + "DGO/TORVL.DGO", + "DGO/TORVL2.DGO", + "DGO/TORVL3.DGO", + "DGO/TPA.DGO", + "DGO/TPB.DGO", + "DGO/TPC.DGO", + "DGO/TPD.DGO", + "DGO/TPE.DGO", + "DGO/TPX.DGO", + "DGO/TPY.DGO", + "DGO/TURTL.DGO", + "DGO/UR8CRED.DGO", + "DGO/UR8LEV.DGO", + "DGO/UR8VL.DGO", + "DGO/UR8VL2.DGO", + "DGO/UR8VL3.DGO", + "DGO/WOLFL.DGO", + "DGO/WOMBL.DGO", + "DGO/XIMLEV.DGO" + ], + + "levels_to_extract": [], + + // some objects are part of STR files (streaming data). + "str_file_names": [], + + // streaming "art" that should be added to GAME.FR3. + "str_art_file_names": [], + + "object_file_names": [ + "TEXT/0COMMON.TXT", + "TEXT/0SUBTIT.TXT", + "TEXT/1COMMON.TXT", + "TEXT/1SUBTIT.TXT", + "TEXT/2COMMON.TXT", + "TEXT/2SUBTIT.TXT", + "TEXT/3COMMON.TXT", + "TEXT/3SUBTIT.TXT", + "TEXT/4COMMON.TXT", + "TEXT/4SUBTIT.TXT", + "TEXT/5COMMON.TXT", + "TEXT/5SUBTIT.TXT", + "TEXT/6COMMON.TXT", + "TEXT/6SUBTIT.TXT", + "TEXT/7COMMON.TXT", + "TEXT/7SUBTIT.TXT", + "TEXT/8COMMON.TXT", + "TEXT/8SUBTIT.TXT", + "TEXT/9COMMON.TXT", + "TEXT/9SUBTIT.TXT", + "TEXT/10COMMON.TXT", + "TEXT/10SUBTIT.TXT", + "TEXT/11COMMON.TXT", + "TEXT/11SUBTIT.TXT" + ], + + "streamed_audio_file_names": [ + "VAGWAD.ENG", + "VAGWAD.FRE", + "VAGWAD.GER", + "VAGWAD.SPA", + "VAGWAD.ITA", + "VAGWAD.INT" + ] +} diff --git a/decompiler/config/jakx/pal/joint-node-info.min.json b/decompiler/config/jakx/pal/joint-node-info.min.json new file mode 100644 index 00000000000..670f9fe6ccb --- /dev/null +++ b/decompiler/config/jakx/pal/joint-node-info.min.json @@ -0,0 +1 @@ +{"adv-event-panel-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"select_screen"],[6,"selectscreentype"],[7,"topleft"],[8,"bottomright"]],"antenna-all-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"flag_a"],[4,"flag_b"],[5,"flag_c"],[6,"flag_d"],[7,"tail_a"],[8,"tail_b"]],"ash-hr-cred-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"stomach"],[5,"chest"],[6,"neck"],[7,"head"],[8,"Lear_A"],[9,"Rear_A"],[10,"Lshoulder"],[11,"Lelbow"],[12,"Lhand"],[13,"Rshoulder"],[14,"Relbow"],[15,"Rhand"],[16,"hips"],[17,"Lthigh"],[18,"Lknee"],[19,"Lankle"],[20,"Rthigh"],[21,"Rknee"],[22,"Rankle"],[23,"Lear_B"],[24,"Lear_C"],[25,"Rear_B"],[26,"Rear_C"],[27,"hairR1_A"],[28,"hairR1_B"],[29,"hairR1_C"],[30,"hairR2_A"],[31,"hairR2_B"],[32,"hairR2_C"],[33,"hairL1_A"],[34,"hairL1_B"],[35,"hairL1_C"],[36,"hairL2_A"],[37,"hairL2_B"],[38,"hairL2_C"],[39,"hairM_A1"],[40,"hairM_B"],[41,"hairM_C"],[42,"LthumbA"],[43,"LthumbB"],[44,"LthumbC"],[45,"LindexA"],[46,"LindexB"],[47,"LindexC"],[48,"LmiddleA"],[49,"LmiddleB"],[50,"LmiddleC"],[51,"LringA"],[52,"LringB"],[53,"LringC"],[54,"LpinkyA"],[55,"LpinkyB"],[56,"LpinkyC"],[57,"RthumbA"],[58,"RthumbB"],[59,"RthumbC"],[60,"RindexA"],[61,"RindexB"],[62,"RindexC"],[63,"RmiddleA"],[64,"RmiddleB"],[65,"RmiddleC"],[66,"RringA"],[67,"RringB"],[68,"RringC"],[69,"RpinkyA"],[70,"RpinkyB"],[71,"RpinkyC"],[72,"ltit_A"],[73,"rtit_A"],[74,"lcollar_A"],[75,"lcollar_B"],[76,"lcollar_C"],[77,"rcollar_A"],[78,"rcollar_B"],[79,"rcollar_C"],[80,"Lball"],[81,"LlegDangle1_A"],[82,"LlegDangle2_A"],[83,"LlegDangle3_A"],[84,"Rball"],[85,"RlegDangle3_A"],[86,"RlegDangle2_A"],[87,"RlegDangle1_A"],[88,"holster"],[89,"gun"]],"atoll-dish-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"Yrotation"]],"atoll-rotor-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"body-parts-tab-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"arm"],[6,"map_screen"],[7,"mapscreentype"],[8,"topleft"],[9,"bottomright"]],"bottom-bar-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"bottom_bar"],[6,"bottombartype"],[7,"topleft"],[8,"bottomright"],[9,"topleft1"],[10,"bottomright1"],[11,"topleft2"],[12,"bottomright2"],[13,"topleft3"],[14,"bottomright3"]],"brd-pool-water-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"car-color-tab-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"arm"],[6,"map_screen"],[7,"mapscreentype"],[8,"topleft"],[9,"bottomright"],[10,"tri0"],[11,"tri1"],[12,"tri2"],[13,"color"]],"car-interior-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"car-vert-tab-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"arm"],[6,"map_screen"],[7,"mapscreentype"],[8,"topleft"],[9,"bottomright"]],"cash-bar-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"cash_bar"],[6,"topleft"],[7,"bottomright"],[8,"topleft2"],[9,"bottomright2"]],"character-select-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"map_screen"],[6,"mapscreentype"],[7,"topleft"],[8,"bottomright"],[9,"topleft_type"],[10,"bottomright_type"]],"cliffs-fence-debris-post-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"cliffs-fence-debris-raila-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"cliffs-fence-debris-railb-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"cliffs-fence-debris-railc-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"cliffs-wood-fence-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"cliffs-wood-fence-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"cliffs-wood-fence-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"cliffs-wood-fence-d-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-atlas-base-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"coli_atlas_base_dust"]],"coli-atlas-base-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"coli_atlas_base_dust"]],"coli-atlas-base-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"coli_atlas_base_dust"]],"coli-atlas-break-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"a"],[4,"b"],[5,"c"],[6,"d"],[7,"e"],[8,"f"],[9,"g"],[10,"h"],[11,"i"],[12,"j"],[13,"k"],[14,"l"],[15,"m"],[16,"n"],[17,"o"],[18,"p"],[19,"q"],[20,"r"],[21,"s"],[22,"t"],[23,"u"],[24,"v"],[25,"w"],[26,"x"],[27,"y"],[28,"z"],[29,"aa"],[30,"ab"],[31,"ac"],[32,"ad"],[33,"ae"],[34,"af"],[35,"ag"],[36,"ah"],[37,"ai"],[38,"aj"],[39,"ak"],[40,"al"],[41,"am"],[42,"an"],[43,"ao"],[44,"ap"],[45,"aq"],[46,"ar"],[47,"as"],[48,"at"],[49,"au"],[50,"av"],[51,"aw"],[52,"ax"]],"coli-atlas-break-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"ay"],[4,"az"],[5,"ba"],[6,"bb"],[7,"bc"],[8,"bd"],[9,"be"],[10,"bf"],[11,"bg"],[12,"bh"],[13,"bi"],[14,"bj"],[15,"bk"],[16,"bl"],[17,"bm"],[18,"bn"],[19,"bo"],[20,"bp"],[21,"bq"],[22,"br"],[23,"bs"],[24,"bt"],[25,"bu"],[26,"bv"],[27,"bw"],[28,"bx"],[29,"by"],[30,"bz"],[31,"ca"],[32,"cb"],[33,"cc"],[34,"cd"],[35,"ce"],[36,"cf"],[37,"cg"],[38,"ch"],[39,"ci"],[40,"cj"],[41,"ck"],[42,"cl"],[43,"cm"],[44,"cn"],[45,"co"],[46,"cp"],[47,"cq"],[48,"cr"],[49,"cs"],[50,"ct"],[51,"cu"],[52,"cv"]],"coli-atlas-break-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"a"],[4,"b"],[5,"c"],[6,"d"],[7,"e"],[8,"f"],[9,"g"],[10,"h"],[11,"i"],[12,"j"],[13,"k"],[14,"l"],[15,"m"],[16,"n"],[17,"o"],[18,"p"],[19,"q"],[20,"r"],[21,"s"],[22,"t"],[23,"u"],[24,"v"],[25,"w"],[26,"x"],[27,"y"],[28,"z"],[29,"aa"],[30,"ab"],[31,"ac"],[32,"ad"],[33,"ae"],[34,"af"],[35,"ag"],[36,"ah"],[37,"ai"],[38,"aj"],[39,"ak"],[40,"al"],[41,"am"],[42,"an"],[43,"ao"],[44,"ap"],[45,"aq"],[46,"ar"],[47,"as"],[48,"at"],[49,"au"],[50,"av"],[51,"aw"],[52,"ax"],[53,"ay"],[54,"az"],[55,"ba"],[56,"bb"],[57,"bc"],[58,"bd"],[59,"be"],[60,"bf"],[61,"bg"],[62,"bh"],[63,"bi"],[64,"bj"],[65,"bk"],[66,"bl"],[67,"bm"],[68,"bn"],[69,"bo"],[70,"bp"],[71,"bq"],[72,"br"],[73,"bs"],[74,"bt"],[75,"bu"],[76,"bv"],[77,"bw"],[78,"bx"],[79,"by"],[80,"bz"],[81,"ca"],[82,"cb"],[83,"cc"],[84,"cd"],[85,"ce"],[86,"cf"],[87,"cg"],[88,"ch"],[89,"ci"],[90,"cj"],[91,"ck"],[92,"cl"],[93,"cm"],[94,"atlas_break"]],"coli-atlas-globe-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-atlas-pillar-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-atlas-statue-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-ball-collision-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-bowl-a-debris-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-bowl-a-debris-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-bowl-a-debris-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-bowl-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-bowl-hanger-debris-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-bowl-hanger-debris-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-bowl-hanger-debris-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-bowl-hanger-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-bridge-a-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"c"]],"coli-bridge-a-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-bridge-a-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-bridge-a-debris-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-bridge-a-debris-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-bridge-a-debris-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-bridge-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"a"],[4,"b"],[5,"c"],[6,"d"],[7,"e"],[8,"f"],[9,"g"],[10,"h"],[11,"i"],[12,"j"],[13,"k"],[14,"l"],[15,"m"],[16,"n"],[17,"o"],[18,"p"],[19,"q"],[20,"r"],[21,"s"],[22,"t"],[23,"u"],[24,"v"],[25,"w"],[26,"x"],[27,"y"],[28,"z"],[29,"aa"],[30,"ab"],[31,"ac"],[32,"ad"],[33,"ae"],[34,"af"],[35,"ag"],[36,"ah"],[37,"aj"],[38,"ak"],[39,"al"],[40,"am"],[41,"an"],[42,"ao"],[43,"ap"],[44,"aq"],[45,"ar"],[46,"as"],[47,"at"],[48,"au"]],"coli-center-arch-debris-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-center-arch-debris-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"a"]],"coli-center-arch-debris-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-center-arch-explode-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"b"],[5,"c"],[6,"d"],[7,"e"],[8,"f"],[9,"g"],[10,"h"]],"coli-center-arch-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-gate-a-straight-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-gate-b-curved-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-gate-debris-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-gate-debris-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-gate-debris-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-pillar-break-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-pillar-debris-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-pillar-debris-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-pillar-debris-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-stands-rail-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-stands-rail-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-stands-rail-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-stands-rail-debris-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-stands-rail-debris-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-stands-rail-debris-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-statue-base-c-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"coli_base_dust"]],"coli-statue-base-c-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"coli_base_dust"]],"coli-statue-base-c-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"coli_base_dust"]],"coli-statue-base-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"coli_base_dust"]],"coli-statue-base-s-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"coli_base_dust"]],"coli-statue-base-s-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"coli_base_dust"]],"coli-statue-base-s-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"coli_base_dust"]],"coli-statue-base-s-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"coli_base_dust"]],"coli-statue-chain-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"a_a"],[4,"a_b"],[5,"a_c"],[6,"a_d"],[7,"a_e"],[8,"a_f"],[9,"b_a"],[10,"b_b"],[11,"b_c"],[12,"b_d"],[13,"b_e"],[14,"b_f"],[15,"c_a"],[16,"c_b"],[17,"c_c"],[18,"c_d"],[19,"c_e"],[20,"c_f"],[21,"d_a"],[22,"d_b"],[23,"d_c"],[24,"d_d"],[25,"d_e"],[26,"d_f"]],"coli-statue-chain-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"a_a"],[4,"a_b"],[5,"a_c"],[6,"a_d"],[7,"a_e"],[8,"a_f"],[9,"b_a"],[10,"b_b"],[11,"b_c"],[12,"b_d"],[13,"b_e"],[14,"b_f"],[15,"c_a"],[16,"c_b"],[17,"c_c"],[18,"c_d"],[19,"c_e"],[20,"c_f"],[21,"d_a"],[22,"d_b"],[23,"d_c"],[24,"d_d"],[25,"d_e"],[26,"d_f"]],"coli-statue-female-c-break-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"a"],[4,"b"],[5,"c"],[6,"d"],[7,"e"],[8,"f"],[9,"g"],[10,"h"],[11,"i"],[12,"j"],[13,"k"],[14,"l"],[15,"m"],[16,"n"],[17,"o"],[18,"p"],[19,"q"],[20,"r"],[21,"s"],[22,"t"],[23,"u"],[24,"v"],[25,"w"],[26,"x"],[27,"y"],[28,"z"],[29,"aa"],[30,"ab"],[31,"ac"],[32,"ad"],[33,"ae"],[34,"af"],[35,"ag"],[36,"ah"],[37,"ai"],[38,"aj"],[39,"ak"],[40,"al"],[41,"am"],[42,"an"],[43,"ao"],[44,"ap"],[45,"aq"],[46,"ar"],[47,"as"],[48,"at"],[49,"coli_statue_break_c"]],"coli-statue-female-c-break-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"a_a"],[4,"a_b"],[5,"a_c"],[6,"a_d"],[7,"a_e"],[8,"a_f"],[9,"b_a"],[10,"b_b"],[11,"b_c"],[12,"b_d"],[13,"b_e"],[14,"b_f"],[15,"c_a"],[16,"c_b"],[17,"c_c"],[18,"c_d"],[19,"c_e"],[20,"c_f"],[21,"d_a"],[22,"d_b"],[23,"d_c"],[24,"d_d"],[25,"d_e"],[26,"d_f"]],"coli-statue-female-c-break-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"a"],[4,"b"],[5,"c"],[6,"d"],[7,"e"],[8,"f"],[9,"g"],[10,"h"],[11,"i"],[12,"j"],[13,"k"],[14,"l"],[15,"m"],[16,"n"],[17,"o"],[18,"p"],[19,"q"],[20,"r"],[21,"s"],[22,"t"],[23,"u"],[24,"v"],[25,"w"],[26,"x"],[27,"y"],[28,"z"],[29,"aa"],[30,"ab"],[31,"ac"],[32,"ad"],[33,"ae"],[34,"af"],[35,"ag"],[36,"ah"]],"coli-statue-female-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"coli-statue-female-s-break-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"a"],[4,"b"],[5,"c"],[6,"d"],[7,"e"],[8,"f"],[9,"g"],[10,"h"],[11,"i"],[12,"j"],[13,"k"],[14,"l"],[15,"m"],[16,"n"],[17,"o"],[18,"p"],[19,"q"],[20,"r"],[21,"s"],[22,"t"],[23,"u"],[24,"v"],[25,"w"],[26,"x"],[27,"y"],[28,"z"],[29,"aa"],[30,"ab"],[31,"ac"],[32,"ad"],[33,"ae"],[34,"af"],[35,"ag"],[36,"ah"],[37,"ai"],[38,"aj"],[39,"ak"],[40,"al"],[41,"am"],[42,"an"],[43,"ao"],[44,"ap"],[45,"aq"],[46,"ar"],[47,"as"],[48,"at"],[49,"au"],[50,"av"],[51,"coli_statue_break_s"]],"coli-statue-female-s-break-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"a_a"],[4,"a_b"],[5,"a_c"],[6,"a_d"],[7,"a_e"],[8,"a_f"],[9,"b_a"],[10,"b_b"],[11,"b_c"],[12,"b_d"],[13,"b_e"],[14,"b_f"],[15,"c_a"],[16,"c_b"],[17,"c_c"],[18,"c_d"],[19,"c_e"],[20,"c_f"],[21,"d_a"],[22,"d_b"],[23,"d_c"],[24,"d_d"],[25,"d_e"],[26,"d_f"]],"coli-statue-female-s-break-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"a"],[4,"b"],[5,"c"],[6,"d"],[7,"e"],[8,"f"],[9,"g"],[10,"h"],[11,"i"],[12,"j"],[13,"k"],[14,"l"],[15,"m"],[16,"n"],[17,"o"],[18,"p"],[19,"q"],[20,"r"],[21,"s"],[22,"t"],[23,"u"],[24,"v"],[25,"w"],[26,"x"],[27,"y"],[28,"z"],[29,"aa"],[30,"ab"],[31,"ac"],[32,"ad"],[33,"ae"],[34,"af"],[35,"ag"],[36,"ah"]],"collectables-generic-ripples-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"destA"],[5,"destB"],[6,"destC"],[7,"destD"],[8,"destE"],[9,"srcA"],[10,"srcB"],[11,"srcC"],[12,"srcD"],[13,"srcE"]],"collectoid-debris-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"collectoid-debris-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"collectoid-debris-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"collectoid-debris-d-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"collectoid-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"com-rod-of-god-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"combat-racing-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"combat"]],"confirm-screen-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"confirm_screen"],[6,"topleft"],[7,"bottomright"],[8,"topleft2"],[9,"bottomright2"],[10,"topleft3"],[11,"bottomright3"]],"construction-barricade-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"construction-cone-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"crate-metal-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"ctf-base-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"globes"],[4,"blue_globe"],[5,"red_globe"]],"ctf-base-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"flaga"],[5,"flagb"],[6,"flagc"],[7,"flagd"],[8,"flage"],[9,"flagf"]],"ctf-base-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"cust-icon-tab-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"arm"],[6,"map_screen"],[7,"mapscreentype"],[8,"topleft"],[9,"bottomright"]],"cust-title-tab-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"arm"],[6,"map_screen"],[7,"mapscreentype"],[8,"topleft"],[9,"bottomright"]],"dax-hr-cred-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"upper_body"],[5,"upper_bodyB"],[6,"chest"],[7,"neckA"],[8,"neckB"],[9,"head"],[10,"earBaseL"],[11,"earMidL"],[12,"earBaseR"],[13,"earMidR"],[14,"Lshoulder"],[15,"Lelbow"],[16,"Lhand"],[17,"Rshoulder"],[18,"Relbow"],[19,"Rhand"],[20,"hips"],[21,"Lthigh"],[22,"Lknee"],[23,"Lankle"],[24,"Lball"],[25,"Rthigh"],[26,"Rknee"],[27,"Rankle"],[28,"Rball"],[29,"Tail1"],[30,"Tail2"],[31,"Tail3"],[32,"Tail4"],[33,"Tail5"],[34,"flapL_A"],[35,"flapL_B"],[36,"flapR_A"],[37,"flapR_B"],[38,"tongueMaster"],[39,"tongueBase"],[40,"tongueMidA"],[41,"tongueMidB"],[42,"tongueTip"],[43,"uvula"],[44,"goggles"],[45,"LmiddleA"],[46,"LmiddleB"],[47,"LmiddleC"],[48,"LindexA"],[49,"LindexB"],[50,"LindexC"],[51,"LthumbA"],[52,"LthumbB"],[53,"LthumbC"],[54,"LringA"],[55,"LringB"],[56,"LringC"],[57,"LpinkyA"],[58,"LpinkyB"],[59,"LpinkyC"],[60,"RmiddleA"],[61,"RmiddleB"],[62,"RmiddleC"],[63,"RindexA"],[64,"RindexB"],[65,"RindexC"],[66,"RthumbA"],[67,"RthumbB"],[68,"RthumbC"],[69,"RringA"],[70,"RringB"],[71,"RringC"],[72,"RpinkyA"],[73,"RpinkyB"],[74,"RpinkyC"],[75,"pantL_A"],[76,"pantR_A"],[77,"belt_A"]],"daxter-highres-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"upper_body"],[5,"upper_bodyB"],[6,"chest"],[7,"neckA"],[8,"neckB"],[9,"head"],[10,"earBaseL"],[11,"earMidL"],[12,"earBaseR"],[13,"earMidR"],[14,"Lshoulder"],[15,"Lelbow"],[16,"Lhand"],[17,"Rshoulder"],[18,"Relbow"],[19,"Rhand"],[20,"hips"],[21,"Lthigh"],[22,"Lknee"],[23,"Lankle"],[24,"Lball"],[25,"Rthigh"],[26,"Rknee"],[27,"Rankle"],[28,"Rball"],[29,"Tail1"],[30,"Tail2"],[31,"Tail3"],[32,"Tail4"],[33,"Tail5"],[34,"flapL_A"],[35,"flapL_B"],[36,"flapR_A"],[37,"flapR_B"],[38,"tongueMaster"],[39,"tongueBase"],[40,"tongueMidA"],[41,"tongueMidB"],[42,"tongueTip"],[43,"uvula"],[44,"goggles"],[45,"LmiddleA"],[46,"LmiddleB"],[47,"LmiddleC"],[48,"LindexA"],[49,"LindexB"],[50,"LindexC"],[51,"LthumbA"],[52,"LthumbB"],[53,"LthumbC"],[54,"LringA"],[55,"LringB"],[56,"LringC"],[57,"LpinkyA"],[58,"LpinkyB"],[59,"LpinkyC"],[60,"RmiddleA"],[61,"RmiddleB"],[62,"RmiddleC"],[63,"RindexA"],[64,"RindexB"],[65,"RindexC"],[66,"RthumbA"],[67,"RthumbB"],[68,"RthumbC"],[69,"RringA"],[70,"RringB"],[71,"RringC"],[72,"RpinkyA"],[73,"RpinkyB"],[74,"RpinkyC"],[75,"pantL_A"],[76,"pantR_A"],[77,"belt_A"]],"daxter-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"upper_body"],[5,"upper_bodyB"],[6,"chest"],[7,"neckA"],[8,"neckB"],[9,"head"],[10,"earBaseL"],[11,"earMidL"],[12,"flapBaseL"],[13,"flapMidL"],[14,"flapBaseR"],[15,"flapMidR"],[16,"earBaseR"],[17,"earMidR"],[18,"Lshoulder"],[19,"Lelbow"],[20,"Lhand"],[21,"LmiddleA"],[22,"LmiddleB"],[23,"LthumbA"],[24,"Rshoulder"],[25,"Relbow"],[26,"Rhand"],[27,"RmiddleA"],[28,"RmiddleB"],[29,"RthumbA"],[30,"hips"],[31,"Lthigh"],[32,"Lknee"],[33,"Lankle"],[34,"Lball"],[35,"Rthigh"],[36,"Rknee"],[37,"Rankle"],[38,"Rball"],[39,"tailBase"],[40,"Tail2"],[41,"tailMid"],[42,"Tail4"],[43,"tailEnd"]],"deathrace-drone-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"l_taillight"],[5,"r_taillight"],[6,"r_headlight"],[7,"l_headlight"],[8,"l_r_axle"],[9,"l_f_axle"],[10,"r_r_axle"],[11,"r_f_axle"]],"deathrace-drone-wheel-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"des-cactus-a-explode-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"cactus_1"],[5,"cactus_2"],[6,"cactus_3"],[7,"cactus_4"],[8,"cactus_5"],[9,"cactus_6"],[10,"cactus_7"],[11,"cactus_8"],[12,"cactus_9"],[13,"cactus_10"],[14,"cactus_11"],[15,"cactus_12"],[16,"cactus_13"],[17,"cactus_14"],[18,"cactus_15"],[19,"cactus_16"],[20,"cactus_17"],[21,"cactus_18"],[22,"cactus_19"],[23,"cactus_20"],[24,"cactus_21"],[25,"cactus_22"]],"des-cactus-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"cactus_a_"],[5,"cactus_b_"],[6,"cactus_e_"],[7,"cactus_d_"],[8,"cactus_c_"]],"des-cactus-b-explode-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"cactus_1"],[5,"cactus_2"],[6,"cactus_3"],[7,"cactus_4"],[8,"cactus_5"],[9,"cactus_6"],[10,"cactus_7"],[11,"cactus_8"],[12,"cactus_9"],[13,"cactus_10"],[14,"cactus_11"],[15,"cactus_12"],[16,"cactus_13"],[17,"cactus_14"],[18,"cactus_15"],[19,"cactus_16"],[20,"cactus_17"],[21,"cactus_18"],[22,"cactus_19"],[23,"cactus_20"],[24,"cactus_21"],[25,"cactus_22"],[26,"cactus_23"],[27,"cactus_24"],[28,"cactus_26"]],"des-cactus-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"cactus_a"],[5,"cactus_b"],[6,"cactus_c"],[7,"cactus_d"]],"drome-tunnel-drum-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"tunnel_effect_"]],"eco-blue-debris-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"eco-blue-debris-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"mainrot"],[5,"centerliquidrot"],[6,"center_part"]],"eco-blue-debris-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"eco-blue-debris-d-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"mainrot"],[5,"centerliquidrot"],[6,"center_part"]],"eco-blue-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"eco-dark-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"eco-green-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"eco-light-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"center_effect"],[5,"top_button_effect"],[6,"btm_button_effect"]],"eco-red-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"eco-yellow-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"finish-banner-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"fuel-cell-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"camera"],[5,"piece1"],[6,"piece2"],[7,"piece3"],[8,"piece4"],[9,"orbit"],[10,"orbitEND"]],"fuel-cell-shield-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"ball"],[5,"electrical_part"]],"full-screen-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"full_screen"],[6,"x2y0"],[7,"x1y0"],[8,"x0y0"],[9,"x2y1"],[10,"x1y1"],[11,"x0y1"],[12,"x2y2"],[13,"x1y2"],[14,"x0y2"]],"garage-car-arm-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"trackrot"],[5,"armtransupa"],[6,"armtransupb"],[7,"armtransupc"],[8,"armtransupd"],[9,"armrot"],[10,"Rcargrabtrans"],[11,"Rsubcargrabtrans"],[12,"Lcargrabtrans"],[13,"Lsubcargrabtrans"]],"garage-cinema-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"rot"]],"garage-door-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"garage-sliding-door-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"garage-tool-arm-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"trackrot"],[5,"tracktrans"],[6,"elbowa"],[7,"elbowb"],[8,"elbowc"],[9,"elbowd"]],"garage-turntable-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"grenade-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"gtb-hr-cred-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"stomach"],[5,"chest"],[6,"neck"],[7,"head"],[8,"Lear_A"],[9,"Rear_A"],[10,"Lshoulder"],[11,"Lelbow"],[12,"Lhand"],[13,"Rshoulder"],[14,"Relbow"],[15,"Rhand"],[16,"hips"],[17,"Lthigh"],[18,"Lknee"],[19,"Lankle"],[20,"Rthigh"],[21,"Rknee"],[22,"Rankle"],[23,"Lear_B"],[24,"Lear_C"],[25,"Rear_B"],[26,"Rear_C"],[27,"toupee"],[28,"toupee_rearA"],[29,"toupee_rearB"],[30,"toupee_frontA"],[31,"toupee_frontB"],[32,"toupee_bangA"],[33,"toupee_bangB"],[34,"sideburn_lt"],[35,"sideburn_rt"],[36,"LthumbA"],[37,"LthumbB"],[38,"LthumbC"],[39,"LindexA"],[40,"LindexB"],[41,"LindexC"],[42,"LmiddleA"],[43,"LmiddleB"],[44,"LmiddleC"],[45,"LringA"],[46,"LringB"],[47,"LringC"],[48,"LpinkyA"],[49,"LpinkyB"],[50,"LpinkyC"],[51,"Lcuff"],[52,"RthumbA"],[53,"RthumbB"],[54,"RthumbC"],[55,"RindexA"],[56,"RindexB"],[57,"RindexC"],[58,"RmiddleA"],[59,"RmiddleB"],[60,"RmiddleC"],[61,"RringA"],[62,"RringB"],[63,"RringC"],[64,"RpinkyA"],[65,"RpinkyB"],[66,"RpinkyC"],[67,"Rcuff"],[68,"lftcollar_A"],[69,"lftcollar_B"],[70,"lftcollar_C"],[71,"rgtcollar_A"],[72,"rgtcollar_B"],[73,"rgtcollar_C"],[74,"Lcollar"],[75,"LsHELP"],[76,"RsHELP"],[77,"Lball"],[78,"Rball"]],"gun-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"yellow_gun"],[4,"yellow_muzzle"],[5,"missile_body"],[6,"missile_muzzle"],[7,"grenade_body"],[8,"grenade"]],"haven-gen-light-debris-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"haven-gen-light-debris-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"haven-gen-light-debris-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"haven-gen-light-debris-d-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"haven-gen-light-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"haven-trashcan-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"helmet-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"helmet-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"helmet-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"helmet-d-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"helmet-e-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"helmet-f-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"ice-debris-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"ice-debris-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"ice-debris-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"ice-debris-d-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"ice-debris-e-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"ice-flag-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"flag_a"],[5,"flag_b"],[6,"flag_c"],[7,"flag_d"],[8,"flag_e"]],"interface-cam-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"4x3"],[5,"16x9"],[6,"scenecamera"],[7,"camera"]],"jakd-hr-cred-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"stomach"],[5,"chest"],[6,"neck"],[7,"head"],[8,"Lear_A"],[9,"Rear_A"],[10,"Lshoulder"],[11,"Lelbow"],[12,"Lhand"],[13,"Rshoulder"],[14,"Relbow"],[15,"Rhand"],[16,"hips"],[17,"Lthigh"],[18,"Lknee"],[19,"Lankle"],[20,"Rthigh"],[21,"Rknee"],[22,"Rankle"],[23,"Lear_B"],[24,"Lear_C"],[25,"Rear_B"],[26,"Rear_C"],[27,"LthumbA"],[28,"LthumbB"],[29,"LthumbC"],[30,"LindexA"],[31,"LindexB"],[32,"LindexC"],[33,"LmiddleA"],[34,"LmiddleB"],[35,"LmiddleC"],[36,"LringA"],[37,"LringB"],[38,"LringC"],[39,"LpinkyA"],[40,"LpinkyB"],[41,"LpinkyC"],[42,"LelbowHELP"],[43,"RthumbA"],[44,"RthumbB"],[45,"RthumbC"],[46,"RindexA"],[47,"RindexB"],[48,"RindexC"],[49,"RmiddleA"],[50,"RmiddleB"],[51,"RmiddleC"],[52,"RringA"],[53,"RringB"],[54,"RringC"],[55,"RpinkyA"],[56,"RpinkyB"],[57,"RpinkyC"],[58,"RelbowHELP"],[59,"lcollar_A"],[60,"lcollar_B"],[61,"lcollar_C"],[62,"rcollar_A"],[63,"rcollar_B"],[64,"rcollar_C"],[65,"Lshoulderplate"],[66,"ljacket_A"],[67,"ljacket_B"],[68,"ljacket_C"],[69,"rjacket_A"],[70,"rjacket_B"],[71,"rjacket_C"],[72,"Lball"],[73,"LlegDangle3_A"],[74,"LlegDangle4_A"],[75,"LlegDangle1_A"],[76,"LlegDangle2_A"],[77,"Rball"],[78,"RlegDangle3_A"],[79,"RlegDangle4_A"],[80,"RlegDangle1_A"],[81,"RlegDangle2_A"]],"jakxlogo-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"jak"],[6,"x"],[7,"tr"],[8,"tl"],[9,"bl"],[10,"br"],[11,"x1"],[12,"x2"],[13,"x3"],[14,"x4"]],"jungle-branch-collision-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"jungle-clay-jar-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"jungle-clay-jar-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"jungle-debris-jar-a-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"jungle-debris-jar-a-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"jungle-debris-jar-a-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"jungle-debris-jar-a-d-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"jungle-debris-jar-b-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"jungle-debris-jar-b-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"jungle-debris-jar-b-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"jungle-debris-jar-b-d-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"jungle-debris-wooda-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"jungle-debris-woodb-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"jungle-debris-woodc-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"jungle-debris-woodd-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"jungle-flaming-arrow-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"flaming_arrow_part"]],"jungle-statue-small-debris-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"jungle-statue-small-debris-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"jungle-statue-small-debris-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"jungle-statue-small-debris-d-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"jungle-statue-small-outdoors-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"jungle-stone-snake-head-explode-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"b"],[4,"c"],[5,"d"],[6,"e"],[7,"f"],[8,"g"],[9,"h"],[10,"i"],[11,"j"],[12,"k"],[13,"l"],[14,"m"],[15,"spout_base"],[16,"spout_mouth"]],"jungle-stone-snake-head-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"a"],[4,"spout_base"],[5,"spout_mouth"]],"jungle-tree-root-large-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"jungle-tree-root-large-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"kcro-bouncy-tire-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"kcro-fence-debris-post-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"kcro-fence-debris-raila-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"kcro-fence-debris-railb-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"kcro-fence-debris-railc-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"kcro-fence-piece-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"kcro-fence-piece-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"kcro-flag-down-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"flaga"],[5,"flagb"],[6,"flagc"],[7,"flagd"],[8,"flage"],[9,"flagf"],[10,"flagg"],[11,"flagh"]],"kcro-oil-barrel-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"kcro-staff-flag-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"flag_a"],[5,"flag_b"],[6,"flag_c"],[7,"flag_d"],[8,"flag_e"],[9,"flag_f"],[10,"flag_g"],[11,"flag_h"],[12,"flag_i"]],"kei-hr-cred-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"stomach"],[5,"chest"],[6,"neck"],[7,"head"],[8,"backHair1"],[9,"backHair2"],[10,"rEara"],[11,"rEarb"],[12,"lEara"],[13,"lEarb"],[14,"Lshoulder"],[15,"Lelbow"],[16,"Lhand"],[17,"LthumbA"],[18,"LindexA"],[19,"LindexB"],[20,"LindexC"],[21,"LpinkyA"],[22,"LpinkyB"],[23,"LpinkyC"],[24,"lTopStrap"],[25,"Rshoulder"],[26,"Relbow"],[27,"Rhand"],[28,"RthumbA"],[29,"RindexA"],[30,"RindexB"],[31,"RindexC"],[32,"RpinkyA"],[33,"RpinkyB"],[34,"RpinkyC"],[35,"rTopStrap"],[36,"rBoob"],[37,"lBoob"],[38,"hips"],[39,"Lthigh"],[40,"Lknee"],[41,"Lankle"],[42,"Lball"],[43,"lKneeFlap"],[44,"Lanklestrap"],[45,"Rthigh"],[46,"Rknee"],[47,"Rankle"],[48,"Rball"],[49,"rKneeFlap"],[50,"Ranklestrap"],[51,"lBotStrap"],[52,"lBotStrap2"],[53,"rBotStrap"],[54,"rBotStrap2"],[55,"Rmidhaira"],[56,"Rmidhairb"],[57,"Rbanga"],[58,"Rbangb"],[59,"Rbangc"],[60,"Lbanga"],[61,"Lbangb"],[62,"Lbangc"],[63,"Lmidhaira"],[64,"Lmidhairb"],[65,"LthumbB"],[66,"LthumbC"],[67,"LmiddleA"],[68,"LmiddleB"],[69,"LmiddleC"],[70,"LringA"],[71,"LringB"],[72,"LringC"],[73,"lGlove"],[74,"lTopStrap2"],[75,"RthumbB"],[76,"RthumbC"],[77,"RmiddleA"],[78,"RmiddleB"],[79,"RmiddleC"],[80,"RringA"],[81,"RringB"],[82,"RringC"],[83,"rGlove"],[84,"rTopStrap2"],[85,"gogglesBase"],[86,"gogglesMid"],[87,"gogglesRight"],[88,"gogglesLeft"],[89,"LtoeStrap"],[90,"LpantFlap"],[91,"RtoeStrap"],[92,"RpantFlap"],[93,"maskstrap"],[94,"mask"],[95,"torch"]],"keira-highres-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"stomach"],[5,"chest"],[6,"neck"],[7,"head"],[8,"backHair1"],[9,"backHair2"],[10,"rEara"],[11,"rEarb"],[12,"lEara"],[13,"lEarb"],[14,"Lshoulder"],[15,"Lelbow"],[16,"Lhand"],[17,"LthumbA"],[18,"LindexA"],[19,"LindexB"],[20,"LindexC"],[21,"LpinkyA"],[22,"LpinkyB"],[23,"LpinkyC"],[24,"lTopStrap"],[25,"Rshoulder"],[26,"Relbow"],[27,"Rhand"],[28,"RthumbA"],[29,"RindexA"],[30,"RindexB"],[31,"RindexC"],[32,"RpinkyA"],[33,"RpinkyB"],[34,"RpinkyC"],[35,"rTopStrap"],[36,"rBoob"],[37,"lBoob"],[38,"hips"],[39,"Lthigh"],[40,"Lknee"],[41,"Lankle"],[42,"Lball"],[43,"lKneeFlap"],[44,"Lanklestrap"],[45,"Rthigh"],[46,"Rknee"],[47,"Rankle"],[48,"Rball"],[49,"rKneeFlap"],[50,"Ranklestrap"],[51,"lBotStrap"],[52,"lBotStrap2"],[53,"rBotStrap"],[54,"rBotStrap2"],[55,"Rmidhaira"],[56,"Rmidhairb"],[57,"Rbanga"],[58,"Rbangb"],[59,"Rbangc"],[60,"Lbanga"],[61,"Lbangb"],[62,"Lbangc"],[63,"Lmidhaira"],[64,"Lmidhairb"],[65,"LthumbB"],[66,"LthumbC"],[67,"LmiddleA"],[68,"LmiddleB"],[69,"LmiddleC"],[70,"LringA"],[71,"LringB"],[72,"LringC"],[73,"lGlove"],[74,"lTopStrap2"],[75,"RthumbB"],[76,"RthumbC"],[77,"RmiddleA"],[78,"RmiddleB"],[79,"RmiddleC"],[80,"RringA"],[81,"RringB"],[82,"RringC"],[83,"rGlove"],[84,"rTopStrap2"],[85,"gogglesBase"],[86,"gogglesMid"],[87,"gogglesRight"],[88,"gogglesLeft"],[89,"LtoeStrap"],[90,"LpantFlap"],[91,"RtoeStrap"],[92,"RpantFlap"],[93,"maskstrap"],[94,"mask"],[95,"torch"]],"keyboard-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"popup"],[6,"topleft"],[7,"bottomright"],[8,"screen_type_large"],[9,"topleft_type"],[10,"bottomright_type"],[11,"screen_type2"]],"kle-hr-cred-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"chest"],[5,"neck"],[6,"head"],[7,"earBaseL"],[8,"earMidL"],[9,"earBaseR"],[10,"earMidR"],[11,"Lshoulder"],[12,"Lelbow"],[13,"Lhand"],[14,"Rshoulder"],[15,"Relbow"],[16,"Rhand"],[17,"SDK_RArmor"],[18,"RArmor"],[19,"SDK_LArmor"],[20,"LArmor"],[21,"hips"],[22,"Lthigh"],[23,"Lknee"],[24,"Lankle"],[25,"Lball"],[26,"SDK_LKneePad"],[27,"LKneePad"],[28,"Rthigh"],[29,"Rknee"],[30,"Rankle"],[31,"Rball"],[32,"SDK_RKneePad"],[33,"RKneePad"],[34,"SDK_stomach"],[35,"stomach"],[36,"gun"],[37,"hairA"],[38,"hairB"],[39,"LmoustA"],[40,"LmoustB"],[41,"RmoustA"],[42,"RmoustB"],[43,"browR"],[44,"browL"],[45,"jawSDK"],[46,"hairL"],[47,"hairR"],[48,"LthumbA"],[49,"LthumbB"],[50,"LthumbC"],[51,"LindexA"],[52,"LindexB"],[53,"LindexC"],[54,"LmiddleA"],[55,"LmiddleB"],[56,"LmiddleC"],[57,"LringA"],[58,"LringB"],[59,"LringC"],[60,"LpinkyA"],[61,"LpinkyB"],[62,"LpinkyC"],[63,"RthumbA"],[64,"RthumbB"],[65,"RthumbC"],[66,"RindexA"],[67,"RindexB"],[68,"RindexC"],[69,"RmiddleA"],[70,"RmiddleB"],[71,"RmiddleC"],[72,"RringA"],[73,"RringB"],[74,"RringC"],[75,"RpinkyA"],[76,"RpinkyB"],[77,"RpinkyC"],[78,"LArmorB"],[79,"SDK_pouch"],[80,"pouch"]],"kras-fireworks-ship-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"kras-fishtank-lo-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"kras-flag-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"flag_a"],[5,"flag_b"],[6,"flag_c"],[7,"flag_d"],[8,"flag_e"],[9,"flag_f"],[10,"flag_g"],[11,"flag_h"],[12,"flag_i"]],"kras-pump-break-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"kras-pump-debris-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"kras-pump-debris-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"kras-pump-debris-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"kras-rusty-sign-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"chaina"]],"kras-tower-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"kras-windsock-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"socka"],[5,"sockb"],[6,"sockc"],[7,"sockd"],[8,"socke"]],"krasfemale-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"chest"],[5,"neck"],[6,"hairA"],[7,"hairB"],[8,"Lshoulder"],[9,"Lelbow"],[10,"Lhand"],[11,"Lfinger1"],[12,"Lfinger2"],[13,"Rshoulder"],[14,"Relbow"],[15,"Rhand"],[16,"Rfinger1"],[17,"Rfinger2"],[18,"hips"],[19,"Lthigh"],[20,"Lknee"],[21,"Lankle"],[22,"Lball"],[23,"Rthigh"],[24,"Rknee"],[25,"Rankle"],[26,"Rball"],[27,"gun"],[28,"gunblast"]],"krasmale-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"chest"],[5,"neck"],[6,"head"],[7,"Lshoulder"],[8,"Lelbow"],[9,"Lhand"],[10,"Rshoulder"],[11,"Relbow"],[12,"Rhand"],[13,"RmiddleA"],[14,"hips"],[15,"Lthigh"],[16,"Lknee"],[17,"Lankle"],[18,"Lball"],[19,"Rthigh"],[20,"Rknee"],[21,"Rankle"],[22,"Rball"],[23,"gun"],[24,"gunblast"]],"large-type-bar-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"sml_bar"],[6,"smlbaratype"],[7,"smlbaratypeb"],[8,"topleft"],[9,"bottomright"],[10,"topleft2"],[11,"bottomright2"]],"lg-player-screen-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"popup"],[6,"x3y0"],[7,"x2y0"],[8,"x1y0"],[9,"x0y0"],[10,"x3y1"],[11,"x2y1"],[12,"x1y1"],[13,"x0y1"],[14,"x3y2"],[15,"x2y2"],[16,"x1y2"],[17,"x0y2"],[18,"x3y3"],[19,"x2y3"],[20,"x1y3"],[21,"x0y3"],[22,"lgplayscreentype"]],"lobby-screen-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"a"],[6,"x0y0"],[7,"x1y0"],[8,"x2y0"],[9,"x3y0"],[10,"x0y1"],[11,"x1y1"],[12,"x2y1"],[13,"x3y1"],[14,"x0y2"],[15,"x1y2"],[16,"x2y2"],[17,"x3y2"],[18,"x0y3"],[19,"x1y3"],[20,"x2y3"],[21,"x3y3"],[22,"screen_type"]],"lobby-screen-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"a"],[6,"x0y0"],[7,"x1y0"],[8,"x2y0"],[9,"x3y0"],[10,"x0y1"],[11,"x1y1"],[12,"x2y1"],[13,"x3y1"],[14,"x0y2"],[15,"x1y2"],[16,"x2y2"],[17,"x3y2"],[18,"screen_type"]],"lobby-screen-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"a"],[6,"x0y0"],[7,"x1y0"],[8,"x2y0"],[9,"x3y0"],[10,"x0y1"],[11,"x1y1"],[12,"x2y1"],[13,"x3y1"],[14,"x0y2"],[15,"x1y2"],[16,"x2y2"],[17,"x3y2"],[18,"screen_type"]],"lobby-screen-d-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"a"],[6,"x0y0"],[7,"x1y0"],[8,"x2y0"],[9,"x3y0"],[10,"x0y1"],[11,"x1y1"],[12,"x2y1"],[13,"x3y1"],[14,"x0y2"],[15,"x1y2"],[16,"x2y2"],[17,"x3y2"],[18,"screen_type"]],"lobby-tab-large-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"arm"],[6,"lobby_tab"],[7,"mapscreentype"],[8,"topleft"],[9,"bottomright"]],"lobby-tab-small-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"arm"],[6,"lobby_tab"],[7,"mapscreentype"],[8,"topleft"],[9,"bottomright"]],"lobby-tab-small-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"arm"],[6,"lobby_tab"],[7,"mapscreentype"],[8,"topleft"],[9,"bottomright"]],"map-screen-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"map_screen"],[6,"mapscreentype"],[7,"topleft"],[8,"bottomright"]],"mem-card-screen-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"popup"],[6,"x3y0"],[7,"x2y0"],[8,"x1y0"],[9,"x0y0"],[10,"x3y1"],[11,"x2y1"],[12,"x1y1"],[13,"x0y1"],[14,"x3y2"],[15,"x2y2"],[16,"x1y2"],[17,"x0y2"],[18,"x3y3"],[19,"x2y3"],[20,"x1y3"],[21,"x0y3"],[22,"lgplayscreentype"]],"menu-haven-trophy-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"menu-kras-trophy-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"menu-marauder-trophy-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"menu-spargus-trophy-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"metal-raptor-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"hips"],[4,"main"],[5,"chest"],[6,"neck_a"],[7,"neck_b"],[8,"head"],[9,"jaw"],[10,"L_shoulder"],[11,"L_elbow"],[12,"L_wrist"],[13,"L_fingers"],[14,"R_shoulder"],[15,"R_elbow"],[16,"R_wrist"],[17,"R_fingers"],[18,"L_thigh"],[19,"L_knee"],[20,"L_ankle"],[21,"L_ball"],[22,"tail_a"],[23,"tail_b"],[24,"c"],[25,"R_thigh"],[26,"R_knee"],[27,"R_ankle"],[28,"R_ball"]],"mine-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"blinking_light"]],"mine-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"blinking_light"],[5,"blinking_light1"]],"mine-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"a_a"],[5,"a_b"],[6,"a_c"],[7,"b_a"],[8,"b_b"],[9,"b_c"],[10,"c_a"],[11,"c_b"],[12,"c_c"],[13,"d_a"],[14,"d_b"],[15,"d_c"],[16,"scale"]],"missile-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"muzzle-flash-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"oil-slick-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"rot_up_down"],[5,"scale_length_width"]],"palm-tree-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"a"],[5,"b"],[6,"c"],[7,"d"]],"palm-tree-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"a"],[5,"b"],[6,"c"],[7,"d"]],"palm-tree-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"a"],[5,"b"],[6,"c"],[7,"d"]],"palm-tree-debris-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"palm-tree-debris-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"peak-double-flag-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"polebend1"],[5,"polebend2"],[6,"polebend3"],[7,"bflag1"],[8,"bflag2"],[9,"bflag3"],[10,"bflag4"],[11,"bflag5"],[12,"sflag1"],[13,"sflag2"],[14,"sflag3"],[15,"sflag4"],[16,"sflag5"]],"peak-snowball-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"pec-hr-cred-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"chest"],[5,"neck"],[6,"head"],[7,"snoutA"],[8,"snoutB"],[9,"feather3A"],[10,"feather3B"],[11,"Lshoulder"],[12,"Lelbow"],[13,"Lhand"],[14,"LthumbA"],[15,"LthumbB"],[16,"LthumbC"],[17,"LindexA"],[18,"LindexB"],[19,"LindexC"],[20,"LringA"],[21,"LringB"],[22,"LringC"],[23,"LpinkyA"],[24,"LpinkyB"],[25,"LpinkyC"],[26,"Rshoulder"],[27,"Relbow"],[28,"Rhand"],[29,"RthumbA"],[30,"RthumbB"],[31,"RthumbC"],[32,"RindexA"],[33,"RindexB"],[34,"RindexC"],[35,"RringA"],[36,"RringB"],[37,"RringC"],[38,"RpinkyA"],[39,"RpinkyB"],[40,"hips"],[41,"Lthigh"],[42,"Lknee"],[43,"Lankle"],[44,"Lball"],[45,"Rthigh"],[46,"Rknee"],[47,"Rankle"],[48,"Rball"],[49,"tailA"],[50,"tailB"],[51,"tailC"],[52,"tailD"],[53,"tailE"],[54,"tailF"],[55,"tailG"],[56,"tailH"],[57,"tailI"],[58,"tailJ"],[59,"tailK"],[60,"tailL"],[61,"tailM"],[62,"tailN"],[63,"snoutC"],[64,"feather1A"],[65,"feather1B"],[66,"feather2A"],[67,"feather2B"],[68,"LmiddleA"],[69,"LmiddleB"],[70,"LmiddleC"],[71,"RmiddleA"],[72,"RmiddleB"],[73,"RmiddleC"],[74,"RpinkyC"]],"plane-screen-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"planescreen"],[6,"x3y0"],[7,"x2y0"],[8,"x1y0"],[9,"x0y0"],[10,"x3y1"],[11,"x2y1"],[12,"x1y1"],[13,"x0y1"],[14,"x3y2"],[15,"x2y2"],[16,"x1y2"],[17,"x0y2"],[18,"x3y3"],[19,"x2y3"],[20,"x1y3"],[21,"x0y3"],[22,"screen"]],"play-screen-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"play_screenb"],[6,"playscreentype"],[7,"topleft"],[8,"bottomright"]],"play-screen-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"play_screen"],[6,"x0y0"],[7,"x1y0"],[8,"x2y0"],[9,"x3y0"],[10,"x0y1"],[11,"x1y1"],[12,"x2y1"],[13,"x3y1"],[14,"x0y2"],[15,"x1y2"],[16,"x2y2"],[17,"x3y2"],[18,"playscreentype"],[19,"upper_L_type"],[20,"lower_R_type"]],"plow-debris-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"plow-debris-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"plow-debris-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"plow-debris-d-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"plow-debris-e-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"plow-debris-f-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"plow-debris-g-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"plow-debris-h-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"plow-debris-i-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"plow-debris-j-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"plow-debris-k-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"plow-debris-l-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"plow-debris-m-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"plow-debris-n-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"plow-debris-o-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"plow-debris-p-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"plow-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"exhaust_l"],[5,"exhaust_r"],[6,"main_thruster"],[7,"l_small_thruster"],[8,"r_small_thruster"],[9,"l_eye_big"],[10,"l_eye_small"],[11,"r_eye_small"],[12,"r_eye_big"],[13,"plow"]],"points-counter-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"split_screen"],[6,"splitscreentype"],[7,"topleft"],[8,"bottomright"],[9,"topleft1"],[10,"bottomright1"]],"pop-up-screen-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"popup"],[6,"x0y0"],[7,"x1y0"],[8,"x2y0"],[9,"x3y0"],[10,"x0y1"],[11,"x1y1"],[12,"x2y1"],[13,"x3y1"],[14,"x0y2"],[15,"x1y2"],[16,"x2y2"],[17,"x3y2"],[18,"x0y3"],[19,"x1y3"],[20,"x2y3"],[21,"x3y3"],[22,"screen_type"],[23,"screenA_topleft"],[24,"screenA_bottomright"],[25,"screenB_bottomright"],[26,"screenB_topleft"],[27,"type_topleft"],[28,"type_bottomright"]],"pop-up-screen-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"popup"],[6,"x0y0"],[7,"x1y0"],[8,"x2y0"],[9,"x3y0"],[10,"x0y1"],[11,"x1y1"],[12,"x2y1"],[13,"x3y1"],[14,"x0y2"],[15,"x1y2"],[16,"x2y2"],[17,"x3y2"],[18,"x0y3"],[19,"x1y3"],[20,"x2y3"],[21,"x3y3"],[22,"screen_type"],[23,"topleft"],[24,"bottomright"],[25,"topleft1"],[26,"bottomright1"],[27,"bottomright2"],[28,"topleft2"],[29,"bottomright3"],[30,"topleft3"],[31,"topcenter"],[32,"bottomcenter"]],"pop-up-screen-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"popup"],[6,"x0y0"],[7,"x1y0"],[8,"x2y0"],[9,"x3y0"],[10,"x0y1"],[11,"x1y1"],[12,"x2y1"],[13,"x3y1"],[14,"x0y2"],[15,"x1y2"],[16,"x2y2"],[17,"x3y2"],[18,"x0y3"],[19,"x1y3"],[20,"x2y3"],[21,"x3y3"],[22,"screen_type"]],"pre-artifact-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"pre-artifact-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"pre-artifact-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"pre-artifact-d-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"prize-crate-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"ray-hr-cred-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"hips"],[5,"Lthigh"],[6,"Lknee"],[7,"Rthigh"],[8,"Rknee"],[9,"stomach"],[10,"chest"],[11,"neck"],[12,"head"],[13,"Lshoulder"],[14,"Lelbow"],[15,"Lhand"],[16,"Rshoulder"],[17,"Relbow"],[18,"Rhand"],[19,"Lankle"],[20,"Lball"],[21,"Lbellbot_A"],[22,"Rankle"],[23,"Rball"],[24,"Rbellbot_A"],[25,"LFskirt"],[26,"LMskirt"],[27,"LBskirt"],[28,"RBskirt"],[29,"RMskirt"],[30,"RFskirt"],[31,"Lburn_A"],[32,"Lburntip_B"],[33,"Lear_A"],[34,"Lear_B"],[35,"Lear_C"],[36,"Learing_A"],[37,"Rear_A"],[38,"Rear_B"],[39,"Rear_C"],[40,"Rearing_A"],[41,"Rburn_A"],[42,"Rburntip_B"],[43,"LthumbA"],[44,"LthumbB"],[45,"LthumbC"],[46,"LindexA"],[47,"LindexB"],[48,"LindexC"],[49,"LmiddleA"],[50,"LmiddleB"],[51,"LmiddleC"],[52,"LringA"],[53,"LringB"],[54,"LringC"],[55,"LpinkyA"],[56,"LpinkyB"],[57,"LpinkyC"],[58,"LshHELP_SDK"],[59,"RthumbA"],[60,"RthumbB"],[61,"RthumbC"],[62,"RindexA"],[63,"RindexB"],[64,"RindexC"],[65,"RmiddleA"],[66,"RmiddleB"],[67,"RmiddleC"],[68,"RringA"],[69,"RringB"],[70,"RringC"],[71,"RpinkyA"],[72,"RpinkyB"],[73,"RpinkyC"],[74,"RshHELP_SDK"],[75,"Lboob_A"],[76,"Rboob_A"]],"raz-hr-cred-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"stomach"],[5,"chest"],[6,"neck"],[7,"head"],[8,"Lear_A"],[9,"Rear_A"],[10,"Lshoulder"],[11,"Lelbow"],[12,"Lhand"],[13,"Rshoulder"],[14,"Relbow"],[15,"Rhand"],[16,"hips"],[17,"Lthigh"],[18,"Lknee"],[19,"Lankle"],[20,"Rthigh"],[21,"Rknee"],[22,"Rankle"],[23,"Lear_B"],[24,"Lear_C"],[25,"Rear_B"],[26,"Rear_C"],[27,"LthumbA"],[28,"LthumbB"],[29,"LthumbC"],[30,"LindexA"],[31,"LindexB"],[32,"LindexC"],[33,"LmiddleA"],[34,"LmiddleB"],[35,"LmiddleC"],[36,"LringA"],[37,"LringB"],[38,"LringC"],[39,"LpinkyA"],[40,"LpinkyB"],[41,"LpinkyC"],[42,"RthumbA"],[43,"RthumbB"],[44,"RthumbC"],[45,"RindexA"],[46,"RindexB"],[47,"RindexC"],[48,"RmiddleA"],[49,"RmiddleB"],[50,"RmiddleC"],[51,"RringA"],[52,"RringB"],[53,"RringC"],[54,"RpinkyA"],[55,"RpinkyB"],[56,"RpinkyC"],[57,"lcollar_A"],[58,"lcollar_B"],[59,"lcollar_C"],[60,"rcollar_A"],[61,"rcollar_B"],[62,"rcollar_C"],[63,"Lball"],[64,"LFskirt_A"],[65,"LFskirt_B"],[66,"Lskirt_A"],[67,"Lskirt_B"],[68,"LBskirt_A"],[69,"LBskirt_B"],[70,"Rball"],[71,"RFskirt_A"],[72,"RFskirt_B"],[73,"Rskirt_A"],[74,"Rskirt_B"],[75,"RBskirt_A"],[76,"RBskirt_B"],[77,"belt"],[78,"Cigarette"]],"rustyh-bar-stool-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"rustyh-blue-fish-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"midsection"],[5,"tail"],[6,"jaw"],[7,"leftfin"],[8,"rightfin"],[9,"feeler"]],"rustyh-bottle-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"rustyh-bottle-d-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"rustyh-fishtank-broken-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"leaky_part_a"],[5,"leaky_part_c"],[6,"leaky_part_b"]],"rustyh-fishtank-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"rustyh-mug-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"rustyh-mug-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"rustyh-pink-fish-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"jaw"],[5,"right"],[6,"left"],[7,"midsection"],[8,"tail"]],"rustyh-seaweed-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"seca"],[5,"secb"],[6,"secc"],[7,"secd"]],"rustyh-seaweed-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"Lsidea"],[5,"Lsideb"],[6,"Lsidec"],[7,"Lsided"],[8,"Rsidea"],[9,"Rsideb"],[10,"Rsidec"],[11,"Rsided"],[12,"Rsidee"]],"rustyh-seaweed-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"seca"],[5,"secb"],[6,"sech"],[7,"seci"],[8,"secj"],[9,"secc"],[10,"secd"],[11,"sece"],[12,"secf"],[13,"secg"]],"rustyh-seaweed-d-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"seca"],[5,"secb"],[6,"secc"],[7,"secd"],[8,"sece"],[9,"secf"]],"rustyh-small-fish-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"midsection"],[5,"leftfin"],[6,"rightfin"],[7,"tail"]],"rustyh-tank-stuff-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"rustyh-treasure-chest-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"chestlid"],[5,"tankbubbles_"]],"saucer-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"guns"],[5,"center"]],"scenecamera-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"scenecamera"],[4,"camera"]],"select-mode-chooser-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"arm"],[6,"popup"],[7,"topleft1"],[8,"bottomright1"],[9,"topleft2"],[10,"bottomright2"],[11,"topleft3"],[12,"bottomright3"],[13,"topleft_type"],[14,"bottomright_type"],[15,"topleft4"],[16,"bottomright4"]],"select-screen-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"select_screen"],[6,"selectscreentype"],[7,"topleft"],[8,"bottomright"]],"select-screen-sml-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"select_screen"],[6,"selectscreentype"],[7,"topleft"],[8,"bottomright"]],"sentry-bot-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"gun_y_rotate"],[5,"gun_x_rotate"],[6,"gun"],[7,"bottom_gun"],[8,"top_gun"],[9,"base"],[10,"leg_a_a"],[11,"leg_a_b"],[12,"leg_c_a"],[13,"leg_c_b"],[14,"leg_b_a"],[15,"leg_b_b"],[16,"leg_d_a"],[17,"leg_d_b"]],"shield-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"side-bar-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"side_bar"],[6,"sidebartype"],[7,"topleft"],[8,"bottomright"]],"side-bar-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"side_bar"],[6,"sidebartype"],[7,"topleft"],[8,"bottomright"]],"side-bar-d-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"side_bar"],[6,"sidebartype"],[7,"topleft"],[8,"bottomright"]],"side-bar-e-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"sidebar_e"],[6,"topleft"],[7,"bottomright"],[8,"topleft1"],[9,"bottomright1"],[10,"sidebar_ext"]],"side-bar-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"side_bar"],[6,"sidebartype"],[7,"topleft"],[8,"bottomright"]],"side-bar-title-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"side_bar_title"],[6,"topleft"],[7,"bottomright"],[8,"topleft1"],[9,"bottomright1"]],"side-walls-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"R_side"],[6,"L_side"]],"sig-hr-cred-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"stomach"],[5,"chest"],[6,"neck"],[7,"head"],[8,"Lear_A"],[9,"Rear_A"],[10,"Lshoulder"],[11,"Lelbow"],[12,"Lhand"],[13,"Rshoulder"],[14,"Relbow"],[15,"Rhand"],[16,"hips"],[17,"Lthigh"],[18,"Lknee"],[19,"Lankle"],[20,"Rthigh"],[21,"Rknee"],[22,"Rankle"],[23,"Lear_B"],[24,"Lear_C"],[25,"Rear_B"],[26,"Rear_C"],[27,"LthumbA"],[28,"LthumbB"],[29,"LthumbC"],[30,"LindexA"],[31,"LindexB"],[32,"LindexC"],[33,"LmiddleA"],[34,"LmiddleB"],[35,"LmiddleC"],[36,"LringA"],[37,"LringB"],[38,"LringC"],[39,"LpinkyA"],[40,"LpinkyB"],[41,"LpinkyC"],[42,"RthumbA"],[43,"RthumbB"],[44,"RthumbC"],[45,"RindexA"],[46,"RindexB"],[47,"RindexC"],[48,"RmiddleA"],[49,"RmiddleB"],[50,"RmiddleC"],[51,"RringA"],[52,"RringB"],[53,"RringC"],[54,"RpinkyA"],[55,"RpinkyB"],[56,"RpinkyC"],[57,"LsHELP"],[58,"RsHELP"],[59,"LshPlate_A"],[60,"RshPlate_A"],[61,"Rcollar"],[62,"Lcollar"],[63,"Lball"],[64,"Rball"]],"sml-type-bar-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"sml_bar"],[6,"smlbaratype"],[7,"smlbaratypeb"],[8,"topleft"],[9,"bottomright"],[10,"topleft2"],[11,"bottomright2"]],"snow-dinobreak-explode-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"bonea"],[5,"boneb"],[6,"bonec"],[7,"boned"],[8,"bonee"],[9,"bonef"],[10,"boneg"],[11,"boneh"],[12,"bonei"],[13,"bonej"],[14,"bonek"],[15,"bonel"],[16,"bonem"],[17,"bonen"],[18,"boneo"]],"snow-dinobreak-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"snow-icebreak-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"snow-icebreak-b-explode-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"icebreaka"],[5,"icebreakb"],[6,"icebreakc"],[7,"icebreakd"],[8,"icebreake"],[9,"icebreakf"],[10,"icebreakg"],[11,"icebreakh"],[12,"icebreaki"],[13,"icebreakj"],[14,"icebreakk"],[15,"icebreakl"],[16,"icebreakm"]],"snow-icebreak-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"snow-icebreak-c-explode-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"icebreaka"],[5,"icebreakb"],[6,"icebreakc"],[7,"icebreakd"],[8,"icebreake"],[9,"icebreakf"],[10,"icebreakg"],[11,"icebreakh"],[12,"icebreaki"]],"snow-icebreak-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"spar-lighthouse-light-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"lightglow"]],"split-screen-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"split_screen"],[6,"splitscreentype"],[7,"topleft"],[8,"bottomright"]],"start-banner-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"start-light-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"starting-linebot-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"projector"]],"tha-hr-cred-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"stomach"],[5,"chest"],[6,"neck"],[7,"head"],[8,"Lshoulder"],[9,"Lelbow"],[10,"Lhand"],[11,"Rshoulder"],[12,"Relbow"],[13,"Rhand"],[14,"hips"],[15,"Lthigh"],[16,"Lknee"],[17,"Lankle"],[18,"Rthigh"],[19,"Rknee"],[20,"Rankle"],[21,"maskaa"],[22,"maskab"],[23,"LthumbA"],[24,"LthumbB"],[25,"LthumbC"],[26,"LindexA"],[27,"LindexB"],[28,"LindexC"],[29,"LmiddleA"],[30,"LmiddleB"],[31,"LmiddleC"],[32,"LringA"],[33,"LringB"],[34,"LringC"],[35,"LpinkyA"],[36,"LpinkyB"],[37,"LpinkyC"],[38,"RthumbA"],[39,"RthumbB"],[40,"RthumbC"],[41,"RindexA"],[42,"RindexB"],[43,"RindexC"],[44,"RmiddleA"],[45,"RmiddleB"],[46,"RmiddleC"],[47,"RringA"],[48,"RringB"],[49,"RringC"],[50,"RpinkyA"],[51,"RpinkyB"],[52,"RpinkyC"],[53,"Lball"],[54,"Rball"]],"thb-hr-cred-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"stomach"],[5,"chest"],[6,"neck"],[7,"head"],[8,"Lshoulder"],[9,"Lelbow"],[10,"Lhand"],[11,"Rshoulder"],[12,"Relbow"],[13,"Rhand"],[14,"hips"],[15,"Lthigh"],[16,"Lknee"],[17,"Lankle"],[18,"Rthigh"],[19,"Rknee"],[20,"Rankle"],[21,"maskaa"],[22,"maskab"],[23,"LthumbA"],[24,"LthumbB"],[25,"LthumbC"],[26,"LindexA"],[27,"LindexB"],[28,"LindexC"],[29,"LmiddleA"],[30,"LmiddleB"],[31,"LmiddleC"],[32,"LringA"],[33,"LringB"],[34,"LringC"],[35,"LpinkyA"],[36,"LpinkyB"],[37,"LpinkyC"],[38,"RthumbA"],[39,"RthumbB"],[40,"RthumbC"],[41,"RindexA"],[42,"RindexB"],[43,"RindexC"],[44,"RmiddleA"],[45,"RmiddleB"],[46,"RmiddleC"],[47,"RringA"],[48,"RringB"],[49,"RringC"],[50,"RpinkyA"],[51,"RpinkyB"],[52,"RpinkyC"],[53,"Lball"],[54,"Rball"]],"thc-hr-cred-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"stomach"],[5,"chest"],[6,"neck"],[7,"head"],[8,"Lshoulder"],[9,"Lelbow"],[10,"Lhand"],[11,"Rshoulder"],[12,"Relbow"],[13,"Rhand"],[14,"hips"],[15,"Lthigh"],[16,"Lknee"],[17,"Lankle"],[18,"Rthigh"],[19,"Rknee"],[20,"Rankle"],[21,"maskaa"],[22,"maskab"],[23,"LthumbA"],[24,"LthumbB"],[25,"LthumbC"],[26,"LindexA"],[27,"LindexB"],[28,"LindexC"],[29,"LmiddleA"],[30,"LmiddleB"],[31,"LmiddleC"],[32,"LringA"],[33,"LringB"],[34,"LringC"],[35,"LpinkyA"],[36,"LpinkyB"],[37,"LpinkyC"],[38,"RthumbA"],[39,"RthumbB"],[40,"RthumbC"],[41,"RindexA"],[42,"RindexB"],[43,"RindexC"],[44,"RmiddleA"],[45,"RmiddleB"],[46,"RmiddleC"],[47,"RringA"],[48,"RringB"],[49,"RringC"],[50,"RpinkyA"],[51,"RpinkyB"],[52,"RpinkyC"],[53,"Lball"],[54,"Rball"]],"this-way-arrow-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"arrow"]],"this-way-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"time-freeze-debris-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"time-freeze-debris-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"time-freeze-debris-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"time-freeze-debris-d-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"time-freeze-debris-long-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"time-freeze-debris-long-circle-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"time-freeze-debris-med-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"time-freeze-debris-med-circle-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"time-freeze-debris-short-a-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"time-freeze-debris-short-circle-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"time-freeze-time-freeze-cage-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"time-freeze-time-freeze-long-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"time-freeze-time-freeze-med-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"time-freeze-time-freeze-short-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"top-bar-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"top_bar"],[6,"topbartype"],[7,"topleft"],[8,"bottomright"],[9,"topleft1"],[10,"bottomright1"]],"tor-hr-cred-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"stomach"],[5,"chest"],[6,"neck"],[7,"head"],[8,"hairbase"],[9,"hairmid"],[10,"Rearbase"],[11,"Rmidear"],[12,"Learbase"],[13,"Lmidear"],[14,"Lshoulder"],[15,"Lelbow"],[16,"Lhand"],[17,"LthumbA"],[18,"LpinkyA"],[19,"LpinkyB"],[20,"LpinkyC"],[21,"Rshoulder"],[22,"Relbow"],[23,"Rhand"],[24,"RthumbA"],[25,"RpinkyA"],[26,"RpinkyB"],[27,"RpinkyC"],[28,"hips"],[29,"Lthigh"],[30,"Lknee"],[31,"Lankle"],[32,"Lball"],[33,"Rthigh"],[34,"Rknee"],[35,"Rankle"],[36,"Rball"],[37,"LthumbB"],[38,"LthumbC"],[39,"LindexA"],[40,"LindexB"],[41,"LindexC"],[42,"LmiddleA"],[43,"LmiddleB"],[44,"LmiddleC"],[45,"LringA"],[46,"LringB"],[47,"LringC"],[48,"RthumbB"],[49,"RthumbC"],[50,"RindexA"],[51,"RindexB"],[52,"RindexC"],[53,"RmiddleA"],[54,"RmiddleB"],[55,"RmiddleC"],[56,"RringA"],[57,"RringB"],[58,"RringC"],[59,"Lgun"]],"train-car-b-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"end"]],"train-car-c-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"end"]],"train-car-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"end"]],"train-loco-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"l_light"],[5,"r_light"]],"training-marker-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"training-wall-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"tune-meter-bar-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"meter_bar"],[6,"topleft"],[7,"bottomright"],[8,"topleft2"],[9,"bottomright2"]],"tune-type-bar-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"cam"],[4,"main"],[5,"side_bar"],[6,"topleft"],[7,"bottomright"],[8,"topleft1"],[9,"bottomright1"]],"ur8-hr-cred-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"stomach"],[5,"chest"],[6,"neck"],[7,"head"],[8,"Lshoulder"],[9,"Lelbow"],[10,"Lhand"],[11,"Rshoulder"],[12,"Relbow"],[13,"Rhand"],[14,"hips"],[15,"Lthigh"],[16,"Lknee"],[17,"Lankle"],[18,"Rthigh"],[19,"Rknee"],[20,"Rankle"],[21,"rodRbase"],[22,"rodREND"],[23,"rodLbase"],[24,"LindexA"],[25,"LpinkyA"],[26,"LpinkyB"],[27,"LThumbA"],[28,"LThumbB"],[29,"LThumbC"],[30,"LForeA"],[31,"LForeB"],[32,"LForeC"],[33,"LMidA"],[34,"LMidB"],[35,"LMidC"],[36,"LAftA"],[37,"LAftB"],[38,"LAftC"],[39,"RindexA"],[40,"RpinkyA"],[41,"RpinkyB"],[42,"RThumbA"],[43,"RThumbB"],[44,"RThumbC"],[45,"RForeA"],[46,"RForeB"],[47,"RForeC"],[48,"RMidA"],[49,"RMidB"],[50,"RMidC"],[51,"RAftA"],[52,"RAftB"],[53,"RAftC"],[54,"shockRbase"],[55,"shockLbase"],[56,"Rshoulderplate"],[57,"Lshoulderplate"],[58,"Lout_toeA"],[59,"Lout_toeB"],[60,"Lmid_toe_a"],[61,"Lmid_toe_b"],[62,"Lin_toeA"],[63,"Lin_toeB"],[64,"LheelA"],[65,"Rout_toeA"],[66,"Rout_toeB"],[67,"Rmid_toe_a"],[68,"Rmid_toe_b"],[69,"Rin_toeA"],[70,"Rin_toeB"],[71,"RheelA"]],"vehicle-explosion-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main_"],[4,"fuseb_"],[5,"fusea_"],[6,"fusec_"],[7,"nosea_"],[8,"enginea_"],[9,"sheld_"],[10,"engineb_"],[11,"intake_"],[12,"rudder_"],[13,"rearbraker_"],[14,"rearbrakel_"],[15,"tailfinr_"],[16,"tailfinl_"],[17,"frontfinr_"],[18,"frontfinl_"]],"weapon-drone-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"muzzleL1"],[5,"muzzleL2"],[6,"muzzleR1"],[7,"muzzleR2"]],"wind-rotor-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"wm-docks-crane-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"cranerot"],[5,"craterot"],[6,"cratedrop"]],"wm-drome-wind-machine-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"wm-fireworks-ship-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"fireworks_"],[5,"fireworks_1"]],"wm-kras-circular-tower-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"toprot"]],"wm-track-car-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"],[4,"exhaust_"]],"world-map-atoll-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-canspar-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-canyon-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-cliffs-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-coliseum-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-desarena-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-desisle-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-dockkra-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-docks-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-drome-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-dromedoc-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-fort-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-hav-tour-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-haven-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-havenarena-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-havjung-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-havsew-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-ice-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-ice-tour-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-iceberg-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-icepass-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-jungle-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-kcross-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-kras-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-kras-tour-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-peak-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-sewer-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-snow-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-snowbowl-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-spar-tour-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-spargus-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-spartem-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"world-map-temple-mesh-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]],"wrong-way-lod0-jg":[[1,"align"],[2,"prejoint"],[3,"main"]]} diff --git a/decompiler/config/jakx/pal/label_types.jsonc b/decompiler/config/jakx/pal/label_types.jsonc new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/decompiler/config/jakx/pal/label_types.jsonc @@ -0,0 +1 @@ +{} diff --git a/decompiler/config/jakx/pal/process_stack_size_overrides.jsonc b/decompiler/config/jakx/pal/process_stack_size_overrides.jsonc new file mode 100644 index 00000000000..1609739ad15 --- /dev/null +++ b/decompiler/config/jakx/pal/process_stack_size_overrides.jsonc @@ -0,0 +1,11 @@ +// This overrides the stack size for calls to stack-size-set! in given functions. +{ + "(method 29 target)": 2048, + "(method 11 part-spawner)": 64, + "(method 11 elevator)": 1024, + "scene-player-init": 1024, + "task-manager-init-by-other": 2048, + "race-manager-init-by-other": 1024, + "neo-sat-shield-init-by-other": 64, + "bt-gun-manager-init-by-other": 256 +} diff --git a/decompiler/config/jakx/pal/stack_structures.jsonc b/decompiler/config/jakx/pal/stack_structures.jsonc new file mode 100644 index 00000000000..5fe7f35f908 --- /dev/null +++ b/decompiler/config/jakx/pal/stack_structures.jsonc @@ -0,0 +1,2522 @@ +{ + "quaternion-smooth-seek!": [[16, ["inline-array", "quaternion", 2]]], + "eul->matrix": [[16, "vector"]], + "segment-segment-find-intersection-xz": [[16, "vector"]], + "vector-line-xz-distance-point!": [[16, "matrix"]], + "vector-segment-xz-distance-point!": [[16, "matrix"]], + "nearest-dist2-between-moving-points": [[16, ["inline-array", "vector", 2]]], + "vector-circle-tangent-new": [ + [32, "vector"], + [48, "vector"] + ], + "rotate-vector-to-vector": [[16, "quaternion"]], + "init-for-transform": [[192, "vector"]], + "show-mc-info": [[16, "mc-slot-info"]], + "joint-mod-blend-world-callback": [[16, "joint-mod-blend-world-work"]], + "(method 42 nav-mesh)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 44 nav-mesh)": [ + [16, "vector"], + [32, "vector"] + ], + "string->sound-name": [[16, ["array", "sound-name", 1]]], + "sound-name->string": [[16, ["array", "uint8", 16]]], + "doppler-pitch-shift": [[16, ["inline-array", "vector", 2]]], + "(anon-function 1 gsound)": [ + [16, ["array", "symbol", 4]], + [32, ["array", "symbol", 4]] + ], + "update-light-hash": [ + [16, "bounding-box"], + [48, "vector"], + [64, "vector"] + ], + "(method 19 cloth-system)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 35 cloth-on-skeleton)": [[16, "vector"]], + "(method 22 cloth-system)": [ + [80, "vector"], + [144, "vector"] + ], + "(method 14 cloth-on-skeleton)": [[16, "matrix"]], + "(method 36 cloth-on-skeleton)": [[16, "matrix"]], + "(method 24 cloth-system)": [[48, "current-position-info"]], + "(method 28 cloth-system)": [ + [64, "vector"], + [64, "vector"] + ], + "(method 23 cloth-system)": [ + [16, "matrix"], + [128, "vector"], + [192, "vector"] + ], + "matrix<-parented-transformq!": [[16, "vector"]], + "joint-mod-ik-callback": [ + [16, "matrix"], + [80, "matrix"], + [144, "vector"], + [160, "vector"], + [176, "vector"], + [192, "vector"], + [208, "vector"], + [224, "vector"], + [240, "matrix"], + [272, "vector"], + [256, "vector"], + [288, "vector"], + [304, "vector"], + [320, "quaternion"], + [336, "quaternion"], + [352, "vector"], + [384, "vector"], + [448, "vector"], + [464, "vector"], + [480, "vector"], + [496, "quaternion"], + [512, "matrix"], + [576, "vector"], + [592, "matrix"], + [608, "matrix"], + [656, "matrix"], + [720, "matrix"], + [752, "matrix"] + ], + "joint-mod-look-at-handler": [ + [16, "matrix"], + [80, "quaternion"], + [96, "vector"], + [112, "vector"], + [128, "vector"] + ], + "joint-mod-joint-set-world-handler": [ + [32, "vector"], + [48, "vector"] + ], + "(method 13 gui-control)": [[16, ["array", "sound-id", 4]]], + "(method 29 game-info)": [[16, ["array", "int8", 4]]], + "(method 9 joint-control)": [[16, "vector"]], + "(method 23 game-info)": [[16, ["array", "uint16", 512]]], + "(method 18 drawable-region-face)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 11 sound-controller)": [[16, "sync-info-params"]], + "(code explode explosion)": [[16, "overlaps-others-params"]], + "(event explode explosion)": [ + [16, "mystery-cquery-type0"], + [608, ["inline-array", "vector", 2]] + ], + "find-closest-solid-sphere-prim": [[16, "vector"]], + "explosion-init-by-other": [[16, "traffic-danger-info"]], + "(enter cam-launcher-longfall)": [[16, "vector"]], + "want-to-board?": [ + [16, "collide-query"], + [560, ["inline-array", "sphere", 3]], + [608, "vector"] + ], + "(method 16 target)": [[16, "vector"]], + "can-exit-duck?": [[560, ["inline-array", "sphere", 2]]], + "target-no-stick-post": [[32, "collide-query"]], + "target-compute-edge-rider": [[96, "bone"]], + "target-compute-edge": [[96, "bone"]], + "bend-gravity": [[32, "vector"]], + "target-update-ik": [ + [16, "collide-query"], + [624, "vector"], + [592, "vector"], + [640, "vector"], + [656, "vector"] + ], + "target-collision-reaction": [ + [16, "vector"], + [32, "vector"], + [48, "matrix"] + ], + "poly-find-nearest-edge": [[16, "vector"]], + "(method 23 task-arrow)": [[16, "cquery-with-vec"]], + "projectile-update-velocity-space-wars": [[64, "vector"]], + "projectile-move-fill-line-sphere": [[16, "collide-query"]], + "(method 38 projectile)": [[16, "collide-query"]], + "(method 10 ragdoll)": [[16, "vector"]], + "(method 19 wings-ragdoll)": [[16, "vector"]], + "find-water-with-spheres": [[16, "water-info"]], + "(method 18 ragdoll)": [ + [16, "collide-query"], + [560, "bounding-box"], + [624, ["inline-array", "water-sphere", 2]] + ], + "(method 17 ragdoll-edit-info)": [ + [224, "vector"], + [384, "matrix"], + [448, "vector"], + [608, "matrix"], + [672, "vector"] + ], + "(method 16 ragdoll-edit-info)": [ + [16, ["inline-array", "matrix", 60]], + [3984, "vector"], + [4016, "matrix"], + [4080, "matrix"], + [4144, "matrix"] + ], + "target-send-attack": [[112, "vector"]], + "target-stance-anim": [[64, ["array", "time-frame", 4]]], + "init-var-jump": [[96, "vector"]], + "(code target-running-attack)": [[112, "collide-query"]], + "(anon-function 12 target2)": [[16, "vector"]], + "lightning-start": [ + [16, "vector"], + [32, "vector"] + ], + "(method 9 curve-color-fast)": [[16, "rgbaf"]], + "(method 9 curve2d-fast)": [ + [16, "vector"], + [32, "vector"] + ], + "evaluate-color-curve-fast": [[16, "vector"]], + "evaluate-curve-fast": [ + [16, "vector"], + [32, "vector"] + ], + "lightning-trail-fractal-gen": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + "(post open lightjak-shield)": [[32, "vector"]], + "(method 24 freeze-screen)": [[32, "vector"]], + "(post target-launch-dir)": [[16, "collide-query"]], + "arrive-at-continue": [[16, "event-message-block"]], + "(code target-hit)": [[16, "vector"]], + "apply-pos-from-entity": [[208, "collide-query"]], + "target-death-main": [ + [16, "event-message-block"], + [96, ["array", "level", 1]] + ], + "find-nearest-focusable": [[48, "vector"]], + "target-gun-joint-pre0": [ + [640, ["inline-array", "sphere", 1]], + [656, "vector"] + ], + "target-gun-can-fire-yellow?": [[16, "gun-yellow-3-event-msg"]], + "draw-beam": [[16, ["inline-array", "vector", 2]]], + "(code die gun)": [[144, "vector"]], + "light-trail-tracker-init-by-other": [[16, "vector"]], + "(method 11 light-trail)": [[16, "light-trail-breadcrumb"]], + "(method 12 light-trail)": [ + [16, ["array", "int32", 4]], + [160, "vector"], + [176, "vector"], + [32, "rgbaf"], + [48, "vector"], + [112, "vector"], + [208, ["inline-array", "vector", 5]], + [288, "rgbaf"] + ], + "target-board-ride-post": [[64, "vector"]], + "target-board-compute-edge": [ + [32, "vector"], + [128, "vector"] + ], + "board-turn-around?": [[48, "vector"]], + "target-board-green-eco-attack": [ + [16, "vector"], + [32, ["array", "collide-shape", 384]] + ], + "(enter target-board-jump)": [[48, "vector"]], + "(code target-board-flip)": [[16, "vector"]], + "(code target-board-trickx)": [[16, "vector"]], + "(code target-board-tricky)": [[16, "vector"]], + "(code target-board-hold)": [[16, "vector"]], + "target-board-spin-check": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + "target-board-ground-check": [[32, "vector"]], + "(method 9 plane-volume)": [ + [64, "vector"], + [112, "vector"], + [16, "vector"], + [32, "vector"], + [48, "vector"], + [80, "vector"], + [128, "vector"] + ], + "add-a-bunch": [[16, "vector"]], + "birth-pickup-at-point": [[16, "vector"]], + "(code pickup eco)": [[16, "event-message-block"]], + "(method 10 simple-sprite-system)": [[16, ["array", "texture-id", 128]]], + "make-debug-sphere-table": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"], + [96, "vector"], + [112, "vector"] + ], + "add-debug-sphere-from-table": [ + [16, "vector"], + [48, "vector"], + [64, "vector"] + ], + "internal-draw-debug-line": [ + [16, "vector4w-2"], + [48, "vector4w-2"], + [80, "vector"], + [96, "vector"] + ], + "add-debug-box-with-transform": [ + [16, ["inline-array", "vector", 8]], + [144, ["inline-array", "vector", 2]], + [176, "vector"] + ], + "add-debug-line-sphere": [ + [48, "matrix"], + [112, "matrix"], + [128, "vector"], + [144, "vector"], + [160, "vector"], + [176, "vector"], + [208, "vector"], + [192, "vector"] + ], + "add-debug-arc": [ + [16, "vector"], + [32, "vector"] + ], + "add-debug-curve": [ + [16, "vector"], + [32, "vector"] + ], + "add-debug-points": [[16, "vector"]], + "add-debug-cursor": [[16, "vector"]], + "(method 11 impact-control)": [[16, "touching-shapes-entry"]], + "(method 9 cubic-curve)": [[16, "trajectory"]], + "(method 10 cubic-curve)": [[16, "trajectory"]], + "(method 11 cubic-curve)": [[16, "trajectory"]], + "(method 12 cubic-curve)": [[16, "trajectory"]], + "(method 13 cubic-curve)": [[16, "trajectory"]], + "slave-set-rotation!": [ + [96, "vector"], + [112, "matrix"], + [176, "vector"] + ], + "v-slrp2!": [ + [32, "vector"], + [64, "matrix"] + ], + "v-slrp3!": [[32, "vector"]], + "(method 15 tracking-spline)": [ + [16, "tracking-spline-sampler"], + [32, "vector"] + ], + "(method 16 tracking-spline)": [ + [16, "tracking-spline-sampler"], + [32, "tracking-spline-sampler"] + ], + "(method 18 tracking-spline)": [[16, "tracking-spline-sampler"]], + "(code cam-eye)": [[112, "vector"]], + "(enter cam-circular)": [[32, "vector"]], + "cam-string-joystick": [ + [32, "vector"], + [48, "vector"] + ], + "cam-string-line-of-sight": [[192, "vector"]], + "cam-los-collide": [ + [592, "vector"], + [608, "vector"] + ], + "los-cw-ccw": [ + [48, ["inline-array", "vector", 4]], + [16, "vector"], + [32, "vector"], + [112, "vector"] + ], + "master-track-target": [[16, "vector"]], + "(code cam-point-watch)": [[16, "vector"]], + "cam-helper-temp": [[16, ["inline-array", "vector", 3]]], + "update-view-planes": [ + [208, "vector"], + [224, "vector"] + ], + "clmf-pos-rot": [[112, "matrix"]], + "cam-layout-entity-info": [[208, "vector"]], + "cam-layout-entity-volume-info-create": [ + [80, "vector"], + [128, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [96, "vector"], + [144, "vector"], + [112, "vector"] + ], + "(method 23 tracking-spline)": [[32, "vector"]], + "(method 21 tracking-spline)": [[16, "tracking-spline-sampler"]], + "(method 18 light-trail)": [[16, "vector"]], + "ragdoll-joint-callback": [ + [112, "vector"], + [128, "matrix"], + [192, "vector"], + [224, "vector"] + ], + "ragdoll-matrix-interp": [ + [16, "matrix"], + [144, "matrix"] + ], + "(method 15 ragdoll)": [ + [80, "matrix"], + [160, "vector"], + [304, "vector"], + [144, "vector"], + [176, "vector"], + [192, "vector"], + [208, "vector"], + [224, "vector"], + [240, "vector"] + ], + "(method 14 ragdoll)": [[144, "vector"]], + "(method 14 light-trail)": [[16, "light-trail-breadcrumb"]], + "check-water-level-drop": [[16, "vector"]], + "check-water-level-drop-motion": [[16, "vector"]], + "(method 17 water-control)": [[16, "light-trail-tracker-spawn-params"]], + "(method 10 water-control)": [[288, "vector"]], + "(method 11 flow-control)": [ + [80, "vector"], + [128, "vector"] + ], + "(method 13 flow-control)": [ + [64, "vector"], + [80, "vector"], + [96, "vector"], + [128, "vector"] + ], + "progress-post": [[176, "hud-box"]], + "(method 15 hud-gun)": [[16, "hud-sprite"]], + "play": [[96, ["array", "symbol", 10]]], + "update-sound-banks": [[16, ["array", "int8", 36]]], + "show-level": [[16, ["array", "symbol", 10]]], + "(method 20 load-state)": [ + [16, ["inline-array", "level-buffer-state", 10]], + [176, ["inline-array", "level-buffer-state", 10]] + ], + "calc-vu1-lights": [[16, "light-group"]], + "teleport-camera-by-pos": [[16, "vector"]], + "water-anim-event-handler": [[16, "vector"]], + "blocking-plane-spawn": [[16, ["inline-array", "vector", 2]]], + "(method 11 blocking-plane)": [[16, ["inline-array", "vector", 2]]], + "(method 56 enemy)": [ + [48, "vector"], + [32, "vector"] + ], + "(method 58 enemy)": [[80, "vector"]], + "(method 82 enemy)": [[96, "attack-info"]], + "(post knocked-recover enemy)": [ + [1120, "vector"], + [1136, "vector"] + ], + "(post running elevator)": [[16, "vector"]], + "matrix-3x3-triple-transpose-product": [[16, ["inline-array", "matrix", 3]]], + "(method 63 collide-shape-moving)": [[16, "rigid-body-move-work"]], + "(method 18 rigid-body-control)": [[16, ["inline-array", "vector", 2]]], + "(method 22 rigid-body-control)": [[16, ["inline-array", "vector", 2]]], + "(method 23 rigid-body-control)": [[16, ["inline-array", "vector", 2]]], + "(method 24 rigid-body-control)": [[16, ["inline-array", "vector", 2]]], + "(method 28 rigid-body-control)": [[16, "rigid-body-impact"]], + "(method 50 rigid-body-object)": [[16, "rigid-body-impact"]], + "(method 51 rigid-body-object)": [[16, "rigid-body-impact"]], + "ptest": [[16, "vector"]], + "spawn-guard-projectile": [[16, "projectile-init-by-other-params"]], + "(method 25 guard-shot)": [[32, "vector"]], + "(method 25 metalhead-shot)": [[32, "vector"]], + "(event impact metalhead-grenade-shot)": [[16, "collide-query"]], + "(method 9 los-control)": [ + [32, "collide-query"], + [16, "vector"] + ], + "(method 22 joint-exploder)": [[16, "collide-query"]], + "(method 25 joint-exploder)": [[16, "bounding-box"]], + "(method 15 debris-group)": [[64, "vector"]], + "debris-group-init-by-other": [[16, "vector"]], + "shield-sphere-init-by-other": [[16, "shield-sphere-distort-spawn-params"]], + "gun-yellow-shot-do-deflect": [ + [144, ["array", "collide-shape", 384]], + [64, "vector"] + ], + "(method 31 gun-yellow-shot-2)": [[16, "light-trail-tracker-spawn-params"]], + "(method 25 gun-yellow-shot)": [[32, "vector"]], + "gun-fire-yellow-3": [[16, "gun-yellow-3-event-msg"]], + "(code impact-explode gun-yellow-3-saucer)": [[16, "explosion-init-params"]], + "saucer-land-move": [[16, "vector"]], + "(method 25 gun-yellow-shot-2)": [[32, "vector"]], + "(method 36 gun-yellow-shot-2)": [[96, "vector"]], + "(method 52 gun-yellow-3-saucer)": [ + [48, ["inline-array", "target-quality-info-saucer", 66]], + [1104, ["array", "collide-shape", 384]], + [32, "vector"], + [3728, ["array", "int8", 100]], + [3824, "vector"] + ], + "(code impact gun-red-3-grenade)": [[16, "red-3-sphere-init-params"]], + "(post explode gun-red-2-shockwave)": [[16, "vector"]], + "(method 27 gun-red-2-shockwave)": [ + [16, "vector"], + [32, "red-2-ring-init-params"] + ], + "(method 31 gun-red-3-grenade)": [ + [16, "vector"], + [32, "light-trail-tracker-spawn-params"] + ], + "(method 45 gun-red-3-grenade)": [ + [16, "vector"], + [112, ["array", "collide-shape", 384]] + ], + "(method 47 gun-red-3-grenade)": [ + [16, "vector"], + [112, ["array", "collide-shape", 384]] + ], + "(method 17 gun-red-2-shockwave)": [ + [48, ["array", "collide-shape", 384]], + [16, "vector"], + [1584, "collide-query"] + ], + "(method 19 gun-red-2-shockwave)": [ + [16, "collide-query"], + [576, "vector"], + [624, "vector"], + [592, "vector"] + ], + "(method 23 gun-red-2-shockwave)": [[32, "vector"]], + "(method 24 gun-red-2-shockwave)": [[16, "vector"]], + "gun-fire-red-2": [[16, "gun-red-2-shockwave-init-params"]], + "gun-fire-red-3": [ + [160, ["array", "collide-shape", 384]], + [112, "vector"], + [128, "vector"], + [1696, "vector"] + ], + "(method 26 gun-red-shot)": [[16, "vector"]], + "gun-dark-reaction": [[112, "vector"]], + "gun-fire-red-1": [ + [16, "vector"], + [32, "event-message-block"], + [112, "vector"] + ], + "(trans expand gun-gravity)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [80, "collide-query"], + [624, "matrix"] + ], + "gun-fire-dark-3": [[16, "projectile-init-by-other-params"]], + "(trans moving gun-dark-shot)": [[16, "vector"]], + "(enter impact gun-dark-shot)": [ + [192, ["array", "collide-shape", 384]], + [96, "vector"] + ], + "gravity-spinner-init-by-other": [[32, "vector"]], + "(code zero-g gravity-spinner)": [[112, "vector"]], + "(method 25 gun-dark-3-nuke)": [[16, "matrix"]], + "(code impact-dud gun-dark-3-nuke)": [[16, "explosion-init-params"]], + "(method 54 gun-dark-3-nuke)": [ + [32, ["array", "collide-shape", 384]], + [16, "vector"] + ], + "(trans impact gun-dark-3-nuke)": [ + [96, "gun-dark-3-sphere-init-params"], + [128, "gun-dark-3-sphere-init-params"] + ], + "(method 19 gravity-spinner)": [ + [176, ["array", "collide-shape", 384]], + [128, "vector"], + [112, "vector"], + [1712, "vector"], + [2288, "vector"] + ], + "(method 16 gravity-spinner)": [[32, "vector"]], + "(method 22 gun-gravity)": [ + [112, ["array", "collide-shape", 384]], + [16, "vector"] + ], + "target-bomb1-fire-shot": [ + [96, "vector"], + [112, "vector"] + ], + "(code target-darkjak-smack)": [[112, "projectile-init-by-other-params"]], + "(method 25 darkjak-ball)": [[32, "vector"]], + "sparticle-track-hadouken": [[16, "vector"]], + "sparticle-red-2-converge": [[16, "vector"]], + "(method 9 rope-constraint)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 26 gun-blue-shot)": [[32, "vector"]], + "(method 24 gun-blue-shot)": [[96, "vector"]], + "gun-fire-blue-2": [[16, "gun-blue-lightning-command"]], + "gun-fire-blue-2-old": [ + [16, "gun-blue-lightning-command"], + [752, "vector"], + [704, "vector"], + [736, "vector"], + [816, "vector"] + ], + "find-gun-blue-2-target-old": [ + [48, ["array", "collide-shape", 384]], + [16, "vector"] + ], + "find-gun-blue-2-target": [ + [48, ["array", "collide-shape", 384]], + [16, "vector"] + ], + "(method 31 gun-blue-shot-3)": [[16, "light-trail-tracker-spawn-params"]], + "gun-blue-shot-3-move": [[160, "dist-dot-val"]], + "gun-fire-blue-3": [ + [16, "projectile-init-by-other-params"], + [160, "vector"], + [3968, "vector"], + [176, ["inline-array", "target-quality-info", 384]], + [1312, ["array", "collide-shape", 384]] + ], + "create-lightning-tracker-if-necessary": [ + [16, "gun-blue-2-lightning-init-params"] + ], + "(method 25 gun-blue-2-lightning-tracker)": [ + [32, "gun-blue-lightning-command"], + [704, "vector"], + [736, "collide-query"] + ], + "collide-list-fill-bg-using-line-sphere": [ + [32, "matrix"], + [96, "collide-query"] + ], + "collide-list-fill-bg-using-box": [ + [32, "matrix"], + [96, "collide-query"] + ], + "add-collide-debug-box": [[16, "bounding-box"]], + "(method 10 collide-mesh)": [[16, "oot-work"]], + "(method 9 touching-list)": [[16, "add-prims-touching-work"]], + "(method 9 collide-edge-edge)": [ + [16, "matrix"], + [80, ["inline-array", "sphere", 6]], + [176, "collide-query"] + ], + "(method 13 collide-edge-work)": [[16, "faei-stack-vars"]], + "(method 50 collide-shape)": [[32, "vector"]], + "(method 45 collide-shape)": [[16, "do-push-aways-work"]], + "(method 18 collide-shape-prim-mesh)": [[16, "collide-tri-result"]], + "(method 15 collide-shape-prim-sphere)": [[16, "collide-query"]], + "cshape-reaction-update-state": [ + [16, "vector"], + [32, "vector"] + ], + "(method 37 control-info)": [[48, "vector"]], + "(method 23 grid-hash)": [ + [16, "grid-hash-box"], + [32, "grid-hash-box"], + [48, "vector"], + [64, "vector"] + ], + "(method 11 grid-hash)": [ + [16, "vector"], + [32, "vector"] + ], + "draw-grid": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + "(method 9 actor-hash-buckets)": [ + [16, ["inline-array", "vector", 2]], + [48, ["inline-array", "vector", 2]] + ], + "(method 15 sphere-hash)": [[16, "vector"]], + "(method 33 spatial-hash)": [[16, ["inline-array", "vector", 2]]], + "(method 24 grid-hash)": [[16, "vector"]], + "(method 14 collide-cache)": [[16, "bounding-box"]], + "(method 16 collide-cache)": [[16, "collide-puls-work"]], + "(method 20 collide-cache)": [[16, "matrix"]], + "col-rend-draw": [[16, "matrix"]], + "(method 11 collide-mesh)": [[16, "spat-work"]], + "(method 11 manipulator)": [[80, "vector"]], + "draw-axis": [ + [32, "vector"], + [48, "vector"], + [64, "vector"], + [96, "vector"], + [112, "vector"] + ], + "(method 16 bug-report)": [ + [160, ["array", "float", 9]], + [48, "vector"], + [64, "vector"] + ], + "particle-adgif-callback": [[16, ["inline-array", "vector", 4]]], + "sp-adjust-launch": [[16, "matrix"]], + "sp-launch-particles-death": [[16, "matrix"]], + "sp-relaunch-setup-fields": [[16, "matrix"]], + "sparticle-respawn-timer": [[16, "vector"]], + "sparticle-respawn-heights": [[16, "vector"]], + "sparticle-rotate-to-vel-3d": [[16, "vector"]], + "spt-func-turn-to-vel-radial": [[16, "vector"]], + "spt-func-relative-pos": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "matrix"], + [128, "matrix"], + [192, "matrix"] + ], + "sparticle-3d-rotate-xz-to-camera": [[16, "vector"]], + "sparticle-3d-rotate-xz-to-camera-eco-shaft": [[16, "vector"]], + "sparticle-2d-spline-align-instant": [[16, "vector"]], + "birth-func-converge": [[16, "vector"]], + "check-shell-level2": [[16, "vector"]], + "check-shell-level1": [[16, "vector"]], + "process-drawable-burn-effect": [[32, "rgbaf"]], + "birth-func-vector-orient": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + "birth-func-target-orient": [[48, "vector"]], + "process-drawable-shock-skel-effect": [ + [176, "matrix"], + [256, "vector"], + [272, "vector"], + [288, "vector"], + [304, "quaternion"], + [384, "vector"] + ], + "process-drawable-shock-effect": [ + [80, "collide-query"], + [16, "matrix"] + ], + "process-drawable-shock-effect-replace": [ + [80, "collide-query"], + [16, "matrix"] + ], + "(trans target-ladder-walk-up)": [[96, "vector"]], + "(trans target-ladder-walk-down)": [[96, "vector"]], + "(post target-ladder)": [[96, "matrix"]], + "(anon-function 47 script)": [[16, "vector"]], + "(anon-function 48 script)": [ + [16, "vector"], + [32, "vector"] + ], + "(anon-function 49 script)": [ + [128, "part-tracker-subsampler-init-params"], + [176, "part-tracker-init-params"] + ], + "(method 9 mood-control)": [[16, "mood-control-work"]], + "check-drop-level-rain": [[16, "vector"]], + "(method 28 path-control)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"] + ], + "(method 29 path-control)": [[32, "vector"]], + "print-default-collision": [ + [144, "vector"], + [96, "vector"], + [112, "vector"], + [128, "vector"], + [160, "matrix"] + ], + "mech-spawn-thruster": [[32, "vector"]], + "mech-shield-init-by-other": [[16, "shield-sphere-distort-spawn-params"]], + "target-mech-get-off?": [[560, ["inline-array", "sphere", 1]]], + "mech-update-ik": [ + [16, "collide-query"], + [592, "vector"], + [608, "vector"], + [624, "vector"], + [640, "vector"], + [656, "vector"], + [672, "vector"] + ], + "target-mech-init": [[96, "shield-sphere-spawn-params"]], + "target-mech-add-thrust": [[16, "vector"]], + "target-mech-collision": [[144, "vector"]], + "(code target-mech-carry-throw)": [[640, ["inline-array", "sphere", 1]]], + "(trans target-mech-carry-drag)": [[560, ["inline-array", "sphere", 1]]], + "(code target-mech-carry-drop)": [[672, ["inline-array", "sphere", 1]]], + "target-mech-carry-update": [[560, ["inline-array", "sphere", 1]]], + "flut-update-ik": [ + [16, "collide-query"], + [624, "vector"], + [640, "vector"], + [656, "vector"], + [592, "vector"], + [608, "vector"] + ], + "(code target-flut-get-on)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 11 minimap)": [[16, ["inline-array", "vector", 4]]], + "(method 15 minimap)": [[16, "minimap-draw-work"]], + "(method 19 minimap)": [ + [32, "vector"], + [16, "vector"] + ], + "(method 24 minimap)": [[16, "minimap-draw-work"]], + "(method 23 minimap)": [ + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "matrix"], + [144, "matrix"] + ], + "(method 26 minimap)": [ + [32, "vector"], + [48, "vector"], + [64, "matrix"] + ], + "(method 17 minimap)": [ + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "matrix"], + [144, "matrix"], + [256, "vector"], + [240, "vector"] + ], + "(method 18 minimap)": [ + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "matrix"], + [144, "matrix"], + [240, "vector"], + [256, "vector"] + ], + "(method 14 trail-graph)": [[16, ["inline-array", "vector", 2]]], + "(method 15 trail-graph)": [[16, ["inline-array", "vector", 4]]], + "(method 12 lightning-bolt)": [ + [80, "vector"], + [112, "matrix"], + [176, "vector"], + [192, "vector"], + [16, "vector"], + [32, "matrix"], + [304, "matrix"], + [272, "vector"], + [368, "vector"], + [384, "vector"] + ], + "(method 11 lightning-bolt)": [[48, "vector"]], + "(method 20 lightning-bolt)": [[16, "vector"]], + "(method 16 lightning-bolt)": [[144, ["array", "rgba", 1]]], + "(method 9 nav-mesh)": [[16, "vector"]], + "(method 10 nav-mesh)": [[32, "nav-find-poly-parms"]], + "find-nearest-nav-mesh": [[16, "nav-find-poly-parms"]], + "point-to-poly-boundary": [[16, ["inline-array", "vector", 4]]], + "(method 11 nav-mesh)": [[16, "nav-find-poly-parms"]], + "(method 31 entity-actor)": [[16, "nav-find-poly-parms"]], + "(method 32 entity-actor)": [[32, "nav-find-poly-parms"]], + "(method 15 nav-mesh)": [[16, ["array", "int8", 4]]], + "(method 17 nav-mesh)": [[16, "vector"]], + "(method 20 nav-mesh)": [[16, "nav-ray"]], + "(method 21 nav-mesh)": [ + [16, "nav-ray"], + [96, "vector"] + ], + "(method 36 nav-mesh)": [[16, "nav-poly"]], + "(method 37 nav-mesh)": [[16, ["inline-array", "nav-poly", 3]]], + "(method 39 nav-mesh)": [[16, ["inline-array", "vector", 3]]], + "(method 43 nav-mesh)": [[16, "vector"]], + "(method 25 nav-mesh)": [[32, "nav-stack-type2"]], + "(method 12 nav-mesh)": [[16, "nav-stack-type"]], + "(anon-function 9 nav-control)": [[16, ["inline-array", "vector", 1]]], + "(anon-function 4 nav-control)": [[16, ["inline-array", "vector", 1]]], + "debug-nav-validate-current-poly": [[16, "vector"]], + "(method 9 nav-control)": [[16, "vector"]], + "circle-tangent-directions": [[48, "vector"]], + "(method 18 nav-control)": [[16, "nav-control-cfs-work"]], + "(method 19 nav-control)": [[16, "nav-control-cfs-work"]], + "(method 11 nav-state)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 24 nav-state)": [[16, ["inline-array", "vector", 1]]], + "(method 28 nav-state)": [[208, "vector"]], + "(method 31 nav-state)": [ + [16, "nav-avoid-spheres-params"], + [112, "nav-ray"] + ], + "(method 32 nav-state)": [[16, "nav-control-cfs-work"]], + "(method 34 nav-state)": [[16, ["inline-array", "vector", 1]]], + "(method 37 nav-state)": [[16, ["inline-array", "vector", 1]]], + "(method 50 nav-state)": [[16, "nav-ray"]], + "(method 52 nav-state)": [ + [16, "vector"], + [32, "nav-route-portal"], + [80, ["inline-array", "vector", 2]], + [192, "matrix"] + ], + "(method 53 nav-state)": [ + [16, "nav-avoid-spheres-params"], + [112, "nav-ray"] + ], + "(method 91 nav-enemy)": [[16, "vector"]], + "(method 161 nav-enemy)": [[16, "vector"]], + "(method 160 nav-enemy)": [[16, "vector"]], + "(code hostile monster-frog)": [[16, "vector"]], + "(code notice monster-frog)": [[16, "vector"]], + "elec-gate-post": [[48, "vector"]], + "(enter active elec-gate)": [[176, ["inline-array", "vector", 2]]], + "(method 26 min-rat-engine)": [[96, "vector"]], + "(code arrived min-bomb-elevator)": [[16, ["array", "symbol", 3]]], + "(code down-idle min-crane-switch)": [[16, ["array", "symbol", 3]]], + "(method 208 manta)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 200 manta)": [[16, "vector"]], + "(method 201 manta)": [[16, ["inline-array", "matrix", 2]]], + "(method 109 rat)": [[112, "vector"]], + "(post running-in-wheel rat)": [ + [96, "vector"], + [112, "vector"], + [128, "vector"] + ], + "(post idle rat-spawner)": [ + [96, "vector"], + [112, "enemy-init-by-other-params"] + ], + "(method 37 min-bomb-train)": [[144, "vector"]], + "(method 10 game-task-node-info)": [[16, ["array", "game-task-node", 64]]], + "fail-mission": [[96, "resetter-params"]], + "restart-mission": [[96, "resetter-params"]], + "gekko-postbind": [ + [576, ["inline-array", "vector", 1]], + [656, "vector"], + [672, "vector"], + [752, "vector"], + [768, "vector"], + [848, "vector"], + [864, "vector"], + [944, "vector"], + [960, "vector"] + ], + "(method 202 gekko)": [ + [16, "vector"], + [32, "vector"] + ], + "merc-blend-shape": [[16, ["array", "int16", 128]]], + "(method 26 battle)": [[16, "vector"]], + "fruit-check-ground-bounce": [[16, "vector"]], + "wascity-cactus-callback": [[16, "vector"]], + "vehicle-draw-thruster": [[16, "vehicle-thruster-work"]], + "(method 30 vehicle)": [[16, ["array", "uint32", 1]]], + "(method 55 vehicle)": [[16, "matrix"]], + "(method 54 vehicle)": [[16, "rigid-body-move-work"]], + "(method 78 vehicle)": [ + [16, "vehicle-stack-type3"], + [144, "sprite-glow-data"], + [208, "sprite-glow-data"] + ], + "vehicle-explode-post": [[16, ["array", "uint32", 1]]], + "(method 129 vehicle)": [[16, "mystery-vehicle-type0"]], + "(event fly-to-dest prebot-large-eco-creature)": [[96, "vector"]], + "large-eco-creature-split": [ + [16, "enemy-init-by-other-params"], + [64, "vector"] + ], + "spt-func-pillar-rocks-bounce1": [[16, "vector"]], + "spt-func-pillar-rocks-bounce2": [[16, "vector"]], + "prebot-sword-init-by-other": [[16, "weapon-trail-tracker-spawn-params"]], + "(trans idle prebot-shockwave)": [[560, "bounding-box"]], + "(enter test prebot)": [ + [16, "enemy-init-by-other-params"], + [64, "vector"] + ], + "prebot-spawn-shockwave": [[16, "vector"]], + "prebot-light-flash": [[16, "vector"]], + "prebot-common": [ + [112, "vector"], + [96, "vector"] + ], + "prebot-neck-callback": [[144, "vector"]], + "prebot-launch-critter": [ + [64, "vector"], + [80, "vector"], + [16, "enemy-init-by-other-params"] + ], + "(post attacking-1 tentacle)": [[16, "vector"]], + "(method 155 sew-laser-guard)": [ + [32, "vector"], + [160, "vector"] + ], + "(trans idle sew-laser-beam)": [[32, "vector"]], + "(method 25 sew-move-turret-shot)": [[32, "vector"]], + "spawn-sew-move-turret-projectile": [ + [16, "projectile-init-by-other-params"], + [144, "vector"] + ], + "(method 162 sew-laser-turret)": [ + [32, ["array", "collide-shape", 384]], + [16, "vector"] + ], + "(trans alert sew-laser-turret)": [ + [32, ["array", "collide-shape", 384]], + [16, "vector"] + ], + "(method 161 sew-laser-turret)": [[64, "rgbaf"]], + "(method 159 sew-laser-turret)": [[32, "vector"]], + "(trans active sew-moving-step-a)": [[16, "vector"]], + "spawn-moving-step-b-step": [[16, "sew-moving-step-b-step-param"]], + "(method 231 saberfish)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + "(method 236 saberfish)": [[16, "saberfish-spawner-query-msg"]], + "(method 237 saberfish)": [[16, "saberfish-spawner-query-msg"]], + "(method 238 saberfish)": [ + [16, "saberfish-spawner-query-msg"], + [576, "vector"], + [144, "vector"], + [272, "vector"], + [288, "vector"], + [448, "vector"], + [464, "vector"], + [480, "vector"], + [496, "vector"] + ], + "(method 225 saberfish)": [[16, "saberfish-spawner-query-msg"]], + "(code active saberfish-mgr-room1)": [[16, "saberfish-spawner-command"]], + "(code stage-0 saberfish-mgr-room2)": [[16, "saberfish-spawner-command"]], + "(code stage-2 saberfish-mgr-room2)": [[16, "saberfish-spawner-command"]], + "(code stage-1 saberfish-mgr-room2)": [[16, "saberfish-spawner-command"]], + "(method 22 saberfish-spawner)": [[16, "nav-poly"]], + "(method 24 saberfish-spawner)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 11 saberfish-spawner)": [[32, "vector"]], + "(method 25 saberfish-spawner)": [[16, "saberfish-init-by-other-params"]], + "(method 17 saberfish-spawn-manager-base)": [[16, "saberfish-spawn-query"]], + "(method 18 saberfish-spawn-manager-base)": [[16, "saberfish-spawn-query"]], + "(code active kg-hopper)": [[16, "vector"]], + "(method 191 kg-hopper)": [ + [96, "vector"], + [176, "collide-query"] + ], + "(method 99 kg-hopper)": [[80, "vector"]], + "spt-func-birth-on-bubble-pop": [ + [16, "vector"], + [32, "vector"] + ], + "(code turned-off sew-power-switch)": [[16, ["array", "symbol", 10]]], + "(trans hostile neo-grenadier)": [[48, "vector"]], + "(code flee sewer-frog)": [[16, "vector"]], + "(enter explode spydroid-orig)": [[192, "vector"]], + "(method 196 roboguard)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 195 roboguard)": [[16, "vector"]], + "(anon-function 1 roboguard)": [ + [16, "vector"], + [32, "vector"] + ], + "(anon-function 25 roboguard)": [[48, "matrix"]], + "(method 91 vehicle)": [[16, "vehicle-controls"]], + "(method 48 vehicle)": [[16, "matrix"]], + "(method 118 vehicle)": [[16, "vehicle-controls"]], + "(method 32 squad-control)": [[16, "vector"]], + "(method 17 squad-control)": [[16, "primary-target-pos-vel"]], + "(method 16 squad-control)": [ + [16, ["inline-array", "primary-target-pos-vel", 2]] + ], + "(method 24 squad-control)": [[16, "primary-target-pos-vel"]], + "(method 25 squad-control)": [ + [16, ["inline-array", "primary-target-pos-vel", 2]] + ], + "(method 50 vehicle)": [[16, ["inline-array", "rigid-body-impact", 2]]], + "(method 93 vehicle)": [[16, "mystery-vehicle-type2"]], + "(method 94 vehicle)": [ + [16, "mystery-vehicle-type1"], + [128, ["inline-array", "collide-query", 2]], + [816, ["inline-array", "matrix", 2]] + ], + "(method 135 vehicle)": [[16, ["inline-array", "matrix", 2]]], + "(method 13 was-squad-control)": [ + [16, ["inline-array", "matrix", 2]], + [192, "matrix"], + [208, ["array", "uint32", 1]] + ], + "(method 35 was-squad-control)": [ + [16, ["inline-array", "matrix", 2]], + [240, "cquery-with-5vec"] + ], + "(method 39 vehicle-wheel)": [[16, "rigid-body-move-work"]], + "(enter explode wvehicle)": [[16, "matrix"]], + "(method 77 wvehicle)": [[16, "vector"]], + "(method 30 wvehicle)": [[16, "matrix"]], + "(method 92 wvehicle)": [[16, "vector"]], + "(method 163 wvehicle)": [[16, "matrix"]], + "(method 165 wvehicle)": [ + [16, "vehicle-controls"], + [32, "matrix"] + ], + "(method 198 wvehicle)": [[16, "wvehicle-physics-work"]], + "(method 195 wvehicle)": [[16, "light-trail-tracker-spawn-params"]], + "cshape-reaction-scorp-shot": [[16, "vector"]], + "(method 26 v-scorp-shot)": [[32, "vector"]], + "(method 25 v-rhino-shot)": [[32, "vector"]], + "(method 31 v-toad-shot)": [ + [32, "light-trail-tracker-spawn-params"], + [16, "vector"] + ], + "(method 78 wvehicle)": [ + [16, "wvehicle-part-work"], + [624, "wvehicle-draw-thruster-params"] + ], + "(method 172 wvehicle)": [[16, ["inline-array", "quaternion", 2]]], + "(method 173 wvehicle)": [[16, "wvehicle-stack-type1"]], + "(method 161 wvehicle)": [[16, "vehicle-wheel-init-params"]], + "(method 31 wvehicle)": [[16, "wvehicle-physics-work"]], + "(method 162 wvehicle)": [[16, "wvehicle-physics-work"]], + "(method 164 wvehicle)": [[16, "wvehicle-stack-type6"]], + "(method 95 vehicle)": [[16, "matrix"]], + "(method 93 wvehicle)": [ + [16, ["inline-array", "matrix", 2]], + [112, "wvehicle-physics-work"], + [128, "matrix"] + ], + "(method 33 wvehicle)": [ + [16, ["inline-array", "quaternion", 2]], + [48, "wvehicle-stack-type4"] + ], + "(method 149 wvehicle)": [[16, "wvehicle-stack-type2"]], + "(method 199 wvehicle)": [[16, "wvehicle-stack-type3"]], + "(method 169 wcar-snake-base)": [[16, "wcar-proj-init-by-other-params"]], + "(method 79 wcar-snake-base)": [ + [16, ["inline-array", "quaternion", 3]], + [64, "wcar-stack-type1"] + ], + "(method 79 v-turtle)": [ + [16, ["inline-array", "quaternion", 3]], + [64, "wvehicle-physics-work"], + [128, "wvehicle-jmod-work"] + ], + "(method 31 squad-control)": [[48, "squad-control-stack-type0"]], + "target-pilot-post": [ + [48, "cquery-with-5vec"], + [640, "matrix"] + ], + "(code target-pilot-get-off)": [[96, "matrix"]], + "target-pilot-trans": [[16, ["inline-array", "vector", 10]]], + "(method 34 was-squad-control)": [ + [16, "cquery-with-vec"], + [576, ["inline-array", "vector", 2]], + [592, "mystery-traffic-object-spawn-params0"] + ], + "(method 9 race-control)": [[16, "race-mesh-slice-query"]], + "(method 9 race-path)": [[16, "vector"]], + "(method 10 race-path)": [[16, ["inline-array", "vector", 4]]], + "(method 11 race-path)": [[16, ["inline-array", "race-path-sample", 6]]], + "(method 16 race-mesh)": [[16, "race-mesh-hash-search"]], + "(method 12 race-path)": [[16, "matrix"]], + "(method 18 race-mesh)": [[16, "race-mesh-slice-query"]], + "(method 17 race-mesh)": [[16, "race-mesh-slice-query"]], + "sparticle-motion-blur-dirt": [[16, "matrix"]], + "check-scorp-shell-level1": [[16, "vector"]], + "check-scorp-shell-level2": [[16, "vector"]], + "(method 22 turbo-pickup)": [[16, "cquery-with-vec"]], + "(method 17 tire-trail)": [[16, "matrix"]], + "(method 200 wvehicle)": [[16, "wvehicle-physics-work"]], + "(method 38 wvehicle)": [ + [16, "wvehicle-stack-type5"], + [112, "wvehicle-stack-type7"], + [272, "wvehicle-stack-type5"], + [304, "matrix"] + ], + "(method 24 w-parking-spot)": [[16, "cquery-with-5vec"]], + "(method 79 v-scorpion)": [ + [32, ["inline-array", "quaternion", 3]], + [16, "vector"], + [80, "wvehicle-physics-work"] + ], + "(method 169 v-scorpion)": [[16, "wcar-rhino-proj-params"]], + "(method 169 v-toad)": [[16, "wcar-toad-stack-var0"]], + "(method 79 v-toad)": [ + [16, ["inline-array", "quaternion", 2]], + [48, ["inline-array", "quaternion", 1]], + [64, "wvehicle-physics-work"] + ], + "(method 203 v-toad)": [[16, "wvehicle-physics-work"]], + "(method 169 v-rhino)": [[16, "wcar-rhino-proj-params"]], + "(method 169 v-mirage)": [[16, "wcar-toad-stack-var0"]], + "(method 79 v-rhino)": [ + [16, ["inline-array", "quaternion", 3]], + [64, ["inline-array", "quaternion", 3]] + ], + "(method 17 turret-control)": [[16, "turret-control-stack-var0"]], + "(method 9 turret-control)": [ + [16, "turret-control-stack-var1"], + [272, "collide-query"] + ], + "(code idle des-beast)": [[16, "vector"]], + "des-beast-gun-swivel-callback": [ + [16, "vector"], + [80, "vector"] + ], + "(trans idle beast-rider)": [[16, "vector"]], + "(method 31 beast-grenade)": [ + [16, "light-trail-tracker-spawn-params"], + [48, "vector"] + ], + "des-beast-gun-callback": [ + [32, "vector"], + [80, "vector"] + ], + "(method 84 des-beast)": [[176, "vector"]], + "(method 167 des-beast)": [[32, ["array", "collide-shape", 64]]], + "(method 164 des-beast)": [ + [48, "vector"], + [176, "vector"] + ], + "sig-pilot-trans": [[16, "matrix"]], + "update-nst-lights": [ + [32, "vector"], + [48, "vector"] + ], + "(code notice nst-cocoon-a)": [ + [16, "vector"], + [32, "vector"] + ], + "(code die nst-metalhead-eggs)": [[16, "vector"]], + "birth-func-find-ground": [ + [16, "collide-query"], + [560, "vector"] + ], + "spt-func-check-hit-ground": [[16, "vector"]], + "part-nest-bat1-path": [[80, "vector"]], + "part-nest-bat2-path": [[80, "vector"]], + "part-nest-bat3-path": [[80, "vector"]], + "part-nest-bat4-path": [[80, "vector"]], + "part-nest-bat5-path": [[80, "vector"]], + "part-nest-bat6-path": [[80, "vector"]], + "part-nest-bat7-path": [[80, "vector"]], + "part-nest-bat8-path": [[80, "vector"]], + "part-nest-bat9-path": [[80, "vector"]], + "part-nest-bat10-path": [[80, "vector"]], + "(method 160 egg-spider)": [[16, "vector"]], + "(method 194 egg-spider)": [ + [32, "vector"], + [80, "vector"] + ], + "(trans jump-on-vehicle egg-spider)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"] + ], + "(trans on-vehicle egg-spider)": [ + [16, "vector"], + [32, "vector"] + ], + "(trans idle spider-manager)": [ + [160, "enemy-init-by-other-params"], + [48, "vector"], + [16, "vector"] + ], + "(method 24 spider-manager)": [[16, "cquery-with-vec"]], + "(method 25 spider-manager)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "nav-poly"], + [112, "vector"], + [128, "vector"] + ], + "check-drop-level-egg-spider-dirt-rubble": [[16, "vector"]], + "vehicle-draw-laser": [[32, "vector"]], + "vehicle-draw-beam": [[32, "vector"]], + "(method 30 v-marauder)": [[16, "vector"]], + "(method 79 v-marauder)": [[16, ["inline-array", "quaternion", 3]]], + "(method 90 v-marauder)": [ + [16, "wcar-marauder-stack-var0"], + [48, ["inline-array", "vector", 1]], + [144, "wcar-marauder-stack-var0"], + [160, "wcar-marauder-stack-var0"], + [192, "wcar-marauder-stack-var0"] + ], + "(method 79 v-marauder-b)": [[16, ["inline-array", "quaternion", 3]]], + "wasdoors-point-inside?": [[16, ["inline-array", "vector", 3]]], + "tizard-tilt-jmod-func": [[16, "quaternion"]], + "(method 34 tizard)": [ + [16, "collide-query"], + [560, ["inline-array", "sphere", 2]] + ], + "(method 90 wvehicle)": [[16, "wvehicle-physics-work"]], + "(method 30 des-plant)": [ + [16, "vector"], + [32, ["inline-array", "quaternion", 10]] + ], + "(event idle des-cactus-obstacle)": [[96, "vector"]], + "(code idle was-artifact)": [[64, "vector"]], + "(method 23 was-artifact)": [[16, "cquery-with-vec"]], + "(method 25 was-artifact)": [[16, "matrix"]], + "(code active task-manager-desert-artifact-race)": [ + [144, "matrix"], + [96, ["inline-array", "task-arrow-params", 1]] + ], + "(method 20 race-manager)": [[16, ["inline-array", "vector", 5]]], + "(method 9 racer-state)": [ + [16, "matrix3"], + [48, "race-mesh-slice-query"], + [160, ["inline-array", "vector", 1]] + ], + "(method 12 race-state)": [[16, ["array", "float", 10]]], + "(method 15 race-state)": [[16, "matrix"]], + "(method 17 race-state)": [[16, "race-manager-stack-var0"]], + "(method 19 race-state)": [[96, "matrix"]], + "(method 21 race-manager)": [[16, "race-manager-stack-var1"]], + "(method 15 hud-race-timer)": [[16, ["array", "time-frame", 5]]], + "(method 182 wvehicle)": [[16, ["inline-array", "vector", 1]]], + "(method 177 wvehicle)": [[16, "wvehicle-race-stack-var0"]], + "(method 185 wvehicle)": [[16, ["inline-array", "vector", 1]]], + "(method 181 wvehicle)": [ + [16, "wvehicle-physics-work"], + [1552, "wvehicle-physics-work"] + ], + "(method 180 wvehicle)": [[16, ["array", "int8", 16]]], + "kleever-pilot-trans": [[16, "kleever-rider-stack-var0"]], + "wland-driver-pilot-trans": [[16, "kleever-rider-stack-var0"]], + "(method 33 task-manager-race)": [[16, "course-race-stack-var0"]], + "(method 22 tpl-elec-swing-pole)": [ + [16, "vector"], + [32, "vector"] + ], + "(trans go-door tpl-token)": [ + [96, ["inline-array", "vector", 16]], + [352, ["inline-array", "vector", 16]], + [688, "vector"] + ], + "(method 164 des-beast-2)": [[32, "vector"]], + "(post hostile des-beast-2)": [ + [112, ["inline-array", "vector", 16]], + [96, "vector"], + [464, "vector"], + [480, "vector"], + [560, ["inline-array", "vector", 2]] + ], + "(method 31 beast-grenade-2)": [[16, "light-trail-tracker-spawn-params"]], + "(anon-function 2 des-beast-2)": [[16, "matrix"]], + "(anon-function 1 des-beast-2)": [[16, "matrix"]], + "(method 26 scorpion-gun-shot)": [[32, "vector"]], + "(post active scorpion-gun-manager)": [ + [16, ["inline-array", "vector", 1]], + [32, ["inline-array", "vector", 2]] + ], + "control-post": [[16, "quaternion"]], + "(code cam-scorpion-gun)": [[16, "event-message-block"]], + "(method 157 mh-flyer)": [ + [16, "vector"], + [32, "vector"] + ], + "mh-flyer-fly-post": [ + [576, "vector"], + [640, ["inline-array", "vector", 2]] + ], + "(method 31 mh-flyer-shot)": [[16, "light-trail-tracker-spawn-params"]], + "(enter impact mh-flyer-shot)": [[16, "explosion-init-params"]], + "scorpion-gun-manager-handler": [[16, "vector"]], + "(post firing scorpion-gun)": [ + [16, "scorpion-gun-stack-var0"], + [272, "matrix"] + ], + "aim-post": [ + [640, "vector"], + [672, "vector"], + [688, "vector"], + [704, "vector"], + [720, "collide-query"], + [1264, "vector"], + [1280, ["array", "rgba", 1]], + [16, "event-message-block"], + [96, "vector"] + ], + "(method 25 turret-shot)": [[32, "vector"]], + "(method 57 target-turret)": [[112, "vector"]], + "(method 11 hover-formation)": [[16, "vector"]], + "test-gen-perms": [[16, "gen-perms-context"]], + "gen-perms": [[16, ["array", "int32", 32]]], + "(method 14 hover-formation-control)": [[256, "vector"]], + "(method 11 hover-formation-control)": [[16, ["inline-array", "vector", 16]]], + "(method 11 hover-nav-control)": [[80, "vector"]], + "(method 25 hover-nav-control)": [[80, "vector"]], + "(method 37 nav-network)": [[16, "bounding-box"]], + "(method 27 nav-network)": [[16, "vector"]], + "(method 33 nav-network)": [[16, "vector"]], + "(method 34 nav-network)": [[48, "vector"]], + "(method 16 hover-nav-control)": [[16, "vector"]], + "(method 15 hover-nav-control)": [[16, "vector"]], + "(method 12 hover-nav-control)": [ + [32, "vector"], + [48, "vector"] + ], + "(method 169 hover-enemy)": [ + [16, "vector"], + [32, "vector"], + [48, "collide-query"] + ], + "(enter ambush hover-enemy)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 176 hover-enemy)": [[16, "vector"]], + "(method 169 flamer-hover)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 30 hover-nav-control)": [ + [16, "vector"], + [64, "vector"], + [80, ["array", "float", 16]], + [32, "vector"], + [144, ["inline-array", "vector", 4]], + [208, ["inline-array", "vector", 4]] + ], + "(event ambush-attack robo-hover)": [[16, "projectile-init-by-other-params"]], + "(anon-function 14 robo-hover)": [[112, "vector"]], + "(method 26 tow-spawner)": [ + [16, "enemy-init-by-other-params"], + [80, "vector"], + [96, "vector"] + ], + "(trans active tow-spawner)": [[16, ["inline-array", "vector", 1]]], + "(method 11 for-tower)": [[16, "vector"]], + "for-log-callback": [[16, "vector"]], + "spt-forest-check-ground-lie-flat": [ + [16, "quaternion"], + [32, "matrix"] + ], + "spt-check-water-lie-flat": [ + [112, "vector"], + [128, "vector"] + ], + "spt-func-birth-on-stop": [ + [16, "vector"], + [32, "vector"] + ], + "spt-func-for-ground-dirt-bounce1": [[16, "vector"]], + "spt-func-for-ground-dirt-bounce2": [[16, "vector"]], + "(code active task-manager-forest-plants)": [[176, "vector"]], + "(method 26 task-manager-forest-plants)": [ + [96, "light-trail-tracker-spawn-params"] + ], + "(post knocked-recover dp-bipedal)": [ + [560, "vector"], + [576, "vector"] + ], + "(enter shield-idle dp-bipedal)": [[16, "shield-sphere-spawn-params"]], + "(trans hostile dp-bipedal)": [[16, ["inline-array", "vector", 1]]], + "dp-bipedal-attack-close-post": [[16, ["inline-array", "vector", 1]]], + "dp-bipedal-formation-post": [[16, "vector"]], + "region-check-has-los": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + "(post idle dp-bipedal-spawner)": [ + [48, "enemy-init-by-other-params"], + [16, ["array", "collide-shape", 1]] + ], + "trajectory-prediction": [[16, ["inline-array", "vector", 6]]], + "(method 206 dp-bipedal)": [[16, ["inline-array", "vector", 1]]], + "(method 209 dp-bipedal)": [[48, "vector"]], + "(method 208 dp-bipedal)": [[576, "vector"]], + "(post idle neo-wasp-spawner)": [[16, "enemy-init-by-other-params"]], + "(event attack neo-wasp)": [[16, "projectile-init-by-other-params"]], + "(anon-function 15 neo-wasp)": [ + [32, "matrix"], + [112, "quaternion"], + [128, "vector"] + ], + "(method 35 neo-spawner)": [[16, "enemy-init-by-other-params"]], + "(enter die neo-spawner)": [[192, "vector"]], + "(method 25 for-turret-shot)": [[32, "vector"]], + "(method 57 for-turret)": [ + [96, "vector"], + [16, "matrix"] + ], + "(method 15 hud-for-turret-health)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [112, "vector"], + [256, "vector"], + [272, "vector"], + [288, "vector"] + ], + "(method 52 for-turret)": [ + [32, "vector"], + [64, "vector"] + ], + "(enter closed dm-spines)": [[16, ["inline-array", "vector", 2]]], + "check-drop-level-flitter-dirt-rubble": [[16, "vector"]], + "(method 11 chain-physics)": [ + [144, "vector"], + [128, "vector"], + [160, "vector"], + [176, "vector"], + [192, "vector"], + [256, "vector"], + [208, "vector"], + [224, "vector"] + ], + "(method 31 vol-balance-plat)": [ + [32, "vector"], + [96, "vector"], + [112, "vector"] + ], + "(method 47 vol-stone-lid)": [[16, "vector"]], + "(method 49 vol-stone-lid)": [[128, ["inline-array", "vector", 2]]], + "(code notice spiky-frog)": [[16, "vector"]], + "(method 121 flamer-lava)": [[16, "vector"]], + "(method 200 flamer-lava)": [[64, "vector"]], + "(method 204 flamer-lava)": [ + [16, "vector"], + [32, "vector"] + ], + "spt-func-birth-on-pop": [ + [16, "vector"], + [32, "vector"] + ], + "(code ambush mantis)": [[16, "vector"]], + "(code hop-away mantis)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 74 mantis)": [[1104, ["inline-array", "sphere", 6]]], + "(method 160 mantis)": [[16, "vector"]], + "(code shatter mhcity-dark-eco-door-broken)": [[16, "vector"]], + "(trans idle dm-mine-spider-spawner)": [[32, "enemy-init-by-other-params"]], + "(method 32 dm-mine-spider-spawner)": [[16, "cquery-with-vec"]], + "(method 33 dm-mine-spider-spawner)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 160 dm-mine-spider)": [[16, "vector"]], + "(method 192 dm-mine-spider)": [[32, "vector"]], + "check-drop-level-dm-mine-spider-dirt-rubble": [[16, "vector"]], + "(method 160 spyder)": [[16, "vector"]], + "(method 197 spyder)": [ + [640, "vector"], + [624, "vector"] + ], + "(method 79 v-faccar)": [[16, ["inline-array", "quaternion", 1]]], + "part-wasstada-bird2-path": [[80, "vector"]], + "(code ambush marauder)": [ + [32, "vector"], + [80, "vector"] + ], + "(code save marauder)": [[16, "vector"]], + "(code hostile marauder)": [[16, "vector"]], + "(trans hostile marauder)": [[32, "vector"]], + "(method 197 marauder)": [ + [64, "vector"], + [192, "vector"] + ], + "(method 40 wstd-fight-plat-box)": [ + [16, ["inline-array", "vector", 4]], + [128, "vector"] + ], + "(method 38 wstd-fight-plat-box)": [[16, "vector"]], + "(method 39 wstd-fight-plat-box)": [ + [32, ["array", "collide-shape", 64]], + [16, "vector"], + [288, "vector"] + ], + "(enter go-down task-manager-arena-fight)": [[16, "vector"]], + "(method 36 task-manager-arena-fight-base)": [[16, "vector"]], + "(method 32 task-manager-arena-fight-base)": [ + [16, "marauder-init-by-other-params"] + ], + "(enter go-down task-manager-arena-fight-2)": [[16, "vector"]], + "(method 15 hud-wasgun)": [[48, "vector"]], + "(method 25 wascity-turret-shot)": [[32, "vector"]], + "(method 31 dm-flyer-shot)": [[16, "light-trail-tracker-spawn-params"]], + "(method 31 maker-grenade)": [[32, "light-trail-tracker-spawn-params"]], + "spawn-skeet-enum": [[16, "vector"]], + "def-launch-circle": [ + [16, "vector"], + [32, "vector"] + ], + "(method 26 task-manager-wascity-gungame)": [[144, "vector"]], + "(method 56 wascity-turret)": [[32, "vector"]], + "(method 44 wascity-turret)": [ + [176, "vector"], + [144, "vector"] + ], + "(method 62 wascity-turret)": [ + [16, "matrix"], + [80, "vector"], + [752, "vector"], + [624, "vector"], + [656, "vector"], + [704, "vector"], + [880, "vector"] + ], + "(method 57 wascity-turret)": [[128, "vector"]], + "wascity-turret-add-radar": [[32, "vector"]], + "(method 21 traffic-manager)": [[16, ["array", "int8", 29]]], + "(method 13 xz-height-map)": [[16, ["inline-array", "vector", 2]]], + "(method 10 xz-height-map)": [[16, ["inline-array", "bounding-box", 2]]], + "(method 20 vehicle-controller)": [[16, ["inline-array", "vector", 2]]], + "(method 16 vehicle-controller)": [[16, ["inline-array", "vector", 2]]], + "(method 51 hvehicle)": [[16, "vehicle-physics-work"]], + "(method 90 hvehicle)": [[16, "vehicle-physics-work"]], + "(method 157 hvehicle)": [[16, "matrix"]], + "(method 94 hvehicle)": [[16, "matrix"]], + "(method 91 hvehicle)": [[16, "vehicle-controls"]], + "(method 54 hvehicle)": [[16, "rigid-body-move-work"]], + "(method 30 hvehicle)": [[16, ["inline-array", "vector", 2]]], + "(method 18 vehicle-controller)": [ + [32, "vehicle-physics-work"], + [288, ["array", "collide-shape", 10]] + ], + "(method 158 hvehicle)": [[16, ["inline-array", "vector", 2]]], + "(method 20 traffic-engine)": [[16, "traffic-find-segment-struct"]], + "(method 31 hvehicle)": [ + [960, ["inline-array", "vector", 4]], + [1056, "vector"], + [1072, ["inline-array", "vehicle-attach-point", 4]] + ], + "(method 97 hvehicle)": [[16, "collide-query"]], + "(method 78 hvehicle)": [[16, "hvehicle-effects-stack-var0"]], + "(post idle glider-ring)": [[128, "vector"]], + "glider-ring-standard-event-handler": [[16, ["inline-array", "vector", 2]]], + "glider-ring-init-by-other": [ + [48, "light-trail-tracker-spawn-params"], + [16, "vector"] + ], + "(method 49 h-glider)": [[16, "vector"]], + "(method 36 task-manager-desert-glide)": [[224, "vector"]], + "(method 26 task-manager-desert-glide)": [ + [96, ["array", "symbol", 10]], + [144, "vector"] + ], + "(method 31 h-glider)": [[48, "vehicle-physics-work"]], + "sparticle-shadow-update": [ + [16, "vector"], + [32, "matrix"], + [96, "vector"] + ], + "(method 27 was-pre-game)": [[16, "vector"]], + "(method 31 was-pre-game)": [ + [80, "vector"], + [96, "vector"], + [112, "vector"], + [128, "vector"] + ], + "(post attack was-pre-beam)": [[16, "vector"]], + "(post idle was-pre-beam)": [[16, "vector"]], + "(method 187 flut-racer)": [ + [96, ["array", "collide-shape", 384]], + [80, "vector"] + ], + "ring-hit-logic": [[112, "vector"]], + "(method 30 task-manager-wascity-leaper-race)": [ + [96, ["array", "symbol", 10]] + ], + "(code active task-manager-wascity-leaper-race)": [ + [32, ["array", "symbol", 10]] + ], + "(enter fail task-manager-wascity-leaper-race)": [ + [16, ["array", "symbol", 10]] + ], + "(method 26 task-manager-desert-catch-lizards)": [ + [224, ["array", "collide-shape", 32]] + ], + "(method 33 task-manager-desert-catch-lizards)": [ + [32, ["inline-array", "vector", 2]] + ], + "(method 165 desert-lizard)": [ + [32, "vector"], + [48, "vector"], + [64, ["inline-array", "vector", 1]] + ], + "(post idle desert-lizard-spawner)": [[48, "enemy-init-by-other-params"]], + "(anon-function 33 desert-scenes)": [[16, "vector"]], + "(method 19 dm-tentacle-ragdoll)": [ + [16, "vector"], + [32, "vector"] + ], + "foot-impact": [[16, "vector"]], + "launch-mine": [ + [16, "vector"], + [48, "enemy-init-by-other-params"] + ], + "(method 10 terraformer-foot-mark-pt-array)": [ + [592, ["inline-array", "vector", 4]], + [1216, "bounding-box"] + ], + "(enter run-script terraformer-head)": [[16, "vector"]], + "(enter swing-laser terraformer-head)": [[16, "vector"]], + "terraformer-head-launch-critter": [ + [16, "vector"], + [32, "enemy-init-by-other-params"], + [160, "matrix"] + ], + "terraformer-head-always": [ + [272, "vector"], + [256, "vector"] + ], + "(method 12 ocean)": [[16, "vector"]], + "(method 18 ocean)": [ + [16, "vector"], + [32, "vector4"], + [48, "vector"] + ], + "(method 28 ocean)": [[16, "vector"]], + "(method 33 ocean)": [[16, "vector"]], + "(method 34 ocean)": [[16, "vector"]], + "(method 35 ocean)": [[16, "vector"]], + "(method 36 ocean)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 46 ocean)": [[16, "vector"]], + "(method 59 ocean)": [[16, "vector"]], + "(method 60 ocean)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 61 ocean)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 62 ocean)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 63 ocean)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 67 ocean)": [[16, "vector"]], + "(post flying maker)": [[48, "vector"]], + "(post standup maker)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 36 maker)": [ + [64, "vector"], + [336, "vector"] + ], + "(method 41 maker)": [[560, "vector"]], + "maker-init-by-other": [[32, "light-trail-tracker-spawn-params"]], + "(trans active task-manager-bbush-spirit-chase)": [ + [80, "vector"], + [96, "vector"], + [128, "vector"] + ], + "(trans idle desert-chase-ring)": [[16, "vector"]], + "(trans active task-manager-bbush-spirit-drop)": [ + [80, "vector"], + [96, "vector"], + [128, "vector"] + ], + "(code active task-manager-desert-bbush-get-to)": [ + [160, "vector"], + [176, "matrix"] + ], + "(trans menu des-burning-bush)": [ + [16, "vector"], + [32, "vector"] + ], + "(trans talking des-burning-bush)": [[16, "des-burning-bush-stack-var0"]], + "(method 37 des-burning-bush)": [[16, "bbush-menu-state"]], + "(method 38 des-burning-bush)": [[112, "des-burning-bush-stack-var1"]], + "trail-effect-init-by-other": [[16, "light-trail-tracker-spawn-params"]], + "(trans active task-manager-bbush-timer-chase)": [[80, "vector"]], + "(event attack mh-wasp)": [[16, "projectile-init-by-other-params"]], + "(anon-function 9 mh-wasp)": [[112, "vector"]], + "check-mh-centipede-explosion-level": [[16, "vector"]], + "spt-func-ground-dirt-bounce2": [[16, "vector"]], + "spt-func-ground-dirt-bounce1": [[16, "vector"]], + "(method 42 mh-centipede)": [ + [144, "vector"], + [160, "vector"], + [176, "vector"], + [16, "projectile-init-by-other-params"] + ], + "(method 38 mh-centipede)": [[16, "matrix"]], + "(method 39 mh-centipede)": [[16, "matrix"]], + "(method 40 mh-centipede)": [ + [16, "matrix"], + [816, "vector"], + [832, "vector"] + ], + "(trans die mh-centipede)": [[96, "vector"]], + "(method 10 mh-centipede-crater-pt-array)": [ + [592, ["inline-array", "vector", 4]], + [1216, "bounding-box"] + ], + "(method 161 mh-bat)": [ + [16, "vector"], + [32, "vector"] + ], + "mh-bat-fly-post": [ + [16, "vector"], + [32, "vector"] + ], + "(post idle fac-fire-torch)": [[16, "matrix"]], + "fac-robopod-add-hoverbot": [[32, "enemy-init-by-other-params"]], + "(enter impact factory-boss-shockwave-bomb)": [[176, "vector"]], + "(method 9 factory-boss-lightning-gate)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 59 missile-bot)": [[80, "vector"]], + "factory-boss-launch-critter": [ + [32, "enemy-init-by-other-params"], + [160, "matrix"] + ], + "factory-boss-launch-critter-handler": [ + [96, "vector"], + [112, "vector"], + [128, "matrix"] + ], + "factory-boss-always": [ + [224, "vector"], + [16, "vector"], + [240, "vector"], + [80, "matrix"] + ], + "(method 201 bot)": [[16, "enemy-best-focus"]], + "(method 202 bot)": [[16, "connection-pers"]], + "(method 25 ashelin-shot)": [[32, "vector"]], + "(method 248 ashelin)": [ + [16, "nav-avoid-spheres-params"], + [112, "clamp-travel-vector-to-mesh-return-info"] + ], + "(code active task-manager-desert-oasis-defense)": [ + [112, "mystery-traffic-object-spawn-params0"] + ], + "(method 32 task-manager-desert-oasis-defense)": [ + [16, "mystery-traffic-object-spawn-params0"] + ], + "(method 33 task-manager-desert-oasis-defense)": [ + [16, "marauder-init-by-other-params"] + ], + "(method 26 task-manager-desert-oasis-defense)": [ + [96, "wvehicle-ai-drop-off-params"] + ], + "(trans active dark-eco-orb)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "collide-query"], + [624, "vector"], + [640, "vector"], + [656, "vector"], + [672, "vector"] + ], + "(method 26 task-manager-destroy-darkeco)": [[16, ["array", "symbol", 10]]], + "(trans idle grind-electricity)": [ + [16, "vector"], + [32, "vector"] + ], + "dark-eco-tower-init-by-other": [ + [16, "vector"], + [16, "vector"], + [32, "vector"], + [48, "puffer-init-by-other-params"] + ], + "spawn-shock-effect": [ + [80, "collide-query"], + [16, "matrix"], + [624, "vector"] + ], + "(method 34 comb-block)": [[16, "vector"]], + "(method 11 comb-pillar)": [[16, ["inline-array", "vector", 1]]], + "(method 25 comb-sentry-shot)": [[32, "vector"]], + "(method 32 comb-sentry)": [ + [16, "matrix"], + [80, ["inline-array", "vector", 5]] + ], + "(method 38 comb-sentry)": [[16, "comb-sentry-stack-var0"]], + "(method 39 comb-sentry)": [[16, "comb-sentry-stack-var1"]], + "sled-shot-reaction": [[16, ["inline-array", "vector", 1]]], + "(method 33 h-sled)": [[16, ["inline-array", "vector", 2]]], + "(method 90 h-sled)": [[16, "h-sled-physics-work"]], + "(method 93 h-sled)": [[16, "matrix"]], + "(method 38 h-sled)": [ + [16, "matrix"], + [64, ["inline-array", "vector", 2]] + ], + "(method 31 h-sled)": [ + [1056, "matrix"], + [1104, "matrix"], + [1168, "matrix"], + [16, "h-sled-physics-work"] + ], + "(method 97 h-sled)": [ + [16, "collide-query"], + [560, ["inline-array", "vector", 1]], + [624, "vector"] + ], + "(method 152 h-sled)": [[16, "comb-sentry-stack-var0"]], + "(method 25 sled-shot)": [[32, "vector"]], + "sled-find-mesh-dir": [[16, "h-sled-stack-var0"]], + "(method 78 h-sled)": [[16, "h-sled-stack-var1"]], + "(method 25 ffight-shot)": [[32, "vector"]], + "(enter impact ftank-shot)": [[16, "traffic-danger-info"]], + "(method 25 ftank-shot)": [[32, "vector"]], + "(method 25 fturret-shot)": [[32, "vector"]], + "(method 25 gun-warf-shot)": [[32, "vector"]], + "(enter impact warf-projectile)": [[16, "warf-explosion-sphere-init-params"]], + "(method 43 warf-projectile)": [[16, ["array", "collide-shape", 384]]], + "(method 91 h-warf)": [ + [112, "projectile-init-by-other-params"], + [80, "vector"], + [96, "vector"], + [864, "vector"] + ], + "(method 31 h-warf)": [[48, "vehicle-physics-work"]], + "(method 51 h-warf)": [[16, "rigid-body-impact"]], + "(method 54 h-warf)": [[16, "vehicle-physics-work"]], + "(method 78 h-warf)": [[16, "h-warf-stack-var0"]], + "(method 164 h-warf)": [[16, "vector"]], + "(code hostile fac-gunturret)": [[16, "vector"]], + "fac-robotank-turret-init-by-other": [[16, "vector"]], + "(method 31 fac-robotank-turret)": [[16, "collide-query"]], + "(method 33 fac-robotank-turret)": [ + [16, ["inline-array", "vector", 2]], + [48, ["inline-array", "vector", 2]] + ], + "robotank-turret-handler": [ + [16, "vector"], + [32, "quaternion"] + ], + "draw-2d-hud": [ + [16, ["inline-array", "vector4w", 4]], + [80, "vector4w"] + ], + "(method 36 fac-gun-tower)": [ + [16, "vector"], + [32, ["array", "collide-shape", 384]] + ], + "(method 35 fac-gun-tower)": [[32, "vector"]], + "fac-robotank-init-by-other": [[32, "vector"]], + "(trans flying factory-fighter)": [[16, "vector"]], + "(method 16 factory-manager)": [ + [48, "vector"], + [64, "vector"], + [80, "vector"], + [128, "vector"] + ], + "factory-fighter-init-by-other": [[16, "light-trail-tracker-spawn-params"]], + "(code explode factory-fighter)": [[112, "vector"]], + "(trans credits highres-viewer-manager)": [[16, "event-message-block"]], + "(trans idle hirez-viewer)": [[48, "vector"]], + "(code wait title-control)": [[16, "event-message-block"]], + "(code startup title-control)": [ + [16, ["array", "symbol", 10]], + [64, "event-message-block"], // this memory is reused as both mc-slot-info and event-message-block + [368, ["array", "symbol", 10]] + ], + "(method 9 nav-node)": [[48, ["inline-array", "vector", 2]]], + "(method 10 nav-node)": [[16, "vector"]], + "(method 9 nav-graph)": [[16, "matrix"]], + "(method 9 grid-info)": [[16, "vector"]], + "(method 11 grid-info)": [[16, "bounding-box"]], + "(method 13 grid-info)": [[16, "bounding-box"]], + "(method 9 city-level-info)": [ + [16, "vis-ray"], + [192, "vector"], + [208, "vector"], + [224, "vector"], + [128, "vector"], + [144, "vector"] + ], + "(method 11 city-level-info)": [[16, "vector"]], + "(method 12 city-level-info)": [[16, ["inline-array", "vector", 7]]], + "(method 17 city-level-info)": [[16, ["inline-array", "vis-grid-pos", 2]]], + "(method 16 city-level-info)": [ + [48, "vis-grid-box"], + [64, "vis-grid-box"] + ], + "(method 15 city-level-info)": [ + [32, "vis-grid-box"], + [16, "vis-grid-box"] + ], + "(method 14 traffic-level-data)": [ + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + "(method 18 city-level-info)": [[16, "bounding-box"]], + "(method 13 traffic-suppressor)": [ + [16, "bounding-box"], + [48, "vector4w"] + ], + "(method 22 traffic-tracker)": [[16, "traffic-engine-stack-var0"]], + "(method 22 traffic-engine)": [[16, "traffic-danger-info"]], + "(method 43 traffic-engine)": [[16, ["array", "collide-shape", 64]]], + "(method 52 traffic-engine)": [[16, "vector"]], + "(method 54 traffic-engine)": [ + [16, ["inline-array", "traffic-suppression-box", 2]], + [80, ["array", "collide-shape", 40]] + ], + "(method 53 traffic-engine)": [[16, ["array", "collide-shape", 40]]], + "(trans active formation-object)": [[48, "traffic-danger-info"]], + "(method 37 formation-object)": [[96, "vector"]], + "(method 38 formation-object)": [[16, "vector"]], + "(method 30 formation-object)": [[16, "msg-get-num-inactive"]], + "(method 204 citizen)": [ + [16, "vector"], + [32, "iter-seg"] + ], + "(method 207 citizen)": [ + [80, "vector"], + [32, "iter-seg"] + ], + "(method 202 citizen)": [ + [64, "vector"], + [80, "vector"] + ], + "(method 160 citizen)": [[16, "vector"]], + "(method 203 citizen)": [ + [80, "vector"], + [96, "vector"] + ], + "(method 45 formation-object)": [[16, "msg-get-inactive-objects"]], + "(trans move-to-vehicle civilian)": [ + [32, "vector"], + [128, "vector"] + ], + "civilian-flee-post": [ + [48, "vector"], + [80, "vector"] + ], + "civilian-avoid-danger-post": [[112, "vector"]], + "civilian-clear-path-post": [[96, "vector"]], + "(method 239 wlander)": [[48, "vector"]], + "(method 242 wlander)": [[32, "vector"]], + "(method 238 wlander)": [ + [32, ["array", "collide-shape", 64]], + [288, "vector"] + ], + "(method 241 wlander)": [ + [32, ["array", "collide-shape", 64]], + [288, "vector"] + ], + "(method 13 flee-info)": [ + [48, "vector"], + [64, "vector"] + ], + "(method 15 rope-system)": [ + [64, "vector"], + [80, "vector"], + [96, "vector"] + ], + "(enter rescue-start task-manager-desert-rescue)": [ + [16, "desert-rescue-transport-init-params"] + ], + "(code board-vehicle wland-passenger)": [ + [128, "vector"], + [176, "vector"] + ], + "(trans boarding wland-passenger)": [[32, "vector"]], + "(enter approaching-transport wland-passenger)": [[16, "vector"]], + "(method 231 wland-passenger)": [[16, "matrix"]], + "spawn-wlander": [[16, "wland-passenger-init-by-other-params"]], + "update-nav-sphere": [[64, "vector"]], + "compute-transport-approach-pt": [[48, "vector"]], + "(method 19 rope-prim-system)": [ + [48, "matrix"], + [16, "vector"], + [32, "vector"], + [208, "rgbaf"], + [224, "rgbaf"] + ], + "(method 211 neo-sat)": [[16, "vector"]], + "(method 232 neo-sat)": [[32, "vector"]], + "(method 220 neo-sat)": [[16, "vector"]], + "(method 221 neo-sat)": [[32, "vector"]], + "(method 206 neo-sat)": [ + [32, "vector"], + [48, "collide-query"] + ], + "(method 227 neo-sat)": [[16, "collide-query"]], + "spawn-neo-sat": [[16, "neo-sat-init-params"]], + "desert-rescue-transport-init-by-other": [ + [16, "light-trail-tracker-spawn-params"] + ], + "(method 254 crimson-guard)": [ + [16, "vector"], + [96, "vector"] + ], + "(method 255 crimson-guard)": [[64, "vector"]], + "(enter grenade-throw-post-reloading crimson-guard)": [ + [16, "reload-grenade-spawn-params"] + ], + "(method 46 ff-squad-control)": [[112, "ff-squad-control-stack-var0"]], + "(method 16 ff-squad-control)": [[192, ["array", "float", 16]]], + "(method 45 ff-squad-control)": [[16, "vector"]], + "(method 258 crimson-guard)": [[16, "collide-query"]], + "(method 259 crimson-guard)": [ + [96, "vector"], + [32, "vector"], + [48, "vector"], + [160, "vector"], + [176, "vector"] + ], + "(method 212 crimson-guard)": [[16, "shield-sphere-spawn-params"]], + "(method 266 crimson-guard)": [ + [32, "vector"], + [656, "vector"], + [720, "vector"] + ], + "(code sitting vehicle-grenade)": [[16, "traffic-danger-info"]], + "(method 44 vehicle-grenade)": [[16, "traffic-danger-info"]], + "(method 31 vehicle-grenade)": [[16, "vector"]], + "(method 264 crimson-guard)": [[32, "vector"]], + "(method 78 h-bike-base)": [[16, "bike-stack-var0"]], + "(method 217 citizen-enemy)": [[32, ["array", "collide-shape", 64]]], + "(method 225 metalhead-predator)": [ + [160, "vector"], + [176, "vector"], + [208, "vector"] + ], + "(trans close-attack roboguard-city)": [ + [32, ["array", "collide-shape", 384]] + ], + "(code roll-chase roboguard-city)": [[16, "vector"]], + "spawn-roboguard-projectile": [[16, "projectile-init-by-other-params"]], + "(method 237 roboguard-city)": [[16, "vector"]], + "(code flip spydroid)": [[16, "vector"]], + "(trans fire flying-turret)": [[16, "ft-gun-info"]], + "(method 161 flying-turret)": [[16, "vector"]], + "(method 31 h-kg-pickup)": [[48, "vector"]], + "(method 11 flitter-spawner)": [[32, "traffic-object-spawn-params"]], + "(method 21 flitter-spawner)": [[16, "traffic-object-spawn-params"]], + "(code active task-manager-ctywide-bbush-get-to)": [ + [160, "vector"], + [176, "matrix"] + ], + "(trans talking burning-bush)": [ + [32, "vector"], + [64, "vector"] + ], + "(method 32 propa)": [[16, ["array", "collide-shape", 64]]], + "(event idle propa)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 23 parking-spot)": [ + [16, "cquery-with-vec"], + [560, ["inline-array", "vector", 1]] + ], + "(method 24 parking-spot)": [[16, "cquery-with-vec"]], + "(method 11 security-wall)": [[32, "vector"]], + "(method 24 security-wall)": [[16, ["inline-array", "vector", 1]]], + "(trans menu burning-bush)": [[128, "vector"]], + "check-drop-level-ctyport-drop-userdata": [[16, "vector"]], + "(method 16 boat-manager)": [[16, "matrix"]], + "(method 31 boat-base)": [[16, "matrix"]], + "(method 30 boat-base)": [[96, ["inline-array", "vector", 6]]], + "(trans idle krimson-wall-break)": [[16, "matrix"]], + "(trans explode krimson-wall-break)": [[16, "vector"]], + "(method 35 htorpedo)": [[16, "light-trail-tracker-spawn-params"]], + "(enter start-mission ctyport-attack-manager)": [ + [16, ["array", "symbol", 10]] + ], + "(method 49 ctyport-attack-manager)": [ + [64, ["array", "collide-shape", 384]], + [32, "vector"] + ], + "(method 44 ctyport-attack-manager)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 45 ctyport-attack-manager)": [[16, "vector"]], + "(method 79 v-catapult)": [[16, ["inline-array", "quaternion", 3]]], + "(method 33 desert-jump-manager)": [[16, "vector"]], + "(code active desert-jump-manager)": [[96, ["array", "symbol", 10]]], + "(method 32 desert-jump-manager)": [ + [16, "mystery-traffic-object-spawn-params0"] + ], + "(method 23 beam-generator)": [[16, "matrix"]], + "(trans active player-controller)": [ + [32, "vector"], + [48, "vector"] + ], + "(code active desert-chase-ambush-manager)": [ + [16, ["inline-array", "traffic-object-spawn-params", 1]] + ], + "(method 34 desert-chase-ambush-manager)": [ + [16, "projectile-init-by-other-params"] + ], + "(method 33 desert-chase-ambush-manager)": [ + [16, "mystery-traffic-object-spawn-params0"] + ], + "(method 32 desert-chase-ambush-manager)": [ + [16, "marauder-init-by-other-params"] + ], + "(method 22 deschase-artifact)": [[16, "matrix"]], + "(method 12 deschase-vehicle-control)": [ + [64, ["array", "collide-shape", 128]], + [16, "matrix"] + ], + "(method 32 desert-chase-chase-manager)": [ + [16, "traffic-object-spawn-params"] + ], + "desert-chase-chase-intro-sequence": [[16, "player-controller-init-params"]], + "(method 32 bombbot-bomb)": [[592, "vector"]], + "bombbot-player-init-by-other": [[96, "vector"]], + "(trans hostile bombbot-player)": [[16, "vector"]], + "(post hostile bombbot-player)": [ + [576, "vector"], + [16, "vector"], + [592, "vector"] + ], + "(method 197 bombbot-player)": [ + [80, "matrix"], + [144, "vector"], + [720, "vector"], + [736, "vector"] + ], + "(method 196 bombbot-player)": [ + [16, "vector"], + [32, "vector"], + [48, "collide-query"], + [592, ["array", "collide-shape", 64]], + [848, "vector"] + ], + "(method 139 bombbot-player)": [ + [560, "vector"], + [576, "vector"], + [592, "vector"], + [608, "vector"], + [1168, "vector"], + [1216, "collide-query"] + ], + "(post hostile bomb-bot)": [[16, "vector"]], + "(trans hostile bomb-bot)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 196 bomb-bot)": [[16, ["array", "collide-shape", 64]]], + "(method 198 bombbot)": [ + [48, "vector"], + [64, "vector"], + [144, "vector"] + ], + "bombbot-gun-callback": [ + [32, "vector"], + [80, "vector"] + ], + "bombbot-gun-swivel-callback": [ + [16, "vector"], + [80, "vector"] + ], + "bombbot-callback": [ + [16, "vector"], + [32, "quaternion"], + [48, "vector"], + [64, "vector"] + ], + "(enter explode bombbot)": [ + [112, "vector"], + [128, "vector"], + [144, "vector"], + [256, "vector"] + ], + "(trans drop-bombs bombbot)": [[32, "vector"]], + "(trans hostile bombbot)": [[32, "vector"]], + "(method 160 bombbot)": [[32, "vector"]], + "(method 197 bombbot)": [ + [80, "matrix"], + [144, "vector"], + [720, "vector"], + [736, "vector"] + ], + "(method 203 bombbot)": [ + [80, "vector"], + [176, "vector"], + [400, "vector"] + ], + "(method 204 bombbot)": [[80, "vector"]], + "(method 194 bombbot)": [ + [608, "vector"], + [592, "vector"], + [624, "vector"], + [672, "vector"], + [720, "vector"] + ], + "(method 196 bombbot)": [[16, ["array", "collide-shape", 64]]], + "(method 25 bombbot-shot)": [[32, "vector"]], + "(enter blow-wall bombbot)": [[16, ["array", "symbol", 10]]], + "check-drop-level-ctysluma-drop-userdata": [[16, "vector"]], + "check-drop-level-ctyslumb-drop-userdata": [[16, "vector"]], + "(method 36 cty-missile-lure)": [[16, "vector"]], + "(method 36 cty-hijack-manager)": [[16, "cty-hijack-missile-init-params"]], + "(enter player-riding cty-hijack-manager)": [ + [96, "cty-missile-lure-init-params"], + [144, "cty-missile-lure-init-params"] + ], + "(method 38 cty-hijack-manager)": [ + [64, "vector"], + [80, "vector"] + ], + "(code wait ctyport-attack-manager-bbush)": [[96, ["array", "symbol", 10]]], + "check-drop-level-palroof-drop-userdata": [[16, "vector"]], + "check-drop-level-ctyfarmb-drop-userdata": [[16, "vector"]], + "check-drop-level-ctyfarma-drop-userdata": [[16, "vector"]], + "(method 11 com-power-box)": [ + [16, "vector"], + [48, "vector"] + ], + "(enter active task-manager-city-destroy-grid)": [ + [224, "enemy-init-by-other-params"] + ], + "(code exit-vehicle jinx)": [ + [32, "vector"], + [64, "vector"] + ], + "(code board-vehicle jinx)": [[16, "vector"]], + "(trans move-to-vehicle jinx)": [ + [32, "vector"], + [128, "vector"] + ], + "(post moribund cty-sniper-button)": [[16, "vector"]], + "(method 11 cty-sniper-turret)": [[32, "vector"]], + "sniper-turret-post": [[112, "vector"]], + "citysniper-draw-2d-hud": [ + [16, ["inline-array", "vector4w", 4]], + [80, "vector4w"] + ], + "(enter lock cty-sniper-turret-reticle)": [[16, "vector"]], + "(enter impact cty-sniper-turret-shot)": [[16, "traffic-danger-info"]], + "(method 25 cty-sniper-turret-shot)": [[32, "vector"]], + "cty-sniper-turret-handler": [[96, "vector"]], + "king-pilot-trans": [[16, "matrix"]], + "(method 32 rubble-attack-manager)": [ + [16, "vector"], + [592, "traj3d-params"], + [672, "vector"] + ], + "(method 30 power-game)": [[32, "vector"]], + "(method 44 power-game)": [[32, "vector"]], + "spt-func-ground-spark-bounce": [[16, "vector"]], + "gun-dummy-gun-aim-jmod-func": [[16, "vector"]], + "(method 38 gun-dummy-gun)": [[16, "primary-target-pos-vel"]], + "(method 29 gungame-manager)": [[16, "primary-target-pos-vel"]], + "(method 30 gungame-manager)": [ + [16, ["inline-array", "primary-target-pos-vel", 2]] + ], + "(method 11 blow-tower-path-cursor)": [[16, "vector"]], + "(method 44 tower-flyer)": [[16, "flyer-projectile-params"]], + "(method 49 tower-flyer)": [ + [48, "collide-query"], + [16, "vector"] + ], + "(method 41 bt-barrel)": [[32, ["array", "collide-shape", 384]]], + "(method 40 bt-barrel)": [[32, ["array", "collide-shape", 384]]], + "setup-bt-barrels": [ + [32, "vector"], + [64, "vector"] + ], + "bt-barrel-ground-probe": [[16, "collide-query"]], + "(method 51 bt-mh-flyer)": [ + [16, "vector"], + [112, "vector"] + ], + "(method 40 bt-missile)": [[112, "vector"]], + "(anon-function 16 blow-tower-obs2)": [[112, "quaternion"]], + "kg-bombbot-find-nearest-nav-mesh": [[16, "nav-poly"]], + "(method 47 bt-grunt)": [[16, "vector"]], + "(method 22 bt-gun-manager)": [[16, "vector"]], + "(method 36 bt-hellcat)": [ + [16, "matrix"], + [80, "vector"], + [96, "vector"], + [112, "vector"], + [128, "vector"] + ], + "(method 43 bt-pickup)": [[16, "vector"]], + "(method 38 task-manager-blow-tower)": [[480, "vector"]], + "(method 18 bt-gun-manager)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [208, "vector"] + ], + "(method 32 bt-vehicle)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 47 tower-flyer)": [ + [32, "vector"], + [48, "vector"], + [144, "vector"] + ], + "(method 20 bt-gun-manager)": [ + [48, "vector"], + [64, "vector"], + [96, "vector"], + [144, "vector"], + [160, "vector"], + [176, "vector"], + [192, "vector"], + [800, "vector"], + [816, "vector"], + [848, "vector"], + [896, "vector"], + [912, "vector"], + [928, "vector"], + [944, "vector"], + [1552, "vector"], + [1568, "vector"], + [1600, "vector"], + [1648, "vector"], + [1664, "vector"], + [1680, "vector"], + [1696, "vector"] + ], + "(method 19 bt-gun-manager)": [ + [80, "vector"], + [32, "vector"], + [48, "vector"] + ], + "(method 31 bt-pickup)": [[128, "vector"]], + "(method 31 bt-hellcat)": [ + [176, "vector"], + [192, "vector"], + [240, "vector"], + [320, "vector"], + [336, "vector"] + ], + "(method 50 bt-hellcat)": [ + [16, "vector"], + [32, "quaternion"] + ], + "(method 47 bt-hellcat)": [ + [80, "vector"], + [32, "vector"], + [96, "matrix"] + ], + "(method 48 bt-hellcat)": [ + [32, "vector"], + [48, "vector"] + ], + "(method 29 bt-hellcat)": [[112, "quaternion"]], + "(method 21 bt-gun-manager)": [ + [320, "collide-query"], + [160, "vector"] + ], + "draw-path-blow-curve": [[16, "matrix"]], + "(method 22 trail-graph)": [[16, "trail-vis-work"]], + "(method 13 trail-graph)": [[16, ["inline-array", "vector", 3]]], + "(method 16 trail-graph)": [[16, ["inline-array", "vector", 2]]], + "(method 17 trail-graph)": [[16, "trail-conn-search"]], + "(trans explode gunship-missile)": [[32, ["array", "collide-shape", 384]]], + "(trans spinning-laser protect-gunship)": [ + [32, "vector"], + [64, "vector"] + ], + "find-reposition-pt": [ + [16, "vector"], + [96, "vector"], + [112, "vector"] + ], + "(method 50 protect-gunship)": [[16, "vector"]], + "find-nearest-nav-mesh-protect": [[16, "nav-poly"]], + "(method 37 protect-gunship)": [[752, "vector"]], + "(method 36 protect-gunship)": [[16, "gunship-missile-init-params"]], + "(method 39 protect-gunship)": [[16, "protect-gunship-enemy-spawn-params"]], + "(method 55 protect-gunship)": [[16, "collide-query"]], + "(method 21 prot-crate)": [[16, "vector"]], + "(method 36 task-manager-protect-hq)": [[16, "protect-gunship-init-params"]], + "spawn-protect-enemy": [[16, "traffic-object-spawn-params"]], + "(method 35 task-manager-protect-hq)": [[16, "traffic-object-spawn-params"]], + "(trans hostile assault-bombbot)": [[32, "vector"]], + "(enter explode assault-bombbot)": [[112, ["array", "collide-shape", 384]]], + "(code roll-initial assault-roboguard)": [[16, "vector"]], + "(method 31 assault-bombbot-shot)": [ + [16, "light-trail-tracker-spawn-params"] + ], + "(code active task-manager-city-port-assault)": [ + [16, "player-controller-init-params"] + ], + "(method 40 task-manager-city-port-assault)": [[16, ["array", "symbol", 10]]], + "(enter combat task-manager-city-port-assault)": [ + [16, "player-controller-init-params"] + ], + "(code player-entrance task-manager-city-port-assault)": [ + [16, "player-controller-init-params"] + ], + "(enter transition task-manager-city-port-assault)": [ + [16, "player-controller-init-params"] + ], + "(method 47 task-manager-city-port-assault)": [[64, "vector"]], + "(method 48 task-manager-city-port-assault)": [[64, "vector"]], + "(method 41 task-manager-city-port-assault)": [[48, "vector"]], + "(trans idle precur-generator)": [[112, "vector"]], + "(method 23 precur-generator-d)": [[16, "vector"]], + "(event idle precur-door-d)": [[16, "attack-info"]], + "(method 23 precur-door-c)": [[112, "vector"]], + "(method 11 precur-path)": [[16, "vector"]], + "precur-bomb-handler": [[16, "attack-info"]], + "(event idle precur-bomb-spawner)": [[16, "attack-info"]], + "(method 21 precur-bomb-spawner)": [[16, "vector"]], + "precur-bomb-init-by-other": [[16, "vector"]], + "(method 25 precur-laser-beam)": [[16, "collide-query"]], + "(method 24 precur-laser-beam)": [[16, "collide-query"]], + "process-drawable-shock-wave-effect": [ + [16, "matrix"], + [80, "collide-query"] + ], + "(method 22 precur-path)": [[16, "collide-query"]], + "precur-bridge-path-2nd-trigger": [[16, "vector"]], + "precur-bridge-blocks-trigger": [[16, "vector"]], + "precur-bridge-path-trigger": [[16, "vector"]], + "(post idle precur-bridge-blocks-break)": [ + [16, "vector"], + [32, "vector"] + ], + "texture-anim-layer-draw": [ + [16, "matrix"], + [80, "matrix"], + [144, "matrix"], + [208, "matrix"] + ], + "closest-pt-in-triangle": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + "vector-interp-angle!": [ + [16, "quaternion"] + ], + "vector-cap-rotation!": [ + [16, "quaternion"] + ], + "camera-teleport-to-entity": [[16, "transformq"]], + "camera-teleport-to-location": [[16, "transformq"]] +} diff --git a/decompiler/config/jakx/pal/tex-info.min.json b/decompiler/config/jakx/pal/tex-info.min.json new file mode 100644 index 00000000000..fe51488c706 --- /dev/null +++ b/decompiler/config/jakx/pal/tex-info.min.json @@ -0,0 +1 @@ +[] diff --git a/decompiler/config/jakx/pal/type_casts.jsonc b/decompiler/config/jakx/pal/type_casts.jsonc new file mode 100644 index 00000000000..d1294101989 --- /dev/null +++ b/decompiler/config/jakx/pal/type_casts.jsonc @@ -0,0 +1,11228 @@ +{ + "(method 2 array)": [ + [23, "gp", "(array int32)"], + [43, "gp", "(array uint32)"], + [63, "gp", "(array int64)"], + [83, "gp", "(array uint64)"], + [102, "gp", "(array int8)"], + [121, "gp", "(array uint8)"], + [141, "gp", "(array int16)"], + [161, "gp", "(array uint16)"], + [186, "gp", "(array uint128)"], + [204, "gp", "(array int32)"], + [223, "gp", "(array float)"], + [232, "gp", "(array float)"], + [249, "gp", "(array basic)"], + [258, "gp", "(array basic)"] + ], + "(method 3 array)": [ + [51, "gp", "(array int32)"], + [69, "gp", "(array uint32)"], + [87, "gp", "(array int64)"], + [105, "gp", "(array uint64)"], + [122, "gp", "(array int8)"], + [139, "gp", "(array int8)"], + [157, "gp", "(array int16)"], + [175, "gp", "(array uint16)"], + [198, "gp", "(array uint128)"], + [214, "gp", "(array int32)"], + [233, "gp", "(array float)"], + [250, "gp", "(array basic)"] + ], + "(method 0 cpu-thread)": [[[0, 35], "v0", "cpu-thread"]], + "(method 0 process)": [ + [11, "a0", "int"], + [[12, 52], "v0", "process"] + ], + "inspect-process-heap": [ + [[4, 11], "s5", "basic"], + [17, "s5", "pointer"] + ], + "(method 15 dead-pool)": [ + [[24, 25], "v1", "(pointer process)"], + [[30, 39], "s4", "(pointer process)"] + ], + "(method 25 dead-pool-heap)": [ + [5, "v1", "pointer"], + [13, "a0", "pointer"], + [25, "v1", "pointer"] + ], + "method-state": [[12, "a2", "state"]], + "(method 0 protect-frame)": [ + [0, "a0", "int"], + [[1, 8], "v0", "protect-frame"] + ], + "(method 9 process)": [[[58, 61], "s5", "process"]], + "(method 10 process)": [[[17, 27], "s4", "protect-frame"]], + "string-cat-to-last-char": [ + [3, "s5", "(pointer uint8)"], + [4, "s5", "string"] + ], + "enter-state": [ + [70, "s0", "protect-frame"], + [103, "t9", "(function object object object object object object none)"] + ], + "send-event-function": [[[7, 15], "a0", "process"]], + "logf": [ + [12, "f0", "float"], + [12, "f1", "float"], + [19, "f0", "float"], + [19, "f1", "float"] + ], + "log2f": [ + [12, "f0", "float"], + [12, "f1", "float"], + [19, "f0", "float"], + [19, "f1", "float"] + ], + "cube-root": [ + [17, "f0", "float"], + [17, "f1", "float"], + [18, "f0", "float"], + [18, "f1", "float"], + [[23, 32], "f0", "float"] + ], + "generate-rand-vector-on-sphere": [ + [12, "v1", "float"], + [28, "v1", "float"] + ], + "vector-segment-distance-point!": [[[21, 30], "f1", "float"]], + "vector4-array-add!": [ + [11, "s5", "(inline-array vector4)"], + [12, "s4", "(inline-array vector4)"], + [13, "gp", "(inline-array vector4)"] + ], + "vector4-array-sub!": [ + [11, "s5", "(inline-array vector4)"], + [12, "s4", "(inline-array vector4)"], + [13, "gp", "(inline-array vector4)"] + ], + "vector4-array-mul!": [ + [11, "s5", "(inline-array vector4)"], + [12, "s4", "(inline-array vector4)"], + [13, "gp", "(inline-array vector4)"] + ], + "vector4-array-scale!": [ + [11, "s5", "(inline-array vector4)"], + [12, "gp", "(inline-array vector4)"] + ], + "vector4-array-madd!": [ + [13, "s5", "(inline-array vector4)"], + [14, "s4", "(inline-array vector4)"], + [15, "gp", "(inline-array vector4)"] + ], + "vector4-array-msub!": [ + [13, "s5", "(inline-array vector4)"], + [14, "s4", "(inline-array vector4)"], + [15, "gp", "(inline-array vector4)"] + ], + "vector4-array-lerp!": [ + [13, "s5", "(inline-array vector4)"], + [14, "s4", "(inline-array vector4)"], + [15, "gp", "(inline-array vector4)"] + ], + "(method 9 clock)": [[47, "v1", "float"]], + "service-cpads": [[[207, 311], "s3", "pad-buttons"]], + "(method 3 connection-pers)": [[97, "f0", "float"]], + "(method 0 engine-pers)": [ + [32, "v1", "pointer"], + [23, "v1", "pointer"], + [26, "v1", "pointer"], + [24, "v1", "(pointer pointer)"] + ], + "(method 0 engine)": [ + [44, "v1", "pointer"], + [47, "v1", "pointer"], + [53, "v1", "connectable"], + [65, "v1", "connectable"] + ], + "(method 21 engine)": [[8, "a0", "connection"]], + "(method 20 engine)": [[8, "a0", "connection"]], + "(method 19 engine)": [[8, "a0", "connection"]], + "(method 15 engine)": [[[0, 36], "v1", "connection"]], + "(method 13 engine)": [ + [[0, 25], "s4", "connection"], + [13, "t9", "(function object object object object object)"] + ], + "(method 12 engine)": [ + [[0, 25], "s4", "connection"], + [13, "t9", "(function object object object object object)"] + ], + "(method 9 connection)": [[8, "a0", "pointer"]], + "(method 10 connection)": [[8, "a0", "pointer"]], + "(method 11 connection)": [[5, "a1", "pointer"]], + "(method 10 profile-array)": [ + [[69, 73], "a0", "(pointer uint128)"], + [[73, 82], "a1", "vector4w"], + [[82, 89], "a1", "vector4w"], + [[90, 96], "a0", "vector4w"], + [[113, 117], "a1", "(pointer uint128)"], + [[117, 126], "a2", "vector4w"], + [[126, 136], "a2", "vector4w"], + [[137, 149], "a1", "vector4w"], + [[187, 191], "t2", "(pointer int128)"], + [[191, 225], "t4", "vector4w"], + [[225, 231], "a2", "vector4w"], + [[231, 237], "a2", "vector4w"] + ], + "draw-sprite2d-xy": [ + [[35, 40], "t0", "dma-packet"], + [[45, 49], "t0", "gs-gif-tag"], + [54, "t0", "(pointer gs-prim)"], + [56, "t0", "(pointer gs-rgbaq)"], + [67, "t0", "(pointer gs-xyzf)"], + [88, "t0", "(pointer gs-xyzf)"], + [[97, 109], "v1", "(pointer uint64)"] + ], + "draw-sprite2d-xy-absolute": [ + [[6, 10], "t4", "dma-packet"], + [[16, 19], "t4", "gs-gif-tag"], + [24, "t4", "(pointer gs-prim)"], + [25, "t4", "(pointer gs-rgbaq)"], + [36, "t4", "(pointer gs-xyzf)"], + [49, "t4", "(pointer gs-xyzf)"], + [[62, 69], "v1", "(pointer uint64)"] + ], + "draw-quad2d": [ + [[18, 22], "t2", "dma-packet"], + [[28, 31], "t2", "gs-gif-tag"], + [36, "t2", "(pointer gs-prim)"], + [38, "t2", "(pointer gs-rgbaq)"], + [46, "t2", "(pointer gs-xyzf)"], + [48, "t2", "(pointer gs-rgbaq)"], + [61, "t2", "(pointer gs-xyzf)"], + [63, "t2", "(pointer gs-rgbaq)"], + [76, "t2", "(pointer gs-xyzf)"], + [78, "t2", "(pointer gs-rgbaq)"], + [96, "t2", "(pointer gs-xyzf)"], + [97, "t2", "(pointer uint64)"], + [[110, 117], "v1", "(pointer uint64)"] + ], + "dma-bucket-insert-tag": [ + [[2, 6], "v1", "dma-bucket"], + [3, "a0", "dma-bucket"] + ], + "dma-buffer-add-buckets": [ + [[1, 4], "v1", "dma-bucket"], + [5, "v1", "pointer"], + [[9, 11], "v1", "dma-bucket"], + [11, "v1", "pointer"] + ], + "dma-buffer-patch-buckets": [ + [[3, 34], "a0", "dma-bucket"], + [[34, 38], "a0", "dma-packet"] + // [34, "a0", "(inline-array dma-bucket)"] + ], + "disasm-dma-list": [ + [43, "v1", "dma-packet"], + [266, "v1", "(pointer uint64)"], + [272, "v1", "(pointer uint64)"], + [133, "v1", "(pointer uint64)"], + [152, "v1", "(pointer uint64)"], + [167, "v1", "(pointer uint64)"], + [176, "v1", "(pointer uint64)"], + [198, "v1", "(pointer uint64)"], + [207, "v1", "(pointer uint64)"], + [238, "v1", "(pointer uint64)"], + [247, "v1", "(pointer uint64)"], + [282, "v1", "(pointer uint64)"], + [291, "v1", "(pointer uint64)"], + [324, "v1", "(pointer uint64)"], + [334, "v1", "(pointer uint64)"], + [141, "v1", "int"], + [25, "v1", "dma-tag"] + ], + "(method 3 connection-minimap)": [[97, "f0", "float"]], + "dma-buffer-add-ref-texture": [ + [[47, 54], "a3", "dma-packet"], + [[56, 69], "a3", "gs-gif-tag"], + [[71, 87], "a2", "dma-packet"] + ], + "texture-page-default-allocate": [[51, "a3", "(pointer int32)"]], + "texture-page-font-allocate": [[33, "a3", "(pointer int32)"]], + "upload-vram-pages": [[[187, 193], "v1", "dma-packet"]], + "upload-vram-pages-pris": [[[181, 187], "v1", "dma-packet"]], + "(method 13 texture-page)": [[45, "a0", "(pointer uint64)"]], + "(method 11 texture-pool)": [[217, "a0", "(pointer uint64)"]], + "texture-page-login": [[34, "v0", "texture-page"]], + "(method 9 texture-page-dir)": [ + [[36, 40], "t1", "adgif-shader"], + [[31, 41], "t2", "(pointer shader-ptr)"], + [37, "t0", "(pointer int32)"] + ], + "texture-page-dir-inspect": [[[137, 138], "v1", "adgif-shader"]], + "(method 24 texture-pool)": [ + [[77, 100], "a1", "adgif-shader"] + // [[70, 93], "a1", "adgif-shader"], + // [92, "a1", "adgif-shader"] + ], + "(method 8 res-lump)": [ + [258, "s0", "array"], + [[157, 239], "s0", "(array object)"] + ], + "(method 15 res-lump)": [[132, "s5", "res-tag-pair"]], + "(method 17 res-lump)": [[22, "s4", "(pointer pointer)"]], + "(method 19 res-lump)": [ + [38, "t2", "int"], + [38, "a2", "int"] + ], + "(method 20 res-lump)": [[341, "t0", "(pointer uint128)"]], + "(method 16 res-lump)": [ + [22, "t1", "(pointer uint64)"], + [29, "t2", "(pointer uint64)"] + ], + "(method 18 res-lump)": [["_stack_", 16, "object"]], + "(method 21 res-lump)": [ + ["_stack_", 16, "res-tag"], + ["_stack_", 32, "res-tag"] + ], + "(method 0 fact-info-target)": [[3, "v0", "fact-info-target"]], + "(method 0 fact-info-crate)": [[3, "v0", "fact-info-crate"]], + "(method 0 fact-info-enemy)": [ + [7, "v0", "fact-info-enemy"], + ["_stack_", 16, "res-tag"], + ["_stack_", 32, "res-tag"] + ], + "(method 0 fact-info)": [ + [87, "v1", "(pointer int32)"], + [11, "v1", "res-lump"] + ], + "(method 0 collide-shape-moving)": [[[5, 12], "v0", "collide-shape-moving"]], + "(method 0 collide-shape-prim-group)": [ + [[6, 12], "v0", "collide-shape-prim-group"] + ], + "(method 0 collide-shape-prim-sphere)": [ + [[5, 8], "v0", "collide-shape-prim-sphere"] + ], + "(method 0 collide-shape-prim-mesh)": [ + [[6, 11], "v0", "collide-shape-prim-mesh"] + ], + "(method 0 touching-list)": [[[6, 8], "v0", "touching-list"]], + "(method 11 touching-prims-entry-pool)": [ + [[0, 8], "v1", "touching-prims-entry"], + [8, "v1", "pointer"], + [[9, 11], "v1", "touching-prims-entry"], + [[1, 20], "a1", "touching-prims-entry"] + ], + "(method 0 prim-strip)": [[[101, 121], "a0", "vector"]], + "(method 0 script-context)": [[[8, 17], "v0", "script-context"]], + "joint-mod-spinner-callback": [[[2, 63], "gp", "joint-mod-spinner"]], + "joint-mod-rotate-local-callback": [ + [[2, 16], "v1", "joint-mod-rotate-local"] + ], + "joint-mod-rotate-world-callback": [ + [[0, 24], "s3", "joint-mod-rotate-world"] + ], + "num-func-chan": [[7, "v1", "joint-control-channel"]], + "joint-channel-float-delete!": [ + [7, "a0", "pointer"], + [7, "a1", "pointer"] + ], + "(method 21 process-focusable)": [ + [15, "gp", "collide-shape-moving"], + [35, "gp", "collide-shape-moving"] + ], + "joint-mod-set-local-callback": [[[1, 24], "v1", "joint-mod-set-local"]], + "joint-mod-add-local-callback": [[[1, 37], "s4", "joint-mod-add-local"]], + "joint-mod-set-world-callback": [[[1, 4], "v1", "joint-mod-set-local"]], + "joint-mod-set-world-no-trans-callback": [ + [[1, 25], "s4", "joint-mod-set-world-no-trans"] + ], + "joint-mod-blend-local-callback": [[[1, 28], "gp", "joint-mod-blend-local"]], + "joint-mod-blend-world-callback": [[[1, 150], "gp", "joint-mod-blend-world"]], + "(top-level-login eye-h)": [[77, "a3", "eye-control"]], + "entity-actor-lookup": [["_stack_", 16, "res-tag"]], + "entity-actor-count": [["_stack_", 16, "res-tag"]], + "(method 3 collide-query)": [ + [116, "f0", "float"], + [137, "f0", "float"] + ], + "shrubbery-login-post-texture": [ + [[13, 15], "a3", "qword"], + [16, "a3", "pointer"], + [24, "a3", "pointer"], + [[17, 23], "a3", "qword"], + [[13, 23], "a1", "qword"], + [14, "a2", "qword"], + [[27, 29], "a3", "qword"], + [[27, 29], "a1", "qword"], + [[35, 37], "a3", "qword"], + [[35, 37], "a2", "qword"] + ], + "(method 3 sparticle-cpuinfo)": [[110, "f0", "float"]], + "(method 0 path-control)": [["_stack_", 16, "res-tag"]], + "str-load": [[[18, 44], "s2", "load-chunk-msg"]], + "str-load-status": [ + [[18, 22], "v1", "load-chunk-msg"], + [26, "v1", "load-chunk-msg"] + ], + "str-play-async": [[[7, 40], "s2", "play-chunk-msg"]], + "str-play-stop": [[[7, 36], "s4", "play-chunk-msg"]], + "str-play-queue": [[[7, 98], "s4", "play-chunk-msg"]], + "str-ambient-play": [[[7, 20], "s5", "play-chunk-msg"]], + "str-ambient-stop": [[[7, 20], "s5", "play-chunk-msg"]], + "dgo-load-begin": [[[19, 43], "s1", "load-dgo-msg"]], + "dgo-load-get-next": [[[14, 31], "v1", "load-dgo-msg"]], + "dgo-load-continue": [[[5, 23], "gp", "load-dgo-msg"]], + "dgo-load-cancel": [[[3, 8], "v0", "sound-rpc-cancel-dgo"]], + "dgo-load-link": [ + [7, "s4", "uint"], + [17, "s4", "uint"], + [55, "s4", "uint"], + [27, "s4", "uint"], + [37, "s4", "uint"], + [60, "s4", "pointer"] + ], + "ramdisk-load": [[[7, 12], "v1", "ramdisk-rpc-load"]], + "sound-buffer-dump": [[[13, 39], "s3", "sound-rpc-play"]], + "(method 10 engine-sound-pers)": [[[2, 17], "v1", "sound-rpc-set-param"]], + "check-irx-version": [[[3, 51], "gp", "sound-rpc-get-irx-version"]], + "sound-bank-iop-store": [[[7, 11], "v1", "sound-rpc-bank-cmd"]], + "sound-bank-iop-free": [[[7, 12], "v1", "sound-rpc-bank-cmd"]], + "sound-bank-load": [[[11, 16], "v1", "sound-rpc-load-bank"]], + "sound-bank-load-from-iop": [[[7, 12], "v1", "sound-rpc-load-bank"]], + "sound-bank-load-from-ee": [[[8, 14], "v1", "sound-rpc-load-bank"]], + "sound-bank-unload": [[[6, 11], "v1", "sound-rpc-unload-bank"]], + "sound-music-load": [[[6, 11], "v1", "sound-rpc-load-music"]], + "sound-music-unload": [[[3, 8], "v1", "sound-rpc-unload-music"]], + "set-language": [[[6, 9], "v1", "sound-rpc-set-language"]], + "sound-set-stereo-mode": [[[4, 9], "v1", "sound-rpc-set-stereo-mode"]], + "list-sounds": [[[3, 7], "v1", "sound-rpc-list-sounds"]], + "string->sound-name": [[[2, 18], "a1", "(pointer uint8)"]], + "sound-set-volume": [[[3, 16], "v1", "sound-rpc-set-master-volume"]], + "sound-set-reverb": [[[5, 25], "v1", "sound-rpc-set-reverb"]], + "sound-set-ear-trans": [[[7, 45], "gp", "sound-rpc-set-ear-trans"]], + "sound-name->string": [[2, "a1", "(pointer sound-name)"]], + "sound-play-by-name": [ + [[12, 45], "s5", "sound-rpc-play"], + [[22, 39], "s3", "process-drawable"] + ], + "sound-play-by-spec": [ + [[4, 54], "s5", "sound-rpc-play"], + [[31, 47], "s3", "process-drawable"] + ], + "sound-pause": [[[3, 8], "v1", "sound-rpc-pause-sound"]], + "sound-stop": [[[3, 8], "v1", "sound-rpc-stop-sound"]], + "sound-continue": [[[3, 8], "v1", "sound-rpc-continue-sound"]], + "sound-group-pause": [[[3, 7], "v1", "sound-rpc-pause-group"]], + "sound-group-stop": [[[3, 7], "v1", "sound-rpc-stop-group"]], + "sound-group-continue": [[[3, 7], "v1", "sound-rpc-continue-group"]], + "sound-set-flava": [[[3, 10], "v1", "sound-rpc-set-flava"]], + "sound-set-midi-reg": [[[3, 10], "v1", "sound-rpc-set-midi-reg"]], + "sound-set-fps": [[[3, 10], "v1", "sound-rpc-set-fps"]], + "(method 0 ambient-sound)": [ + ["_stack_", 16, "sound-spec"], + ["_stack_", 32, "int32"], + ["_stack_", 48, "vector"], + [87, "v1", "sound-spec"] + ], + "ear-trans": [[32, "s5", "process-focusable"]], + "loader-test-command": [[[5, 10], "v1", "sound-rpc-test-cmd"]], + "update-light-hash": [ + [[234, 239], "a1", "light-hash-bucket"], + [[207, 211], "a0", "light-hash-bucket"] + ], + "desaturate-mood-colors": [[[20, 90], "a0", "(inline-array mood-color)"]], + "(method 9 cloth-on-skeleton)": [ + [58, "a0", "process-focusable"], + [80, "s5", "process-focusable"], + [84, "s5", "process-focusable"], + [95, "s5", "process-focusable"], + [98, "s5", "process-focusable"], + [123, "s5", "process-focusable"] + ], + "(method 13 cloth-system)": [ + [143, "a1", "vector"], + [144, "a3", "vector"], + [147, "a1", "vector"], + [148, "a1", "vector"] + ], + "(method 37 cloth-system)": [ + [27, "s3", "pair"], + [32, "s3", "pair"], + [33, "s3", "pair"], + [69, "v1", "pair"] + ], + "(method 11 cloth-on-skeleton)": [[17, "a1", "process-drawable"]], + "(method 25 cloth-on-skeleton)": [ + [22, "v1", "process-drawable"], + [25, "v1", "process-focusable"] + ], + "(method 16 cloth-system)": [[21, "v1", "int"]], + "(method 33 cloth-on-skeleton)": [[11, "v1", "process-focusable"]], + "(method 18 cloth-on-skeleton)": [[15, "a1", "process-focusable"]], + "(method 35 cloth-on-skeleton)": [ + [27, "s5", "process-focusable"], + [113, "s5", "process-focusable"], + [193, "s5", "process-focusable"], + [217, "s5", "process-focusable"] + ], + "(method 14 cloth-on-skeleton)": [ + [18, "s4", "process-focusable"], + [39, "s4", "process-focusable"], + [35, "s4", "process-focusable"] + ], + "(method 36 cloth-on-skeleton)": [ + [18, "s4", "process-focusable"], + [35, "s4", "process-focusable"], + [39, "s4", "process-focusable"] + ], + "(method 23 cloth-system)": [ + [120, "f1", "float"], + ["_stack_", 152, "float"], + ["_stack_", 156, "float"], + ["_stack_", 164, "float"], + ["_stack_", 168, "float"], + ["_stack_", 212, "float"] + ], + "(method 22 cloth-system)": [ + ["_stack_", 104, "float"], + ["_stack_", 108, "float"], + ["_stack_", 116, "float"], + ["_stack_", 120, "float"], + ["_stack_", 160, "float"], + ["_stack_", 164, "float"] + ], + "(method 10 cloth-on-skeleton)": [ + [30, "s4", "process-focusable"], + [153, "s4", "process-focusable"], + [160, "v0", "joint"], + [122, "s4", "process-focusable"], + [129, "v0", "joint"], + [92, "s4", "process-focusable"], + [99, "v0", "joint"] + ], + "emerc-vu1-init-buffer": [[[82, 84], "v1", "dma-packet"]], + "emerc-vu1-initialize-chain": [ + [[19, 59], "s5", "emerc-vu1-low-mem"], + [80, "gp", "(inline-array dma-packet)"], + [[12, 18], "gp", "(pointer vif-tag)"] + ], + "merc-edge-stats": [[31, "v1", "merc-ctrl"]], + "(method 8 merc-ctrl)": [ + [46, "s2", "pointer"], // was merc-fragment-control + [[22, 45], "s2", "merc-fragment-control"], + [[89, 93], "a1", "merc-blend-ctrl"], + [103, "a1", "pointer"] + ], + "merc-vu1-initialize-chain": [ + [[13, 19], "gp", "(pointer vif-tag)"], + [[19, 116], "s5", "merc-vu1-low-mem"], + [127, "gp", "(inline-array dma-packet)"] + ], + "(method 9 merc-fragment)": [[[13, 265], "s1", "adgif-shader"]], + "(method 9 merc-effect)": [ + [38, "v1", "merc-eye-ctrl"], + [63, "s4", "pointer"], + [64, "s5", "pointer"] + ], + "merc-vu1-init-buffer": [[[90, 92], "v1", "dma-packet"]], + "texture-usage-init": [[27, "a1", "vector"]], + "(method 9 art)": [[9, "v1", "pointer"]], + "(code pov-camera-start-playing pov-camera)": [[24, "v0", "joint"]], + "(method 9 art-mesh-geo)": [ + [20, "s4", "(pointer int16)"], + [[14, 19], "a0", "drawable"], + [10, "v1", "(pointer art)"], + [14, "v1", "(pointer art)"] + ], + "(method 9 art-joint-anim)": [[9, "v1", "pointer"]], + "joint-control-copy!": [ + [8, "a0", "uint"], + [8, "v1", "uint"] + ], + "joint-control-remap!": [ + [127, "t9", "(function joint-control joint-control-channel int object)"], + [181, "t9", "(function joint-control joint-control-channel int object)"], + ["_stack_", 60, "basic"] + ], + "flatten-joint-control-to-spr": [ + [[201, 203], "a1", "terrain-context"], + [[131, 133], "a0", "terrain-context"], + [[182, 184], "a1", "terrain-context"], + [[164, 166], "a0", "terrain-context"], + [195, "v1", "terrain-context"], + [65, "a3", "(pointer float)"], + [67, "a3", "(pointer float)"], + [[18, 47], "a2", "(inline-array vector)"], + [47, "a2", "pointer"], + [[48, 118], "a2", "(inline-array vector)"], + [118, "a2", "pointer"], + [24, "a3", "(pointer float)"], + [17, "a2", "int"] + ], + "(method 12 art-joint-anim-manager)": [ + [15, "a0", "pointer"], + [15, "v1", "pointer"], + [21, "a0", "pointer"], + [21, "v1", "pointer"] + ], + "(method 11 art-joint-anim-manager)": [ + [54, "v1", "uint"], + [54, "s2", "uint"], + [60, "s2", "uint"], + [66, "s2", "uint"], + [72, "s2", "uint"], + [88, "a1", "uint"], + [95, "a2", "uint"] + ], + "(method 2 art-joint-anim-manager-slot)": [ + [21, "s2", "uint"], + [21, "v1", "uint"] + ], + "create-interpolated2-joint-animation-frame": [ + [[48, 125], "v1", "joint-anim-frame"], + [[62, 67], "t2", "(inline-array vector)"], + [[67, 71], "a2", "(inline-array vector)"] + ], + "joint-mod-ik-callback": [ + [6, "gp", "joint-mod-ik"], + [9, "gp", "joint-mod-ik"], + [[1, 35], "gp", "joint-mod-ik"], + [[1, 422], "gp", "joint-mod-ik"] + ], + "real-joint-mod-gun-look-at-handler": [ + [1, "v1", "joint-mod"], + [2, "v1", "joint-mod"] + ], + "joint-mod-foot-rot-handler": [ + [[0, 7], "s5", "joint-mod"], + [[35, 152], "s5", "joint-mod"] + ], + "(method 11 joint-mod)": [ + [[0, 27], "s1", "process-drawable"], + [[19, 62], "s2", "fact-info-enemy"] + ], + "joint-mod-look-at-handler": [ + [[2, 406], "gp", "joint-mod"], + [409, "a3", "float"] + ], + "joint-mod-world-look-at-handler": [ + [[0, 217], "gp", "joint-mod"], + [220, "a3", "float"] + ], + "joint-mod-rotate-handler": [[[2, 114], "s5", "joint-mod"]], + "joint-mod-scale-handler": [[[1, 14], "s5", "joint-mod"]], + "joint-mod-joint-set-handler": [[[2, 23], "s4", "joint-mod"]], + "joint-mod-joint-set-world-handler": [[[6, 197], "s5", "joint-mod"]], + "joint-mod-joint-set*-handler": [[[2, 39], "s5", "joint-mod"]], + "joint-mod-joint-set*-world-handler": [[[4, 53], "s5", "joint-mod"]], + "joint-mod-polar-look-at-callback": [ + [[0, 363], "s5", "joint-mod-polar-look-at"] + ], + "(method 10 bsp-header)": [ + [27, "a1", "terrain-context"], + [31, "a0", "terrain-context"] + ], + "bsp-camera-asm": [ + [26, "v1", "pointer"], + [[26, 63], "t1", "bsp-node"], + [43, "t3", "uint"] + ], + "level-remap-texture": [ + [15, "t0", "(pointer uint32)"], + [21, "t0", "(pointer uint32)"], + [19, "t0", "(pointer uint64)"], + [12, "v1", "int"], + [12, "a3", "int"] + ], + "build-masks": [ + [[18, 22], "a1", "drawable-tree-tfrag"], + [24, "a2", "drawable-inline-array-tfrag"], + [[27, 31], "a2", "(inline-array tfragment)"], + [[38, 42], "a1", "drawable-tree-tfrag-trans"], + [44, "a2", "drawable-inline-array-tfrag"], + [[47, 51], "a2", "(inline-array tfragment)"], + [[58, 62], "a1", "drawable-tree-tfrag-water"], + [64, "a2", "drawable-inline-array-tfrag"], + [[67, 71], "a2", "(inline-array tfragment)"], + [[78, 79], "a1", "drawable-tree-instance-tie"], + [123, "a1", "drawable-tree-instance-shrub"], + [[129, 133], "a2", "(inline-array prototype-bucket-shrub)"] + ], + "drawable-load": [[16, "v0", "drawable"]], + "art-load": [[7, "v0", "art"]], + "art-group-load-check": [[21, "v0", "art-group"]], + "(method 9 external-art-control)": [ + [[170, 191], "s4", "external-art-buffer"] + ], + "(method 11 external-art-control)": [[19, "s5", "process-drawable"]], + "(method 15 gui-control)": [ + [13, "s1", "gui-connection"], + [36, "s1", "gui-connection"], + [43, "s1", "gui-connection"], + [8, "s1", "gui-connection"] + ], + "(method 14 gui-control)": [[[7, 41], "s2", "gui-connection"]], + "(method 13 gui-control)": [ + [64, "s3", "gui-connection"], + [71, "s3", "gui-connection"] + ], + "(method 17 gui-control)": [ + [[45, 262], "gp", "gui-connection"], + [13, "v1", "gui-connection"] + ], + "(method 16 gui-control)": [[[19, 118], "s1", "gui-connection"]], + "(method 9 gui-control)": [ + [131, "v1", "gui-connection"], + [17, "v1", "gui-connection"], + [24, "v1", "gui-connection"], + [[115, 125], "v1", "gui-connection"], + [129, "v1", "gui-connection"], + [127, "a0", "gui-connection"] + ], + "(method 10 gui-control)": [[[9, 32], "s3", "gui-connection"]], + "(method 12 gui-control)": [ + [128, "v1", "gui-connection"], + [177, "v1", "process-drawable"], + [214, "v1", "gui-connection"] + ], + "(method 22 gui-control)": [[54, "v1", "process-drawable"]], + "(method 21 gui-control)": [ + [28, "v1", "process-drawable"], + [31, "v1", "process-drawable"], + [45, "s4", "process-drawable"], + [48, "s4", "process-drawable"], + [5, "v0", "sound-rpc-set-param"] + ], + "(method 23 gui-control)": [[285, "v0", "sound-rpc-set-param"]], + "(method 10 continue-point)": [[24, "a1", "level-buffer-state-small"]], + "print-continues": [ + [2, "gp", "pair"], + [3, "v1", "symbol"], + [4, "v1", "level-load-info"], + [[7, 14], "v1", "continue-point"] + ], + "(method 10 fact-info-target)": [[74, "v1", "target"]], + "(method 34 game-info)": [[[22, 208], "f0", "float"]], + "(method 19 game-info)": [ + [[5, 29], "s5", "pair"], + [8, "v1", "symbol"], + [9, "v1", "level-load-info"], + [[11, 18], "s3", "continue-point"], + [[11, 24], "s4", "pair"] + ], + "(method 9 game-info)": [ + [ + 617, + "s0", + "(function cpu-thread function symbol symbol continue-point game-save resetter-spec none)" + ] + ], + "(method 9 lod-set)": [["_stack_", 16, "res-tag"]], + "execute-math-engine": [ + [18, "v1", "process-drawable"], + [21, "v1", "process-drawable"], + [22, "v1", "process-drawable"] + ], + "execute-cloth-engine": [ + [30, "s3", "process-drawable"], + [21, "s3", "process-drawable"] + ], + "ja-post": [ + [43, "a0", "collide-shape"], + [45, "a0", "collide-shape"] + ], + "transform-and-sleep": [ + [10, "a0", "collide-shape"], + [12, "a0", "collide-shape"] + ], + "transform-and-sleep-code": [ + [10, "a0", "collide-shape"], + [12, "a0", "collide-shape"] + ], + "transform-post": [ + [3, "a0", "collide-shape"], + [5, "a0", "collide-shape"] + ], + "rider-trans": [ + [1, "a0", "collide-shape"], + [3, "a0", "collide-shape"] + ], + "rider-post": [ + [4, "a0", "collide-shape"], + [9, "a0", "collide-shape"], + [13, "gp", "collide-shape"], + [15, "gp", "collide-shape"], + [3, "gp", "collide-shape"], + [8, "gp", "collide-shape"] + ], + "pusher-post": [ + [3, "gp", "collide-shape"], + [8, "gp", "collide-shape"], + [10, "gp", "collide-shape"] + ], + "(method 14 process-drawable)": [ + [124, "s4", "collide-shape"], + [111, "v1", "vector"], + [126, "s4", "collide-shape"] + ], + "(method 9 level-load-info)": [ + [3, "a2", "pair"], + [5, "a2", "pair"], + [7, "t0", "symbol"], + [9, "t0", "symbol"], + [25, "v1", "pair"], + [24, "v1", "pair"] + ], + "skeleton-group->draw-control": [ + [283, "v1", "process-drawable"], + [286, "v1", "process-drawable"], + [289, "v1", "process-drawable"], + [292, "v1", "process-drawable"] + ], + "(enter process-drawable-art-error)": [ + [32, "v1", "collide-shape"], + [30, "gp", "collide-shape"] + ], + "(method 10 process-drawable)": [ + [32, "a0", "collide-shape"], + [50, "t0", "int"] + ], + "(method 17 process-drawable)": [[7, "v1", "collide-shape"]], + "(method 18 process-drawable)": [[1, "v1", "pointer"]], + "ja-linear-vel": [["_stack_", 16, "res-tag"]], + "joint-control-reset!": [ + [3, "a1", "int"], + [7, "a1", "int"], + [5, "a0", "int"], + [[11, 34], "v1", "joint-control-channel"] + ], + "ja-channel-push!": [ + [35, "v1", "int"], + [35, "a0", "int"] + ], + "ja-blend-eval": [[[3, 26], "s5", "joint-control-channel"]], + "cspace-inspect-tree": [[[27, 85], "s2", "cspace"]], + "(method 9 joint-control)": [ + [[15, 68], "s3", "joint-control-channel"], + [[13, 70], "s5", "(pointer float)"] + ], + "(method 10 top-anim-joint-control)": [ + [5, "a0", "process-drawable"], + [162, "s2", "art-joint-anim"] + ], + "(method 32 game-info)": [[45, "v1", "game-task-node-info"]], + "(method 11 game-save)": [ + [[85, 272], "s4", "(inline-array game-save-tag)"], + [272, "s4", "pointer"] + ], + "auto-save-post": [ + [228, "v1", "dma-packet"], + [229, "v1", "dma-packet"], + [230, "v1", "dma-packet"] + ], + "(method 23 game-info)": [ + [915, "s4", "pointer"], + [527, "a1", "pointer"], + [133, "v1", "pointer"], + [[190, 912], "s4", "game-save-tag"], + [[4, 133], "v1", "(inline-array game-save-tag)"], + [780, "v1", "pointer"] + ], + "(method 22 game-info)": [ + [235, "s1", "int"], + [1336, "a0", "pointer"], + [64, "v1", "connection"], + [66, "v0", "resetter-spec"], + [383, "s2", "game-save-tag"], + [1131, "s5", "game-save-tag"], + [[237, 244], "a0", "(inline-array game-save-tag)"], + [[255, 260], "a0", "(inline-array game-save-tag)"], + [[271, 276], "a0", "(inline-array game-save-tag)"], + [[287, 292], "a0", "(inline-array game-save-tag)"], + [[303, 308], "a0", "(inline-array game-save-tag)"], + [[319, 324], "a0", "(inline-array game-save-tag)"], + [[335, 340], "a0", "(inline-array game-save-tag)"], + [[351, 356], "a0", "(inline-array game-save-tag)"], + [[368, 378], "s1", "(inline-array game-save-tag)"], + [[391, 396], "a0", "(inline-array game-save-tag)"], + [[398, 403], "a0", "(inline-array game-save-tag)"], + [[237, 244], "a0", "(inline-array game-save-tag)"], + [[405, 410], "a0", "(inline-array game-save-tag)"], + [[412, 417], "a0", "(inline-array game-save-tag)"], + [[419, 424], "a0", "(inline-array game-save-tag)"], + [[426, 431], "a0", "(inline-array game-save-tag)"], + [[434, 438], "a0", "(inline-array game-save-tag)"], + [[441, 445], "a0", "(inline-array game-save-tag)"], + [[448, 452], "a0", "(inline-array game-save-tag)"], + [[455, 459], "a0", "(inline-array game-save-tag)"], + [[462, 466], "a0", "(inline-array game-save-tag)"], + [[469, 473], "a0", "(inline-array game-save-tag)"], + [[476, 480], "a0", "(inline-array game-save-tag)"], + [[483, 487], "a0", "(inline-array game-save-tag)"], + [[490, 494], "a0", "(inline-array game-save-tag)"], + [[497, 501], "a0", "(inline-array game-save-tag)"], + [[504, 508], "a0", "(inline-array game-save-tag)"], + [[511, 515], "a0", "(inline-array game-save-tag)"], + [[518, 522], "a0", "(inline-array game-save-tag)"], + [[525, 529], "a0", "(inline-array game-save-tag)"], + [[532, 536], "a0", "(inline-array game-save-tag)"], + [[539, 543], "a0", "(inline-array game-save-tag)"], + [[546, 550], "a0", "(inline-array game-save-tag)"], + [[553, 557], "a0", "(inline-array game-save-tag)"], + [[560, 565], "a0", "(inline-array game-save-tag)"], + [573, "a1", "(pointer float)"], + [[581, 585], "a0", "(inline-array game-save-tag)"], + [[588, 592], "a0", "(inline-array game-save-tag)"], + [[595, 599], "a0", "(inline-array game-save-tag)"], + [[602, 606], "a0", "(inline-array game-save-tag)"], + [[609, 613], "a0", "(inline-array game-save-tag)"], + [[616, 620], "a0", "(inline-array game-save-tag)"], + [[623, 628], "a0", "(inline-array game-save-tag)"], + [637, "a1", "(pointer float)"], + [645, "a1", "(pointer float)"], + [[653, 658], "a0", "(inline-array game-save-tag)"], + [664, "a2", "(pointer uint8)"], + [772, "a3", "(pointer uint16)"], + [800, "a2", "(pointer float)"], + [897, "a2", "(pointer time-frame)"], + [919, "a2", "(pointer time-frame)"], + [941, "a2", "(pointer time-frame)"], + [963, "a2", "(pointer time-frame)"], + [987, "a3", "(pointer uint16)"], + [1013, "a3", "(pointer uint16)"], + [1039, "a3", "(pointer uint16)"], + [1065, "a3", "(pointer time-frame)"], + [1098, "a3", "(pointer uint8)"], + [[674, 678], "a0", "(inline-array game-save-tag)"], + [[699, 703], "v1", "(inline-array game-save-tag)"], + [[729, 734], "a0", "(inline-array game-save-tag)"], + [[759, 764], "a1", "(inline-array game-save-tag)"], + [[787, 791], "a1", "(inline-array game-save-tag)"], + [[813, 817], "a0", "(inline-array game-save-tag)"], + [[820, 824], "a0", "(inline-array game-save-tag)"], + [[827, 831], "a0", "(inline-array game-save-tag)"], + [[834, 838], "a0", "(inline-array game-save-tag)"], + [[841, 845], "a0", "(inline-array game-save-tag)"], + [[848, 852], "a0", "(inline-array game-save-tag)"], + [[855, 859], "a0", "(inline-array game-save-tag)"], + [[862, 866], "a0", "(inline-array game-save-tag)"], + [[869, 873], "a0", "(inline-array game-save-tag)"], + [[876, 880], "a0", "(inline-array game-save-tag)"], + [[883, 888], "a0", "(inline-array game-save-tag)"], + [[905, 910], "a0", "(inline-array game-save-tag)"], + [[927, 932], "a0", "(inline-array game-save-tag)"], + [[949, 954], "a0", "(inline-array game-save-tag)"], + [[973, 977], "a1", "(inline-array game-save-tag)"], + [[999, 1003], "a1", "(inline-array game-save-tag)"], + [[1025, 1029], "a1", "(inline-array game-save-tag)"], + [[1051, 1055], "a1", "(inline-array game-save-tag)"], + [[1080, 1084], "a1", "(inline-array game-save-tag)"], + [[1116, 1126], "s3", "(inline-array game-save-tag)"], + [[1139, 1144], "a0", "(inline-array game-save-tag)"], + [[1147, 1152], "a0", "(inline-array game-save-tag)"], + [[1155, 1160], "a0", "(inline-array game-save-tag)"], + [[1163, 1168], "a0", "(inline-array game-save-tag)"], + [[1171, 1176], "a0", "(inline-array game-save-tag)"], + [[1179, 1184], "a0", "(inline-array game-save-tag)"], + [[1187, 1192], "a0", "(inline-array game-save-tag)"], + [[1195, 1202], "a0", "(inline-array game-save-tag)"], + [[1205, 1212], "a0", "(inline-array game-save-tag)"], + [[1215, 1220], "a0", "(inline-array game-save-tag)"], + [[1223, 1228], "a0", "(inline-array game-save-tag)"], + [[1231, 1240], "a0", "(inline-array game-save-tag)"], + [[1243, 1252], "a0", "(inline-array game-save-tag)"], + [[1255, 1264], "a0", "(inline-array game-save-tag)"], + [[1267, 1276], "a0", "(inline-array game-save-tag)"], + [[1279, 1288], "a0", "(inline-array game-save-tag)"], + [[1291, 1300], "a0", "(inline-array game-save-tag)"], + [[1303, 1317], "a0", "(inline-array game-save-tag)"], + [[1320, 1334], "a0", "(inline-array game-save-tag)"] + ], + "generic-vu1-init-buf-special": [ + [53, "v1", "dma-packet"], + [54, "v1", "dma-packet"], + [55, "v1", "dma-packet"] + ], + "generic-vu1-init-buf": [[[48, 51], "v1", "dma-packet"]], + "generic-init-buf": [ + [[66, 69], "a0", "dma-packet"], + [[75, 83], "v1", "(pointer uint32)"] + ], + "generic-add-constants": [ + [10, "a0", "dma-packet"], + [15, "a0", "dma-packet"], + [8, "a0", "dma-packet"] + ], + "generic-add-shrub-constants": [ + [28, "t0", "dma-packet"], + [30, "t0", "dma-packet"], + [35, "t0", "dma-packet"] + ], + "(method 9 user-setting-data)": [ + [[76, 80], "v1", "connection"], + [[22, 66], "s3", "connection"] + ], + /**"(method 10 user-setting-data)": [ + [[184, 190], "v1", "(array uint8)"], + [499, "v1", "handle"], + [521, "v1", "handle"], + [543, "v1", "handle"], + [565, "v1", "handle"], + [511, "v1", "handle"], + [533, "v1", "handle"], + [555, "v1", "handle"], + [577, "v1", "handle"], + [578, "v1", "handle"], + [497, "a2", "(pointer process)"], + [519, "a2", "(pointer process)"], + [541, "a2", "(pointer process)"], + [563, "a2", "(pointer process)"], + [1206, "t0", "int"], + [1270, "t0", "int"], + [1252, "t0", "int"], + [1224, "t0", "int"] + ],**/ + "(method 10 user-setting-data)": [ + [[186, 199], "v1", "(array uint8)"], + [498, "v1", "handle"] + ], + "(method 9 cam-setting-data)": [ + [[76, 80], "v1", "connection"], + [[22, 66], "s3", "connection"] + ], + "(method 10 cam-setting-data)": [ + [33, "v1", "handle"], + [36, "v1", "handle"], + [432, "a3", "vector"], + [441, "a3", "vector"], + [450, "a3", "vector"], + [461, "a3", "vector"], + [471, "v1", "handle"], + [474, "v1", "handle"], + [492, "v1", "handle"], + [495, "v1", "handle"], + [32, "a0", "handle"], + [470, "a0", "handle"], + [483, "a0", "handle"], + [484, "a0", "handle"], + [491, "a0", "handle"], + [503, "a0", "handle"], + [44, "a0", "handle"], + [53, "a3", "vector"] + ], + "(exit active talker)": [[38, "v1", "process-drawable"]], + "talker-spawn-func": [ + [76, "a0", "talker"], + [79, "v1", "talker"], + [82, "v1", "talker"] + ], + "(method 11 speech-channel)": [ + [70, "v1", "process-drawable"], + [250, "s4", "process-drawable"], + [264, "s4", "process-drawable"], + [267, "s4", "process-drawable"], + [232, "v0", "sound-rpc-set-param"] + ], + "(method 17 speech-control)": [[5, "v1", "speech-type-info"]], + "(method 18 drawable-region-face)": [ + [58, "v1", "(inline-array vector)"], + [60, "v1", "(inline-array vector)"], + [62, "v1", "(inline-array vector)"], + [70, "v1", "(inline-array vector)"], + [72, "v1", "(inline-array vector)"], + [74, "v1", "(inline-array vector)"], + [83, "v1", "(inline-array vector)"], + ["_stack_", 56, "(inline-array vector)"] + ], + "region-tree-execute": [ + [114, "v1", "region-prim-area"], + [107, "v1", "region-prim-area"], + [97, "v1", "region-prim-area"], + [159, "v1", "region-prim-area"], + [204, "v1", "region-prim-area"], + [210, "v1", "region-prim-area"], + [221, "v1", "region-prim-area"], + [165, "v1", "region-prim-area"], + [169, "v1", "region-prim-area"], + [175, "a0", "region-prim-area"], + [191, "v1", "region-prim-area"], + [120, "v1", "region-prim-area"], + [124, "v1", "region-prim-area"], + [146, "v1", "region-prim-area"], + [129, "a1", "region-prim-area"], + [103, "v1", "region-prim-area"], + [[19, 29], "v1", "region-prim-area"], + [39, "a0", "region-prim-area"], + [45, "a0", "region-prim-area"], + [51, "a0", "region-prim-area"], + [32, "a0", "region-prim-area"] + ], + "(method 16 drawable-inline-array-region-prim)": [ + [[1, 7], "v1", "drawable-region-prim"] + ], + "clone-anim-once": [ + [22, "gp", "process-drawable"], + [31, "gp", "process-drawable"], + [50, "gp", "process-drawable"], + [48, "a0", "collide-shape"], + [57, "gp", "process-drawable"], + [64, "gp", "process-drawable"], + [68, "gp", "process-drawable"], + [107, "v1", "manipy"], + [52, "a0", "collide-shape"] + ], + "birth-func-simple-prim": [ + [28, "a0", "simple-prim-particle-binding"], + [25, "t0", "texture-id"], + [33, "a0", "simple-prim-particle-binding"] + ], + "(method 11 sound-controller)": [[18, "v0", "string"]], + "process-drawable-random-point!": [ + [29, "s4", "collide-shape"], + [33, "s4", "collide-shape"] + ], + "(code explode explosion)": [ + [6, "a0", "collide-shape"], + [17, "a0", "collide-shape"], + [22, "v1", "collide-shape"], + [19, "a0", "collide-shape"], + [8, "a0", "collide-shape"] + ], + "(event explode explosion)": [ + [8, "a0", "collide-shape"], + [35, "s3", "process-drawable"], + [63, "s2", "process-focusable"], + [55, "a0", "process-focusable"], + [63, "s3", "process-focusable"], + [78, "s3", "process-focusable"], + [58, "a0", "process-focusable"] + ], + "find-closest-solid-sphere-prim": [[12, "v1", "collide-shape-prim-group"]], + "explosion-init-by-other": [ + [82, "v1", "collide-shape"], + [56, "a0", "collide-shape"] + ], + "(code active touch-tracker)": [ + [65, "v1", "collide-shape"], + [22, "a0", "process-drawable"], + [31, "v1", "collide-shape"], + [32, "a0", "collide-shape"], + [43, "a0", "collide-shape"], + [55, "a0", "collide-shape"], + [26, "a0", "collide-shape"], + [45, "a0", "collide-shape"], + [57, "a0", "collide-shape"] + ], + "(event active touch-tracker)": [ + [71, "a0", "process"], + [98, "t9", "(function touch-tracker object)"] + ], + "launcher-init-by-other": [ + [85, "a0", "collide-shape"], + [136, "v0", "vector"], + [87, "a0", "collide-shape"] + ], + "(method 11 launcher)": [ + [55, "a0", "collide-shape"], + [128, "v0", "vector"], + [57, "a0", "collide-shape"] + ], + "(trans active launcher)": [[75, "v1", "collide-shape"]], + "(exit active launcher)": [[2, "v0", "sound-rpc-set-param"]], + "(event active launcher)": [ + [45, "a0", "collide-shape"], + [48, "a0", "collide-shape"], + [48, "a1", "vector"], + [51, "a0", "collide-shape"], + [53, "a0", "collide-shape"] + ], + "(event idle launcher)": [ + [12, "a0", "collide-shape"], + [18, "a0", "collide-shape"], + [20, "a0", "collide-shape"], + [15, "a0", "collide-shape"] + ], + "camera-pov-from": [ + [9, "gp", "process-drawable"], + [12, "gp", "process-drawable"], + [19, "v0", "joint"] + ], + "ja-anim-done?": [[30, "gp", "process-drawable"]], + "process-release?": [[13, "a0", "process-focusable"]], + "(exit active lightning-tracker)": [[4, "v0", "sound-rpc-set-param"]], + "(code active lightning-tracker)": [[67, "s4", "process-drawable"]], + "(method 16 lightning-tracker)": [ + [109, "s5", "process-focusable"], + [53, "a0", "process-drawable"], + [66, "a0", "process-focusable"], + [82, "a0", "process-focusable"], + [69, "a0", "process-focusable"] + ], + "manipy-init": [ + [207, "v0", "joint"], + [232, "v0", "joint"] + ], + "(code idle manipy)": [ + [61, "a1", "process-drawable"], + [82, "gp", "process-drawable"], + [88, "gp", "process-drawable"], + [131, "a0", "process-drawable"], + [193, "a0", "process-drawable"], + [164, "a0", "process"], + [[159, 190], "gp", "handle"] + ], + "(trans idle manipy)": [[62, "v1", "process-drawable"]], + "(event idle manipy)": [ + [45, "v0", "joint"], + [227, "v1", "process-drawable"], + [354, "v1", "vector"], + [362, "v1", "vector"], + [396, "t9", "(function manipy none)"], + [479, "a0", "process"], + [502, "v1", "process-drawable"], + [511, "a0", "process-drawable"], + [539, "v1", "vector"], + [547, "v1", "vector"], + [202, "v1", "float"], + [402, "v1", "float"], + [431, "v1", "float"], + [466, "v1", "float"], + [698, "a0", "float"], + [128, "v1", "float"], + [131, "v1", "float"], + [134, "v1", "float"], + [145, "v1", "float"], + [160, "v1", "float"], + [163, "v1", "float"], + [166, "v1", "float"], + [169, "v1", "float"], + [184, "v1", "float"], + [187, "v1", "float"], + [190, "v1", "float"], + [193, "v1", "float"] + ], + "swingpole-init": [[56, "a0", "process-drawable"]], + "(code idle swingpole)": [ + [6, "a0", "collide-shape"], + [8, "a0", "collide-shape"] + ], + "(code active swingpole)": [[34, "a0", "process-focusable"]], + "(method 22 swingpole)": [ + [37, "a0", "collide-shape"], + [53, "v1", "process-drawable"], + [66, "a0", "collide-shape"], + [69, "a0", "collide-shape"], + [40, "a0", "collide-shape"] + ], + "entity-lookup-part-group": [ + [29, "s3", "string"], + ["_stack_", 16, "res-tag"], + [39, "gp", "int"] + ], + "(event active part-spawner)": [[25, "v1", "vector"]], + "(method 11 part-spawner)": [ + [148, "v0", "(pointer degrees)"], + [238, "a2", "vector"] + ], + "(method 11 part-controller)": [["_stack_", 16, "res-tag"]], + "(trans linger part-tracker)": [ + [37, "v1", "process-drawable"], + [41, "v1", "process-drawable"], + [50, "v1", "process-drawable"] + ], + "(trans active part-tracker)": [ + [41, "v1", "process-drawable"], + [45, "v1", "process-drawable"], + [54, "v1", "process-drawable"] + ], + "local-space-proc-joint": [ + [12, "a2", "process-drawable"], + [14, "a1", "int"] + ], + "part-tracker-init": [ + [65, "s4", "particle-local-space-info"], + [68, "s4", "particle-local-space-info"], + [63, "s4", "particle-local-space-info"], + [78, "s4", "particle-local-space-info"] + ], + "(trans active part-tracker-subsampler)": [ + [41, "v1", "process-drawable"], + [45, "v1", "process-drawable"], + [51, "v1", "process-drawable"] + ], + "(event active part-tracker)": [ + [9, "v1", "process"], + [13, "a0", "process"], + [16, "v1", "process"], + [31, "v1", "vector"] + ], + "(method 0 carry-info)": [[42, "s5", "collide-shape"]], + "(method 11 carry-info)": [ + [211, "a0", "process-drawable"], + [212, "v1", "collide-shape"], + [218, "a2", "process-drawable"], + [225, "a1", "process-drawable"], + [231, "a0", "process-drawable"], + [232, "v1", "collide-shape"], + [219, "a1", "collide-shape"], + [226, "a0", "collide-shape"] + ], + "(method 12 carry-info)": [ + [46, "a0", "process-drawable"], + [47, "v1", "collide-shape"], + [52, "a1", "process-focusable"], + [59, "a1", "process-focusable"] + ], + "(method 13 carry-info)": [[22, "v0", "carry-info"]], + "(method 14 carry-info)": [ + [151, "a0", "process-focusable"], + [158, "a2", "process-focusable"], + [165, "a1", "process-focusable"], + [171, "a0", "process-focusable"] + ], + "(method 16 carry-info)": [[22, "v0", "carry-info"]], + "target-log-attack": [[47, "a3", "attack-info"]], + "(method 11 attack-info)": [ + [114, "s2", "process-drawable"], + [152, "s3", "process-drawable"] + ], + "(anon-function 3 target-util)": [ + [7, "a0", "process-drawable"], + [16, "v1", "process-drawable"] + ], + "external-target-spawn": [[240, "v1", "process-drawable"]], + "target-compute-pole": [ + [12, "s2", "swingpole"], + [11, "s2", "swingpole"], + [19, "s2", "swingpole"], + [27, "s2", "swingpole"], + [32, "s2", "swingpole"], + [88, "s2", "swingpole"], + [111, "s2", "swingpole"] + ], + "target-compute-edge-rider": [[48, "a0", "process-drawable"]], + "target-compute-edge": [[48, "a0", "process-drawable"]], + "history-draw": [ + [16, "a1", "int"], + [151, "a0", "uint"] + ], + "history-print": [[20, "a1", "int"]], + "target-collision-reaction": [ + [400, "a0", "process-focusable"], + [579, "a0", "process-focusable"], + [585, "a0", "process-focusable"], + [633, "a0", "process-focusable"], + ["_stack_", 96, "collide-status"], + ["_stack_", 104, "cshape-reaction-flags"] + ], + "(post sidekick-clone)": [[930, "v1", "process-drawable"]], + "(code enter remote)": [[16, "a0", "process-focusable"]], + "(trans enter remote)": [ + [25, "a0", "process-focusable"], + [28, "a0", "process-focusable"] + ], + "remote-track": [[94, "gp", "process-focusable"]], + "(method 24 remote)": [ + [17, "a0", "process-focusable"], + [20, "a0", "process-focusable"], + [26, "s4", "process-focusable"], + [29, "s4", "process-focusable"], + [16, "s4", "process-focusable"] + ], + "(method 25 remote)": [[[8, 12], "a0", "collide-shape"]], + "(code idle judge)": [[39, "v0", "float"]], + "(event idle task-arrow)": [ + [6, "a0", "vector"], + [52, "v1", "float"], + [59, "v1", "float"] + ], + "projectile-update-velocity-space-wars": [ + [59, "a0", "process-drawable"], + [60, "a0", "collide-shape"] + ], + "(method 35 projectile)": [[5, "a1", "process"]], + "(event idle ragdoll-proc)": [ + [14, "gp", "attack-info"], + [18, "gp", "attack-info"], + [112, "gp", "attack-info"], + [115, "gp", "attack-info"], + [27, "a0", "process-drawable"], + [32, "s2", "process-drawable"], + [34, "a0", "process-drawable"], + [44, "s2", "process-drawable"], + [54, "s2", "process-drawable"], + [61, "s2", "process-drawable"], + [50, "a3", "touching-prims-entry"], + [68, "gp", "attack-info"], + [72, "gp", "attack-info"] + ], + "wings-post": [ + [4, "v1", "process-focusable"], + [62, "v1", "process-drawable"], + [68, "v1", "process-drawable"], + [74, "v1", "process-drawable"], + [90, "v1", "process-focusable"] + ], + "(exit idle wings)": [ + [12, "a0", "ragdoll-proc"], + [15, "a0", "ragdoll-proc"] + ], + "wings-init": [[37, "v1", "process-drawable"]], + "(trans idle wings)": [ + [88, "v1", "ragdoll-proc"], + [21, "v1", "process-drawable"], + [24, "v1", "process-drawable"], + [29, "v1", "process-drawable"], + [35, "v1", "process-drawable"], + [41, "v1", "process-drawable"], + [47, "v1", "process-drawable"], + [53, "v1", "process-drawable"], + [59, "v1", "process-drawable"], + [65, "v1", "process-drawable"] + ], + "(code idle wings)": [ + [[179, 197], "a0", "ragdoll-proc"], + [212, "v1", "art-joint-anim"], + [117, "v1", "art-joint-anim"] + ], + "(code close wings)": [[29, "v1", "art-joint-anim"]], + "(code use wings)": [[14, "v1", "art-joint-anim"]], + "(method 16 ragdoll-edit-info)": [ + ["_stack_", 4368, "matrix"], + [[8, 12], "a0", "matrix"], + [47, "a0", "pointer"], + [47, "a1", "pointer"], + [[52, 56], "a3", "matrix"], + [[216, 220], "a3", "matrix"], + [[249, 253], "a3", "matrix"], + [364, "a0", "matrix"], + [380, "a0", "matrix"] + ], + "target-generic-event-handler": [ + [571, "a0", "vector"], + [1022, "v1", "(state object object object object target)"], + [1077, "a0", "process"], + [12, "v1", "float"], + [561, "v1", "float"] + ], + "target-send-attack": [ + [36, "s2", "process-focusable"], + ["_stack_", 96, "symbol"], + [168, "s4", "process"], + [167, "v1", "process"] + ], + "target-standard-event-handler": [ + [44, "v1", "(pointer process)"], + [92, "a0", "vector"], + [111, "a0", "vector"], + [130, "a0", "vector"], + [257, "v1", "(pointer process)"], + [295, "a0", "process"], + [297, "v1", "(pointer process)"], + [313, "a0", "process"], + [315, "v1", "(pointer process)"], + [348, "a0", "process"], + [350, "v1", "(pointer process)"], + [434, "s5", "process"], + [436, "v1", "(pointer process)"], + [453, "a0", "process"], + [455, "v1", "(pointer process)"], + [476, "a0", "process"], + [478, "v1", "(pointer process)"], + [534, "a0", "process"], + [536, "v1", "(pointer process)"], + [556, "a0", "process"], + [558, "v1", "(pointer process)"], + [715, "v1", "(pointer process)"], + [973, "a0", "process"], + [975, "v1", "(pointer process)"], + [1031, "v1", "(pointer process)"], + [1069, "v1", "(pointer process)"], + [67, "a0", "vector"], + [136, "v1", "float"] + ], + "(anon-function 10 target-handler)": [ + [32, "a0", "process-focusable"], + [40, "a0", "process"], + [47, "a0", "process"], + [61, "a0", "process-focusable"] + ], + "target-attacked": [ + [259, "a0", "vector"], + [313, "a0", "vector"] + ], + "target-edge-grab-anim": [ + [54, "v1", "art-joint-anim"], + [111, "v1", "art-joint-anim"] + ], + "target-attack-air-anim": [ + [83, "v1", "art-joint-anim"], + [251, "v1", "art-joint-anim"] + ], + "target-hit-ground-anim": [ + [108, "v1", "art-joint-anim"], + [189, "v1", "art-joint-anim"], + [306, "a1", "art-joint-anim"], + [458, "v1", "art-joint-anim"], + [510, "v1", "art-joint-anim"], + [663, "v1", "art-joint-anim"], + [723, "v1", "art-joint-anim"], + [895, "v1", "art-joint-anim"], + [1056, "v1", "art-joint-anim"], + [1155, "v1", "art-joint-anim"] + ], + "(anon-function 4 target-anim)": [ + [104, "v1", "art-joint-anim"], + [171, "v1", "art-joint-anim"], + [238, "v1", "art-joint-anim"], + [295, "v1", "art-joint-anim"] + ], + "(anon-function 3 target-anim)": [ + [105, "v1", "art-joint-anim"], + [165, "v1", "art-joint-anim"], + [239, "v1", "art-joint-anim"], + [297, "v1", "art-joint-anim"] + ], + "target-hit-ground-flop-anim": [[39, "v1", "art-joint-anim"]], + "(anon-function 8 target-anim)": [ + [84, "v1", "art-joint-anim"], + [179, "v1", "art-joint-anim"] + ], + "target-falling-anim": [[61, "v1", "art-joint-anim"]], + "target-stance-push": [ + [73, "v1", "art-joint-anim"], + [125, "v1", "art-joint-anim"] + ], + "target-stance-anim": [ + [949, "v1", "art-joint-anim"], + [170, "v1", "art-joint-anim"], + [236, "v1", "art-joint-anim"], + [422, "a1", "art-joint-anim"], + [512, "a1", "art-joint-anim"], + [817, "v1", "art-joint-anim"] + ], + "(anon-function 17 target-anim)": [ + [106, "gp", "art-joint-anim"], + [164, "v1", "art-joint-anim"], + [216, "v1", "art-joint-anim"] + ], + "(anon-function 13 target-anim)": [ + [31, "v1", "art-joint-anim"], + [321, "v1", "art-joint-anim"] + ], + "(anon-function 14 target-anim)": [ + [28, "v1", "art-joint-anim"], + [95, "v1", "art-joint-anim"] + ], + "(anon-function 15 target-anim)": [[158, "a1", "art-joint-anim"]], + "(anon-function 16 target-anim)": [ + [84, "a1", "art-joint-anim"], + [230, "v1", "art-joint-anim"] + ], + "(code target-slide-down)": [ + [30, "v1", "art-joint-anim"], + [102, "v1", "art-joint-anim"] + ], + "(enter target-double-jump)": [[110, "v1", "vector"]], + "(code target-flop)": [[33, "v1", "art-joint-anim"]], + "mod-var-jump": [ + [156, "v0", "vector"], + [76, "f1", "float"] + ], + "(code target-running-attack)": [ + [118, "gp", "art-joint-anim"], + [437, "v1", "art-joint-anim"], + [465, "v1", "art-joint-anim"], + [493, "v1", "art-joint-anim"], + [265, "f26", "float"], + [348, "f26", "float"] + ], + "(event target-running-attack)": [[48, "v1", "process-focusable"]], + "(code target-attack)": [ + [282, "s5", "art-joint-anim"], + [359, "a0", "process-focusable"], + [362, "a0", "process-focusable"] + ], + "(code target-falling)": [[67, "v1", "art-joint-anim"]], + "(trans target-duck-high-jump-jump)": [[11, "v0", "sound-rpc-set-param"]], + "(enter target-high-jump)": [[21, "v1", "vector"]], + "(code target-double-jump)": [ + [95, "v1", "art-joint-anim"], + [133, "v1", "art-joint-anim"] + ], + "(code target-jump-forward)": [[64, "v1", "art-joint-anim"]], + "(enter target-jump)": [[42, "v1", "vector"]], + "(code target-duck-stance)": [ + [59, "v1", "art-joint-anim"], + [369, "v1", "art-joint-anim"], + [422, "v1", "art-joint-anim"], + [112, "v1", "art-joint-anim"], + [238, "v1", "art-joint-anim"], + [297, "v1", "art-joint-anim"] + ], + "(code target-blast-recover)": [ + [23, "v1", "art-joint-anim"], + [77, "v1", "art-joint-anim"], + [134, "v1", "art-joint-anim"] + ], + "(code target-hide)": [ + [14, "v1", "art-joint-anim"], + [143, "v1", "art-joint-anim"], + [258, "v1", "art-joint-anim"], + [204, "v1", "art-joint-anim"], + [317, "v1", "art-joint-anim"], + [385, "v1", "art-joint-anim"], + [431, "v1", "art-joint-anim"], + [488, "v1", "art-joint-anim"] + ], + "(anon-function 15 target2)": [[26, "f0", "float"]], + "(code target-eco-powerup)": [ + [74, "v1", "art-joint-anim"], + [128, "v1", "art-joint-anim"], + [191, "v1", "art-joint-anim"], + [250, "v1", "art-joint-anim"] + ], + "(code target-edge-grab-jump)": [[83, "a1", "art-joint-anim"]], + "(code target-edge-grab)": [ + [21, "v1", "process-focusable"], + [25, "v1", "process-focusable"], + [278, "f0", "float"] + ], + "(exit target-edge-grab)": [ + [17, "v1", "process-focusable"], + [21, "v1", "process-focusable"] + ], + "(code target-pole-flip-forward-jump)": [[26, "t9", "(function none)"]], + "(code target-pole-flip-up)": [[23, "v1", "art-joint-anim"]], + "(code target-pole-cycle)": [ + [103, "v1", "art-joint-anim"], + [163, "v1", "art-joint-anim"] + ], + "(code target-grab-ride)": [ + [30, "a0", "process-focusable"], + [23, "a0", "process-focusable"], + [33, "a0", "process-focusable"] + ], + "(code target-grab)": [ + [154, "v1", "art-joint-anim"], + [242, "v1", "art-joint-anim"], + [419, "v1", "art-joint-anim"], + [616, "v1", "art-joint-anim"], + [689, "v1", "art-joint-anim"], + [756, "v1", "art-joint-anim"] + ], + "(event target-grab)": [[75, "a0", "process"]], + "(code target-load-wait)": [ + [21, "v1", "art-joint-anim"], + [134, "v1", "art-joint-anim"], + [191, "v1", "art-joint-anim"] + ], + "(anon-function 12 target2)": [ + [19, "s4", "target"], + [21, "s4", "target"], + [29, "s4", "target"], + [34, "s4", "target"], + [44, "s4", "target"], + [58, "s4", "target"], + [70, "s4", "target"], + [80, "s4", "target"], + [83, "s4", "target"], + [92, "s4", "target"], + [94, "s4", "target"], + [129, "s4", "target"], + [139, "s4", "target"] + ], + "(trans target-float)": [[130, "v1", "(state target)"]], + "(code target-look-around)": [[22, "v1", "float"]], + "(code target-stance-look-around)": [[13, "v1", "float"]], + "(code target-swim-up)": [[18, "v1", "art-joint-anim"]], + "(code target-swim-down)": [[70, "v1", "art-joint-anim"]], + "(exit target-swim-down)": [[56, "v0", "sound-rpc-set-param"]], + "(event target-swim-down)": [[[12, 99], "v1", "attack-info"]], + "(code target-swim-walk)": [ + [143, "v1", "art-joint-anim"], + [58, "v1", "art-joint-anim"] + ], + "(code target-swim-stance)": [[33, "v1", "art-joint-anim"]], + "(exit target-swim-stance)": [[42, "v0", "sound-rpc-set-param"]], + "lightning-draw-all": [ + [42, "v1", "connection"], + [43, "s1", "dma-buffer"] + ], + "lightning-draw": [ + [[407, 444], "v1", "(inline-array vector)"], + ["_stack_", 20, "(inline-array gcf-vertex)"], + ["_stack_", 176, "gcf-control"], + [440, "a1", "pointer"], + [441, "a0", "pointer"], + [438, "a1", "(pointer uint128)"], + [439, "a0", "(pointer uint128)"], + [[472, 487], "a0", "dma-packet"], + [[559, 576], "a0", "dma-packet"], + [[597, 602], "a0", "dma-packet"], + [436, "a1", "(pointer uint128)"], + [437, "a0", "(pointer uint128)"], + [[470, 472], "a0", "dma-packet"] + ], + "lightning-trail-fractal-gen": [ + [52, "v1", "float"], + [71, "v1", "float"], + [90, "v1", "float"] + ], + "lightning-trail-uniform-gen": [ + [21, "v1", "float"], + [43, "v1", "float"], + [65, "v1", "float"] + ], + "lightning-uniform-gen": [ + [38, "v1", "float"], + [60, "v1", "float"], + [82, "v1", "float"] + ], + "lightning-fractal-gen": [ + [37, "v1", "float"], + [64, "v1", "float"], + [91, "v1", "float"] + ], + "(method 19 light-trail-tracker)": [ + [17, "a1", "process-drawable"], + [21, "a1", "process-drawable"], + [30, "a1", "process-drawable"], + [34, "a1", "process-drawable"] + ], + "(code target-powerjak-get-on)": [ + [86, "v1", "art-joint-anim"], + [145, "v1", "art-joint-anim"] + ], + "(code target-lightjak-get-on)": [ + [222, "v1", "art-joint-anim"], + [686, "v1", "art-joint-anim"], + [770, "v1", "art-joint-anim"], + [484, "v0", "sound-rpc-set-param"] + ], + "(code target-lightjak-get-off)": [[159, "v1", "art-joint-anim"]], + "(code target-lightjak-swoop)": [[30, "v1", "art-joint-anim"]], + "(code target-lightjak-swoop-again)": [ + [214, "v1", "art-joint-anim"], + [112, "v1", "art-joint-anim"] + ], + "(code target-lightjak-swoop-falling)": [ + [14, "v1", "art-joint-anim"], + [66, "v1", "art-joint-anim"] + ], + "(method 10 lightjak-shield)": [[7, "v0", "sound-rpc-set-param"]], + "target-lightjak-end-mode": [[94, "v0", "sound-rpc-set-param"]], + "(exit target-lightjak-get-on)": [[2, "v0", "sound-rpc-set-param"]], + "(code hit lightjak-shield)": [ + [143, "v1", "art-joint-anim"], + [198, "v1", "art-joint-anim"] + ], + "(code close lightjak-shield)": [[30, "v1", "art-joint-anim"]], + "(code open lightjak-shield)": [[182, "v1", "art-joint-anim"]], + "(code target-lightjak-regen)": [ + [126, "v1", "art-joint-anim"], + [563, "v1", "art-joint-anim"], + [378, "v1", "art-joint-anim"] + ], + "(code target-lightjak-shield)": [[194, "gp", "art-joint-anim"]], + "(code idle freeze-control)": [[59, "a1", "process-focusable"]], + "(enter idle freeze-control)": [[48, "v1", "float"]], + "(code target-invisible-get-on)": [ + [72, "s5", "process-drawable"], + [112, "v1", "art-joint-anim"], + [304, "v1", "art-joint-anim"], + [248, "v1", "art-joint-anim"] + ], + "(code target-launch-dir)": [[184, "v1", "art-joint-anim"]], + "(trans target-launch-dir)": [ + [112, "f3", "float"], + [129, "f2", "float"] + ], + "(enter target-launch-dir)": [[27, "f2", "float"]], + "next-continue": [ + [4, "a2", "symbol"], + [5, "a2", "level-load-info"], + [12, "a3", "continue-point"] + ], + "(code target-hit)": [[915, "v1", "art-joint-anim"]], + "target-hit-setup-anim": [ + [153, "v1", "art-joint-anim"], + [225, "v1", "art-joint-anim"] + ], + "target-death-reset": [[21, "v1", "connection"]], + "target-continue-init-art": [ + [141, "v1", "skeleton-group"], + [159, "v1", "skeleton-group"] + ], + "(event target-continue)": [[18, "a0", "process"]], + "target-hit-effect": [ + [16, "a0", "vector"], + [70, "a0", "vector"] + ], + "arrive-at-continue": [ + [[265, 293], "s5", "handle"], + [[343, 395], "gp", "handle"], + [[422, 458], "gp", "handle"], + [312, "s5", "handle"], + [315, "s5", "handle"], + [318, "s5", "handle"] + ], + "(anon-function 4 target-death)": [[273, "v1", "art-joint-anim"]], + "(anon-function 3 target-death)": [ + [228, "v1", "art-joint-anim"], + [312, "v1", "art-joint-anim"], + [447, "v1", "art-joint-anim"], + [391, "v1", "art-joint-anim"] + ], + "(anon-function 2 target-death)": [ + [58, "v1", "art-joint-anim"], + [197, "v1", "art-joint-anim"], + [141, "v1", "art-joint-anim"] + ], + "(anon-function 1 target-death)": [[73, "v1", "art-joint-anim"]], + "(code target-death)": [ + [618, "v1", "art-joint-anim"], + [745, "v1", "art-joint-anim"], + [1003, "v1", "art-joint-anim"] + ], + "part-tracker-init-base": [ + [61, "s2", "matrix"], + [70, "s2", "matrix"] + ], + "(exit idle freeze-control)": [[72, "v0", "float"]], + "target-death-main": [ + ["_stack_", 96, "level"], + [[346, 584], "s5", "handle"], + [529, "v1", "float"], + [506, "v1", "float"], + [483, "v1", "float"] + ], + "target-gun-end-mode": [[59, "v0", "sound-rpc-set-param"]], + "find-nearest-focusable": [ + [48, "s3", "process-focusable"], + [56, "s3", "process-focusable"], + [65, "s3", "process-focusable"] + ], + "target-gun-find-track": [ + [474, "s5", "process-focusable"], + [481, "s5", "process-focusable"], + [260, "s5", "process-focusable"], + [372, "s5", "process-focusable"], + [392, "s5", "process-focusable"], + [419, "s5", "process-focusable"], + [422, "s5", "process-focusable"], + [430, "s5", "process-focusable"] + ], + "target-gun-joint-pre0": [ + [931, "a0", "process-focusable"], + [932, "a0", "process-focusable"], + [934, "a0", "process-focusable"] + ], + "target-gun-check": [[626, "v0", "sound-rpc-set-param"]], + "gun-post": [ + [[12, 222], "gp", "target"], + [5, "gp", "gun"] + ], + "(code idle gun)": [[16, "v1", "art-joint-anim"]], + "(code use gun)": [ + [38, "v1", "art-joint-anim"], + [406, "s2", "pair"], + [542, "s2", "pair"], + [98, "v1", "art-joint-anim"], + [158, "v1", "art-joint-anim"], + [218, "v1", "art-joint-anim"], + [278, "v1", "art-joint-anim"] + ], + "(post use gun)": [[169, "gp", "gun"]], + "(method 9 gun-info)": [[74, "s2", "collide-shape-prim"]], + "get-remaining-player-ammo": [[32, "v0", "float"]], + "target-gun-type-set!": [[6, "gp", "int"]], + "target-gun-joint-points": [[858, "a0", "int"]], + "(method 12 light-trail)": [ + ["_stack_", 88, "float"], + ["_stack_", 92, "float"], + ["_stack_", 96, "float"], + ["_stack_", 140, "float"], + ["_stack_", 144, "float"], + ["_stack_", 148, "float"], + ["_stack_", 152, "float"], + ["_stack_", 156, "float"], + [25, "a1", "light-trail-breadcrumb"], + [178, "s4", "light-trail-breadcrumb"], + [556, "a0", "vector"] + ], + "compute-trail-scaled-t": [[17, "v1", "float"]], + "(code idle board)": [ + [19, "v1", "art-joint-anim"], + [37, "v1", "art-joint-anim"] + ], + "(trans hidden board)": [[4, "a0", "target"]], + "(trans idle board)": [[4, "a0", "target"]], + "(trans use board)": [ + [8, "a0", "target"], + [22, "a1", "target"] + ], + "(code use board)": [[17, "v1", "art-joint-anim"]], + "target-board-handler": [[107, "a0", "process"]], + "target-board-green-eco-attack": [[52, "v1", "collide-shape"]], + "target-board-effect": [[334, "v0", "sound-rpc-set-param"]], + "target-board-physics": [[167, "v0", "sound-rpc-set-param"]], + "target-board-real-post": [[360, "v0", "sound-rpc-set-param"]], + "(code target-board-stance)": [[49, "v1", "art-joint-anim"]], + "(code target-board-halfpipe)": [[173, "t9", "(function none)"]], + "(code target-board-jump)": [[16, "v1", "art-joint-anim"]], + "(enter target-board-jump)": [ + [364, "v1", "process-drawable"], + [421, "v1", "process-drawable"] + ], + "(code target-board-jump-kick)": [[15, "v1", "art-joint-anim"]], + "(code target-board-wall-kick)": [ + [10, "v1", "art-joint-anim"], + [59, "f0", "float"] + ], + "(exit target-board-flip)": [[31, "v0", "sound-rpc-set-param"]], + "(enter target-board-flip)": [[78, "v0", "sound-rpc-set-param"]], + "(code target-board-flip)": [ + [319, "v1", "art-joint-anim"], + [385, "v1", "art-joint-anim"], + [108, "v1", "art-joint-anim"], + [218, "v1", "art-joint-anim"] + ], + "(exit target-board-hold)": [[9, "v0", "sound-rpc-set-param"]], + "(code target-board-hit-ground)": [ + [77, "v1", "art-joint-anim"], + [147, "v1", "art-joint-anim"] + ], + "(trans target-board-ride-edge)": [ + [107, "v0", "sound-rpc-set-param"], + [235, "a0", "sound-name"] + ], + "(enter target-board-ride-edge)": [[6, "v0", "sound-rpc-set-param"]], + "(exit target-board-ride-edge)": [[8, "v0", "sound-rpc-set-param"]], + "(code target-board-trickx)": [ + [81, "v1", "art-joint-anim"], + [149, "v1", "art-joint-anim"], + [218, "v1", "art-joint-anim"], + [301, "v1", "art-joint-anim"] + ], + "(code target-board-tricky)": [ + [514, "v1", "art-joint-anim"], + [75, "v1", "art-joint-anim"], + [143, "v1", "art-joint-anim"], + [212, "v1", "art-joint-anim"], + [326, "v1", "art-joint-anim"] + ], + "(exit target-board-tricky)": [[27, "v0", "sound-rpc-set-param"]], + "(code target-board-hold)": [ + [615, "v1", "art-joint-anim"], + [685, "v1", "art-joint-anim"], + [755, "v1", "art-joint-anim"], + [825, "v1", "art-joint-anim"], + [131, "v1", "art-joint-anim"], + [261, "v1", "art-joint-anim"], + [391, "v1", "art-joint-anim"], + [511, "v1", "art-joint-anim"] + ], + "target-board-anim-trans": [[192, "v0", "sound-rpc-set-param"]], + "target-board-ground-check": [ + [259, "v1", "process-drawable"], + [319, "v1", "process-drawable"] + ], + "(code target-board-hit)": [[14, "v0", "sound-rpc-set-param"]], + "(enter target-board-grab)": [[21, "v0", "sound-rpc-set-param"]], + "(event target-board-grab)": [[35, "a0", "process"]], + "(code target-board-get-off)": [[78, "v1", "art-joint-anim"]], + "(code target-board-get-on)": [[55, "v1", "art-joint-anim"]], + "(event target-board-halfpipe)": [[82, "v1", "float"]], + "(method 9 plane-volume)": [["_stack_", 148, "float"]], + "(code vent-pickup)": [[27, "gp", "process-focusable"]], + "(event open light-eco-vent)": [[22, "gp", "process-drawable"]], + "(event open dark-eco-vent)": [[22, "gp", "process-drawable"]], + "crate-standard-event-handler": [ + [5, "v1", "attack-info"], + [6, "v1", "attack-info"], + [10, "v1", "attack-info"], + [66, "gp", "process-focusable"], + [177, "v1", "attack-info"], + [435, "v1", "attack-info"], + [563, "v1", "impact-control"], + [660, "a0", "vector"] + ], + "(event carry crate)": [[15, "a0", "vector"]], + "(enter fall crate)": [ + [35, "v0", "carry-info"], + [39, "a0", "carry-info"] + ], + "(code notice-blue crate)": [ + [19, "v1", "process-drawable"], + [30, "v1", "collide-shape"], + [78, "v1", "vector"] + ], + "(code die crate)": [[44, "v1", "process-focusable"]], + "(method 42 crate)": [[60, "v0", "float"]], + "(method 9 fact-info)": [ + ["_stack_", 16, "pickup-type"], + [135, "a0", "process-drawable"], + [183, "a0", "process-drawable"] + ], + "pickup-ammo-set!": [ + ["_stack_", 16, "float"], + [140, "v1", "float"], + [222, "v0", "float"], + [21, "v1", "float"] + ], + "check-blue-suck": [[19, "v1", "collide-shape"]], + "add-blue-motion": [[20, "gp", "process-focusable"]], + "collectable-standard-event-handler": [ + [115, "a0", "vector"], + [133, "a0", "vector"], + [198, "a0", "process"], + [323, "a0", "process"] + ], + "(event pickup collectable)": [ + [17, "a0", "vector"], + [18, "v1", "vector"] + ], + "(code pickup eco)": [[41, "t9", "(function none)"]], + "notify-gem-pickup": [ + [18, "f1", "float"], + [39, "f1", "float"] + ], + "(method 32 collectable)": [ + [19, "v1", "int"], + [19, "a0", "int"], + [23, "a0", "int"], + [159, "v1", "process-drawable"] + ], + "(anon-function 77 collectables)": [ + [2, "v1", "handle"], + [5, "v1", "handle"], + [13, "v1", "collectable"], + [34, "a0", "process-focusable"], + [8, "v1", "handle"], + [37, "a0", "process-focusable"] + ], + "(anon-function 78 collectables)": [ + [2, "v1", "handle"], + [5, "v1", "handle"], + [8, "v1", "handle"], + [13, "v1", "collectable"], + [34, "a0", "process-focusable"], + [27, "a0", "process-focusable"], + [37, "a0", "process-focusable"] + ], + "(code die eco)": [[54, "v0", "float"]], + "sprite-add-matrix-data": [ + [[3, 16], "a2", "dma-packet"], + [[17, 28], "a1", "matrix"], + [[46, 58], "a2", "dma-packet"], + [[70, 97], "a2", "vector"], + [[98, 113], "a1", "vector"], + [[119, 133], "a1", "vector"] + ], + "sprite-add-frame-data": [[[3, 17], "a0", "dma-packet"]], + "sprite-add-2d-chunk": [ + [[7, 21], "a0", "dma-packet"], + [[33, 53], "a0", "dma-packet"], + [[57, 77], "a0", "dma-packet"], + [[78, 88], "v1", "dma-packet"], + [65, "a3", "int"] + ], + "sprite-add-3d-chunk": [ + [[7, 21], "a0", "dma-packet"], + [[33, 53], "a0", "dma-packet"], + [[57, 77], "a0", "dma-packet"], + [[78, 88], "v1", "dma-packet"], + [65, "a3", "int"] + ], + "sprite-draw": [ + [[71, 83], "a0", "dma-packet"], + [[85, 93], "a0", "dma-packet"], + [[109, 116], "a0", "dma-packet"], + [[127, 134], "a0", "dma-packet"], + [[148, 155], "a0", "dma-packet"] + ], + "sprite-init-distorter": [ + [50, "a3", "uint"], + [[46, 59], "a1", "dma-packet"] + ], + "sprite-draw-distorters": [ + [[73, 98], "a0", "vector"], + ["_stack_", 32, "vector"], + ["_stack_", 48, "vector"], + [[174, 199], "a1", "dma-packet"], + [[206, 213], "a0", "dma-packet"], + [[215, 221], "a0", "vector4w"], + [[223, 231], "a0", "dma-packet"], + [[251, 276], "a1", "dma-packet"], + [[281, 288], "a1", "dma-packet"], + [[290, 296], "a1", "vector4w"], + [[297, 305], "v1", "dma-packet"] + ], + "sprite-glow-init-engine": [ + [[8, 22], "a0", "dma-packet"], + [[32, 50], "a1", "dma-packet"], + [[52, 74], "a1", "dma-packet"], + [[76, 84], "a0", "dma-packet"], + [[85, 92], "v1", "dma-packet"] + ], + "sprite-glow-add-sprite": [[[0, 33], "v1", "sprite-glow-cnt-template"]], + "sprite-glow-add-simple-sprite": [ + [[0, 33], "v1", "sprite-glow-ref-template"] + ], + "add-shader-to-dma": [[[6, 8], "v1", "(pointer uint32)"]], + "add-debug-sphere-from-table": [ + [[38, 41], "v1", "vector"], + [[55, 59], "s0", "(inline-array vector)"] + ], + "add-debug-point": [ + [[36, 43], "a3", "dma-packet"], + [[45, 52], "a3", "gs-gif-tag"], + [[65, 73], "a3", "vector4w-2"], + [[85, 93], "a3", "vector4w-2"], + [[102, 110], "a3", "vector4w-2"], + [[122, 130], "a1", "vector4w-2"], + [[129, 148], "a0", "(pointer uint64)"] + ], + "internal-draw-debug-line": [ + [[5, 224], "s5", "rgba"], + [[27, 29], "v1", "rgba"], + [[109, 115], "a3", "dma-packet"], + [[118, 124], "a3", "gs-gif-tag"], + [[232, 245], "a1", "(inline-array vector4w-2)"], + [[107, 267], "a0", "(pointer uint64)"] + ], + "add-debug-flat-triangle": [ + [[73, 80], "a3", "dma-packet"], + [[82, 89], "a3", "gs-gif-tag"], + [[111, 131], "a3", "(inline-array vector)"], + [[68, 149], "a0", "(pointer uint64)"] + ], + "add-debug-line2d": [ + [[61, 68], "a2", "dma-packet"], + [[70, 77], "a2", "gs-gif-tag"], + [[79, 85], "a2", "vector4w-2"], + [[87, 93], "a2", "vector4w-2"], + [[97, 111], "a0", "(pointer uint64)"] + ], + "drawable-frag-count": [[[14, 20], "s5", "drawable-group"]], + "add-boundary-shader": [ + [[6, 12], "a0", "gs-gif-tag"], + [[14, 31], "s5", "adgif-shader"] + ], + "add-debug-bound": [ + //[105, "v1", "dma-packet"], + //[85, "a0", "dma-packet"], + ["_stack_", 16, "dma-packet"], + [91, "v1", "dma-packet"] + ], + "target-history-print": [["_stack_", 32, "collide-status"]], + "(method 13 sync-linear)": [ + ["_stack_", 16, "res-tag"], + [27, "v0", "(pointer float)"] + ], + "(method 13 sync-eased)": [ + ["_stack_", 16, "res-tag"], + [31, "v0", "(pointer float)"] + ], + "(method 13 sync-paused)": [ + ["_stack_", 16, "res-tag"], + [29, "v0", "(pointer float)"] + ], + "(method 11 impact-control)": [ + [58, "v1", "collide-shape-prim"], + [66, "v1", "collide-shape-prim"] + ], + "cam-slave-get-vector-with-offset": [ + [59, "v0", "vector"], + [24, "v0", "vector"], + [69, "s3", "vector"] + ], + "cam-slave-get-interp-time": [[29, "f0", "float"]], + "cam-standard-event-handler": [ + [13, "gp", "(state camera-slave)"], + [19, "gp", "(state camera-slave)"], + [22, "gp", "(state camera-slave)"] + ], + "cam-calc-follow!": [ + ["_stack_", 144, "float"], + ["_stack_", 160, "float"] + ], + "(method 15 tracking-spline)": [ + [28, "a0", "int"], + [38, "a0", "int"] + ], + "(code cam-pov)": [ + [15, "a1", "process-drawable"], + [24, "a0", "process-drawable"] + ], + "(code cam-pov180)": [ + [15, "a1", "process-drawable"], + [23, "v1", "process-drawable"], + [45, "v1", "process-drawable"], + [58, "v1", "process-drawable"], + [80, "a1", "process-drawable"] + ], + "(code cam-pov-track)": [ + [19, "a1", "process-drawable"], + [30, "a0", "process-drawable"] + ], + "(event cam-string)": [ + [11, "v1", "vector"], + [44, "s5", "vector"], + [51, "s5", "vector"], + [53, "s5", "vector"], + [62, "s5", "vector"], + [69, "s5", "vector"], + [71, "s5", "vector"], + [80, "gp", "vector"], + [87, "gp", "vector"], + [89, "gp", "vector"], + [98, "gp", "vector"], + [105, "gp", "vector"], + [107, "gp", "vector"], + [141, "a0", "vector"], + [145, "a0", "vector"], + [174, "v1", "vector"], + [184, "v1", "float"], + [28, "v1", "float"], + [31, "v1", "float"] + ], + "set-string-params": [[30, "v0", "entity-camera"]], + "cam-string-joystick": [[842, "v1", "process-drawable"]], + "cam-dist-analog-input": [[32, "f0", "float"]], + "cam-los-collide": [ + [92, "s1", "(inline-array collide-cache-tri)"], + [205, "s1", "(inline-array collide-cache-tri)"], + [135, "s1", "(inline-array collide-cache-tri)"], + [140, "s1", "(inline-array collide-cache-tri)"], + [175, "s1", "(inline-array collide-cache-tri)"], + [375, "v1", "(inline-array tracking-spline)"] + ], + "cam-los-spline-collide": [ + [70, "s3", "(inline-array collide-cache-tri)"], + [88, "s3", "(inline-array collide-cache-tri)"] + ], + "cam-draw-collide-cache": [ + [[8, 14], "gp", "(inline-array collide-cache-tri)"] + ], + "(method 16 camera-master)": [ + [14, "a2", "process-focusable"], + [16, "v1", "int"] + ], + "reset-follow": [ + [14, "a0", "process-focusable"], + [17, "a0", "process-focusable"] + ], + "(event cam-master-active)": [ + [80, "gp", "matrix"], + [170, "s5", "vector"], + [275, "v1", "process"], + [330, "a0", "camera-slave"], + [448, "v1", "camera-slave"], + [512, "v1", "camera-slave"], + [542, "v1", "camera-slave"], + [611, "a0", "vector"], + [799, "v1", "float"], + [784, "v1", "vector"], + [589, "v1", "float"], + [593, "v1", "float"], + [602, "v1", "float"], + [606, "v1", "float"], + [796, "v1", "float"] + ], + "master-track-target": [ + [53, "gp", "process-focusable"], + [100, "gp", "process-focusable"], + [121, "gp", "process-focusable"], + [132, "gp", "process-focusable"], + [203, "gp", "process-focusable"], + [273, "gp", "process-focusable"], + [280, "gp", "process-focusable"], + [286, "gp", "process-focusable"], + [366, "gp", "process-focusable"], + [480, "gp", "process-focusable"], + [486, "gp", "process-focusable"], + [490, "gp", "process-focusable"], + [528, "gp", "process-focusable"], + [531, "gp", "process-focusable"], + [409, "gp", "process-focusable"], + [415, "gp", "process-focusable"], + [171, "gp", "process-focusable"], + [195, "gp", "process-focusable"] + ], + "reset-target-tracking": [ + [14, "gp", "process-focusable"], + [40, "gp", "process-focusable"], + [51, "gp", "process-focusable"], + [65, "gp", "process-focusable"], + [86, "gp", "process-focusable"], + [131, "gp", "process-focusable"] + ], + "cam-free-floating-input": [ + [179, "v1", "cpad-list"], + [191, "v1", "cpad-list"], + [203, "v1", "cpad-list"], + [215, "v1", "cpad-list"], + [229, "a0", "cpad-list"], + [237, "v1", "cpad-list"] + ], + "(event cam-combiner-active)": [ + [103, "gp", "camera-slave"], + [105, "gp", "camera-slave"], + [189, "gp", "camera-slave"], + [191, "gp", "camera-slave"], + [206, "gp", "camera-slave"], + [210, "gp", "camera-slave"], + [214, "gp", "camera-slave"], + [230, "gp", "camera-slave"], + [234, "gp", "camera-slave"] + ], + "execute-cam-post-hook-engine": [ + [8, "s5", "connection"], + [[14, 17], "s5", "connection"], + [18, "t9", "(function object object object object object)"], + [9, "s5", "connection"] + ], + "cam-layout-init": [[10, "v1", "connection"]], + "cam-layout-function-call": [ + [15, "gp", "(function string int basic object)"] + ], + "cam-layout-do-action": [[99, "s5", "(function int symbol object)"]], + "cam-layout-do-menu": [ + [[280, 363], "s4", "clm-list"], + [374, "v1", "clm-item"], + [[136, 182], "s3", "clm-list"], + [209, "a0", "clm-item"], + [219, "v1", "clm-item"], + [234, "s3", "clm-item"], + [239, "v1", "clm-item"], + [244, "s3", "clm-item"] + ], + "clmf-save-all": [[18, "v1", "connection"]], + "cam-layout-save-campointsoffset": [[12, "v0", "vector"]], + "cam-layout-save-splineoffset": [ + [37, "v0", "vector"], + [25, "v0", "vector"] + ], + "cam-layout-save-interesting": [ + [13, "v0", "vector"], + [38, "v0", "vector"] + ], + "cam-layout-save-align": [ + [38, "v0", "vector"], + [13, "v0", "vector"] + ], + "cam-layout-save-pivot": [ + [13, "v0", "vector"], + [38, "v0", "vector"] + ], + "cam-layout-save-cam-trans": [ + [29, "v0", "vector"], + [40, "v0", "vector"], + [93, "s5", "symbol"], + [95, "s2", "symbol"], + [94, "s2", "symbol"] + ], + "cam-layout-save-cam-rot": [[13, "v0", "vector"]], + "clmf-next-entity": [[38, "a0", "connection"]], + "cam-layout-entity-info": [[202, "v1", "vector"]], + "cam-layout-entity-volume-info-create": [ + ["_stack_", 16, "res-tag"], + ["_stack_", 164, "float"], + [16, "v0", "(inline-array vector)"] + ], + "cam-layout-print": [[[22, 25], "v1", "dma-packet"]], + "(method 19 level-group)": [ + [237, "s2", "continue-point"], + [191, "s0", "continue-point"], + [196, "s2", "continue-point"], + [207, "s0", "continue-point"], + [213, "s0", "continue-point"], + [222, "s0", "continue-point"] + ], + "master-choose-entity": [[162, "s0", "(pointer camera-slave)"]], + "bones-mtx-calc-execute": [ + [[126, 154], "a0", "pris-mtx"], + [[126, 154], "a1", "pris-mtx"], + [67, "v1", "bone-memory"], + [72, "a1", "bone-memory"], + [76, "a1", "bone-memory"], + [80, "a1", "bone-memory"], + [84, "a1", "bone-memory"], + [88, "a1", "bone-memory"], + [92, "a1", "bone-memory"], + [96, "a0", "dma-bank-control"], + [159, "a0", "dma-bank-control"] + ], + "bones-set-sqwc": [[2, "v1", "dma-bank-control"]], + "bones-reset-sqwc": [[2, "v1", "dma-bank-control"]], + "bones-init": [ + [1, "v1", "bone-memory"], + [6, "a1", "bone-memory"], + [10, "a1", "bone-memory"], + [14, "a1", "bone-memory"], + [18, "a1", "bone-memory"], + [22, "a1", "bone-memory"], + [26, "a1", "bone-memory"], + [44, "a0", "dma-packet"], + [45, "a0", "(pointer uint64)"] + ], + "foreground-init": [ + [[0, 99], "gp", "foreground-work"], + [[21, 23], "a0", "(pointer uint64)"] + ], + "texscroll-make-request": [[[5, 40], "a1", "mei-texture-scroll"]], + "texscroll-execute": [ + [19, "t1", "pointer"], + [15, "a2", "merc-fragment-control"], + [[20, 24], "t1", "merc-fragment"], + [40, "a2", "merc-fragment-control"], + [45, "a2", "merc-fragment-control"], + [48, "a2", "merc-fragment-control"], + [51, "a2", "int"], + [[10, 31], "a1", "mei-texture-scroll"], + [39, "t1", "(pointer int8)"] + ], + "foreground-add-mtx-calc": [[1, "v1", "foreground-work"]], + "foreground-wrapup": [ + [[1, 90], "gp", "foreground-work"], + [[25, 31], "a0", "dma-packet"], + [[55, 60], "a0", "dma-packet"] + ], + "foreground-shadow": [ + [2, "a3", "foreground-work"], + [[13, 19], "t1", "vector"], + [[44, 121], "t2", "shadow-dma-packet"], + [[82, 87], "t7", "vector"] + ], + "foreground-generic-merc-add-fragments": [ + [[5, 54], "a3", "merc-fragment-control"], + [[5, 57], "v1", "merc-fragment"], + [28, "t4", "foreground-work"], + [[16, 19], "a1", "dma-packet"], + [21, "t3", "(pointer int32)"], + [[38, 41], "a1", "dma-packet"], + [[49, 52], "a1", "dma-packet"] + ], + "foreground-ripple": [ + [2, "v1", "foreground-work"], + [25, "v1", "foreground-work"], + [[27, 32], "a0", "foreground-work"] + ], + "foreground-draw": [ + [[1, 64], "at", "foreground-work"], + [13, "t0", "foreground-work"], + [27, "t1", "foreground-work"], + [32, "a2", "foreground-work"], + [37, "a1", "foreground-work"], + [70, "a0", "foreground-work"], + [114, "v1", "foreground-work"], + [116, "v1", "foreground-work"], + [118, "v1", "foreground-work"], + [142, "v1", "foreground-work"], + [187, "a0", "foreground-work"], + [236, "a0", "foreground-work"], + [249, "a0", "foreground-work"], + [272, "a0", "foreground-work"], + [389, "v1", "foreground-work"], + [397, "a0", "foreground-work"], + [437, "a0", "foreground-work"], + [452, "a0", "foreground-work"], + [465, "v1", "foreground-work"], + [488, "v1", "foreground-work"], + [495, "v1", "foreground-work"], + [520, "v1", "foreground-work"], + [538, "v1", "foreground-work"], + [544, "v1", "foreground-work"], + [573, "a0", "foreground-work"], + [603, "v1", "foreground-work"], + [614, "v1", "foreground-work"], + [622, "v1", "foreground-work"], + [632, "v1", "foreground-work"], + [332, "a3", "(pointer uint8)"], + [339, "v1", "(pointer uint8)"], + [357, "t0", "(pointer uint8)"], + [364, "v1", "(pointer uint8)"], + [669, "s5", "int"], + [675, "a0", "foreground-work"], + [[38, 61], "a2", "bone-calculation"], + [[185, 189], "v1", "mei-texture-scroll"], + [[268, 297], "v1", "mei-envmap-tint"], + [[300, 339], "v1", "(pointer uint8)"], + [339, "v1", "(pointer uint8)"], + [[340, 364], "v1", "(pointer uint8)"], + [364, "v1", "(pointer uint8)"], + [[365, 372], "v1", "(pointer uint8)"] + ], + "generic-work-init": [ + [4, "a0", "generic-work"], + [[9, 19], "a0", "generic-work"], + [23, "a1", "generic-work"] + ], + "generic-initialize-without-sync": [ + [8, "a0", "generic-work"], + [21, "a0", "generic-work"] + ], + "generic-initialize": [ + [8, "a0", "generic-work"], + [21, "a0", "generic-work"] + ], + "generic-wrapup": [ + [1, "v1", "generic-work"], + [4, "v1", "generic-work"] + ], + "generic-warp-source": [[2, "at", "generic-work"]], + "(method 9 font-work)": [ + [16, "t0", "(pointer uint32)"], + [47, "a2", "(pointer uint32)"], + [49, "a2", "(pointer uint32)"], + [51, "a2", "(pointer uint32)"], + [53, "a2", "(pointer uint32)"] + ], + "unpack-comp-rle": [[[10, 26], "a0", "(pointer int8)"]], + "unpack-comp-huf": [[[21, 23], "t3", "(pointer uint16)"]], + "(method 16 level)": [ + [222, "v1", "(pointer uint128)"], + [223, "a1", "(pointer uint128)"], + [225, "a0", "(pointer uint128)"], + [[71, 168], "s1", "(pointer int8)"], + [72, "v1", "(pointer int8)"], + [[74, 169], "s0", "(pointer int8)"], + [[170, 193], "s1", "(pointer uint8)"], + [[171, 193], "s2", "(pointer uint8)"], + [227, "v1", "(pointer uint8)"] + ], + "upload-vis-bits": [ + [14, "a1", "(pointer uint128)"], + [[8, 35], "a2", "(pointer uint128)"] + ], + "finish-background": [ + [900, "t4", "(pointer int32)"], + [963, "t4", "(pointer int32)"], + [1026, "t4", "(pointer int32)"], + [1089, "t3", "(pointer int32)"] + ], + "(method 16 drawable-inline-array-node)": [[[1, 7], "v1", "draw-node"]], + "(method 9 shrubbery)": [ + [23, "a2", "(pointer int32)"], + [28, "a3", "(pointer int32)"] + ], + "shrub-upload-view-data": [[[3, 17], "a0", "dma-packet"]], + "shrub-do-init-frame": [ + [[12, 21], "a0", "dma-packet"], + [[26, 29], "a0", "dma-packet"], + [33, "v1", "(pointer vif-tag)"], + [[35, 41], "v1", "(pointer uint32)"], + [42, "v1", "(pointer vif-tag)"], + [[44, 51], "v1", "(pointer uint32)"], + [52, "v1", "(pointer vif-tag)"], + [54, "v1", "(pointer uint32)"] + ], + "shrub-init-frame": [ + [[8, 12], "a0", "dma-packet"], + [[18, 21], "a0", "gs-gif-tag"], + [24, "v1", "(pointer gs-test)"], + [26, "v1", "(pointer gs-reg64)"] + ], + "shrub-upload-model": [ + [[17, 26], "a3", "dma-packet"], + [[33, 41], "a0", "dma-packet"], + [[47, 55], "a0", "dma-packet"] + ], + "draw-prototype-inline-array-shrub": [ + [387, "a0", "prototype-shrubbery"], + [481, "v1", "prototype-shrubbery"], + [[637, 646], "a1", "prototype-bucket-shrub"], + [[301, 392], "s1", "prototype-bucket-shrub"], + [[470, 515], "s1", "prototype-bucket-shrub"], + [[470, 658], "gp", "prototype-bucket-shrub"], + [[13, 56], "v1", "prototype-bucket-shrub"] + // [[102, 114], "a0", "shrub-near-packet"], + // [[114, 117], "v1", "vector4w-3"], + // [118, "a1", "vector4w"], + // [123, "v1", "dma-packet"], + // [[124, 126], "v1", "vector4w"], + // [[334, 364], "s1", "prototype-bucket-shrub"], + // [416, "a0", "drawable-group"], + // [420, "s1", "prototype-bucket-shrub"], + // [525, "v1", "drawable-group"], + // [[518, 535], "s1", "prototype-bucket-shrub"], + // [558, "s1", "prototype-bucket-shrub"], + // [[677, 718], "gp", "prototype-bucket-shrub"], + // [[696, 706], "a1", "prototype-bucket-shrub"] + ], + "(method 8 drawable-tree-instance-shrub)": [[51, "v1", "drawable-group"]], + "(method 13 drawable-tree-instance-shrub)": [ + [[12, 151], "gp", "prototype-bucket-shrub"], + [19, "a1", "drawable-group"], + [45, "v1", "drawable-group"], + [67, "s3", "shrubbery"], + [93, "v1", "drawable-group"], + [115, "s3", "shrubbery"], + [161, "gp", "(inline-array prototype-bucket-shrub)"] + ], + "draw-drawable-tree-instance-shrub": [[86, "a0", "drawable-group"]], + "(method 9 tfragment)": [ + [27, "a3", "(pointer int32)"], + [32, "t0", "texture"] + ], + "add-tfrag-mtx-0": [[[3, 17], "a0", "dma-packet"]], + "add-tfrag-mtx-1": [[[3, 17], "a0", "dma-packet"]], + "add-tfrag-data": [ + [[3, 17], "a0", "dma-packet"], + [[24, 31], "v1", "dma-packet"] + ], + "tfrag-init-buffer": [[[73, 81], "v1", "dma-packet"]], + "tfrag-end-buffer": [ + [[21, 28], "a2", "dma-packet"], + [[31, 38], "a0", "(pointer vif-tag)"], + [[38, 42], "a0", "(pointer int32)"], + [[43, 49], "a0", "(pointer vif-tag)"] + ], + "tfrag-vu1-init-buf": [ + [[47, 55], "v1", "dma-packet"], + [[81, 86], "v1", "dma-packet"], + [89, "v1", "(pointer int32)"] + ], + "draw-drawable-tree-tfrag-water": [ + [18, "v1", "drawable-inline-array-node"], + [20, "a0", "drawable-inline-array-node"] + ], + "draw-drawable-tree-tfrag-trans": [ + [18, "v1", "drawable-inline-array-node"], + [20, "a0", "drawable-inline-array-node"] + ], + "draw-drawable-tree-tfrag": [ + [17, "v1", "drawable-inline-array-node"], + [19, "a0", "drawable-inline-array-node"] + ], + "(method 9 tie-fragment)": [ + [21, "a2", "(pointer int32)"], + [26, "a3", "(pointer int32)"], + [[1, 70], "s5", "adgif-shader"] + ], + "tie-init-engine": [ + [[37, 51], "a0", "dma-packet"], + [[63, 71], "a0", "dma-packet"], + [[73, 80], "a0", "dma-packet"], + [[81, 90], "v1", "vector"], + [[91, 98], "v1", "(pointer vif-tag)"] + ], + "tie-end-buffer": [ + [[47, 54], "a1", "dma-packet"], + [[58, 69], "a0", "(pointer vif-tag)"] + ], + "tie-ints": [ + [17, "v1", "(pointer uint32)"], + [21, "v1", "(pointer uint32)"] + ], + "tie-floats": [[[3, 73], "gp", "(pointer uint32)"]], + "instance-tie-patch-buckets": [ + [39, "a0", "(pointer uint64)"], + [137, "a0", "(pointer uint64)"], + [235, "a0", "(pointer uint64)"], + [333, "a0", "(pointer uint64)"], + [431, "a0", "(pointer uint64)"], + [530, "a0", "(pointer uint64)"], + [629, "a0", "(pointer uint64)"], + [728, "a0", "(pointer uint64)"], + [827, "a0", "(pointer uint64)"], + [926, "a0", "(pointer uint64)"], + [1025, "a0", "(pointer uint64)"], + [1124, "a0", "(pointer uint64)"], + [1223, "a0", "(pointer uint64)"] + ], + "draw-drawable-tree-instance-tie": [ + [[23, 37], "v1", "drawable-inline-array-node"], + [25, "a0", "drawable-inline-array-node"], + [120, "s2", "drawable-inline-array-instance-tie"], + [132, "v1", "int"], + [132, "a0", "int"] + ], + "tie-init-buf": [ + [[44, 51], "a0", "dma-packet"], + [[53, 60], "a0", "gs-gif-tag"], + [64, "a0", "(pointer gs-zbuf)"], + [66, "a0", "(pointer gs-reg64)"], + [[71, 79], "v1", "dma-packet"], + [[104, 110], "v1", "dma-packet"], + [112, "v1", "(pointer uint32)"] + ], + "(method 13 drawable-tree-instance-tie)": [ + [[51, 70], "t1", "tie-fragment"], + [[102, 120], "a3", "tie-fragment"], + [[160, 178], "t1", "tie-fragment"], + [[211, 229], "a3", "tie-fragment"], + [[266, 286], "t1", "tie-fragment"], + [[320, 340], "a1", "tie-fragment"], + [[381, 400], "t1", "tie-fragment"], + [[432, 450], "a3", "tie-fragment"], + [[487, 507], "t1", "tie-fragment"], + [[541, 561], "a1", "tie-fragment"], + [[598, 616], "t1", "tie-fragment"], + [[649, 667], "a3", "tie-fragment"], + [[703, 723], "t1", "tie-fragment"], + [[756, 776], "a1", "tie-fragment"] + ], + "(method 9 prim-strip)": [ + [224, "t2", "int"], + [224, "t0", "int"], + [226, "t1", "int"], + [226, "a3", "int"], + [[190, 231], "a1", "(inline-array prim-vertex)"], + [[148, 164], "a1", "(inline-array prim-vertex)"], + [[192, 230], "a2", "(inline-array prim-vertex)"], + [147, "a1", "(pointer uint128)"], + [[278, 281], "v1", "dma-packet"], + [230, "a2", "(pointer uint128)"] + ], + "prim-engine-execute": [ + [[15, 21], "v1", "connection"], + [[21, 25], "a0", "prim-strip"] + ], + "(event tracking light-trail-tracker)": [[55, "v1", "float"]], + "(method 21 light-trail)": [[[18, 64], "gp", "light-trail-breadcrumb"]], + "(method 14 light-trail)": [ + [47, "a0", "uint"], + [[10, 32], "a1", "light-trail-breadcrumb"], + [[34, 60], "s3", "light-trail-breadcrumb"], + [[34, 73], "s2", "light-trail-breadcrumb"] + ], + "debug-menu-item-var-update-display-str": [ + [48, "v1", "int"], + [63, "v1", "int"], + [68, "v1", "int"], + [46, "v1", "int"], + [45, "v1", "int"], + [65, "v1", "int"], + [66, "v1", "int"] + ], + "debug-menu-rebuild": [[7, "a0", "debug-menu-item"]], + "debug-menu-func-decode": [[18, "a0", "symbol"]], + "debug-menu-find-from-template": [ + [9, "s5", "string"], + [10, "s4", "debug-menu-item"], + [18, "s4", "debug-menu-item-submenu"], + [3, "s5", "debug-menu"] + ], + "debug-menu-render": [[[118, 121], "v1", "dma-packet"]], + "debug-menu-send-msg": [ + [17, "s2", "debug-menu-item-submenu"], + [12, "s2", "debug-menu-item"] + ], + "debug-menu-item-var-joypad-handler": [ + [206, "a1", "int"], + [207, "v1", "int"] + ], + "debug-menu-item-get-max-width": [ + [5, "a0", "debug-menu-item-submenu"], + [20, "a0", "debug-menu-item-var"] + ], + "debug-menu-item-var-make-float": [[32, "f0", "int"]], + "ragdoll-joint-callback": [[92, "t9", "(function cspace transformq none)"]], + "(method 15 ragdoll)": [ + [78, "s4", "ragdoll-edit-info"], + [92, "s4", "ragdoll-edit-info"], + [202, "s4", "ragdoll-edit-info"], + [216, "s4", "ragdoll-edit-info"], + [221, "s4", "ragdoll-edit-info"], + [362, "s4", "ragdoll-edit-info"], + [110, "s4", "ragdoll-edit-info"], + [115, "s4", "ragdoll-edit-info"] + ], + "(trans tracking weapon-trail-tracker)": [ + [36, "gp", "process-drawable"], + [45, "gp", "process-drawable"] + ], + "(trans tracking tread-trail-tracker)": [ + [27, "gp", "process-drawable"], + [30, "gp", "process-drawable"] + ], + "(method 23 weapon-trail)": [[[0, 100], "gp", "weapon-trail-crumb"]], + "(method 22 weapon-trail)": [[32, "v0", "light-trail-breadcrumb"]], + "(method 22 tread-trail)": [[19, "v0", "light-trail-breadcrumb"]], + "(method 23 tread-trail)": [[[0, 100], "s5", "tread-trail-crumb"]], + "(method 23 tire-trail)": [[[0, 74], "s5", "tire-trail-crumb"]], + "(method 22 tire-trail)": [[[18, 24], "v1", "tire-trail-crumb"]], + "(trans idle fma-sphere)": [[39, "a2", "process-drawable"]], + "part-water-splash-callback": [[3, "v1", "float"]], + "(method 15 water-control)": [[48, "v1", "float"]], + "(method 13 water-control)": [[158, "v1", "process-drawable"]], + "find-water-2": [ + [8, "v1", "region-prim-area"], + [15, "a1", "region-prim-area"] + ], + "find-water-1": [ + [62, "a0", "region-prim-area"], + [40, "a1", "region-prim-area"], + [6, "v1", "region-prim-area"], + [8, "v1", "region-prim-area"], + [11, "a1", "region-prim-area"] + ], + "water-info<-region": [ + [62, "v1", "pair"], + [71, "v1", "pair"], + [72, "v1", "pair"], + [210, "v1", "pair"], + [211, "v1", "pair"], + [212, "v1", "pair"], + [213, "s1", "pair"], + [280, "s1", "pair"], + [281, "s1", "pair"], + [271, "a0", "process-focusable"], + [111, "v1", "pair"], + [112, "v1", "pair"], + [144, "s0", "process-drawable"], + [156, "v1", "pair"], + [157, "v1", "pair"], + [61, "s1", "pair"], + [70, "s1", "pair"], + [209, "s1", "pair"], + [110, "s1", "pair"], + [155, "s1", "pair"], + [290, "a0", "region-prim-area"] + ], + "(method 10 flow-control)": [["_stack_", 48, "flow-section"]], + "(method 12 flow-control)": [ + [23, "a0", "connection"], + [24, "a0", "collide-shape"], + [71, "a0", "connection"], + [72, "a0", "collide-shape"], + [148, "a1", "process-focusable"] + ], + "(event idle water-flow)": [[15, "a0", "process-focusable"]], + "(method 9 menu-select-start-option)": [ + [393, "s3", "pair"], + [394, "v1", "pair"] + ], + "(method 24 progress)": [ + [64, "v1", "menu-missions-option"], + [69, "v1", "menu-missions-option"] + ], + "(method 31 progress)": [ + [64, "v1", "menu-missions-option"], + [69, "v1", "menu-missions-option"] + ], + "(method 9 menu-slider-option)": [[10, "v1", "(pointer float)"]], + "(method 33 progress)": [ + [18, "v1", "vector"], + [17, "gp", "vector"] + ], + "(method 32 progress)": [ + [46, "v1", "paged-menu-option"], + [50, "v1", "paged-menu-option"], + [310, "v1", "menu-select-start-option"], + [315, "v1", "menu-select-start-option"], + [319, "v1", "menu-select-start-option"], + [330, "v1", "menu-select-scene-option"], + [335, "v1", "menu-select-scene-option"], + [339, "v1", "menu-select-scene-option"], + [405, "v1", "menu-missions-option"], + [410, "v1", "menu-missions-option"] + ], + "(method 10 menu-memcard-slot-option)": [ + [215, "v1", "vector"], + [[273, 276], "v1", "dma-packet"] + ], + "(method 10 menu-picture-slider-option)": [[36, "v1", "pointer"]], + "(method 10 menu-sound-slider-option)": [[29, "v1", "pointer"]], + "(method 10 menu-center-screen-graphic-option)": [["_stack_", 16, "float"]], + "(method 52 progress)": [ + [[284, 287], "v1", "dma-packet"], + [80, "v1", "texture"], + [132, "v1", "texture"] + ], + "(method 9 progress-icon-array)": [[[108, 111], "v1", "dma-packet"]], + "hide-hud": [ + [11, "v1", "connection"], + [23, "v1", "connection"] + ], + "enable-hud": [[17, "v1", "connection"]], + "(method 13 hud-box)": [ + [[84, 89], "t3", "(inline-array vector4w)"], + [[116, 121], "t7", "(inline-array vector4w)"], + [[122, 126], "t7", "(inline-array vector4w)"], + [[126, 131], "t5", "(inline-array vector4w)"], + [[131, 136], "t4", "(inline-array vector4w)"], + [137, "t4", "(inline-array vector4w)"], + [[177, 200], "t2", "(inline-array vector4w)"], + [[116, 132], "t4", "(inline-array vector4w)"] + ], + "(method 9 hud-sprite)": [ + [34, "s3", "texture"], + [63, "s3", "texture"], + [78, "s3", "texture"], + [96, "s3", "texture"], + [85, "s3", "texture"], + [[39, 42], "s2", "(inline-array vector4w)"], + [51, "a0", "(pointer uint64)"], + [58, "a0", "(pointer uint64)"], + [[185, 196], "v1", "(inline-array vector4w)"], + [[211, 218], "t5", "(inline-array vector)"], + [[222, 229], "t5", "(inline-array vector)"], + [[230, 240], "t5", "(inline-array vector)"], + [[244, 254], "t5", "(inline-array vector)"], + [[256, 262], "t5", "(inline-array vector4w)"], + [[264, 270], "a2", "(inline-array vector4w)"], + [[280, 286], "v1", "(inline-array vector4w)"], + [[272, 278], "a2", "(inline-array vector4w)"] + ], + "(method 10 hud-box)": [[[31, 77], "v1", "(inline-array vector4w)"]], + "(method 11 hud-box)": [[[31, 77], "v1", "(inline-array vector4w)"]], + "(method 12 hud-box)": [[[31, 77], "v1", "(inline-array vector4w)"]], + "hud-create-icon": [ + [33, "a0", "process-drawable"], + [38, "a0", "manipy"] + ], + "hud-hidden?": [ + [9, "v1", "connection"], + [10, "a0", "hud"], + [12, "a0", "hud"] + ], + "ready-hud": [ + [23, "v1", "connection"], + [37, "v1", "connection"] + ], + "show-hud": [ + [22, "v1", "connection"], + [34, "v1", "connection"] + ], + "hide-hud-quick": [ + [11, "v1", "connection"], + [23, "v1", "connection"] + ], + "(method 9 hud-box)": [[[53, 84], "v1", "(inline-array vector4w)"]], + "(method 10 hud-sprite)": [ + [32, "s0", "texture"], + [242, "s0", "texture"], + [243, "s0", "texture"], + [[39, 45], "v1", "(inline-array vector4w)"], + [[230, 242], "v1", "(inline-array vector4w)"], + [[275, 332], "v1", "(inline-array vector)"], + [45, "s0", "texture"] + ], + "(method 50 progress)": [ + ["_stack_", 96, "float"], + ["_stack_", 176, "float"] + ], + "find-mission-text-at-index": [[157, "v1", "symbol"]], + "(method 11 controls-page-info)": [["_stack_", 64, "float"]], + "(method 16 hud)": [ + [127, "v1", "int"], + [147, "v1", "int"] + ], + "lookup-level-info": [ + [11, "v1", "basic"], + [21, "a1", "symbol"], + [[22, 34], "a1", "level-load-info"] + ], + "(method 29 level-group)": [[[2, 53], "v1", "pair"]], + "level-find-borrow-slot": [[[204, 211], "a2", "level"]], + "(method 19 level)": [ + [[40, 118], "a3", "symbol"], + [[52, 56], "a0", "texture-anim-array"] + ], + "level-update-after-load": [ + [[25, 58], "s1", "drawable-tree-tfrag"], + [142, "v1", "drawable-inline-array-tfrag"], + [147, "v1", "drawable-inline-array-tfrag"], + [152, "a0", "drawable-inline-array-tfrag"], + [175, "v1", "drawable-tree-instance-tie"], + [178, "v1", "drawable-tree-instance-tie"], + [393, "a1", "(pointer int32)"], + [398, "a2", "(pointer int32)"] + ], + "(method 25 level)": [ + [97, "s1", "(function object object)"], + [171, "s0", "(function object object object)"] + ], + "(method 9 level)": [ + [51, "s5", "(function object object)"], + [[143, 166], "v1", "task-mask"] + ], + "(method 10 level)": [ + [[214, 217], "v1", "symbol"], + [[216, 220], "a0", "texture-anim-array"], + [137, "s5", "(function level object)"], + [[349, 358], "a1", "type"] + ], + "(method 30 level-group)": [[87, "v0", "level"]], + "(method 10 load-state)": [ + [461, "v1", "level"], + [468, "v1", "level"] + ], + "update-sound-banks": [[131, "a0", "pair"]], + "borrow-city-expansion": [ + [23, "a0", "basic"], + [52, "s5", "basic"] + ], + "find-instance-by-name-level": [ + [11, "v1", "drawable-tree-instance-shrub"], + [38, "v1", "drawable-tree-instance-tie"] + ], + "dma-add-process-drawable": [ + [42, "a0", "foreground-work"], + [45, "a0", "foreground-work"], + [78, "a0", "foreground-work"], + [198, "t0", "(pointer int128)"] + ], + "calc-shadow-masks": [[10, "v0", "(array float)"]], + "dma-add-process-drawable-hud": [ + [[43, 59], "v1", "level"], + [11, "a0", "foreground-work"] + ], + "default-init-buffer": [[[116, 126], "a1", "dma-packet"]], + "default-end-buffer": [ + [[117, 123], "a1", "dma-packet"], + [125, "a1", "(pointer uint32)"] + ], + "display-frame-start": [ + [4, "v1", "vif-bank"], + [9, "a0", "vif-bank"] + ], + "display-frame-finish": [ + [[504, 513], "a0", "dma-packet"], + [542, "a0", "(pointer uint64)"] + ], + "(method 15 drawable-tree)": [ + [[1, 4], "v1", "drawable-inline-array-node"], + [[29, 34], "t0", "drawable-inline-array-node"], + [[28, 32], "t2", "drawable-inline-array-node"], + [[42, 46], "t2", "(pointer int8)"] + ], + "get-shadow-by-name": [[7, "v1", "process-drawable"]], + "set-shadow-by-name": [[7, "v1", "process-drawable"]], + "find-instance-by-index": [ + [26, "t1", "drawable-tree-instance-shrub"], + [40, "t1", "drawable-tree-instance-tie"] + ], + "print-prototype-list": [ + [25, "v1", "drawable-tree-instance-shrub"], + [104, "v1", "drawable-tree-instance-tie"] + ], + "draw-instance-info": [ + [[188, 203], "s5", "prototype-bucket-shrub"], + [[192, 303], "s1", "prototype-shrubbery"], + [[359, 400], "v1", "prototype-tie"], + [[44, 64], "s1", "drawable-inline-array-instance-tie"], + [[331, 450], "s5", "prototype-bucket-tie"], + [[35, 41], "v1", "drawable-tree-instance-tie"] + ], + "set-graphics-mode": [[[0, 100], "gp", "gs-bank"]], + "(method 9 screen-filter)": [[[118, 128], "t1", "rgba"]], + "display-loop-main": [[231, "t9", "(function none)"]], + "effect-param->sound-spec": [[178, "v1", "collide-shape-moving"]], + "(method 10 effect-control)": [ + [149, "v1", "collide-shape-moving"], + [427, "s3", "death-info"], + [433, "s3", "death-info"], + [435, "s3", "death-info"], + [470, "s3", "death-info"], + [476, "s3", "death-info"], + [478, "s3", "death-info"], + [483, "s3", "death-info"], + [487, "s3", "death-info"], + [507, "s3", "death-info"], + [25, "v0", "string"], + [48, "v0", "pair"] + ], + "(method 12 effect-control)": [ + [99, "gp", "(pointer int8)"], + ["_stack_", 112, "res-tag"] + ], + "process-drawable-draw-subtitles": [[26, "v0", "(array subtitle-range)"]], + "(method 25 scene-player)": [ + [102, "s1", "process-drawable"], + [163, "s1", "process-drawable"], + [166, "s1", "process-drawable"], + [169, "s1", "process-drawable"], + [172, "s1", "process-drawable"] + ], + "(method 9 scene-actor)": [ + [179, "s3", "skeleton-group"], + [286, "a0", "process-drawable"], + [290, "v1", "process-drawable"], + [294, "a0", "process-drawable"], + [370, "a0", "process-drawable"], + [549, "v1", "manipy"], + [557, "v1", "manipy"], + [563, "v1", "manipy"], + [578, "v1", "manipy"], + [584, "v1", "manipy"], + [528, "a0", "process-drawable"], + [536, "v1", "process-drawable"], + [543, "a0", "process-drawable"], + [751, "a0", "process-drawable"], + [755, "v1", "process-drawable"], + [759, "a0", "process-drawable"] + ], + "(post play-anim scene-player)": [ + [210, "s4", "process-drawable"], + [261, "s4", "process-drawable"], + [324, "s5", "process-drawable"], + [707, "v0", "sound-rpc-set-param"], + [586, "v0", "sound-rpc-set-param"] + ], + "(trans play-anim scene-player)": [ + [71, "v1", "process-drawable"], + [78, "v1", "process-drawable"] + ], + "(event play-anim scene-player)": [ + [11, "t9", "(function scene-player none)"] + ], + "(code othercam-running)": [ + [14, "s2", "process-drawable"], + [18, "s2", "process-drawable"], + [24, "s2", "process-drawable"], + [38, "s2", "process-drawable"], + [47, "s2", "process-drawable"], + [64, "s2", "process-drawable"] + ], + "(enter othercam-running)": [ + [56, "gp", "process-drawable"], + [59, "gp", "process-drawable"] + ], + "(event othercam-running)": [ + [17, "v1", "process-drawable"], + [24, "v0", "joint"], + [41, "a0", "process"] + ], + "(anon-function 7 pov-camera)": [ + [9, "v1", "float"], + [16, "v1", "float"] + ], + "target-powerup-process": [[358, "v0", "sound-rpc-set-param"]], + "cloud-track": [ + [[19, 83], "s1", "handle"], + [[29, 116], "s2", "handle"] + ], + "(method 22 com-airlock)": [ + ["_stack_", 16, "res-tag"], + ["_stack_", 32, "res-tag"], + [104, "v0", "(pointer float)"], + [143, "v0", "(pointer float)"], + [46, "v0", "airlock-options"], + [193, "v0", "pair"] + ], + "airlock-command-lookup": [ + [5, "s4", "pair"], + [15, "s4", "pair"], + [16, "v1", "pair"], + [21, "s5", "pair"], + [20, "s5", "pair"] + ], + "(anon-function 7 airlock)": [[14, "v0", "pair"]], + "(code open com-airlock)": [ + [123, "v0", "sound-rpc-set-param"], + [232, "v0", "sound-rpc-set-param"], + [442, "v0", "sound-rpc-set-param"], + [462, "v0", "sound-rpc-set-param"] + ], + "(anon-function 12 airlock)": [[14, "v0", "pair"]], + "(method 25 com-airlock)": [[90, "v0", "pair"]], + "(method 27 com-airlock)": [[108, "v0", "sound-rpc-set-param"]], + "(exit close com-airlock)": [ + [10, "v0", "sound-rpc-set-param"], + [30, "v0", "sound-rpc-set-param"] + ], + "(trans close com-airlock)": [[58, "v0", "sound-rpc-set-param"]], + "(code close com-airlock)": [ + [196, "v0", "sound-rpc-set-param"], + [303, "v0", "sound-rpc-set-param"], + [394, "v0", "sound-rpc-set-param"] + ], + "(method 26 water-anim)": [ + [52, "v0", "(pointer float)"], + ["_stack_", 16, "res-tag"] + ], + "(method 28 water-anim)": [ + [27, "v0", "vector"], + ["_stack_", 16, "res-tag"] + ], + "water-anim-event-handler": [ + [50, "s5", "water-info"], + [96, "gp", "process-focusable"], + [146, "gp", "process-focusable"], + [200, "s5", "water-info"], + [23, "v1", "float"] + ], + "(event idle blocking-plane)": [[113, "gp", "process-drawable"]], + "(method 15 proc-focusable-spawner)": [[26, "a0", "process-focusable"]], + "(method 10 idle-control)": [ + [35, "v1", "pair"], + [79, "v1", "art-joint-anim"] + ], + "(method 55 enemy)": [ + [27, "a0", "process-focusable"], + [30, "a0", "process-focusable"] + ], + "(method 59 enemy)": [ + [57, "a0", "process-focusable"], + [60, "a0", "process-focusable"] + ], + "(method 62 enemy)": [ + [2, "v1", "attack-info"], + [5, "v1", "attack-info"] + ], + "enemy-setup-gem": [[46, "v1", "float"]], + "(method 119 enemy)": [ + ["_stack_", 16, "res-tag"], + [135, "v0", "(pointer actor-group)"] + ], + "(method 113 enemy)": [[17, "v0", "process-focusable"]], + "(method 106 enemy)": [ + [16, "v1", "connection"], + [17, "v1", "collide-shape"], + [21, "v1", "collide-shape"], + [33, "a1", "process-focusable"], + [65, "v1", "connection"], + [66, "v1", "collide-shape"], + [70, "v1", "collide-shape"], + [82, "a1", "process-focusable"], + [112, "v1", "connection"], + [113, "v1", "collide-shape"], + [117, "v1", "collide-shape"], + [129, "a1", "process-focusable"], + [44, "a1", "process-focusable"], + [93, "a1", "process-focusable"], + [140, "a1", "process-focusable"] + ], + "(method 140 enemy)": [[18, "a1", "process-focusable"]], + "get-penetrate-using-from-attack-event": [ + [2, "v1", "attack-info"], + [5, "v1", "attack-info"], + [25, "v1", "collide-shape"] + ], + "(method 83 enemy)": [ + [21, "s3", "process-focusable"], + [67, "s3", "process-drawable"], + [68, "a1", "collide-shape"] + ], + "(method 82 enemy)": [ + [80, "v1", "process-drawable"], + [122, "v1", "attack-info"], + [170, "s2", "attack-info"], + [266, "s2", "attack-info"], + [286, "s4", "rigid-body-impact"], + [373, "s4", "rigid-body-impact"], + [787, "a0", "vector"], + [349, "s4", "rigid-body-impact"] + ], + "(method 147 enemy)": [[34, "a1", "process-focusable"]], + "(method 98 enemy)": [[28, "a1", "art-joint-anim"]], + "(method 96 enemy)": [[52, "s5", "art-joint-anim"]], + "(method 97 enemy)": [[28, "a1", "art-joint-anim"]], + "(method 85 enemy)": [[17, "a1", "art-joint-anim"]], + "(method 86 enemy)": [[11, "v1", "art-joint-anim"]], + "(method 124 enemy)": [ + [13, "s5", "ragdoll-proc"], + [21, "s5", "ragdoll-proc"], + [24, "s5", "ragdoll-proc"] + ], + "(method 125 enemy)": [ + [14, "s5", "ragdoll-proc"], + [42, "s5", "ragdoll-proc"], + [60, "s5", "ragdoll-proc"] + ], + "(method 126 enemy)": [ + [100, "s2", "ragdoll-proc"], + [102, "s2", "ragdoll-proc"], + [105, "s2", "ragdoll-proc"], + [115, "s2", "ragdoll-proc"], + [133, "s2", "ragdoll-proc"], + [152, "s2", "ragdoll-proc"], + [124, "s2", "ragdoll-proc"] + ], + "(method 105 enemy)": [ + [16, "a0", "process-focusable"], + [19, "a0", "process-focusable"] + ], + "(method 11 enemy)": [[12, "v0", "symbol"]], + "(code notice enemy)": [[31, "v1", "art-joint-anim"]], + "(code stare enemy)": [[23, "gp", "art-joint-anim"]], + "(code victory enemy)": [[30, "v1", "art-joint-anim"]], + "(code die enemy)": [[71, "v1", "art-joint-anim"]], + "(code die-falling enemy)": [[78, "gp", "art-joint-anim"]], + "(code view-anims enemy)": [[20, "s4", "art-joint-anim"]], + "(event gun-dark-2-stretch enemy)": [ + [8, "s5", "attack-info"], + [32, "s5", "attack-info"], + [71, "s5", "attack-info"] + ], + "(code knocked-recover enemy)": [ + [34, "v1", "art-joint-anim"], + [67, "v1", "ragdoll-proc"] + ], + "(method 114 enemy)": [ + [39, "s4", "touching-shapes-entry"], + [29, "s4", "touching-shapes-entry"], + [15, "s4", "touching-shapes-entry"], + [22, "s4", "touching-shapes-entry"], + [50, "s4", "touching-shapes-entry"], + [4, "s4", "touching-shapes-entry"], + [3, "s4", "touching-shapes-entry"] + ], + "gun-dark-2-ragdoll-start": [ + [72, "s4", "ragdoll-proc"], + [74, "s4", "ragdoll-proc"], + [77, "s4", "ragdoll-proc"], + [87, "s4", "ragdoll-proc"], + [104, "s4", "ragdoll-proc"], + [96, "s4", "ragdoll-proc"] + ], + "gun-dark-2-anim-code": [ + [127, "gp", "art-joint-anim"], + [30, "v1", "float"], + [53, "v1", "float"], + [154, "v1", "float"] + ], + "(trans gun-dark-2-stretch enemy)": [ + [136, "v1", "collide-shape-prim-sphere"], + [147, "a0", "process-focusable"], + [153, "v1", "process-focusable"], + [27, "v1", "float"] + ], + "(code hit enemy)": [[30, "v1", "art-joint-anim"]], + "(code flee enemy)": [[22, "v1", "art-joint-anim"]], + "(method 143 enemy)": [[81, "s5", "gem"]], + "(method 141 enemy)": [[44, "t1", "int"]], + "(method 56 enemy)": [ + [269, "v1", "float"], + [268, "v0", "float"] + ], + "(code debug-control nav-enemy)": [[28, "v1", "art-joint-anim"]], + "(event idle drop-plat)": [ + [23, "a0", "process-focusable"], + [55, "a0", "process-focusable"], + [58, "a0", "process-focusable"] + ], + "(event idle bouncer)": [ + [110, "v1", "attack-info"], + [116, "v1", "attack-info"] + ], + "(method 11 elevator)": [ + [35, "v1", "collide-shape-prim-group"], + ["_stack_", 32, "float"] + ], + "(method 48 elevator)": [["_stack_", 16, "float"]], + "teleport-check": [["_stack_", 16, "float"]], + "elevator-event": [ + [23, "v1", "focus"], + [361, "v1", "float"], + [133, "v1", "float"], + [89, "v1", "float"] + ], + "(method 51 elevator)": [[10, "v1", "collide-shape-prim-group"]], + "(method 63 collide-shape-moving)": [ + [298, "a0", "process-focusable"], + [300, "a0", "process-focusable"] + ], + "(method 14 rigid-body-control)": [[18, "v1", "vector"]], + "transform-rigid-body-prims": [[4, "v1", "collide-shape-prim-group"]], + "(method 67 collide-shape-moving)": [ + [8, "v1", "collide-shape-prim-group"], + [[30, 56], "s1", "collide-cache-prim"] + ], + "(method 49 rigid-body-object)": [ + [45, "s4", "process-focusable"], + [82, "s4", "process-drawable"], + [87, "s3", "attack-info"], + [89, "s3", "attack-info"], + [96, "s3", "attack-info"], + [115, "s4", "process-focusable"], + [129, "s5", "attack-info"], + [148, "v1", "focus"], + [172, "a0", "process-focusable"], + [183, "a0", "process-focusable"], + [191, "a0", "process-focusable"], + [193, "a0", "process-focusable"], + [230, "s4", "process-focusable"], + [237, "v1", "float"], + [241, "s4", "process-focusable"], + [243, "s4", "process-focusable"] + ], + "(method 47 rigid-body-object)": [ + [18, "v1", "float"], + [52, "v1", "float"], + [26, "v1", "float"] + ], + "(method 10 rigid-body-queue)": [ + [134, "a0", "process-focusable"], + [146, "a0", "rigid-body-object"], + [148, "a0", "rigid-body-object"], + [51, "s3", "process-focusable"], + [72, "s3", "rigid-body-object"], + [20, "a0", "process-focusable"] + ], + "scene-player-init": [ + [[37, 44], "s5", "(array scene)"], + [83, "v0", "(array scene)"] + ], + "(method 34 process-taskable)": [ + [58, "v0", "joint"], + [68, "v1", "collide-shape-prim-group"] + ], + "(code active process-taskable)": [ + [37, "gp", "handle"], + [72, "gp", "handle"] + ], + "(code target-warp-in)": [ + [340, "v1", "art-joint-anim"], + [13, "v0", "string"], + [128, "gp", "process"] + ], + "(post idle air-train)": [[4, "t9", "(function none)"]], + "(method 28 metalhead-shot)": [ + [29, "s5", "process-drawable"], + [32, "s5", "process-drawable"], + [10, "v0", "sound-rpc-set-param"] + ], + "(event impact metalhead-grenade-shot)": [[11, "s4", "process-focusable"]], + "(method 9 los-control)": [ + [85, "s1", "process-focusable"], + [96, "s2", "process-focusable"], + [109, "s1", "process-focusable"] + ], + "(method 0 joint-exploder-tuning)": [ + [[7, 82], "v0", "joint-exploder-tuning"] + ], + "joint-exploder-joint-callback": [ + [3, "s4", "joint-exploder"], + [24, "s4", "joint-exploder"] + ], + "(method 28 joint-exploder)": [[222, "s4", "joint-exploder-list"]], + "(enter freefall ragdoll-test)": [ + [15, "a0", "ragdoll-proc"], + [20, "a0", "ragdoll-proc"] + ], + "(trans freefall-reform ragdoll-test)": [ + [23, "gp", "ragdoll-proc"], + [29, "gp", "ragdoll-proc"] + ], + "(trans idle ragdoll-test)": [ + [55, "v1", "ragdoll-proc"], + [57, "v1", "ragdoll-proc"] + ], + "(trans freefall ragdoll-test)": [ + [32, "a0", "ragdoll-proc"], + [35, "a0", "ragdoll-proc"] + ], + "(exit freefall ragdoll-test)": [ + [12, "a0", "ragdoll-proc"], + [15, "a0", "ragdoll-proc"] + ], + "(exit tweak ragdoll-test)": [ + [12, "a0", "ragdoll-proc"], + [15, "a0", "ragdoll-proc"] + ], + "(enter tweak ragdoll-test)": [ + [15, "a0", "ragdoll-proc"], + [20, "a0", "ragdoll-proc"] + ], + "(trans reform ragdoll-test)": [ + [25, "gp", "ragdoll-proc"], + [31, "gp", "ragdoll-proc"], + [37, "gp", "ragdoll-proc"] + ], + "(trans tweak ragdoll-test)": [ + [34, "gp", "ragdoll-proc"], + [48, "gp", "ragdoll-proc"], + [40, "gp", "ragdoll-proc"], + [43, "gp", "ragdoll-proc"], + [46, "gp", "ragdoll-proc"], + [51, "gp", "ragdoll-proc"] + ], + "(method 0 debris-tuning)": [[[7, 84], "v0", "debris-tuning"]], + "(method 38 shield-sphere)": [[71, "v1", "rigid-body-impact"]], + "(code distort shield-sphere-distort)": [[14, "v1", "art-joint-anim"]], + "(trans distort shield-sphere-distort)": [ + [14, "v1", "process-drawable"], + [21, "v1", "process-drawable"] + ], + "(method 39 shield-sphere)": [ + [2, "v1", "attack-info"], + [5, "v1", "attack-info"] + ], + "(method 41 shield-sphere)": [ + [16, "v1", "attack-info"], + [27, "v1", "attack-info"] + ], + "(method 33 shield-sphere)": [ + [44, "s5", "process-focusable"], + [51, "s5", "process-focusable"] + ], + "(event time-of-day-tick)": [ + [9, "v1", "float"], + [203, "v1", "float"] + ], + "gun-yellow-deflect-reaction": [ + [33, "a0", "collide-shape-prim"], + [46, "v1", "collide-shape-prim"], + [52, "v1", "collide-shape-prim"], + [62, "s2", "gun-yellow-shot-2"], + [58, "v1", "gun-yellow-shot-2"], + [68, "s2", "gun-yellow-shot-2"], + [[9, 66], "s3", "handle"] + ], + "gun-yellow-shot-do-deflect": [ + [134, "s1", "process-focusable"], + [178, "s1", "process-focusable"], + ["_stack_", 136, "handle"], + ["_stack_", 1716, "float"], + ["_stack_", 1748, "float"] + ], + "gun-fire-yellow-1": [[33, "v0", "process"]], + "gun-fire-yellow-2": [[33, "v0", "process"]], + "gun-fire-yellow-3": [[140, "v0", "process"]], + "(method 35 gun-yellow-3-saucer)": [ + [[17, 22], "v1", "gun-yellow-3-event-msg"] + ], + "(code impact-explode gun-yellow-3-saucer)": [[34, "a0", "process"]], + "(method 36 gun-yellow-shot-2)": [[66, "s4", "touching-shapes-entry"]], + "(method 52 gun-yellow-3-saucer)": [ + [471, "a0", "process-focusable"], + [474, "a0", "process-focusable"], + [122, "s3", "process-focusable"], + [146, "s3", "process-focusable"], + ["_stack_", 1088, "float"], + ["_stack_", 3808, "float"] + ], + "(method 53 gun-yellow-3-saucer)": [[88, "v0", "process"]], + "red-2-ring-event-handler": [ + [6, "v1", "vector"], + [12, "v1", "float"] + ], + "(code active red-3-sphere)": [ + [14, "v1", "art-joint-anim"], + [66, "v1", "art-joint-anim"] + ], + "(code impact-tiny gun-red-3-grenade)": [[32, "a0", "process"]], + "(method 45 gun-red-3-grenade)": [ + [59, "a0", "process-focusable"], + [63, "a0", "process-focusable"], + [82, "a0", "process-focusable"], + [85, "a0", "process-focusable"], + ["_stack_", 1688, "float"], + ["_stack_", 1692, "float"], + ["_stack_", 1752, "float"], + ["_stack_", 1756, "float"] + ], + "(method 47 gun-red-3-grenade)": [ + [53, "s1", "process-focusable"], + [63, "s1", "process-focusable"], + [76, "s1", "process-focusable"] + ], + "(method 17 gun-red-2-shockwave)": [ + [43, "s3", "process-focusable"], + [93, "s3", "process-focusable"], + [122, "s3", "process-focusable"], + ["_stack_", 32, "vector"] + ], + "gun-fire-red-3": [ + [216, "s1", "process-focusable"], + [246, "s1", "process-focusable"], + [436, "gp", "process-focusable"], + [440, "a0", "process-focusable"], + ["_stack_", 28, "float"], + [168, "gp", "process-focusable"], + [314, "s1", "process-focusable"] + ], + "gun-fire-red-1": [ + [147, "v1", "manipy"], + [191, "v1", "manipy"], + [194, "v1", "manipy"], + [197, "v1", "manipy"] + ], + "(method 23 gun-red-shot)": [[10, "s4", "process-focusable"]], + "(method 26 gun-red-shot)": [ + [43, "a0", "connection"], + [44, "a0", "collide-shape"], + [92, "a0", "connection"], + [93, "a0", "collide-shape"] + ], + "(trans charging gun-red-2-shockwave)": [[6, "a1", "process-drawable"]], + "gun-fire-dark-1": [[38, "v0", "process"]], + "(event active gun-dark-3-sphere)": [ + [[3, 35], "v1", "gun-dark-3-sphere-init-params"] + ], + "gun-fire-dark-3": [[64, "v0", "process"]], + "(exit startup gun-dark-shot)": [[20, "v0", "sound-rpc-set-param"]], + "(code startup gun-dark-shot)": [[88, "a1", "process-focusable"]], + "(enter moving gun-dark-shot)": [[22, "a1", "process-focusable"]], + "(trans moving gun-dark-shot)": [ + [27, "s2", "process-focusable"], + [39, "a0", "process-focusable"], + [42, "a0", "process-focusable"] + ], + "(enter impact gun-dark-shot)": [ + [245, "s1", "process-focusable"], + [256, "s1", "process-focusable"], + [262, "s1", "process-focusable"], + [201, "v0", "(array float)"] + ], + "(method 20 gravity-spinner)": [ + [19, "s5", "process-focusable"], + [63, "s5", "process-focusable"] + ], + "(method 21 gravity-spinner)": [ + [19, "s5", "process-focusable"], + [26, "s5", "process-focusable"] + ], + "(anon-function 34 gun-dark-shot)": [ + [134, "s5", "process-focusable"], + [137, "s5", "process-focusable"], + [141, "s5", "process-focusable"], + [144, "s5", "process-focusable"], + [162, "s5", "process-focusable"], + [167, "s5", "process-focusable"], + [170, "s5", "process-focusable"] + ], + "gravity-spinner-init-by-other": [ + [33, "gp", "process-focusable"], + [39, "gp", "process-focusable"], + [47, "gp", "process-focusable"], + [54, "gp", "process-focusable"], + [69, "gp", "process-focusable"], + [73, "gp", "process-focusable"], + [77, "gp", "process-focusable"], + [94, "gp", "process-focusable"], + [100, "gp", "process-focusable"], + [113, "gp", "process-focusable"], + [144, "v1", "float"], + [182, "v1", "float"] + ], + "(code zero-g gravity-spinner)": [ + [71, "gp", "process-focusable"], + [100, "gp", "process-focusable"], + [104, "gp", "process-focusable"], + [137, "gp", "process-focusable"], + [144, "gp", "process-focusable"], + [165, "gp", "process-focusable"], + [174, "v1", "collide-shape-moving"], + [262, "gp", "process-focusable"], + [270, "gp", "process-focusable"], + [285, "gp", "process-focusable"], + [176, "v1", "collide-shape-moving"] + ], + "(enter zero-g gravity-spinner)": [[17, "v1", "float"]], + "(event zero-g gravity-spinner)": [ + [105, "a0", "attack-info"], + [109, "v1", "attack-info"], + [168, "s4", "process-drawable"], + [170, "s4", "process-drawable"], + [182, "s4", "process-drawable"], + [184, "s4", "process-drawable"], + [177, "s4", "process-drawable"], + ["_stack_", 36, "float"] + ], + "zero-g-wait-for-land": [ + [22, "s5", "process-focusable"], + [26, "s5", "process-focusable"], + [33, "s5", "process-focusable"], + [42, "s5", "process-focusable"], + [52, "s5", "process-focusable"], + [53, "a0", "collide-shape-moving"], + [61, "s5", "process-focusable"], + [72, "s5", "process-focusable"], + [84, "s5", "process-focusable"], + [99, "s5", "process-focusable"], + [108, "s5", "process-focusable"] + ], + "(enter zero-g-vehicle gravity-spinner)": [[17, "v1", "float"]], + "(enter launch-0 gun-dark-3-nuke)": [[15, "t9", "(function none)"]], + "(enter launch-1 gun-dark-3-nuke)": [[12, "t9", "(function none)"]], + "(enter launch-2 gun-dark-3-nuke)": [[18, "t9", "(function none)"]], + "(code impact-dud gun-dark-3-nuke)": [[39, "a0", "process"]], + "(method 54 gun-dark-3-nuke)": [[47, "s1", "process-focusable"]], + "(method 22 gravity-spinner)": [ + [18, "s3", "process-focusable"], + [24, "s3", "process-focusable"], + [29, "s3", "process-focusable"] + ], + "(method 23 gravity-spinner)": [ + [25, "gp", "process-focusable"], + [29, "gp", "process-focusable"], + [35, "gp", "process-focusable"], + [44, "gp", "process-focusable"] + ], + "(method 19 gravity-spinner)": [ + [40, "s5", "process-focusable"], + [68, "s5", "process-focusable"], + [377, "s5", "process-focusable"], + [435, "s5", "process-focusable"], + [113, "a0", "process-focusable"], + [124, "a0", "process-focusable"], + [131, "a0", "process-focusable"], + [134, "a0", "process-focusable"], + [200, "s5", "process-focusable"], + ["_stack_", 148, "process"], + ["_stack_", 156, "float"], + ["_stack_", 160, "float"], + ["_stack_", 172, "float"], + ["_stack_", 1736, "float"], + ["_stack_", 2312, "float"] + ], + "(method 16 gravity-spinner)": [ + [22, "s4", "process-focusable"], + [43, "s4", "process-focusable"] + ], + "(method 17 gravity-spinner)": [ + [101, "s4", "process-focusable"], + [127, "s4", "process-focusable"], + [149, "s4", "process-focusable"] + ], + "(method 24 gravity-spinner)": [ + [19, "s5", "process-focusable"], + [26, "s5", "process-focusable"], + [42, "s5", "process-focusable"], + [47, "s5", "process-focusable"], + [52, "s5", "process-focusable"], + [55, "s5", "process-focusable"], + [66, "s5", "process-focusable"], + [59, "s5", "process-focusable"], + [61, "s5", "process-focusable"] + ], + "(trans expand gun-gravity)": [ + [116, "v1", "float"], + [149, "v1", "float"] + ], + "(method 22 gun-gravity)": [ + [14, "v0", "process"], + [35, "v1", "gravity-ring"], + [36, "v1", "gravity-ring"], + [[51, 53], "v1", "gravity-ring"], + [101, "s1", "process-focusable"], + [113, "s1", "process-focusable"] + ], + "process-drawable-shock-effect-bullseye": [[85, "a0", "lightning-tracker"]], + "(method 14 level-group)": [ + [62, "a0", "entity-actor"], + [66, "a0", "entity-actor"] + ], + "(method 23 level-group)": [[28, "v0", "(inline-array vector)"]], + "expand-bounding-box-from-nav-meshes": [["_stack_", 16, "res-tag"]], + "expand-vis-box-with-point": [[10, "v0", "(inline-array vector)"]], + "(method 25 level-group)": [ + [24, "s3", "entity-actor"], + [112, "s3", "entity-actor"], + [120, "s3", "entity-actor"], + [143, "v0", "string"], + [56, "v0", "string"], + [99, "v0", "(inline-array vector)"] + ], + "process-drawable-scale-from-entity!": [[11, "v0", "vector"]], + "reset-actors": [ + [174, "t9", "(function level none)"], + [162, "v0", "(function level none)"] + ], + "process-status-bits": [[8, "s5", "process-drawable"]], + "(method 24 level-group)": [ + [127, "v0", "(pointer actor-group)"], + [28, "v0", "(inline-array vector)"], + ["_stack_", 28, "float"], + ["_stack_", 32, "float"], + ["_stack_", 48, "res-tag"] + ], + "(method 15 level-group)": [ + [262, "s0", "process-drawable"], + [268, "s0", "process-drawable"], + [275, "s0", "process-drawable"], + [277, "s0", "process-drawable"], + [308, "s4", "process-drawable"], + [663, "a0", "drawable-region-prim"], + [666, "a0", "drawable-region-prim"], + [726, "a0", "drawable-region-prim"], + [729, "a0", "drawable-region-prim"] + ], + "check-for-rougue-process": [ + [133, "gp", "part-tracker"], + [157, "gp", "part-spawner"], + [184, "v1", "process-drawable"], + [187, "v1", "process-drawable"], + [192, "v1", "process-drawable"], + [199, "v1", "process-drawable"], + [209, "v1", "process-drawable"], + [212, "v1", "process-drawable"], + [217, "v1", "process-drawable"], + [224, "v1", "process-drawable"] + ], + "draw-actor-marks": [ + [20, "gp", "process-drawable"], + [29, "gp", "process-drawable"], + [33, "gp", "process-drawable"], + [40, "gp", "process-drawable"], + [45, "gp", "process-drawable"], + [47, "gp", "process-drawable"], + [52, "gp", "process-drawable"], + [54, "gp", "process-drawable"], + [59, "gp", "process-drawable"], + [67, "gp", "process-drawable"], + [69, "gp", "process-drawable"], + [78, "gp", "process-drawable"], + [106, "gp", "process-drawable"], + [105, "v0", "string"], + [131, "v0", "(pointer int32)"], + [155, "gp", "process-drawable"], + [174, "v0", "string"], + [187, "gp", "process-drawable"], + [271, "gp", "process-drawable"], + [250, "gp", "process-drawable"], + [208, "v0", "(inline-array vector)"], + [120, "a2", "string"] + ], + "(anon-function 57 entity)": [ + [6, "gp", "process-drawable"], + [8, "gp", "process-drawable"], + [13, "gp", "process-drawable"], + [15, "gp", "process-drawable"] + ], + "draw-subtitle-image": [ + [[163, 194], "v1", "(pointer uint128)"], + [[195, 199], "t0", "vector4w"], + [[199, 206], "t0", "vector4w"], + [[206, 213], "a2", "vector4w"], + [[214, 220], "v1", "vector4w"], + [[223, 254], "v1", "(pointer uint128)"], + [[255, 266], "t0", "vector4w"], + [[266, 273], "a1", "vector4w"], + [[274, 280], "v1", "vector4w"] + ], + "darkjak-ball-move": [ + [52, "v1", "collide-shape-prim-group"], + [56, "a0", "collide-shape-prim-group"] + ], + "(code target-darkjak-get-on)": [[280, "v1", "art-joint-anim"]], + "(code target-darkjak-bomb0)": [ + ["_stack_", 16, "float"], + ["_stack_", 20, "float"], + [37, "v1", "art-joint-anim"], + [133, "v1", "art-joint-anim"], + [213, "v1", "art-joint-anim"], + [692, "v1", "process-drawable"], + [793, "v1", "manipy"] + ], + "darkjak-ball-slide-reaction": [[23, "v1", "darkjak-ball"]], + "(code target-darkjak-smack-charge)": [[95, "v1", "art-joint-anim"]], + "(exit target-darkjak-smack-charge)": [[61, "v0", "sound-rpc-set-param"]], + "(anon-function 21 target-darkjak)": [[62, "gp", "art-joint-anim"]], + "(code target-darkjak-running-attack)": [ + [258, "gp", "process-focusable"], + ["_stack_", 16, "float"], + ["_stack_", 20, "float"], + ["_stack_", 48, "float"], + ["_stack_", 56, "handle"], + [577, "v1", "art-joint-anim"], + [605, "v1", "art-joint-anim"], + [633, "v1", "art-joint-anim"], + [673, "v1", "art-joint-anim"], + [701, "v1", "art-joint-anim"], + [897, "v1", "art-joint-anim"] + ], + "(code target-darkjak-get-off)": [ + [174, "v1", "art-joint-anim"], + [332, "v1", "art-joint-anim"], + [424, "v1", "art-joint-anim"] + ], + "(anon-function 20 target-darkjak)": [ + [120, "v1", "art-joint-anim"], + [151, "v1", "art-joint-anim"] + ], + "(code target-darkjak-bomb1)": [ + [419, "v1", "art-joint-anim"], + ["_stack_", 160, "float"], + ["_stack_", 164, "float"] + ], + "target-bomb1-fire-shot": [[21, "s5", "process-focusable"]], + "(code target-darkjak-smack)": [ + [70, "gp", "art-joint-anim"], + [314, "v1", "art-joint-anim"], + [173, "f28", "float"], + [206, "f28", "float"], + [211, "f28", "float"], + [285, "f0", "float"] + ], + "(method 37 darkjak-ball)": [ + [72, "s0", "process-focusable"], + [81, "s0", "process-focusable"] + ], + "(method 9 lightning-bolt)": [[132, "v1", "float"]], + "(method 9 darkjak-info)": [[71, "v0", "sound-rpc-set-param"]], + "(event target-darkjak-bomb0)": [[51, "v1", "process"]], + "sparticle-track-hadouken": [[[1, 8], "a3", "darkjak-ball"]], + "gun-fire-blue-1": [[76, "v0", "process"]], + "(event inactive gun-blue-2-lightning-tracker)": [ + [4, "v1", "gun-blue-lightning-command"] + ], + "(event active gun-blue-2-lightning-tracker)": [ + [15, "v1", "gun-blue-lightning-command"] + ], + "cshape-reaction-blue-shot": [[15, "v1", "gun-blue-shot"]], + "(method 24 gun-blue-shot)": [[26, "v0", "vector"]], + "gun-fire-blue-2-old": [ + [182, "s3", "process-focusable"], + [261, "s5", "process-focusable"], + [265, "a0", "process-focusable"], + [419, "v0", "process"], + [264, "s5", "process-focusable"] + ], + "find-gun-blue-2-target-old": [[54, "s1", "process-focusable"]], + "find-gun-blue-2-target": [[49, "s2", "process-focusable"]], + "is-valid-blue-2-target": [ + [17, "v0", "process"], + [22, "s5", "process-focusable"] + ], + "(method 31 gun-blue-shot-3)": [[51, "v1", "float"]], + "gun-blue-shot-3-move": [ + [43, "a0", "process-focusable"], + [46, "a0", "process-focusable"] + ], + "gun-fire-blue-3": [ + [570, "a0", "process-focusable"], + [573, "a0", "process-focusable"], + [696, "s5", "process"], + [722, "v0", "process"], + [80, "s4", "process-focusable"], + [112, "s4", "process-focusable"], + [143, "s4", "process-focusable"], + [194, "s4", "process-focusable"], + ["_stack_", 1296, "float"], + [444, "v1", "float"], + [499, "v1", "float"], + [519, "v1", "float"], + [539, "v1", "float"], + [633, "v1", "float"], + [657, "v1", "float"] + ], + "(method 25 gun-blue-2-lightning-tracker)": [ + [183, "s2", "process-focusable"], + [358, "v0", "process"] + ], + "(method 26 gun-blue-2-lightning-tracker)": [[101, "v0", "process"]], + "(method 9 rope-constraint)": [["_stack_", 64, "vector"]], + "(top-level-login target-darkjak)": [ + [255, "a0", "(function none :behavior target)"], + [254, "a0", "(state target)"] + ], + "collide-list-fill-bg-using-line-sphere": [ + [261, "a0", "collide-hash-scratch"], + [[279, 285], "v1", "collide-hash-scratch"], + [[246, 251], "v1", "collide-hash-scratch"], + [293, "a0", "collide-hash-scratch"], + [102, "v1", "float"] + ], + "collide-list-fill-bg-using-box": [ + [223, "a0", "collide-hash-scratch"], + [255, "a0", "collide-hash-scratch"], + [208, "v1", "collide-hash-scratch"], + [210, "v1", "collide-hash-scratch"], + [212, "v1", "collide-hash-scratch"], + [241, "v1", "collide-hash-scratch"], + [243, "v1", "collide-hash-scratch"], + [246, "v1", "collide-hash-scratch"] + ], + "(method 8 collide-hash)": [ + [47, "a2", "collide-hash-scratch"], + [59, "a2", "collide-hash-scratch"], + [31, "a1", "collide-hash-scratch"], + [70, "a1", "collide-hash-scratch"], + [63, "a0", "int"], + [51, "a3", "int"] + ], + "(method 9 collide-mesh)": [ + [17, "s5", "collide-mesh-tri"], + [22, "s5", "collide-mesh-tri"], + [27, "s5", "collide-mesh-tri"], + [32, "s5", "collide-mesh-tri"], + [62, "s5", "collide-mesh-tri"] + ], + "(method 10 collide-mesh)": [[[13, 51], "s4", "collide-mesh-cache-tri"]], + "(method 13 collide-mesh)": [ + [21, "a3", "(inline-array vector)"], + [[22, 61], "a3", "vector"], + [[20, 61], "t0", "(inline-array vector)"], + [[76, 123], "v1", "collide-mesh-tri"] + ], + "(method 13 touching-list)": [[[0, 77], "v0", "touching-shapes-entry"]], + "(method 11 touching-list)": [ + [8, "s5", "touching-shapes-entry"], + [11, "s5", "touching-shapes-entry"], + [13, "s5", "touching-shapes-entry"], + [48, "s5", "touching-shapes-entry"], + [52, "s5", "touching-shapes-entry"], + [10, "s5", "touching-shapes-entry"], + [33, "s5", "touching-shapes-entry"], + [50, "s5", "touching-shapes-entry"] + ], + "(method 10 touching-list)": [[[5, 11], "s5", "touching-shapes-entry"]], + "(method 12 touching-list)": [ + [4, "gp", "touching-shapes-entry"], + [6, "gp", "touching-shapes-entry"], + [17, "gp", "touching-shapes-entry"], + [32, "gp", "touching-shapes-entry"], + [103, "gp", "touching-shapes-entry"] + ], + "(method 9 collide-edge-work)": [ + [[5, 47], "s4", "collide-edge-hold-item"], + [[6, 49], "s3", "collide-edge-edge"] + ], + "(method 9 collide-edge-edge)": [[20, "a0", "collide-shape-moving"]], + "(method 13 collide-edge-work)": [[[8, 119], "s1", "collide-edge-edge"]], + "(method 20 collide-edge-work)": [ + [100, "a0", "collide-shape-moving"], + [179, "v1", "int"], + [179, "a1", "int"] + ], + "collide-shape-draw-debug-marks": [ + [24, "v1", "connection"], + [[24, 41], "a0", "collide-shape"], + [56, "v1", "connection"], + [[56, 70], "a0", "collide-shape"], + [88, "v1", "connection"], + [[88, 104], "a0", "collide-shape"], + [71, "a0", "collide-shape"] + ], + "(method 50 collide-shape)": [ + [30, "gp", "process-drawable"], + [32, "a1", "collide-shape"], + [66, "gp", "process-focusable"], + [70, "gp", "process-focusable"], + [78, "gp", "process-focusable"], + [82, "gp", "process-focusable"], + [99, "gp", "process-focusable"] + ], + "(method 36 collide-shape)": [[[1, 40], "v1", "collide-shape-prim"]], + "(method 38 collide-shape)": [ + [[42, 80], "s5", "collide-shape-prim-mesh"], + [34, "v0", "(array collide-mesh)"] + ], + "(method 40 collide-shape)": [ + [30, "a0", "connection"], + [31, "a0", "collide-shape"], + [79, "a0", "connection"], + [80, "a0", "collide-shape-moving"], + [156, "s4", "(pointer uint64)"] + ], + "(method 45 collide-shape)": [ + [28, "a0", "connection"], + [29, "a0", "collide-shape"], + [79, "a0", "connection"], + [80, "a0", "collide-shape-moving"], + [[224, 235], "s1", "collide-shape-moving"] + ], + "(method 12 collide-shape-prim-sphere)": [ + [17, "gp", "collide-shape-prim-mesh"] + ], + "(method 13 collide-shape-prim)": [[[12, 43], "s4", "collide-shape-prim"]], + "(method 12 collide-shape-prim-group)": [ + [[12, 43], "s4", "collide-shape-prim"] + ], + "cshape-reaction-update-state": [["_stack_", 56, "collide-status"]], + "(method 17 collide-shape-prim-mesh)": [ + [[6, 11], "s2", "collide-shape-prim-group"] + ], + "(method 19 collide-shape-prim)": [[[3, 32], "s4", "collide-shape-prim"]], + "(method 18 collide-shape-prim-sphere)": [ + [79, "s4", "collide-shape-prim-mesh"] + ], + "(method 66 collide-shape-moving)": [[[29, 58], "s0", "collide-cache-prim"]], + "(method 56 collide-shape-moving)": [ + [73, "a0", "process-focusable"], + [176, "a0", "process-focusable"] + ], + "(method 18 collide-shape-prim-group)": [ + [[3, 32], "s4", "collide-shape-prim"] + ], + "(method 35 collide-shape)": [ + [27, "a0", "connection"], + [28, "a0", "collide-shape"], + [76, "a0", "connection"], + [77, "a0", "collide-shape"] + ], + "(method 44 collide-shape)": [[25, "a0", "process-drawable"]], + "(method 11 grid-hash)": [ + [[141, 147], "t6", "pointer"], + [128, "t1", "pointer"], + [149, "t4", "pointer"], + [152, "t1", "pointer"] + ], + "(method 9 actor-hash-buckets)": [ + [20, "a0", "connection"], + [22, "a0", "collide-shape"], + [121, "v1", "connection"], + [124, "s4", "collide-shape"], + [[16, 160], "s4", "collide-shape"], + [89, "a0", "collide-shape"] + ], + "(method 10 grid-hash)": [[12, "a0", "(pointer uint128)"]], + "(method 27 sphere-hash)": [[44, "s2", "(pointer int8)"]], + "(method 24 grid-hash)": [ + [78, "a0", "(pointer uint128)"], + [191, "a3", "(pointer int8)"], + [195, "a1", "(pointer uint8)"], + [237, "v1", "(pointer uint128)"] + ], + "col-rend-draw": [ + [[161, 217], "s5", "collide-cache-prim"], + [164, "v1", "collide-shape-prim-sphere"], + [[14, 152], "s3", "collide-cache-tri"], + [68, "a3", "int"], + [191, "a3", "int"] + ], + "(method 9 collide-cache)": [ + //[[28, 56], "gp", "collide-shape-prim"], + [33, "gp", "collide-cache-prim"], + [35, "gp", "collide-shape-prim"], + [[50, 56], "gp", "collide-cache-prim"], + [36, "v1", "collide-shape-prim-sphere"], + [[4, 26], "gp", "collide-cache-tri"] + ], + "(method 9 collide-mesh-cache)": [ + [[10, 83], "s4", "collide-mesh-cache-entry"], + [58, "a1", "int"] + ], + "command-get-float": [[20, "gp", "bfloat"]], + "command-get-int": [[17, "gp", "bfloat"]], + "(anon-function 2 memory-usage)": [[211, "v1", "collide-shape-moving"]], + "(method 8 process-tree)": [ + [33, "v1", "symbol"] + // [6, "a3", "symbol"] + ], + "(method 11 memory-usage-block)": [[112, "v1", "int"]], + "(method 14 draw-control)": [ + [38, "t9", "(function object object object none)"] + ], + "build-instance-list": [ + [33, "v1", "drawable-tree-instance-shrub"], + [85, "v1", "drawable-tree-instance-tie"] + ], + "debug-menu-make-continue-sub-menu": [ + [5, "v1", "symbol"], + [10, "v1", "level-load-info"], + [13, "v1", "level-load-info"], + [21, "v1", "continue-point"], + [47, "v1", "continue-point"], + [56, "v1", "continue-point"] + ], + "(anon-function 218 default-menu)": [ + [[2, 13], "v1", "texture-id"], + [[18, 29], "a1", "adgif-shader"], + [34, "v1", "texture-id"], + [[42, 44], "v1", "adgif-shader"] + ], + "(anon-function 219 default-menu)": [ + [[2, 13], "v1", "texture-id"], + [[18, 29], "a1", "adgif-shader"], + [34, "v1", "texture-id"], + [[42, 44], "v1", "adgif-shader"] + ], + "(anon-function 220 default-menu)": [ + [[3, 13], "v1", "texture-id"], + [[20, 28], "a1", "adgif-shader"], + [33, "v1", "texture-id"], + [41, "v1", "adgif-shader"] + ], + "(anon-function 221 default-menu)": [ + [[3, 13], "v1", "texture-id"], + [[20, 28], "a1", "adgif-shader"], + [33, "v1", "texture-id"], + [41, "v1", "adgif-shader"] + ], + "(anon-function 222 default-menu)": [ + [[3, 13], "v1", "texture-id"], + [[20, 28], "a1", "adgif-shader"], + [33, "v1", "texture-id"], + [41, "v1", "adgif-shader"] + ], + "(anon-function 223 default-menu)": [ + [[3, 13], "v1", "texture-id"], + [[20, 28], "a1", "adgif-shader"], + [33, "v1", "texture-id"], + [41, "v1", "adgif-shader"] + ], + "(anon-function 224 default-menu)": [ + [[3, 13], "v1", "texture-id"], + [[20, 28], "a1", "adgif-shader"], + [33, "v1", "texture-id"], + [41, "v1", "adgif-shader"] + ], + "(anon-function 225 default-menu)": [ + [[2, 13], "v1", "texture-id"], + [[18, 29], "a1", "adgif-shader"], + [34, "v1", "texture-id"], + [[42, 44], "v1", "adgif-shader"] + ], + "(anon-function 226 default-menu)": [ + [[3, 13], "v1", "texture-id"], + [[20, 28], "a1", "adgif-shader"], + [33, "v1", "texture-id"], + [41, "v1", "adgif-shader"] + ], + "(anon-function 227 default-menu)": [ + [[3, 13], "v1", "texture-id"], + [[20, 28], "a1", "adgif-shader"], + [33, "v1", "texture-id"], + [41, "v1", "adgif-shader"] + ], + "(anon-function 228 default-menu)": [ + [[3, 13], "v1", "texture-id"], + [[20, 28], "a1", "adgif-shader"], + [33, "v1", "texture-id"], + [41, "v1", "adgif-shader"] + ], + "(anon-function 229 default-menu)": [ + [[2, 13], "v1", "texture-id"], + [[18, 29], "a1", "adgif-shader"], + [34, "v1", "texture-id"], + [[42, 44], "v1", "adgif-shader"] + ], + "(anon-function 230 default-menu)": [ + [[3, 13], "v1", "texture-id"], + [[20, 28], "a1", "adgif-shader"], + [33, "v1", "texture-id"], + [41, "v1", "adgif-shader"] + ], + "(anon-function 231 default-menu)": [ + [[3, 13], "v1", "texture-id"], + [[20, 28], "a1", "adgif-shader"], + [33, "v1", "texture-id"], + [41, "v1", "adgif-shader"] + ], + "(anon-function 232 default-menu)": [ + [[3, 13], "v1", "texture-id"], + [[20, 28], "a1", "adgif-shader"], + [33, "v1", "texture-id"], + [41, "v1", "adgif-shader"] + ], + "(anon-function 233 default-menu)": [ + [[2, 13], "v1", "texture-id"], + [[18, 29], "a1", "adgif-shader"], + [34, "v1", "texture-id"], + [[42, 44], "v1", "adgif-shader"] + ], + "(anon-function 234 default-menu)": [ + [[3, 13], "v1", "texture-id"], + [[20, 28], "a1", "adgif-shader"], + [33, "v1", "texture-id"], + [41, "v1", "adgif-shader"] + ], + "(anon-function 237 default-menu)": [ + [[30, 37], "s5", "adgif-shader"], + [[5, 25], "s4", "texture-id"] + ], + "dm-float-field-tie-vanish-far-func": [ + [25, "s2", "prototype-bucket-tie"], + [31, "s2", "prototype-bucket-tie"], + [28, "s2", "prototype-bucket-tie"], + [54, "s2", "prototype-bucket-tie"], + [55, "s2", "prototype-bucket-tie"] + ], + "dm-float-field-tie-rvanish-func": [[[25, 56], "s2", "prototype-bucket-tie"]], + "all-texture-tweak-adjust": [[[35, 44], "s0", "adgif-shader"]], + "dm-debug-actor-lod-dist": [ + [7, "v1", "process-drawable"], + [13, "v1", "process-drawable"], + [40, "v1", "process-drawable"], + [50, "v0", "(pointer float)"], + ["_stack_", 16, "res-tag"] + ], + "debug-create-cam-restore": [ + [232, "a0", "level"], + [235, "a0", "level"] + ], + "(anon-function 107 default-menu)": [[7, "v1", "target-flags"]], + "glst-length-of-longest-name": [[5, "s5", "glst-named-node"]], + "glst-find-node-by-name": [[6, "s5", "glst-named-node"]], + "(code target-gun-stance)": [ + [870, "v1", "art-joint-anim"], + [184, "v1", "art-joint-anim"], + [280, "v1", "art-joint-anim"], + [377, "v1", "art-joint-anim"], + [485, "v1", "art-joint-anim"], + [573, "v1", "art-joint-anim"], + [633, "v1", "art-joint-anim"], + [693, "v1", "art-joint-anim"] + ], + "execute-part-engine": [ + [11, "v1", "connection"], + [12, "a0", "process-drawable"], + [13, "v1", "connection"], + [[19, 53], "s0", "vector"], + [23, "v1", "connection"], + [28, "v1", "connection"], + [29, "v1", "int"], + [137, "a3", "vector"], + [35, "a0", "process-drawable"] + ], + "sparticle-track-root-prim": [[3, "v1", "collide-shape"]], + "sparticle-mode-animate": [ + [5, "v1", "(array symbol)"], + [[7, 16], "a1", "(array uint32)"], + [18, "a1", "vector4w"], + [21, "a1", "(pointer int32)"], + [26, "a1", "(array int32)"], + [28, "v1", "(array int32)"], + [32, "a0", "(pointer int64)"], + // [33, "a0", "(pointer int64)"], + [44, "v1", "(pointer int32)"], + [46, "v1", "(pointer int32)"] + ], + "birth-func-texture-group": [[[2, 12], "s5", "(array int32)"]], + "(method 10 sparticle-launcher)": [[[28, 72], "gp", "(array int32)"]], + "sparticle-texture-animate": [[[0, 48], "v1", "(array int32)"]], + "sparticle-respawn-timer": [[[4, 35], "gp", "(array int32)"]], + "sparticle-respawn-heights": [[[2, 59], "gp", "(array int32)"]], + "sparticle-texture-day-night": [[[2, 78], "s2", "(array int32)"]], + "execute-particle-local-space-engine": [ + [6, "v1", "connection"], + [9, "v1", "connection"], + [10, "v1", "connection"], + [11, "t9", "(function particle-local-space-info object)"], + [15, "s5", "connection"], + [[29, 34], "a1", "particle-local-space-info"] + ], + "birth-func-flip-based-on-scale": [ + [4, "v1", "int"], + [16, "v1", "int"] + ], + "forall-particles-runner": [ + [[19, 28], "s4", "sparticle-cpuinfo"], + [34, "s4", "pointer"], + [35, "s3", "pointer"] + ], + "(method 2 sparticle-cpuinfo)": [[14, "f0", "float"]], + "sp-orbiter": [[[78, 89], "v1", "sprite-vec-data-2d"]], + "forall-particles-with-key-runner": [ + [32, "s3", "(inline-array sparticle-cpuinfo)"], + [42, "s3", "(inline-array sparticle-cpuinfo)"] + ], + "sp-process-particle-system": [[14, "a1", "vector"]], + "(method 3 sparticle-launch-control)": [[40, "f0", "float"]], + "sp-kill-particle": [ + [7, "a1", "uint"], + [7, "v1", "uint"] + ], + "sp-relaunch-setup-fields": [ + ["_stack_", 80, "(inline-array sp-field-init-spec)"] + ], + "eco-track-root-prim-fadeout": [[3, "a0", "collide-shape"]], + "process-drawable-burn-effect": [ + [28, "a0", "process-drawable"], + [108, "v1", "process-drawable"], + [49, "a0", "process-drawable"], + [64, "a0", "process-drawable"] + ], + "birth-func-vector-orient": [[[6, 23], "s3", "sprite-vec-data-2d"]], + "process-drawable-shock-skel-effect": [ + [87, "v0", "(array cspace)"], + [248, "v1", "lightning-tracker"], + [250, "v1", "lightning-tracker"] + ], + "process-drawable2-shock-effect": [[94, "a0", "lightning-tracker"]], + "process-drawable-shock-effect": [ + [211, "a0", "lightning-tracker"], + [200, "v1", "lightning-tracker"] + ], + "process-drawable-shock-effect-replace": [ + [208, "a0", "lightning-tracker"], + [197, "v1", "lightning-tracker"] + ], + "board-zap-track": [[14, "v1", "process-drawable"]], + "(event active ladder)": [ + [21, "v1", "float"], + [43, "v1", "vector"] + ], + "(event idle ladder)": [ + [32, "s2", "process-focusable"], + [14, "a0", "process-focusable"], + [35, "s2", "process-focusable"] + ], + "(code target-ladder-stance)": [ + [180, "v1", "art-joint-anim"], + [80, "v1", "art-joint-anim"] + ], + "(code target-ladder-walk-down)": [ + [88, "v0", "float"], + [89, "v1", "float"] + ], + "(code target-ladder-switch)": [[16, "v1", "art-joint-anim"]], + "(code target-ladder-jump-off)": [[17, "v1", "art-joint-anim"]], + "(code target-ladder-slide-down)": [[73, "v1", "art-joint-anim"]], + "(exit target-ladder-slide-down)": [[2, "v0", "sound-rpc-set-param"]], + "(code target-ladder-walk-up)": [ + [123, "v0", "float"], + [124, "v1", "float"] + ], + "(trans target-ladder-walk-up)": [ + [45, "v0", "float"], + [119, "v0", "float"], + [[46, 56], "v1", "float"] + ], + "(post target-ladder-start)": [[28, "t9", "(function none)"]], + "(code target-ladder-start)": [ + [20, "v1", "art-joint-anim"], + [77, "v1", "art-joint-anim"] + ], + "(post target-ladder-slide-down)": [ + [65, "t9", "(function none)"], + [3, "f0", "float"], + [34, "f0", "float"], + [51, "v0", "float"], + [52, "v1", "float"] + ], + "(trans target-ladder-walk-down)": [ + [45, "v0", "float"], + [[45, 56], "v1", "float"], + [118, "v0", "float"], + [119, "v1", "float"] + ], + "(post target-ladder)": [[41, "v0", "matrix"]], + "(trans target-ladder)": [[100, "v0", "float"]], + "region-prim-lookup-by-id": [[45, "t6", "drawable-region-prim"]], + "(method 18 drawable-tree-region-prim)": [ + [[22, 49], "s2", "drawable-region-prim"], + [5, "a0", "region-prim-area"] + ], + "(method 9 region)": [ + [[55, 60], "a0", "drawable-region-prim"], + [58, "v1", "region-prim-area"], + [4, "a0", "region-prim-area"], + [50, "v1", "drawable-region-prim"] + ], + "(method 17 drawable-tree-region-prim)": [ + [[23, 28], "a0", "drawable-region-prim"], + [4, "a0", "region-prim-area"] + ], + "command-get-trans": [ + [40, "v1", "process-drawable"], + [43, "v1", "process-drawable"], + [63, "s4", "process-drawable"], + [67, "s4", "process-drawable"], + [70, "s4", "process-drawable"], + [76, "v0", "joint"], + [78, "s4", "process-drawable"] + ], + "command-get-entity": [[10, "gp", "process"]], + "command-get-param": [[122, "gp", "bfloat"]], + "command-get-time": [[119, "gp", "bfloat"]], + "(anon-function 0 script)": [ + [48, "s0", "process-drawable"], + [53, "s0", "process-drawable"], + [55, "s0", "process-drawable"], + [61, "v0", "joint"], + [69, "s2", "process-drawable"], + [74, "s2", "process-drawable"], + [76, "s2", "process-drawable"], + [82, "v0", "joint"] + ], + "(anon-function 29 script)": [ + [12, "v1", "symbol"], + [10, "s4", "game-task-node-info"] + ], + "(anon-function 38 script)": [ + [16, "a0", "entity-actor"], + [20, "a0", "entity-actor"] + ], + "(anon-function 42 script)": [[5, "v1", "symbol"]], + "(anon-function 47 script)": [ + [44, "s4", "process-drawable"], + [48, "s4", "process-drawable"], + [53, "s4", "process-drawable"], + [59, "v0", "joint"], + [65, "s4", "process-drawable"], + [79, "s4", "process-drawable"], + [81, "s4", "process-drawable"], + [84, "s4", "process-drawable"], + [86, "s4", "process-drawable"], + [94, "gp", "(function process-drawable cspace none)"] + ], + "(anon-function 48 script)": [ + [94, "gp", "process-drawable"], + [101, "v0", "joint"], + [109, "gp", "process-drawable"], + [134, "s4", "process-drawable"], + [141, "v0", "joint"], + [149, "s4", "process-drawable"], + [169, "s4", "process-drawable"], + [163, "s4", "process-drawable"], + [123, "gp", "process-drawable"], + [129, "gp", "process-drawable"] + ], + "(anon-function 49 script)": [ + [131, "a0", "process-drawable"], + [137, "v1", "process-drawable"], + [140, "v1", "process-drawable"], + [146, "v0", "joint"], + [155, "a0", "process-drawable"], + [183, "a0", "process-drawable"], + [191, "a0", "process-drawable"], + [91, "s3", "drawable-region-prim"] + ], + "(anon-function 62 script)": [[24, "v0", "float"]], + "(anon-function 65 script)": [ + [10, "s4", "pair"], + [16, "s5", "entity-actor"], + [42, "s4", "pair"], + [43, "s4", "pair"] + ], + "(anon-function 66 script)": [ + [10, "gp", "pair"], + [55, "gp", "pair"], + [56, "gp", "pair"] + ], + "(anon-function 69 script)": [ + [14, "s5", "pair"], + [11, "s4", "process-focusable"], + [180, "s5", "pair"], + [181, "s5", "pair"] + ], + "(anon-function 70 script)": [[49, "v1", "process"]], + "(anon-function 71 script)": [[66, "v1", "process"]], + "(anon-function 15 script)": [ + [17, "v1", "pair"], + [30, "v1", "pair"], + [31, "v1", "pair"] + ], + "(anon-function 9 script)": [ + [35, "s5", "pair"], + [37, "a2", "symbol"], + [78, "v1", "process-drawable"], + [83, "a0", "process-drawable"], + [89, "v1", "process-drawable"], + [95, "v0", "joint"], + [67, "s5", "pair"], + [68, "s5", "pair"] + ], + "(anon-function 84 script)": [[21, "v1", "bfloat"]], + "(method 9 script-context)": [[138, "a0", "symbol"]], + "(anon-function 101 script)": [ + [3, "s5", "pair"], + [9, "s5", "pair"], + [10, "s5", "pair"] + ], + "(anon-function 97 script)": [ + [3, "s5", "pair"], + [13, "s5", "pair"], + [14, "s5", "pair"] + ], + "(anon-function 96 script)": [ + [3, "s5", "pair"], + [14, "s5", "pair"], + [15, "s5", "pair"] + ], + "(anon-function 95 script)": [ + [5, "s5", "pair"], + [11, "s5", "pair"], + [12, "s5", "pair"] + ], + "(anon-function 94 script)": [ + [5, "s5", "pair"], + [11, "s5", "pair"], + [12, "s5", "pair"] + ], + "(anon-function 93 script)": [ + [3, "s4", "pair"], + [6, "s3", "pair"], + [17, "s3", "pair"], + [18, "s4", "pair"], + [25, "s4", "pair"], + [26, "s4", "pair"], + [35, "s4", "pair"], + [36, "s4", "pair"] + ], + "(anon-function 92 script)": [ + [4, "s3", "pair"], + [7, "s2", "pair"], + [25, "s2", "pair"], + [26, "s4", "pair"], + [33, "s4", "pair"], + [34, "s4", "pair"], + [43, "s3", "pair"], + [44, "s3", "pair"] + ], + "(anon-function 89 script)": [[3, "t9", "(function none)"]], + "(anon-function 91 script)": [[4, "v1", "symbol"]], + "(method 10 script-context)": [[22, "s3", "symbol"]], + "command-get-process": [ + [37, "gp", "entity-actor"], + [83, "v1", "connection"], + [84, "a2", "game-task-node-info"], + [86, "v1", "connection"], + [104, "v1", "connection"], + [197, "s4", "process-drawable"], + [200, "s4", "process-drawable"], + [206, "s4", "process-drawable"], + [213, "s4", "process-drawable"], + [218, "s4", "process-drawable"] + ], + "(anon-function 7 relocate)": [ + [3, "a0", "int"], + [8, "a0", "int"] + ], + "(method 7 process)": [ + [[47, 88], "v1", "connection"], + [[120, 124], "a0", "basic"], + [[127, 130], "a0", "basic"] + ], + "(method 9 mood-control)": [[695, "v0", "sound-rpc-set-param"]], + "update-mood-pulse": [[[5, 45], "gp", "pulse-state"]], + "update-mood-electricity": [[[3, 19], "gp", "electricity-state"]], + "update-mood-florescent": [[[1, 48], "gp", "florescent-state"]], + "update-mood-flicker": [[[1, 58], "gp", "flicker-state"]], + "update-mood-light": [[[7, 175], "gp", "light-state"]], + "update-mood-flames": [[[5, 102], "gp", "flames-state"]], + "(method 23 mood-control)": [ + [121, "a1", "vector"], + [125, "a1", "vector"], + [129, "a1", "vector"], + [133, "a1", "vector"], + [137, "v1", "vector"], + [122, "a0", "vector"], + [126, "a0", "vector"], + [130, "a0", "vector"], + [134, "a0", "vector"], + [138, "a0", "vector"] + ], + "copy-mood-exterior": [ + [[16, 20], "a1", "mood-context"], + [30, "a0", "(inline-array vector)"], + [33, "a0", "(inline-array vector)"], + [31, "v1", "(inline-array vector)"], + [32, "v1", "(inline-array vector)"], + [[17, 19], "v1", "(inline-array vector)"] + ], + "copy-mood-exterior-ambi": [ + [[12, 17], "a2", "mood-context"], + [[13, 16], "v1", "mood-context"] + ], + "overide-mood-color": [ + [40, "a2", "(inline-array vector)"], + [44, "a0", "(inline-array vector)"], + [107, "a0", "mood-context"], + [[91, 107], "s3", "mood-context"] + ], + "(method 11 sky-work)": [[[7, 63], "s3", "mood-context"]], + "sky-make-sun-data": [[[7, 58], "s3", "sky-sun-data"]], + "update-mood-ctysluma": [[[23, 72], "s5", "ctysluma-states"]], + "sparticle-track-sun": [[148, "s4", "vector"]], + "foreground-draw-hud": [ + [26, "t2", "foreground-work"], + [36, "a1", "foreground-work"], + [79, "t2", "foreground-work"], + [[85, 102], "t2", "(pointer uint128)"], + [166, "a1", "int"], + [172, "a0", "foreground-work"], + [12, "t0", "foreground-work"], + [31, "t1", "foreground-work"], + [103, "t1", "vu-lights"], + [164, "a0", "(pointer uint128)"], + [90, "t1", "vu-lights"], + [[93, 99], "t1", "(pointer uint128)"], + [101, "t1", "(pointer uint128)"], + [[42, 49], "t6", "bone-calculation"], + [[0, 200], "at", "foreground-work"] + ], + "free-eye-index": [[30, "a2", "eye-control"]], + "update-eyes": [ + [23, "v1", "process-drawable"], + [29, "v1", "process-drawable"] + ], + "render-eyes-64": [ + [[77, 82], "v1", "dma-gif-packet"], + [[88, 93], "s0", "adgif-shader"], + [[132, 164], "v1", "(inline-array vector4w)"], + [[244, 274], "a1", "(inline-array vector4w)"], + [[284, 292], "v1", "dma-gif-packet"], + [[298, 303], "s0", "adgif-shader"], + [[376, 406], "a1", "(inline-array vector4w)"], + [[442, 450], "v1", "dma-gif-packet"], + [[456, 461], "s0", "adgif-shader"], + [[535, 562], "a1", "(inline-array vector4w)"], + [[575, 580], "v1", "dma-gif-packet"], + [[586, 591], "s0", "adgif-shader"], + [[664, 694], "a1", "(inline-array vector4w)"], + [[733, 738], "v1", "dma-gif-packet"], + [[744, 749], "s0", "adgif-shader"], + [[845, 874], "a1", "(inline-array vector4w)"], + [[887, 892], "v1", "dma-gif-packet"], + [[898, 903], "s0", "adgif-shader"], + [[1003, 1029], "a1", "(inline-array vector4w)"], + [180, "a0", "int"], + [188, "a1", "int"], + [310, "a0", "int"], + [318, "a1", "int"], + [468, "a0", "int"], + [476, "a1", "int"], + [598, "a0", "int"], + [606, "a1", "int"], + [756, "a0", "int"], + [764, "a1", "int"], + [910, "a0", "int"], + [918, "a1", "int"] + ], + "render-eyes-32": [ + [[77, 82], "v1", "dma-gif-packet"], + [[88, 93], "s0", "adgif-shader"], + [[132, 164], "v1", "(inline-array vector4w)"], + [[244, 274], "a1", "(inline-array vector4w)"], + [[287, 292], "v1", "dma-gif-packet"], + [[298, 303], "s0", "adgif-shader"], + [[376, 406], "a1", "(inline-array vector4w)"], + [[445, 450], "v1", "dma-gif-packet"], + [[456, 461], "s0", "adgif-shader"], + [[532, 562], "a1", "(inline-array vector4w)"], + [[575, 580], "v1", "dma-gif-packet"], + [[586, 591], "s0", "adgif-shader"], + [[664, 694], "a1", "(inline-array vector4w)"], + [[733, 738], "v1", "dma-gif-packet"], + [[744, 749], "s0", "adgif-shader"], + [[845, 874], "a1", "(inline-array vector4w)"], + [[887, 892], "v1", "dma-gif-packet"], + [[898, 903], "s0", "adgif-shader"], + [[1000, 1029], "a1", "(inline-array vector4w)"], + [180, "a0", "int"], + [188, "a1", "int"], + [910, "a0", "int"], + [918, "a1", "int"], + [310, "a0", "int"], + [318, "a1", "int"], + [468, "a0", "int"], + [476, "a1", "int"], + [598, "a0", "int"], + [606, "a1", "int"], + [756, "a0", "int"], + [764, "a1", "int"] + ], + "(method 28 path-control)": [["_stack_", 124, "float"]], + "collision-edit-get-prim": [[11, "v1", "collide-shape"]], + "collision-edit-get-max-prim": [[11, "v1", "collide-shape"]], + "print-actual-collision": [ + [12, "v1", "collide-shape"], + [182, "v1", "collide-shape"], + [83, "v1", "collide-shape-prim-mesh"], + [87, "v1", "(array string)"] + ], + "print-default-collision": [ + [23, "v1", "process-drawable"], + [27, "v1", "process-drawable"], + [55, "v1", "process-drawable"], + [66, "v1", "process-drawable"], + [76, "v0", "(array collide-mesh)"], + [138, "v1", "process-drawable"], + [157, "v1", "process-drawable"], + [267, "a1", "process-drawable"], + [277, "v1", "process-drawable"], + [375, "v1", "process-drawable"], + [[190, 250], "a0", "(inline-array collide-cache-tri)"] + ], + "(method 10 collision-edit-info)": [[[495, 538], "s4", "collide-cache-tri"]], + "(event slide-control-ride slide-control)": [ + [21, "gp", "process-drawable"], + [32, "v1", "vector"], + [36, "v1", "vector"], + [28, "v1", "vector"] + ], + "(code target-tube-walk)": [ + [44, "v1", "art-joint-anim"], + [129, "v1", "art-joint-anim"] + ], + "(code target-tube-start)": [[163, "v1", "float"]], + "(trans active simple-nav-sphere)": [ + [10, "v1", "process-drawable"], + [14, "a0", "collide-shape"], + [17, "a0", "collide-shape"] + ], + "simple-nav-sphere-event-handler": [ + [11, "a0", "collide-shape"], + [14, "a0", "collide-shape"], + [24, "a0", "collide-shape"], + [26, "a0", "collide-shape"], + [28, "a0", "collide-shape"], + [21, "v1", "float"] + ], + "target-mech-handler": [ + [94, "a0", "process"], + [[198, 380], "s3", "attack-info"] + ], + "mech-update-ik": [ + [3, "v1", "process-drawable"], + [36, "s5", "collide-shape"], + [41, "s5", "collide-shape"], + [85, "s5", "collide-shape-moving"] + ], + "target-mech-collision": [[108, "v0", "carry-info"]], + "(anon-function 8 target-mech)": [ + [4, "gp", "target"], + [10, "gp", "target"], + [14, "gp", "target"] + ], + "(anon-function 9 target-mech)": [ + [6, "v1", "target"], + [10, "v1", "target"], + [16, "v1", "target"], + [20, "v1", "target"], + [24, "v1", "target"], + [28, "v1", "target"], + [32, "v1", "target"] + ], + "(event target-mech-grab)": [[27, "a0", "process"]], + "(code target-mech-get-off)": [[67, "v1", "art-joint-anim"]], + "(code target-mech-get-up)": [ + [74, "v1", "process-drawable"], + [80, "v1", "process-drawable"], + [115, "v1", "art-joint-anim"] + ], + "(code target-mech-get-on)": [ + [74, "v1", "process-drawable"], + [80, "v1", "process-drawable"], + [115, "v1", "art-joint-anim"] + ], + "(code target-mech-carry-throw)": [ + [51, "v0", "carry-info"], + [112, "v0", "carry-info"] + ], + "(enter target-mech-carry-hit-ground)": [[3, "v0", "sound-rpc-set-param"]], + "(exit target-mech-carry-drag)": [ + [28, "v0", "sound-rpc-set-param"], + [11, "v0", "sound-rpc-set-param"] + ], + "(code target-mech-carry-walk)": [[80, "f0", "float"]], + "(code target-mech-carry-drop)": [ + [42, "v0", "carry-info"], + [110, "v1", "art-joint-anim"], + [176, "v0", "carry-info"], + [283, "v0", "sound-rpc-set-param"], + [316, "v0", "sound-rpc-set-param"] + ], + "(code target-mech-carry-pickup)": [ + [137, "v0", "carry-info"], + [377, "v1", "art-joint-anim"], + [541, "v0", "carry-info"], + [574, "f0", "float"] + ], + "(code target-mech-death)": [ + [410, "gp", "art-joint-anim"], + [731, "v1", "art-joint-anim"] + ], + "(code target-mech-walk)": [[91, "f0", "float"]], + "(code target-mech-punch)": [ + [107, "v1", "art-joint-anim"], + [135, "v1", "art-joint-anim"], + [163, "v1", "art-joint-anim"], + [191, "v1", "art-joint-anim"], + [231, "v1", "art-joint-anim"], + [259, "v1", "art-joint-anim"], + [287, "v1", "art-joint-anim"], + [315, "v1", "art-joint-anim"] + ], + "(event target-mech-punch)": [ + [45, "gp", "collide-query"], + [53, "s4", "collide-shape-prim"], + [68, "s5", "process-focusable"], + [104, "gp", "collide-query"], + [109, "s4", "collide-shape-prim"], + [137, "s5", "process-focusable"], + [166, "gp", "collide-query"], + [213, "gp", "collide-query"] + ], + "target-mech-punch-pick": [ + [227, "s5", "art-joint-anim"], + [246, "s5", "art-joint-anim"] + ], + "(code target-mech-jump)": [[26, "t9", "(function none)"]], + "(enter target-mech-hit-ground)": [[3, "v0", "sound-rpc-set-param"]], + "(method 33 flut)": [[8, "v0", "(array collide-shape)"]], + "(event target-flut-grab)": [[35, "a0", "process"]], + "(post target-flut-kanga-catch)": [[21, "s5", "process-focusable"]], + "(code target-flut-kanga-catch)": [ + [62, "s5", "art-joint-anim"], + [127, "s5", "process-focusable"], + [137, "s5", "process-focusable"], + [187, "s5", "process-focusable"] + ], + "target-flut-standard-event-handler": [[305, "a0", "process"]], + "target-flut-hit-ground-anim": [ + [137, "v1", "art-joint-anim"], + [212, "v1", "art-joint-anim"] + ], + "(code target-flut-run-wild)": [[72, "v1", "art-joint-anim"]], + "(code target-flut-double-jump)": [[14, "v1", "art-joint-anim"]], + "(code target-flut-stance)": [ + [87, "v1", "art-joint-anim"], + [153, "v1", "art-joint-anim"], + [219, "v1", "art-joint-anim"] + ], + "(trans target-flut-walk)": [ + [144, "f0", "float"], + [149, "f1", "float"] + ], + "(code target-flut-walk)": [[65, "v1", "art-joint-anim"]], + "(event target-flut-running-attack)": [ + [40, "v1", "process-drawable"], + [46, "s5", "collide-shape"] + ], + "(code target-flut-air-attack-hit-ground)": [[81, "v1", "art-joint-anim"]], + "(code target-flut-air-attack)": [[78, "v1", "art-joint-anim"]], + "flut-update-ik": [ + [3, "v1", "process-drawable"], + [36, "s5", "collide-shape"], + [41, "s5", "collide-shape"], + [96, "s5", "collide-shape-moving"] + ], + "(anon-function 74 target-flut)": [ + [6, "gp", "target"], + [10, "gp", "target"], + [16, "gp", "target"], + [24, "gp", "target"], + [33, "gp", "target"], + [42, "a0", "target"], + [49, "gp", "target"], + [56, "gp", "target"] + ], + "(anon-function 21 target-flut)": [[58, "v1", "art-joint-anim"]], + "(code target-flut-death)": [ + [609, "a1", "art-joint-anim"], + [698, "a1", "art-joint-anim"] + ], + "(code target-flut-get-on)": [ + [75, "s3", "process-drawable"], + [72, "s2", "process-drawable"], + [204, "v1", "process-drawable"], + [201, "s3", "process-drawable"] + ], + "(code target-flut-running-attack)": [ + [129, "a0", "uint"], + [298, "v1", "art-joint-anim"] + ], + "(trans target-flut-running-attack)": [[87, "v1", "int"]], + "(anon-function 20 target-flut)": [ + [119, "v1", "art-joint-anim"], + [284, "v1", "art-joint-anim"] + ], + "(method 14 minimap)": [ + [84, "v1", "process-drawable"], + [99, "v1", "entity-actor"], + [108, "v1", "process-drawable"], + [112, "s2", "entity-actor"], + [93, "s2", "basic"] + ], + "(method 12 minimap)": [[18, "v0", "connection-minimap"]], + "(method 15 minimap)": [ + [48, "s2", "(pointer uint128)"], + [[85, 90], "s1", "(pointer uint128)"], + [[282, 287], "s3", "(pointer uint128)"], + [[290, 293], "s3", "(pointer uint128)"], + [[294, 301], "v1", "(inline-array vector4w)"], + [[302, 307], "v1", "(inline-array vector4w)"], + [[313, 322], "v1", "(inline-array vector4w)"], + [[324, 329], "v1", "(inline-array vector4w)"], + [[335, 344], "v1", "(inline-array vector4w)"], + [[345, 351], "v1", "(inline-array vector4w)"], + [[357, 366], "v1", "(inline-array vector4w)"], + [[368, 374], "v1", "(inline-array vector4w)"], + [[380, 389], "v1", "(inline-array vector4w)"] + ], + "(method 19 minimap)": [ + [[114, 144], "s3", "(inline-array vector4w)"], + [[151, 155], "v1", "(inline-array vector4w)"], + [[157, 161], "a0", "(inline-array vector4w)"], + [[163, 168], "v1", "(inline-array vector4w)"], + [[170, 174], "v1", "(inline-array vector4w)"] + ], + "(method 18 level)": [[[13, 961], "s5", "level-memory-mode"]], + "(method 24 minimap)": [ + [[16, 21], "v1", "adgif-shader"], + [[90, 98], "v1", "(inline-array vector)"], + [[107, 116], "v1", "(inline-array vector)"], + [[125, 133], "v1", "(inline-array vector)"], + [[142, 151], "v1", "(inline-array vector)"], + [77, "s3", "(pointer uint128)"], + [79, "s3", "(pointer uint128)"], + [[100, 104], "a0", "(inline-array vector4w)"], + [[118, 122], "v1", "(inline-array vector4w)"], + [[135, 139], "a0", "(inline-array vector4w)"], + [[153, 157], "v1", "(inline-array vector4w)"], + [[172, 175], "s2", "adgif-shader"] + ], + "(method 23 minimap)": [ + [28, "a0", "process-drawable"], + [62, "v1", "process-drawable"], + [81, "a0", "process-drawable"], + [319, "a1", "(pointer uint128)"], + [321, "a0", "(inline-array vector4w)"], + [[336, 344], "v1", "(inline-array vector)"], + [[351, 361], "v1", "(inline-array vector4w)"], + [[365, 373], "v1", "(inline-array vector)"], + [[380, 390], "v1", "(inline-array vector4w)"], + [[393, 402], "v1", "(inline-array vector)"], + [[409, 419], "v1", "(inline-array vector4w)"], + [[423, 432], "v1", "(inline-array vector)"], + [[439, 449], "v1", "(inline-array vector4w)"] + ], + "(method 26 minimap)": [ + [34, "a0", "process-drawable"], + [49, "v1", "process-drawable"], + [64, "a0", "process-drawable"], + [305, "a1", "(pointer uint128)"], + [[310, 319], "a0", "(inline-array vector4w)"], + [[322, 330], "v1", "(inline-array vector)"], + [[337, 347], "v1", "(inline-array vector4w)"], + [[351, 359], "v1", "(inline-array vector)"], + [[366, 376], "v1", "(inline-array vector4w)"], + [[379, 388], "v1", "(inline-array vector)"], + [[395, 405], "v1", "(inline-array vector4w)"], + [[409, 418], "v1", "(inline-array vector)"], + [[425, 435], "v1", "(inline-array vector4w)"] + ], + "(method 17 minimap)": [ + [28, "a0", "process-drawable"], + [68, "v1", "process-drawable"], + [87, "a0", "process-drawable"], + [[353, 360], "a0", "(pointer uint128)"], + [364, "a0", "(pointer uint128)"], + [367, "a0", "(pointer uint128)"], + [[372, 381], "v1", "(inline-array vector4w)"], + [[384, 392], "v1", "(inline-array vector)"], + [[399, 408], "v1", "(inline-array vector4w)"], + [[412, 420], "v1", "(inline-array vector)"], + [[427, 436], "v1", "(inline-array vector4w)"], + [[439, 448], "v1", "(inline-array vector)"], + [[455, 464], "v1", "(inline-array vector4w)"], + [[468, 477], "v1", "(inline-array vector)"], + [[484, 493], "v1", "(inline-array vector4w)"] + ], + "(method 18 minimap)": [ + [28, "a0", "process-drawable"], + [68, "v1", "process-drawable"], + [87, "a0", "process-drawable"], + [360, "t1", "(pointer uint128)"], + [363, "t1", "(pointer uint128)"], + [365, "t0", "(pointer uint128)"], + [[368, 377], "t0", "(inline-array vector4w)"], + [[379, 383], "a3", "(inline-array vector4w)"], + [[390, 399], "a3", "(inline-array vector4w)"], + [[401, 405], "a3", "(inline-array vector4w)"], + [[412, 421], "a2", "(inline-array vector4w)"], + [[423, 427], "a2", "(inline-array vector4w)"], + [[434, 443], "a1", "(inline-array vector4w)"], + [[445, 449], "a1", "(inline-array vector4w)"], + [[456, 465], "v1", "(inline-array vector4w)"] + ], + "(method 21 minimap)": [ + [[14, 17], "s3", "(pointer uint128)"], + [71, "s3", "(pointer uint128)"], + [73, "s3", "(pointer uint128)"], + [[217, 224], "v1", "(inline-array vector4w)"], + [[226, 235], "v1", "(inline-array vector)"], + [[236, 241], "v1", "(inline-array vector4w)"], + [[243, 252], "v1", "(inline-array vector)"], + [[254, 259], "v1", "(inline-array vector4w)"], + [[261, 270], "v1", "(inline-array vector)"], + [[271, 277], "v1", "(inline-array vector4w)"], + [[279, 288], "v1", "(inline-array vector)"], + [[290, 296], "v1", "(inline-array vector4w)"], + [[380, 385], "s2", "(pointer uint128)"], + [[425, 430], "s3", "(pointer uint128)"], + [[498, 503], "s3", "(pointer uint128)"], + [[511, 514], "s3", "(pointer uint128)"], + [[516, 523], "v1", "(inline-array vector4w)"], + [[524, 528], "v1", "(inline-array vector4w)"], + [[529, 534], "v1", "(inline-array vector4w)"], + [[536, 541], "v1", "(inline-array vector4w)"], + [[543, 549], "v1", "(inline-array vector4w)"] + ], + "(method 16 minimap)": [ + [30, "v1", "process-drawable"], + [34, "v1", "process-drawable"], + [56, "v1", "entity-actor"], + [66, "a0", "process-drawable"], + [77, "a0", "entity-actor"], + [50, "v1", "entity-actor"], + [[542, 545], "v1", "(pointer uint128)"], + [[548, 557], "t1", "(inline-array vector4w)"], + [[558, 562], "a0", "(inline-array vector4w)"], + [[568, 578], "a0", "(inline-array vector4w)"], + [[579, 583], "a0", "(inline-array vector4w)"], + [[589, 599], "v1", "(inline-array vector4w)"] + ], + "(method 10 engine-minimap)": [[6, "s5", "connection-minimap"]], + "(method 14 engine-minimap)": [ + [159, "a0", "entity-actor"], + [152, "v1", "entity-actor"] + ], + "(method 12 lightning-bolt)": [ + ["_stack_", 56, "float"], + ["_stack_", 236, "float"] + ], + "(method 15 lightning-bolt)": [ + [47, "v1", "float"], + [64, "v1", "float"] + ], + "(method 21 lightning-bolt)": [ + [49, "v1", "float"], + [77, "v1", "float"], + ["_stack_", 32, "float"] + ], + "(method 20 lightning-bolt)": [ + [15, "v1", "float"], + [32, "v1", "float"] + ], + "(method 17 lightning-bolt)": [[36, "v1", "float"]], + "(method 11 lightning-bolt)": [ + ["_stack_", 24, "float"], + ["_stack_", 40, "float"], + ["_stack_", 68, "float"], + ["_stack_", 72, "float"] + ], + "(method 16 lightning-bolt)": [["_stack_", 176, "rgba"]], + "(method 28 nav-mesh)": [[[22, 78], "s4", "nav-engine"]], + "(method 12 nav-engine)": [ + [[22, 28], "v1", "connection"], + [[29, 31], "a0", "process-focusable"], + [[34, 86], "s2", "collide-shape"], + [90, "v1", "collide-shape-prim-group"], + [110, "s2", "collide-shape-prim-sphere"] + ], + "(method 13 nav-engine)": [ + [[53, 65], "s4", "nav-mesh"], + [[38, 50], "s3", "nav-mesh"] + ], + "nav-control-validate": [ + [29, "s5", "int"], + [29, "v1", "int"] + ], + "connection-list-validate": [[5, "gp", "connection"]], + "(method 25 nav-mesh)": [ + [16, "v0", "(inline-array sphere)"], + ["_stack_", 16, "res-tag"] + ], + "(method 46 nav-mesh)": [["_stack_", 28, "float"]], + "(method 48 nav-mesh)": [ + [15, "v1", "entity-nav-mesh"], + [[34, 43], "v1", "nav-mesh-link"] + ], + "compute-dir-parm": [ + [18, "f0", "float"], + [8, "a2", "uint"], + [10, "v1", "float"] + ], + "(method 18 nav-control)": [ + [252, "a2", "float"], + [250, "a3", "uint"], + [250, "t0", "uint"] + ], + "(code hit nav-enemy)": [[30, "v1", "art-joint-anim"]], + "(code active nav-enemy)": [ + [30, "v1", "art-joint-anim"], + [127, "v1", "art-joint-anim"], + [189, "v1", "art-joint-anim"], + [298, "v1", "art-joint-anim"] + ], + "(code notice nav-enemy)": [[31, "v1", "art-joint-anim"]], + "(enter notice nav-enemy)": [ + [21, "a0", "process-focusable"], + [24, "a0", "process-focusable"] + ], + "(code taunt nav-enemy)": [[84, "v1", "art-joint-anim"]], + "(code pacing nav-enemy)": [[34, "gp", "art-joint-anim"]], + "(trans pacing nav-enemy)": [ + [14, "a0", "process-focusable"], + [17, "a0", "process-focusable"] + ], + "(enter circling nav-enemy)": [ + [69, "gp", "process-focusable"], + [73, "a0", "process-focusable"], + [72, "gp", "process-focusable"] + ], + "(code circling nav-enemy)": [[34, "gp", "art-joint-anim"]], + "(trans circling nav-enemy)": [ + [14, "a0", "process-focusable"], + [17, "a0", "process-focusable"] + ], + "(enter pacing nav-enemy)": [ + [103, "gp", "process-focusable"], + [107, "a0", "process-focusable"], + [106, "gp", "process-focusable"] + ], + "(enter taunt nav-enemy)": [ + [37, "gp", "process-focusable"], + [41, "a0", "process-focusable"], + [40, "gp", "process-focusable"] + ], + "(code stare nav-enemy)": [[23, "gp", "art-joint-anim"]], + "nav-enemy-stare-post": [ + [24, "a0", "process-focusable"], + [27, "a0", "process-focusable"] + ], + "nav-enemy-face-focus-post": [ + [24, "a0", "process-focusable"], + [27, "a0", "process-focusable"] + ], + "nav-enemy-flee-post": [ + [18, "a0", "process-focusable"], + [21, "a0", "process-focusable"] + ], + "nav-enemy-chase-post": [ + [15, "a0", "process-focusable"], + [18, "a0", "process-focusable"] + ], + "(method 119 nav-enemy)": [["_stack_", 16, "res-tag"]], + "(method 59 nav-enemy)": [ + [57, "a0", "process-focusable"], + [60, "a0", "process-focusable"] + ], + "(method 167 nav-enemy)": [ + [17, "v1", "process-focusable"], + [21, "a0", "process-focusable"], + [20, "v1", "process-focusable"] + ], + "(method 171 nav-enemy)": [ + [18, "s5", "process-focusable"], + [35, "s5", "process-focusable"], + [39, "a0", "process-focusable"], + [38, "s5", "process-focusable"] + ], + "(method 172 nav-enemy)": [ + [22, "v1", "process-focusable"], + [26, "a0", "process-focusable"], + [25, "v1", "process-focusable"] + ], + "(method 16 nav-mesh)": [ + [27, "v1", "int"], + [22, "v1", "int"], + [24, "a0", "int"], + [26, "a0", "int"] + ], + "(method 15 nav-mesh)": [ + [18, "v1", "int"], + [20, "a2", "int"], + [22, "a2", "int"] + ], + "(code active monster-frog)": [ + [27, "v1", "art-joint-anim"], + [80, "v1", "art-joint-anim"], + [172, "v1", "art-joint-anim"], + [234, "v1", "art-joint-anim"], + [343, "v1", "art-joint-anim"] + ], + "(code attack-recover monster-frog)": [ + [10, "v1", "art-joint-anim"], + [87, "v1", "art-joint-anim"], + [158, "v1", "art-joint-anim"] + ], + "(code attack monster-frog)": [[19, "v1", "art-joint-anim"]], + "(method 85 monster-frog)": [ + [19, "v1", "art-joint-anim"], + [54, "v1", "art-joint-anim"], + [89, "v1", "art-joint-anim"], + [121, "v1", "art-joint-anim"] + ], + "(method 86 monster-frog)": [ + [19, "v1", "art-joint-anim"], + [54, "v1", "art-joint-anim"], + [89, "v1", "art-joint-anim"], + [121, "v1", "art-joint-anim"] + ], + "(post turn monster-frog)": [ + [24, "a0", "process-focusable"], + [27, "a0", "process-focusable"] + ], + "(code turn monster-frog)": [ + [21, "v1", "art-joint-anim"], + [79, "v1", "art-joint-anim"] + ], + "(code hostile monster-frog)": [ + [16, "gp", "process-focusable"], + [117, "v1", "art-joint-anim"], + [202, "v1", "art-joint-anim"] + ], + "(code notice monster-frog)": [ + [23, "v1", "art-joint-anim"], + [71, "v1", "art-joint-anim"], + [103, "a0", "process-focusable"], + [106, "a0", "process-focusable"], + [149, "v1", "art-joint-anim"] + ], + "(code ambush monster-frog)": [ + [21, "a0", "process-focusable"], + [24, "a0", "process-focusable"], + [68, "v1", "art-joint-anim"] + ], + "monster-frog-hop-fast-code": [ + [15, "v1", "art-joint-anim"], + [72, "v1", "art-joint-anim"] + ], + "monster-frog-hop-slow-code": [ + [231, "v1", "art-joint-anim"], + [288, "v1", "art-joint-anim"], + [46, "v1", "art-joint-anim"], + [117, "v1", "art-joint-anim"] + ], + "update-mood-mineb": [ + [41, "f0", "float"], + [45, "f0", "float"] + ], + "(code extended min-bridge)": [[10, "v1", "art-joint-anim"]], + "(code extend min-bridge)": [[49, "v1", "art-joint-anim"]], + "(code extended min-folding-plat)": [[15, "v1", "art-joint-anim"]], + "(code extend min-folding-plat)": [[44, "v1", "art-joint-anim"]], + "(method 11 min-falling-step)": [["_stack_", 16, "res-tag"]], + "(method 11 rat-spawner)": [["_stack_", 16, "res-tag"]], + "(method 0 flow-control)": [["_stack_", 16, "res-tag"]], + "(code lowered min-falling-step)": [[18, "v1", "art-joint-anim"]], + "(code lowering min-falling-step)": [[65, "v1", "art-joint-anim"]], + "(code idle min-falling-step)": [[28, "v1", "art-joint-anim"]], + "(code resetting min-falling-elevator)": [[25, "v1", "art-joint-anim"]], + "(code falling min-falling-elevator)": [[10, "v1", "art-joint-anim"]], + "(code unstable min-falling-elevator)": [ + [36, "v1", "art-joint-anim"], + [88, "v1", "art-joint-anim"] + ], + "(trans active min-moving-plat-spooler)": [[12, "v0", "sound-rpc-set-param"]], + "min-ramp-callback": [[6, "v1", "min-ramp"]], + "(post arrived min-falling-elevator)": [[4, "t9", "(function none)"]], + "(post running min-falling-elevator)": [[4, "t9", "(function none)"]], + "min-falling-elevator-callback": [[[3, 31], "v1", "min-falling-elevator"]], + "(post running min-boss-elev)": [[50, "t9", "(function none)"]], + "(code open min-elev-doors)": [[25, "v1", "art-joint-anim"]], + "(post waiting min-bomb-elevator)": [[4, "t9", "(function none)"]], + "(post running min-bomb-elevator)": [ + [4, "t9", "(function none)"], + [15, "v1", "process-drawable"] + ], + "(code lowering min-target-sign)": [[15, "v1", "art-joint-anim"]], + "(code running min-rat-engine)": [ + [10, "v1", "art-joint-anim"], + [139, "v1", "art-joint-anim"], + [114, "a0", "entity-actor"], + [118, "a0", "entity-actor"] + ], + "(code shutdown min-rat-engine)": [[14, "v1", "art-joint-anim"]], + "(enter shutdown min-rat-engine)": [[2, "v1", "collide-shape-prim-group"]], + "(event idle min-target-sign)": [[[6, 42], "gp", "touching-shapes-entry"]], + "(method 11 min-target-sign)": [ + [62, "v1", "collide-shape-prim-group"], + [[65, 71], "v1", "collide-shape-prim-group"] + ], + "(method 11 min-rat-engine)": [["_stack_", 16, "res-tag"]], + "(method 21 min-target-sign)": [[[21, 25], "gp", "collide-shape-prim-group"]], + "min-bomb-elevator-callback": [[[3, 31], "v1", "min-bomb-elevator"]], + "(enter running min-rat-engine)": [[68, "v1", "collide-shape-prim-group"]], + "mineb-activate": [ + ["_stack_", 16, "res-tag"], + [17, "v0", "(pointer actor-group)"], + [41, "a0", "entity-actor"], + [45, "a0", "entity-actor"] + ], + "(event up-idle basebutton)": [ + [4, "v1", "attack-info"], + [32, "v1", "attack-info"], + [37, "v1", "attack-info"] + ], + "(method 34 basebutton)": [[35, "v1", "art-joint-anim"]], + "(method 34 min-crane-switch)": [[35, "v1", "art-joint-anim"]], + "joint-mod-rat-engine-callback": [[6, "v1", "min-rat-engine"]], + "(method 27 min-rat-engine)": [[14, "a2", "process-focusable"]], + "(method 11 rat-light-manager)": [["_stack_", 16, "res-tag"]], + "(code idle manta)": [ + [100, "v1", "art-joint-anim"], + [46, "v1", "art-joint-anim"] + ], + "manta-fly-code": [ + [168, "v1", "art-joint-anim"], + [196, "v1", "art-joint-anim"] + ], + "(code ambush manta)": [ + [30, "v1", "art-joint-anim"], + [82, "v1", "art-joint-anim"] + ], + "(code notice-to-fly manta)": [ + [14, "v1", "art-joint-anim"], + [95, "v1", "art-joint-anim"] + ], + "(code attack manta)": [ + [17, "v1", "art-joint-anim"], + [113, "v1", "art-joint-anim"], + [173, "v1", "art-joint-anim"], + [225, "v1", "art-joint-anim"] + ], + "(code knocked-recover manta)": [[16, "v1", "art-joint-anim"]], + "(exit attack-end manta)": [[2, "v1", "collide-shape-prim-group"]], + "(code attack-end manta)": [[16, "v1", "art-joint-anim"]], + "(enter attack-end manta)": [[3, "a0", "collide-shape-prim-group"]], + "(code land manta)": [ + [105, "v1", "art-joint-anim"], + [161, "v1", "art-joint-anim"], + [41, "v1", "art-joint-anim"] + ], + "(method 50 manta)": [ + [10, "v1", "collide-shape-prim-group"], + [34, "v1", "collide-shape-prim-group"] + ], + "(method 87 manta)": [[43, "v1", "art-joint-anim"]], + "(method 85 manta)": [ + [22, "v1", "art-joint-anim"], + [58, "v1", "art-joint-anim"], + [91, "v1", "art-joint-anim"] + ], + "(method 86 manta)": [[19, "v1", "art-joint-anim"]], + "(method 200 manta)": [ + [34, "a0", "connection"], + [35, "a0", "collide-shape"], + [83, "a0", "connection"], + [84, "a0", "collide-shape"] + ], + "(method 205 manta)": [ + [15, "a0", "process-focusable"], + [18, "a0", "process-focusable"] + ], + "(method 121 manta)": [["_stack_", 16, "res-tag"]], + "(code wheel-die rat)": [[14, "v1", "art-joint-anim"]], + "rat-joint-mod-roll": [[9, "gp", "rat"]], + "(code running-in-wheel rat)": [ + [14, "v1", "art-joint-anim"], + [72, "v1", "art-joint-anim"] + ], + "(enter running-in-wheel rat)": [ + [47, "v1", "collide-shape-prim-group"], + [53, "v1", "collide-shape-prim-group"] + ], + "(code knocked-recover rat)": [ + [38, "v1", "art-joint-anim"], + [59, "v1", "ragdoll-proc"], + [137, "v1", "art-joint-anim"], + [233, "v1", "art-joint-anim"] + ], + "(code stare rat)": [[91, "v1", "art-joint-anim"]], + "(code flee-stare rat)": [[91, "v1", "art-joint-anim"]], + "(code attack rat)": [[14, "v1", "art-joint-anim"]], + "(code wait-by-wheel-wait rat)": [[91, "v1", "art-joint-anim"]], + "(code notice rat)": [ + [22, "v1", "art-joint-anim"], + [80, "v1", "art-joint-anim"], + [203, "v1", "art-joint-anim"], + [140, "v1", "art-joint-anim"] + ], + "(code active-turn rat)": [ + [30, "v1", "art-joint-anim"], + [83, "v1", "art-joint-anim"] + ], + "(code active rat)": [[29, "v1", "art-joint-anim"]], + "rat-run-code": [[14, "v1", "art-joint-anim"]], + "(code ambush rat)": [ + [14, "v1", "art-joint-anim"], + [86, "v1", "art-joint-anim"], + [189, "v1", "art-joint-anim"] + ], + "(post idle rat-spawner)": [[103, "v0", "vector"]], + "(method 59 rat)": [ + [15, "a0", "process-focusable"], + [18, "a0", "process-focusable"] + ], + "(method 50 rat)": [ + [5, "v1", "collide-shape-prim-group"], + [20, "v1", "collide-shape-prim-group"] + ], + "(method 82 rat)": [[93, "v0", "vector"]], + "min-bomb-train-callback": [[[3, 31], "v1", "min-bomb-train"]], + "(code active min-bomb-train)": [ + [18, "gp", "task-manager"], + [21, "gp", "task-manager"], + [16, "s5", "task-manager"] + ], + "(event active min-bomb-train)": [ + [18, "v1", "collide-shape-prim-group"], + [[10, 29], "s4", "touching-shapes-entry"], + [37, "gp", "process-focusable"], + [49, "s3", "attack-info"], + [68, "v1", "touching-shapes-entry"], + [163, "v1", "task-manager"] + ], + "(trans wait min-bomb-train)": [ + [11, "v0", "string"], + [13, "a0", "string"] + ], + "(method 38 min-bomb-train)": [ + [105, "v1", "task-manager"], + [118, "v1", "task-manager"], + [121, "v1", "task-manager"], + [132, "v1", "task-manager"], + [211, "v1", "task-manager"], + [234, "v1", "task-manager"] + ], + "(code resolution task-manager)": [[40, "gp", "handle"]], + "(method 31 task-manager)": [[[15, 259], "v0", "resetter-spec"]], + "(anon-function 67 task-control)": [ + [3, "s4", "pair"], + [4, "s4", "pair"], + [5, "a0", "pair"], + [6, "s4", "pair"], + [7, "a0", "pair"], + [8, "a0", "pair"], + [9, "s4", "pair"], + [10, "a0", "pair"], + [11, "a0", "pair"], + [12, "a0", "pair"], + [13, "v1", "symbol"], + [20, "s4", "pair"], + [21, "a0", "pair"], + [24, "v1", "level-load-info"], + [29, "a0", "pair"], + [33, "v1", "level-load-info"], + [38, "v1", "level-load-info"], + [43, "gp", "pair"], + [42, "gp", "pair"] + ], + "play-task": [[89, "v1", "pair"]], + "fail-mission": [ + [149, "s4", "game-task-node-info"], + [152, "s4", "game-task-node-info"], + [158, "s4", "game-task-node-info"], + [198, "s4", "game-task-node-info"], + [196, "s4", "game-task-node-info"], + [197, "s4", "game-task-node-info"], + [13, "v1", "connection"], + [17, "a0", "task-manager"], + [20, "a0", "task-manager"] + ], + "restart-mission": [ + [144, "s5", "game-task-node-info"], + [150, "s5", "game-task-node-info"], + [153, "s5", "game-task-node-info"], + [159, "s5", "game-task-node-info"], + [13, "v1", "connection"], + [17, "a0", "task-manager"], + [20, "a0", "task-manager"] + ], + "(method 11 min-bomb-train)": [["_stack_", 16, "res-tag"]], + "(code hostile-wall gekko)": [ + [20, "v1", "art-joint-anim"], + [70, "v1", "art-joint-anim"] + ], + "(code active-wall gekko)": [[14, "v1", "art-joint-anim"]], + "(code attack-wall gekko)": [ + [126, "v1", "art-joint-anim"], + [191, "v1", "art-joint-anim"] + ], + "(code jump-off-wall-falling gekko)": [[14, "v1", "art-joint-anim"]], + "gekko-stare-code": [[76, "v1", "art-joint-anim"]], + "(code flee gekko)": [ + [24, "v1", "art-joint-anim"], + [72, "v1", "art-joint-anim"] + ], + "(code attack gekko)": [ + [14, "v1", "art-joint-anim"], + [106, "v1", "art-joint-anim"], + [180, "v1", "art-joint-anim"] + ], + "(exit attack gekko)": [[31, "v1", "collide-shape-prim-group"]], + "(code turn gekko)": [ + [34, "v1", "art-joint-anim"], + [83, "v1", "art-joint-anim"] + ], + "(code turn-quick gekko)": [ + [14, "v1", "art-joint-anim"], + [82, "v1", "art-joint-anim"] + ], + "(enter knocked gekko)": [[42, "v1", "ragdoll-proc"]], + "(post knocked gekko)": [[4, "t9", "(function none)"]], + "(post knocked-recover gekko)": [[4, "t9", "(function none)"]], + "gekko-postbind": [ + [[3, 476], "gp", "gekko"], + ["_stack_", 560, "float"], + ["_stack_", 980, "gekko-foot-info"] + ], + "gekko-foot-rot-handler": [[2, "v1", "gekko"]], + "(code knocked-recover gekko)": [ + [19, "v1", "art-joint-anim"], + [48, "v1", "ragdoll-proc"] + ], + "(enter attack gekko)": [[30, "v1", "collide-shape-prim-group"]], + "(code hostile gekko)": [ + [22, "v1", "art-joint-anim"], + [75, "v1", "art-joint-anim"] + ], + "(code active gekko)": [ + [328, "v1", "art-joint-anim"], + [382, "v1", "art-joint-anim"], + [77, "v1", "art-joint-anim"] + ], + "(code jump-off-wall gekko)": [[14, "v1", "art-joint-anim"]], + "(post knocked-wall gekko)": [[3, "t9", "(function none)"]], + "(code turn-wall gekko)": [[46, "v1", "art-joint-anim"]], + "(code jump-off-wall-recover gekko)": [ + [13, "v1", "art-joint-anim"], + [71, "v1", "art-joint-anim"] + ], + "(method 50 gekko)": [ + [8, "v1", "collide-shape-prim-group"], + [12, "a0", "collide-shape-prim-group"], + [24, "v1", "collide-shape-prim-group"], + [35, "v1", "collide-shape-prim-group"], + [39, "a0", "collide-shape-prim-group"] + ], + "(method 59 gekko)": [ + [15, "a0", "process-focusable"], + [18, "a0", "process-focusable"] + ], + "(method 125 gekko)": [ + [15, "a0", "ragdoll-proc"], + [17, "a0", "ragdoll-proc"], + [28, "s5", "ragdoll-proc"], + [50, "s5", "ragdoll-proc"], + [11, "s5", "ragdoll-proc"], + [14, "s5", "ragdoll-proc"] + ], + "(method 86 gekko)": [ + [23, "a2", "art-joint-anim"], + [55, "a2", "art-joint-anim"], + [84, "a2", "art-joint-anim"] + ], + "(method 85 gekko)": [ + [19, "v1", "art-joint-anim"], + [47, "v1", "art-joint-anim"] + ], + "(method 108 gekko)": [[19, "v1", "process-focusable"]], + "(method 11 basebutton)": [["_stack_", 16, "res-tag"]], + "clmf-cam-string": [["_stack_", 16, "res-tag"]], + "(code knocked-recover grunt)": [ + [15, "v1", "ragdoll-proc"], + [40, "v1", "art-joint-anim"], + [69, "v1", "art-joint-anim"], + [130, "a0", "ragdoll-proc"], + [132, "a0", "ragdoll-proc"] + ], + "(trans wait-for-focus grunt)": [ + [13, "s5", "process-focusable"], + [40, "s5", "process-focusable"] + ], + "(code stop-chase grunt)": [[77, "gp", "art-joint-anim"]], + "(code pacing grunt)": [[145, "gp", "art-joint-anim"]], + "(code circling grunt)": [ + [260, "v1", "art-joint-anim"], + [308, "v1", "art-joint-anim"], + [153, "gp", "art-joint-anim"] + ], + "(code spin-attack grunt)": [ + [45, "gp", "art-joint-anim"], + [73, "a0", "process-focusable"], + [76, "a0", "process-focusable"] + ], + "(enter spin-attack grunt)": [ + [43, "gp", "process-focusable"], + [47, "a0", "process-focusable"], + [46, "gp", "process-focusable"] + ], + "(code attack grunt)": [ + [55, "gp", "art-joint-anim"], + [155, "a0", "grunt-global-info"] + ], + "(code hostile grunt)": [[122, "gp", "art-joint-anim"]], + "(code active grunt)": [ + [143, "gp", "art-joint-anim"], + [227, "gp", "art-joint-anim"], + [271, "gp", "art-joint-anim"], + [354, "v1", "art-joint-anim"], + [414, "v1", "art-joint-anim"] + ], + "(code falling-ambush grunt)": [[53, "v1", "art-joint-anim"]], + "setup-blerc-chains": [ + [43, "v1", "int"], + [80, "s0", "int"], + [83, "a0", "int"], + [[30, 40], "s1", "merc-fragment-control"], + [41, "v1", "merc-fragment"], + [46, "v1", "(pointer uint8)"], + [59, "a0", "merc-blend-ctrl"], + [[64, 76], "s1", "merc-fragment-control"], + [77, "a1", "merc-blend-ctrl"], + [106, "v1", "(pointer uint32)"], + [108, "v1", "(pointer uint32)"] + ], + "(method 26 battle)": [ + [35, "a0", "connection"], + [36, "a0", "collide-shape"], + [84, "a0", "connection"], + [85, "a0", "collide-shape"] + ], + "(method 30 battle)": [ + [7, "s5", "nav-enemy"], + [32, "a2", "nav-enemy"] + ], + "(method 51 battle)": [ + [38, "s4", "nav-enemy"], + [53, "s4", "nav-enemy"] + ], + "(method 28 battle)": [ + [21, "v0", "(pointer actor-group)"], + ["_stack_", 16, "res-tag"] + ], + "(method 29 battle)": [ + ["_stack_", 16, "res-tag"], + ["_stack_", 32, "res-tag"] + ], + "part-wascityb-bird1-path": [ + [13, "v1", "int"], + [90, "a0", "part-spawner"] + ], + "part-wascityb-bird2-path": [ + [13, "v1", "int"], + [86, "a0", "part-spawner"] + ], + "part-wascityb-bird3-path": [ + [13, "v1", "int"], + [90, "a0", "part-spawner"] + ], + "part-wascityb-bird4-path": [ + [13, "v1", "int"], + [90, "a0", "part-spawner"] + ], + "part-wascityb-bird5-path": [ + [13, "v1", "int"], + [86, "a0", "part-spawner"] + ], + "part-wascityb-bird6-path": [ + [13, "v1", "int"], + [90, "a0", "part-spawner"] + ], + "part-wascityb-bird7-path": [ + [13, "v1", "int"], + [86, "a0", "part-spawner"] + ], + "part-wascityb-bird8-path": [ + [13, "v1", "int"], + [90, "a0", "part-spawner"] + ], + "part-wascityb-bird9-path": [ + [13, "v1", "int"], + [90, "a0", "part-spawner"] + ], + "part-wascityb-bird10-path": [ + [13, "v1", "int"], + [86, "a0", "part-spawner"] + ], + "part-wascitya-fly1-path": [ + [13, "v1", "int"], + [90, "a0", "part-spawner"] + ], + "part-wascitya-fly2-path": [ + [13, "v1", "int"], + [86, "a0", "part-spawner"] + ], + "part-wascitya-fly3-path": [ + [13, "v1", "int"], + [90, "a0", "part-spawner"] + ], + "(event idle market-object)": [ + [[6, 10], "a1", "attack-info"], + [16, "a1", "attack-info"] + ], + "fruit-stand-event-handler": [ + [4, "gp", "attack-info"], + [32, "gp", "attack-info"] + ], + "fruit-check-ground-bounce": [ + [5, "v1", "fruit-stand"], + [[9, 40], "v1", "fruit-stand"], + [8, "a0", "fruit-stand"] + ], + "(event idle wascity-cactus)": [[[7, 17], "a1", "attack-info"]], + "wascity-cactus-callback": [ + [[9, 39], "s4", "wascity-cactus"], + [10, "s3", "int"], + [12, "s3", "int"], + [25, "s3", "int"], + [30, "s3", "int"], + [37, "s3", "int"] + ], + "(method 35 monk-npc)": [ + [23, "v1", "int"], + [23, "a0", "int"], + [27, "a0", "int"] + ], + "(method 37 monk-npc)": [ + [6, "v1", "int"], + [6, "a1", "int"], + [10, "a1", "int"] + ], + "(enter die market-object)": [ + [118, "v0", "(state symbol int market-object)"] + ], + "(method 50 dogat)": [ + [5, "v1", "collide-shape-prim-group"], + [18, "v1", "collide-shape-prim-group"] + ], + "(code active dogat)": [[14, "v1", "art-joint-anim"]], + "(code sit-idle dogat)": [ + [155, "v1", "art-joint-anim"], + [88, "v1", "art-joint-anim"], + [21, "v1", "art-joint-anim"] + ], + "(method 62 vehicle)": [[8, "v1", "collide-shape-prim-group"]], + "(method 115 vehicle)": [ + [19, "s4", "process-focusable"], + [26, "s4", "process-focusable"], + [31, "s4", "process-focusable"], + [44, "s4", "process-focusable"] + ], + "(trans fly-to-dest prebot-large-eco-creature)": [[300, "v1", "float"]], + "(event fly-to-dest prebot-large-eco-creature)": [ + [5, "v1", "attack-info"], + [10, "v1", "attack-info"], + [128, "s5", "vector"], + [129, "gp", "vector"], + [131, "gp", "vector"], + [132, "s5", "vector"], + [125, "v1", "float"], + [127, "v1", "float"], + [156, "gp", "vector"], + [157, "s5", "vector"], + [201, "s5", "vector"], + [205, "s5", "vector"], + [209, "s5", "vector"], + [214, "gp", "vector"] + ], + "(code victory prebot-large-eco-creature)": [[42, "v1", "art-joint-anim"]], + "(trans hostile prebot-large-eco-creature)": [ + [27, "a0", "process-focusable"], + [30, "a0", "process-focusable"] + ], + "(method 82 prebot-large-eco-creature)": [ + [10, "s4", "attack-info"], + [15, "s4", "attack-info"], + [63, "s4", "attack-info"], + [67, "s4", "attack-info"], + [71, "s4", "attack-info"] + ], + "large-eco-creature-split": [ + [83, "a0", "prebot-large-eco-creature"], + [86, "a0", "prebot-medium-eco-creature"], + [95, "a0", "prebot-medium-eco-creature"], + [97, "a0", "prebot-medium-eco-creature"], + [90, "a1", "prebot-medium-eco-creature"], + [93, "a0", "prebot-medium-eco-creature"], + [142, "a0", "prebot-medium-eco-creature"], + [145, "a0", "prebot-medium-eco-creature"], + [154, "a0", "prebot-medium-eco-creature"], + [156, "a0", "prebot-medium-eco-creature"], + [149, "a1", "prebot-medium-eco-creature"], + [152, "a0", "prebot-medium-eco-creature"], + [[77, 95], "v1", "(pointer prebot-medium-eco-creature)"], + [64, "v1", "(pointer prebot-medium-eco-creature)"], + [[123, 154], "v1", "(pointer prebot-medium-eco-creature)"] + ], + "prebot-eco-creature-joint-callback": [ + [1, "v1", "float"], + [[17, 27], "a2", "float"] + ], + "(code knocked-recover prebot-medium-eco-creature)": [ + [34, "gp", "art-joint-anim"], + [61, "v1", "ragdoll-proc"], + [102, "gp", "art-joint-anim"], + [166, "t9", "(function none)"] + ], + "prebot-tentacle-init-by-other": [[121, "a0", "prebot"]], + "prebot-gun-init-by-other": [[120, "a0", "prebot"]], + "prebot-sword-init-by-other": [ + [103, "a0", "prebot"], + [202, "s5", "weapon-trail-tracker"], + [205, "s5", "weapon-trail-tracker"] + ], + "prebot-eco-pillar-init-by-other": [[346, "v1", "float"]], + "(code impact prebot-gun-shot)": [[39, "a0", "process"]], + "(trans idle prebot-sword)": [[94, "a1", "prebot"]], + "(event idle prebot-sword)": [ + [67, "gp", "process-drawable"], + [76, "v1", "float"], + [88, "v1", "float"] + ], + "(method 11 cav-railblocker)": [ + [97, "v0", "(pointer actor-group)"], + ["_stack_", 16, "res-tag"] + ], + "(enter fall cav-railblocker)": [[74, "a0", "process"]], + "(event idle cav-railblocker)": [ + [29, "v1", "attack-info"], + [34, "v1", "attack-info"], + [43, "v1", "attack-info"], + [46, "v1", "attack-info"], + [49, "v1", "attack-info"], + [52, "v1", "attack-info"] + ], + "(method 30 cav-railblocker)": [[21, "v1", "float"]], + "prebot-spawn-shockwave": [[42, "v1", "process-drawable"]], + "prebot-handler": [[202, "a1", "vector"]], + "prebot-go-next-stage": [ + [27, "v0", "(pointer actor-group)"], + ["_stack_", 16, "res-tag"] + ], + "(trans play-hit-movie prebot)": [[86, "v0", "entity-actor"]], + "(trans destroy-pillars prebot)": [[241, "gp", "process-drawable"]], + "prebot-setup-shot-offsets": [ + [13, "v1", "float"], + [33, "v1", "float"], + [49, "v1", "float"] + ], + "prebot-fire-tentacle": [[21, "v1", "prebot-tentacle"]], + "(trans watch-critters prebot)": [[47, "a0", "process-drawable"]], + "prebot-launch-critter": [ + [27, "s3", "process-drawable"], + [67, "s3", "process-drawable"], + [112, "s3", "process-drawable"] + ], + "set-mined-filter!": [[12, "v1", "mined-states"]], + "update-mood-mined": [[[15, 45], "s5", "mined-states"]], + "(code attacking-0 tentacle)": [[14, "v1", "art-joint-anim"]], + "(code kill-player tentacle)": [[14, "v1", "art-joint-anim"]], + "(code stop-chase kg-grunt)": [[77, "gp", "art-joint-anim"]], + "(code pacing kg-grunt)": [[145, "gp", "art-joint-anim"]], + "(method 86 kg-grunt)": [[22, "v1", "art-joint-anim"]], + "(trans wait-for-focus kg-grunt)": [ + [13, "s5", "process-focusable"], + [40, "s5", "process-focusable"] + ], + "(method 85 kg-grunt)": [ + [87, "s4", "art-joint-anim"], + [233, "a1", "art-joint-anim"], + [323, "s4", "art-joint-anim"] + ], + "(code circling kg-grunt)": [ + [260, "v1", "art-joint-anim"], + [308, "v1", "art-joint-anim"], + [153, "gp", "art-joint-anim"] + ], + "(code spin-attack kg-grunt)": [ + [45, "gp", "art-joint-anim"], + [73, "a0", "process-focusable"], + [76, "a0", "process-focusable"] + ], + "(enter spin-attack kg-grunt)": [ + [43, "gp", "process-focusable"], + [46, "gp", "process-focusable"] + ], + "(code attack kg-grunt)": [ + [55, "gp", "art-joint-anim"], + [[150, 156], "a0", "kg-grunt-anim-info"] + ], + "(code hostile kg-grunt)": [[122, "gp", "art-joint-anim"]], + "(code active kg-grunt)": [ + [227, "gp", "art-joint-anim"], + [271, "gp", "art-joint-anim"], + [354, "v1", "art-joint-anim"], + [414, "v1", "art-joint-anim"], + [143, "gp", "art-joint-anim"] + ], + "(method 82 kg-grunt)": [[144, "v1", "rigid-body-impact"]], + "(code falling-ambush kg-grunt)": [[53, "v1", "art-joint-anim"]], + "(method 38 sew-laser-shot)": [ + [33, "a0", "process-focusable"], + [36, "a0", "process-focusable"] + ], + "(code idle sew-gas-step)": [[14, "v1", "art-joint-anim"]], + "(event idle jump-pad)": [[[18, 25], "v1", "attack-info"]], + "jump-pad-joint-fan": [[[4, 15], "gp", "jump-pad"]], + "(post fire jump-pad)": [[28, "t9", "(function none)"]], + "(code going-down sew-floor-switch)": [ + [26, "v1", "art-joint-anim"], + [83, "v0", "pair"] + ], + "(event idle-up sew-floor-switch)": [[4, "v1", "attack-info"]], + "sew-fan-joint-floor": [[[7, 12], "s1", "sew-fan"]], + "sew-fan-joint-fan": [[[3, 20], "v1", "sew-fan"]], + "(method 82 sew-fan)": [[[46, 63], "v1", "attack-info"]], + "(method 11 sew-wall-switch)": [["_stack_", 16, "res-tag"]], + "(method 11 sew-pipe)": [["_stack_", 16, "res-tag"]], + "(enter down sew-pipe)": [[13, "v1", "art-joint-anim"]], + "(code lower sew-pipe)": [[83, "v1", "art-joint-anim"]], + "(enter raised sew-m-gate)": [[13, "v1", "art-joint-anim"]], + "(code open sew-m-gate)": [[80, "v1", "art-joint-anim"]], + "(code open sew-gate)": [[15, "v1", "art-joint-anim"]], + "(event idle sew-wall-switch)": [[4, "v1", "attack-info"]], + "(code open sew-wall-switch)": [[10, "v1", "art-joint-anim"]], + "(code closing sew-fence-gate)": [[19, "v1", "art-joint-anim"]], + "(code opening sew-fence-gate)": [[18, "v1", "art-joint-anim"]], + "(code open sew-fence-gate)": [[10, "v1", "art-joint-anim"]], + "(code active sew-move-turret)": [[109, "v1", "art-joint-anim"]], + "(method 162 sew-laser-turret)": [ + [41, "v1", "process-focusable"], + [45, "v1", "process-focusable"], + [49, "v1", "process-focusable"] + ], + "(trans alert sew-laser-turret)": [ + [181, "a2", "process-focusable"], + [185, "a2", "process-focusable"], + [189, "a2", "process-focusable"] + ], + "check-enemy": [ + [19, "a0", "collide-shape-moving"], + [17, "a0", "collide-shape-moving"] + ], + "(code saberfish-sitting-on-land saberfish)": [[10, "v1", "art-joint-anim"]], + "(code saberfish-crawl-out-of-tube saberfish)": [ + [37, "v1", "art-joint-anim"] + ], + "(code stare-idle saberfish)": [[22, "v1", "art-joint-anim"]], + "(code attack saberfish)": [ + [17, "v1", "art-joint-anim"], + [190, "v1", "art-joint-anim"], + [130, "v1", "art-joint-anim"] + ], + "(code water-land saberfish)": [[16, "v1", "art-joint-anim"]], + "(code active saberfish)": [[40, "v1", "art-joint-anim"]], + "(code water-impact saberfish)": [[16, "v1", "art-joint-anim"]], + "(enter water-impact saberfish)": [[5, "t9", "(function none)"]], + "(code knocked-recover saberfish)": [ + [23, "v1", "ragdoll-proc"], + [43, "v1", "art-joint-anim"], + [83, "v1", "art-joint-anim"] + ], + "(code knocked-recover-water saberfish)": [ + [23, "v1", "ragdoll-proc"], + [49, "v1", "art-joint-anim"] + ], + "(method 50 saberfish)": [ + [5, "v1", "collide-shape-prim-group"], + [20, "v1", "collide-shape-prim-group"] + ], + "(code diving-into-water saberfish)": [ + [15, "gp", "art-joint-anim"], + [30, "gp", "art-joint-anim"] + ], + "(code transition-terrain-jump-from-water)": [[14, "v1", "art-joint-anim"]], + "(code transition-terrain-jump-from-land)": [[43, "v1", "art-joint-anim"]], + "saberfish-chase-post": [ + [13, "a0", "process-focusable"], + [16, "a0", "process-focusable"] + ], + "(trans hostile saberfish)": [ + [14, "a0", "process-focusable"], + [17, "a0", "process-focusable"] + ], + "(enter swimming-hostile saberfish)": [ + [8, "t9", "(function none)"], + [24, "a0", "process-focusable"], + [27, "a0", "process-focusable"] + ], + "turbo-swim": [[14, "v1", "art-joint-anim"]], + "(code transition-terrain-move-towards-initial-jump saberfish)": [ + [14, "t9", "(function none)"] + ], + "(method 241 saberfish)": [[11, "v1", "ragdoll-proc"]], + "(method 240 saberfish)": [ + [13, "s5", "ragdoll-proc"], + [19, "s5", "ragdoll-proc"], + [22, "s5", "ragdoll-proc"] + ], + "(method 125 saberfish)": [ + [14, "s5", "ragdoll-proc"], + [35, "s5", "ragdoll-proc"], + [57, "s5", "ragdoll-proc"] + ], + "(method 242 saberfish)": [[43, "a2", "ragdoll-proc"]], + "(trans swimming-hostile saberfish)": [ + [20, "s5", "process-focusable"], + [118, "a0", "process-focusable"], + [144, "v1", "float"] + ], + "(method 231 saberfish)": [ + ["_stack_", 72, "float"], + ["_stack_", 76, "float"], + ["_stack_", 84, "float"] + ], + "(method 97 saberfish)": [[20, "a1", "art-joint-anim"]], + "(method 96 saberfish)": [[16, "a1", "art-joint-anim"]], + "(method 98 saberfish)": [[22, "a1", "art-joint-anim"]], + "(method 237 saberfish)": [[21, "v0", "saberfish-spawner-query-msg"]], + "(method 238 saberfish)": [ + ["_stack_", 196, "float"], + ["_stack_", 252, "float"], + ["_stack_", 256, "float"], + ["_stack_", 528, "float"], + ["_stack_", 532, "float"] + ], + "(method 82 saberfish)": [[[8, 29], "s5", "saberfish-spawner-query-msg"]], + "(method 225 saberfish)": [[6, "v1", "vector"]], + "(method 220 saberfish)": [ + [17, "s4", "process-focusable"], + [21, "s4", "process-focusable"], + [26, "s4", "process-focusable"], + [45, "s4", "process-focusable"], + [48, "s4", "process-focusable"] + ], + "(method 216 saberfish)": [[154, "v1", "process-focusable"]], + "(method 214 saberfish)": [[18, "v1", "collide-shape-prim-group"]], + "(method 215 saberfish)": [ + [14, "a0", "process-focusable"], + [17, "a0", "process-focusable"] + ], + "(method 24 saberfish-spawner)": [["_stack_", 48, "float"]], + "(method 11 saberfish-spawner)": [ + [194, "v0", "vector"], + ["_stack_", 16, "res-tag"] + ], + "(method 11 saberfish-spawn-manager-base)": [["_stack_", 16, "res-tag"]], + "(method 26 saberfish-spawner)": [ + [[9, 49], "gp", "saberfish-spawner-query-msg"], + [[77, 85], "v1", "saberfish-spawner-command"], + [161, "v1", "saberfish-spawn-query"], + [[111, 164], "v1", "saberfish-spawn-query"], + [[105, 108], "v1", "saberfish-spawn-query"], + [[139, 149], "a2", "saberfish"] + ], + "saberfish-mgr-event-handler": [ + [[19, 28], "gp", "saberfish-spawner-query-msg"] + ], + "(method 97 kg-hopper)": [[16, "a1", "art-joint-anim"]], + "(method 96 kg-hopper)": [[16, "a1", "art-joint-anim"]], + "(method 98 kg-hopper)": [[16, "a1", "art-joint-anim"]], + "(method 85 kg-hopper)": [ + [33, "a1", "art-joint-anim"], + [86, "a1", "art-joint-anim"] + ], + "(method 86 kg-hopper)": [[27, "v1", "art-joint-anim"]], + "(trans hostile kg-hopper)": [ + [24, "gp", "process-focusable"], + [153, "gp", "process-focusable"], + [156, "gp", "process-focusable"] + ], + "set-sewg-electricity-scale!": [[[10, 14], "v1", "sewg-states"]], + "set-sewh-electricity-scale!": [[[12, 15], "v1", "sewh-states"]], + "update-mood-sewc": [[[17, 86], "gp", "sewc-states"]], + "update-mood-sewd": [[[17, 86], "gp", "sewd-states"]], + "update-mood-sewg": [[[17, 79], "gp", "sewg-states"]], + "update-mood-sewj": [[[17, 71], "gp", "sewj-states"]], + "update-mood-sewh": [[[17, 64], "gp", "sewh-states"]], + "(code attack neo-juicer)": [ + [14, "v1", "art-joint-anim"], + [87, "v1", "art-joint-anim"], + [123, "s3", "process-focusable"], + [281, "a0", "process-focusable"], + [284, "a0", "process-focusable"] + ], + "(code victory neo-juicer)": [[31, "gp", "art-joint-anim"]], + "(code notice neo-juicer)": [ + [24, "a0", "process-focusable"], + [27, "a0", "process-focusable"], + [83, "a1", "art-joint-anim"] + ], + "(code active neo-juicer)": [ + [118, "gp", "art-joint-anim"], + [201, "a1", "art-joint-anim"] + ], + "(method 194 neo-juicer)": [ + [21, "s3", "process-focusable"], + [24, "s3", "process-focusable"] + ], + "neo-juicer-proj-move": [[15, "s5", "process-focusable"]], + "(method 38 neo-juicer-shot)": [ + [33, "a0", "process-focusable"], + [36, "a0", "process-focusable"] + ], + "(method 35 neo-juicer-shot)": [ + [7, "v1", "(inline-array vector)"], + [11, "v1", "(inline-array vector)"], + [16, "v1", "(inline-array vector)"], + [20, "v1", "(inline-array vector)"] + ], + "(post hostile neo-juicer)": [ + [13, "a0", "process-focusable"], + [16, "a0", "process-focusable"] + ], + "neo-juicer-face-player-post": [ + [29, "gp", "process-focusable"], + [66, "gp", "process-focusable"], + [69, "gp", "process-focusable"] + ], + "(code circling neo-juicer)": [ + [205, "gp", "art-joint-anim"], + [113, "gp", "art-joint-anim"] + ], + "(code hit neo-juicer)": [[30, "v1", "art-joint-anim"]], + "(code taunt neo-juicer)": [[84, "v1", "art-joint-anim"]], + "(code stare neo-juicer)": [[23, "gp", "art-joint-anim"]], + "(method 196 neo-juicer)": [[4, "v1", "collide-shape-prim-group"]], + "(method 85 neo-juicer)": [ + [37, "a1", "art-joint-anim"], + [113, "s5", "art-joint-anim"], + [153, "s4", "art-joint-anim"] + ], + "(method 86 neo-juicer)": [ + [18, "s4", "art-joint-anim"], + [66, "s4", "art-joint-anim"] + ], + "(code victory neo-grenadier)": [ + [27, "v1", "art-joint-anim"], + [76, "v1", "art-joint-anim"] + ], + "(code hit neo-grenadier)": [ + [87, "gp", "art-joint-anim"], + [208, "a0", "process-focusable"] + ], + "(post attack neo-grenadier)": [ + [22, "a0", "process-focusable"], + [25, "a0", "process-focusable"] + ], + "(method 78 neo-grenadier)": [[41, "a0", "process-focusable"]], + "(code attack neo-grenadier)": [ + [74, "v1", "art-joint-anim"], + [159, "v1", "art-joint-anim"], + [287, "a0", "process-focusable"], + [290, "a0", "process-focusable"], + [309, "v1", "art-joint-anim"], + [358, "v1", "art-joint-anim"] + ], + "(event attack neo-grenadier)": [ + [23, "s4", "process-focusable"], + [26, "s4", "process-focusable"], + [129, "v1", "metalhead-grenade-shot"] + ], + "(exit spin-kick neo-grenadier)": [[2, "v1", "collide-shape-prim-group"]], + "(post spin-kick neo-grenadier)": [ + [22, "a0", "process-focusable"], + [25, "a0", "process-focusable"] + ], + "(method 86 neo-grenadier)": [ + [18, "s4", "art-joint-anim"], + [64, "a1", "art-joint-anim"], + [94, "v1", "art-joint-anim"] + ], + "(method 85 neo-grenadier)": [ + [76, "s4", "art-joint-anim"], + [160, "s5", "art-joint-anim"] + ], + "(code spin-kick neo-grenadier)": [[14, "v1", "art-joint-anim"]], + "(enter spin-kick neo-grenadier)": [[23, "v1", "collide-shape-prim-group"]], + "(code backup neo-grenadier)": [[10, "v1", "art-joint-anim"]], + "(code hostile neo-grenadier)": [[45, "gp", "art-joint-anim"]], + "(trans hostile neo-grenadier)": [ + [19, "a0", "process-focusable"], + [22, "a0", "process-focusable"], + [156, "a0", "process-focusable"] + ], + "(code active neo-grenadier)": [ + [136, "v1", "art-joint-anim"], + [198, "v1", "art-joint-anim"], + [51, "v1", "art-joint-anim"], + [291, "v1", "art-joint-anim"] + ], + "(method 193 neo-grenadier)": [ + [20, "s5", "process-focusable"], + [78, "s5", "process-focusable"] + ], + "sewer-frog-turn-to-face": [ + [62, "v1", "art-joint-anim"], + [123, "v1", "art-joint-anim"], + [199, "v1", "art-joint-anim"], + [264, "v1", "art-joint-anim"] + ], + "sewer-frog-hop": [ + [63, "v1", "art-joint-anim"], + [153, "v1", "art-joint-anim"] + ], + "(code attack sewer-frog)": [ + [20, "v1", "art-joint-anim"], + [77, "a0", "collide-shape-prim-group"], + [101, "v1", "art-joint-anim"], + [160, "v1", "collide-shape-prim-group"], + [196, "v1", "art-joint-anim"] + ], + "(post knocked sewer-frog)": [ + [16, "v1", "ragdoll-proc"], + [19, "v1", "ragdoll-proc"], + [23, "v1", "ragdoll-proc"], + [31, "t9", "(function none)"] + ], + "(method 167 sewer-frog)": [ + [20, "a0", "process-focusable"], + [23, "a0", "process-focusable"] + ], + "(method 59 sewer-frog)": [ + [18, "a0", "process-focusable"], + [21, "a0", "process-focusable"] + ], + "(method 108 sewer-frog)": [[19, "v1", "process-focusable"]], + "(method 125 sewer-frog)": [ + [14, "a0", "ragdoll-proc"], + [16, "a0", "ragdoll-proc"] + ], + "(trans hostile spydroid-orig)": [ + [29, "a0", "process-focusable"], + [32, "a0", "process-focusable"] + ], + "(method 82 spydroid-orig)": [ + [65, "s0", "process-drawable"], + [90, "s0", "process-drawable"], + [113, "s0", "process-drawable"], + [208, "v1", "attack-info"], + [214, "v1", "attack-info"], + [239, "v1", "vector"], + [308, "v1", "rigid-body-impact"], + [34, "v0", "vector"] + ], + "(code close-attack roboguard)": [ + [30, "v1", "art-joint-anim"], + [58, "v1", "art-joint-anim"], + [144, "a0", "collide-shape-prim-group"], + [168, "v1", "art-joint-anim"], + [196, "v1", "art-joint-anim"], + [271, "v1", "art-joint-anim"], + [299, "v1", "art-joint-anim"], + [355, "v1", "collide-shape-prim-group"] + ], + "(post knocked roboguard)": [[30, "t9", "(function none)"]], + "(post knocked-recover roboguard)": [[30, "t9", "(function none)"]], + "(post die roboguard)": [[30, "t9", "(function none)"]], + "(code notice roboguard)": [ + [23, "v1", "art-joint-anim"], + [87, "v1", "art-joint-anim"] + ], + "roboguard-turret-code": [ + [75, "a1", "art-joint-anim"], + [168, "a1", "art-joint-anim"] + ], + "(method 86 roboguard)": [ + [24, "a2", "art-joint-anim"], + [53, "a2", "art-joint-anim"] + ], + "(method 82 roboguard)": [[109, "v1", "rigid-body-impact"]], + "(method 59 roboguard)": [[41, "s5", "process-focusable"]], + "(method 85 roboguard)": [ + [30, "v1", "art-joint-anim"], + [58, "v1", "art-joint-anim"] + ], + "(anon-function 1 roboguard)": [ + [[10, 16], "s3", "roboguard"], + [11, "s2", "int"], + [14, "s2", "int"] + ], + "(anon-function 2 roboguard)": [[[2, 79], "s3", "roboguard"]], + "(method 33 vehicle)": [[1, "a1", "rigid-body-vehicle-constants"]], + "(method 49 vehicle)": [ + [67, "s3", "attack-info"], + [86, "s3", "attack-info"], + [249, "v1", "float"], + [275, "v1", "float"] + ], + "(method 33 squad-control)": [[34, "s2", "process-focusable"]], + "(method 32 squad-control)": [ + [21, "a0", "process-focusable"], + [24, "a0", "process-focusable"] + ], + "(method 26 squad-control)": [ + [20, "s5", "process-focusable"], + [29, "s5", "process-focusable"], + [31, "s5", "process-focusable"] + ], + "(method 24 squad-control)": [ + [36, "s4", "process-focusable"], + [45, "s4", "process-focusable"], + [47, "s4", "process-focusable"] + ], + "(method 50 vehicle)": [ + [31, "s1", "process-focusable"], + [35, "a0", "process-focusable"], + [34, "s1", "process-focusable"] + ], + "(method 13 was-squad-control)": [ + [42, "v1", "process-focusable"], + [47, "v1", "process-focusable"], + [127, "s3", "process-focusable"], + [133, "s3", "process-focusable"], + [138, "s3", "process-focusable"], + [142, "s3", "process-focusable"], + [69, "v1", "process-focusable"], + [265, "a1", "process-focusable"], + [233, "v1", "process-focusable"] + ], + "(method 35 was-squad-control)": [ + [37, "s4", "process-focusable"], + [62, "s4", "process-focusable"], + [93, "s4", "process-focusable"], + [121, "s4", "process-drawable"], + [112, "s4", "process-drawable"] + ], + "(method 34 vehicle-wheel)": [[1, "a1", "vehicle-wheel-init-params"]], + "(method 38 wvehicle)": [ + [635, "v1", "vector"], + [637, "v1", "vector"], + [638, "v1", "vector"], + [540, "v1", "vector"], + [[542, 547], "v1", "vector"], + [452, "v1", "vector"], + [[454, 459], "v1", "vector"], + [[418, 426], "a2", "vector"], + [[394, 402], "a2", "vector"] + ], + "(method 33 wvehicle)": [[1, "a1", "rigid-body-vehicle-constants"]], + "(enter explode wvehicle)": [ + [233, "a0", "process"], + [328, "v1", "process-drawable"] + ], + "(enter explode-into-nothing wvehicle)": [[48, "a0", "process"]], + "(post sink wvehicle)": [[40, "a1", "process-drawable"]], + "(method 49 wvehicle)": [ + [34, "a1", "process-drawable"], + [173, "v1", "race-decision-point"], + [175, "v1", "race-decision-point"], + [203, "v1", "race-decision-point"], + [217, "v1", "race-decision-point"], + [493, "a0", "process"], + [513, "v1", "vector"], + [[525, 529], "v1", "wvehicle-ai-drop-off-params"], + [21, "v1", "float"], + [477, "v1", "float"] + ], + "(method 77 wvehicle)": [ + [179, "s4", "process-focusable"], + [186, "s4", "process-focusable"], + [194, "s4", "process-focusable"] + ], + "(method 165 wvehicle)": [ + [102, "s2", "process-focusable"], + [126, "s2", "process-focusable"], + [150, "s2", "process-focusable"], + [164, "s2", "process-focusable"] + ], + "(trans idle kill-player-process)": [ + [24, "gp", "process-focusable"], + [33, "gp", "process-focusable"] + ], + "cshape-reaction-scorp-shot": [[15, "v1", "v-scorp-shot"]], + "(method 78 wvehicle)": [ + [262, "s1", "tire-trail-tracker"], + [271, "s1", "tire-trail-tracker"], + [287, "s1", "tire-trail-tracker"], + [309, "s1", "tire-trail-tracker"], + [322, "s1", "tire-trail-tracker"], + [358, "v1", "collide-shape-prim-group"] + ], + "(method 97 wvehicle)": [ + [[509, 528], "s4", "wvehicle-physics-work"], + [[133, 139], "s0", "wvehicle-physics-work"], + [[157, 169], "s0", "wvehicle-physics-work"], + [18, "v1", "wvehicle-physics-work"], + [[160, 174], "s4", "wvehicle-physics-work"] + ], + "(method 162 wvehicle)": [[268, "a0", "uint"]], + "(method 96 vehicle)": [[14, "v1", "collide-shape-prim-group"]], + "(method 93 wvehicle)": [ + [297, "a0", "uint"], + [304, "a0", "uint"], + [440, "a0", "uint"], + [447, "a0", "uint"], + [479, "a0", "uint"] + ], + "(method 62 wcar-snake-base)": [ + [4, "s5", "collide-shape-prim-group"], + [10, "s5", "collide-shape-prim-group"], + [16, "s5", "collide-shape-prim-group"], + [[22, 48], "s5", "collide-shape-prim-group"] + ], + "(method 62 v-turtle)": [ + [4, "s5", "collide-shape-prim-group"], + [[10, 35], "s5", "collide-shape-prim-group"] + ], + "(method 14 squad-control)": [ + [6, "a2", "int"], + [13, "a2", "int"], + [20, "v1", "int"] + ], + "target-pilot-init": [ + [73, "s4", "vehicle"], + [80, "s4", "vehicle"], + [[84, 99], "s4", "vehicle"], + [117, "s4", "vehicle"], + [[122, 266], "s4", "vehicle"] + ], + "target-pilot-exit": [ + [85, "s5", "vehicle"], + [92, "s5", "vehicle"] + ], + "target-pilot-post": [ + [96, "s5", "vehicle"], + [106, "s5", "vehicle"], + [113, "s5", "vehicle"], + [290, "s5", "vehicle"], + [298, "s5", "vehicle"], + [303, "s5", "vehicle"] + ], + "target-pilot-handler": [ + [31, "a0", "vehicle"], + [35, "a0", "vehicle"], + [94, "a0", "process"], + [182, "a0", "process"] + ], + "(enter target-pilot-edge-grab)": [ + [42, "a0", "process-focusable"], + [45, "a0", "process-focusable"] + ], + "(code target-pilot-impact)": [ + [102, "v1", "art-joint-anim"], + [157, "v1", "art-joint-anim"], + [220, "v1", "art-joint-anim"], + [275, "v1", "art-joint-anim"], + [329, "v1", "art-joint-anim"], + [389, "v1", "art-joint-anim"], + [447, "v1", "art-joint-anim"], + [517, "v1", "art-joint-anim"], + [572, "v1", "art-joint-anim"], + [626, "v1", "art-joint-anim"], + [686, "v1", "art-joint-anim"], + [744, "v1", "art-joint-anim"] + ], + "(code target-pilot-daxter-perch)": [ + [16, "v1", "art-joint-anim"], + [130, "v1", "art-joint-anim"], + [69, "v1", "art-joint-anim"] + ], + "(code target-pilot-get-on)": [ + [79, "gp", "art-joint-anim"], + [187, "a1", "vehicle"] + ], + "(trans target-pilot-get-on)": [ + [28, "gp", "process-focusable"], + [36, "gp", "vehicle"], + [47, "gp", "vehicle"] + ], + "(event target-pilot-grab)": [[33, "a0", "process"]], + "target-pilot-signal-ready": [ + [20, "gp", "vehicle"], + [35, "gp", "vehicle"] + ], + "target-daxter-pilot-car-anim-loop": [[70, "v1", "art-joint-anim"]], + "target-pilot-trans": [[14, "a0", "vehicle"]], + "(method 14 race-mesh)": [ + [21, "v1", "race-mesh-slice"], + [26, "v1", "race-mesh-slice"] + ], + "(method 11 race-mesh)": [ + [5, "v1", "race-mesh-slice"], + [9, "v1", "race-mesh-slice"] + ], + "(method 12 race-mesh)": [[13, "v1", "race-mesh-slice"]], + "(method 15 race-mesh)": [[10, "v1", "race-mesh-slice"]], + "(method 17 race-mesh)": [[35, "s3", "race-mesh-hash-cell"]], + "(method 19 race-mesh)": [[12, "v1", "race-mesh-slice"]], + "(method 18 race-mesh)": [ + [15, "a2", "race-mesh-hash-search"], + [31, "v1", "race-mesh-hash-cell"], + [45, "a2", "int"] + ], + "(trans tracking tire-trail-tracker)": [ + [15, "v1", "process-drawable"], + [22, "v1", "process-drawable"] + ], + "(method 19 tire-trail)": [ + [[5, 28], "s5", "tire-trail-crumb"], + [[5, 28], "s4", "tire-trail-crumb"] + ], + "vehicle-spawn": [[93, "gp", "vehicle"]], + "vehicle-spawn-hack": [[41, "gp", "vehicle"]], + "(method 11 w-parking-spot)": [[42, "v0", "vector"]], + "(method 21 w-parking-spot)": [ + [20, "s5", "vehicle"], + [22, "s5", "vehicle"] + ], + "(method 25 w-parking-spot)": [ + [13, "v1", "vehicle"], + [18, "v1", "vehicle"], + [27, "v1", "vehicle"] + ], + "(method 26 w-parking-spot)": [[15, "v1", "int"]], + "(method 62 v-snake)": [[[4, 48], "s5", "collide-shape-prim-group"]], + "(method 62 v-scorpion)": [[[4, 41], "s5", "collide-shape-prim-group"]], + "(method 62 v-toad)": [[[4, 41], "s5", "collide-shape-prim-group"]], + "(method 62 v-fox)": [[[4, 48], "s5", "collide-shape-prim-group"]], + "(method 62 v-rhino)": [[[4, 41], "s5", "collide-shape-prim-group"]], + "(method 62 v-mirage)": [[[4, 48], "s5", "collide-shape-prim-group"]], + "(method 62 v-x-ride)": [[[4, 48], "s5", "collide-shape-prim-group"]], + "(code part-tester-idle)": [[[6, 22], "s5", "process-drawable"]], + "(code down des-beast)": [[22, "v1", "art-joint-anim"]], + "des-beast-gun-swivel-callback": [[[19, 83], "s3", "des-beast"]], + "(code idle beast-rider)": [[10, "v1", "art-joint-anim"]], + "(trans idle beast-rider)": [[25, "v1", "process-drawable"]], + "(code impact beast-grenade)": [[33, "a0", "process"]], + "des-beast-gun-callback": [[[13, 76], "s4", "des-beast"]], + "(method 84 des-beast)": [ + [99, "s1", "process-drawable"], + [115, "s1", "process-drawable"], + [121, "s1", "process-drawable"], + [128, "s1", "process-drawable"], + [300, "s4", "touching-shapes-entry"], + [309, "s5", "process-drawable"] + ], + "(method 82 des-beast)": [[[25, 89], "s5", "attack-info"]], + "(method 26 task-manager-highlight-vehicle)": [ + [40, "a0", "process-focusable"] + ], + "(code active task-manager-highlight-vehicle-wait)": [ + [69, "t9", "(function none)"] + ], + "(method 26 task-manager-nest-hunt)": [[358, "v1", "process-focusable"]], + "(method 26 task-manager-highlight-vehicle-wait)": [ + [40, "a0", "process-focusable"] + ], + "(method 26 task-manager-temple-climb)": [ + [126, "s5", "process-focusable"], + [130, "s5", "process-focusable"] + ], + "(method 26 task-manager-desert-beast-battle)": [ + [39, "a0", "process-focusable"] + ], + "(method 26 task-manager-desert-hover)": [[58, "a0", "process-focusable"]], + "(trans idle sig-rider)": [ + [24, "a0", "vehicle"], + [26, "a0", "vehicle"] + ], + "(method 32 task-manager-temple)": [ + [129, "s5", "process-focusable"], + [167, "s5", "process-focusable"] + ], + "set-nstb-lights!": [[[19, 29], "v1", "nstb-states"]], + "update-mood-nsta": [[17, "v1", "nsta-states"]], + "update-mood-nstb": [[17, "v1", "nstb-states"]], + "(enter fail task-manager-desert-interceptors-attack)": [ + [ + 12, + "v0", + "(state resetter-params task-manager-desert-interceptors-attack)" + ] + ], + "(code retracting nst-cocoon-b)": [[10, "v1", "art-joint-anim"]], + "(code hit nst-cocoon-a)": [[115, "t9", "(function none)"]], + "(code notice nst-cocoon-a)": [[33, "v1", "art-joint-anim"]], + "(code falling nst-falling-stone-bridge)": [[75, "v1", "art-joint-anim"]], + "(event idle nst-light-barrier)": [ + [5, "v1", "attack-info"], + [7, "v1", "attack-info"], + [28, "v1", "process-focusable"] + ], + "(method 22 nst-collapsing-stone-bridge)": [ + [62, "s2", "pair"], + [81, "s2", "pair"], + [82, "v1", "pair"], + [95, "s2", "pair"], + [96, "v1", "pair"], + [97, "v1", "pair"], + [103, "s3", "pair"], + [102, "s3", "pair"], + [105, "s3", "pair"] + ], + "(method 26 task-manager-nest-cocoon-gas)": [ + [223, "a0", "process-focusable"] + ], + "birth-func-set-fog-num": [[21, "v1", "task-manager-nest-cocoon-gas"]], + "part-nest-bat1-path": [ + [13, "v1", "int"], + [86, "v1", "part-tracker"], + [90, "a0", "part-tracker"] + ], + "part-nest-bat2-path": [ + [13, "v1", "int"], + [86, "a0", "part-tracker"] + ], + "part-nest-bat3-path": [ + [13, "v1", "int"], + [90, "a0", "part-tracker"] + ], + "part-nest-bat4-path": [ + [13, "v1", "int"], + [90, "a0", "part-tracker"] + ], + "part-nest-bat5-path": [ + [13, "v1", "int"], + [86, "a0", "part-tracker"] + ], + "part-nest-bat6-path": [ + [13, "v1", "int"], + [90, "a0", "part-tracker"] + ], + "part-nest-bat7-path": [ + [13, "v1", "int"], + [86, "a0", "part-tracker"] + ], + "part-nest-bat8-path": [ + [13, "v1", "int"], + [90, "a0", "part-tracker"] + ], + "part-nest-bat9-path": [ + [13, "v1", "int"], + [90, "a0", "part-tracker"] + ], + "part-nest-bat10-path": [ + [13, "v1", "int"], + [86, "a0", "part-tracker"] + ], + "(method 32 task-manager-nest-cocoons)": [["_stack_", 16, "res-tag"]], + "(code active task-manager-nest-cocoons)": [ + [155, "v1", "(pointer process)"], + [168, "gp", "handle"] + ], + "(method 26 task-manager-nest-cocoons)": [[156, "a0", "process-focusable"]], + "(method 33 task-manager-nest-cocoons)": [ + [77, "v1", "process"], + [80, "v1", "process"] + ], + "(code resolution task-manager-nest-cocoons)": [ + [102, "t9", "(function none)"] + ], + "(code attack egg-spider)": [ + [14, "v1", "art-joint-anim"], + [88, "v1", "art-joint-anim"] + ], + "(method 82 egg-spider)": [ + [[8, 40], "s1", "attack-info"], + [54, "v1", "rigid-body-impact"], + ["_stack_", 16, "float"], + ["_stack_", 32, "float"] + ], + "(post idle egg-spider)": [[4, "t9", "(function none)"]], + "(method 194 egg-spider)": [ + [26, "s2", "process-focusable"], + [33, "s2", "process-focusable"], + [39, "s2", "process-focusable"], + [78, "s2", "process-focusable"], + [108, "s2", "process-focusable"], + [111, "s2", "process-focusable"] + ], + "(code on-vehicle egg-spider)": [ + [10, "v1", "art-joint-anim"], + [62, "v1", "art-joint-anim"] + ], + "(exit on-vehicle egg-spider)": [ + [12, "a0", "wvehicle"], + [15, "a0", "wvehicle"] + ], + "(code ambush egg-spider)": [ + [143, "a0", "process-focusable"], + [146, "a0", "process-focusable"], + [209, "v1", "art-joint-anim"] + ], + "(code jump-on-vehicle egg-spider)": [[10, "v1", "art-joint-anim"]], + "(trans attack egg-spider)": [ + [29, "a0", "process-focusable"], + [35, "a0", "process-focusable"], + [38, "a0", "process-focusable"] + ], + "(trans jump-on-vehicle egg-spider)": [ + [17, "s4", "wvehicle"], + [24, "s4", "wvehicle"], + [28, "s4", "wvehicle"] + ], + "(trans on-vehicle egg-spider)": [ + [17, "s5", "process-focusable"], + [26, "s5", "wvehicle"], + [33, "s5", "wvehicle"], + [40, "s5", "wvehicle"] + ], + "(trans hostile egg-spider)": [ + [66, "gp", "wvehicle"], + [77, "gp", "wvehicle"], + [88, "gp", "wvehicle"], + [103, "gp", "wvehicle"], + [125, "gp", "wvehicle"], + [142, "gp", "wvehicle"], + [151, "gp", "wvehicle"], + [169, "gp", "wvehicle"], + [172, "gp", "wvehicle"] + ], + "(trans idle spider-manager)": [ + [252, "gp", "process-focusable"], + [255, "gp", "process-focusable"], + [265, "gp", "process-focusable"] + ], + "(method 23 spider-manager)": [ + [18, "v1", "egg-spider"], + [24, "v1", "egg-spider"], + [34, "s3", "int"] + ], + "(method 11 spider-manager)": [ + ["_stack_", 16, "res-tag"], + ["_stack_", 32, "res-tag"] + ], + "ripple-find-height": [[[31, 82], "s4", "mei-ripple"]], + "(method 21 task-manager-desert-hover)": [["_stack_", 16, "res-tag"]], + "(method 11 nst-metalhead-eggs)": [["_stack_", 16, "res-tag"]], + "(method 11 nst-falling-stone-bridge)": [["_stack_", 16, "res-tag"]], + "(method 11 sew-m-gate)": [["_stack_", 16, "res-tag"]], + "(method 9 turret-control)": [[344, "a0", "collide-shape-prim"]], + "(method 62 v-marauder)": [[[4, 53], "s5", "collide-shape-prim-group"]], + "(method 62 v-marauder-b)": [[[4, 53], "s5", "collide-shape-prim-group"]], + "(method 15 wasdoors-manager)": [ + [29, "s5", "process-focusable"], + [34, "s5", "process-focusable"] + ], + "wasdoors-cleanup": [[25, "s5", "process-focusable"]], + "update-mood-wascityb": [[[39, 51], "s4", "wascityb-states"]], + "set-wascityb-turret-flash!": [[10, "v1", "wascityb-states"]], + "tizard-tilt-jmod-func": [ + [11, "v1", "tizard"], + [16, "v1", "tizard"], + ["_stack_", 32, "tizard"], + ["_stack_", 36, "int"], + [25, "a1", "tizard"] + ], + "(code die tizard)": [[41, "v1", "art-joint-anim"]], + "(code turning tizard)": [ + [57, "v1", "art-joint-anim"], + [115, "v1", "art-joint-anim"] + ], + "(code walk tizard)": [[14, "v1", "art-joint-anim"]], + "(method 34 tizard)": [["_stack_", 608, "pat-surface"]], + "(method 168 wvehicle)": [ + [52, "s5", "process-focusable"], + [61, "s5", "process-focusable"], + [63, "s5", "process-focusable"] + ], + "(method 90 wvehicle)": [ + [58, "a0", "uint"], + [65, "a0", "uint"], + [146, "a0", "process-focusable"], + [89, "v1", "uint"] + ], + "(event idle des-plant)": [[[12, 22], "s4", "attack-info"]], + "(method 31 des-plant)": [[[10, 23], "s5", "collide-shape-prim-group"]], + "(event idle des-cactus-obstacle)": [ + [21, "s2", "process-focusable"], + [[142, 144], "v1", "touching-shapes-entry"], + [142, "a2", "touching-shapes-entry"], + [147, "a2", "touching-shapes-entry"] + ], + "(code up des-jump-bridge)": [ + [23, "v1", "art-joint-anim"], + [44, "v1", "art-joint-anim"] + ], + "(code lower des-draw-bridge)": [[25, "v1", "art-joint-anim"]], + "(code raise des-draw-bridge)": [[15, "v1", "art-joint-anim"]], + "(code down des-draw-bridge)": [[18, "v1", "art-joint-anim"]], + "(code raise des-jump-bridge)": [ + [15, "v1", "art-joint-anim"], + [68, "v1", "art-joint-anim"] + ], + "sparticle-duststorm-move": [[27, "v1", "float"]], + "(event track desert-dust-storm)": [ + [52, "a0", "vector"], + [4, "v1", "float"], + [55, "v1", "float"], + [16, "v1", "float"] + ], + "(event hold-pos desert-dust-storm)": [ + [37, "a0", "vector"], + [40, "v1", "float"], + [9, "v1", "float"] + ], + "(method 17 desert-dust-storm)": [ + [27, "v1", "float"], + [65, "v1", "float"], + [82, "v1", "float"] + ], + "(method 20 desert-dust-storm)": [ + [129, "v1", "float"], + [153, "v1", "float"] + ], + "(method 18 desert-dust-storm)": [ + [54, "v1", "float"], + [87, "v1", "float"], + [106, "v1", "float"] + ], + "(method 19 desert-dust-storm)": [ + [70, "v1", "float"], + [96, "v1", "float"], + [123, "v1", "float"] + ], + "update-mood-desertg": [[38, "s5", "desert-states"]], + "(code complete task-manager-desert-artifact-race)": [ + [66, "t9", "(function none)"] + ], + "(method 24 was-artifact)": [ + [29, "a1", "process-drawable"], + [30, "a0", "collide-shape"] + ], + "(method 21 task-manager-desert-artifact-race)": [ + [182, "v0", "(pointer actor-group)"], + ["_stack_", 16, "res-tag"] + ], + "(code active task-manager-desert-artifact-race)": [ + [352, "v1", "(pointer process)"], + [434, "s5", "process-drawable"], + [442, "s5", "process-drawable"], + [448, "s5", "process-drawable"], + [466, "s5", "process-drawable"], + [544, "s5", "process-drawable"], + [257, "v1", "(pointer process)"] + ], + "(enter fail task-manager-desert-artifact-race)": [ + [12, "v0", "(state resetter-params task-manager)"] + ], + "(method 21 task-manager-desert-turtle-training)": [ + [36, "v0", "(pointer actor-group)"], + ["_stack_", 16, "res-tag"] + ], + "(method 26 task-manager-desert-turtle-training)": [ + [30, "a0", "process-drawable"], + [35, "a0", "process-drawable"], + [39, "a0", "wvehicle"], + [42, "a0", "wvehicle"] + ], + "(code active task-manager-desert-turtle-training)": [ + [554, "v1", "wvehicle"], + [1064, "v0", "(state task-manager)"], + [1066, "t9", "(function none)"] + ], + "(method 9 race-info)": [[4, "v0", "entity-race-mesh"]], + "(method 20 race-manager)": [[23, "v0", "entity-race-mesh"]], + "(method 9 racer-state)": [ + [16, "v1", "process-focusable"], + [23, "v1", "process-focusable"] + ], + "(method 11 race-state)": [ + [[94, 103], "s5", "process-drawable"], + [[156, 162], "s5", "process-drawable"] + ], + "(method 19 race-state)": [[78, "a3", "process-drawable"]], + "(post active race-manager)": [[71, "v1", "rigid-body-object"]], + "(method 177 wvehicle)": [ + [64, "a0", "uint"], + [71, "a0", "uint"], + [[185, 196], "v1", "process-drawable"] + ], + "wland-driver-pilot-trans": [[[14, 19], "a0", "wvehicle"]], + "(trans idle kleever-rider)": [[25, "v1", "process-drawable"]], + "kleever-pilot-trans": [[[14, 19], "a0", "wvehicle"]], + "(code finished task-manager-desert-course-race)": [ + [83, "t9", "(function none)"] + ], + "(code active task-manager-desert-course-race)": [ + [18, "t9", "(function none)"] + ], + "(code complete task-manager-race)": [[11, "t9", "(function none)"]], + "(code active task-manager-bbush-rally)": [[59, "t9", "(function none)"]], + "(code active task-manager-bbush-time-trial-1)": [ + [70, "t9", "(function none)"] + ], + "(method 33 task-manager-bbush-rally)": [[32, "s3", "vehicle"]], + "(method 33 task-manager-desert-course-race)": [[27, "s3", "vehicle"]], + "task-manager-desert-course-race-pre-race-sequence": [ + [58, "v1", "process-focusable"], + [64, "v1", "process-focusable"], + [199, "a0", "process-focusable"], + [320, "v1", "process-focusable"], + [375, "v1", "process-focusable"] + ], + "(code active task-manager-race)": [ + [109, "a1", "process-focusable"], + [263, "t9", "(function none)"] + ], + "(event closed tpl-break-door-a)": [[[9, 22], "v1", "attack-info"]], + "(event closed tpl-break-alcove)": [[[4, 17], "v1", "attack-info"]], + "(method 11 tpl-fan-three)": [[99, "v0", "(pointer float)"]], + "(method 11 tpl-spindle)": [[131, "v0", "(pointer float)"]], + "(method 11 tpl-fan-two)": [[99, "v0", "(pointer float)"]], + "(event idle-up tpl-spike-trap)": [ + [42, "gp", "process-drawable"], + [83, "gp", "process-focusable"] + ], + "(code idle-down tpl-spike-trap)": [[29, "v1", "art-joint-anim"]], + "(code idle-up tpl-spike-trap)": [[29, "v1", "art-joint-anim"]], + "(code alert tpl-holo-eye)": [[27, "v1", "art-joint-anim"]], + "(code idle tpl-holo-eye)": [ + [10, "v1", "art-joint-anim"], + [92, "v1", "art-joint-anim"], + [158, "v1", "art-joint-anim"] + ], + "(event idle tpl-bouncer)": [[[120, 127], "v1", "attack-info"]], + "(trans active task-manager-temple-oracle-powerup)": [ + [14, "gp", "process-drawable"] + ], + "(code flip tpl-spinning-plat)": [[18, "v0", "sound-rpc-set-param"]], + "(trans flip tpl-spinning-plat)": [ + [2, "v1", "collide-shape-prim-group"], + [26, "v0", "sound-rpc-set-param"] + ], + "(event idle tpl-door-switch)": [[5, "v1", "attack-info"]], + "(method 11 tpl-watcher)": [ + [51, "v0", "(pointer actor-group)"], + [156, "s3", "particle-local-space-info"], + [159, "s3", "particle-local-space-info"], + [154, "s3", "particle-local-space-info"], + [161, "s3", "particle-local-space-info"], + ["_stack_", 16, "res-tag"] + ], + "(code down tpl-door-switch)": [ + [26, "v1", "art-joint-anim"], + [99, "v0", "(pointer actor-group)"], + ["_stack_", 96, "res-tag"] + ], + "(method 11 tpl-watcher-manager)": [["_stack_", 16, "res-tag"]], + "(method 11 hover-training-manager)": [["_stack_", 16, "res-tag"]], + "(method 11 tpl-token)": [["_stack_", 16, "res-tag"]], + "(method 11 tpl-holo-eye)": [["_stack_", 16, "res-tag"]], + "(code firing tpl-watcher)": [[143, "a1", "process-drawable"]], + "(event firing tpl-watcher)": [[[4, 13], "v1", "attack-info"]], + "(event idle tpl-watcher)": [[[12, 21], "v1", "attack-info"]], + "(code open tpl-gate)": [[26, "v1", "art-joint-anim"]], + "(code close tpl-gate)": [[59, "v1", "art-joint-anim"]], + "(code until-watchers-dead tpl-watcher-manager)": [ + [73, "a0", "process-focusable"] + ], + "(event standing-down tpl-watcher)": [[[12, 21], "v1", "attack-info"]], + "(event flip tpl-spinning-plat)": [ + [29, "gp", "process-focusable"], + [71, "gp", "process-focusable"] + ], + "shoot-at-jak": [[61, "s3", "process-focusable"]], + "update-mood-templea": [[[34, 69], "s5", "templea-states"]], + "(code attack tomb-baby-spider)": [[30, "v1", "art-joint-anim"]], + "(exit attack tomb-baby-spider)": [[2, "v1", "collide-shape-prim-group"]], + "(code attack-stop tomb-baby-spider)": [[10, "v1", "art-joint-anim"]], + "(method 87 tomb-baby-spider)": [ + [49, "v1", "art-joint-anim"], + [77, "v1", "art-joint-anim"], + [[127, 140], "v1", "collide-shape-prim-group"] + ], + "(method 86 tomb-baby-spider)": [ + [13, "a2", "art-joint-anim"], + [50, "a2", "art-joint-anim"] + ], + "(method 85 tomb-baby-spider)": [ + [[2, 11], "a2", "collide-shape-prim-group"], + [36, "a2", "art-joint-anim"], + [73, "a2", "art-joint-anim"] + ], + "(enter attack tomb-baby-spider)": [[14, "v1", "collide-shape-prim-group"]], + "(code notice tomb-baby-spider)": [ + [32, "a0", "process-focusable"], + [35, "a0", "process-focusable"], + [57, "v1", "art-joint-anim"], + [120, "v1", "art-joint-anim"] + ], + "(code active tomb-baby-spider)": [ + [30, "v1", "art-joint-anim"], + [126, "v1", "art-joint-anim"], + [188, "v1", "art-joint-anim"], + [297, "v1", "art-joint-anim"] + ], + "(code collapsing tpl-break-bridge)": [ + [27, "a2", "collide-shape-prim-group"] + ], + "(event idle tpl-break-bridge)": [[12, "v1", "attack-info"]], + "(code drop tpl-stone-break)": [[14, "v1", "art-joint-anim"]], + "(trans drop tpl-stone-break)": [[34, "v0", "sound-rpc-set-param"]], + "(code hostile des-beast-2)": [ + [14, "v1", "art-joint-anim"], + [42, "v1", "art-joint-anim"] + ], + "(event hidden quantum-reflector)": [[[12, 34], "v1", "vector"]], + "(enter impact beast-grenade-2)": [[59, "a0", "process"]], + "(method 82 des-beast-2)": [[54, "v1", "float"]], + "(trans die-run des-beast-2)": [ + [102, "v1", "(pointer process)"], + [94, "v1", "handle"] + ], + "(post hostile des-beast-2)": [ + ["_stack_", 500, "float"], + ["_stack_", 336, "float"] + ], + "(anon-function 23 des-beast-2)": [ + [24, "a0", "process-focusable"], + [27, "a0", "process-focusable"] + ], + "(method 140 des-beast-2)": [ + [22, "s4", "process-focusable"], + [31, "s4", "process-focusable"], + [33, "s4", "process-focusable"] + ], + "(anon-function 2 des-beast-2)": [[[13, 38], "s4", "des-beast-2"]], + "(anon-function 1 des-beast-2)": [[[13, 46], "s4", "des-beast-2"]], + "(event idle scorpion-gun-aim)": [[7, "a0", "vector"]], + "(post active scorpion-gun-manager)": [[25, "v1", "vehicle"]], + "(enter active scorpion-gun-manager)": [[76, "gp", "vehicle"]], + "(method 24 scorpion-gun)": [ + [14, "gp", "process-drawable"], + [20, "gp", "process-drawable"], + [26, "gp", "process-focusable"] + ], + "scorpion-gun-handler": [[110, "v1", "vector"]], + "(code cam-scorpion-gun)": [[26, "v0", "handle"]], + "(method 21 scorpion-gun-manager)": [ + [13, "v1", "process-drawable"], + [19, "v1", "process-drawable"] + ], + "(method 31 mh-flyer-shot)": [ + [85, "s3", "process-focusable"], + [91, "s3", "process-focusable"], + [93, "s3", "process-focusable"], + ["_stack_", 96, "float"], + ["_stack_", 112, "float"] + ], + "mh-flyer-shot-move": [ + [21, "s2", "process-focusable"], + [27, "s2", "process-focusable"], + [29, "s2", "process-focusable"] + ], + "(enter impact mh-flyer-shot)": [[51, "a0", "process"]], + "(code orbiting mh-flyer)": [[14, "v1", "art-joint-anim"]], + "scorpion-gun-manager-handler": [ + [23, "v0", "vector"], + [42, "v1", "vector"] + ], + "(anon-function 33 scorpion-gun)": [[2, "v1", "scorpion-gun"]], + "(anon-function 34 scorpion-gun)": [[6, "v1", "scorpion-gun"]], + "aim-post": [ + [180, "s4", "process-drawable"], + [189, "s4", "process-focusable"], + [140, "s4", "process"], + [34, "v0", "(array collide-shape)"], + [291, "a1", "collide-shape-prim"], + ["_stack_", 1312, "rgba"] + ], + "(code impact turret-shot)": [[4, "v1", "collide-shape-prim-group"]], + "(event impact turret-shot)": [[13, "v1", "process-drawable"]], + "target-turret-stance-handler": [[102, "gp", "attack-info"]], + "(code target-turret-get-on)": [[169, "v1", "art-joint-anim"]], + "target-for-turret-get-off-play": [[14, "v1", "art-joint-anim"]], + "target-turret-get-off-play": [[14, "v1", "art-joint-anim"]], + "target-for-turret-get-on-play": [[74, "a0", "process-drawable"]], + "(code cam-turret)": [ + [19, "a0", "target"], + [22, "a0", "target"], + [35, "gp", "target-turret"], + [39, "gp", "target-turret"] + ], + "target-turret-get-on-play": [ + [13, "v1", "art-joint-anim"], + [102, "a0", "process-drawable"] + ], + "target-for-turret-stance-play": [ + [80, "v0", "float"], + [81, "v1", "float"] + ], + "(post shutdown target-turret)": [[33, "t9", "(function none)"]], + "(post active target-turret)": [[54, "t9", "(function none)"]], + "(method 56 target-turret)": [ + [[9, 16], "v0", "vector"], + [28, "v0", "vector"] + ], + "(method 14 nav-network)": [[[4, 8], "a3", "list-node"]], + "(method 11 hover-formation)": [[68, "v0", "vector"]], + "(method 14 hover-formation-control)": [ + [18, "v0", "path-control"], + [131, "a0", "process-focusable"], + [35, "a0", "process-focusable"], + [134, "a0", "process-focusable"] + ], + "(method 13 hover-formation-control)": [ + [16, "v0", "path-control"], + [46, "s1", "process-focusable"], + [39, "s1", "process-focusable"], + [33, "a0", "process-focusable"], + [49, "s1", "process-focusable"] + ], + "(method 16 hover-formation-control)": [ + [32, "s4", "process-focusable"], + [52, "s4", "process-focusable"], + [55, "s4", "process-focusable"] + ], + "(method 11 hover-formation-control)": [ + [43, "a0", "process-focusable"], + [46, "a0", "process-focusable"] + ], + "(method 15 nav-network)": [ + [64, "a2", "nav-network-path-node"], + [[69, 87], "a2", "nav-network-path-node"], + [[109, 120], "a2", "nav-network-path-node"], + [[37, 40], "v1", "nav-network-path-node"] + ], + "(method 13 nav-network)": [ + [47, "a0", "nav-network-path-node"], + [44, "a0", "nav-network-path-node"] + ], + "(method 25 nav-network)": [[[59, 117], "s2", "nav-network-path-node"]], + "(method 26 nav-network)": [ + [[13, 15], "v1", "hover-nav-sphere"], + [[91, 102], "a3", "hover-nav-sphere"] + ], + "(method 27 nav-network)": [ + [[21, 23], "v1", "hover-nav-sphere"], + [24, "v1", "hover-nav-sphere"] + ], + "(method 28 nav-network)": [ + [81, "v1", "hover-nav-sphere"], + [5, "v1", "hover-nav-sphere"], + [[12, 14], "v1", "hover-nav-sphere"] + ], + "(method 17 hover-nav-control)": [[7, "a0", "collide-shape-prim-group"]], + "(method 32 hover-nav-control)": [ + [[4, 61], "v1", "hover-nav-path-segment"], + [5, "a2", "hover-nav-path-segment"], + [28, "a2", "hover-nav-path-segment"] + ], + "(method 37 nav-network)": [[36, "v0", "string"]], + "(method 11 hover-nav-control)": [["_stack_", 144, "float"]], + "(method 59 hover-enemy)": [ + [24, "a0", "process-focusable"], + [27, "a0", "process-focusable"], + [35, "s5", "process-focusable"], + [38, "s5", "process-focusable"], + [23, "s5", "process-focusable"] + ], + "hover-enemy-fly-code": [ + [21, "gp", "art-joint-anim"], + [43, "gp", "art-joint-anim"], + [65, "gp", "art-joint-anim"] + ], + "(method 169 hover-enemy)": [["_stack_", 608, "float"]], + "(method 176 hover-enemy)": [[[93, 95], "v1", "vector"]], + "(enter ambush hover-enemy)": [[71, "a0", "collide-shape-prim-group"]], + "(code flying-death hover-enemy)": [[20, "v1", "art-joint-anim"]], + "(enter flying-death hover-enemy)": [[46, "a1", "process-drawable"]], + "(method 159 hover-enemy)": [[[6, 11], "a0", "collide-shape-prim-group"]], + "hover-enemy-hostile-post": [[14, "v0", "hover-formation"]], + "(method 82 hover-enemy)": [ + [122, "v1", "vector"], + [147, "a0", "collide-shape-prim-group"] + ], + "(code flying-death-explode flamer-hover)": [[14, "v1", "art-joint-anim"]], + "(code knocked-recover flamer-hover)": [[14, "v1", "art-joint-anim"]], + "(code attack flamer-hover)": [ + [19, "v1", "art-joint-anim"], + [72, "v1", "art-joint-anim"] + ], + "(event attack flamer-hover)": [ + [22, "s5", "process-focusable"], + [25, "s5", "process-focusable"] + ], + "(method 50 flamer-hover)": [ + [10, "v1", "collide-shape-prim-group"], + [30, "v1", "collide-shape-prim-group"] + ], + "(method 85 flamer-hover)": [ + [100, "a1", "art-joint-anim"], + [70, "s4", "art-joint-anim"] + ], + "(method 30 hover-nav-control)": [[205, "a1", "pointer"]], + "(method 0 hover-formation-control)": [[136, "v0", "int"]], + "(method 121 robo-hover)": [ + ["_stack_", 16, "res-tag"], + ["_stack_", 32, "res-tag"], + ["_stack_", 48, "res-tag"], + ["_stack_", 64, "res-tag"], + [176, "v0", "(pointer float)"], + [114, "v0", "(pointer float)"], + [88, "v0", "(pointer actor-group)"] + ], + "robo-hover-arm-jmod": [ + [[13, 55], "s4", "robo-hover"], + [52, "s2", "int"] + ], + "(code ambush-attack robo-hover)": [[37, "v1", "art-joint-anim"]], + "(method 183 robo-hover)": [ + [31, "a0", "process-focusable"], + [34, "a0", "process-focusable"] + ], + "(post hostile robo-hover)": [[4, "t9", "(function none)"]], + "(post kick-attack robo-hover)": [ + [34, "a0", "process-focusable"], + [37, "a0", "process-focusable"] + ], + "(code attack robo-hover)": [[37, "v1", "art-joint-anim"]], + "(post ambush-attack robo-hover)": [[3, "t9", "(function none)"]], + "(post notice robo-hover)": [[4, "t9", "(function none)"]], + "(code knocked-recover robo-hover)": [ + [26, "v1", "art-joint-anim"], + [55, "v1", "ragdoll-proc"] + ], + "(post knocked robo-hover)": [[6, "t9", "(function none)"]], + "(method 82 robo-hover)": [ + [9, "v1", "attack-info"], + [96, "v1", "attack-info"], + [117, "v1", "rigid-body-impact"] + ], + "(method 56 robo-hover)": [[21, "a1", "process-drawable"]], + "(code wait-to-trigger-movie tow-large-plat)": [[10, "v1", "art-joint-anim"]], + "(code lower tow-large-plat)": [[10, "v1", "art-joint-anim"]], + "(code idle tow-large-plat)": [[10, "v1", "art-joint-anim"]], + "(code lowered tow-large-plat)": [[10, "v1", "art-joint-anim"]], + "(code idle tow-tentacle)": [[13, "v1", "art-joint-anim"]], + "(method 26 tow-spawner)": [ + [98, "s3", "prebot-small-eco-creature"], + [[101, 111], "s3", "prebot-small-eco-creature"] + ], + "(method 25 tow-spawner)": [[28, "v0", "(array collide-shape)"]], + "(code spawning tow-spawner)": [ + [14, "v1", "art-joint-anim"], + [152, "v1", "art-joint-anim"], + [209, "v1", "art-joint-anim"] + ], + "(code active tow-spawner)": [[14, "v1", "art-joint-anim"]], + "(method 11 actor-group-watcher)": [["_stack_", 16, "res-tag"]], + "(method 11 tow-large-plat)": [["_stack_", 16, "res-tag"]], + "update-mood-forest": [[[23, 71], "gp", "forest-states"]], + "set-forest-gun-flash!": [[13, "v1", "forest-states"]], + "set-forest-fog-interp!": [ + [21, "v1", "forest-states"], + [10, "v1", "forest-states"] + ], + "(method 23 for-log)": [[53, "v1", "process-drawable"]], + "(method 24 for-log)": [ + [8, "a0", "water-anim"], + [10, "a0", "water-anim"] + ], + "for-pillar-event-handler": [[27, "v1", "focus"]], + "for-log-callback": [ + [[9, 39], "s4", "for-log"], + [[10, 38], "s3", "int"] + ], + "(event idle for-break-bridge-board)": [ + [18, "a0", "touching-shapes-entry"], + [21, "a0", "collide-shape-prim-group"], + [25, "a0", "collide-shape-prim-group"], + [27, "v1", "attack-info"], + [17, "gp", "touching-shapes-entry"], + [62, "gp", "touching-shapes-entry"], + [44, "gp", "touching-shapes-entry"] + ], + "(method 26 task-manager-forest-plants)": [ + [93, "s5", "hud"], + [131, "s5", "hud"] + ], + "(anon-function 7 forest-kill-plants)": [[10, "a1", "connection-minimap"]], + "(code active task-manager-forest-plants)": [ + [764, "v1", "(pointer process)"], + [766, "s5", "handle"], + [760, "s5", "handle"], + [763, "s5", "handle"], + [761, "v1", "handle"] + ], + "(method 32 task-manager-forest-machine)": [["_stack_", 16, "res-tag"]], + "(method 32 task-manager-forest-plants)": [["_stack_", 16, "res-tag"]], + "(code active task-manager-forest-machine-resolution)": [ + [78, "v1", "int"], + ["_stack_", 16, "res-tag"] + ], + "set-railx-light-brightness-fora!": [ + [[30, 35], "v1", "railx-states-fora"], + [[13, 18], "v1", "railx-states-fora"] + ], + "(anon-function 21 forest-tasks)": [ + [13, "t9", "(function mood-context symbol)"] + ], + "(anon-function 4 forest-tasks)": [ + [13, "t9", "(function mood-context symbol)"] + ], + "(anon-function 10 forest-tasks)": [ + [13, "t9", "(function mood-context symbol)"] + ], + "(anon-function 11 forest-tasks)": [ + [13, "t9", "(function mood-context symbol)"] + ], + "(code die mh-plant)": [[10, "v1", "art-joint-anim"]], + "(trans repopulate mh-plant)": [ + [21, "v1", "art-joint-anim"], + [175, "v1", "art-joint-anim"], + [229, "v1", "art-joint-anim"], + [267, "v1", "art-joint-anim"] + ], + "(code idle mh-plant)": [[10, "v1", "art-joint-anim"]], + "(trans pop-up mh-plant)": [[22, "v1", "art-joint-anim"]], + "mh-plant-event-handler": [ + [22, "v1", "attack-info"], + [74, "a0", "process-focusable"] + ], + "(method 34 mh-plant)": [ + [70, "s5", "collide-shape-prim-group"], + [76, "s5", "collide-shape-prim-group"] + ], + "(event active for-statue)": [[[13, 52], "gp", "touching-shapes-entry"]], + "(code open-eyes for-statue)": [[10, "v1", "art-joint-anim"]], + "(code complete for-statue)": [[18, "v1", "art-joint-anim"]], + "(trans idle for-race-ring)": [ + [32, "a2", "process-drawable"], + [33, "a0", "collide-shape"] + ], + "(code active task-manager-forest-ring-chase)": [ + [36, "v0", "path-control"], + [39, "a0", "path-control"] + ], + "for-race-ring-finder-init-by-other": [[37, "v0", "path-control"]], + "(method 22 for-race-ring-finder)": [ + [15, "v0", "path-control"], + [111, "v0", "entity-actor"] + ], + "(method 32 task-manager-forest-ring-chase)": [["_stack_", 16, "res-tag"]], + "(enter impact dp-bipedal-grenade-shot)": [ + [13, "v1", "collide-shape-prim-group"] + ], + "(event impact dp-bipedal-grenade-shot)": [ + [13, "v1", "process-drawable"], + [28, "s4", "collide-shape"] + ], + "(code turret-active-shoot dp-bipedal)": [[14, "v1", "art-joint-anim"]], + "(code turret-get-off dp-bipedal)": [ + [14, "v1", "art-joint-anim"], + [79, "v1", "art-joint-anim"] + ], + "(code turret-get-on dp-bipedal)": [ + [25, "v1", "art-joint-anim"], + [102, "v1", "art-joint-anim"] + ], + "(code turret-seek dp-bipedal)": [ + [14, "v1", "art-joint-anim"], + [72, "v1", "(state dp-bipedal)"] + ], + "(post die dp-bipedal)": [[17, "t9", "(function none)"]], + "(post active dp-bipedal)": [[17, "t9", "(function none)"]], + "(code knocked-recover dp-bipedal)": [ + [26, "v1", "art-joint-anim"], + [55, "v1", "ragdoll-proc"], + [98, "a0", "ragdoll-proc"], + [100, "a0", "ragdoll-proc"], + [118, "v1", "art-joint-anim"] + ], + "(code knocked dp-bipedal)": [[4, "t9", "(function none)"]], + "(post knocked dp-bipedal)": [[14, "t9", "(function none)"]], + "(code attack-throw dp-bipedal)": [[14, "v1", "art-joint-anim"]], + "(code attack-close dp-bipedal)": [ + [21, "v1", "art-joint-anim"], + [88, "v1", "art-joint-anim"], + [149, "v1", "art-joint-anim"] + ], + "(code shield-explode dp-bipedal)": [[14, "v1", "art-joint-anim"]], + "(code shield-in dp-bipedal)": [[14, "v1", "art-joint-anim"]], + "(code shield-idle dp-bipedal)": [ + [14, "v1", "art-joint-anim"], + [96, "v1", "(state dp-bipedal)"], + [80, "v1", "float"] + ], + "(code shield-out dp-bipedal)": [[14, "v1", "art-joint-anim"]], + "(code hostile-stand dp-bipedal)": [ + [14, "v1", "art-joint-anim"], + [72, "v1", "(state dp-bipedal)"] + ], + "(code hostile dp-bipedal)": [[14, "v1", "art-joint-anim"]], + "(code de-ambush dp-bipedal)": [ + [84, "v1", "art-joint-anim"], + [23, "v1", "art-joint-anim"] + ], + "(code ambush dp-bipedal)": [ + [28, "v1", "art-joint-anim"], + [96, "v1", "art-joint-anim"] + ], + "dp-bipedal-turret-code": [[86, "v1", "float"]], + "(method 82 dp-bipedal)": [[98, "v1", "rigid-body-impact"]], + "(method 59 dp-bipedal)": [ + [112, "s5", "process-focusable"], + [121, "s5", "process-focusable"], + [140, "s5", "process-focusable"], + [155, "s5", "process-focusable"], + [185, "s5", "process-focusable"], + [186, "s5", "process-focusable"], + [189, "s5", "process-focusable"] + ], + "(method 207 dp-bipedal)": [[[2, 5], "a2", "collide-shape-prim-group"]], + "(method 85 dp-bipedal)": [ + [35, "v1", "art-joint-anim"], + [63, "v1", "art-joint-anim"], + [98, "v1", "art-joint-anim"] + ], + "(method 86 dp-bipedal)": [ + [32, "v1", "art-joint-anim"], + [60, "v1", "art-joint-anim"], + [95, "v1", "art-joint-anim"] + ], + "(method 126 dp-bipedal)": [ + [17, "v1", "ragdoll-proc"], + [29, "v1", "ragdoll-proc"], + [31, "v1", "ragdoll-proc"], + [37, "v1", "ragdoll-proc"] + ], + "region-check-has-los": [ + [129, "v1", "region-prim-area"], + [134, "a0", "region-prim-area"], + [[48, 58], "v1", "region-prim-area"], + [61, "a0", "region-prim-area"], + [153, "a1", "region-prim-area"], + [156, "a2", "region-prim-area"], + [68, "a0", "region-prim-area"], + [74, "a0", "region-prim-area"], + [80, "a0", "region-prim-area"] + ], + "(method 33 dp-bipedal-shield)": [ + [38, "s5", "process-focusable"], + [50, "s5", "process-focusable"], + [68, "s5", "process-focusable"], + [71, "s5", "process-focusable"] + ], + "(method 41 dp-bipedal-shield)": [[9, "v1", "attack-info"]], + "(method 121 dp-bipedal)": [["_stack_", 16, "res-tag"]], + "(method 121 neo-wasp)": [ + [211, "v0", "(pointer float)"], + ["_stack_", 16, "res-tag"], + ["_stack_", 32, "res-tag"], + ["_stack_", 48, "res-tag"], + ["_stack_", 64, "res-tag"], + [161, "v0", "(pointer float)"], + [240, "v0", "(pointer float)"], + [135, "v0", "(pointer actor-group)"] + ], + "(code knocked-recover neo-wasp)": [[20, "v1", "art-joint-anim"]], + "(post ambush-attack neo-wasp)": [[59, "t9", "(function none)"]], + "(code ambush-attack neo-wasp)": [[38, "v1", "art-joint-anim"]], + "(code attack neo-wasp)": [[38, "v1", "art-joint-anim"]], + "(post notice neo-wasp)": [[4, "t9", "(function none)"]], + "(trans hostile neo-wasp)": [[42, "v1", "art-joint-anim"]], + "(method 56 neo-wasp)": [[21, "a1", "process-drawable"]], + "(method 85 neo-wasp)": [[32, "a1", "art-joint-anim"]], + "(method 182 neo-wasp)": [ + [25, "s5", "process-focusable"], + [44, "s5", "process-focusable"] + ], + "(method 86 neo-wasp)": [[11, "v1", "art-joint-anim"]], + "(method 159 neo-wasp)": [[[6, 9], "a0", "collide-shape-prim-group"]], + "(code spawn-enemy neo-spawner)": [ + [14, "v1", "art-joint-anim"], + [187, "v1", "art-joint-anim"] + ], + "(code open neo-spawner)": [ + [14, "v1", "art-joint-anim"], + [115, "v0", "handle"] + ], + "(code opening neo-spawner)": [[15, "v1", "art-joint-anim"]], + "(code closed neo-spawner)": [[13, "v1", "art-joint-anim"]], + "neo-spawner-handler": [[[71, 119], "gp", "attack-info"]], + "(code vulnerable neo-spawner)": [[14, "v1", "art-joint-anim"]], + "(enter dead neo-spawner)": [[27, "v1", "art-joint-anim"]], + "(method 11 neo-spawner-manager)": [["_stack_", 16, "res-tag"]], + "(method 11 neo-spawner)": [["_stack_", 16, "res-tag"]], + "(method 28 for-turret-shot)": [ + [29, "s5", "process-drawable"], + [32, "s5", "process-drawable"], + [10, "v0", "sound-rpc-set-param"] + ], + "(post active for-turret)": [[90, "t9", "(function none)"]], + "(post idle for-turret)": [[4, "t9", "(function none)"]], + "(post setup for-turret)": [[14, "t9", "(function none)"]], + "(method 18 hud-for-turret-health)": [ + [21, "a0", "vector"], + [25, "a0", "vector"], + [11, "v1", "float"] + ], + "(method 15 hud-for-turret-health)": [ + [517, "s2", "process-focusable"], + ["_stack_", 352, "float"], + ["_stack_", 368, "float"] + ], + "(post shutdown for-turret)": [[32, "t9", "(function none)"]], + "(post gunner-active for-turret)": [ + [24, "gp", "process-focusable"], + [47, "gp", "process-focusable"], + [70, "gp", "process-focusable"] + ], + "(method 56 for-turret)": [ + [[18, 36], "s4", "vector"], + [74, "s4", "vector"] + ], + "(anon-function 1 for-turret)": [ + [12, "a3", "int"], + [13, "a2", "for-turret"] + ], + "(anon-function 2 for-turret)": [[[6, 13], "v1", "for-turret"]], + "(anon-function 3 for-turret)": [[[3, 13], "s4", "for-turret"]], + "(anon-function 4 for-turret)": [[6, "v1", "for-turret"]], + "(method 37 for-turret)": [["_stack_", 16, "res-tag"]], + "(code idle vol-holo-eye)": [ + [14, "v1", "art-joint-anim"], + [80, "v1", "art-joint-anim"] + ], + "(code alert vol-holo-eye)": [[10, "v1", "art-joint-anim"]], + "(code close vol-holo-eye)": [[14, "v1", "art-joint-anim"]], + "(code closed dm-spines)": [[10, "v1", "art-joint-anim"]], + "(code attack flitter)": [ + [20, "v1", "art-joint-anim"], + [147, "v1", "art-joint-anim"] + ], + "(code circling flitter)": [[27, "v1", "art-joint-anim"]], + "(trans circling flitter)": [[14, "gp", "process-focusable"]], + "(code stare flitter)": [[126, "v1", "art-joint-anim"]], + "(post stare flitter)": [[9, "t9", "(function none)"]], + "(post active flitter)": [[9, "t9", "(function none)"]], + "(method 192 flitter)": [[19, "s3", "process-focusable"]], + "(code ambush-jumping flitter)": [ + [14, "v1", "art-joint-anim"], + [251, "v1", "art-joint-anim"] + ], + "(code ambush flitter)": [ + [132, "a0", "process-focusable"], + [135, "a0", "process-focusable"] + ], + "(method 86 flitter)": [[15, "a1", "art-joint-anim"]], + "(method 85 flitter)": [ + [14, "v1", "art-joint-anim"], + [69, "v1", "art-joint-anim"] + ], + "(trans attack flitter)": [ + [29, "gp", "process-focusable"], + [35, "gp", "process-focusable"], + [53, "gp", "process-focusable"], + [56, "gp", "process-focusable"] + ], + "(method 49 rigid-body-platform)": [ + [13, "v1", "rigid-body-control-point"], + [30, "v1", "collide-rider"], + [54, "v1", "process-focusable"], + [65, "v1", "process-focusable"], + [132, "v1", "process-focusable"], + [139, "v1", "float"] + ], + "(code falling vol-collapsing-rock)": [[11, "v1", "art-joint-anim"]], + "(code target-indax-hit)": [[351, "v1", "art-joint-anim"]], + "(code target-indax-get-off)": [[51, "gp", "art-joint-anim"]], + "(code target-indax-attack-air)": [[11, "gp", "art-joint-anim"]], + "(code target-indax-running-attack)": [ + [21, "gp", "art-joint-anim"], + [120, "f26", "float"], + [203, "f26", "float"] + ], + "(trans target-indax-get-off)": [ + [20, "v1", "process-drawable"], + [26, "v1", "process-drawable"], + [32, "v1", "process-drawable"] + ], + "(code target-indax-attack)": [[18, "gp", "art-joint-anim"]], + "(code target-indax-trip)": [ + [17, "v1", "art-joint-anim"], + [90, "v1", "art-joint-anim"] + ], + "(code target-indax-hit-ground)": [[14, "v1", "art-joint-anim"]], + "(code target-indax-double-jump)": [ + [50, "v1", "art-joint-anim"], + [104, "v1", "art-joint-anim"] + ], + "(code target-indax-walk)": [[89, "v1", "art-joint-anim"]], + "(code target-indax-stance)": [ + [23, "v1", "art-joint-anim"], + [240, "v1", "art-joint-anim"], + [94, "v1", "art-joint-anim"], + [182, "v1", "art-joint-anim"] + ], + "(code target-indax-start)": [[54, "v1", "art-joint-anim"]], + "target-indax-handler": [ + [97, "a0", "process"], + [147, "a0", "process"] + ], + "(code target-indax-death)": [ + [161, "v1", "art-joint-anim"], + [279, "v1", "art-joint-anim"], + [370, "v1", "art-joint-anim"], + [423, "v1", "art-joint-anim"], + [510, "v1", "art-joint-anim"], + [599, "v1", "art-joint-anim"], + [844, "v1", "art-joint-anim"] + ], + "(event target-indax-grab)": [[35, "a0", "process"]], + "(code target-indax-grab)": [[14, "v1", "art-joint-anim"]], + "(code target-indax-hang-attack)": [[14, "v1", "art-joint-anim"]], + "(enter target-indax-hang-attack)": [[5, "t9", "(function none)"]], + "(code target-indax-hang-dodge)": [ + [15, "v1", "art-joint-anim"], + [104, "v1", "art-joint-anim"] + ], + "(code target-indax-hang-walk)": [[34, "v1", "art-joint-anim"]], + "(code target-indax-hang-stance)": [ + [27, "v1", "art-joint-anim"], + [148, "v1", "art-joint-anim"], + [90, "v1", "art-joint-anim"] + ], + "(enter target-indax-hang-dodge)": [[5, "t9", "(function none)"]], + "(post target-indax-hang-stance)": [[10, "t9", "(function none)"]], + "(enter target-indax-hang-stance)": [[5, "t9", "(function none)"]], + "(enter target-indax-hang-turn-around)": [[5, "t9", "(function none)"]], + "(event idle vol-lava-ball)": [ + [47, "gp", "process-drawable"], + [90, "gp", "process-focusable"], + [12, "v1", "float"] + ], + "(event idle vol-bouncer)": [[[119, 126], "v1", "attack-info"]], + "(enter active vol-steam-explosion)": [ + [[18, 22], "v1", "collide-shape-prim-group"] + ], + "(enter stopped-up vol-steam-explosion)": [ + [[2, 5], "v1", "collide-shape-prim-group"] + ], + "(post idle lava-shoot)": [[[51, 97], "v1", "collide-shape-prim-group"]], + "(event idle lava-shoot)": [ + [18, "gp", "process-focusable"], + [38, "gp", "process-focusable"], + [87, "gp", "process-focusable"] + ], + "(post active vol-steam-explosion)": [ + [[66, 129], "v1", "collide-shape-prim-group"] + ], + "(event active vol-steam-explosion)": [ + [17, "gp", "process-focusable"], + [30, "gp", "process-focusable"], + [150, "v1", "float"], + [112, "v1", "float"], + [120, "v1", "float"] + ], + "(post active vol-lava-ball-spout)": [[86, "v0", "vector"]], + "(anon-function 38 volcano-obs)": [[7, "gp", "vol-balance-plat"]], + "(code collapse vol-break-ground)": [[10, "v1", "art-joint-anim"]], + "(post active vol-stone-lid)": [ + [6, "gp", "process-drawable"], + [15, "gp", "process-drawable"], + [35, "gp", "process-drawable"], + [86, "gp", "process-drawable"], + [94, "gp", "process-drawable"], + [32, "v1", "float"] + ], + "(method 49 vol-stone-lid)": [ + [6, "s5", "attack-info"], + [15, "s5", "attack-info"], + [17, "s5", "attack-info"], + [37, "a0", "process-focusable"], + [40, "a0", "process-focusable"], + [140, "s5", "attack-info"] + ], + "(method 59 spiky-frog)": [ + [18, "a0", "process-focusable"], + [21, "a0", "process-focusable"] + ], + "(method 125 spiky-frog)": [[[4, 51], "s5", "ragdoll-proc"]], + "(code knocked-recover spiky-frog)": [ + [25, "v1", "art-joint-anim"], + [49, "v1", "ragdoll-proc"], + [109, "v1", "art-joint-anim"] + ], + "(code attack-recover spiky-frog)": [ + [10, "v1", "art-joint-anim"], + [87, "v1", "art-joint-anim"], + [158, "v1", "art-joint-anim"] + ], + "(code attack spiky-frog)": [[19, "v1", "art-joint-anim"]], + "(code turn spiky-frog)": [ + [21, "v1", "art-joint-anim"], + [79, "v1", "art-joint-anim"] + ], + "(code rolling-stop spiky-frog)": [[14, "v1", "art-joint-anim"]], + "(code rolling-start spiky-frog)": [ + [16, "v1", "art-joint-anim"], + [64, "v1", "art-joint-anim"] + ], + "(code hostile spiky-frog)": [[14, "v1", "art-joint-anim"]], + "(code notice spiky-frog)": [ + [23, "v1", "art-joint-anim"], + [71, "v1", "art-joint-anim"], + [130, "v1", "art-joint-anim"] + ], + "spiky-frog-hop-slow-code": [ + [231, "v1", "art-joint-anim"], + [288, "v1", "art-joint-anim"], + [46, "v1", "art-joint-anim"], + [117, "v1", "art-joint-anim"] + ], + "(anon-function 9 spiky-frog)": [[[5, 11], "v1", "spiky-frog"]], + "(code flee-path flut-wild)": [[14, "v1", "art-joint-anim"]], + "(method 82 flut-wild)": [[79, "v0", "vector"]], + "(code notice flut-wild)": [[33, "v1", "art-joint-anim"]], + "(enter notice flut-wild)": [[90, "v1", "int"]], + "(method 121 flamer-lava)": [[159, "v1", "vector"]], + "(post knocked flamer-lava)": [[22, "t9", "(function none)"]], + "(method 50 flamer-lava)": [ + [10, "v1", "collide-shape-prim-group"], + [30, "v1", "collide-shape-prim-group"] + ], + "(code attack flamer-lava)": [ + [19, "v1", "art-joint-anim"], + [72, "v1", "art-joint-anim"] + ], + "(event attack flamer-lava)": [ + [22, "gp", "process-focusable"], + [25, "gp", "process-focusable"] + ], + "(method 85 flamer-lava)": [ + [70, "s4", "art-joint-anim"], + [100, "a1", "art-joint-anim"] + ], + "(trans hostile flamer-lava)": [ + [20, "a0", "process-focusable"], + [23, "a0", "process-focusable"] + ], + "(method 82 flamer-lava)": [[81, "v1", "vector"]], + "(method 196 flamer-lava)": [[15, "v0", "hover-formation-control"]], + "flamer-lava-fly-code": [ + [33, "v1", "art-joint-anim"], + [64, "v1", "art-joint-anim"], + [95, "v1", "art-joint-anim"] + ], + "(method 195 flamer-lava)": [[36, "v0", "hover-formation-control"]], + "(event stopped-up vol-steam-explosion)": [ + [24, "v1", "float"], + [16, "v1", "float"] + ], + "(method 97 mantis)": [[20, "a1", "art-joint-anim"]], + "(method 96 mantis)": [[16, "a1", "art-joint-anim"]], + "(method 98 mantis)": [[16, "a1", "art-joint-anim"]], + "(code crawl mantis)": [ + [256, "v1", "art-joint-anim"], + [25, "v1", "art-joint-anim"] + ], + "(code attack1 mantis)": [ + [19, "v1", "art-joint-anim"], + [53, "a0", "process-focusable"], + [56, "a0", "process-focusable"], + [129, "v1", "art-joint-anim"], + [201, "v1", "art-joint-anim"] + ], + "(code attack0 mantis)": [ + [18, "v1", "art-joint-anim"], + [90, "v1", "art-joint-anim"] + ], + "(code ambush-jumping mantis)": [ + [14, "v1", "art-joint-anim"], + [174, "v1", "art-joint-anim"] + ], + "(code roll-right mantis)": [ + [14, "v1", "art-joint-anim"], + [77, "v1", "art-joint-anim"] + ], + "(code roll-left mantis)": [ + [14, "v1", "art-joint-anim"], + [77, "v1", "art-joint-anim"] + ], + "(trans hostile mantis)": [ + [27, "gp", "process-focusable"], + [41, "gp", "process-focusable"], + [100, "gp", "process-focusable"] + ], + "(code ambush-crawling mantis)": [[23, "v1", "art-joint-anim"]], + "(code active mantis)": [ + [79, "v1", "art-joint-anim"], + [195, "v1", "art-joint-anim"], + [139, "v1", "art-joint-anim"], + [23, "v1", "art-joint-anim"] + ], + "(code hop-away mantis)": [ + [24, "gp", "process-focusable"], + [59, "gp", "process-focusable"], + [133, "v1", "art-joint-anim"] + ], + "(method 75 mantis)": [ + [20, "a0", "process-focusable"], + [23, "a0", "process-focusable"] + ], + "(method 200 mantis)": [ + [21, "s5", "process-focusable"], + [35, "s5", "process-focusable"] + ], + "(method 59 mantis)": [ + [23, "a0", "process-focusable"], + [26, "a0", "process-focusable"] + ], + "(code idle mhcity-vein-writhing-large)": [[14, "v1", "art-joint-anim"]], + "(trans idle mhcity-claw-finger-small)": [ + [67, "v1", "float"], + [88, "v1", "float"], + [112, "v1", "float"], + [134, "v1", "float"], + [159, "v1", "float"], + [181, "v1", "float"], + [211, "v1", "float"] + ], + "(code idle mhcity-vein-writhing-small)": [[14, "v1", "art-joint-anim"]], + "(code idle mhcity-dark-eco-nodule)": [[14, "v1", "art-joint-anim"]], + "(event cracked-idle mhcity-dark-eco-door)": [[5, "a0", "attack-info"]], + "(code crack mhcity-dark-eco-door-broken)": [[10, "v1", "art-joint-anim"]], + "(code shatter mhcity-dark-eco-door-broken)": [[112, "v1", "art-joint-anim"]], + "mhcity-ambient-killable-event-handler": [[[3, 18], "v1", "attack-info"]], + "(code active mhcity-puffer-large)": [[14, "v1", "art-joint-anim"]], + "(code blowing mhcity-puffer-large)": [[14, "v1", "art-joint-anim"]], + "(code active mhcity-puffer)": [[14, "v1", "art-joint-anim"]], + "(code blowing mhcity-puffer)": [[14, "v1", "art-joint-anim"]], + "(event puffer-active-base-state mhcity-puffer)": [[6, "a0", "vector"]], + "(code idle mhcity-dark-eco-door)": [[16, "v1", "float"]], + "(code ambush dm-mine-spider)": [ + [62, "v1", "art-joint-anim"], + [134, "v1", "art-joint-anim"], + [207, "v1", "art-joint-anim"] + ], + "(code run-stop dm-mine-spider)": [ + [14, "v1", "art-joint-anim"], + [71, "v1", "art-joint-anim"] + ], + "(code attack dm-mine-spider)": [[19, "v1", "art-joint-anim"]], + "(trans idle dm-mine-spider-spawner)": [[142, "gp", "process-drawable"]], + "(event idle dm-mine-spider-spawner)": [[[22, 28], "v1", "attack-info"]], + "(method 31 dm-mine-spider-spawner)": [ + [17, "v1", "dm-mine-spider"], + [23, "v1", "dm-mine-spider"], + [33, "s3", "int"] + ], + "(method 82 dm-mine-spider)": [ + [14, "v1", "process-drawable"], + [29, "s3", "collide-shape"] + ], + "(method 192 dm-mine-spider)": [ + [19, "a0", "process-focusable"], + [22, "a0", "process-focusable"] + ], + "(code attack spyder)": [ + [116, "a0", "process-focusable"], + [119, "a0", "process-focusable"], + [242, "a0", "process-focusable"], + [245, "a0", "process-focusable"] + ], + "(code backup spyder)": [[22, "v1", "art-joint-anim"]], + "(trans hostile spyder)": [ + [20, "a0", "process-focusable"], + [23, "a0", "process-focusable"] + ], + "(method 59 spyder)": [ + [36, "s5", "process-focusable"], + [47, "s5", "process-focusable"], + [48, "s5", "process-focusable"], + [51, "s5", "process-focusable"] + ], + "(method 85 spyder)": [ + [14, "v1", "art-joint-anim"], + [132, "v1", "art-joint-anim"], + [100, "s5", "art-joint-anim"] + ], + "(method 96 spyder)": [[52, "s5", "art-joint-anim"]], + "spyder-face-player-post": [ + [21, "gp", "process-focusable"], + [40, "gp", "process-focusable"], + [43, "gp", "process-focusable"] + ], + "(method 86 spyder)": [[16, "a1", "art-joint-anim"]], + "(method 193 spyder)": [ + [17, "a0", "process-focusable"], + [20, "a0", "process-focusable"] + ], + "(code knocked-recover rapid-gunner)": [ + [27, "v1", "ragdoll-proc"], + [50, "v1", "art-joint-anim"], + [79, "v1", "art-joint-anim"], + [163, "v1", "art-joint-anim"] + ], + "(code attack rapid-gunner)": [ + [24, "v1", "art-joint-anim"], + [78, "v1", "art-joint-anim"], + [132, "v1", "art-joint-anim"] + ], + "(code turret-get-off rapid-gunner)": [ + [14, "v1", "art-joint-anim"], + [79, "v1", "art-joint-anim"] + ], + "(code turret-active-shoot rapid-gunner)": [[14, "v1", "art-joint-anim"]], + "(code turret-get-on rapid-gunner)": [ + [14, "v1", "art-joint-anim"], + [77, "v1", "art-joint-anim"], + [154, "v1", "art-joint-anim"] + ], + "(code turret-seek rapid-gunner)": [[14, "v1", "art-joint-anim"]], + "rapid-gunner-turret-code": [[86, "v1", "float"]], + "(method 140 rapid-gunner)": [ + [37, "a0", "process-focusable"], + [40, "a0", "process-focusable"] + ], + "(code die-eaten kanga-lizard)": [[22, "v1", "art-joint-anim"]], + "(method 11 dm-mine-spider-spawner)": [["_stack_", 16, "res-tag"]], + "(method 11 vol-holo-eye)": [["_stack_", 16, "res-tag"]], + "(method 32 task-manager-kanga-lizard)": [["_stack_", 16, "res-tag"]], + "(code explode rub-dark-jak-door)": [[129, "v1", "art-joint-anim"]], + "(event idle rub-dark-jak-door)": [[4, "v1", "attack-info"]], + "(code drop rub-falling-step)": [[14, "v1", "art-joint-anim"]], + "set-stadiuma-electricity-scale!": [ + [[93, 95], "v1", "stadiuma-states"], + [[70, 72], "v1", "stadiuma-states"], + [[51, 53], "v1", "stadiuma-states"], + [[32, 34], "v1", "stadiuma-states"], + [[13, 15], "v1", "stadiuma-states"] + ], + "(method 62 v-faccar)": [[[4, 53], "s5", "collide-shape-prim-group"]], + "(event idle task-manager-arena-training)": [ + [23, "a0", "entity-actor"], + [24, "s4", "entity-actor"], + [88, "gp", "entity-actor"] + ], + "(trans hide arena-token)": [[24, "v0", "string"]], + "(event idle wstd-trapdoor)": [[4, "v1", "attack-info"]], + "(trans idle crowd-manager)": [[328, "v0", "sound-rpc-set-param"]], + "crowd-dude-func": [ + [6, "a1", "int"], + [8, "v1", "wasstada-crowd"] + ], + "part-wasstada-bird2-path": [ + [13, "v1", "int"], + [86, "a0", "part-tracker"] + ], + "part-wasstada-bird1-path": [ + [13, "v1", "int"], + [90, "a0", "part-tracker"] + ], + "part-wasstada-bird3-path": [ + [13, "v1", "int"], + [90, "a0", "part-tracker"] + ], + "part-wasstada-bird4-path": [ + [13, "v1", "int"], + [90, "a0", "part-tracker"] + ], + "part-wasstada-bird5-path": [ + [13, "v1", "int"], + [86, "a0", "part-tracker"] + ], + "(code lava-die marauder)": [[34, "v1", "art-joint-anim"]], + "(code attack-run marauder)": [ + [21, "v1", "art-joint-anim"], + [88, "v1", "art-joint-anim"] + ], + "(code ambush marauder)": [[101, "v1", "art-joint-anim"]], + "(code victory marauder)": [ + [26, "v1", "art-joint-anim"], + [81, "v1", "art-joint-anim"] + ], + "(method 62 marauder)": [[13, "v1", "attack-info"]], + "(code jump-out marauder)": [ + [29, "v1", "art-joint-anim"], + [172, "v1", "art-joint-anim"] + ], + "(code gun-shoot marauder)": [ + [21, "v1", "art-joint-anim"], + [83, "v1", "art-joint-anim"], + [135, "v1", "art-joint-anim"] + ], + "(enter gun-shoot marauder)": [ + [26, "a0", "process-focusable"], + [29, "a0", "process-focusable"] + ], + "(trans hostile marauder)": [ + [48, "gp", "process-focusable"], + [61, "gp", "process-focusable"], + [64, "gp", "process-focusable"] + ], + "(trans save-wait marauder)": [ + [18, "a0", "process-focusable"], + [21, "a0", "process-focusable"] + ], + "(method 97 marauder)": [ + [18, "v1", "art-joint-anim"], + [46, "v1", "art-joint-anim"] + ], + "(method 96 marauder)": [ + [55, "v1", "art-joint-anim"], + [83, "v1", "art-joint-anim"] + ], + "(method 98 marauder)": [ + [37, "v1", "art-joint-anim"], + [67, "v1", "art-joint-anim"] + ], + "(method 86 marauder)": [ + [15, "a2", "art-joint-anim"], + [44, "a2", "art-joint-anim"], + [75, "a2", "art-joint-anim"], + [104, "a2", "art-joint-anim"] + ], + "(method 85 marauder)": [ + [21, "v1", "art-joint-anim"], + [49, "v1", "art-joint-anim"], + [79, "v1", "art-joint-anim"], + [107, "v1", "art-joint-anim"] + ], + "(method 84 marauder)": [[26, "v1", "process-focusable"]], + "(method 82 marauder)": [ + [81, "v1", "rigid-body-impact"], + [101, "a0", "vector"], + [122, "v1", "vector"], + [137, "a0", "vector"], + [[132, 167], "s4", "vector"], + [[134, 168], "s5", "vector"] + ], + "(method 196 marauder)": [[4, "v1", "collide-shape-prim-group"]], + "(method 197 marauder)": [ + [23, "s4", "process-focusable"], + [42, "s4", "process-focusable"], + [56, "s4", "process-focusable"], + [59, "s4", "process-focusable"], + [[66, 70], "v1", "float"] + ], + "(method 147 marauder)": [[34, "a1", "process-focusable"]], + "(method 42 wstd-fight-plat-smlplat)": [ + [[12, 27], "s5", "wstd-fight-plat-box"] + ], + "(code go-down wstd-fight-plat-smlplat)": [ + [[61, 77], "v1", "wstd-fight-plat-box"], + [78, "v1", "(pointer crate)"] + ], + "(code go-down wstd-fight-plat)": [ + [[156, 172], "v1", "wstd-fight-plat-box"], + [173, "v1", "(pointer crate)"] + ], + "(code open wstd-fight-house-a)": [[48, "v1", "art-joint-anim"]], + "(method 40 wstd-fight-plat)": [ + [[13, 25], "s4", "wstd-fight-plat-box"], + [[41, 53], "s4", "wstd-fight-plat-box"], + [[69, 81], "s4", "wstd-fight-plat-box"], + [[97, 109], "s4", "wstd-fight-plat-box"], + [[127, 136], "s4", "wstd-door"], + [[154, 163], "s4", "wstd-door"], + [[181, 190], "s4", "wstd-door"], + [[208, 226], "s4", "wstd-door"] + ], + "(code open wstd-fight-plat-box)": [ + [27, "v1", "art-joint-anim"], + [108, "v1", "art-joint-anim"] + ], + "(trans open wstd-fight-plat-box)": [ + [21, "a0", "(pointer process)"], + [45, "gp", "process-focusable"] + ], + "(method 40 wstd-fight-plat-box)": [[177, "v1", "process-drawable"]], + "(method 38 wstd-fight-plat-box)": [[62, "s5", "process-drawable"]], + "(trans active task-manager-throne-rog)": [[14, "gp", "process-drawable"]], + "(enter end wstd-fight-plat-large)": [ + [[38, 62], "s4", "wstd-fight-plat-smlplat"] + ], + "(enter go-down wstd-fight-plat-large)": [ + [[38, 94], "s4", "wstd-fight-plat-smlplat"] + ], + "(method 41 wstd-fight-plat-large)": [[[28, 59], "s4", "wstd-door"]], + "(enter go-down task-manager-arena-fight)": [ + [53, "gp", "process-drawable"], + [63, "gp", "process-drawable"], + [73, "gp", "process-drawable"], + [83, "gp", "process-drawable"], + [33, "v1", "float"] + ], + "(method 26 task-manager-arena-fight)": [ + [[90, 149], "s3", "wstd-fight-plat"] + ], + "(code wait-start task-manager-arena-fight-2)": [ + [63, "gp", "process-drawable"] + ], + "(method 26 task-manager-arena-fight-2)": [ + [437, "v1", "(pointer crate)"], + [[373, 493], "s3", "wstd-fight-plat"], + [514, "s3", "process-drawable"], + [519, "s3", "process-drawable"], + [524, "s3", "process-drawable"], + [[299, 335], "s3", "wstd-fight-plat"], + [412, "v1", "float"] + ], + "(method 21 task-manager-arena-fight-2)": [ + [[378, 383], "a0", "crate"], + ["_stack_", 16, "res-tag"] + ], + "(method 21 task-manager-arena-fight)": [["_stack_", 16, "res-tag"]], + "(method 21 task-manager-arena-fight-3)": [ + ["_stack_", 16, "res-tag"], + [106, "t0", "float"] + ], + "wstd-fight-plat-large-init-by-other": [ + [[169, 193], "s3", "wstd-fight-plat-smlplat"] + ], + "(method 36 task-manager-arena-fight-base)": [ + [43, "s5", "process-focusable"], + [57, "v1", "handle"] + ], + "(method 32 task-manager-arena-fight-base)": [[95, "s5", "process-drawable"]], + "(enter go-down task-manager-arena-fight-2)": [ + [[16, 81], "gp", "wstd-fight-plat"] + ], + "(method 26 task-manager-arena-fight-3)": [ + [110, "v1", "(pointer crate)"], + [[46, 180], "s3", "wstd-fight-plat-large"], + [[196, 212], "s3", "process-drawable"], + [85, "v1", "float"] + ], + "(enter active wstd-fight-plat-large)": [[16, "v1", "float"]], + "(event idle crowd-manager)": [[4, "v1", "float"]], + "(event active wstd-fight-plat-large)": [ + [15, "v1", "float"], + [4, "v1", "float"] + ], + "(event active wstd-fight-plat)": [[4, "v1", "float"]], + "(event active wstd-fight-plat-smlplat)": [[12, "v1", "float"]], + "(method 21 task-manager-arena-training)": [["_stack_", 16, "res-tag"]], + "(anon-function 3 arena-scenes)": [[6, "v1", "process-drawable"]], + "(anon-function 6 arena-scenes)": [ + [13, "t9", "(function mood-context none)"] + ], + "(anon-function 7 arena-scenes)": [ + [13, "t9", "(function mood-context none)"] + ], + "(anon-function 8 arena-scenes)": [ + [13, "t9", "(function mood-context none)"] + ], + "(anon-function 9 arena-scenes)": [ + [13, "t9", "(function mood-context none)"] + ], + "(method 18 hud-wasgun)": [ + [43, "t2", "vector"], + [46, "t1", "float"] + ], + "(method 15 hud-wasgun)": [ + [[148, 158], "s3", "(pointer uint32)"], + [[449, 452], "v1", "dma-packet"] + ], + "(enter impact wascity-turret-shot)": [ + [15, "v1", "collide-shape-prim-group"] + ], + "(event impact wascity-turret-shot)": [[13, "v1", "process-drawable"]], + "dm-flyer-shot-move": [ + [35, "s2", "process-focusable"], + [41, "s2", "process-focusable"], + [43, "s2", "process-focusable"] + ], + "(method 31 dm-flyer-shot)": [ + [120, "s3", "process-focusable"], + [126, "s3", "process-focusable"], + [128, "s3", "process-focusable"], + ["_stack_", 96, "float"], + ["_stack_", 112, "float"] + ], + "(enter impact dm-flyer-shot)": [[50, "a0", "process"]], + "(code impact maker-grenade)": [[32, "a0", "process"]], + "(method 36 maker-grenade)": [[14, "s5", "wascity-turret-shot"]], + "(code flying skeet)": [[[182, 187], "v1", "task-manager-wascity-gungame"]], + "joint-mod-recoil": [ + [[0, 39], "gp", "wascity-turret"], + [[1, 38], "s5", "int"] + ], + "(post flying skeet)": [ + [13, "a0", "task-manager-wascity-gungame"], + [[76, 99], "gp", "task-manager-wascity-gungame"], + [175, "gp", "task-manager-wascity-gungame"], + [201, "gp", "task-manager-wascity-gungame"], + [15, "a0", "task-manager-wascity-gungame"] + ], + "wasgun-manager-shot-missed": [ + [[17, 22], "v1", "task-manager-wascity-gungame"] + ], + "skeet-standard-event-handler": [ + [[29, 145], "gp", "task-manager-wascity-gungame"] + ], + "(method 37 task-manager-wascity-gungame)": [ + [[26, 31], "v1", "hud"], + [[15, 61], "gp", "hud"], + [101, "gp", "hud"], + [139, "gp", "hud"], + [177, "gp", "hud"], + [209, "gp", "hud"], + [250, "gp", "hud"], + [288, "gp", "hud"], + [320, "gp", "hud"], + [361, "gp", "hud"], + [393, "gp", "hud"], + [428, "gp", "hud"] + ], + "spawn-skeet": [[141, "s1", "skeet"]], + "(enter explode skeet)": [ + [22, "a0", "task-manager-wascity-gungame"], + [35, "a0", "hud-wasgun"], + [41, "a0", "hud-wasgun"] + ], + "wct-show-flut": [[6, "v0", "flut"]], + "(method 56 wascity-turret)": [ + [133, "a1", "vector"], + [[76, 85], "v0", "vector"], + [[88, 97], "v0", "vector"], + [6, "v1", "float"] + ], + "(method 62 wascity-turret)": [ + [224, "s3", "process"], + [257, "s2", "process-drawable"], + [273, "s2", "process-drawable"], + [274, "v1", "collide-shape"], + [357, "a0", "collide-shape-prim-group"], + [385, "a0", "collide-shape-prim-group"], + [403, "a1", "collide-shape-prim-group"], + [429, "a0", "collide-shape-prim-group"], + [10, "v0", "(array collide-shape)"], + [309, "a1", "skeet"] + ], + "(method 33 task-manager-wascity-gungame)": [["_stack_", 16, "res-tag"]], + "city-sound-expand-want-list": [[63, "s4", "int"]], + "(method 10 xz-height-map)": [[121, "s0", "pointer"]], + "(method 9 xz-height-map)": [ + [36, "a2", "pointer"], + [[37, 49], "a1", "(pointer int8)"] + ], + "(enter explode hvehicle)": [ + [143, "a0", "process"], + [238, "v1", "joint-exploder"] + ], + "(method 49 hvehicle)": [ + [[40, 60], "s5", "traffic-object-spawn-params"], + [65, "v1", "float"] + ], + "(method 51 hvehicle)": [ + [155, "v1", "(pointer process)"], + [110, "v1", "uint"] + ], + "(method 33 hvehicle)": [[39, "s5", "rigid-body-vehicle-constants"]], + "(method 94 hvehicle)": [[42, "f0", "float"]], + "(method 18 vehicle-controller)": [[[231, 316], "v1", "hvehicle"]], + "(method 31 hvehicle)": [ + [69, "v1", "float"], + [164, "v1", "float"], + [67, "a0", "int"], + [162, "a0", "int"] + ], + "(method 97 hvehicle)": [[159, "a0", "vector"]], + "(post idle glider-ring)": [ + [203, "v1", "art-joint-anim"], + [[413, 424], "v1", "glider-prim"] + ], + "(method 25 glider-ring)": [[15, "v1", "glider-prim"]], + "glider-ring-standard-event-handler": [ + [47, "s5", "process-drawable"], + [[53, 62], "gp", "collide-shape-moving"], + [295, "gp", "collide-shape-moving"] + ], + "glider-ring-init-by-other": [[55, "v1", "art-joint-anim"]], + "(method 49 h-glider)": [ + [10, "a2", "vector"], + [21, "a1", "vector"], + [25, "a1", "vector"] + ], + "(method 97 h-glider)": [[159, "a0", "vector"]], + "glider-thermal-updraft-velocity": [ + [20, "v1", "task-manager-desert-glide"], + [23, "v1", "task-manager-desert-glide"] + ], + "(method 36 task-manager-desert-glide)": [ + [[64, 147], "s4", "hvehicle"], + [[216, 232], "v1", "hvehicle"], + [[296, 339], "s3", "hvehicle"] + ], + "(method 37 task-manager-desert-glide)": [[158, "a0", "glider-thermal"]], + "(method 26 task-manager-desert-glide)": [ + [75, "s5", "hvehicle"], + [171, "s5", "hvehicle"] + ], + "pre-populate-clouds": [ + [22, "v1", "float"], + [44, "v1", "float"], + [66, "v1", "float"] + ], + "(method 15 hud-glider-altitude)": [[18, "v1", "float"]], + "(code idle was-pre-beam)": [[28, "v1", "art-joint-anim"]], + "(code active was-pre-game)": [[21, "v1", "art-joint-anim"]], + "(code idle was-pre-game)": [ + [25, "v1", "art-joint-anim"], + [78, "v1", "art-joint-anim"] + ], + "(code attack was-pre-beam)": [[26, "v1", "art-joint-anim"]], + "(enter active was-pre-game)": [[[337, 343], "v1", "hud"]], + "(method 26 was-pre-game)": [[[104, 157], "s1", "pre-game-bubble"]], + "(method 30 was-pre-game)": [ + [[161, 167], "v1", "hud"], + [[253, 259], "v1", "hud"] + ], + "(code idle was-pre-heart)": [ + [15, "v1", "art-joint-anim"], + [76, "v1", "art-joint-anim"], + [131, "v1", "art-joint-anim"], + [192, "v1", "art-joint-anim"], + [247, "v1", "art-joint-anim"], + [308, "v1", "art-joint-anim"], + [363, "v1", "art-joint-anim"], + [422, "v1", "art-joint-anim"], + [477, "v1", "art-joint-anim"] + ], + "(post fall pre-game-bubble)": [[17, "t9", "(function none)"]], + "(post race flut-racer)": [[21, "v0", "entity-actor"]], + "ring-hit-logic": [ + [30, "v0", "entity"], + [[40, 51], "v1", "process-drawable"] + ], + "(code race flut-racer)": [[53, "v1", "art-joint-anim"]], + "(method 33 task-manager-wascity-leaper-race)": [ + [63, "a0", "entity-actor"], + [67, "a0", "entity-actor"], + [45, "a0", "entity-actor"], + [49, "a0", "entity-actor"], + ["_stack_", 16, "res-tag"] + ], + "(method 26 task-manager-wascity-leaper-race)": [ + [75, "v1", "process-drawable"] + ], + "(trans race flut-racer)": [ + [43, "v0", "int"], + [21, "v0", "int"] + ], + "(post jump flut-racer)": [[6, "t9", "(function none)"]], + "(method 33 task-manager-desert-glide)": [["_stack_", 16, "res-tag"]], + "(code idle kleever-catch-lizards)": [[10, "v1", "art-joint-anim"]], + "(code active task-manager-desert-catch-lizards)": [ + [858, "gp", "handle"], + [[904, 910], "v1", "wvehicle"] + ], + "(code resolution task-manager-desert-catch-lizards)": [ + [28, "t9", "(function none)"] + ], + "(method 30 task-manager-desert-catch-lizards)": [ + [40, "v1", "float"], + [43, "v1", "float"] + ], + "(method 26 task-manager-desert-catch-lizards)": [ + [275, "v0", "(array collide-shape)"], + ["_stack_", 192, "res-tag"] + ], + "(method 82 desert-lizard)": [[96, "v0", "vector"]], + "(code notice desert-lizard)": [[31, "v1", "art-joint-anim"]], + "(trans flee desert-lizard)": [[[232, 257], "gp", "wvehicle"]], + "desert-lizard-flee-post": [[[10, 30], "s4", "process-focusable"]], + "(anon-function 33 desert-scenes)": [ + [39, "gp", "process-drawable"], + [71, "v1", "float"] + ], + "(anon-function 34 desert-scenes)": [[54, "v1", "float"]], + "(code active task-manager-throne-gun-training)": [[126, "v1", "float"]], + "(enter idle dm-tentacle)": [[11, "v1", "float"]], + "(trans moving desw-snake-stump)": [["_stack_", 16, "float"]], + "desw-snake-stump-handler": [[8, "v1", "focus"]], + "dm-tentacle-handler": [ + [[116, 140], "v1", "attack-info"], + [[179, 199], "s5", "dm-tentacle-ragdoll-proc"] + ], + "(event idle desw-eco-tank)": [[[109, 130], "v1", "attack-info"]], + "(event idle dm-urchin)": [[[109, 130], "v1", "attack-info"]], + "(enter strike dm-tentacle)": [ + [[9, 13], "a0", "dm-tentacle-ragdoll-proc"], + [15, "a0", "dm-tentacle-ragdoll-proc"] + ], + "(enter sweep dm-tentacle)": [ + [[9, 13], "a0", "dm-tentacle-ragdoll-proc"], + [15, "a0", "dm-tentacle-ragdoll-proc"] + ], + "(enter whip dm-tentacle)": [ + [[9, 13], "a0", "dm-tentacle-ragdoll-proc"], + [15, "a0", "dm-tentacle-ragdoll-proc"] + ], + "(enter spit dm-tentacle)": [ + [[9, 13], "a0", "dm-tentacle-ragdoll-proc"], + [15, "a0", "dm-tentacle-ragdoll-proc"] + ], + "(trans idle dm-tentacle)": [[57, "v1", "float"]], + "dm-tentacle-start-ragdoll": [[[55, 106], "gp", "dm-tentacle-ragdoll-proc"]], + "foot-impact": [ + [320, "v0", "manipy"], + [403, "v1", "process-drawable"], + [524, "v1", "process-drawable"] + ], + "(event idle terraformer-leg)": [ + [57, "s5", "process-drawable"], + [99, "gp", "vehicle"], + [202, "a0", "nav-mesh"], + [205, "a0", "nav-mesh"] + ], + "(post attack terraformer-drone)": [ + [14, "a0", "process-focusable"], + [17, "a0", "process-focusable"] + ], + "(enter explode terraformer-drone)": [[93, "a0", "process"]], + "(method 82 terraformer-drone)": [[29, "v1", "vector"]], + "(method 59 terraformer-drone)": [ + [51, "a0", "process-focusable"], + [54, "a0", "process-focusable"] + ], + "terraformer-handler": [ + [50, "a0", "terraformer-drone"], + [[69, 76], "s5", "terraformer-leg"], + [52, "a0", "terraformer-drone"] + ], + "terraformer-always": [[[97, 104], "a1", "terraformer-leg"]], + "terraformer-update-mine-vars": [ + [[97, 142], "s4", "terraformer-mine"], + [[113, 121], "s2", "terraformer-mine"] + ], + "(event idle terraformer-target)": [[53, "a0", "process"]], + "terraformer-mine-explode": [[50, "a0", "process-drawable"]], + "(method 11 terraformer-head)": [["_stack_", 16, "res-tag"]], + "joint-mod-disc-look-at-callback": [ + [[3, 46], "s4", "joint-mod-disc-look-at"] + ], + "terraformer-head-check-launch-script": [[93, "v1", "float"]], + "(trans swing-laser terraformer-head)": [ + [80, "v1", "float"], + [346, "v1", "float"] + ], + "(event moving terraformer-head-laser-projectile)": [ + [7, "a1", "vector"], + [51, "v0", "vector"] + ], + "terraformer-head-always-handler": [ + [5, "a0", "terraformer-drone"], + [7, "a0", "terraformer-drone"], + [45, "a1", "vector"] + ], + "(method 11 desw-snake-stump)": [["_stack_", 16, "res-tag"]], + "(method 13 ocean)": [ + [[249, 252], "v1", "dma-packet"], + [[321, 324], "v1", "dma-packet"] + ], + "(method 22 ocean)": [[[3, 11], "a0", "dma-packet"]], + "(method 23 ocean)": [[[3, 11], "a0", "dma-packet"]], + "(method 25 ocean)": [[[8, 16], "a1", "dma-packet"]], + "(method 26 ocean)": [ + [[11, 19], "a3", "dma-packet"], + [[30, 38], "a2", "dma-packet"] + ], + "(method 27 ocean)": [ + [[19, 27], "a0", "dma-packet"], + [30, "s3", "matrix"], + [[49, 54], "s2", "vector"] + ], + "(method 28 ocean)": [ + [[43, 51], "a0", "dma-packet"], + [66, "a2", "(pointer int16)"], + [[81, 89], "a1", "vector4w"], + [[90, 98], "v1", "vector4w"], + [[111, 127], "t0", "vector4w"], + [[130, 268], "a1", "(inline-array vector4w)"] + ], + "(method 29 ocean)": [ + [[36, 41], "a0", "dma-packet"], + [91, "a1", "(pointer int16)"] + ], + "(method 30 ocean)": [ + [29, "a0", "(pointer uint8)"], + [31, "v1", "int"] + ], + "(method 31 ocean)": [[32, "a0", "(pointer int32)"]], + "(method 32 ocean)": [ + [31, "t0", "(pointer int32)"], + [47, "a2", "(pointer uint8)"], + [55, "v1", "(pointer int8)"], + [49, "a1", "int"], + [33, "a1", "int"] + ], + "(method 33 ocean)": [ + [[52, 60], "a0", "dma-packet"], + [[63, 67], "v1", "vector4w"], + [[93, 232], "v1", "(inline-array vector4w)"], + [[245, 253], "a0", "dma-packet"] + ], + "(method 34 ocean)": [ + [[44, 52], "a0", "dma-packet"], + [[61, 65], "v1", "vector4w"], + [[68, 147], "v1", "(inline-array vector4w)"], + [[166, 174], "a0", "dma-packet"] + ], + "(method 36 ocean)": [["_stack_", 48, "ocean-trans-mask"]], + "(method 38 ocean)": [ + [104, "a1", "(pointer int32)"], + [108, "a3", "(pointer uint8)"], + [110, "a1", "(pointer int32)"] + ], + "(method 39 ocean)": [ + [[7, 15], "a0", "dma-packet"], + [[17, 51], "v1", "matrix"] + ], + "(method 40 ocean)": [["_stack_", 40, "ocean-trans-mask"]], + "(method 41 ocean)": [[[3, 11], "a0", "dma-packet"]], + "(method 42 ocean)": [[[3, 11], "a0", "dma-packet"]], + "(method 45 ocean)": [ + [[19, 27], "a1", "dma-packet"], + [30, "s3", "matrix"], + [[47, 52], "s2", "vector"] + ], + "(method 48 ocean)": [[[8, 16], "a1", "dma-packet"]], + "(method 49 ocean)": [ + [24, "a0", "(pointer uint8)"], + [26, "v1", "int"] + ], + "(method 51 ocean)": [ + [39, "a0", "(pointer uint8)"], + [47, "v1", "(pointer uint8)"], + [41, "a1", "int"], + [30, "a1", "int"] + ], + "(method 52 ocean)": [ + [[54, 68], "a2", "dma-packet"], + [[82, 87], "a0", "dma-packet"], + [99, "v1", "(pointer uint64)"] + ], + "(method 53 ocean)": [ + [[52, 60], "a0", "dma-packet"], + [[62, 67], "v1", "vector4w"], + [[70, 149], "v1", "(inline-array vector4w)"], + [[162, 170], "a0", "dma-packet"] + ], + "(method 57 ocean)": [ + [[7, 15], "a0", "dma-packet"], + [[18, 28], "a0", "vector"], + [[28, 39], "a0", "vector"], + [[39, 50], "a0", "vector"], + [[51, 62], "v1", "vector"] + ], + "(method 59 ocean)": [ + [[22, 27], "a0", "dma-packet"], + [227, "t3", "(pointer uint8)"] + ], + "(method 60 ocean)": [[[3, 191], "s4", "(inline-array ocean-vertex)"]], + "(method 61 ocean)": [[[3, 194], "s4", "(inline-array ocean-vertex)"]], + "(method 62 ocean)": [[[3, 193], "s4", "(inline-array ocean-vertex)"]], + "(method 63 ocean)": [[[3, 200], "s4", "(inline-array ocean-vertex)"]], + "(method 64 ocean)": [[[3, 228], "gp", "(inline-array ocean-vertex)"]], + "(method 65 ocean)": [[[3, 234], "gp", "(inline-array ocean-vertex)"]], + "(method 66 ocean)": [[[3, 234], "gp", "(inline-array ocean-vertex)"]], + "(method 67 ocean)": [[[3, 240], "gp", "(inline-array ocean-vertex)"]], + "(method 68 ocean)": [[[4, 179], "s3", "(inline-array ocean-vertex)"]], + "(method 69 ocean)": [[[114, 121], "gp", "dma-packet"]], + "(method 71 ocean)": [[[8, 16], "a1", "dma-packet"]], + "(method 72 ocean)": [[[2, 6], "v1", "(inline-array vector4w)"]], + "(method 73 ocean)": [[[6, 11], "a0", "dma-packet"]], + "(method 74 ocean)": [ + [[6, 11], "a0", "dma-packet"], + [[19, 24], "a0", "dma-packet"] + ], + "(method 75 ocean)": [[[3, 8], "a0", "dma-packet"]], + "(method 76 ocean)": [[[3, 8], "a0", "dma-packet"]], + "(method 77 ocean)": [[[3, 8], "a0", "dma-packet"]], + "(method 78 ocean)": [[[58, 63], "a0", "dma-packet"]], + "(method 80 ocean)": [ + [[66, 81], "v1", "(inline-array vector4w)"], + [[121, 126], "v1", "(inline-array vector4w)"], + [[193, 215], "v1", "(inline-array vector4w)"], + [[251, 273], "v1", "(inline-array vector4w)"], + [[332, 354], "v1", "(inline-array vector4w)"] + ], + "(method 81 ocean)": [ + [[68, 90], "v1", "(inline-array vector4w)"], + [[157, 179], "v1", "(inline-array vector4w)"] + ], + "(method 82 ocean)": [ + [69, "v1", "(pointer uint128)"], + [[97, 115], "s1", "(inline-array vector4w)"] + ], + "(method 83 ocean)": [[[66, 92], "t1", "(inline-array vector4w)"]], + "(method 84 ocean)": [ + [32, "v1", "(pointer uint128)"], + [[89, 118], "s0", "(inline-array vector4w)"], + [[128, 137], "s4", "(pointer uint128)"], + [[128, 137], "v1", "(pointer uint128)"] + ], + "(method 87 ocean)": [ + [[227, 232], "a0", "(inline-array vector4w)"], + [[244, 270], "a1", "(inline-array vector4w)"], + [[282, 288], "a0", "(inline-array vector4w)"], + [[299, 324], "a1", "(inline-array vector4w)"] + ], + "(method 88 ocean)": [ + [[69, 87], "v1", "(inline-array vector4w)"], + [[88, 93], "a0", "(inline-array vector4w)"], + [[93, 101], "v1", "(inline-array vector4w)"], + [[138, 144], "v1", "adgif-shader"], + [[234, 240], "v1", "adgif-shader"], + [[382, 421], "v1", "(inline-array vector4w)"] + ], + "(method 89 ocean)": [ + [[68, 81], "v1", "(inline-array vector4w)"], + [[137, 148], "v1", "(inline-array vector4w)"], + [[202, 215], "v1", "(inline-array vector4w)"], + [[269, 282], "v1", "(inline-array vector4w)"], + [[336, 349], "v1", "(inline-array vector4w)"], + [[405, 416], "v1", "(inline-array vector4w)"] + ], + "(method 90 ocean)": [[0, "a2", "(pointer int32)"]], + "(method 50 ocean)": [[31, "v1", "int"]], + "(anon-function 7 mined-scenes)": [[33, "a0", "process"]], + "(anon-function 8 mined-scenes)": [[31, "a0", "process"]], + "(code flying maker)": [[10, "v1", "art-joint-anim"]], + "(method 30 task-manager-wascity-defend)": [ + [28, "v1", "handle"], + [55, "v1", "handle"], + [82, "v1", "handle"], + [25, "v1", "handle"], + [52, "v1", "handle"], + [79, "v1", "handle"] + ], + "(code walking maker)": [[[123, 126], "v1", "task-manager-wascity-defend"]], + "(post flying maker)": [[[260, 275], "v1", "task-manager-wascity-defend"]], + "(post walking maker)": [[[740, 755], "v1", "task-manager-wascity-defend"]], + "(post standup maker)": [[[26, 41], "v1", "task-manager-wascity-defend"]], + "(code standup maker)": [ + [13, "v1", "art-joint-anim"], + [97, "v1", "art-joint-anim"] + ], + "maker-standard-event-handler": [ + [148, "v1", "touching-shapes-entry"], + [153, "s5", "touching-shapes-entry"], + [147, "s5", "touching-shapes-entry"], + [260, "gp", "attack-info"], + [332, "gp", "attack-info"], + [379, "gp", "attack-info"] + ], + "maker-init-by-other": [[237, "v1", "vector"]], + "(code resolution task-manager-bbush-spirit-drop)": [[40, "gp", "handle"]], + "(event dormant score-drop)": [[5, "a0", "vector"]], + "(code resolution task-manager-desert-bbush-ring)": [[40, "gp", "handle"]], + "(trans idle desert-chase-ring)": [[20, "a2", "vehicle"]], + "(event dormant spirit)": [[6, "v1", "vector"]], + "(event idle spirit)": [[6, "v1", "vector"]], + "(code resolution task-manager-bbush-egg-spider)": [[40, "gp", "handle"]], + "(trans active task-manager-bbush-egg-spider)": [[18, "v1", "int"]], + "(code resolution task-manager-bbush-spirit-chase)": [[40, "gp", "handle"]], + "(method 36 task-manager-bbush-spirit-drop)": [[23, "s4", "spirit"]], + "(method 21 task-manager-bbush-spirit-drop)": [["_stack_", 16, "res-tag"]], + "(trans idle des-burning-bush)": [ + [179, "v1", "vehicle"], + [151, "a1", "int"] + ], + "(method 35 des-burning-bush)": [[48, "v1", "float"]], + "(code menu des-burning-bush)": [[[29, 54], "v1", "game-task-event"]], + "(event dormant trail-effect)": [[6, "v1", "vector"]], + "(event idle trail-effect)": [[6, "v1", "vector"]], + "(code resolution task-manager-bbush-timer-chase)": [[40, "gp", "handle"]], + "(event active task-manager-bbush-timer-chase)": [ + [4, "v1", "float"], + [[30, 33], "a0", "freeze-time-hud"], + [[43, 46], "a0", "freeze-time-hud"], + [[56, 59], "a0", "freeze-time-hud"], + [[69, 72], "a0", "freeze-time-hud"], + [[85, 88], "a0", "freeze-time-hud"], + [[98, 101], "a0", "freeze-time-hud"], + [[111, 114], "a0", "freeze-time-hud"], + [[124, 127], "a0", "freeze-time-hud"], + [[140, 143], "a0", "freeze-time-hud"], + [[166, 169], "a0", "freeze-time-hud"], + [[179, 182], "a0", "freeze-time-hud"], + [[153, 156], "a0", "freeze-time-hud"] + ], + "(trans active task-manager-bbush-timer-chase)": [ + [[25, 28], "a0", "freeze-time-hud"], + [[38, 41], "a0", "freeze-time-hud"], + [[51, 54], "a0", "freeze-time-hud"], + [[64, 67], "a0", "freeze-time-hud"] + ], + "(method 26 task-manager-bbush-roll-count)": [[17, "v1", "vehicle"]], + "(method 26 task-manager-vehicle-bbush)": [ + [37, "v1", "process-focusable"], + [[83, 134], "v1", "vehicle"] + ], + "(method 21 task-manager-bbush-timer-chase)": [["_stack_", 96, "res-tag"]], + "(method 21 task-manager-bbush-egg-spider)": [["_stack_", 16, "res-tag"]], + "(method 21 task-manager-bbush-spirit-chase)": [["_stack_", 16, "res-tag"]], + "(method 21 task-manager-desert-bbush-ring)": [["_stack_", 16, "res-tag"]], + "(code attack needle-fish)": [ + [14, "v1", "art-joint-anim"], + [66, "v1", "art-joint-anim"] + ], + "(code stare needle-fish)": [[14, "v1", "art-joint-anim"]], + "needle-fish-joint-mod-tail": [[[8, 42], "s4", "needle-fish"]], + "(method 28 needle-fish-shot)": [ + [10, "v0", "sound-rpc-set-param"], + [29, "s5", "process-drawable"], + [32, "s5", "process-drawable"] + ], + "(enter explode needle-fish)": [[95, "a0", "process"]], + "(method 59 needle-fish)": [ + [30, "a0", "process-focusable"], + [33, "a0", "process-focusable"] + ], + "(method 56 mh-wasp)": [[21, "a1", "process-drawable"]], + "(post notice mh-wasp)": [[4, "t9", "(function none)"]], + "(trans hostile mh-wasp)": [[36, "v1", "art-joint-anim"]], + "(code attack mh-wasp)": [[38, "v1", "art-joint-anim"]], + "(code knocked-recover mh-wasp)": [[20, "v1", "art-joint-anim"]], + "(method 86 mh-wasp)": [[11, "v1", "art-joint-anim"]], + "(method 113 mh-wasp)": [[[11, 89], "s5", "process-focusable"]], + "(method 85 mh-wasp)": [[32, "a1", "art-joint-anim"]], + "(method 121 mh-wasp)": [ + [116, "v0", "(pointer float)"], + [181, "v0", "(pointer float)"], + ["_stack_", 16, "res-tag"], + ["_stack_", 32, "res-tag"], + ["_stack_", 48, "res-tag"], + ["_stack_", 64, "res-tag"] + ], + "(method 11 mh-centipede)": [ + [433, "v0", "(pointer actor-group)"], + ["_stack_", 16, "res-tag"] + ], + "(method 26 task-manager-mh-centipede)": [[[113, 118], "a0", "vehicle"]], + "(method 30 task-manager-mh-centipede)": [[5, "a1", "vector"]], + "(method 26 task-manager-nstb-crystal)": [[[31, 36], "a0", "vehicle"]], + "(method 42 mh-centipede)": [ + [70, "v1", "float"], + [93, "v1", "float"] + ], + "(method 38 mh-centipede)": [[171, "v1", "float"]], + "(method 39 mh-centipede)": [ + [70, "v1", "float"], + [185, "v1", "float"], + [208, "v1", "float"] + ], + "(trans die mh-centipede)": [[16, "v0", "vehicle"]], + "mh-centipede-active-handler": [ + [[5, 119], "s4", "touching-shapes-entry"], + [91, "gp", "vehicle"], + [[208, 227], "v1", "attack-info"] + ], + "(enter impact mh-centipede-shot)": [[71, "a0", "process"]], + "(event hidden rod-spawner)": [ + [[13, 21], "a1", "vector"], + [[27, 35], "a0", "vector"] + ], + "(method 32 task-manager-mh-centipede)": [["_stack_", 16, "res-tag"]], + "(method 59 mh-bat)": [[[26, 43], "s5", "process-focusable"]], + "(method 126 mh-bat)": [[[20, 24], "v1", "ragdoll-proc"]], + "(method 50 mh-bat)": [ + [8, "v1", "collide-shape-prim-group"], + [18, "v1", "collide-shape-prim-group"] + ], + "(code knocked-recover mh-bat)": [ + [26, "v1", "art-joint-anim"], + [55, "v1", "ragdoll-proc"], + [108, "v1", "art-joint-anim"] + ], + "(code attack-1 mh-bat)": [ + [14, "v1", "art-joint-anim"], + [160, "v1", "art-joint-anim"] + ], + "mh-bat-fly-code": [[15, "v1", "art-joint-anim"]], + "set-factoryc-light!": [[[12, 14], "v1", "factoryc-states"]], + "(method 24 conveyor)": [ + ["_stack_", 16, "res-tag"], + [23, "v0", "(pointer float)"] + ], + "(method 21 conveyor)": [["_stack_", 32, "conveyor-section"]], + "(method 28 conveyor)": [ + [23, "a0", "connection"], + [24, "a0", "collide-shape"], + [71, "a0", "connection"], + [72, "a0", "collide-shape"] + ], + "fac-robopod-base-handler": [[6, "v1", "rigid-body-impact"]], + "(method 11 fac-zapper)": [ + [[183, 213], "s4", "(pointer generic-spot-shadow-effect)"] + ], + "(method 11 fac-fire-torch)": [[99, "v0", "particle-local-space-info"]], + "(code generate fac-robopod)": [ + [28, "v1", "art-joint-anim"], + [95, "v1", "art-joint-anim"] + ], + "(code die fac-punch-wall)": [ + [17, "v1", "collide-shape-prim-group"], + [89, "v1", "art-joint-anim"], + [112, "v0", "sound-rpc-set-param"] + ], + "(method 24 factory-conveyor)": [ + [40, "v0", "float"], + [39, "t0", "float"], + ["_stack_", 16, "res-tag"] + ], + "(enter perish-immediately)": [ + [13, "v1", "art-joint-anim"], + [29, "v1", "collide-shape-prim-group"] + ], + "(code plat-idle fac-move-plat-a)": [[6, "t9", "(function none)"]], + "(event idle fac-switch)": [[[5, 15], "gp", "attack-info"]], + "(event idle fac-break-floor)": [[4, "v1", "attack-info"]], + "(event idle fac-break-fence)": [[[7, 13], "gp", "rigid-body-impact"]], + "(code plat-idle fac-move-plat-b)": [[6, "t9", "(function none)"]], + "(event idle fac-rotfan)": [[87, "gp", "process-focusable"]], + "(enter out fac-rotfan)": [ + [2, "v1", "collide-shape-prim-group"], + [6, "v1", "collide-shape-prim-group"], + [10, "v1", "collide-shape-prim-group"] + ], + "(code spindown fac-rotfan)": [ + [201, "v1", "collide-shape-prim-group"], + [205, "v1", "collide-shape-prim-group"], + [209, "v1", "collide-shape-prim-group"], + [147, "v0", "sound-rpc-set-param"] + ], + "(method 22 fac-switch)": [[16, "v0", "string"]], + "(anon-function 1 mh-bat)": [[1, "v1", "float"]], + "(code flickering factory-elec-gate)": [[83, "s5", "int"]], + "(anon-function 0 factory-scenes)": [[13, "t9", "(function level none)"]], + "(anon-function 1 factory-scenes)": [ + [13, "t9", "(function mood-context none)"] + ], + "(anon-function 2 factory-scenes)": [ + [13, "t9", "(function mood-context none)"] + ], + "(anon-function 3 factory-scenes)": [ + [13, "t9", "(function mood-context none)"] + ], + "(anon-function 4 factory-scenes)": [ + [13, "t9", "(function mood-context none)"] + ], + "(anon-function 5 factory-scenes)": [ + [13, "t9", "(function mood-context none)"] + ], + "(anon-function 7 factory-scenes)": [ + [13, "t9", "(function mood-context none)"] + ], + "(anon-function 8 factory-scenes)": [ + [13, "t9", "(function mood-context none)"] + ], + "(anon-function 9 factory-scenes)": [ + [13, "t9", "(function mood-context none)"] + ], + "(anon-function 6 factory-scenes)": [ + [13, "t9", "(function mood-context none)"] + ], + "update-mood-lfacrm1": [[[24, 105], "gp", "lfacrm1-states"]], + "update-lfacrm1-lights": [[81, "v1", "lfacrm1-states"]], + "(code dormant fac-elevator-a)": [[19, "v1", "art-joint-anim"]], + "(code waiting fac-elevator-a)": [[44, "v1", "art-joint-anim"]], + "(code running fac-elevator-a)": [ + [23, "v1", "art-joint-anim"], + [71, "t9", "(function none)"] + ], + "(trans running fac-elevator-a)": [[4, "v0", "sound-rpc-set-param"]], + "set-lfacrm1-door!": [[[26, 32], "v1", "lfacrm1-states"]], + "(method 11 fac-switch)": [["_stack_", 16, "res-tag"]], + "(method 11 factory-elec-gate)": [ + ["_stack_", 16, "res-tag"], + [88, "v0", "(pointer actor-group)"] + ], + "(enter impact factory-boss-shot)": [[60, "a0", "process"]], + "(event idle fac-drop-plat)": [ + [10, "s5", "factory-boss-floorbuster-bomb"], + [18, "s5", "floorbuster-bomb-explosion"] + ], + "(method 11 fac-drop-plat)": [ + [100, "v0", "(pointer actor-group)"], + ["_stack_", 16, "res-tag"] + ], + "fac-drop-plat-rot-once": [ + ["_stack_", 48, "float"], + ["_stack_", 64, "float"] + ], + "(enter impact factory-boss-floorbuster-bomb)": [ + [60, "a0", "process"], + [84, "v1", "floorbuster-bomb-explosion"] + ], + "(enter impact factory-boss-shockwave-bomb)": [ + [59, "a0", "process"], + [213, "s4", "(pointer manipy)"], + [332, "s4", "(pointer manipy)"] + ], + "(method 9 factory-boss-lightning-gate)": [[173, "a3", "float"]], + "update-mood-factory": [[[30, 102], "gp", "factory-states"]], + "set-factoryd-light!": [[10, "v1", "factoryd-states"]], + "(code notice missile-bot)": [[10, "v1", "art-joint-anim"]], + "(trans knocked missile-bot)": [[44, "v1", "float"]], + "(post knocked missile-bot)": [[12, "t9", "(function none)"]], + "(trans fizzle missile-bot)": [ + [53, "v1", "float"], + [92, "v1", "float"] + ], + "factory-boss-launch-critter-pick-anim": [[10, "v1", "float"]], + "(method 50 missile-bot)": [ + [2, "v1", "collide-shape-prim-group"], + [6, "a0", "collide-shape-prim-group"] + ], + "(enter knocked missile-bot)": [[9, "v1", "float"]], + "(anon-function 1 factory-boss-scenes)": [ + [13, "t9", "(function mood-context none)"] + ], + "(anon-function 2 factory-boss-scenes)": [ + [13, "t9", "(function mood-context none)"] + ], + "factory-boss-check-launch-script": [[100, "v1", "float"]], + "(enter beaten factory-boss)": [[44, "gp", "(pointer process)"]], + "factory-boss-handler": [[[12, 15], "v1", "nav-enemy"]], + "factory-boss-drop-bomb": [[75, "v1", "factory-boss-floorbuster-bomb"]], + "(method 11 factory-boss)": [["_stack_", 16, "res-tag"]], + "(method 26 factory-boss)": [[16, "v1", "float"]], + "factory-boss-always": [ + [632, "s4", "process-drawable"], + [663, "s4", "process-drawable"], + [741, "s4", "process-drawable"], + [268, "v1", "float"], + [308, "v1", "float"], + [362, "v1", "float"], + [406, "v1", "float"], + [456, "v1", "float"], + [496, "v1", "float"], + [693, "v1", "float"], + ["_stack_", 272, "float"], + ["_stack_", 288, "float"], + ["_stack_", 320, "float"], + ["_stack_", 336, "float"], + ["_stack_", 352, "float"], + ["_stack_", 368, "float"], + ["_stack_", 384, "float"], + ["_stack_", 400, "float"] + ], + "(method 26 task-manager-factory-assault)": [ + [[21, 34], "s5", "process-focusable"], + [114, "v0", "vehicle"] + ], + "generic-merc-execute-all": [ + [145, "v1", "generic-work"], + [147, "v1", "generic-work"], + [149, "v1", "generic-work"], + [78, "v1", "generic-work"], + [80, "v1", "generic-work"], + [82, "v1", "generic-work"], + [97, "a0", "generic-work"] + ], + "(event idle simple-focus)": [[6, "v1", "vector"]], + "(code die-falling bot)": [[32, "gp", "art-joint-anim"]], + "(code failed bot)": [ + [23, "gp", "art-joint-anim"], + [70, "v0", "string"] + ], + "(code hit bot)": [[30, "v1", "art-joint-anim"]], + "(method 201 bot)": [ + [41, "a0", "connection"], + [42, "a0", "collide-shape"], + [90, "a0", "connection"], + [91, "a0", "collide-shape"], + [153, "a1", "process-focusable"] + ], + "(method 140 bot)": [ + [70, "s5", "process-focusable"], + [[34, 74], "s5", "process-focusable"] + ], + "(method 82 bot)": [ + [105, "a0", "bot"], + [107, "v1", "process"], + [222, "a0", "vector"] + ], + "(method 236 bot)": [ + [28, "t9", "(function bot int)"], + [46, "t9", "(function bot int)"] + ], + "(method 84 bot)": [[45, "v1", "process-focusable"]], + "(method 235 bot)": [[[15, 39], "s3", "process-focusable"]], + "(method 202 bot)": [ + [10, "v1", "sphere"], + [40, "a0", "connection"], + [41, "a0", "collide-shape"], + [49, "a3", "sphere"], + [58, "f2", "float"], + [89, "a0", "connection"], + [90, "a0", "collide-shape"], + [98, "a3", "sphere"], + [107, "f2", "float"] + ], + "(code standing-turn ashelin)": [[47, "s4", "art-joint-anim"]], + "(code tumble-right ashelin)": [ + [35, "v1", "art-joint-anim"], + [168, "v1", "art-joint-anim"], + [280, "v1", "art-joint-anim"] + ], + "(code cartwheel-left ashelin)": [ + [35, "v1", "art-joint-anim"], + [168, "v1", "art-joint-anim"], + [280, "v1", "art-joint-anim"] + ], + "(code back-spring ashelin)": [ + [30, "v1", "art-joint-anim"], + [309, "v1", "art-joint-anim"], + [171, "v1", "art-joint-anim"] + ], + "(post chase ashelin)": [ + [14, "a0", "process-focusable"], + [17, "a0", "process-focusable"] + ], + "(code standing-blast ashelin)": [[68, "v1", "art-joint-anim"]], + "(code standing-idle ashelin)": [ + [189, "v1", "art-joint-anim"], + [126, "v1", "art-joint-anim"] + ], + "(code waiting-idle ashelin)": [ + [204, "v1", "art-joint-anim"], + [95, "v1", "art-joint-anim"] + ], + "(code die-falling ashelin)": [[85, "gp", "art-joint-anim"]], + "(method 55 ashelin)": [ + [[19, 23], "a0", "process-focusable"], + [25, "a0", "process-focusable"] + ], + "(method 85 ashelin)": [[129, "s5", "art-joint-anim"]], + "(method 86 ashelin)": [ + [22, "s5", "art-joint-anim"], + [77, "v1", "art-joint-anim"], + [111, "v1", "art-joint-anim"], + [165, "v1", "art-joint-anim"], + [199, "v1", "art-joint-anim"] + ], + "(method 87 ashelin)": [[67, "v1", "art-joint-anim"]], + "(code active task-manager-desert-oasis-defense)": [ + [363, "a0", "collide-shape-moving"], + [426, "v1", "float"], + [366, "a0", "collide-shape-moving"], + [685, "v1", "float"] + ], + "(method 32 task-manager-desert-oasis-defense)": [ + [98, "a0", "collide-shape-moving"], + [116, "v1", "float"], + [130, "v1", "float"], + [101, "a0", "collide-shape-moving"] + ], + "(method 33 task-manager-desert-oasis-defense)": [ + [[107, 168], "s1", "marauder"] + ], + "(method 26 task-manager-desert-oasis-defense)": [ + [298, "s4", "process-drawable"], + [308, "s4", "process-drawable"], + [331, "s4", "process-drawable"], + [55, "s3", "process-drawable"], + [106, "v1", "float"], + [146, "v1", "float"], + [163, "v1", "float"] + ], + "(method 82 ashelin-oasis)": [[11, "v1", "rigid-body-impact"]], + "(method 263 ashelin-oasis)": [ + [85, "gp", "process-drawable"], + [88, "gp", "process-drawable"], + [67, "v0", "sound-rpc-set-param"] + ], + "(anon-function 1 ash-oasis-course)": [[82, "v1", "asht-wait-spot"]], + "(method 198 bot)": [ + [18, "a0", "uint"], + [8, "v1", "uint"] + ], + "(code active dark-eco-orb)": [ + [33, "v1", "art-joint-anim"], + [17, "v1", "float"] + ], + "dark-eco-tower-init-by-other": [[93, "v1", "vector"]], + "(code hit dark-eco-orb)": [[14, "v1", "art-joint-anim"]], + "(trans idle grind-electricity)": [ + ["_stack_", 48, "(pointer lightning-tracker)"] + ], + "dark-eco-orb-init-by-other": [[100, "v1", "vector"]], + "dark-eco-orb-event-handler": [[[29, 71], "gp", "attack-info"]], + "spawn-shock-effect": [["_stack_", 640, "(pointer lightning-tracker)"]], + "(method 21 task-manager-destroy-darkeco)": [["_stack_", 16, "res-tag"]], + "(code explode comb-block)": [[50, "a0", "process"]], + "(method 29 comb-energy-ring)": [ + [52, "v1", "collide-shape-prim-group"], + [54, "v1", "collide-shape-prim-group"] + ], + "(method 30 comb-energy-ring)": [ + [10, "s5", "collide-shape-prim-group"], + [16, "s5", "collide-shape-prim-group"] + ], + "(event idle comb-block)": [ + [20, "s4", "attack-info"], + [22, "s4", "attack-info"] + ], + "(event idle comb-pillar)": [[[20, 30], "s4", "attack-info"]], + "(event path-follow comb-sentry)": [[[13, 30], "s4", "attack-info"]], + "(method 33 comb-sentry)": [[10, "v1", "collide-shape-prim-group"]], + "(method 32 comb-sentry)": [[[28, 75], "s5", "process-focusable"]], + "(event idle-close comb-field)": [ + [[22, 27], "v1", "attack-info"], + [55, "s4", "process-drawable"], + [132, "v1", "process-drawable"], + [148, "v1", "process-drawable"], + [155, "v1", "process-drawable"], + [158, "a0", "process-drawable"], + [172, "v1", "process-drawable"], + [179, "v1", "process-drawable"], + [182, "a0", "process-drawable"], + [195, "v1", "process-drawable"], + [198, "a0", "process-drawable"], + [267, "v1", "process-drawable"], + [275, "gp", "collide-shape"], + [284, "gp", "collide-shape"], + [[203, 207], "a2", "float"] + ], + "(method 62 h-sled)": [[[4, 41], "s5", "collide-shape-prim-group"]], + "(method 33 h-sled)": [[1, "a1", "rigid-body-vehicle-constants"]], + "(method 49 h-sled)": [ + [72, "v1", "vector"], + [64, "v1", "float"], + [41, "v1", "float"] + ], + "(enter explode h-sled)": [ + [107, "a0", "process"], + [202, "v1", "joint-exploder"] + ], + "(method 97 h-sled)": [[2, "a2", "h-sled-physics-work"]], + "(method 26 task-manager-tube-ride)": [[[21, 51], "s5", "process-focusable"]], + "(code complete task-manager-tube-ride)": [[23, "t9", "(function none)"]], + "(code active task-manager-tube-ride)": [ + [[244, 259], "gp", "process-focusable"], + [418, "v1", "process-focusable"], + [494, "v1", "process-focusable"], + [[569, 584], "gp", "process-focusable"], + [611, "t9", "(function none)"] + ], + "(code complete task-manager-comb-travel)": [[51, "t9", "(function none)"]], + "(method 15 hud-factory-damage)": [[26, "v1", "float"]], + "(method 43 warf-projectile)": [[35, "a1", "process-focusable"]], + "(method 91 h-warf)": [ + [126, "v0", "vehicle"], + [354, "v0", "vehicle"] + ], + "(method 54 h-warf)": [[[15, 21], "a0", "process-focusable"]], + "(method 97 h-warf)": [[159, "a0", "vector"]], + "(method 156 fac-gunturret)": [[[11, 19], "a0", "process-focusable"]], + "(method 155 fac-gunturret)": [[[15, 23], "a0", "process-focusable"]], + "(code fire fac-robotank-turret)": [ + [65, "v1", "art-joint-anim"], + [122, "v1", "art-joint-anim"] + ], + "(code ready fac-robotank-turret)": [[10, "v1", "art-joint-anim"]], + "(method 31 fac-robotank-turret)": [[76, "s3", "collide-shape-prim"]], + "fac-robotank-reticle-handler": [ + [6, "v1", "vector"], + [[11, 34], "s5", "vector"], + [[12, 34], "gp", "vector"], + [56, "v1", "float"] + ], + "robotank-turret-handler": [ + [52, "v1", "collide-shape-prim-group"], + [66, "v1", "collide-shape-prim-group"], + [[96, 106], "s4", "cspace"], + [18, "v1", "float"] + ], + "(enter die fac-gun-tower)": [[13, "v1", "art-joint-anim"]], + "(event idle fac-gun-tower)": [ + [19, "gp", "projectile"], + [24, "gp", "projectile"], + [35, "gp", "projectile"], + [83, "gp", "projectile"] + ], + "fac-gun-tower-standard-event-handler": [ + [[3, 11], "gp", "attack-info"], + [[4, 22], "a2", "touching-shapes-entry"] + ], + "(event idle fac-gun-tower-base)": [[[18, 86], "s4", "projectile"]], + "(code idle fac-gun-tower-base)": [[10, "v1", "art-joint-anim"]], + "(method 36 fac-gun-tower)": [[46, "s2", "process-focusable"]], + "(method 35 fac-gun-tower)": [[79, "v0", "vehicle"]], + "fac-robotank-init-by-other": [ + [182, "gp", "factory-manager"], + [208, "gp", "factory-manager"], + [224, "gp", "factory-manager"], + [293, "t1", "float"], + [[346, 518], "gp", "fac-robotank-tread-info"] + ], + "(method 7 fac-robotank)": [ + [21, "a1", "fac-robotank"], + [28, "a1", "fac-robotank"], + [35, "a2", "fac-robotank"] + ], + "(post moving fac-robotank)": [[[33, 87], "s5", "factory-manager"]], + "fac-robotank-handler": [[[98, 105], "v1", "attack-info"]], + "fac-robotank-post": [ + [[365, 368], "v1", "fac-robotank-turret"], + [394, "v1", "float"] + ], + "(code idle factory-fighter)": [[10, "v1", "art-joint-anim"]], + "fac-target-standard-event-handler": [[[48, 54], "v1", "attack-info"]], + "(enter idle fac-target)": [[63, "v1", "art-joint-anim"]], + "(enter retracted fac-target)": [[33, "v1", "art-joint-anim"]], + "(method 60 factory-fighter)": [[52, "v0", "vehicle"]], + "(code die factory-fighter)": [[11, "v1", "art-joint-anim"]], + "(method 32 task-manager-factory-sky-battle)": [["_stack_", 16, "res-tag"]], + "update-railx-lights": [[[33, 88], "s3", "railx-states"]], + "update-mood-railx": [[[64, 109], "gp", "railx-states"]], + "set-railx-light-brightness!": [ + [[30, 36], "v1", "railx-states"], + [[13, 19], "v1", "railx-states"] + ], + "(code idle rail-warp-gate)": [[10, "v1", "art-joint-anim"]], + "(code idle hirez-viewer)": [[20, "v1", "art-joint-anim"]], + "(post startup title-control)": [ + [155, "gp", "external-art-buffer"], + [226, "gp", "external-art-buffer"] + ], + "(code startup title-control)": [ + [[59, 149], "gp", "mc-slot-info"], // (+ sp-0 64) is reused as both mc-slot-info and event-message-block + [354, "v1", "process-drawable"], + [356, "s4", "quaternion"] + ], + "(method 42 nav-graph)": [[27, "v1", "uint"]], + "(method 44 nav-graph)": [ + [[102, 125], "s0", "mysql-nav-edge"], + [144, "s0", "mysql-nav-edge"], + [236, "s0", "mysql-nav-edge"], + [246, "v1", "mysql-nav-edge"], + [254, "v1", "mysql-nav-edge"] + ], + "make-nav-graph": [ + [[28, 31], "v1", "mysql-nav-graph-level-info"], + [31, "v1", "mysql-nav-graph-level-info"] + ], + "(method 9 city-level-info)": [[387, "v1", "nav-segment"]], + "(method 11 city-level-info)": [[27, "a3", "(pointer int8)"]], + "(method 26 traffic-tracker)": [[26, "a0", "process-focusable"]], + "(method 25 traffic-tracker)": [[24, "a0", "process-focusable"]], + "(method 17 traffic-tracker)": [[23, "s1", "process-focusable"]], + "(method 21 traffic-tracker)": [[42, "s3", "vehicle"]], + "(method 44 traffic-engine)": [ + [115, "a3", "uint"], + [130, "a3", "uint"], + [99, "a2", "uint"], + [49, "t0", "uint"], + [66, "a2", "nav-branch"], + [65, "a3", "int"], + [76, "t0", "int"], + [98, "a3", "int"], + [114, "t0", "int"], + [129, "a2", "int"] + ], + "(method 19 traffic-engine)": [ + [19, "v1", "process-focusable"], + [30, "v1", "hvehicle"] + ], + "(method 52 traffic-engine)": [ + [36, "a2", "process-focusable"], + [[312, 341], "s2", "nav-segment"], + [149, "s3", "process-focusable"], + [160, "s3", "process-focusable"], + [169, "s3", "citizen"], + [79, "s3", "process-focusable"], + [90, "s3", "process-focusable"], + [113, "s3", "vehicle"] + ], + "(method 34 formation-object)": [ + [26, "a0", "process-focusable"], + [29, "a0", "process-focusable"] + ], + "(method 47 formation-object)": [[[20, 25], "v1", "citizen"]], + "traffic-manager-event-handler": [ + [[363, 370], "s5", "level"], + [[386, 395], "v1", "msg-get-num-inactive"], + [[399, 405], "v1", "msg-get-num-inactive"], + [74, "v1", "float"], + [166, "v1", "float"], + [509, "v1", "float"], + [[408, 412], "v1", "msg-get-inactive-objects"], + [[109, 113], "s5", "traffic-object-spawn-params"] + ], + "(method 41 formation-object)": [ + [[85, 181], "s5", "traffic-object-spawn-params"] + ], + "(method 12 mission-squad-control)": [ + [28, "v1", "process-drawable"], + [41, "v1", "process-focusable"] + ], + "(code wait citizen)": [[22, "v1", "art-joint-anim"]], + "(code in-ditch citizen)": [ + [23, "v1", "art-joint-anim"], + [122, "v1", "art-joint-anim"] + ], + "(method 82 citizen)": [ + [108, "v1", "vector"], + [[190, 321], "s5", "traffic-object-spawn-params"] + ], + "(method 59 citizen)": [[[99, 108], "a0", "process-focusable"]], + "(method 63 citizen)": [[[31, 60], "v1", "target"]], + "(post active citizen)": [ + [92, "a0", "formation-object"], + [94, "a0", "formation-object"] + ], + "(trans active citizen)": [ + [97, "a0", "formation-object"], + [101, "a0", "formation-object"] + ], + "(trans wait citizen)": [[[42, 45], "a0", "formation-object"]], + "(method 206 citizen)": [[[10, 62], "s4", "vehicle"]], + "(code on-ground civilian)": [[20, "v1", "art-joint-anim"]], + "(code dive civilian)": [[20, "v1", "art-joint-anim"]], + "(code cower-ground civilian)": [ + [22, "v1", "art-joint-anim"], + [84, "v1", "art-joint-anim"], + [155, "v1", "art-joint-anim"] + ], + "(method 233 civilian)": [[40, "v1", "ragdoll-proc"]], + "(event wait-for-ride civilian)": [[[3, 7], "a0", "process"]], + "(trans wait-for-ride civilian)": [[31, "v1", "vehicle"]], + "(code wait-for-ride civilian)": [[22, "v1", "art-joint-anim"]], + "(method 232 civilian)": [[[11, 44], "s3", "vehicle"]], + "(trans move-to-vehicle civilian)": [[[11, 53], "s0", "vehicle"]], + "(code board-vehicle civilian)": [ + [[116, 137], "s2", "vehicle"], + [[264, 284], "s5", "vehicle"], + [[358, 365], "a0", "vehicle"] + ], + "(trans ride civilian)": [[[9, 15], "v1", "vehicle"]], + "(code exit-vehicle civilian)": [ + [[13, 19], "a0", "vehicle"], + [[69, 83], "s5", "vehicle"], + [[199, 204], "v1", "vehicle"], + [[252, 262], "a0", "vehicle"], + [[157, 172], "s4", "vehicle"] + ], + "(trans exit-vehicle civilian)": [[[9, 15], "v1", "vehicle"]], + "(code wait-at-dest civilian)": [[22, "v1", "art-joint-anim"]], + "(event ride civilian)": [[5, "a0", "vector"]], + "(trans board-vehicle civilian)": [[[9, 15], "v1", "vehicle"]], + "(method 82 civilian)": [ + [[23, 26], "a0", "traffic-danger-info"], + [[69, 72], "a0", "traffic-danger-info"], + [[97, 109], "v1", "traffic-danger-info"] + ], + "civilian-flee-post": [[[71, 79], "s5", "nav-branch"]], + "(method 32 squad-control-city)": [[[50, 58], "s4", "process-focusable"]], + "(method 34 squad-control-city)": [ + [[85, 98], "a0", "process-focusable"], + [[24, 41], "a0", "vehicle"] + ], + "(method 35 squad-control-city)": [ + [[17, 51], "s2", "process-focusable"], + [99, "v1", "connection"], + [100, "v1", "collide-shape"], + [105, "v1", "collide-shape"], + [114, "s1", "process-focusable"], + [177, "s1", "process-focusable"], + [195, "s1", "process-focusable"], + [235, "v1", "connection"], + [236, "v1", "collide-shape"], + [241, "v1", "collide-shape"], + [250, "s1", "process-focusable"], + [313, "s1", "process-focusable"], + [331, "s1", "process-focusable"], + [370, "v1", "connection"], + [371, "v1", "collide-shape"], + [376, "v1", "collide-shape"], + [385, "s1", "process-focusable"], + [448, "s1", "process-focusable"], + [466, "s1", "process-focusable"] + ], + "(method 17 traffic-manager)": [ + [38, "s1", "int"], + [[115, 123], "s1", "int"] + ], + "(method 50 traffic-engine)": [ + [6, "a1", "int"], + [14, "a1", "int"], + [22, "a1", "int"] + ], + "(code gun-shoot wlander-female)": [ + [27, "v1", "art-joint-anim"], + [79, "v1", "art-joint-anim"], + [497, "v1", "process-focusable"], + [510, "v1", "art-joint-anim"], + [563, "v1", "art-joint-anim"], + [147, "s5", "process-focusable"], + [150, "s5", "process-focusable"], + [194, "v1", "art-joint-anim"], + [246, "v1", "art-joint-anim"], + [306, "v1", "art-joint-anim"], + [362, "v1", "art-joint-anim"], + [427, "v1", "art-joint-anim"] + ], + "(code close-attack wlander-female)": [[123, "v1", "art-joint-anim"]], + "(code wait wlander-female)": [ + [16, "v1", "art-joint-anim"], + [67, "v1", "art-joint-anim"] + ], + "(method 86 wlander-female)": [ + [18, "v1", "art-joint-anim"], + [46, "v1", "art-joint-anim"] + ], + "(method 85 wlander-female)": [ + [18, "v1", "art-joint-anim"], + [46, "v1", "art-joint-anim"] + ], + "(code close-attack wlander-male)": [[123, "v1", "art-joint-anim"]], + "(code standing wlander-male)": [[22, "v1", "art-joint-anim"]], + "(code gun-shoot wlander-male)": [ + [24, "v1", "art-joint-anim"], + [442, "v1", "process-focusable"], + [455, "v1", "art-joint-anim"], + [508, "v1", "art-joint-anim"], + [92, "s5", "process-focusable"], + [95, "s5", "process-focusable"], + [139, "v1", "art-joint-anim"], + [191, "v1", "art-joint-anim"], + [251, "v1", "art-joint-anim"], + [307, "v1", "art-joint-anim"], + [372, "v1", "art-joint-anim"] + ], + "(method 85 wlander-male)": [ + [18, "v1", "art-joint-anim"], + [46, "v1", "art-joint-anim"] + ], + "(method 86 wlander-male)": [ + [18, "v1", "art-joint-anim"], + [46, "v1", "art-joint-anim"] + ], + "(trans gun-shoot wlander)": [ + [19, "gp", "process-focusable"], + [23, "gp", "process-focusable"], + [27, "gp", "process-focusable"], + [[57, 59], "gp", "process-focusable"], + [71, "gp", "process-focusable"], + [91, "gp", "process-focusable"], + [94, "gp", "process-focusable"] + ], + "(trans hostile wlander)": [[[30, 111], "gp", "process-focusable"]], + "(code wait waster-b)": [ + [101, "v1", "art-joint-anim"], + [150, "v1", "art-joint-anim"] + ], + "(exit get-up-back waster-b)": [ + [9, "v1", "collide-shape-prim-group"], + [[12, 24], "v1", "collide-shape-prim-group"] + ], + "(exit get-up-front waster-b)": [[[9, 24], "v1", "collide-shape-prim-group"]], + "(enter knocked waster-b)": [[[8, 22], "v1", "collide-shape-prim-group"]], + "(method 86 waster-b)": [[30, "v1", "art-joint-anim"]], + "(method 85 waster-b)": [ + [40, "a1", "art-joint-anim"], + [92, "a1", "art-joint-anim"], + [140, "s4", "art-joint-anim"], + [28, "a0", "civilian-global-info"], + [80, "a0", "civilian-global-info"] + ], + "(method 87 waster-b)": [[58, "v1", "art-joint-anim"]], + "(method 55 waster-b)": [[[27, 31], "a0", "process-focusable"]], + "(method 240 wlander)": [[4, "v1", "collide-shape-prim-group"]], + "(method 239 wlander)": [ + [23, "s4", "process-focusable"], + [42, "s4", "process-focusable"], + [59, "s4", "process-focusable"], + [67, "s4", "process-focusable"], + [85, "s4", "process-focusable"], + [69, "s4", "process-focusable"] + ], + "(method 82 wlander)": [ + [10, "a0", "float"], + [[8, 19], "v1", "handle"], + [[182, 186], "v1", "process-focusable"], + [[198, 211], "v1", "traffic-danger-info"] + ], + "(method 125 wlander)": [[[14, 51], "s5", "ragdoll-proc"]], + "(method 126 wlander)": [[[14, 24], "v1", "ragdoll-proc"]], + "(method 241 wlander)": [ + [43, "a1", "process-focusable"], + [47, "a1", "process-focusable"], + [51, "a1", "process-focusable"] + ], + "(method 13 flee-info)": [[79, "s4", "nav-branch"]], + "(enter wait-for-vehicle-return task-manager-desert-rescue)": [ + [[28, 33], "a0", "process-focusable"] + ], + "(code active wland-passenger)": [ + [112, "v1", "art-joint-anim"], + [171, "v1", "art-joint-anim"], + [22, "v1", "art-joint-anim"], + [40, "v1", "float"], + [80, "v1", "float"] + ], + "(trans race-home task-manager-desert-rescue)": [ + [58, "v1", "process-focusable"] + ], + "(code board-vehicle wland-passenger)": [ + [19, "v1", "art-joint-anim"], + [[58, 66], "s5", "vehicle"], + [[103, 112], "s5", "vehicle"], + [161, "v1", "art-joint-anim"], + [217, "s5", "vehicle"], + [236, "s5", "vehicle"], + [240, "s5", "vehicle"], + [[315, 336], "gp", "vehicle"], + [[349, 356], "a0", "vehicle"] + ], + "(trans board-vehicle wland-passenger)": [[[9, 15], "v1", "vehicle"]], + "(trans boarding wland-passenger)": [[56, "v0", "vehicle"]], + "(event ride wland-passenger)": [[[12, 15], "v1", "vehicle"]], + "(method 231 wland-passenger)": [ + [[10, 35], "s5", "vehicle"], + [[48, 54], "v1", "vehicle"] + ], + "(method 228 wland-passenger)": [[[11, 44], "s3", "vehicle"]], + "(code exit-vehicle wland-passenger)": [ + [[13, 19], "a0", "vehicle"], + [34, "v1", "art-joint-anim"], + [[61, 107], "gp", "vehicle"], + [[161, 182], "gp", "vehicle"], + [[211, 230], "s4", "vehicle"], + [266, "v1", "art-joint-anim"], + [345, "v1", "art-joint-anim"] + ], + "(trans exit-vehicle wland-passenger)": [[[9, 15], "v1", "vehicle"]], + "(enter entering-transport wland-passenger)": [[[39, 44], "a0", "vehicle"]], + "(method 227 wland-passenger)": [[11, "v0", "vehicle"]], + "update-nav-sphere": [ + [72, "f30", "float"], + [116, "f30", "float"] + ], + "(method 19 rope-joint-system)": [ + [23, "s4", "process-drawable"], + [37, "s4", "process-drawable"], + [51, "s4", "process-drawable"] + ], + "(method 19 rope-prim-system)": [ + ["_stack_", 132, "float"], + ["_stack_", 136, "float"] + ], + "(code turning-on neo-sat-shield)": [[10, "v1", "art-joint-anim"]], + "(code turning-off neo-sat-shield)": [[10, "v1", "art-joint-anim"]], + "(code hit neo-sat-shield)": [[10, "v1", "art-joint-anim"]], + "(method 25 neo-sat-shield)": [[13, "a0", "process-focusable"]], + "(code sat-idle neo-sat)": [[10, "v1", "art-joint-anim"]], + "(enter neo-sat-drill-prepare neo-sat)": [[27, "v1", "art-joint-anim"]], + "(enter neo-sat-drill-impact neo-sat)": [ + [213, "v1", "float"], + [231, "v1", "float"] + ], + "(method 211 neo-sat)": [ + [[369, 372], "v1", "process-focusable"], + [375, "v1", "collide-shape-moving"], + [18, "v1", "float"], + [107, "v1", "float"], + [162, "v1", "float"], + [212, "v1", "float"] + ], + "(code die neo-sat)": [ + [18, "v1", "art-joint-anim"], + [[255, 262], "gp", "handle"], + [78, "v1", "time-frame"] + ], + "(trans hostile neo-sat)": [[45, "v1", "float"]], + "(code active neo-sat-shield)": [[14, "v1", "art-joint-anim"]], + "(method 10 rope-neo-sat-whip)": [[[17, 30], "s5", "neo-sat"]], + "(method 82 neo-sat)": [[[58, 62], "v1", "process"]], + "(method 59 neo-sat)": [[[133, 137], "a0", "process-focusable"]], + "(method 203 neo-sat)": [[[28, 33], "a1", "process-focusable"]], + "(method 209 neo-sat)": [ + [55, "v1", "float"], + [94, "v1", "float"], + [117, "v1", "float"], + [138, "v1", "float"] + ], + "(method 210 neo-sat)": [[143, "v1", "process-focusable"]], + "(method 62 neo-sat)": [[14, "a0", "attack-info"]], + "(method 206 neo-sat)": [[128, "v1", "collide-shape-prim-sphere"]], + "(method 227 neo-sat)": [ + [91, "v1", "collide-shape-prim-sphere"], + [106, "v1", "collide-shape-moving"] + ], + "(trans neo-sat-laser-attack neo-sat)": [[54, "v1", "float"]], + "sparticle-height-set": [[[17, 33], "a0", "neo-sat"]], + "sparticle-shockwave-set": [[[17, 30], "a0", "neo-sat"]], + "(method 10 rope-joint-system)": [[28, "v1", "process-drawable"]], + "(method 9 rope-system)": [ + [62, "a0", "vector"], + [51, "a0", "vector"] + ], + "(method 20 rope-system)": [ + [11, "a1", "vector"], + [16, "a1", "vector"] + ], + "(code preparing-for-launch desert-rescue-transport)": [ + [10, "v1", "art-joint-anim"] + ], + "(code waiting-for-passenger desert-rescue-transport)": [ + [14, "v1", "art-joint-anim"] + ], + "(method 45 task-manager-desert-rescue)": [ + [[40, 48], "a0", "process-focusable"] + ], + "(method 48 task-manager-desert-rescue)": [[20, "f30", "float"]], + "(trans fight task-manager-desert-rescue)": [[67, "v1", "process-focusable"]], + "(trans pickup-passenger task-manager-desert-rescue)": [ + [[18, 27], "gp", "wland-passenger"], + [[84, 89], "a0", "process-focusable"], + [212, "v1", "process-focusable"] + ], + "(trans drop-off-passenger task-manager-desert-rescue)": [ + [67, "v1", "process-focusable"] + ], + "(trans play-dead-wlander-movie task-manager-desert-rescue)": [ + [[17, 25], "v1", "wland-passenger"] + ], + "(event play-dead-wlander-movie task-manager-desert-rescue)": [ + [[12, 19], "v1", "wland-passenger"] + ], + "(trans active task-manager-desert-rescue)": [[264, "a0", "vehicle"]], + "(method 43 task-manager-desert-rescue)": [[25, "v0", "handle"]], + "(method 43 desert-rescue-transport)": [ + [[63, 70], "v1", "tread-trail-tracker"], + [77, "v1", "tread-trail-tracker"], + [[107, 114], "v1", "tread-trail-tracker"], + [121, "v1", "tread-trail-tracker"] + ], + "(method 37 desert-rescue-transport)": [[23, "s4", "float"]], + "(trans active task-manager-desert-rescue-bbush)": [[66, "a0", "vehicle"]], + "(method 34 vehicle-rider)": [[[10, 33], "s5", "vehicle"]], + "(code get-up-front crimson-guard)": [[20, "v1", "art-joint-anim"]], + "(code get-up-back crimson-guard)": [[20, "v1", "art-joint-anim"]], + "(code close-attack-active crimson-guard)": [ + [15, "v1", "art-joint-anim"], + [48, "v1", "collide-shape-prim-group"] + ], + "(exit close-attack-active crimson-guard)": [ + [2, "v1", "collide-shape-prim-group"] + ], + "(code close-attack crimson-guard)": [ + [15, "v1", "art-joint-anim"], + [48, "v1", "collide-shape-prim-group"] + ], + "(exit close-attack crimson-guard)": [[2, "v1", "collide-shape-prim-group"]], + "(code roll-right crimson-guard)": [ + [[87, 98], "a0", "process-focusable"], + [[174, 185], "a0", "process-focusable"] + ], + "(code roll-left crimson-guard)": [ + [[87, 98], "a0", "process-focusable"], + [[174, 185], "a0", "process-focusable"] + ], + "(code arrest crimson-guard)": [ + [22, "v1", "art-joint-anim"], + [164, "v1", "art-joint-anim"], + [99, "v1", "art-joint-anim"] + ], + "(code waiting-ambush crimson-guard)": [ + [22, "v1", "art-joint-anim"], + [139, "v1", "art-joint-anim"], + [71, "v1", "art-joint-anim"] + ], + "orient-towards-code": [ + [35, "v1", "art-joint-anim"], + [103, "v1", "art-joint-anim"] + ], + "(code rifle-reload crimson-guard)": [ + [14, "v1", "art-joint-anim"], + [115, "a0", "process-focusable"], + [164, "v1", "art-joint-anim"], + [33, "v1", "float"], + [74, "v1", "float"] + ], + "(code gun-shoot crimson-guard)": [ + [28, "v1", "art-joint-anim"], + [166, "v1", "process-focusable"], + [276, "a0", "process-focusable"], + [314, "v1", "art-joint-anim"] + ], + "(trans gun-shoot crimson-guard)": [[[12, 55], "gp", "process-focusable"]], + "(trans rifle-hostile crimson-guard)": [[22, "v1", "process-focusable"]], + "(method 114 crimson-guard)": [[[2, 40], "s4", "touching-shapes-entry"]], + "(method 82 crimson-guard)": [ + [[203, 213], "s5", "traffic-danger-info"], + [238, "s5", "traffic-danger-info"], + [296, "s5", "traffic-danger-info"], + [[310, 322], "v1", "traffic-danger-info"], + [[471, 475], "v1", "process-focusable"] + ], + "(method 86 crimson-guard)": [ + [23, "a1", "art-joint-anim"], + [77, "a1", "art-joint-anim"], + [109, "a1", "art-joint-anim"], + [141, "v1", "art-joint-anim"], + [183, "a1", "art-joint-anim"], + [67, "v1", "guard-global-info"] + ], + "(code attack crimson-guard)": [[146, "a0", "process-focusable"]], + "(trans attack crimson-guard)": [ + [38, "v1", "process-focusable"], + [43, "v1", "process-focusable"], + [83, "a0", "process-focusable"] + ], + "(code attack-tazer crimson-guard)": [ + [14, "v1", "art-joint-anim"], + [67, "v1", "collide-shape-prim-group"], + [158, "v1", "collide-shape-prim-group"], + [195, "v1", "art-joint-anim"] + ], + "(trans attack-tazer crimson-guard)": [[[38, 44], "v1", "process-focusable"]], + "(enter grenade-hostile crimson-guard)": [[16, "v1", "float"]], + "(code grenade-throw-post-reloading crimson-guard)": [ + [14, "v1", "art-joint-anim"], + [123, "v1", "art-joint-anim"] + ], + "(method 24 reload-grenade)": [[[10, 26], "s5", "process-focusable"]], + "(method 264 crimson-guard)": [[[67, 73], "a0", "process-focusable"]], + "(method 194 crimson-guard)": [[80, "v1", "float"]], + "(method 46 ff-squad-control)": [ + [278, "t2", "ff-squad-control"], + [[158, 227], "s0", "crimson-guard"], + [221, "a0", "ff-squad-control"], + [[60, 109], "a3", "vehicle"], + [[285, 289], "t2", "traffic-guard-type-array"], + [297, "t2", "traffic-guard-type-array"], + [18, "a1", "ff-squad-control"], + [229, "v1", "ff-squad-control"], + [319, "a1", "ff-squad-control"] + ], + "(method 252 crimson-guard)": [ + [74, "s5", "process-focusable"], + [69, "s5", "process-focusable"], + [126, "s5", "process-focusable"], + [146, "s5", "process-focusable"], + [202, "s5", "process-focusable"], + [205, "s5", "process-focusable"] + ], + "(method 51 ff-squad-control)": [ + [13, "v1", "connection"], + [14, "v1", "collide-shape"], + [18, "v1", "collide-shape"], + [27, "s2", "process-focusable"], + [36, "s2", "process-focusable"], + [50, "s3", "connection"], + [67, "v1", "connection"], + [68, "v1", "collide-shape"], + [72, "v1", "collide-shape"], + [81, "s2", "process-focusable"], + [119, "v1", "connection"], + [120, "v1", "collide-shape"], + [124, "v1", "collide-shape"], + [133, "s2", "process-focusable"] + ], + "(method 39 ff-squad-control)": [[[7, 12], "gp", "crimson-guard"]], + "(method 43 ff-squad-control)": [[8, "gp", "crimson-guard"]], + "(method 16 ff-squad-control)": [ + ["_stack_", 176, "(array crimson-guard)"], + ["_stack_", 180, "(array float)"], + [[49, 82], "s2", "crimson-guard"] + ], + "(method 282 crimson-guard)": [ + ["_stack_", 24, "float"], + ["_stack_", 32, "float"], + [28, "v1", "float"] + ], + "(method 12 ff-squad-control)": [ + [28, "a1", "traffic-guard-type-array"], + [30, "a1", "traffic-guard-type-array"] + ], + "(method 55 ff-squad-control)": [[5, "v1", "ff-squad-control"]], + "(method 45 ff-squad-control)": [ + [130, "t0", "ff-squad-control"], + [[37, 92], "a2", "squad-alert-state-settings"], + [[44, 104], "a1", "traffic-guard-type-array"] + ], + "(code knocked-recover crimson-guard)": [[23, "a1", "art-joint-anim"]], + "(method 289 crimson-guard)": [[21, "v1", "float"]], + "(method 258 crimson-guard)": [[152, "v1", "collide-shape-prim"]], + "(method 212 crimson-guard)": [[[246, 249], "v1", "vehicle"]], + "(method 265 crimson-guard)": [ + [22, "s4", "process-focusable"], + [52, "s4", "process-focusable"] + ], + "(method 261 crimson-guard)": [[177, "v1", "process-focusable"]], + "(code impact vehicle-grenade)": [[33, "a0", "process"]], + "(post moving vehicle-grenade-deflect)": [[19, "t9", "(function none)"]], + "(code moving vehicle-grenade-deflect)": [[4, "t9", "(function none)"]], + "(method 35 vehicle-grenade-deflect)": [ + [[53, 58], "a0", "process-focusable"], + [102, "v1", "target"] + ], + "(method 38 guard-lazer-shot)": [[[28, 37], "a0", "process-focusable"]], + "(code sitting vehicle-grenade)": [[27, "a0", "float"]], + "(code wait citizen-fat)": [ + [101, "v1", "art-joint-anim"], + [150, "v1", "art-joint-anim"] + ], + "(exit get-up-back citizen-fat)": [ + [[9, 24], "v1", "collide-shape-prim-group"] + ], + "(exit get-up-front citizen-fat)": [ + [[9, 24], "v1", "collide-shape-prim-group"] + ], + "(enter knocked citizen-fat)": [[[8, 22], "v1", "collide-shape-prim-group"]], + "(method 86 citizen-fat)": [[30, "v1", "art-joint-anim"]], + "(method 85 citizen-fat)": [ + [40, "a1", "art-joint-anim"], + [92, "a1", "art-joint-anim"], + [140, "s4", "art-joint-anim"], + [28, "a0", "civilian-global-info"], + [80, "a0", "civilian-global-info"] + ], + "(method 87 citizen-fat)": [[58, "v1", "art-joint-anim"]], + "(method 55 citizen-fat)": [[[24, 31], "a0", "process-focusable"]], + "(code wait citizen-norm)": [ + [101, "v1", "art-joint-anim"], + [150, "v1", "art-joint-anim"] + ], + "(method 212 citizen-norm)": [[[36, 39], "v1", "vehicle"]], + "(exit get-up-back citizen-norm)": [ + [[9, 24], "v1", "collide-shape-prim-group"] + ], + "(exit get-up-front citizen-norm)": [ + [[9, 24], "v1", "collide-shape-prim-group"] + ], + "(enter knocked citizen-norm)": [[[8, 22], "v1", "collide-shape-prim-group"]], + "(method 86 citizen-norm)": [[33, "v1", "art-joint-anim"]], + "(method 85 citizen-norm)": [ + [19, "v1", "art-joint-anim"], + [58, "v1", "art-joint-anim"], + [118, "a1", "art-joint-anim"], + [170, "a1", "art-joint-anim"], + [233, "s4", "art-joint-anim"], + [106, "a0", "civilian-global-info"], + [158, "a0", "civilian-global-info"] + ], + "(method 87 citizen-norm)": [[58, "v1", "art-joint-anim"]], + "(method 55 citizen-norm)": [[[32, 39], "a0", "process-focusable"]], + "(code wait citizen-chick)": [[22, "v1", "art-joint-anim"]], + "(exit get-up-back citizen-chick)": [ + [[9, 24], "v1", "collide-shape-prim-group"] + ], + "(exit get-up-front citizen-chick)": [ + [[9, 24], "v1", "collide-shape-prim-group"] + ], + "(enter knocked citizen-chick)": [ + [[8, 22], "v1", "collide-shape-prim-group"] + ], + "(method 86 citizen-chick)": [[30, "v1", "art-joint-anim"]], + "(method 87 citizen-chick)": [[58, "v1", "art-joint-anim"]], + "(method 55 citizen-chick)": [[[24, 31], "a0", "process-focusable"]], + "(method 85 citizen-chick)": [ + [40, "a1", "art-joint-anim"], + [92, "a1", "art-joint-anim"], + [140, "s4", "art-joint-anim"], + [28, "a0", "civilian-global-info"], + [80, "a0", "civilian-global-info"] + ], + "(code active citizen-enemy)": [[30, "v1", "art-joint-anim"]], + "(method 217 citizen-enemy)": [ + [46, "s1", "process-focusable"], + [50, "s1", "process-focusable"], + [72, "s1", "process-focusable"] + ], + "(method 84 citizen-enemy)": [[45, "v1", "process-focusable"]], + "(trans active mh-squad-member)": [ + [29, "v1", "process-focusable"], + [34, "v1", "process-focusable"] + ], + "(method 217 mh-squad-member)": [[71, "a0", "process-focusable"]], + "(method 84 mh-squad-member)": [[40, "v1", "process-focusable"]], + "(method 84 kg-squad-member)": [[40, "v1", "process-focusable"]], + "(code circling metalhead-flitter)": [[27, "v1", "art-joint-anim"]], + "(trans circling metalhead-flitter)": [[[10, 15], "gp", "process-focusable"]], + "(code stare metalhead-flitter)": [[126, "v1", "art-joint-anim"]], + "(code attack metalhead-flitter)": [ + [35, "v1", "art-joint-anim"], + [161, "v1", "art-joint-anim"] + ], + "(trans attack metalhead-flitter)": [[[16, 57], "gp", "process-focusable"]], + "(post stare metalhead-flitter)": [[9, "t9", "(function none)"]], + "(post active metalhead-flitter)": [[9, "t9", "(function none)"]], + "(method 224 metalhead-flitter)": [[[17, 56], "s3", "process-focusable"]], + "(code ambush-jumping metalhead-flitter)": [ + [14, "v1", "art-joint-anim"], + [251, "v1", "art-joint-anim"] + ], + "(enter ambush metalhead-flitter)": [[[44, 54], "a0", "process-focusable"]], + "(method 86 metalhead-flitter)": [[15, "a1", "art-joint-anim"]], + "(method 85 metalhead-flitter)": [ + [14, "v1", "art-joint-anim"], + [69, "v1", "art-joint-anim"] + ], + "(method 227 metalhead-flitter)": [[4, "v1", "collide-shape-prim-group"]], + "(method 51 kg-squad-control)": [ + [[37, 52], "a2", "kg-squad-settings"], + [[86, 94], "t0", "kg-squad-settings"], + [[114, 124], "t0", "kg-squad-member"] + ], + "(method 52 kg-squad-control)": [[[25, 33], "a3", "kg-squad-member"]], + "(method 38 kg-squad-control)": [[[0, 5], "a1", "kg-squad-member"]], + "(method 43 kg-squad-control)": [[[3, 6], "v1", "kg-squad-member"]], + "(method 39 kg-squad-control)": [[[0, 5], "a1", "kg-squad-member"]], + "(method 39 mh-squad-control)": [[[0, 5], "a1", "mh-squad-member"]], + "(method 48 mh-squad-control)": [[[10, 18], "a3", "mh-squad-settings"]], + "(code knocked-recover metalhead-grunt)": [ + [[13, 16], "v1", "ragdoll-proc"], + [40, "v1", "art-joint-anim"], + [69, "v1", "art-joint-anim"] + ], + "(trans wait-for-focus metalhead-grunt)": [ + [[10, 41], "s5", "process-focusable"] + ], + "(code stop-chase metalhead-grunt)": [[77, "gp", "art-joint-anim"]], + "(code spin-attack metalhead-grunt)": [ + [45, "gp", "art-joint-anim"], + [[69, 77], "a0", "process-focusable"] + ], + "(enter spin-attack metalhead-grunt)": [ + [[34, 48], "gp", "process-focusable"] + ], + "(code attack metalhead-grunt)": [ + [55, "gp", "art-joint-anim"], + [[150, 156], "a0", "mh-grunt-anim-info"] + ], + "(code hostile metalhead-grunt)": [[38, "gp", "art-joint-anim"]], + "(code active metalhead-grunt)": [ + [203, "gp", "art-joint-anim"], + [247, "gp", "art-joint-anim"], + [330, "v1", "art-joint-anim"], + [390, "v1", "art-joint-anim"], + [119, "gp", "art-joint-anim"] + ], + "(code falling-ambush metalhead-grunt)": [[18, "v1", "art-joint-anim"]], + "(method 85 metalhead-predator)": [ + [22, "v1", "art-joint-anim"], + [54, "v1", "art-joint-anim"], + [97, "v1", "art-joint-anim"], + [127, "v1", "art-joint-anim"], + [161, "v1", "art-joint-anim"], + [193, "v1", "art-joint-anim"] + ], + "(code close-attack metalhead-predator)": [ + [15, "v1", "art-joint-anim"], + [93, "v1", "art-joint-anim"] + ], + "(code hostile metalhead-predator)": [ + [14, "v1", "art-joint-anim"], + [67, "v1", "art-joint-anim"] + ], + "(trans hostile metalhead-predator)": [[[16, 59], "gp", "process-focusable"]], + "(trans fire metalhead-predator)": [[[10, 26], "v1", "process-focusable"]], + "(code fire metalhead-predator)": [ + [26, "v1", "art-joint-anim"], + [[95, 125], "s5", "process-focusable"] + ], + "(method 224 metalhead-predator)": [ + [[4, 20], "v1", "collide-shape-prim-group"] + ], + "(method 59 metalhead-predator)": [[[14, 33], "s5", "process-focusable"]], + "(method 86 metalhead-predator)": [ + [22, "v1", "art-joint-anim"], + [54, "v1", "art-joint-anim"], + [90, "v1", "art-joint-anim"], + [124, "v1", "art-joint-anim"], + [156, "v1", "art-joint-anim"] + ], + "(method 225 metalhead-predator)": [[[65, 211], "s3", "process-focusable"]], + "(code close-attack roboguard-city)": [ + [30, "v1", "art-joint-anim"], + [58, "v1", "art-joint-anim"], + [144, "a0", "collide-shape-prim-group"], + [168, "v1", "art-joint-anim"], + [196, "v1", "art-joint-anim"], + [252, "v1", "collide-shape-prim-group"], + [269, "v1", "art-joint-anim"], + [297, "v1", "art-joint-anim"], + [[353, 358], "v1", "collide-shape-prim-group"] + ], + "(trans close-attack roboguard-city)": [ + [4, "v1", "collide-shape-prim-group"], + [54, "s3", "process-focusable"], + [[66, 71], "s3", "process-focusable"] + ], + "(code roll-exit roboguard-city)": [[25, "v1", "art-joint-anim"]], + "(code roll-enter roboguard-city)": [[14, "v1", "art-joint-anim"]], + "(trans dizzy roboguard-city)": [ + [52, "v1", "float"], + [80, "v1", "float"], + [108, "v1", "float"], + [136, "v1", "float"], + [164, "v1", "float"], + [192, "v1", "float"], + [220, "v1", "float"], + [248, "v1", "float"] + ], + "roboguard-city-turret-code": [ + [75, "a1", "art-joint-anim"], + [168, "a1", "art-joint-anim"] + ], + "(code dizzy roboguard-city)": [[14, "v1", "art-joint-anim"]], + "(method 238 roboguard-city)": [[40, "v1", "float"]], + "(method 236 roboguard-city)": [[144, "v1", "float"]], + "(method 86 roboguard-city)": [ + [33, "a2", "art-joint-anim"], + [62, "a2", "art-joint-anim"] + ], + "(method 85 roboguard-city)": [ + [39, "v1", "art-joint-anim"], + [67, "v1", "art-joint-anim"] + ], + "(method 59 roboguard-city)": [[[16, 35], "s5", "process-focusable"]], + "(method 194 roboguard-city)": [ + [27, "v1", "float"], + [53, "v1", "float"], + [244, "v1", "float"] + ], + "(method 237 roboguard-city)": [[112, "a0", "process-focusable"]], + "(anon-function 13 roboguard-city)": [[[2, 76], "s3", "roboguard-city"]], + "(code exit-transport spydroid)": [[14, "v1", "art-joint-anim"]], + "(method 236 spydroid)": [[71, "a0", "process-focusable"]], + "(enter hunting spydroid)": [[5, "t9", "(function none)"]], + "(method 194 spydroid)": [[48, "v1", "float"]], + "(code spydroid-notice spydroid)": [[14, "v1", "art-joint-anim"]], + "(code scan spydroid)": [[14, "v1", "art-joint-anim"]], + "(trans spydroid-notice spydroid)": [[[53, 60], "a0", "process-focusable"]], + "(code flip spydroid)": [[[18, 26], "a0", "process-focusable"]], + "(code wait-for-vulnerable-close)": [[28, "v1", "art-joint-anim"]], + "(method 233 spydroid)": [ + [26, "s4", "process-focusable"], + [52, "s4", "process-focusable"] + ], + "(method 82 spydroid)": [[4, "v1", "enemy-jump-info"]], + "(trans hostile spydroid)": [[[10, 23], "gp", "process-focusable"]], + "(code wait-for-vulnerable spydroid)": [[14, "v1", "art-joint-anim"]], + "(trans wait-for-vulnerable spydroid)": [ + [[10, 66], "gp", "process-focusable"] + ], + "(trans wait-for-vulnerable-close)": [[[10, 66], "gp", "process-focusable"]], + "(code attack spydroid)": [ + [[16, 24], "a0", "process-focusable"], + [51, "v1", "art-joint-anim"], + [157, "v1", "art-joint-anim"] + ], + "(event active spydroid)": [[[3, 13], "gp", "traffic-danger-info"]], + "(event search spydroid)": [[[3, 13], "gp", "traffic-danger-info"]], + "(method 232 spydroid)": [[[40, 47], "a0", "process-focusable"]], + "(code fire flying-turret)": [[21, "v1", "art-joint-anim"]], + "(method 194 flying-turret)": [ + [26, "v1", "float"], + [137, "v1", "float"] + ], + "(method 228 flying-turret)": [[99, "v1", "float"]], + "(method 227 flying-turret)": [ + [165, "v1", "float"], + [213, "v1", "float"] + ], + "(method 226 flying-turret)": [[90, "a0", "process-focusable"]], + "(method 140 flying-turret)": [[[29, 35], "a0", "process-focusable"]], + "(trans hostile flying-turret)": [[323, "v1", "process-focusable"]], + "flying-turret-gun-aim-func": [[[2, 46], "s4", "flying-turret"]], + "(method 14 billiard-table)": [[129, "a1", "billiard-table"]], + "(method 13 billiard-table)": [ + [18, "v1", "float"], + [34, "v1", "float"], + [50, "v1", "float"] + ], + "compute-suck-speed-scalar": [[1, "v1", "float"]], + "(method 30 h-kg-pickup)": [[[181, 207], "s4", "dark-barrel"]], + "(code resolution task-manager-bbush-board)": [[40, "gp", "handle"]], + "(code active task-manager-bbush-board)": [ + [47, "gp", "handle"], + [96, "gp", "handle"] + ], + "(method 11 flitter-spawner)": [ + [24, "v0", "(pointer actor-group)"], + ["_stack_", 16, "res-tag"] + ], + "(method 21 task-manager-desert-rescue-bbush)": [["_stack_", 16, "res-tag"]], + "(trans active flitter-spawner)": [ + [[195, 217], "s5", "process-focusable"], + [33, "v1", "process-focusable"] + ], + "(event idle ctyn-lamp)": [[13, "s5", "joint-exploder"]], + "(method 32 propa)": [ + [38, "s1", "process-focusable"], + [42, "s1", "process-focusable"], + [46, "s1", "process-focusable"] + ], + "(post idle propa)": [ + [193, "a0", "process-focusable"], + [92, "v0", "sound-rpc-set-param"] + ], + "(event idle propa)": [ + [[12, 15], "v1", "attack-info"], + [[62, 65], "a0", "collide-shape-prim-group"] + ], + "(method 21 parking-spot)": [[[10, 158], "s5", "vehicle"]], + "(method 23 parking-spot)": [[[66, 69], "v1", "vehicle"]], + "parking-spot-spawn": [[[11, 15], "v0", "vehicle"]], + "(event idle-close security-wall)": [ + [[23, 28], "v1", "attack-info"], + [56, "s3", "process-drawable"], + [133, "v1", "process-drawable"], + [149, "v1", "process-drawable"], + [156, "v1", "process-drawable"], + [159, "a0", "process-drawable"], + [173, "v1", "process-drawable"], + [180, "v1", "process-drawable"], + [183, "a0", "process-drawable"], + [196, "v1", "process-drawable"], + [199, "a0", "process-drawable"], + [281, "v1", "process-drawable"], + [291, "a0", "collide-shape"], + [[204, 208], "a2", "float"] + ], + "(method 33 task-manager-bbush-board)": [[55, "v1", "hud"]], + "(code active task-manager-city-vehicle-training-hover-zone-2)": [ + [[24, 28], "v1", "vehicle"], + [103, "v1", "vehicle"] + ], + "(code complete task-manager-city-vehicle-training-hover-zone-1)": [ + [10, "t9", "(function none)"] + ], + "(code fail task-manager-city-vehicle-training-hover-zone-1)": [ + [12, "t9", "(function none)"] + ], + "(code active task-manager-city-vehicle-training-hover-zone-1)": [ + [137, "v1", "vehicle"], + [201, "t9", "(function none)"] + ], + "(event active task-manager-bbush-board)": [[4, "v1", "float"]], + "(code idle farthy)": [[10, "v1", "art-joint-anim"]], + "ctyport-sparticle-mode-animate": [ + [5, "v1", "(array symbol)"], + [11, "a1", "(array int32)"], + [18, "a1", "(array int32)"], + [21, "a1", "(array int32)"], + [27, "a0", "(array int32)"], + [28, "v1", "(array int32)"], + [44, "v1", "(pointer int32)"], + [46, "v1", "(pointer int32)"], + [16, "a1", "(pointer uint32)"], + [32, "a2", "int"], + [33, "a1", "(pointer uint64)"] + ], + "(method 30 boat-base)": [ + [280, "v1", "boat-manager"], + [330, "v1", "boat-manager"] + ], + "(method 35 htorpedo)": [[[96, 107], "s3", "particle-local-space-info"]], + "(method 17 light-trail-tracker-torpedo)": [[1, "v1", "htorpedo"]], + "(event player-control htorpedo)": [[5, "v1", "float"]], + "(event waiting htorpedo)": [[5, "v1", "float"]], + "(method 15 ctyport-attack-hud)": [[137, "v1", "float"]], + "(enter start-mission ctyport-attack-manager)": [[77, "v1", "float"]], + "(trans get-on-nuke ctyport-attack-manager)": [ + [[133, 138], "a0", "process-focusable"] + ], + "(method 49 ctyport-attack-manager)": [[[52, 68], "s4", "process-focusable"]], + "(anon-function 45 ctyport-attack)": [ + [13, "a0", "ctyport-attack-manager"], + [16, "a0", "ctyport-attack-manager"] + ], + "(method 44 ctyport-attack-manager)": [ + [137, "v1", "float"], + [163, "v1", "float"] + ], + "(method 51 ctyport-attack-manager)": [[31, "v0", "entity-actor"]], + "(event menacing ctyport-mine)": [[14, "v1", "vector"]], + "(event idle ctyport-mine)": [[22, "v1", "vector"]], + "(event hidden ctyport-mine)": [[6, "v1", "vector"]], + "ctyport-mine-init-by-other": [ + [118, "v1", "float"], + [141, "v1", "float"], + [167, "v1", "float"], + [193, "v1", "float"] + ], + "(method 47 ctyport-attack-manager)": [[39, "a1", "process-focusable"]], + "(trans head-to-wall ctyport-attack-manager)": [ + [45, "v1", "process-focusable"] + ], + "(trans pickup-nukes ctyport-attack-manager)": [ + [175, "v1", "process-focusable"] + ], + "(code explode krimson-wall-break)": [[18, "v0", "art-joint-anim"]], + "update-mood-ctygenb": [[[61, 97], "gp", "ctygenb-states"]], + "update-mood-ctyslumc": [[[30, 62], "s5", "ctyslumc-states"]], + "update-mood-ctyslumb": [[[30, 62], "s5", "ctyslumb-states"]], + "update-mood-mountain": [[[50, 83], "gp", "mountain-states"]], + "update-mood-atoll": [[[30, 48], "s4", "atoll-states"]], + "(code die v-catapult)": [[13, "t9", "(function none)"]], + "(post hostile v-catapult)": [[4, "t9", "(function none)"]], + "(code active catapult-shot-sphere)": [ + [14, "v1", "art-joint-anim"], + [66, "v1", "art-joint-anim"] + ], + "(method 90 v-catapult)": [ + [54, "v1", "art-joint-anim"], + [143, "v1", "art-joint-anim"] + ], + "(method 62 v-catapult)": [[[4, 41], "s5", "collide-shape-prim-group"]], + "(method 49 v-catapult)": [ + [[4, 16], "a0", "vector"], + [[5, 19], "v1", "process"] + ], + "(code explode wascity-airlock-debris)": [ + [3, "v0", "entity-actor"], + [7, "v0", "entity-actor"] + ], + "(method 26 desert-jump-manager)": [ + [[374, 379], "s4", "process-focusable"], + [405, "s4", "process-focusable"], + [531, "s4", "process-focusable"], + [[80, 318], "s3", "process-focusable"], + [518, "v1", "float"], + [631, "v1", "float"], + [458, "v1", "float"], + [167, "v1", "float"] + ], + "(code active desert-jump-manager)": [ + [443, "a0", "process-focusable"], + [83, "v0", "entity-actor"], + [518, "v1", "float"], + [63, "v1", "float"], + [183, "a0", "int"], + [236, "a0", "int"] + ], + "(method 30 desert-jump-manager)": [[[16, 21], "v1", "projectile"]], + "(method 32 desert-jump-manager)": [ + [122, "s2", "wvehicle"], + [225, "v1", "float"], + [240, "v1", "float"] + ], + "(method 22 beam-generator)": [[[26, 30], "a1", "process-focusable"]], + "(method 21 deschase-artifact)": [[[26, 30], "a1", "process-focusable"]], + "(method 35 player-controller)": [[12, "v1", "vector"]], + "(code active desert-chase-ambush-manager)": [[136, "a2", "float"]], + "(method 34 desert-chase-ambush-manager)": [[72, "v1", "handle"]], + "(method 32 desert-chase-ambush-manager)": [[[90, 137], "s2", "marauder"]], + "(method 10 deschase-vehicle-control)": [ + [[17, 26], "v1", "process-focusable"] + ], + "(method 12 deschase-vehicle-control)": [ + [[16, 32], "gp", "process-focusable"], + [46, "v0", "(array collide-shape)"] + ], + "(method 26 desert-chase-chase-manager)": [ + [[19, 24], "a0", "process-focusable"], + [66, "a0", "process-focusable"] + ], + "(method 33 desert-chase-chase-manager)": [[28, "a0", "process-focusable"]], + "(code complete desert-chase-chase-manager)": [[14, "t9", "(function none)"]], + "desert-chase-ambush-intro-sequence": [ + [325, "v1", "float"], + [404, "a2", "float"] + ], + "(code active desert-chase-chase-manager)": [ + [[399, 420], "s5", "process-focusable"], + [529, "s5", "process-focusable"], + [538, "s5", "process-focusable"], + [358, "s3", "process-focusable"], + [360, "v1", "process-focusable"] + ], + "catapult-target-handler": [[4, "v1", "vector"]], + "(event back bombbot-bomb)": [[[13, 53], "s3", "process-focusable"]], + "(enter explode bombbot-bomb)": [[59, "a0", "process"]], + "(method 26 task-manager-port-fight)": [[[315, 343], "s2", "bombbot"]], + "(code hostile bombbot-player)": [[38, "v1", "art-joint-anim"]], + "(method 196 bombbot-player)": [[[214, 218], "a0", "process-focusable"]], + "(trans hostile bomb-bot)": [[[34, 61], "gp", "process-focusable"]], + "(method 196 bomb-bot)": [ + [[1, 119], "gp", "process-focusable"], + [[30, 68], "s2", "process-focusable"] + ], + "(method 84 bombbot)": [[27, "v1", "process-focusable"]], + "bombbot-gun-callback": [[[6, 76], "s4", "bombbot"]], + "bombbot-gun-swivel-callback": [[[4, 87], "s3", "bombbot"]], + "bombbot-head-callback": [[[2, 56], "s4", "bombbot"]], + "bombbot-callback": [[[2, 190], "s4", "bombbot"]], + "(enter explode bombbot)": [[110, "a0", "process"]], + "(code die bombbot)": [[11, "v1", "art-joint-anim"]], + "(code blow-wall bombbot)": [[10, "v1", "art-joint-anim"]], + "(code drop-bombs bombbot)": [[10, "v1", "art-joint-anim"]], + "(code hostile bombbot)": [[10, "v1", "art-joint-anim"]], + "(trans hostile bombbot)": [[[45, 94], "v1", "process-focusable"]], + "(enter hostile bombbot)": [[15, "v1", "collide-shape-prim-group"]], + "(method 200 bombbot)": [[4, "v1", "collide-shape-prim-group"]], + "(method 194 bombbot)": [ + ["_stack_", 896, "float"], + ["_stack_", 912, "float"] + ], + "(method 196 bombbot)": [ + [[68, 76], "s1", "process-focusable"], + [110, "gp", "process-focusable"] + ], + "(method 51 ctyport-attack-manager-bbush)": [[12, "v0", "entity-actor"]], + "(code wait ctyport-attack-manager-bbush)": [ + [136, "v0", "entity-actor"], + [[141, 144], "a0", "process-focusable"] + ], + "(method 46 cty-hijack-missile)": [[[17, 24], "a0", "process-focusable"]], + "(trans chasing-2 cty-hijack-missile)": [[75, "v1", "process-focusable"]], + "(trans fake-chase cty-hijack-missile)": [ + [342, "v1", "process-focusable"], + [74, "v1", "float"], + [94, "v1", "float"], + [117, "v1", "float"], + [137, "v1", "float"], + [157, "v1", "float"] + ], + "(method 53 cty-hijack-missile)": [[13, "v1", "float"]], + "(method 51 cty-hijack-missile)": [ + [[17, 196], "s5", "process-focusable"], + [[461, 467], "v1", "vehicle"], + [[588, 594], "v1", "vehicle"], + [263, "v1", "float"], + [286, "v1", "float"], + [309, "v1", "float"], + [329, "v1", "float"], + [349, "v1", "float"], + [371, "v1", "float"], + [394, "v1", "float"], + [414, "v1", "float"], + [434, "v1", "float"], + ["_stack_", 72, "float"], + ["_stack_", 80, "float"] + ], + "(method 48 cty-hijack-missile)": [[[17, 25], "v1", "h-kg-pickup"]], + "(method 47 cty-hijack-missile)": [[[19, 86], "s2", "h-kg-pickup"]], + "(method 50 cty-hijack-missile)": [ + [[74, 79], "a0", "process-focusable"], + [176, "v1", "process-focusable"], + [228, "v1", "process-focusable"] + ], + "(method 11 hijack-missile-bobber)": [ + [20, "v1", "float"], + [59, "v1", "float"] + ], + "(method 36 cty-missile-lure)": [ + [16, "v1", "connection"], + [17, "v1", "collide-shape"], + [21, "v1", "collide-shape"], + [60, "v1", "connection"], + [61, "v1", "collide-shape"], + [65, "v1", "collide-shape"], + [103, "v1", "connection"], + [104, "v1", "collide-shape"], + [108, "v1", "collide-shape"] + ], + "(code opening cty-missile-lure)": [[25, "v1", "art-joint-anim"]], + "(code closing cty-missile-lure)": [[19, "v1", "art-joint-anim"]], + "(code active cty-missile-lure)": [[10, "v1", "art-joint-anim"]], + "(trans active cty-hijack-manager)": [ + [[18, 45], "gp", "process-focusable"], + [104, "v1", "process-focusable"], + [[136, 151], "gp", "process-focusable"], + [169, "gp", "process-focusable"] + ], + "(trans decoy-stage cty-hijack-manager)": [ + [29, "v1", "process-focusable"], + [450, "v1", "process-focusable"] + ], + "(code show-missile-launch cty-hijack-manager)": [ + [78, "a0", "process-focusable"] + ], + "(enter player-riding cty-hijack-manager)": [ + [[42, 45], "a0", "boat-manager"] + ], + "(code recoil cty-missile-launcher)": [[14, "v1", "art-joint-anim"]], + "(trans player-riding cty-hijack-manager)": [ + [25, "v1", "process-focusable"], + [183, "v1", "process-focusable"] + ], + "(code idle cty-missile-launcher)": [[14, "v1", "art-joint-anim"]], + "(method 37 cty-hijack-manager)": [[[27, 34], "s4", "process-focusable"]], + "(enter fail cty-hijack-manager)": [ + [7, "v0", "(state resetter-params cty-hijack-manager)"] + ], + "(method 20 ctyport-attack-manager-bbush)": [["_stack_", 96, "res-tag"]], + "(code idle farm-sprinkler-barrels)": [[10, "v1", "art-joint-anim"]], + "(code explode com-power-box)": [ + [77, "v1", "collide-shape-prim-group"], + [116, "a0", "process"] + ], + "(enter active task-manager-city-destroy-grid)": [ + ["_stack_", 272, "res-tag"] + ], + "(code wait task-manager-city-destroy-grid)": [[40, "t9", "(function none)"]], + "(code die jinx)": [[37, "v1", "art-joint-anim"]], + "(post die jinx)": [[11, "t9", "(function none)"]], + "(method 32 task-manager-city-destroy-grid)": [ + [118, "s5", "process-focusable"], + [132, "gp", "process-drawable"], + [135, "gp", "process-drawable"], + [100, "v0", "sound-rpc-set-param"] + ], + "(method 84 jinx)": [[45, "v1", "process-focusable"]], + "(code do-power-box jinx)": [ + [19, "v1", "art-joint-anim"], + [83, "v1", "art-joint-anim"], + [135, "v1", "art-joint-anim"], + [254, "v1", "art-joint-anim"], + [194, "v1", "art-joint-anim"] + ], + "(code waiting-idle jinx)": [ + [159, "v1", "art-joint-anim"], + [81, "v1", "art-joint-anim"] + ], + "(code board-vehicle jinx)": [ + [14, "v1", "art-joint-anim"], + [77, "v1", "art-joint-anim"], + [134, "v1", "art-joint-anim"], + [189, "v1", "art-joint-anim"], + [244, "v1", "art-joint-anim"], + [[297, 304], "a0", "vehicle"] + ], + "(code wait-for-ride jinx)": [ + [159, "v1", "art-joint-anim"], + [81, "v1", "art-joint-anim"] + ], + "(method 232 jinx)": [[[11, 44], "s3", "vehicle"]], + "(code exit-vehicle jinx)": [ + [[9, 15], "a0", "vehicle"], + [108, "v1", "art-joint-anim"], + [162, "v1", "art-joint-anim"], + [217, "v1", "art-joint-anim"], + [281, "v1", "art-joint-anim"], + [[35, 50], "s5", "vehicle"], + [[71, 78], "a0", "vehicle"] + ], + "board-vehicle-get-in-car-end": [[[9, 30], "gp", "vehicle"]], + "board-vehicle-get-in-car-sit": [[[10, 31], "s4", "vehicle"]], + "board-vehicle-get-in-car-land": [[[10, 31], "s4", "vehicle"]], + "board-vehicle-get-in-car-jump": [[[12, 34], "s0", "vehicle"]], + "(enter wait-for-ride jinx)": [[[14, 21], "a0", "vehicle"]], + "(trans wait-for-ride jinx)": [[16, "v1", "vehicle"]], + "(enter move-to-vehicle jinx)": [[[9, 30], "gp", "vehicle"]], + "(trans move-to-vehicle jinx)": [[[11, 46], "s0", "vehicle"]], + "(method 26 task-manager-city-destroy-grid)": [ + [[17, 666], "s5", "jinx"], + [[193, 210], "v1", "vehicle"], + [[253, 287], "a2", "vehicle"], + [[494, 664], "s4", "vehicle"] + ], + "check-onintent-bugs": [[[31, 49], "s3", "sprite-vec-data-2d"]], + "(method 11 cty-sniper-battery)": [ + [185, "v1", "art-joint-anim"], + ["_stack_", 16, "res-tag"] + ], + "cty-sniper-battery-handler": [ + [11, "v1", "vector"], + [[18, 25], "a1", "attack-info"], + [41, "a1", "attack-info"], + [43, "a1", "attack-info"], + [45, "a1", "attack-info"], + [47, "a1", "attack-info"] + ], + "(code bail-up cty-sniper-button)": [[35, "v1", "art-joint-anim"]], + "(code idle-down cty-sniper-button)": [[65, "v1", "art-joint-anim"]], + "(code going-down cty-sniper-button)": [ + [52, "v1", "art-joint-anim"], + [27, "v1", "float"] + ], + "(event idle-up cty-sniper-button)": [[[3, 5], "v1", "attack-info"]], + "(code going-down cty-sniper-button-top)": [[10, "v1", "art-joint-anim"]], + "(code going-up cty-sniper-button-top)": [[10, "v1", "art-joint-anim"]], + "(code vulnerable cty-sniper-battery)": [[17, "v1", "art-joint-anim"]], + "(code idle cty-sniper-battery)": [[12, "v1", "art-joint-anim"]], + "(code explode cty-sniper-battery)": [[198, "v1", "process-drawable"]], + "(method 11 cty-sniper-turret)": [ + ["_stack_", 16, "res-tag"], + [14, "v0", "(pointer actor-group)"] + ], + "(code die cty-sniper-turret)": [[142, "v1", "art-joint-anim"]], + "(code ready cty-sniper-turret)": [ + [11, "v1", "art-joint-anim"], + [66, "v1", "art-joint-anim"], + [95, "v1", "art-joint-anim"] + ], + "(code locked-on cty-sniper-turret)": [[33, "v1", "art-joint-anim"]], + "(code asleep cty-sniper-turret)": [[10, "v1", "art-joint-anim"]], + "(trans idle cty-sniper-turret-reticle)": [ + [50, "v1", "float"], + [70, "v1", "float"] + ], + "(enter idle cty-sniper-turret-reticle)": [ + [23, "v1", "float"], + [43, "v1", "float"] + ], + "cty-sniper-turret-reticle-handler": [[7, "a0", "vector"]], + "(method 15 hud-cty-sniper-fight)": [[86, "v1", "cty-sniper-button-top"]], + "(method 22 simple-prim-turret-reticle)": [[3, "v1", "cty-sniper-turret"]], + "cty-sniper-turret-handler": [ + [75, "v1", "collide-shape-prim-group"], + [265, "v0", "(pointer actor-group)"], + [[268, 271], "a0", "hud-cty-sniper-fight"], + [284, "v1", "collide-shape-prim-group"], + [[439, 448], "s5", "cspace"], + [17, "v1", "float"] + ], + "(method 26 task-manager-city-sniper-fight)": [["_stack_", 16, "res-tag"]], + "(code active task-manager-city-sniper-fight)": [ + [80, "a1", "process-drawable"] + ], + "hfrag-add-constants": [[[3, 17], "a0", "dma-packet"]], + "hfrag-vu1-end-buffer": [ + [[1, 8], "a1", "dma-packet"], + [[10, 28], "a1", "(pointer vif-tag)"] + ], + "hfrag-vu1-init-buf": [ + [[53, 60], "a0", "dma-packet"], + [[63, 67], "a0", "(pointer uint32)"], + [[68, 79], "a0", "(pointer vif-tag)"], + [[81, 91], "v1", "dma-packet"], + [[135, 141], "v1", "dma-packet"], + [143, "v1", "(pointer uint32)"] + ], + "real-wang-texture-anim-func": [[[3, 31], "v1", "mood-context"]], + "hiphog-mirror-sheen-func": [ + [[50, 64], "a2", "ripple-wave"], + [48, "a2", "ripple-wave"], + [49, "a2", "(inline-array ripple-wave)"] + ], + "(method 26 rubble-attack-manager)": [[[62, 68], "v1", "dm-missile-target"]], + "(code lock dm-missile-target)": [[14, "v1", "art-joint-anim"]], + "dm-missile-target-handler": [ + [6, "v1", "vector"], + [[11, 13], "gp", "vector"] + ], + "(method 32 rubble-attack-manager)": [[140, "s2", "vector"]], + "(event idle rub-elec-gate)": [ + [33, "v1", "process-drawable"], + [43, "gp", "rigid-body-impact"], + [90, "gp", "rigid-body-impact"] + ], + "(method 34 rub-electric-gate-switch)": [ + [2, "v1", "collide-shape-prim-group"], + [6, "a1", "collide-shape-prim-group"] + ], + "(method 34 rub-tower)": [ + [4, "v1", "collide-shape-prim-group"], + [8, "a1", "collide-shape-prim-group"] + ], + "(code fallen rub-tower)": [[18, "v1", "art-joint-anim"]], + "(code fall rub-tower)": [[33, "v1", "art-joint-anim"]], + "(code unstable rub-tower)": [[20, "v1", "art-joint-anim"]], + "(method 11 rub-elec-gate)": [["_stack_", 16, "res-tag"]], + "birth-func-power-score": [ + [2, "v1", "(pointer int32)"], + [4, "v1", "(pointer int32)"], + [29, "v1", "(pointer int32)"] + ], + "(code die power-game-player)": [ + [51, "v1", "art-joint-anim"], + [104, "v1", "art-joint-anim"] + ], + "power-game-player-init": [[120, "v1", "handle"]], + "(code active power-game-chaser)": [[13, "v1", "art-joint-anim"]], + "(trans active power-game-chaser)": [[[16, 310], "gp", "power-game-object"]], + "(method 30 power-game)": [[[10, 23], "s4", "power-game-player"]], + "(code die power-game-switcher)": [[202, "v1", "art-joint-anim"]], + "(trans active power-game-zapper)": [[[16, 438], "gp", "power-game-zapper"]], + "(code active power-game-zapper)": [[13, "v1", "art-joint-anim"]], + "(code cam-power-game)": [[4, "t9", "(function none)"]], + "(code idle power-game-switcher)": [[169, "v1", "art-joint-anim"]], + "(code active power-game-switcher)": [[16, "v1", "art-joint-anim"]], + "(trans active power-game-switcher)": [ + [[170, 181], "v1", "power-game-object"] + ], + "(code die power-game-zapper)": [[99, "v1", "art-joint-anim"]], + "(trans active power-game-glyph)": [[[16, 27], "v1", "power-game-object"]], + "(trans idle power-game-switcher)": [[[27, 38], "v1", "power-game-object"]], + "(method 31 gun-dummy)": [ + [3, "v1", "tpath-control-frame"], + [5, "v1", "(inline-array tpath-control-frame)"], + [10, "v1", "tpath-control-frame"], + [12, "v1", "(inline-array tpath-control-frame)"], + [17, "v1", "(inline-array tpath-control-frame)"], + [23, "v1", "tpath-control-frame"], + [32, "v1", "tpath-control-frame"], + [36, "v1", "(inline-array tpath-control-frame)"], + [41, "v1", "tpath-control-frame"], + [43, "v1", "(inline-array tpath-control-frame)"], + [48, "v1", "tpath-control-frame"], + [50, "v1", "(inline-array tpath-control-frame)"], + [55, "v1", "tpath-control-frame"], + [57, "v1", "(inline-array tpath-control-frame)"], + [62, "v1", "tpath-control-frame"], + [64, "v1", "(inline-array tpath-control-frame)"] + ], + "generate-next-fire-time": [[18, "v1", "float"]], + "gun-dummy-event-handler": [[[50, 90], "s5", "attack-info"]], + "gun-dummy-gun-aim-jmod-func": [[[2, 10], "s4", "gun-dummy-gun"]], + "(method 30 gun-dummy)": [[26, "v0", "path-control"]], + "(method 33 gun-dummy-explode)": [[73, "a0", "process"]], + "(code open gungame-door)": [[35, "v1", "art-joint-anim"]], + "update-mood-freehq": [[[24, 63], "gp", "freehq-states"]], + "update-mood-hiphog": [[[26, 74], "s5", "hiphog-states"]], + "update-mood-vinroom": [[[24, 141], "gp", "vinroom-states"]], + "update-mood-oracle": [[[19, 135], "s5", "oracle-states"]], + "(method 21 gungame-manager)": [["_stack_", 16, "res-tag"]], + "(method 35 gungame-task-manager)": [["_stack_", 16, "res-tag"]], + "(method 23 gungame-manager)": [[[16, 396], "gp", "hud"]], + "(method 24 gungame-manager)": [[[23, 35], "a1", "training-path"]], + "(method 25 gungame-manager)": [[12, "a0", "training-path"]], + "(trans charging tower-flyer)": [[17, "v1", "process-focusable"]], + "(method 11 tower-flyer-bobber)": [[32, "v1", "float"]], + "(trans riding cast-rider)": [[[16, 23], "a0", "process-focusable"]], + "(event riding cast-rider)": [[22, "v1", "vector"]], + "(trans fleeing tower-flyer)": [[[52, 57], "a1", "process-focusable"]], + "(enter fly-up bt-barrel)": [ + [45, "v1", "float"], + [85, "v1", "float"], + [112, "v1", "float"], + [132, "v1", "float"], + [157, "v1", "float"], + [177, "v1", "float"], + [197, "v1", "float"], + [224, "v1", "float"] + ], + "(method 30 blow-tower-enemy)": [[[5, 36], "s4", "attack-info"]], + "(method 46 tower-flyer)": [ + [[28, 48], "s5", "process-focusable"], + [[206, 211], "a1", "process-focusable"], + [242, "v1", "float"], + [263, "v1", "float"] + ], + "(method 43 tower-flyer)": [[57, "a1", "process-focusable"]], + "(method 41 bt-barrel)": [ + [78, "a0", "process-focusable"], + [81, "a0", "process-focusable"] + ], + "(method 40 bt-barrel)": [[56, "s2", "process-focusable"]], + "(method 42 bt-barrel)": [[36, "a1", "process-focusable"]], + "setup-bt-barrels": [ + [45, "v1", "float"], + [141, "v1", "float"] + ], + "(code jumping-start bt-grunt)": [[14, "v1", "art-joint-anim"]], + "(code jumping bt-grunt)": [[14, "v1", "art-joint-anim"]], + "(code riding-land bt-grunt)": [ + [19, "v1", "art-joint-anim"], + [197, "v1", "art-joint-anim"] + ], + "(code riding-idle-ship bt-grunt)": [ + [369, "v1", "art-joint-anim"], + [30, "v1", "art-joint-anim"], + [112, "v1", "art-joint-anim"], + [198, "v1", "art-joint-anim"], + [284, "v1", "art-joint-anim"] + ], + "(code riding-idle bt-grunt)": [[14, "v1", "art-joint-anim"]], + "(code riding-attack bt-grunt)": [ + [21, "v1", "art-joint-anim"], + [114, "v1", "art-joint-anim"] + ], + "(method 33 bt-roboguard)": [[176, "v1", "float"]], + "bt-roboguard-turret-code": [ + [75, "a1", "art-joint-anim"], + [168, "a1", "art-joint-anim"] + ], + "(method 43 bt-roboguard)": [[51, "v1", "float"]], + "(code hovering bt-mh-flyer)": [ + [14, "v1", "art-joint-anim"], + [45, "v1", "art-joint-anim"], + [76, "v1", "art-joint-anim"] + ], + "(code firing bt-mh-flyer)": [[30, "v1", "art-joint-anim"]], + "(post hovering bt-mh-flyer)": [[6, "t9", "(function none)"]], + "(post charging bt-mh-flyer)": [[6, "t9", "(function none)"]], + "(post fleeing bt-mh-flyer)": [[6, "t9", "(function none)"]], + "(post firing bt-mh-flyer)": [[6, "t9", "(function none)"]], + "bt-grunt-idle-code": [ + [92, "v1", "art-joint-anim"], + [21, "v1", "art-joint-anim"], + [109, "v1", "float"], + [147, "v1", "float"] + ], + "(trans idle bt-grunt)": [ + [[23, 52], "gp", "process-focusable"], + [173, "v1", "float"] + ], + "(enter riding-land bt-grunt)": [[[81, 89], "a0", "process-focusable"]], + "(enter chasing bt-missile)": [[[16, 24], "v1", "process-focusable"]], + "(method 40 bt-missile)": [[[101, 115], "s4", "process-focusable"]], + "(method 51 bt-grunt)": [[[55, 88], "s5", "ragdoll-proc"]], + "(method 52 bt-grunt)": [[[10, 51], "gp", "ragdoll-proc"]], + "(method 196 kg-bombbot)": [[[24, 62], "s5", "process-focusable"]], + "(method 15 hud-hellcat)": [[20, "v1", "float"]], + "(method 22 bt-gun-manager)": [ + [107, "v1", "float"], + [118, "v1", "float"], + [26, "v0", "vector"], + [160, "v0", "vector"], + [181, "v1", "vector"], + [215, "v1", "vector"], + [127, "v1", "float"], + [143, "v1", "float"] + ], + "(method 37 bt-vehicle)": [[[22, 45], "s4", "process-focusable"]], + "(code cam-bt-gun)": [[26, "v0", "handle"]], + "(method 29 bt-vehicle)": [ + [[169, 184], "s4", "attack-info"], + [8, "v1", "float"], + [79, "v1", "float"], + [83, "v1", "float"], + [[116, 123], "a0", "blow-tower-path-cursor"], + [157, "v1", "float"] + ], + "(method 49 bt-hellcat)": [[60, "v1", "float"]], + "(method 29 bt-pickup)": [[92, "v0", "vector"]], + "(method 43 bt-pickup)": [[79, "v1", "float"]], + "(method 38 task-manager-blow-tower)": [ + [584, "v1", "handle"], + [[1092, 1136], "s4", "process-focusable"] + ], + "(method 29 bt-hellcat)": [ + [52, "a0", "bt-gun-manager"], + [56, "a0", "bt-gun-manager"], + [113, "v1", "float"], + [119, "v1", "float"] + ], + "(method 18 bt-gun-manager)": [ + [251, "a0", "process-focusable"], + [[256, 260], "a0", "process-focusable"], + [298, "a0", "process-focusable"], + [[303, 307], "a0", "process-focusable"], + [[382, 416], "s1", "bt-hellcat"], + [[488, 504], "s5", "bt-hellcat"] + ], + "bt-force-show-hud": [ + [22, "v1", "connection"], + [34, "v1", "connection"], + [35, "a0", "process"] + ], + "(method 20 bt-gun-manager)": [ + [15, "v1", "connection"], + [16, "v1", "collide-shape"], + [20, "v1", "collide-shape"], + [37, "a0", "process-focusable"], + [43, "a0", "process-focusable"], + [46, "a0", "process-focusable"], + [321, "v1", "connection"], + [322, "v1", "collide-shape"], + [326, "v1", "collide-shape"], + [343, "a0", "process-focusable"], + [[349, 353], "a0", "process-focusable"], + [626, "v1", "connection"], + [627, "v1", "collide-shape"], + [631, "v1", "collide-shape"], + [648, "a0", "process-focusable"], + [[654, 658], "a0", "process-focusable"], + [927, "a0", "process"], + ["_stack_", 16, "float"], + ["_stack_", 88, "float"], + ["_stack_", 136, "float"], + ["_stack_", 840, "float"], + ["_stack_", 888, "float"], + ["_stack_", 1592, "float"], + ["_stack_", 1640, "float"] + ], + "(method 19 bt-gun-manager)": [ + [[191, 196], "a0", "process-focusable"], + [[50, 55], "a0", "process-focusable"], + [[88, 93], "a0", "process-focusable"] + ], + "(trans mission-debug task-manager-blow-tower)": [ + [[176, 178], "v1", "bt-hellcat"], + [[188, 193], "v1", "bt-pickup"] + ], + "(method 31 bt-hellcat)": [ + [[295, 303], "v1", "bt-gun-manager"], + [[533, 538], "v1", "bt-gun-manager"], + [[718, 726], "a0", "bt-gun-manager"] + ], + "(method 42 bt-vehicle)": [[34, "v1", "float"]], + "(method 46 bt-roboguard)": [[[20, 24], "a0", "process-focusable"]], + "(anon-function 124 blow-tower-obs2)": [[[2, 72], "s3", "bt-roboguard"]], + "(method 49 bt-grunt)": [[34, "v1", "float"]], + "bt-missile-init-by-other": [ + [68, "v1", "float"], + [186, "v1", "float"], + [207, "v1", "float"] + ], + "(method 47 bt-hellcat)": [ + [[105, 108], "v1", "vector"], + [[62, 67], "v1", "bt-gun-manager"] + ], + "(method 50 bt-hellcat)": [[[26, 31], "v1", "bt-gun-manager"]], + "(method 21 bt-gun-manager)": [ + [[52, 64], "v1", "process-focusable"], + [312, "v1", "collide-shape-prim-sphere"] + ], + "(method 30 task-manager-blow-tower)": [[[46, 62], "v1", "blow-tower-clock"]], + "(method 32 bt-vehicle)": [ + ["_stack_", 76, "float"], + ["_stack_", 100, "float"] + ], + "real-wang-texture-anim-func": [[[3, 31], "v1", "mood-context"]], + "(method 24 sky-work)": [ + [256, "s4", "(pointer int32)"], + [261, "s4", "(pointer int32)"] + ], + "(method 28 sky-work)": [ + [143, "s4", "(pointer int32)"], + [148, "s4", "(pointer int32)"] + ], + "(method 36 sky-work)": [ + [81, "s5", "(pointer int32)"], + [86, "s5", "(pointer int32)"] + ], + "(method 37 sky-work)": [ + [67, "s5", "(pointer int32)"], + [72, "s5", "(pointer int32)"] + ], + "(method 38 sky-work)": [[[83, 179], "v1", "(inline-array qword)"]], + "(method 14 sky-work)": [[[80, 256], "s4", "sky-work"]], + "(method 13 sky-work)": [ + [65, "v1", "(pointer uint128)"], + [[70, 77], "a0", "vector4w"], + [[78, 84], "v1", "vector4w"] + ], + "(method 10 trail-graph)": [[16, "v1", "trail-conn-hash-cell"]], + "(method 24 trail-graph)": [[19, "a1", "trail-conn-hash-cell"]], + "(method 28 trail-graph)": [[36, "a1", "int"]], + "(method 30 trail-graph)": [[67, "a2", "int"]], + "(event idle gunship-engine)": [[[4, 19], "v1", "attack-info"]], + "(post hover protect-gunship)": [[5, "t9", "(function none)"]], + "(enter landed protect-gunship)": [[10, "t9", "(function none)"]], + "(enter raising protect-gunship)": [[29, "t9", "(function none)"]], + "(enter lowering protect-gunship)": [[23, "t9", "(function none)"]], + "(post lowering protect-gunship)": [[10, "t9", "(function none)"]], + "(enter enemy-spawning protect-gunship)": [[5, "t9", "(function none)"]], + "(code explode gunship-exploder)": [[10, "v1", "art-joint-anim"]], + "(post enemy-spawning protect-gunship)": [[5, "t9", "(function none)"]], + "(event launch gunship-missile)": [[5, "a0", "vector"]], + "(trans explode gunship-missile)": [ + [75, "s3", "process-focusable"], + [79, "s3", "process-focusable"], + [85, "s3", "process-focusable"] + ], + "(method 44 protect-gunship)": [ + [[228, 239], "s3", "particle-local-space-info"] + ], + "(enter hover protect-gunship)": [[6, "t9", "(function none)"]], + "(post spinning-laser protect-gunship)": [[5, "t9", "(function none)"]], + "(trans spinning-laser protect-gunship)": [[113, "v1", "float"]], + "(enter spinning-laser protect-gunship)": [[8, "t9", "(function none)"]], + "find-reposition-pt": [ + [[35, 40], "v1", "protect-gunship"], + [[113, 119], "v1", "protect-gunship"], + ["_stack_", 44, "float"], + ["_stack_", 56, "float"], + ["_stack_", 76, "float"], + ["_stack_", 80, "float"] + ], + "(method 53 protect-gunship)": [ + [52, "v1", "float"], + [67, "v1", "float"], + [83, "v1", "float"], + [34, "v0", "int"] + ], + "(method 50 protect-gunship)": [[126, "v1", "float"]], + "(method 49 protect-gunship)": [[19, "v1", "float"]], + "(method 52 protect-gunship)": [[[104, 111], "a0", "protect-gunship"]], + "(method 41 protect-gunship)": [ + [[395, 398], "v1", "gunship-engine"], + [467, "v1", "float"] + ], + "(method 37 protect-gunship)": [ + [358, "v1", "float"], + [378, "v1", "float"] + ], + "(method 38 protect-gunship)": [[20, "v1", "float"]], + "gunship-missile-init-by-other": [[136, "v1", "float"]], + "(method 55 protect-gunship)": [[127, "v1", "collide-shape-prim-sphere"]], + "(method 21 prot-crate)": [ + [72, "v1", "float"], + [97, "v1", "float"] + ], + "(method 45 protect-gunship)": [[7, "a1", "int"]], + "(enter fail task-manager-protect-hq)": [ + [26, "v0", "(state resetter-params task-manager-protect-hq)"] + ], + "(trans hostile assault-bombbot)": [[[76, 125], "v1", "process-focusable"]], + "(method 209 assault-bombbot)": [[48, "v1", "process-focusable"]], + "(code wait-for-enemies assault-crimson-guard)": [ + [22, "v1", "art-joint-anim"] + ], + "(trans wait-for-enemies assault-crimson-guard)": [ + [[15, 23], "a0", "process-focusable"] + ], + "(trans active assault-crimson-guard)": [ + [[27, 35], "a0", "process-focusable"] + ], + "(anon-function 36 assault-enemies)": [[[17, 26], "s4", "process-focusable"]], + "(method 212 assault-crimson-guard)": [[4, "a0", "vector"]], + "(code tracking assault-cleanup)": [[[28, 43], "v1", "process-focusable"]], + "(code cower-ground assault-citizen-norm)": [ + [22, "v1", "art-joint-anim"], + [161, "v1", "art-joint-anim"], + [180, "v1", "float"], + [225, "v1", "float"] + ], + "(trans flee-madly assault-citizen-norm)": [ + [41, "v1", "float"], + [68, "v1", "float"] + ], + "(code exit-transport assault-metalhead-flitter)": [ + [14, "v1", "art-joint-anim"] + ], + "(code exit-transport assault-metalhead-grunt)": [ + [14, "v1", "art-joint-anim"] + ], + "(method 212 assault-citizen-norm)": [[28, "a0", "vector"]], + "(method 212 assault-roboguard)": [[16, "a1", "vector"]], + "(method 46 task-manager-city-port-assault)": [[17, "v1", "float"]], + "(method 45 task-manager-city-port-assault)": [[15, "v1", "float"]], + "(enter combat task-manager-city-port-assault)": [ + [[33, 39], "a0", "assault-player-controller"] + ], + "(method 47 task-manager-city-port-assault)": [[31, "v1", "float"]], + "(method 48 task-manager-city-port-assault)": [ + [32, "v1", "float"], + [191, "v1", "float"] + ], + "(method 40 task-manager-city-port-assault)": [ + [[168, 174], "v1", "assault-player-controller"] + ], + "(method 42 task-manager-city-port-assault)": [ + [33, "v1", "float"], + [83, "v1", "float"] + ], + "(method 43 task-manager-city-port-assault)": [ + [[17, 69], "s4", "assault-spawn-cmd"] + ], + "(code going-down precur-switch)": [[10, "v1", "art-joint-anim"]], + "(event idle precur-generator-d-gem)": [ + [6, "a0", "vector"], + [10, "v1", "vector"] + ], + "(code idle precur-generator-d)": [[10, "v1", "art-joint-anim"]], + "(trans idle precur-generator)": [[181, "v1", "float"]], + "(method 23 precur-generator-d)": [ + [61, "a3", "float"], + [28, "a3", "float"], + [94, "a3", "float"] + ], + "(method 11 precur-platform-round)": [ + [[169, 180], "s3", "particle-local-space-info"] + ], + "(event idle precur-door-d)": [ + [[5, 34], "s4", "attack-info"], + [[19, 38], "s3", "attack-info"] + ], + "precur-door-c-handler": [[[3, 5], "v1", "attack-info"]], + "set-precura-generator-light!": [[10, "v1", "precura-states"]], + "update-mood-precura": [[[74, 113], "gp", "precura-states"]], + "set-precura-laser-light!": [ + [[13, 17], "v1", "precura-states"], + [23, "v1", "precura-states"], + [22, "v1", "precura-states"] + ], + "set-precura-bomb-light!": [[[11, 14], "v1", "precura-states"]], + "(post carry precur-bomb)": [[4, "t9", "(function none)"]], + "(post fall precur-bomb)": [[4, "t9", "(function none)"]], + "(enter explode precur-bomb)": [[51, "a0", "process"]], + "(code idle precur-bomb-spawner)": [ + [53, "v1", "art-joint-anim"], + [111, "v1", "art-joint-anim"] + ], + "(method 11 precur-path)": [ + [[141, 145], "a0", "precur-spot-shadow-effect"], + [[130, 141], "v1", "(pointer precur-spot-shadow-effect)"] + ], + "precur-bomb-handler": [ + [[5, 34], "s4", "attack-info"], + [[19, 38], "s3", "attack-info"] + ], + "(enter fall mechblock)": [ + [42, "v0", "carry-info"], + [[43, 47], "a0", "carry-info"] + ], + "(event drag-object mechblock)": [ + [48, "v0", "carry-info"], + [[49, 53], "a0", "carry-info"], + [57, "a0", "vector"], + [79, "a0", "vector"] + ], + "(event carry mechblock)": [[23, "a0", "vector"]], + "(event idle mechblock)": [ + [[20, 27], "a0", "carry-info"], + [[34, 39], "a0", "carry-info"] + ], + "(event idle precur-bomb-spawner)": [ + [[10, 39], "s4", "attack-info"], + [[24, 43], "s3", "attack-info"] + ], + "(enter idle precur-bomb-spawner)": [[15, "v1", "art-joint-anim"]], + "(method 25 precur-laser-beam)": [[5, "v1", "float"]], + "(method 24 precur-laser-beam)": [[6, "v1", "float"]], + "process-drawable-shock-wave-effect": [ + ["_stack_", 624, "(pointer lightning-tracker)"] + ], + "(method 23 precur-path)": [[[35, 58], "a0", "precur-spot-shadow-effect"]], + "init-mood-precurc": [[[3, 10], "v1", "precurc-states"]], + "(post idle precur-bridge-blocks-break)": [ + [53, "gp", "collide-shape-prim-group"], + [61, "gp", "collide-shape-prim-group"] + ], + "(code dormant precur-laser-beam)": [["_stack_", 16, "res-tag"]], + "(method 11 precur-generator-c)": [["_stack_", 16, "res-tag"]], + "(method 11 precur-generator-d)": [["_stack_", 16, "res-tag"]], + "(method 11 precur-bridge-path-break)": [["_stack_", 16, "res-tag"]], + "(method 11 precura-door-a)": [ + [141, "v0", "pair"], + [129, "v0", "pair"] + ], + "(trans idle precur-generator-d)": [ + [33, "v1", "object"], + [[33, 66], "v1", "object"] + ], + "(method 21 lfaccity-pparticle-mover)": [ + [[32, 39], "a1", "process-drawable"] + ], + "update-mood-lfaccity": [[[32, 200], "gp", "lfaccity-states"]], + "(method 11 lfaccity-pparticle-mover)": [["_stack_", 16, "res-tag"]], + "(code idle neon-baron)": [ + [248, "a0", "(array object)"], + [250, "a0", "(array object)"], + [282, "a0", "(array object)"], + [284, "a0", "(array object)"], + [316, "a0", "(array object)"], + [318, "a0", "(array object)"], + [350, "a0", "(array object)"], + [352, "a0", "(array object)"], + [384, "a0", "(array object)"], + [386, "a0", "(array object)"] + ], + "(method 10 neon-baron)": [[11, "s5", "uint"]], + "(method 15 neon-baron)": [[29, "s5", "int"]], + "(method 16 neon-baron)": [[5, "a1", "int"]], + "texture-anim-layer-add-clut-shader": [ + [[23, 30], "a3", "dma-packet"], + [[32, 39], "a3", "gs-gif-tag"], + [49, "a1", "(pointer gs-tex0)"], + [51, "a1", "(pointer gs-reg64)"], + [52, "a1", "(pointer gs-tex1)"], + [54, "a1", "(pointer gs-reg64)"], + [56, "a1", "(pointer gs-test)"], + [58, "a1", "(pointer gs-reg64)"], + [60, "a1", "(pointer gs-clamp)"], + [62, "a1", "(pointer gs-reg64)"], + [64, "a1", "(pointer gs-alpha)"], + [66, "a1", "(pointer gs-reg64)"] + ], + "texture-anim-layer-draw": [[[24, 182], "s4", "(pointer uint128)"]], + "update-texture-anim": [ + [213, "v1", "(pointer uint128)"], + [[214, 230], "t0", "vector4w"], + [[230, 238], "t0", "vector4w"], + [[239, 247], "v1", "vector4w"] + ], + "(method 9 texture-anim-layer)": [ + [5, "v1", "symbol"], + [11, "v1", "symbol"] + ], + "(method 9 texture-anim)": [ + [5, "v1", "symbol"], + [11, "v1", "symbol"], + ["_stack_", 16, "texture-page"] + ], + "shadow-vu1-init-buffer": [[[18, 27], "a0", "dma-packet"]], + "shadow-vu1-add-constants": [ + [[7, 16], "a2", "dma-packet"], + [[20, 66], "v1", "shadow-vu1-constants"], + [[72, 77], "a1", "dma-packet"], + [[82, 94], "a1", "shadow-vu1-data"] + ], + "shadow-vu1-add-matrix": [ + [[11, 19], "a3", "dma-packet"], + [[26, 30], "v1", "matrix"] + ], + "shadow-vu0-upload": [[[16, 18], "a0", "dma-packet"]], + "shadow-make-invert-buf": [[[13, 16], "v1", "dma-packet"]], + "shadow-invert-z-buf": [ + [[4, 8], "a2", "dma-packet"], + [[13, 16], "a2", "gs-gif-tag"], + [27, "t1", "(pointer gs-reg)"], + [28, "t1", "(pointer gs-reg64)"], + [30, "t1", "(pointer gs-reg)"], + [32, "t1", "(pointer gs-frame)"], + [34, "t1", "(pointer gs-reg)"], + [38, "t1", "(pointer gs-reg)"], + [42, "t1", "(pointer gs-reg)"], + [36, "t1", "(pointer gs-zbuf)"], + [40, "t1", "(pointer gs-test)"], + [44, "t1", "(pointer gs-alpha)"], + [45, "t1", "(pointer gs-reg)"], + [47, "t1", "(pointer gs-reg64)"], + [49, "t1", "(pointer gs-reg)"], + [51, "t1", "(pointer gs-rgbaq)"], + [[61, 64], "t2", "gs-gif-tag"], + [89, "t4", "(pointer gs-xyzf)"], + [79, "t4", "(pointer gs-xyzf)"], + [[106, 117], "v1", "(pointer uint64)"] + ], + "shadow-dma-init": [ + [[18, 21], "t4", "dma-packet"], + [[27, 31], "t6", "dma-packet"], + [[36, 39], "t6", "gs-gif-tag"], + [43, "t4", "(pointer gs-reg64)"], + [47, "t4", "(pointer gs-test)"], + [45, "t4", "(pointer gs-reg64)"], + [49, "t4", "(pointer gs-reg64)"], + [51, "t4", "(pointer gs-alpha)"], + [53, "t4", "(pointer gs-reg64)"], + [58, "t4", "(pointer gs-frame)"], + [60, "t4", "(pointer gs-reg64)"], + [64, "t4", "(pointer gs-reg64)"], + [73, "t4", "(pointer gs-reg64)"], + [81, "t4", "(pointer gs-reg)"], + [84, "t4", "(pointer gs-reg)"], + [62, "t4", "(pointer gs-zbuf)"], + [71, "t4", "(pointer gs-xy-offset)"], + [79, "t4", "(pointer gs-tex0)"], + [82, "t4", "(pointer gs-tex1)"], + [85, "t4", "(pointer gs-miptbp)"], + [87, "t4", "(pointer gs-reg)"], + [96, "t4", "(pointer gs-clamp)"], + [[103, 106], "t3", "gs-gif-tag"], + [[122, 125], "t3", "gs-gif-tag"], + [111, "t3", "(pointer gs-prim)"], + [113, "t3", "(pointer gs-rgbaq)"], + [143, "t5", "(pointer gs-xyzf)"], + [156, "t5", "(pointer gs-xyzf)"], + [[167, 170], "a3", "gs-gif-tag"], + [177, "a3", "(pointer gs-test)"], + [179, "a3", "(pointer gs-reg64)"], + [183, "a3", "(pointer gs-reg64)"], + [193, "a3", "(pointer gs-reg64)"], + [190, "a3", "(pointer gs-reg64)"], + [202, "a3", "(pointer gs-reg64)"], + [181, "a3", "(pointer gs-zbuf)"], + [188, "a3", "(pointer gs-frame)"], + [191, "a3", "(pointer uint64)"], + [206, "a3", "(pointer gs-reg64)"], + [213, "a3", "(pointer gs-reg64)"], + [214, "a3", "(pointer uint64)"], + [216, "a3", "(pointer gs-reg64)"], + [211, "a3", "(pointer gs-frame)"], + [204, "a3", "(pointer gs-zbuf)"], + [200, "a3", "(pointer gs-test)"], + [229, "v1", "(pointer uint64)"], + [225, "v1", "(pointer uint64)"], + [230, "v1", "(pointer uint64)"], + [235, "v1", "(pointer uint64)"] + ], + "shadow-dma-end": [ + [34, "a1", "dma-packet"], + [33, "a1", "dma-packet"], + [36, "a1", "dma-packet"], + [25, "v1", "(pointer uint64)"], + [41, "v1", "dma-packet"], + [42, "v1", "(pointer uint64)"], + [[113, 116], "a0", "gs-gif-tag"], + [[102, 107], "a0", "dma-packet"], + [120, "a0", "(pointer uint64)"], + [122, "a0", "(pointer gs-reg64)"], + [126, "a0", "(pointer gs-reg64)"], + [133, "a0", "(pointer gs-reg64)"], + [134, "a0", "(pointer uint64)"], + [136, "a0", "(pointer gs-reg64)"], + [137, "a0", "(pointer uint64)"], + [139, "a0", "(pointer gs-reg64)"], + [124, "a0", "(pointer gs-test)"], + [131, "a0", "(pointer gs-frame)"], + [[146, 151], "a1", "dma-packet"], + [201, "t0", "(pointer uint64)"], + [214, "t0", "(pointer uint64)"], + [237, "t0", "(pointer uint64)"], + [250, "t0", "(pointer uint64)"], + [[156, 159], "a1", "gs-gif-tag"], + [160, "a1", "(pointer gs-prim)"], + [161, "a1", "(pointer gs-rgbaq)"], + [[166, 169], "a1", "(inline-array gs-gif-tag)"], + [268, "v1", "(pointer uint64)"], + [264, "v1", "(pointer uint64)"], + [269, "v1", "(pointer uint64)"], + [274, "v1", "(pointer uint64)"] + ], + "shadow-execute-all": [ + [[56, 63], "v1", "shadow-dcache"], + [114, "v1", "shadow-dcache"], + [119, "a0", "uint32"], + [[191, 249], "gp", "shadow-dcache"], + [96, "v1", "shadow-dcache"] + ], + "real-fog-texture-anim-func": [[[6, 160], "s2", "(pointer uint32)"]], + "calculate-basis-functions-vector!": [ + [[8, 20], "v1", "(pointer float)"], + [[0, 60], "f1", "float"] + ], + "ellipsoid-random-point-on!": [ + [19, "v1", "float"], + [44, "v1", "float"] + ], + "curve-evaluate!": [[62, "s5", "pointer"]], + "(method 16 setting-control)": [[[5, 27], "s4", "connection"]], + "(method 3 game-text-info)": [[34, "v1", "game-text"]], + "hyphenate-word": [[15, "a0", "string"]], + "update-tracking-position": [ + [[31, 47], "s4", "part-spawner"], + [[53, 79], "s4", "process-drawable"] + ], + "update-pitch-with-doppler": [[[26, 49], "v1", "process-focusable"]] +} diff --git a/decompiler/config/jakx/pal/var_names.jsonc b/decompiler/config/jakx/pal/var_names.jsonc new file mode 100644 index 00000000000..06c8324a3cb --- /dev/null +++ b/decompiler/config/jakx/pal/var_names.jsonc @@ -0,0 +1,2139 @@ +{ + "(method 0 inline-array-class)": { + "args": ["allocation", "type-to-make", "count"] + }, + "(method 9 inline-array-class)": { + "args": ["object-to-insert"] + }, + "(method 3 inline-array-class)": { + "args": ["idx-to-remove"] + }, + "identity": { + "args": ["obj"] + }, + "1/": { + "args": ["x"] + }, + "+": { + "args": ["a", "b"] + }, + "-": { + "args": ["a", "b"] + }, + "*": { + "args": ["a", "b"] + }, + "/": { + "args": ["a", "b"] + }, + "ash": { + "args": ["x", "shift-amount"] + }, + "mod": { + "args": ["a", "b"] + }, + "rem": { + "args": ["a", "b"] + }, + "abs": { + "args": ["x"] + }, + "min": { + "args": ["a", "b"] + }, + "max": { + "args": ["a", "b"] + }, + "logior": { + "args": ["a", "b"] + }, + "logand": { + "args": ["a", "b"] + }, + "lognor": { + "args": ["a", "b"] + }, + "logxor": { + "args": ["a", "b"] + }, + "lognot": { + "args": ["x"] + }, + "basic-type?": { + "args": ["obj", "typ"] + }, + "type-type?": { + "args": ["check-type", "parent-type"] + }, + "type?": { + "args": ["obj", "desired-type"] + }, + "find-parent-method": { + "args": ["typ", "method-id"] + }, + "ref&": { + "args": ["list", "idx"] + }, + "ref": { + "args": ["list", "idx"] + }, + "last": { + "args": ["list"] + }, + "member": { + "args": ["obj-to-find", "list"] + }, + "nmember": { + "args": ["obj-to-find", "list"] + }, + "assoc": { + "args": ["key", "assoc-list"] + }, + "assoce": { + "args": ["key", "assoc-list"] + }, + "nassoc": { + "args": ["key", "assoc-list"] + }, + "nassoce": { + "args": ["key", "assoc-list"] + }, + "append!": { + "args": ["list", "new-obj"] + }, + "delete!": { + "args": ["obj", "list"] + }, + "delete-car!": { + "args": ["car-to-match", "list"] + }, + "insert-cons!": { + "args": ["new-obj", "list"] + }, + "sort": { + "args": ["list", "compare-func"] + }, + "string->symbol-debug": { + "args": ["str"] + }, + "symbol->string-debug": { + "args": ["sym"] + }, + "symbol->hash": { + "args": ["sym"] + }, + "mem-copy!": { + "args": ["dst", "src", "bytes"] + }, + "qmem-copy<-!": { + "args": ["dst", "src", "qwc"] + }, + "qmem-copy->!": { + "args": ["dst", "src", "qwc"] + }, + "qmem-clear!": { + "args": ["dst", "qwc"] + }, + "mem-set32!": { + "args": ["dst", "word-count", "value"] + }, + "mem-or!": { + "args": ["dst", "src", "bytes"] + }, + "fact": { + "args": ["x"] + }, + "print": { + "args": ["obj"] + }, + "printl": { + "args": ["obj"] + }, + "inspect": { + "args": ["obj"] + }, + "mem-print": { + "args": ["ptr", "word-count"] + }, + "print-tree-bitmask": { + "args": ["mask", "count"] + }, + "valid?": { + "args": [ + "obj", + "expected-type", + "err-msg-str", + "allow-false", + "err-msg-dest" + ] + }, + "(method 0 process-tree)": { + "args": ["allocation", "type-to-make", "name"] + }, + "(method 9 process-tree)": { + "args": ["this", "active-tree", "name", "stack-pointer"] + }, + "(method 9 process)": { + "args": ["this", "active-tree", "name", "stack-pointer"] + }, + "(method 10 process-tree)": { + "args": ["this", "ent"] + }, + "(method 0 clock)": { + "args": ["allocation", "type-to-make", "index"] + }, + "(method 9 clock)": { + "args": ["this", "rate"] + }, + "(method 16 clock)": { + "args": ["this", "xor-val"] + }, + "(method 17 clock)": { + "args": ["this", "xor-val"] + }, + "(method 18 clock)": { + "args": ["this", "xor-val"] + }, + "(method 19 clock)": { + "args": ["this", "xor-val"] + }, + "(method 20 clock)": { + "args": ["this", "xor-val"] + }, + "(method 21 clock)": { + "args": ["this", "xor-val"] + }, + "(method 22 clock)": { + "args": ["this", "xor-val"] + }, + "(method 23 clock)": { + "args": ["this", "xor-val"] + }, + "(method 9 thread)": { + "args": ["this", "size-bytes"] + }, + "(method 0 cpu-thread)": { + "args": [ + "allocation", + "type-to-make", + "proc", + "name", + "stack-size", + "stack-top" + ] + }, + "(method 0 dead-pool)": { + "args": ["allocation", "type-to-make", "num-proc", "process-size", "name"] + }, + "(method 15 dead-pool)": { + "args": ["this", "proc-type", "proc-size", "unk"] + }, + "(method 15 dead-pool-heap)": { + "args": ["this", "proc-type", "proc-size", "unk"] + }, + "(method 16 dead-pool)": { + "args": ["this", "proc"] + }, + "(method 16 dead-pool-heap)": { + "args": ["this", "proc"] + }, + "(method 0 dead-pool-heap)": { + "args": ["allocation", "type-to-make", "name", "max-num-proc", "heap-size"] + }, + "(method 17 dead-pool-heap)": { + "args": ["this", "allocation", "heap-size"] + }, + "(method 18 dead-pool-heap)": { + "args": ["this", "compact-count"] + }, + "(method 19 dead-pool-heap)": { + "args": ["this", "proc"] + }, + "(method 20 dead-pool-heap)": { + "args": ["this", "count"] + }, + "(method 25 dead-pool-heap)": { + "args": ["this", "first-rec"] + }, + "(method 26 dead-pool-heap)": { + "args": ["this", "rec"] + }, + "(method 27 dead-pool-heap)": { + "args": ["this", "first-rec"] + }, + "(method 28 dead-pool-heap)": { + "args": ["this", "size"] + }, + "(method 0 protect-frame)": { + "args": ["stack-addr", "type-to-make", "exit-func"] + }, + "(method 0 sql-result)": { + "args": ["allocation", "type-to-make", "num-elts"] + }, + "load-package": { + "args": ["package-name", "heap"] + }, + "unload-package": { + "args": ["package-name"] + }, + "inspect-process-heap": { + "args": ["proc"] + }, + "method-state": { + "args": ["typ", "state-name"] + }, + "process-by-name": { + "args": ["process-name", "tree"] + }, + "process-not-name": { + "args": ["name", "tree"] + }, + "process-count": { + "args": ["tree"] + }, + "kill-by-name": { + "args": ["name", "tree"] + }, + "kill-by-type": { + "args": ["typ", "tree"] + }, + "kill-not-name": { + "args": ["name", "tree"] + }, + "kill-not-type": { + "args": ["typ", "tree"] + }, + "kill-by-type-inherited": { + "args": ["typ", "tree"] + }, + "iterate-process-tree": { + "args": ["tree", "callback", "context"] + }, + "execute-process-tree": { + "args": ["tree", "callback", "context"] + }, + "search-process-tree": { + "args": ["tree", "callback"] + }, + "inspect-process-tree": { + "args": ["tree", "depth", "mask", "detail"] + }, + "previous-brother": { + "args": ["tree"] + }, + "change-parent": { + "args": ["proc-to-change", "new-parent"] + }, + "change-to-last-brother": { + "args": ["proc"] + }, + "matrix-transpose!": { + "args": ["dst", "src"] + }, + "matrix-axis-sin-cos!": { + "args": ["dst", "axis", "s", "c"] + }, + "vector-rad<-vector-deg/2!": { + "args": ["out", "in"] + }, + "vector-rad<-vector-deg!": { + "args": ["out", "in"] + }, + "copy-string<-string": { + "args": ["dst", "src"] + }, + "string=": { + "args": ["a", "b"] + }, + "string-prefix=": { + "args": ["prefix", "str"] + }, + "charp-prefix=": { + "args": ["prefix", "str"] + }, + "string-suffix=": { + "args": ["suffix", "str"] + }, + "string-position": { + "args": ["substr", "base-str"] + }, + "string-charp=": { + "args": ["a", "b"] + }, + "name=": { + "args": ["a", "b"] + }, + "copyn-string<-charp": { + "args": ["dst", "src", "num-chars"] + }, + "string<-charp": { + "args": ["dst", "src"] + }, + "charp<-string": { + "args": ["dst", "src"] + }, + "copyn-charp<-string": { + "args": ["dst", "src", "len"] + }, + "copy-charp<-charp": { + "args": ["dst", "src"] + }, + "cat-string<-string": { + "args": ["dst", "src"] + }, + "catn-string<-charp": { + "args": ["dst", "src", "num-chars"] + }, + "cat-string<-string_to_charp": { + "args": ["dst", "src", "stop-ptr"] + }, + "append-character-to-string": { + "args": ["str", "char"] + }, + "charp-basename": { + "args": ["str"] + }, + "clear": { + "args": ["str"] + }, + "string?": { + "args": ["a", "b"] + }, + "string<=?": { + "args": ["a", "b"] + }, + "string>=?": { + "args": ["a", "b"] + }, + "game-task->string": { + "args": ["task"], + "vars": { + "v1-0": "val" + } + }, + "file-info-correct-version?": { + "args": ["file", "kind", "version-override"], + "vars": { + "s5-0": "major", + "v1-1": "file-kind", + "s4-0": "type" + } + }, + "make-vfile-name": { + "args": ["kind", "name"] + }, + "make-file-name": { + "args": ["kind", "name", "ag-version-override", "arg3"] + }, + "file-stream-read-string": { + "args": ["fs", "str"] + }, + "(method 0 file-stream)": { + "args": ["obj", "arg1", "file-name", "mode"] + }, + "service-cpads": { + "vars": { + "gp-0": "pads", + "s5-0": "pad-idx", + "s4-0": "pad", + "s3-0": "motor-idx", + "s3-1": "buttons-pressed", + "v1-123": "lang", + "v1-135": "territory" + } + }, + "service-keybd": { + "vars": { + "gp-0": "keyboard", + "v1-0": "key-idx" + } + }, + "service-mouse": { + "vars": { + "gp-0": "mouse" + } + }, + "(method 0 dma-buffer)": { + "args": ["allocation", "type-to-make", "size-bytes"] + }, + "dma-buffer-inplace-new": { + "args": ["dma-buff", "size-bytes"] + }, + "dma-buffer-length": { + "args": ["dma-buf"] + }, + "dma-buffer-free": { + "args": ["dma-buf"] + }, + "dma-buffer-add-vu-function": { + "args": ["dma-buf", "vu-func", "flush-path-3"] + }, + "dma-buffer-send": { + "args": ["chan", "buf"] + }, + "dma-buffer-send-chain": { + "args": ["chan", "buf"] + }, + "dma-buffer-patch-buckets": { + "args": ["base", "count"] + }, + "dma-buffer-add-buckets": { + "args": ["dma-buf", "bucket-count"] + }, + "dma-bucket-insert-tag": { + "args": ["buckets", "bucket", "start-tag", "end-tag-to-patch"] + }, + "disasm-vif-details": { + "args": ["fmt-dest", "vif-data", "unpack-cmd", "unpack-count"] + }, + "disasm-vif-tag": { + "args": ["tag", "count", "format-dest", "details?"] + }, + "disasm-dma-tag": { + "args": ["tag", "format-dest"] + }, + "disasm-dma-list": { + "args": ["data", "mode", "verbose", "stream", "expected-size"] + }, + "gs-set-default-store-image": { + "args": [ + "packet", + "source-vram", + "width", + "tex-fmt", + "ssax", + "ssay", + "rrw", + "rrh" + ] + }, + "store-image": { + "args": ["work"] + }, + "texture-bpp": { + "args": ["tex-format"] + }, + "texture-qwc": { + "args": ["w", "h", "tex-format"] + }, + "physical-address": { + "args": ["addr"] + }, + "dma-buffer-add-ref-texture": { + "args": ["dma-buf", "tex-data-ptr", "w", "h", "tex-format"] + }, + "gs-find-block": { + "args": ["bx", "by", "tex-format"] + }, + "gs-page-width": { + "args": ["tex-format"] + }, + "gs-page-height": { + "args": ["tex-format"] + }, + "gs-block-width": { + "args": ["tex-format"] + }, + "gs-block-height": { + "args": ["tex-format"] + }, + "gs-largest-block": { + "args": ["w", "h", "tex-format"] + }, + "gs-blocks-used": { + "args": ["w", "h", "tex-format"] + }, + "texture-page-default-allocate": { + "args": ["pool", "page", "heap", "page-id"] + }, + "texture-page-common-allocate": { + "args": ["pool", "page", "heap", "page-id"] + }, + "texture-page-font-allocate": { + "args": ["pool", "page", "heap", "page-id"] + }, + "texture-page-common-boot-allocate": { + "args": ["pool", "page", "heap", "page-id"] + }, + "upload-vram-data": { + "args": ["dma-buf", "dest", "data-ptr", "h", "w"] + }, + "upload-vram-pages": { + "args": ["pool", "pool-segment", "page", "mode", "bucket"] + }, + "update-vram-pages": { + "args": ["pool", "pool-segment", "page", "mode"] + }, + "upload-vram-pages-pris": { + "args": ["pool", "pool-segment", "page", "bucket", "mask"] + }, + "texture-page-level-allocate": { + "args": ["pool", "page", "heap", "page-id"] + }, + "texture-page-size-check": { + "args": ["pool", "lev", "print?"] + }, + "upload-textures": { + "args": ["pool"] + }, + "texture-relocate": { + "args": ["dma-buf", "tex", "dest", "tex-format", "clut-dest"] + }, + "texture-page-login": { + "args": ["id", "alloc-func", "heap"] + }, + "lookup-texture-by-id": { + "args": ["id"] + }, + "lookup-texture-by-id-fast": { + "args": ["id"] + }, + "lookup-texture-by-name": { + "args": ["tex-name", "page-name", "page-out"] + }, + "lookup-texture-id-by-name": { + "args": ["tex-name", "page-name"] + }, + "lookup-level-texture-by-name": { + "args": ["tex-name", "lev", "page-out"] + }, + "lookup-tex-id-from-texture": { + "args": ["tex"] + }, + "lookup-level-texture-id-by-name": { + "args": ["tex-name", "lev", "lev-page-idx"] + }, + "link-texture-by-id": { + "args": ["id", "shader"] + }, + "adgif-shader-update!": { + "args": ["shader", "tex"] + }, + "hack-texture": { + "args": ["tex"] + }, + "adgif-shader-login": { + "args": ["shader"] + }, + "adgif-shader-login-no-remap": { + "args": ["shader"] + }, + "adgif-shader-login-fast": { + "args": ["shader"] + }, + "adgif-shader-login-no-remap-fast": { + "args": ["shader"] + }, + "adgif-shader<-texture-simple!": { + "args": ["shader", "tex"] + }, + "set-dirty-mask!": { + "args": ["lev", "mask-idx", "m0", "m1"] + }, + "(method 13 texture-pool)": { + "args": ["this", "lev", "texture-page-count", "texture-ids"] + }, + "(method 14 texture-pool)": { + "args": ["pool", "lev", "category", "bucket"] + }, + "(method 15 texture-pool)": { + "args": ["this", "size"] + }, + "(method 16 texture-pool)": { + "args": ["this", "segment", "size"] + }, + "(method 17 texture-pool)": { + "args": ["this", "page"] + }, + "(method 18 texture-pool)": { + "args": ["this", "id"] + }, + "(method 7 texture-page)": { + "args": ["this", "heap", "filename"] + }, + "(method 9 texture-page)": { + "args": ["this", "heap"] + }, + "(method 11 texture-page)": { + "args": ["this", "new-dest", "seg-id"] + }, + "(method 12 texture-page)": { + "args": ["page", "buf", "mode"] + }, + "(method 13 texture-page)": { + "args": ["this", "mode"] + }, + "merc-fragment-fp-data": { + "args": ["frag"] + }, + "show-mc-info": { + "args": ["buf"], + "vars": { + "s5-0": "slot", + "s4-0": "slot-idx" + } + }, + "(method 17 res-lump)": { + "args": ["this", "tag", "arg2"] + }, + "(method 20 res-lump)": { + "args": ["this", "arg1", "tag-pair", "arg3"] + }, + "(method 9 res-lump)": { + "args": ["this", "name", "mode", "time"] + }, + "(method 15 res-lump)": { + "vars": { + "s5-0": ["tag-pair", "res-tag-pair"], + "s2-0": "existing-tag", + "s3-0": "data-size", + "v1-25": "resource-mem" + } + }, + "(method 10 smush-control)": { + "vars": { + "f30-0": "elapsed-time", + "f0-2": "period" + } + }, + "(method 12 smush-control)": { + "args": [ + "this", + "amplitude", + "period", + "duration", + "damp-amplitude", + "damp-period", + "clock" + ] + }, + "(method 11 smush-control)": { + "vars": { + "f30-0": "elapsed-time", + "f0-2": "period" + } + }, + "(method 10 collide-mesh-cache)": { + "args": ["this", "id"] + }, + "(method 11 touching-prims-entry-pool)": { + "vars": { + "v1-0": "prev", + "a1-0": "current", + "a2-0": "next" + } + }, + "(method 0 prim-strip)": { + "args": ["allocation", "type-to-make", "num-vertices", "tex-id", "tex-name"] + }, + "num-func-loop-set!": { + "args": ["chan", "frame"] + }, + "num-func-seek!": { + "args": ["chan", "arg1", "arg2", "arg3"] + }, + "cspace-by-name-no-fail": { + "args": ["proc", "name"] + }, + "cspace-index-by-name-no-fail": { + "args": ["proc", "name"], + "vars": { + "v0-0": "idx" + } + }, + "num-func-identity": { + "args": ["chan", "arg1", "arg2", "arg3"] + }, + "num-func-loop!": { + "args": ["chan", "arg1", "arg2", "arg3"] + }, + "num-func-none": { + "args": ["chan", "arg1", "arg2", "arg3"] + }, + "num-func-+!": { + "args": ["chan", "arg1", "arg2", "arg3"] + }, + "num-func--!": { + "args": ["chan", "arg1", "arg2", "arg3"] + }, + "joint-channel-float-delete!": { + "args": ["chan"] + }, + "(method 21 process-focusable)": { + "vars": { + "gp-0": "cshape" + }, + "args": ["this", "mode"] + }, + "(method 20 process-focusable)": { + "vars": { + "v1-0": "mask", + "v0-0": ["search-flag", "search-info-flag"] + } + }, + "(method 10 focus)": { + "args": ["this", "proc"], + "vars": { + "s5-0": "root", + "v1-2": "cshape" + } + }, + "(method 11 focus)": { + "args": ["this", "cspec"] + }, + "(method 12 focus)": { + "args": ["this", "proc"] + }, + "(method 13 effect-control)": { + "args": ["this", "offset"] + }, + "(method 0 effect-control)": { + "args": ["allocation", "type-to-make", "proc"] + }, + "(method 0 joint-mod-spinner)": { + "args": ["allocation", "type-to-make", "proc", "bone-idx", "axis", "rate"] + }, + "(method 9 joint-mod-base)": { + "args": ["this", "proc", "bone-idx", "flags"] + }, + "joint-mod-debug-draw": { + "args": ["jmod"] + }, + "joint-mod-spinner-callback": { + "args": ["bone-cspace", "joint-transform"] + }, + "joint-mod-rotate-local-callback": { + "args": ["bone-cspace", "joint-transform"] + }, + "vector<-cspace2!": { + "args": ["output-vec", "input-cspace"] + }, + "joint-mod-rotate-world-callback": { + "args": ["bone-cspace", "joint-transform"] + }, + "joint-mod-set-local-callback": { + "args": ["bone-cspace", "joint-transform"] + }, + "joint-mod-add-local-callback": { + "args": ["bone-cspace", "joint-transform"] + }, + "joint-mod-set-world-callback": { + "args": ["bone-cspace", "joint-trasnform"] + }, + "joint-mod-set-world-no-trans-callback": { + "args": ["bone-cspace", "joint-transform"] + }, + "joint-mod-blend-local-callback": { + "args": ["bone-cspace", "joint-transform"] + }, + "joint-mod-blend-world-callback": { + "args": ["bone-cspace", "joint-transform"] + }, + "spawn-projectile": { + "args": ["proj-type", "params", "parent-proc-tree", "pool"] + }, + "(top-level-login eye-h)": { + "vars": { + "a0-11": "eye-ctrl", + "v1-5": "ctrl-idx", + "a1-11": "eye-idx", + "a2-11": "shader-idx" + } + }, + "free-eye-index": { + "args": ["idx"] + }, + "(method 0 rpc-buffer)": { + "args": ["allocation", "type-to-make", "elt-size", "elt-count"] + }, + "(method 0 rpc-buffer-pair)": { + "args": ["allocation", "type-to-make", "elt-size", "elt-count", "rpc-port"] + }, + "(method 9 rpc-buffer-pair)": { + "args": ["this", "fno", "recv-buffer", "recv-buffer-size"] + }, + "(method 12 rpc-buffer-pair)": { + "args": ["this", "print-stall-warning"] + }, + "(method 0 path-control)": { + "args": [ + "allocation", + "type-to-make", + "proc", + "lump-name", + "lump-time", + "lump-actor", + "must-exist" + ] + }, + "(method 0 curve-control)": { + "args": [ + "allocation", + "type-to-make", + "proc", + "lump-name", + "lump-time", + "lump-actor", + "must-exist" + ] + }, + "point-poly-intersection?": { + "args": ["mesh", "pt", "num-verts", "verts"] + }, + "str-load": { + "args": ["name", "chunk-idx", "dest-addr", "max-len"] + }, + "str-load-status": { + "args": ["maxlen-out"] + }, + "str-play-async": { + "args": ["name", "id", "volume", "group"] + }, + "str-play-stop": { + "args": ["name", "id"] + }, + "str-play-queue": { + "args": ["name0", "name1", "name2", "name3", "ids", "mask"] + }, + "str-ambient-play": { + "args": ["name"] + }, + "str-ambient-stop": { + "args": ["name"] + }, + "dgo-load-begin": { + "args": ["name", "buffer1", "buffer2", "buffer-top"] + }, + "dgo-load-get-next": { + "args": ["done-out"] + }, + "dgo-load-continue": { + "args": ["buffer1", "buffer2", "buffer-top"] + }, + "find-temp-buffer": { + "args": ["size"] + }, + "dgo-load-link": { + "args": [ + "object-file", + "heap", + "end-of-buffer", + "print-login", + "loaded-from-top" + ] + }, + "destroy-mem": { + "args": ["start", "end"] + }, + "sound-name=": { + "args": ["a", "b"] + }, + "str-id-is-playing?": { + "args": ["id"] + }, + "current-str-pos": { + "args": ["id"] + }, + "current-str-status": { + "args": ["id"] + }, + "is-ramdisk-loaded?": { + "args": ["name"] + }, + "sound-bank-iop-store": { + "args": ["name"] + }, + "sound-bank-iop-free": { + "args": ["name"] + }, + "sound-bank-load": { + "args": ["name", "mode", "priority"] + }, + "sound-bank-load-from-iop": { + "args": ["name"] + }, + "sound-bank-load-from-ee": { + "args": ["name", "addr"] + }, + "sound-bank-unload": { + "args": ["name"] + }, + "sound-music-load": { + "args": ["name"] + }, + "set-language": { + "args": ["lang"] + }, + "sound-set-stereo-mode": { + "args": ["mode"] + }, + "sound-command->string": { + "args": ["cmd"] + }, + "sound-trans-convert": { + "args": ["int-trans", "meter-trans"] + }, + "sound-unit-vector-convert": { + "args": ["int-unit-vector", "float-unit-vector"] + }, + "sound-angle-convert": { + "args": ["float-angle"] + }, + "string->sound-name": { + "args": ["str"] + }, + "sound-name->string": { + "args": ["name"] + }, + "sound-set-volume": { + "args": ["group", "vol"] + }, + "sound-set-reverb": { + "args": ["reverb", "left", "right", "core"] + }, + "sound-set-ear-trans": { + "args": ["ear0", "ear1", "cam", "fwd", "left", "scale"] + }, + "sound-play-by-name": { + "args": ["name", "id", "vol", "pitch", "bend", "group", "trans"] + }, + "sound-play-by-spec": { + "args": ["spec", "name", "trans"] + }, + "sound-pause": { + "args": ["id"] + }, + "sound-stop": { + "args": ["id"] + }, + "sound-continue": { + "args": ["id"] + }, + "sound-group-pause": { + "args": ["group"] + }, + "sound-group-stop": { + "args": ["group"] + }, + "sound-group-continue": { + "args": ["group"] + }, + "sound-set-flava": { + "args": ["flava", "excitement"] + }, + "sound-set-midi-reg": { + "args": ["reg", "val"] + }, + "sound-set-fps": { + "args": ["fps"] + }, + "show-iop-info": { + "args": ["dma"] + }, + "show-iop-memory": { + "args": ["dma"] + }, + "ear-trans": { + "args": ["mode"] + }, + "loader-test-command": { + "args": ["cmd", "param"] + }, + "doppler-pitch-shift": { + "args": ["sound-pos", "sound-vel"] + }, + "(method 0 ambient-sound)": { + "args": ["allocation", "type-to-make", "spec", "trans", "lump-time"] + }, + "(method 10 ambient-sound)": { + "args": ["this", "new-sound"] + }, + "(method 11 ambient-sound)": { + "args": ["this", "new-trans"] + }, + "(method 12 ambient-sound)": { + "args": ["this", "new-vol"] + }, + "clear-mood-times": { + "args": ["mood-ctx"], + "vars": { + "v1-0": "idx" + } + }, + "(method 13 mood-control)": { + "args": ["this", "target-interp", "rate-interp", "set-current-interp?"], + "vars": { + "f0-1": "clamped-interp" + } + }, + "light-slerp": { + "args": ["light-out", "light-a", "light-b", "alpha"], + "vars": { + "s3-0": "clamped-alpha", + "f0-2": "extra-x-a", + "f1-2": "extra-x-b" + } + }, + "light-group-slerp": { + "args": ["light-group-out", "light-group-a", "light-group-b", "alpha"], + "vars": { + "s2-0": "group-idx" + } + }, + "light-group-process!": { + "args": ["vu-lights", "light-group", "vec1", "vec2"] + }, + "vu-lights-default!": { + "args": ["lights"] + }, + "lookup-light-sphere-by-name": { + "args": ["name", "hash"], + "vars": { + "s4-0": "num-lights", + "s3-0": "light" + } + }, + "light-merge!": { + "args": ["out", "other"] + }, + "light-group-scale!": { + "args": ["group", "backup-ptr", "scale"], + "vars": { + "arg1": "other", + "v1-4": "light-idx" + } + }, + "light-group-madd!": { + "args": ["group", "backup-ptr", "other", "scalar"], + "vars": { + "s4-0": "new-light", + "f30-0": "ambi-scaled", + "f24-0": "dir0-scaled", + "f26-0": "dir1-scaled", + "f28-0": "dir2-scaled" + } + }, + "light-group-lerp!": { + "args": ["group", "backup-ptr", "other", "scalar"] + }, + "shadow-info-copy!": { + "args": ["dest", "src"], + "vars": { + "v1-0": "light-idx" + } + }, + "init-mood-control": { + "args": ["ctrl"] + }, + "init-overide-table": { + "args": ["table"] + }, + "print-mood-tables": { + "vars": { + "v1-2": "data-idx", + "gp-0": "_color-idx", + "v1-5": "color-idx", + "gp-1": "_fog-idx", + "v1-33": "fog-idx" + } + }, + "desaturate-mood-colors": { + "vars": { + "a0-8": ["mood-colors", "(inline-array mood-color)"], + "v1-1": "data-idx", + "a1-3": "color-data", + "f1-2": "max-light-color", + "f0-4": "max-0th-light-color", + "gp-1": "_color-idx", + "v1-4": "color-idx" + } + }, + "desaturate-mood-fog": { + "vars": { + "arg0": "table-ptr", + "v1-2": "data-idx", + "a0-5": "fog-data", + "f0-2": "max-fog-val", + "gp-1": "_fog-idx", + "v1-5": "fog-idx" + } + }, + "vector-xz-normalize!": { + "args": ["vec", "arg1"] + }, + "(method 10 texture-page)": { + "args": ["this", "num-segments", "upload-offset"], + "vars": { + "v1-0": "offset", + "a2-1": "i" + } + }, + "(method 0 align-control)": { + "vars": { + "v0-0": ["this", "align-control"] + } + }, + "flatten-joint-control-to-spr": { + "args": ["jc"], + "vars": { + "s5-0": "chan-count", + "f0-0": "one", + "v1-2": "chan-float-offset", + "a2-0": ["chan-vector-ptr", "(inline-array vector)"], + "a0-2": "interp2-selected-idx", + "a1-0": "chan-idx", + "a3-2": "chan", + "a3-3": ["flt1", "(pointer float)"], + "f1-0": "interp2-selected-weight1", + "a2-1": ["prev-chan-ptr", "(inline-array vector)"], + "f2-2": "interp2-selected-weight2", + "f1-2": "one-minus-interp2", + "a2-2": ["chans-to-stack", "(inline-array vector)"], + "s4-0": "upload-count", + "s3-0": "upload-chan-idx", + "v1-11": "upload-chan", + "s2-0": "anim", + "f0-2": "frame-num", + "s1-0": "int-frame-num", + "f30-0": "frame-frac", + "s0-0": "last-frame", + "v1-20": "upload" + } + }, + "matrix-from-joint-anim-frame": { + "args": ["jacc", "joint-idx", "frame-idx"], + "vars": { + "v1-1": "fixed-matrix", + "v0-0": "frame-matrix" + } + }, + "matrix-from-control-channel!": { + "args": ["dest-mat", "requested-joint", "chan"], + "vars": { + "s4-0": "jacc", + "s5-0": "joint-num", + "f30-0": "frame-num", + "a2-3": "mat", + "s3-1": "first-mat", + "a2-7": "second-mat", + "f0-9": "mat-blend" + } + }, + "joint-anim-login": { + "args": ["jad"] + }, + "joint-anim-inspect-elt": { + "args": ["ja", "frame"] + }, + "jacc-mem-usage": { + "args": ["jacc", "mem-block", "flags"] + }, + "joint-control-cleanup": { + "args": ["jc", "heap", "ja"] + }, + "joint-control-channel-eval": { + "args": ["jcc"] + }, + "joint-control-channel-eval!": { + "args": ["jcc", "num-func"] + }, + "joint-control-channel-group-eval!": { + "args": ["jcc", "ja", "num-func"] + }, + "joint-control-channel-group!": {}, + "joint-control-copy!": { + "args": ["dst", "src"] + }, + "joint-control-remap!": { + "args": [ + "jc", + "dst-art-group", + "parent-art-group", + "remap-list", + "seed", + "prefix" + ] + }, + "matrix-from-control-pair!": { + "args": ["matrix-to-modify", "jcc", "jnt", "active-frame-interp"] + }, + "matrix-from-control!": { + "args": ["mat-stack", "jnt", "jc", "mode"] + }, + "cspace<-cspace!": { + "args": ["dst", "src"] + }, + "cspace<-cspace-normalized!": { + "args": ["dst", "src"] + }, + "cspace<-parent-joint!": { + "args": ["dst", "proc", "parent-idx"] + }, + "cspace<-rot-yxy!": { + "args": ["dst", "src"] + }, + "cspace<-transform-yxy!": { + "args": ["dst", "src"] + }, + "cspace<-transformq!": { + "args": ["dst", "src"] + }, + "cspace<-transformq+trans!": { + "args": ["dst", "src", "extra-trans"] + }, + "cspace<-transformq+world-trans!": { + "args": ["dst", "src", "extra-trans"] + }, + "cspace<-transformq+rot-offset!": { + "args": ["dst", "src", "extra-rot"] + }, + "cspace-calc-total-matrix!": { + "args": ["csp", "dst"] + }, + "cspace<-matrix-no-push-joint!": { + "args": ["dst", "jc"] + }, + "cspace<-matrix-joint!": { + "args": ["dst", "src"] + }, + "cspace<-parented-matrix-joint!": { + "args": ["dst", "joint-mat"] + }, + "cspace<-parented-matrix-mirror!": { + "args": ["dst", "joint-mat"] + }, + "cspace<-parented-matrix-joint-flip-z!": { + "args": ["dst", "joint-mat"] + }, + "cspace<-matrix-joint-flip-z!": { + "args": ["dst", "src"] + }, + "cspace<-parented-transformq-joint!": { + "args": ["dst", "joint-transformq"] + }, + "cspace<-parented-transformq-joint-flip-z!": { + "args": ["dst", "joint-transformq"] + }, + "create-interpolated-joint-animation-frame": { + "args": ["dst", "num-joints", "jc"] + }, + "create-interpolated2-joint-animation-frame": { + "args": ["dst", "num-joints", "jc"] + }, + "(method 37 cloth-system)": { + "args": ["this", "command"], + "vars": { + "s5-0": "msg", + "s4-0": "flags" + } + }, + "(method 11 cloth-on-skeleton)": { + "vars": { + "a1-0": "proc" + } + }, + "(method 25 cloth-on-skeleton)": { + "vars": { + "v1-1": "proc", + "a1-3": "draw-ctrl", + "v1-4": "fade" + } + }, + "(method 33 cloth-on-skeleton)": { + "vars": { + "v1-3": "draw-ctrl" + }, + "args": ["this", "lights"] + }, + "(method 33 cloth-system)": { + "args": ["this", "lights"] + }, + "emerc-vu1-init-buffer": { + "args": ["bucket", "arg1", "arg2"], + "vars": { + "v1-0": "disp", + "a1-6": "block-len", + "a3-0": "dma-buf", + "s5-0": "dma-bucket", + "s3-0": "buf", + "s4-3": "base", + "v1-17": "packet" + } + }, + "emerc-vu1-initialize-chain": { + "args": ["gif-packet"] + }, + "(method 9 merc-effect)": { + "vars": { + "v1-0": "tex-login", + "s5-0": "tex-idx", + "v1-1": "extra", + "s4-0": "eye-ctrl", + "a0-12": "ctrl-header", + "a0-10": "shader", + "s5-1": "fragment", + "s4-1": "geo", + "s3-0": "frag-idx", + "s2-0": "sizeof-frag", + "s1-0": "sizeof-geo" + } + }, + "(method 9 joint-mod-polar-look-at)": { + "args": ["this", "proc", "joint-id"] + }, + "(method 10 joint-mod-polar-look-at)": { + "args": ["this", "pos"] + }, + "(method 11 joint-mod-polar-look-at)": { + "args": ["this", "other", "pos"] + }, + "(method 12 joint-mod-polar-look-at)": { + "args": ["this", "duration", "final-val", "restart-if-in-progress"] + }, + "(method 13 joint-mod-polar-look-at)": { + "args": ["this", "duration", "restart-if-in-progress"] + }, + "(method 0 joint-mod-ik)": { + "args": ["allocation", "type-to-make", "proc", "joint-id", "hand-dist"] + }, + "(method 9 joint-mod-ik)": { + "args": ["this", "pos"] + }, + "(method 10 joint-mod-ik)": { + "args": ["this", "enable"] + }, + "(method 0 joint-mod)": { + "args": ["allocation", "type-to-make", "mode", "proc", "base-joint-id"] + }, + "(method 9 joint-mod)": { + "args": ["this", "mode"] + }, + "(method 10 joint-mod)": { + "args": ["this", "pos"] + }, + "(method 11 joint-mod)": { + "args": ["this", "target", "mode", "proc"] + }, + "(method 13 joint-mod)": { + "args": ["this", "x", "y", "z"] + }, + "(method 14 joint-mod)": { + "args": ["this", "trans", "quat", "scale"] + }, + "(method 13 gui-control)": { + "vars": { + "s3-0": ["con-i-0", "gui-connection"], + "a0-33": ["con-i-1", "gui-connection"] + } + }, + "(method 10 gui-control)": { + "vars": { + "s3-0": ["con-i-0", "gui-connection"] + } + }, + "(method 17 game-info)": { + "vars": { + "v1-7": "game-subtasks", + "a0-6": "i", + "a1-8": "subtask", + "s3-0": "game-task-max", + "s4-0": "game-task" + } + }, + "print-continues": { + "vars": { + "gp-0": "levels", + "s5-0": "continues", + "v1-2": "continue" + } + }, + "(method 10 continue-point)": { + "vars": { + "v1-0": "level", + "v1-1": "i", + "v1-4": "ii", + "a0-16": "rot", + "v1-11": "continue-rot" + } + }, + "(method 19 game-info)": { + "args": ["this", "name"], + "vars": { + "s4-0": "continues", + "s3-0": "cont", + "s5-0": "levels" + } + }, + "position->stream": { + "args": ["stream", "arg1", "newline?"] + }, + "(method 9 game-info)": { + "args": ["this", "mode", "arg2", "continue-name", "reset-spec"], + "vars": { + "s1-0": "name", + "s2-1": "level-info" + } + }, + "(method 11 fact-info-target)": { + "args": ["this", "pickup", "amount", "pickup-handle"] + }, + "(method 31 game-info)": { + "vars": { + "gp-0": "highscore-arr" + } + }, + "(method 33 game-info)": { + "vars": { + "s5-0": "level", + "s4-0": "subtasks", + "s3-0": "i", + "s2-0": "subtask" + } + }, + "(top-level-login game-task)": { + "vars": { + "gp-0": "game-info" + } + }, + "process-drawable-error-print": { + "args": ["proc", "error"] + }, + "process-drawable-cloth-command": { + "args": ["proc", "cmd"], + "vars": { + "s4-0": "i", + "a0-5": "cloth" + } + }, + "process-drawable-slow-mo-cloth": { + "args": ["proc", "disable-wind?"], + "vars": { + "v1-6": "i", + "a2-4": "cloth" + } + }, + "process-drawable-show-all-cloth": { + "args": ["proc", "arg1"], + "vars": { + "s4-0": "i" + } + }, + "process-drawable-set-wind-strength": { + "args": ["proc", "strength"], + "vars": { + "v1-6": "i" + } + }, + "process-drawable-set-cloth-ground-height": { + "args": ["proc", "height"], + "vars": { + "v1-6": "i" + } + }, + "process-drawable-set-riding": { + "args": ["proc", "riding?"], + "vars": { + "v1-6": "i" + } + }, + "process-drawable-reset-all-cloth": { + "args": ["proc"], + "vars": { + "v1-6": "i" + } + }, + "(method 10 draw-control)": { + "args": ["this", "lod"] + }, + "(method 11 draw-control)": { + "args": ["this", "lods"], + "vars": { + "a1-2": "lod" + } + }, + "(method 9 lod-set)": { + "args": ["this", "skelgroup", "ag", "entity"], + "vars": { + "s3-0": "max-lod", + "a0-1": "i", + "v1-14": "jgeo", + "v1-15": "dist" + } + }, + "(method 13 draw-control)": { + "args": ["this", "jgeo", "allocation"] + }, + "(method 15 draw-control)": { + "args": ["this", "joints", "jcontrol"] + }, + "execute-cloth-engine": { + "vars": { + "s3-0": "proc", + "s2-0": "i" + } + }, + "rider-post": { + "vars": { + "gp-0": "cshape" + } + }, + "pusher-post": { + "vars": { + "gp-0": "cshape" + } + }, + "process-drawable-delay-player": { + "args": ["delay"] + }, + "draw-root": { + "args": ["proc"] + }, + "(method 15 process-drawable)": { + "args": ["this", "name"] + }, + "skeleton-group->draw-control": { + "args": ["proc", "skelgroup", "arg2"] + }, + "ja-group-in-array?": { + "args": ["anim-array"] + }, + "ja-rate": { + "args": ["chan"] + }, + "ja-linear-vel": { + "args": ["chan"] + }, + "(method 32 game-info)": { + "vars": { + "a0-2": "node", + "a1-6": "node-info", + "s5-0": "completed-tasks" + } + }, + "(method 34 game-info)": { + "args": ["this", "gun"] + }, + "(method 11 game-info)": { + "args": ["this", "task"] + }, + "(method 22 game-info)": { + "args": ["this", "save", "name"] + }, + "add-blackout": { + "args": ["arg0", "r", "g", "b", "arg4"] + }, + "can-jump?": { + "args": ["mode"] + }, + "(method 16 ragdoll)": { + "args": ["this", "proc", "setup"] + }, + "(method 22 ragdoll)": { + "args": ["this", "idx"] + }, + "(method 25 ragdoll)": { + "args": ["this", "proc"] + }, + "target-send-attack": { + "vars": { + "t1-11": ["name", "sound-name"] + } + }, + "(code target-running-attack)": { + "vars": { + "t1-5": ["name", "sound-name"] + } + }, + "arrive-at-continue": { + "vars": { + "s5-2": ["s5-2", "handle"] + } + }, + "find-nearest-focusable": { + "vars": { + "s0-1": ["s0-1", "search-info-flag"], + "s1-1": ["s1-1", "search-info-flag"] + } + }, + "gun->eco": { + "vars": { + "v0-0": ["v0-0", "pickup-type"] + } + }, + "gun->ammo": { + "vars": { + "v0-0": ["v0-0", "pickup-type"] + } + }, + "gun-pickup-type->game-feature": { + "vars": { + "v0-0": ["v0-0", "game-feature"] + } + }, + "(method 9 highscore-info)": { + "args": ["this", "score"], + "vars": { + "v0-0": "place" + } + }, + "(method 12 game-info)": { + "vars": { + "s5-0": "subtasks", + "s4-0": "i" + } + }, + "(method 10 border-plane)": { + "vars": { + "arg0": "pt" + } + }, + "merc-vu1-add-vu-function": { + "args": ["dma", "func", "flush-mode"], + "vars": { + "v1-0": "func-data", + "a3-0": "qwc", + "a1-1": "dst", + "t0-1": "qwc-this-time" + } + }, + "bsp-camera-asm": { + "vars": { + "a3-0": "cam-pos-i1", + "a3-1": "cam-pos-32", + "a3-2": "cam-pos-16", + "a3-3": "cam-pos-8", + "a3-4": "cam-pos-8m", + "v1-0": "nodes", + "a2-0": "nidx", + "t1-1": "node", + "t3-0": "front-min", + "t6-0": "front-min-compare", + "t0-2": "front-max", + "t4-0": "front-max-compare", + "t2-0": "back-min", + "t7-0": "back-min-compare", + "t0-3": "back-max", + "t5-0": "back-max-compare", + "t0-4": "front-idx", + "t6-1": "not-f-min", + "t7-1": "not-b-min", + "t3-1": "f-flag", + "t4-2": "f-in-box", + "t5-2": "b-in-box", + "t2-1": "b-flag", + "t1-2": "back-idx" + } + }, + "target-collision-low-coverage": { + "vars": { + "sv-16": "contact-normal", + "sv-56": "overhang-nrm", + "sv-52": "tangent" + } + }, + "transform-float-point": { + "args": ["src-world-pt", "dst-gs-screen-pt"] + }, + "add-debug-point": { + "args": ["enable", "bucket", "pt"] + }, + "internal-draw-debug-line": { + "args": ["bucket", "p0", "p1", "color", "mode", "color2"] + }, + "internal-draw-debug-text-3d": { + "args": ["bucket", "text", "pos", "color", "offset"] + }, + "add-debug-outline-triangle": { + "args": ["enable", "bucket", "p0", "p1", "p2", "color"] + }, + "add-debug-triangle-normal": { + "args": ["enable", "bucket", "p0", "p1", "p2", "color"] + }, + "add-debug-flat-triangle": { + "args": ["enable", "bucket", "p0", "p1", "p2", "color"] + }, + "get-debug-text-3d": { + "args": ["enable", "bucket", "p0", "p1", "color", "mode", "color2"] + }, + "debug-reset-buffers": { + "args": ["enable", "bucket", "p0", "p1", "color"] + }, + "add-debug-line": { + "args": ["enable", "bucket", "p0", "p1", "color", "mode", "color2"] + }, + "add-debug-line2d": { + "args": ["enable", "bucket", "p0", "p1", "color"] + }, + "add-debug-box": { + "args": ["enable", "bucket", "p0", "p1", "color"] + }, + "add-debug-box-with-transform": { + "args": ["enable", "bucket", "box", "mat", "color"] + }, + "add-debug-x": { + "args": ["enable", "bucket", "pos", "color"] + }, + "add-debug-cross": { + "args": ["enable", "bucket", "pos", "len"] + }, + "add-debug-text-3d": { + "args": ["enable", "bucket", "text", "pos", "color", "offset"] + }, + "add-debug-sphere-with-transform": { + "args": ["enable", "bucket", "pos", "radius", "mat", "color"] + }, + "add-debug-sphere": { + "args": ["enable", "bucket", "pos", "radius", "color"] + }, + "add-debug-text-sphere": { + "args": ["enable", "bucket", "pos", "radius", "text", "color"] + }, + "add-debug-spheres": { + "args": ["enable", "bucket", "spheres", "count", "color"] + }, + "add-debug-line-sphere": { + "args": ["enable", "bucket", "base", "dir", "rad", "color"] + }, + "add-debug-circle": { + "args": ["enable", "bucket", "origin", "radius", "color", "mat"] + }, + "add-debug-vector": { + "args": ["enable", "bucket", "base", "dir", "len-scale", "color"] + }, + "add-debug-matrix": { + "args": ["enable", "bucket", "mat", "len"] + }, + "add-debug-rot-matrix": { + "args": ["enable", "bucket", "mat", "len", "trans"] + }, + "add-debug-quaternion": { + "args": ["enable", "bucket", "trans", "quat"] + }, + "add-debug-cspace": { + "args": ["enable", "bucket", "cs"] + }, + "foreground-draw": { + "args": ["dc", "dma-buf", "dist"], + "vars": { + "at-0": "work", + "a0-1": "bone-calc", + "v1-0": "matrix-mem", + "t1-0": "num-bones", + "a3-3": "matrix-mem-size", + "t0-1": "regs", + "t0-2": "bone-output", + "t1-2": "bone-flags", + "t4-0": "fg-regs", + "a1-6": "calc-list", + "a2-5": "calc", + "s5-0": "dma-ptr", + "s4-0": "bucket-info", + "a0-5": "lights-in", + "v1-6": "lights-out", + "a1-8": "inv-camera", + "s3-0": "geo", + "s2-0": "effect-mask", + "s1-0": "effect-idx", + "v1-41": "texscroll-info", + "v1-76": "envmap-info", + "f1-1": "envmap-fade0", + "f0-4": "envmap-fade1", + "f1-3": "envmap-interp", + "f0-6": "envmap-strength", + "a0-39": "envmap-tint", + "v1-79": "envmap-rgba-out", + "f0-7": "envmap-rgba-multiplier", + "a1-17": "tod-rgba", + "a0-81": "fade-amount", + "v1-161": "fade-enable", + "f0-11": "dist-until-gone" + } + }, + "fma-sphere-init-by-other": { + "args": ["fma-parms"] + }, + "(method 9 progress-list-level)": { + "vars": { + "s3-0": ["act", "game-task-node-flag"] + } + }, + "(method 4 progress-list-level)": { + "vars": { + "s4-0": ["act", "game-task-node-flag"] + } + }, + "level-find-borrow-slot": { + "args": ["borrower-level", "mode"], + "vars": { + "v1-0": "host-level-borrow-slot", + "a2-0": "host-level-candidate-idx", + "a3-3": "host-level-candidate", + "t0-7": "mode2", + "t0-10": "found-slot", + "t0-8": "host-level-slot-idx" + } + }, + "(method 24 com-airlock)": { + "args": ["this", "level-status"] + }, + "(method 29 com-airlock)": { + "args": ["this", "side"] + }, + "(method 23 com-airlock)": { + "vars": { + "s3-0": "tpos", + "f26-0": "target-dist", + "s4-0": "cmd" + } + }, + "(method 26 com-airlock)": { + "args": ["this", "arg1", "side"] + }, + "(method 9 proc-focusable-spawner)": { + "args": ["this", "count", "allocation"] + }, + "(method 15 proc-focusable-spawner)": { + "vars": { + "s5-0": "i", + "s4-0": "proc", + "a0-6": "pfoc", + "v1-8": "ii" + } + }, + "(method 119 enemy)": { + "vars": { + "a1-5": ["cspec", "collide-spec"] + } + }, + "(method 64 enemy)": { + "vars": { + "s3-2": ["aware", "enemy-aware"] + } + }, + "(method 146 enemy)": { + "vars": { + "gp-0": ["name", "sound-name"] + } + }, + "(method 82 enemy)": { + "args": ["this", "proc", "argc", "msg", "block"] + }, + "(method 11 process-taskable)": { + "args": ["this", "entity"] + }, + "debris-group-init-by-other": { + "args": ["tuning", "params", "pdraw"], + "vars": { + "s3-0": "i", + "s1-0": "debris", + "s2-0": "skel", + "v0-18": "draw", + "sv-48": "tuning-scale", + "s0-0": "joint-transform", + "sv-64": "debris-scale" + } + }, + "(method 15 debris-group)": { + "args": ["this", "idx"], + "vars": { + "s3-0": "cquery", + "v1-3": "debris-box", + "s5-0": "box-num", + "s4-0": "box-start", + "a0-1": "bbox", + "sv-96": "name", + "a1-13": "id", + "v1-7": "debris-start" + } + }, + "(trans idle debris-group)": { + "vars": { + "gp-0": "i", + "s5-0": "debris", + "s4-0": "draw-ctrl", + "gp-1": "ii", + "s5-1": "debris-box", + "s3-0": "box-num", + "s4-1": "box-start", + "s1-0": "bbox" + } + }, + "(method 16 debris-group)": { + "args": ["this", "idx"], + "vars": { + "s5-0": "debris-box", + "s4-0": "i", + "v1-7": "debris" + } + }, + "(enter burnt-husk gun-yellow-3-saucer)": { + "vars": { + "s5-0": ["name", "sound-name"] + } + }, + "reset-actors": { + "vars": { + "s5-0": ["perm", "entity-perm-status"] + } + }, + "(method 24 level-group)": { + "vars": { + "a0-9": ["enemy-option", "enemy-option"] + } + }, + "(code target-darkjak-running-attack)": { + "vars": { + "t1-2": ["name", "sound-name"] + } + }, + "(method 18 level)": { + "vars": { + "s5-0": "mem-mode", + "a0-31": "lev", + "sv-32": "mask", + "sv-20": "memory-unused?" + } + }, + "(method 119 nav-enemy)": { + "vars": { + "a1-13": ["cspec", "collide-spec"] + } + }, + "(method 216 saberfish)": { + "vars": { + "s4-1": ["s4-1", "saberfish-command"] + } + }, + "find-behavior<-in-water?": { + "vars": { + "v0-0": ["v0-0", "saberfish-find-behavior"] + } + }, + "(method 23 spider-manager)": { + "vars": { + "s3-0": ["dist", "float"] + } + }, + "(method 121 sewer-frog)": { + "vars": { + "v1-10": ["name", "sound-name"] + } + }, + "(trans target-board-ride-edge)": { + "vars": { + "a0-44": ["name", "sound-name"] + } + }, + "(method 9 menu-create-game-option)": { + "vars": { + "a0-26": ["name", "sound-name"] + } + }, + "(code active task-manager-forest-plants)": { + "vars": { + "s5-8": ["hand", "handle"] + } + }, + "(method 31 dm-mine-spider-spawner)": { + "vars": { + "s3-0": ["s3-0", "float"] + } + }, + "(method 26 task-manager-wascity-gungame)": { + "vars": { + "s4-1": ["sname", "sound-name"] + } + }, + "terraformer-head-always": { + "vars": { + "s4-2": ["sname", "sound-name"] + } + }, + "launch-mine": { + "vars": { + "v0-1": ["hand", "handle"] + } + }, + "(method 42 mh-centipede)": { + "vars": { + "s0-0": ["sname", "sound-name"] + } + }, + "check-enemy": { + "args": ["turret", "radius", "pfoc"] + }, + "(method 202 bot)": { + "vars": { + "s4-0": ["cspec", "collide-spec"] + } + }, + "(enter impact warf-projectile)": { + "vars": { + "s4-0": ["sname", "sound-name"] + } + }, + "symbol->city-target-type": { + "vars": { + "v0-0": ["type", "city-target-type"] + } + }, + "city-target-type->traffic-object-type": { + "vars": { + "v0-0": ["type", "traffic-type"] + } + }, + "city-target-type->cty-faction": { + "vars": { + "v0-0": ["type", "cty-faction"] + } + }, + "map-symbol-to-nav-territory-type": { + "vars": { + "v0-0": ["type", "nav-territory-type"] + } + }, + "guard-type->city-target-type": { + "vars": { + "v0-0": ["type", "city-target-type"] + } + }, + "(code die neo-sat)": { + "vars": { + "gp-0": ["hand", "handle"] + } + }, + "(method 48 task-manager-desert-rescue)": { + "vars": { + "f30-0": ["f30-0", "float"] + } + }, + "(method 31 gun-dummy)": { + "vars": { + "f0-0": "total-time", + "v1-0": "curr-frame" + } + }, + "symbol->gun-pickup-type": { + "vars": { + "v0-0": ["type", "pickup-type"] + } + }, + "symbol->faction-type": { + "vars": { + "v0-0": ["type", "assault-cmd-faction-type"] + } + }, + "symbol->speech-type": { + "vars": { + "v0-0": ["type", "assault-cmd-speech-type"] + } + }, + "symbol->assault-target-type": { + "vars": { + "v0-0": ["type", "assault-target-type"] + } + } +} diff --git a/decompiler/data/StrFileReader.cpp b/decompiler/data/StrFileReader.cpp index 016e809a341..d46277edfc2 100644 --- a/decompiler/data/StrFileReader.cpp +++ b/decompiler/data/StrFileReader.cpp @@ -23,6 +23,7 @@ StrFileReader::StrFileReader(const fs::path& file_path, GameVersion version) : m break; case GameVersion::Jak2: case GameVersion::Jak3: + case GameVersion::JakX: init_jak2(file_path); break; default: diff --git a/decompiler/data/dir_tpages.cpp b/decompiler/data/dir_tpages.cpp index 47932cfd2a7..db292c6e224 100644 --- a/decompiler/data/dir_tpages.cpp +++ b/decompiler/data/dir_tpages.cpp @@ -45,7 +45,8 @@ DirTpageResult process_dir_tpages(ObjectFileData& data) { word_idx++; } - if (data.linked_data.version != GameVersion::Jak3) { + if (data.linked_data.version != GameVersion::Jak3 && + data.linked_data.version != GameVersion::JakX) { word_idx = ((word_idx + 3) / 4) * 4; } ASSERT(word_idx == (int)words.size()); diff --git a/decompiler/data/game_text.cpp b/decompiler/data/game_text.cpp index bf1f0ec7d4c..6e255bfbc3f 100644 --- a/decompiler/data/game_text.cpp +++ b/decompiler/data/game_text.cpp @@ -8,6 +8,7 @@ #include "game_subs.h" #include "common/goos/Reader.h" +#include "common/log/log.h" #include "common/util/BitUtils.h" #include "common/util/FontUtils.h" #include "common/util/print_float.h" @@ -42,6 +43,8 @@ bool word_is_type(const LinkedWord& word, const std::string& type_name) { } // namespace /* +Jak 3: + (deftype game-text (structure) ((id uint32 :offset-assert 0) (text basic :offset-assert 4) @@ -55,6 +58,25 @@ bool word_is_type(const LinkedWord& word, const std::string& type_name) { (data game-text :dynamic :offset-assert 16) ) ) + +Jak X: + +(deftype game-text (structure) + ((id text-id :offset-assert 0) + (index uint32 :offset-assert 4) + ) + ) + +(deftype game-text-info (basic) + ((length int32 :offset-assert 4) + (language-id int32 :offset-assert 8) + (group-name string :offset-assert 12) + (dic-index (pointer uint32) :offset-assert 16) + (dic-data (pointer uint8) :offset-assert 20) + (text (pointer game-text) :offset-assert 24) + (text-data (pointer uint8) :offset-assert 28) + ) + ) */ GameTextResult process_game_text(ObjectFileData& data, GameTextVersion version) { @@ -85,62 +107,202 @@ GameTextResult process_game_text(ObjectFileData& data, GameTextVersion version) read_words.at(offset)++; auto group_label = get_label(data, words.at(offset++)); auto group_name = data.linked_data.get_goal_string_by_label(group_label); - ASSERT(group_name == "common"); + if (version == GameTextVersion::JAKX) { + ASSERT(group_name == "common" || group_name == "subtitles"); + } else { + ASSERT(group_name == "common"); + } // remember that we read these bytes auto group_start = (group_label.offset / 4) - 1; - for (int j = 0; j < align16(8 + 1 + (int)group_name.length()) / 4; j++) { + for (int j = 0; + j < align16(8 + 1 + (int)group_name.length()) / 4 && (group_start + j) < read_words.size(); + j++) { read_words.at(group_start + j)++; } - // read each text... - for (u32 i = 0; i < text_count; i++) { - // id number + if (version != GameTextVersion::JAKX) { + // read each text... + for (u32 i = 0; i < text_count; i++) { + // id number + read_words.at(offset)++; + auto text_id = get_word(words.at(offset++)); + + // label to string + read_words.at(offset)++; + auto text_label = get_label(data, words.at(offset++)); + + // actual string + auto text = data.linked_data.get_goal_string_by_label(text_label); + result.total_text++; + result.total_chars += text.length(); + + // no duplicate ids + if (result.text.find(text_id) != result.text.end()) { + ASSERT(false); + } + + // escape characters + if (font_bank_exists(version)) { + result.text[text_id] = get_font_bank(version)->convert_game_to_utf8(text.c_str()); + } else { + result.text[text_id] = goos::get_readable_string(text.c_str()); // HACK! + } + + // remember what we read (-1 for the type tag) + auto string_start = (text_label.offset / 4) - 1; + // 8 for type tag and length fields, 1 for null char. + for (int j = 0, m = align16(8 + 1 + (int)text.length()) / 4; + j < m && string_start + j < (int)read_words.size(); j++) { + read_words.at(string_start + j)++; + } + } + + // alignment to the string section. + while (offset & 3) { + read_words.at(offset)++; + offset++; + } + + // make sure we read each thing at least once. + // reading more than once is ok, some text is duplicated. + for (int i = 0; i < int(words.size()); i++) { + if (read_words[i] < 1) { + std::string debug; + data.linked_data.append_word_to_string(debug, words.at(i)); + ASSERT_MSG(false, fmt::format("[{}] {} 0x{}", i, int(read_words[i]), debug.c_str())); + } + } + } else { + // dic-index field read_words.at(offset)++; - auto text_id = get_word(words.at(offset++)); + auto dic_index = get_label(data, words.at(offset++)); - // label to string + // dic-data field read_words.at(offset)++; - auto text_label = get_label(data, words.at(offset++)); + auto dic_data = get_label(data, words.at(offset++)); - // actual string - auto text = data.linked_data.get_goal_string_by_label(text_label); - result.total_text++; - result.total_chars += text.length(); + // text field + read_words.at(offset)++; + auto game_texts = get_label(data, words.at(offset++)); - // no duplicate ids - if (result.text.find(text_id) != result.text.end()) { - ASSERT(false); - } + // text-data field + read_words.at(offset)++; + auto text_data = get_label(data, words.at(offset++)); + + for (u32 i = 0; i < text_count; i++) { + // id number + read_words.at(game_texts.offset / 4 + i * 2)++; + auto id = get_word(words.at(game_texts.offset / 4 + i * 2)); + + if (result.text.find(id) != result.text.end()) { + ASSERT(false); + } + + // index within text-data + read_words.at(game_texts.offset / 4 + i * 2 - 1)++; + auto index = get_word(words.at(game_texts.offset / 4 + i * 2 + 1)); + + result.total_text++; - // escape characters - if (font_bank_exists(version)) { - result.text[text_id] = get_font_bank(version)->convert_game_to_utf8(text.c_str()); - } else { - result.text[text_id] = goos::get_readable_string(text.c_str()); // HACK! + std::string text; + + u32 text_offset = text_data.offset + index; + + // number of dictionary elements + read_words.at(text_offset / 4)++; + u32 entries = data.data.at(text_offset++ + 0x80); + + auto flag = entries & 128; + entries = 127 & entries; + + if (entries == 127) { + u32 add; + do { + read_words.at(text_offset / 4)++; + add = data.data.at(text_offset++ + 0x80); + entries += add; + } while (add == 255); + } + + for (u32 j = 0; j < entries; j++) { + u32 idx; + + if (flag) { + u32 low_address = text_offset + j * 2; + u32 high_address = text_offset + j * 2 + 1; + + read_words.at(low_address / 4)++; + read_words.at(high_address / 4)++; + + idx = data.data.at(low_address + 0x80) + data.data.at(high_address + 0x80) * 256; + } else { + read_words.at((text_offset + j) / 4)++; + idx = data.data.at(text_offset + j + 0x80); + } + + read_words.at(dic_index.offset / 4 + idx)++; + auto d_idx = get_word(words.at(dic_index.offset / 4 + idx)); + + read_words.at((dic_data.offset + d_idx) / 4)++; + auto sublen = data.data.at(dic_data.offset + d_idx + 0x80); + + for (u32 x = 0; x < sublen; x++) { + read_words.at((dic_data.offset + d_idx + x + 1) / 4)++; + text += data.data.at(dic_data.offset + d_idx + x + 1 + 0x80); + } + + result.total_chars += sublen; + } + + // escape characters + if (font_bank_exists(version)) { + result.text[id] = get_font_bank(version)->convert_game_to_utf8(text.c_str()); + } else { + result.text[id] = goos::get_readable_string(text.c_str()); // HACK! + } } - // remember what we read (-1 for the type tag) - auto string_start = (text_label.offset / 4) - 1; - // 8 for type tag and length fields, 1 for null char. - for (int j = 0, m = align16(8 + 1 + (int)text.length()) / 4; - j < m && string_start + j < (int)read_words.size(); j++) { - read_words.at(string_start + j)++; + size_t unused_dictionary_indices = 0; + size_t unused_words = 0; + + // check if we read each thing at least once. + // reading more than once is ok, some text is duplicated. + for (int i = 0; i < int(words.size()); i++) { + if (read_words[i] < 1) { + if (i < dic_data.offset / 4) { + std::string text; + u32 d_idx = get_word(words.at(i)); + + auto sublen = data.data.at(dic_data.offset + d_idx + 0x80); + + for (u32 x = 0; x < sublen; x++) { + read_words.at((dic_data.offset + d_idx + x + 1) / 4)++; + text += data.data.at(dic_data.offset + d_idx + x + 1 + 0x80); + } + + lg::debug(fmt::format("Unused dictionary entry in {} [index {}] {} {:?}", + data.name_in_dgo, i - (dic_index.offset / 4), int(read_words[i]), + text.c_str())); + + unused_dictionary_indices++; + } else { + std::string debug; + data.linked_data.append_word_to_string(debug, words.at(i)); + lg::debug(fmt::format("Unused word in {} [{}] {} 0x{}", data.name_in_dgo, i, + int(read_words[i]), debug.c_str())); + unused_words++; + } + } } - } - // alignment to the string section. - while (offset & 3) { - read_words.at(offset)++; - offset++; - } + if (unused_dictionary_indices) { + lg::warn(fmt::format("{} dictionary entries unused by game text in {}", + unused_dictionary_indices, data.name_in_dgo)); + } - // make sure we read each thing at least once. - // reading more than once is ok, some text is duplicated. - for (int i = 0; i < int(words.size()); i++) { - if (read_words[i] < 1) { - std::string debug; - data.linked_data.append_word_to_string(debug, words.at(i)); - ASSERT_MSG(false, fmt::format("[{}] {} 0x{}", i, int(read_words[i]), debug.c_str())); + if (unused_words) { + lg::warn( + fmt::format("{} data words unused by game text in {}", unused_words, data.name_in_dgo)); } } diff --git a/decompiler/data/streamed_audio.cpp b/decompiler/data/streamed_audio.cpp index 81294cb560f..70bb43f2131 100644 --- a/decompiler/data/streamed_audio.cpp +++ b/decompiler/data/streamed_audio.cpp @@ -34,6 +34,7 @@ struct AudioDir { }; std::vector entries; + u32 version = 1; int entry_count() const { return entries.size(); } @@ -153,7 +154,7 @@ AudioDir read_audio_dir(const decompiler::Config& config, const fs::path& path) e.start_byte = AUDIO_PAGE_SIZE * entries[i].value; result.entries.push_back(e); } - } else if (config.game_version == GameVersion::Jak3) { + } else if (config.game_version >= GameVersion::Jak3) { struct VagDirJak3 { u32 id[2]; u32 version; @@ -164,18 +165,23 @@ AudioDir read_audio_dir(const decompiler::Config& config, const fs::path& path) u64 data; struct { u64 name : 42; - bool stereo : 1; - bool international : 1; - u8 param : 4; + u64 stereo : 1; + u64 international : 1; + u64 param : 4; u64 offset : 16; }; }; }; + + static_assert(sizeof(DirEntryJak3) == sizeof(u64)); + dir = reader.read(); ASSERT(dir.id[0] == 0x41574756); ASSERT(dir.id[1] == 0x52494444); lg::warn("version {} count {}", dir.version, dir.count); + result.version = dir.version; + std::vector entries; for (size_t i = 0; i < dir.count; i++) { @@ -213,7 +219,8 @@ AudioFileInfo process_audio_file(const fs::path& output_folder, std::span data, const std::string& name, const std::string& suffix, - bool stereo) { + bool stereo, + u32 version) { BinaryReader reader(data); auto header = reader.read(); @@ -225,7 +232,7 @@ AudioFileInfo process_audio_file(const fs::path& output_folder, header.debug_print(); reader = BinaryReader(data.subspan(0, header.size)); - const auto [left_samples, right_samples] = decode_adpcm(reader, stereo); + const auto [left_samples, right_samples] = decode_adpcm(reader, stereo, version); while (reader.bytes_left()) { ASSERT(reader.read() == 0); @@ -277,7 +284,7 @@ void process_streamed_audio(const decompiler::Config& config, lg::info("File {}, total {:.2f} minutes", entry.name, audio_len / 60.0); auto data = std::span(wad_data).subspan(entry.start_byte); - auto info = process_audio_file(output_path, data, entry.name, suffix, entry.stereo); + auto info = process_audio_file(output_path, data, entry.name, suffix, entry.stereo, dir_data.version); audio_len += info.length_seconds; filename_data[i][lang_id + 1] = info.filename; } diff --git a/decompiler/data/tpage.cpp b/decompiler/data/tpage.cpp index d5319488cf6..9fe019ee215 100644 --- a/decompiler/data/tpage.cpp +++ b/decompiler/data/tpage.cpp @@ -355,6 +355,9 @@ TexturePage read_texture_page(ObjectFileData& data, case GameVersion::Jak3: ASSERT(tpage.info.major_version == versions::jak3::TX_PAGE_VERSION); break; + case GameVersion::JakX: + ASSERT(tpage.info.major_version == versions::jakx::TX_PAGE_VERSION); + break; default: ASSERT(false); } diff --git a/decompiler/decompilation_process.cpp b/decompiler/decompilation_process.cpp index 89b3c1b6fa9..aafa033ce58 100644 --- a/decompiler/decompilation_process.cpp +++ b/decompiler/decompilation_process.cpp @@ -207,15 +207,28 @@ int run_decompilation_process(decompiler::Config config, if (!result.empty()) { file_util::write_text_file(out_folder / "assets" / "game_text.txt", result); } + + if (config.game_version == GameVersion::JakX) { + auto subtitle_result = db.process_game_text_files(config, "SUBTIT"); + if (!subtitle_result.empty()) { + file_util::write_text_file(out_folder / "assets" / "game_subs.txt", subtitle_result); + } + } } lg::info("[Mem] After text: {} MB", get_peak_rss() / (1024 * 1024)); if (config.process_subtitle_text || config.process_subtitle_images) { - auto result = db.process_all_spool_subtitles( - config, config.process_subtitle_images ? out_folder / "assets" / "subtitle-images" : ""); - if (!result.empty()) { - file_util::write_text_file(out_folder / "assets" / "game_subs.txt", result); + if (config.game_version == GameVersion::JakX) { + lg::warn( + "- Jak X does not use spools, ignoring process_subtitle_text and/or " + "process_subtitle_images"); + } else { + auto result = db.process_all_spool_subtitles( + config, config.process_subtitle_images ? out_folder / "assets" / "subtitle-images" : ""); + if (!result.empty()) { + file_util::write_text_file(out_folder / "assets" / "game_subs.txt", result); + } } } diff --git a/decompiler/level_extractor/BspHeader.cpp b/decompiler/level_extractor/BspHeader.cpp index b502af8f971..3350db76646 100644 --- a/decompiler/level_extractor/BspHeader.cpp +++ b/decompiler/level_extractor/BspHeader.cpp @@ -458,7 +458,8 @@ void TieFragment::read_from_file(TypedRef ref, num_dverts = read_plain_data_field(ref, "num-dverts", dts); break; case GameVersion::Jak2: - case GameVersion::Jak3: { + case GameVersion::Jak3: + case GameVersion::JakX: { auto debug_data_ref = TypedRef(deref_label(get_field_ref(ref, "debug", dts)), dts.ts.lookup_type("tie-fragment-debug")); num_tris = read_plain_data_field(debug_data_ref, "num-tris", dts); @@ -922,6 +923,7 @@ void PrototypeBucketTie::read_from_file(TypedRef ref, break; case GameVersion::Jak2: case GameVersion::Jak3: + case GameVersion::JakX: flags = read_plain_data_field(ref, "flags", dts); break; default: @@ -1569,6 +1571,7 @@ void PrototypeBucketShrub::read_from_file(TypedRef ref, break; case GameVersion::Jak2: case GameVersion::Jak3: + case GameVersion::JakX: flags = read_plain_data_field(ref, "flags", dts); break; default: @@ -2025,6 +2028,7 @@ void BspHeader::read_from_file(const decompiler::LinkedObjectFile& file, break; case GameVersion::Jak2: case GameVersion::Jak3: + case GameVersion::JakX: visible_list_length = read_plain_data_field(ref, "visible-list-length", dts); extra_vis_list_length = read_plain_data_field(ref, "extra-vis-list-length", dts); break; @@ -2052,7 +2056,7 @@ void BspHeader::read_from_file(const decompiler::LinkedObjectFile& file, get_and_check_ref_to_basic(ref, "collide-hash", "collide-hash", dts), dts, version); } - if (version == GameVersion::Jak3) { + if (version >= GameVersion::Jak3) { if (get_word_kind_for_field(ref, "hfrag-drawable", dts) == decompiler::LinkedWord::PTR) { hfrag.emplace(); hfrag->read_from_file(get_and_check_ref_to_basic(ref, "hfrag-drawable", "hfragment", dts), diff --git a/decompiler/level_extractor/extract_merc.cpp b/decompiler/level_extractor/extract_merc.cpp index 2a97ef17828..d8b4b63e404 100644 --- a/decompiler/level_extractor/extract_merc.cpp +++ b/decompiler/level_extractor/extract_merc.cpp @@ -768,9 +768,9 @@ s32 find_or_add_texture_to_level(tfrag3::Level& out, } // check eyes - u32 eye_tpage = PerGameVersion(0x1cf, 0x70c, 0x3)[version]; - u32 left_id = PerGameVersion(0x6f, 0x7, 0x2)[version]; - u32 right_id = PerGameVersion(0x70, 0x8, 0x3)[version]; + u32 eye_tpage = PerGameVersion(0x1cf, 0x70c, 0x3, 0x3)[version]; + u32 left_id = PerGameVersion(0x6f, 0x7, 0x2, 0x2)[version]; + u32 right_id = PerGameVersion(0x70, 0x8, 0x3, 0x3)[version]; if (eye_out && (pc_combo_tex_id >> 16) == eye_tpage) { auto tex_it = tex_db.textures.find(pc_combo_tex_id); @@ -854,7 +854,8 @@ ConvertedMercEffect convert_merc_effect(const MercEffect& input_effect, tex_combo = (((u32)tpage) << 16) | tidx; } break; case GameVersion::Jak2: - case GameVersion::Jak3: { + case GameVersion::Jak3: + case GameVersion::JakX: { u32 tpage = 0x1f; u32 tidx = 2; tex_combo = (((u32)tpage) << 16) | tidx; diff --git a/decompiler/level_extractor/extract_tie.cpp b/decompiler/level_extractor/extract_tie.cpp index 1d0dc08b5b1..43e5b954a0a 100644 --- a/decompiler/level_extractor/extract_tie.cpp +++ b/decompiler/level_extractor/extract_tie.cpp @@ -1627,7 +1627,7 @@ void emulate_tie_instance_program(std::vector& protos, GameVersion bool inserted = frag.vertex_by_dest_addr.insert({(u32)dest_ptr, vertex_info}).second; // TODO hack - if (version != GameVersion::Jak3) { + if (version != GameVersion::Jak3 && version != GameVersion::JakX) { ASSERT(inserted); } nd.bp1++; @@ -2565,6 +2565,7 @@ void add_vertices_and_static_draw(tfrag3::TieTree& tree, break; case GameVersion::Jak2: case GameVersion::Jak3: + case GameVersion::JakX: info = get_jak2_tie_category(proto.proto_flag); break; default: diff --git a/decompiler/types2/ForwardProp.cpp b/decompiler/types2/ForwardProp.cpp index f2c324eb341..29fba368a94 100644 --- a/decompiler/types2/ForwardProp.cpp +++ b/decompiler/types2/ForwardProp.cpp @@ -747,6 +747,12 @@ void types2_for_logior(types2::Type& type_out, return; } + if (arg0_type.typespec().base_type() == "pointer" && arg1_type.typespec().base_type() == "pointer") { + env.func->warnings.warning("Using logior on pointers"); + type_out.type = TP_Type::make_from_ts("int"); + return; + } + if (common_int2_case(type_out, dts, arg0_type, arg1_type)) { return; } @@ -1968,6 +1974,7 @@ bool load_var_op_determine_type(types2::Type& type_out, art_get_by_name_method_id = 10; break; case GameVersion::Jak3: + case GameVersion::JakX: art_get_by_name_method_id = 11; break; default: diff --git a/decompiler/util/DecompilerTypeSystem.cpp b/decompiler/util/DecompilerTypeSystem.cpp index d5762016230..c107d803318 100644 --- a/decompiler/util/DecompilerTypeSystem.cpp +++ b/decompiler/util/DecompilerTypeSystem.cpp @@ -218,13 +218,23 @@ std::string DecompilerTypeSystem::lookup_parent_from_inspects(const std::string& } bool DecompilerTypeSystem::lookup_flags(const std::string& type, u64* dest) const { - if (type == "process-tree") { - *dest = ((u64)0xe << 32) + (0 << 16) + 0x24; - return true; - } - if (type == "process") { - *dest = ((u64)0xe << 32) + (0 << 16) + 0x80; - return true; + if (m_version == GameVersion::JakX) { + if (type == "process-tree") { + *dest = ((u64)0xe << 32) + (0 << 16) + 0x2c; + return true; + } + if (type == "process") { + *dest = ((u64)0xe << 32) + (0 << 16) + 0x90; + } + } else { + if (type == "process-tree") { + *dest = ((u64)0xe << 32) + (0 << 16) + 0x24; + return true; + } + if (type == "process") { + *dest = ((u64)0xe << 32) + (0 << 16) + 0x80; + return true; + } } auto kv = type_flags.find(type); diff --git a/decompiler/util/data_decompile.cpp b/decompiler/util/data_decompile.cpp index 45c9d58e5d9..2990d4f77c5 100644 --- a/decompiler/util/data_decompile.cpp +++ b/decompiler/util/data_decompile.cpp @@ -969,6 +969,106 @@ const std::unordered_map< {"speech-tunings", ArrayFieldDecompMeta(TypeSpec("bot-speech-tuning"), 16)}}}, }}, {GameVersion::Jak3, + { + {"ocean-near-indices", + {{"data", ArrayFieldDecompMeta(TypeSpec("ocean-near-index"), 32)}}}, + {"ocean-mid-masks", {{"data", ArrayFieldDecompMeta(TypeSpec("ocean-mid-mask"), 8)}}}, + {"lightning-probe-vars", + {{"probe-dirs", ArrayFieldDecompMeta(TypeSpec("vector"), 16)}}}, + {"continue-point", + {{"want", ArrayFieldDecompMeta(TypeSpec("level-buffer-state-small"), 8)}}}, + {"task-manager-info", + {{"sphere-array", ArrayFieldDecompMeta(TypeSpec("sphere"), 16)}}}, + {"sparticle-launcher", + {{"init-specs", ArrayFieldDecompMeta(TypeSpec("sp-field-init-spec"), 16)}}}, + {"sparticle-launch-group", + {{"launcher", ArrayFieldDecompMeta(TypeSpec("sparticle-group-item"), 32)}}}, + {"simple-sprite-system", + {{"data", ArrayFieldDecompMeta(TypeSpec("sprite-glow-data"), 64)}}}, + {"actor-hash-bucket", + {{"data", ArrayFieldDecompMeta(TypeSpec("actor-cshape-ptr"), 16)}}}, + {"nav-mesh", + {{"poly-array", ArrayFieldDecompMeta(TypeSpec("nav-poly"), 64)}, + {"nav-control-array", ArrayFieldDecompMeta(TypeSpec("nav-control"), 288)}}}, + {"enemy-info", + {{"idle-anim-script", ArrayFieldDecompMeta(TypeSpec("idle-control-frame"), 32)}}}, + {"nav-enemy-info", + {{"idle-anim-script", ArrayFieldDecompMeta(TypeSpec("idle-control-frame"), 32)}}}, + {"vehicle-rider-info", + {{"grab-rail-array", ArrayFieldDecompMeta(TypeSpec("vehicle-grab-rail-info"), 48)}, + {"attach-point-array", ArrayFieldDecompMeta(TypeSpec("vehicle-attach-point"), 32)}}}, + {"vehicle-setup-info", {{"color", ArrayFieldDecompMeta(TypeSpec("vector"), 16)}}}, + {"desbeast-path", {{"node", ArrayFieldDecompMeta(TypeSpec("desbeast-node"), 32)}}}, + {"race-info", + {{"turbo-pad-array", ArrayFieldDecompMeta(TypeSpec("race-turbo-pad"), 32)}, + {"racer-array", ArrayFieldDecompMeta(TypeSpec("race-racer-info"), 16)}, + {"decision-point-array", + ArrayFieldDecompMeta(TypeSpec("race-decision-point"), 16)}}}, + {"flyingsaw-graph", {{"node", ArrayFieldDecompMeta(TypeSpec("flyingsaw-node"), 48)}}}, + {"nav-network-info", + {{"adjacency", ArrayFieldDecompMeta(TypeSpec("nav-network-adjacency"), 16)}}}, + {"forest-path-points-static", + {{"points", ArrayFieldDecompMeta(TypeSpec("vector"), 16)}}}, + {"xz-height-map", + {{"data", ArrayFieldDecompMeta(TypeSpec("int8"), + 1, + ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}}, + {"was-pre-game-game", + {{"wave", ArrayFieldDecompMeta(TypeSpec("was-pre-game-wave"), 32)}}}, + {"lizard-graph", + {{"point", ArrayFieldDecompMeta(TypeSpec("vector"), 16)}, + {"edge", ArrayFieldDecompMeta(TypeSpec("lizard-graph-edge"), 16)}}}, + {"terraformer-graph", + {{"node", ArrayFieldDecompMeta(TypeSpec("terraformer-node"), 32)}, + {"edge", ArrayFieldDecompMeta(TypeSpec("terraformer-edge"), 16)}}}, + {"bombbot-path", {{"node", ArrayFieldDecompMeta(TypeSpec("bombbot-node"), 32)}}}, + {"ai-task-pool", + {{"tasks", ArrayFieldDecompMeta(TypeSpec("uint32"), + 4, + ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}}, + {"bot-course", {{"spots", ArrayFieldDecompMeta(TypeSpec("bot-spot"), 32)}}}, + {"ashelin-course", + {{"spots", ArrayFieldDecompMeta(TypeSpec("bot-spot"), 32)}, + {"speeches", ArrayFieldDecompMeta(TypeSpec("bot-speech-info"), 16)}, + {"dirs", ArrayFieldDecompMeta(TypeSpec("vector"), 16)}, + {"speech-tunings", ArrayFieldDecompMeta(TypeSpec("bot-speech-tuning"), 16)}}}, + {"ctyport-mine-layout", + {{"stored-handles", + ArrayFieldDecompMeta(TypeSpec("handle"), + 8, + ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}}, + {"deschase-path", {{"node", ArrayFieldDecompMeta(TypeSpec("deschase-node"), 32)}}}, + {"tpath-info", + // TODO - should be able to just decompile the `anims` field + {{"anim1", ArrayFieldDecompMeta(TypeSpec("tpath-control-frame"), 16)}, + {"anim2", ArrayFieldDecompMeta(TypeSpec("tpath-control-frame"), 16)}, + {"anim3", ArrayFieldDecompMeta(TypeSpec("tpath-control-frame"), 16)}}}, + {"blow-tower-path", + {{"pts", ArrayFieldDecompMeta(TypeSpec("vector"), 16)}, + {"node-info", ArrayFieldDecompMeta(TypeSpec("blow-tower-node-info"), 32)}}}, + {"trail-conn-hash", + {{"cell", ArrayFieldDecompMeta(TypeSpec("trail-conn-hash-cell"), 6)}, + {"conn-ids", ArrayFieldDecompMeta(TypeSpec("uint16"), + 2, + ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}}, + {"trail-graph", + {{"node", ArrayFieldDecompMeta(TypeSpec("trail-node"), 20)}, + {"conn", ArrayFieldDecompMeta(TypeSpec("trail-conn"), 8)}, + {"conn-ids", ArrayFieldDecompMeta(TypeSpec("uint16"), + 2, + ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}, + {"visgroup", ArrayFieldDecompMeta(TypeSpec("trail-conn-hash-cell"), 6)}, + {"blocker", ArrayFieldDecompMeta(TypeSpec("trail-blocker"), 32)}, + {"visnode-ids", + ArrayFieldDecompMeta(TypeSpec("uint16"), + 2, + ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}, + {"cell-pov-bit-arrays", + ArrayFieldDecompMeta(TypeSpec("uint64"), + 8, + ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}}, + }}, + {GameVersion::JakX, { {"ocean-near-indices", {{"data", ArrayFieldDecompMeta(TypeSpec("ocean-near-index"), 32)}}}, diff --git a/decompiler/util/sparticle_decompile.cpp b/decompiler/util/sparticle_decompile.cpp index d70cc7515b6..33c41331438 100644 --- a/decompiler/util/sparticle_decompile.cpp +++ b/decompiler/util/sparticle_decompile.cpp @@ -159,6 +159,82 @@ enum class FieldId2 { SPT_END = 72, }; +// jakx version +enum class FieldIdX { + MISC_FIELDS_START = 0, + SPT_TEXTURE = 1, + SPT_ANIM = 2, + SPT_ANIM_SPEED = 3, + SPT_BIRTH_FUNC = 4, + SPT_JOINT_REFPOINT = 5, + SPT_NUM = 6, + MISC_FIELDS_END = 7, + SPRITE_FIELDS_START = 8, + SPT_X = 9, + SPT_Y = 10, + SPT_Z = 11, + SPT_SCALE_X = 12, + SPT_ROT_X = 13, + SPT_ROT_Y = 14, + SPT_ROT_Z = 15, + SPT_SCALE_Y = 16, + SPT_R = 17, + SPT_G = 18, + SPT_B = 19, + SPT_A = 20, + SPRITE_FIELDS_END = 21, + CPU_FIELDS_START = 22, + SPT_OMEGA = 23, + SPT_VEL_X = 24, + SPT_VEL_Y = 25, + SPT_VEL_Z = 26, + SPT_SCALEVEL_X = 27, + SPT_ROTVEL_X = 28, + SPT_ROTVEL_Y = 29, + SPT_ROTVEL_Z = 30, + SPT_SCALEVEL_Y = 31, + SPT_FADE_R = 32, + SPT_FADE_G = 33, + SPT_FADE_B = 34, + SPT_FADE_A = 35, + SPT_ACCEL_X = 36, + SPT_ACCEL_Y = 37, + SPT_ACCEL_Z = 38, + SPT_DUMMY = 39, + SPT_QUAT_X = 40, + SPT_QUAT_Y = 41, + SPT_QUAT_Z = 42, + SPT_QUAD_W = 43, + SPT_FRICTION = 44, + SPT_TIMER = 45, + SPT_FLAGS = 46, + SPT_USERDATA = 47, + SPT_FUNC = 48, + SPT_NEXT_TIME = 49, + SPT_NEXT_LAUNCHER = 50, + CPU_FIELDS_END = 51, + LAUNCH_FIELDS_START = 52, + SPT_LAUNCHROT_X = 53, + SPT_LAUNCHROT_Y = 54, + SPT_LAUNCHROT_Z = 55, + SPT_LAUNCHROT_W = 56, + SPT_CONEROT_X = 57, + SPT_CONEROT_Y = 58, + SPT_CONEROT_Z = 59, + SPT_CONEROT_W = 60, + SPT_ROTATE_X = 61, + SPT_ROTATE_Y = 62, + SPT_ROTATE_Z = 63, + SPT_CONEROT_RADIUS = 64, + SPT_MAT_SCALE_X = 65, + SPT_MAT_SCALE_Y = 66, + SPT_MAT_SCALE_Z = 67, + LAUNCH_FIELDS_END = 68, + SPT_SCALE = 69, + SPT_SCALEVEL = 70, + SPT_END = 71, +}; + // NOTE : "per second" here means it's in 1/60th instead of the usual 1/300ths constexpr bool allow_per_sec = false; @@ -335,10 +411,86 @@ const SparticleFieldDecomp field_kind_jak2[73] = { {true, FieldKind::END_FLAG} // SPT_END = 72 }; +const SparticleFieldDecomp field_kind_jakx[72] = { + {false}, // MISC_FIELDS_START = 0 + {true, FieldKind::TEXTURE_ID}, // SPT_TEXTURE = 1 + {false}, // SPT_ANIM = 2 + {false}, // SPT_ANIM_SPEED = 3 + {true, FieldKind::FUNCTION}, // SPT_BIRTH_FUNC = 4 + {false}, // SPT_JOINT/REFPOINT = 5 + {true, FieldKind::FLOAT}, // SPT_NUM = 6 + {false}, // MISC_FIELDS_END = 7 + {false}, // SPRITE_FIELDS_START = 8 + {true, FieldKind::METERS}, // SPT_X = 9 + {true, FieldKind::METERS}, // SPT_Y = 10 + {true, FieldKind::METERS}, // SPT_Z = 11 + {true, FieldKind::METERS}, // SPT_SCALE_X = 12 + {true, FieldKind::ROT_X}, // SPT_ROT_X = 13 + {true, FieldKind::DEGREES}, // SPT_ROT_Y = 14 + {true, FieldKind::DEGREES}, // SPT_ROT_Z = 15 + {true, FieldKind::METERS}, // SPT_SCALE_Y = 16 + {true, FieldKind::FLOAT}, // SPT_R = 17 + {true, FieldKind::FLOAT}, // SPT_G = 18 + {true, FieldKind::FLOAT}, // SPT_B = 19 + {true, FieldKind::FLOAT}, // SPT_A = 20 + {false}, // SPRITE_FIELDS_END = 21 + {false}, // CPU_FIELDS_START = 22 + {true, FieldKind::DEGREES}, // SPT_OMEGA = 23 + {true, FieldKind::METERS_PER_SEC}, // SPT_VEL_X = 24 (likely m/s) + {true, FieldKind::METERS_PER_SEC}, // SPT_VEL_Y = 25 + {true, FieldKind::METERS_PER_SEC}, // SPT_VEL_Z = 26 + {true, FieldKind::METERS_PER_SEC}, // SPT_SCALEVEL_X = 27 + {true, FieldKind::DEGREES_PER_SEC}, // SPT_ROTVEL_X = 28 + {true, FieldKind::DEGREES_PER_SEC}, // SPT_ROTVEL_Y = 29 + {true, FieldKind::DEGREES_PER_SEC}, // SPT_ROTVEL_Z = 30 + {true, FieldKind::METERS_PER_SEC}, // SPT_SCALEVEL_Y = 31 + {true, FieldKind::FLOAT_PER_SEC}, // SPT_FADE_R = 32 + {true, FieldKind::FLOAT_PER_SEC}, // SPT_FADE_G = 33 + {true, FieldKind::FLOAT_PER_SEC}, // SPT_FADE_B = 34 + {true, FieldKind::FLOAT_PER_SEC}, // SPT_FADE_A = 35 + {true, FieldKind::METERS_PER_SEC}, // SPT_ACCEL_X = 36 + {true, FieldKind::METERS_PER_SEC}, // SPT_ACCEL_Y = 37 + {true, FieldKind::METERS_PER_SEC}, // SPT_ACCEL_Z = 38 + {false}, // SPT_DUMMY = 39 + {false}, // SPT_QUAT_X = 40 + {false}, // SPT_QUAT_Y = 41 + {false}, // SPT_QUAT_Z = 42 + {false}, // SPT_QUAD_W = 43 + {true, FieldKind::FLOAT}, // SPT_FRICTION = 44 + {true, FieldKind::SECONDS}, // SPT_TIMER = 45 + {true, FieldKind::CPUINFO_FLAGS}, // SPT_FLAGS = 46 + {true, FieldKind::USERDATA}, // SPT_USERDATA = 47 + {true, FieldKind::FUNCTION}, // SPT_FUNC = 48 + {true, FieldKind::SECONDS}, // SPT_NEXT_TIME = 49 + {true, FieldKind::LAUNCHER_BY_ID}, // SPT_NEXT_LAUNCHER = 50 + {false}, // CPU_FIELDS_END = 51 + {false}, // LAUNCH_FIELDS_START = 52 + {true, FieldKind::DEGREES}, // SPT_LAUNCHROT_X = 53 + {true, FieldKind::DEGREES}, // SPT_LAUNCHROT_Y = 54 + {true, FieldKind::DEGREES}, // SPT_LAUNCHROT_Z = 55 + {true, FieldKind::DEGREES}, // SPT_LAUNCHROT_W = 56 + {true, FieldKind::DEGREES}, // SPT_CONEROT_X = 57 + {true, FieldKind::DEGREES}, // SPT_CONEROT_Y = 58 + {true, FieldKind::DEGREES}, // SPT_CONEROT_Z = 59 + {false}, // SPT_CONEROT_W = 60 + {true, FieldKind::DEGREES}, // SPT_ROTATE_X = 61 + {true, FieldKind::DEGREES}, // SPT_ROTATE_Y = 62 + {true, FieldKind::DEGREES}, // SPT_ROTATE_Z = 63 + {true, FieldKind::METERS}, // SPT_CONEROT_RADIUS = 64 + {true, FieldKind::METERS}, // SPT_MAT_SCALE_X = 65 + {true, FieldKind::METERS}, // SPT_MAT_SCALE_X = 66 + {true, FieldKind::METERS}, // SPT_MAT_SCALE_X = 67 + {false}, // LAUNCH_FIELDS_END = 68 + {false}, // SPT_SCALE = 69 + {false}, // SPT_SCALEVEL = 70 + {true, FieldKind::END_FLAG} // SPT_END = 71 +}; + const std::unordered_map field_kinds = { {GameVersion::Jak1, field_kind_jak1}, {GameVersion::Jak2, field_kind_jak2}, - {GameVersion::Jak3, field_kind_jak2}}; + {GameVersion::Jak3, field_kind_jak2}, + {GameVersion::JakX, field_kind_jakx}}; float word_as_float(const LinkedWord& w) { ASSERT(w.kind() == LinkedWord::PLAIN_DATA); diff --git a/decompiler/util/type_utils.h b/decompiler/util/type_utils.h index f258c10c57f..dce0b938a9b 100644 --- a/decompiler/util/type_utils.h +++ b/decompiler/util/type_utils.h @@ -14,8 +14,8 @@ bool allowable_base_type_for_symbol_to_string(const TypeSpec& ts); constexpr PerGameVersion SYMBOL_TO_STRING_MEM_OFFSET_DECOMP = { 8167 * 8, jak2::SYM_TO_STRING_OFFSET, - -99999, // not supported this way! + -99999, -99999, // not supported this way! }; -constexpr PerGameVersion OFFSET_OF_NEXT_STATE_STORE = {72, 64, 68}; +constexpr PerGameVersion OFFSET_OF_NEXT_STATE_STORE = {72, 64, 68, 68}; } // namespace decompiler diff --git a/game/common/dgo_rpc_types.h b/game/common/dgo_rpc_types.h index 3879bc76890..847216e2b24 100644 --- a/game/common/dgo_rpc_types.h +++ b/game/common/dgo_rpc_types.h @@ -8,7 +8,7 @@ #include "common/common_types.h" #include "common/versions/versions.h" -constexpr PerGameVersion DGO_RPC_ID(0xdeb4, 0xfab3, 0xfab3); +constexpr PerGameVersion DGO_RPC_ID(0xdeb4, 0xfab3, 0xfab3, 0xfab3); constexpr int DGO_RPC_CHANNEL = 3; constexpr int DGO_RPC_LOAD_FNO = 0; constexpr int DGO_RPC_LOAD_NEXT_FNO = 1; diff --git a/game/common/loader_rpc_types.h b/game/common/loader_rpc_types.h index bd08921e3e1..c2408fba7e6 100644 --- a/game/common/loader_rpc_types.h +++ b/game/common/loader_rpc_types.h @@ -7,5 +7,5 @@ #include "common/versions/versions.h" -constexpr PerGameVersion LOADER_RPC_ID(0xdeb2, 0xfab1, 0xfab1); +constexpr PerGameVersion LOADER_RPC_ID(0xdeb2, 0xfab1, 0xfab1, 0xfab1); constexpr int LOADER_RPC_CHANNEL = 1; diff --git a/game/common/play_rpc_types.h b/game/common/play_rpc_types.h index 3ca16b94bdd..64fb97f8da8 100644 --- a/game/common/play_rpc_types.h +++ b/game/common/play_rpc_types.h @@ -7,5 +7,5 @@ */ #include "common/versions/versions.h" -constexpr PerGameVersion PLAY_RPC_ID(0xdeb6, 0xfab5, 0xfab5); +constexpr PerGameVersion PLAY_RPC_ID(0xdeb6, 0xfab5, 0xfab5, 0xfab5); constexpr int PLAY_RPC_CHANNEL = 5; diff --git a/game/common/player_rpc_types.h b/game/common/player_rpc_types.h index bec6f429dd0..0d97f803155 100644 --- a/game/common/player_rpc_types.h +++ b/game/common/player_rpc_types.h @@ -7,5 +7,5 @@ */ #include "common/versions/versions.h" -constexpr PerGameVersion PLAYER_RPC_ID(0xdeb1, 0xfab0, 0xfab0); +constexpr PerGameVersion PLAYER_RPC_ID(0xdeb1, 0xfab0, 0xfab0, 0xfab0); constexpr int PLAYER_RPC_CHANNEL = 0; diff --git a/game/common/ramdisk_rpc_types.h b/game/common/ramdisk_rpc_types.h index eefe980094e..25d2bd9b803 100644 --- a/game/common/ramdisk_rpc_types.h +++ b/game/common/ramdisk_rpc_types.h @@ -8,7 +8,7 @@ #include "common/common_types.h" #include "common/versions/versions.h" -constexpr PerGameVersion RAMDISK_RPC_ID(0xdeb3, 0xfab2, 0xfab2); +constexpr PerGameVersion RAMDISK_RPC_ID(0xdeb3, 0xfab2, 0xfab2, 0xfab2); constexpr int RAMDISK_RPC_CHANNEL = 2; constexpr int RAMDISK_GET_DATA_FNO = 0; constexpr int RAMDISK_RESET_AND_LOAD_FNO = 1; diff --git a/game/common/str_rpc_types.h b/game/common/str_rpc_types.h index 3aac5ac6856..6a68a0cd875 100644 --- a/game/common/str_rpc_types.h +++ b/game/common/str_rpc_types.h @@ -5,7 +5,7 @@ #include "game/common/overlord_common.h" -constexpr PerGameVersion STR_RPC_ID(0xdeb5, 0xfab4, 0xfab4); +constexpr PerGameVersion STR_RPC_ID(0xdeb5, 0xfab4, 0xfab4, 0xfab4); constexpr int STR_RPC_CHANNEL = 4; /* diff --git a/game/graphics/gfx.cpp b/game/graphics/gfx.cpp index 8709d9bbeb4..e9e5fdfd431 100644 --- a/game/graphics/gfx.cpp +++ b/game/graphics/gfx.cpp @@ -75,7 +75,8 @@ u32 Init(GameVersion version) { { auto p = scoped_prof("startup::gfx::init_main_display"); std::string title = "OpenGOAL"; - if (g_game_version == GameVersion::Jak2 || g_game_version == GameVersion::Jak3) { + if (g_game_version == GameVersion::Jak2 || g_game_version == GameVersion::Jak3 || + g_game_version == GameVersion::JakX) { title += " - Work in Progress"; } title += fmt::format(" - {} - {}", version_to_game_name_external(g_game_version), diff --git a/game/graphics/opengl_renderer/BlitDisplays.cpp b/game/graphics/opengl_renderer/BlitDisplays.cpp index 059e9bb7a4e..e87240bd6a8 100644 --- a/game/graphics/opengl_renderer/BlitDisplays.cpp +++ b/game/graphics/opengl_renderer/BlitDisplays.cpp @@ -14,6 +14,7 @@ void BlitDisplays::init_textures(TexturePool& texture_pool, GameVersion version) tbp = 0x3300; break; case GameVersion::Jak3: + case GameVersion::JakX: tbp = 0x3300; // assuming this for now... break; default: diff --git a/game/graphics/opengl_renderer/CollideMeshRenderer.cpp b/game/graphics/opengl_renderer/CollideMeshRenderer.cpp index c96387cd472..404efe0460e 100644 --- a/game/graphics/opengl_renderer/CollideMeshRenderer.cpp +++ b/game/graphics/opengl_renderer/CollideMeshRenderer.cpp @@ -149,6 +149,7 @@ void CollideMeshRenderer::init_pat_colors(GameVersion version) { break; case GameVersion::Jak2: case GameVersion::Jak3: + case GameVersion::JakX: material_colors = &material_colors_jak2; event_colors = &event_colors_jak2; mode_colors = &mode_colors_jak2; diff --git a/game/graphics/opengl_renderer/DirectRenderer.cpp b/game/graphics/opengl_renderer/DirectRenderer.cpp index d92e5a81ad4..2143bdee52e 100644 --- a/game/graphics/opengl_renderer/DirectRenderer.cpp +++ b/game/graphics/opengl_renderer/DirectRenderer.cpp @@ -11,7 +11,7 @@ DirectRenderer::ScissorState DirectRenderer::m_scissor; -constexpr PerGameVersion game_height(448, 416, 416); +constexpr PerGameVersion game_height(448, 416, 416, 416); DirectRenderer::DirectRenderer(const std::string& name, int my_id, int batch_size) : BucketRenderer(name, my_id), m_prim_buffer(batch_size) { @@ -1049,7 +1049,7 @@ void DirectRenderer::handle_xyz2_packed(const u8* data, handle_xyzf2_common(x << 16, y << 16, z, 0, render_state, prof, !adc); } -PerGameVersion normal_zbp = {448, 304, 304}; +PerGameVersion normal_zbp = {448, 304, 304, 304}; void DirectRenderer::handle_zbuf1(u64 val, SharedRenderState* render_state, ScopedProfilerNode& prof) { diff --git a/game/graphics/opengl_renderer/EyeRenderer.cpp b/game/graphics/opengl_renderer/EyeRenderer.cpp index c4cca5c2e7b..fccc8562925 100644 --- a/game/graphics/opengl_renderer/EyeRenderer.cpp +++ b/game/graphics/opengl_renderer/EyeRenderer.cpp @@ -28,6 +28,7 @@ void EyeRenderer::init_textures(TexturePool& texture_pool, GameVersion version) tbp += EYE_BASE_BLOCK_JAK1; break; case GameVersion::Jak3: + case GameVersion::JakX: // for jak 3, go back to using the right TBP. tbp += EYE_BASE_BLOCK_JAK3; break; diff --git a/game/graphics/opengl_renderer/OpenGLRenderer.cpp b/game/graphics/opengl_renderer/OpenGLRenderer.cpp index 7d88d9c2cea..ce7475cc25c 100644 --- a/game/graphics/opengl_renderer/OpenGLRenderer.cpp +++ b/game/graphics/opengl_renderer/OpenGLRenderer.cpp @@ -104,6 +104,7 @@ OpenGLRenderer::OpenGLRenderer(std::shared_ptr texture_pool, break; case GameVersion::Jak2: case GameVersion::Jak3: + case GameVersion::JakX: m_texture_animator = std::make_shared(m_render_state.shaders, common_level, m_version); break; @@ -124,6 +125,7 @@ OpenGLRenderer::OpenGLRenderer(std::shared_ptr texture_pool, init_bucket_renderers_jak2(); break; case GameVersion::Jak3: + case GameVersion::JakX: init_bucket_renderers_jak3(); break; default: @@ -1415,6 +1417,7 @@ void OpenGLRenderer::dispatch_buckets(DmaFollower dma, dispatch_buckets_jak2(dma, prof, sync_after_buckets); break; case GameVersion::Jak3: + case GameVersion::JakX: dispatch_buckets_jak3(dma, prof, sync_after_buckets); break; default: diff --git a/game/graphics/opengl_renderer/TextureAnimator.cpp b/game/graphics/opengl_renderer/TextureAnimator.cpp index 9025a6daaec..23ae1599cd4 100644 --- a/game/graphics/opengl_renderer/TextureAnimator.cpp +++ b/game/graphics/opengl_renderer/TextureAnimator.cpp @@ -89,6 +89,18 @@ OpenGLTexturePool::OpenGLTexturePool(GameVersion version) { {128, 128, 10}, {256, 1, 2}, {256, 256, 7}}, + {{4, 4, 3}, + {4, 64, 6}, + {16, 16, 5}, + {32, 16, 1}, + {32, 32, 20}, + {32, 64, 1}, + {64, 32, 15}, + {64, 64, 85}, + {64, 128, 4}, + {128, 128, 185}, + {256, 1, 2}, + {256, 256, 7}}, {{4, 4, 3}, {4, 64, 6}, {16, 16, 5}, @@ -234,6 +246,7 @@ int output_slot_by_idx(GameVersion version, const std::string& name) { v = &jak2_animated_texture_slots(); break; case GameVersion::Jak3: + case GameVersion::JakX: v = &jak3_animated_texture_slots(); break; default: @@ -385,6 +398,7 @@ const std::vector& animated_texture_slots(GameVersion version) { case GameVersion::Jak2: return jak2_animated_texture_slots(); case GameVersion::Jak3: + case GameVersion::JakX: return jak3_animated_texture_slots(); default: ASSERT_NOT_REACHED(); @@ -517,6 +531,7 @@ TextureAnimator::TextureAnimator(ShaderLibrary& shaders, setup_texture_anims_jak2(); break; case GameVersion::Jak3: + case GameVersion::JakX: setup_texture_anims_jak3(); break; default: @@ -1191,6 +1206,7 @@ void TextureAnimator::handle_texture_anim_data(DmaFollower& dma, } break; case GameVersion::Jak3: + case GameVersion::JakX: switch (static_cast(vif0.immediate)) { case PcTextureAnimCodesJak3::UPLOAD_CLUT_16_16: { auto p = scoped_prof("clut-16-16"); diff --git a/game/graphics/opengl_renderer/TextureAnimatorDefs.cpp b/game/graphics/opengl_renderer/TextureAnimatorDefs.cpp index 26f2c91a046..27ef5c9bb6a 100644 --- a/game/graphics/opengl_renderer/TextureAnimatorDefs.cpp +++ b/game/graphics/opengl_renderer/TextureAnimatorDefs.cpp @@ -1761,7 +1761,7 @@ void TextureAnimator::setup_texture_anims_common() { } m_security_anim_array_idx = create_fixed_anim_array({env, dot}); - if (this->m_version == GameVersion::Jak3) { + if (this->m_version >= GameVersion::Jak3) { m_comb_field_anim_array_idx = create_fixed_anim_array({env, dot}); } } diff --git a/game/graphics/opengl_renderer/ocean/OceanMidAndFar.cpp b/game/graphics/opengl_renderer/ocean/OceanMidAndFar.cpp index a3f62d9d93c..75e68eb97e6 100644 --- a/game/graphics/opengl_renderer/ocean/OceanMidAndFar.cpp +++ b/game/graphics/opengl_renderer/ocean/OceanMidAndFar.cpp @@ -31,6 +31,7 @@ void OceanMidAndFar::render(DmaFollower& dma, break; case GameVersion::Jak2: case GameVersion::Jak3: + case GameVersion::JakX: render_jak2(dma, render_state, prof); break; } @@ -176,6 +177,7 @@ void OceanMidAndFar::handle_ocean_mid(DmaFollower& dma, break; case GameVersion::Jak2: case GameVersion::Jak3: + case GameVersion::JakX: m_mid_renderer.run_jak2(dma, render_state, prof); } } else { diff --git a/game/graphics/opengl_renderer/ocean/OceanNear.cpp b/game/graphics/opengl_renderer/ocean/OceanNear.cpp index 583a93e0d80..c92e6e5d52f 100644 --- a/game/graphics/opengl_renderer/ocean/OceanNear.cpp +++ b/game/graphics/opengl_renderer/ocean/OceanNear.cpp @@ -39,6 +39,7 @@ void OceanNear::render(DmaFollower& dma, break; case GameVersion::Jak2: case GameVersion::Jak3: + case GameVersion::JakX: render_jak2(dma, render_state, prof); break; } diff --git a/game/graphics/opengl_renderer/ocean/OceanTexture.cpp b/game/graphics/opengl_renderer/ocean/OceanTexture.cpp index a9a95feb909..9e49d5a2bce 100644 --- a/game/graphics/opengl_renderer/ocean/OceanTexture.cpp +++ b/game/graphics/opengl_renderer/ocean/OceanTexture.cpp @@ -69,6 +69,7 @@ void OceanTexture::init_textures(TexturePool& pool, GameVersion version) { break; case GameVersion::Jak2: case GameVersion::Jak3: + case GameVersion::JakX: m_tex0_gpu = pool.give_texture_and_load_to_vram(in, OCEAN_TEX_TBP_JAK2); break; } diff --git a/game/graphics/opengl_renderer/sprite/Sprite3.cpp b/game/graphics/opengl_renderer/sprite/Sprite3.cpp index 03cf5f1b7e6..25927f0c087 100644 --- a/game/graphics/opengl_renderer/sprite/Sprite3.cpp +++ b/game/graphics/opengl_renderer/sprite/Sprite3.cpp @@ -171,7 +171,8 @@ void Sprite3::handle_sprite_frame_setup(DmaFollower& dma, m_frame_data.from_jak1(jak1_data); } break; case GameVersion::Jak2: - case GameVersion::Jak3: { + case GameVersion::Jak3: + case GameVersion::JakX: { render_state->shaders[ShaderId::SPRITE3].activate(); auto frame_data = dma.read_and_advance(); ASSERT(frame_data.size_bytes == (int)sizeof(SpriteFrameData)); // very cool @@ -379,6 +380,7 @@ void Sprite3::render_2d_group1(DmaFollower& dma, ASSERT(run.vifcode1().immediate == SpriteProgMem::Sprites2dHud_Jak2); break; case GameVersion::Jak3: + case GameVersion::JakX: ASSERT_EQ_IMM(run.vifcode1().immediate, (int)SpriteProgMem::Sprites2dHud_Jak3); break; default: @@ -397,6 +399,7 @@ void Sprite3::render(DmaFollower& dma, SharedRenderState* render_state, ScopedPr break; case GameVersion::Jak2: case GameVersion::Jak3: + case GameVersion::JakX: render_jak2(dma, render_state, prof); break; default: @@ -835,7 +838,7 @@ void Sprite3::do_block_common(SpriteMode mode, auto& vert1 = m_vertices_3d.at(start_vtx_id + 0); - if (render_state->version == GameVersion::Jak3) { + if (render_state->version >= GameVersion::Jak3) { auto flag = m_vec_data_2d[sprite_idx].flag(); if ((flag & 0x10) || (flag & 0x20)) { // these flags mean we need to swap vertex order around - not yet implemented since it's too diff --git a/game/graphics/opengl_renderer/sprite/Sprite3_Distort.cpp b/game/graphics/opengl_renderer/sprite/Sprite3_Distort.cpp index ec8c8393935..f71cb6e4bc5 100644 --- a/game/graphics/opengl_renderer/sprite/Sprite3_Distort.cpp +++ b/game/graphics/opengl_renderer/sprite/Sprite3_Distort.cpp @@ -213,6 +213,7 @@ void Sprite3::distort_dma(GameVersion version, DmaFollower& dma, ScopedProfilerN break; case GameVersion::Jak2: case GameVersion::Jak3: + case GameVersion::JakX: expect_zbp = 0x130; expect_th = 9; break; diff --git a/game/graphics/pipelines/opengl.cpp b/game/graphics/pipelines/opengl.cpp index f36bb623343..967e5daa41d 100644 --- a/game/graphics/pipelines/opengl.cpp +++ b/game/graphics/pipelines/opengl.cpp @@ -46,7 +46,8 @@ constexpr bool run_dma_copy = false; constexpr PerGameVersion fr3_level_count(jak1::LEVEL_TOTAL, jak2::LEVEL_TOTAL, - jak3::LEVEL_TOTAL); + jak3::LEVEL_TOTAL, + jakx::LEVEL_TOTAL); struct GraphicsData { // vsync diff --git a/game/graphics/texture/TexturePool.cpp b/game/graphics/texture/TexturePool.cpp index d848bf0d577..b85543872be 100644 --- a/game/graphics/texture/TexturePool.cpp +++ b/game/graphics/texture/TexturePool.cpp @@ -314,6 +314,7 @@ const std::vector& get_tpage_dir(GameVersion version) { case GameVersion::Jak2: return get_jak2_tpage_dir(); case GameVersion::Jak3: + case GameVersion::JakX: return get_jak3_tpage_dir(); default: ASSERT(false); @@ -401,6 +402,7 @@ PcTextureId TexturePool::allocate_pc_port_texture(GameVersion version) { case GameVersion::Jak2: return PcTextureId(get_jak2_tpage_dir().size() - 1, m_next_pc_texture_to_allocate++); case GameVersion::Jak3: + case GameVersion::JakX: return PcTextureId(get_jak3_tpage_dir().size() - 1, m_next_pc_texture_to_allocate++); default: ASSERT_NOT_REACHED(); diff --git a/game/kernel/common/kmemcard.cpp b/game/kernel/common/kmemcard.cpp index 63dd55be360..332e3e9626f 100644 --- a/game/kernel/common/kmemcard.cpp +++ b/game/kernel/common/kmemcard.cpp @@ -91,6 +91,14 @@ const char* filename_jak3[12] = { "BASCUS-97330AYBABTU!/bank4.bin", "BASCUS-97330AYBABTU!/bank5.bin", "BASCUS-97330AYBABTU!/bank6.bin", "BASCUS-97330AYBABTU!/bank7.bin"}; +const char* filename_jakx[12] = { + "BASCUS-97429AYBABTU!", "BASCUS-97429AYBABTU!/icon.sys", + "BASCUS-97429AYBABTU!/icon.ico", "BASCUS-97429AYBABTU!/BASCUS-97429AYBABTU!", + "BASCUS-97429AYBABTU!/bank0.bin", "BASCUS-97429AYBABTU!/bank1.bin", + "BASCUS-97429AYBABTU!/bank2.bin", "BASCUS-97429AYBABTU!/bank3.bin", + "BASCUS-97429AYBABTU!/bank4.bin", "BASCUS-97429AYBABTU!/bank5.bin", + "BASCUS-97429AYBABTU!/bank6.bin", "BASCUS-97429AYBABTU!/bank7.bin"}; + const char* mc_get_filename_no_dir(GameVersion version, int ndx) { const char** filenames = nullptr; switch (version) { @@ -103,6 +111,9 @@ const char* mc_get_filename_no_dir(GameVersion version, int ndx) { case GameVersion::Jak3: filenames = filename_jak3; break; + case GameVersion::JakX: + filenames = filename_jakx; + break; } return filenames[ndx]; } diff --git a/game/kernel/common/kmemcard.h b/game/kernel/common/kmemcard.h index d5532210f4d..0182b1b4746 100644 --- a/game/kernel/common/kmemcard.h +++ b/game/kernel/common/kmemcard.h @@ -11,9 +11,9 @@ void kmemcard_init_globals(); -// TODO: jak 3 stubs -constexpr PerGameVersion SAVE_SIZE(692, 1204, 0); // 691 for jak 1 v1 -constexpr PerGameVersion BANK_SIZE(0x10000, 0x20000, 0x0); +// TODO: jak 3 & jak x stubs +constexpr PerGameVersion SAVE_SIZE(692, 1204, 0, 0); // 691 for jak 1 v1 +constexpr PerGameVersion BANK_SIZE(0x10000, 0x20000, 0x0, 0x0); // each card can be in one of these states: enum class MemoryCardState : u32 { diff --git a/game/kernel/common/kprint.cpp b/game/kernel/common/kprint.cpp index 75960e47e82..0b146992d94 100644 --- a/game/kernel/common/kprint.cpp +++ b/game/kernel/common/kprint.cpp @@ -70,6 +70,7 @@ void init_output() { use_debug = MasterDebug && DebugSegment; break; case GameVersion::Jak3: + case GameVersion::JakX: use_debug = MasterDebug || DebugSegment; break; default: diff --git a/game/mips2c/mips2c_table.cpp b/game/mips2c/mips2c_table.cpp index 8865ef75e8b..fdf1ff96e80 100644 --- a/game/mips2c/mips2c_table.cpp +++ b/game/mips2c/mips2c_table.cpp @@ -564,6 +564,101 @@ PerGameVersion>> gMips2C jak2::shadow_scissor_top::link, jak2::shadow_scissor_edges::link, jak2::shadow_calc_dual_verts::link, jak2::shadow_xform_verts::link}}}, /////////// JAK 3 + {{"lights", + {jak3::light_hash_get_bucket_index::link, jak3::add_light_sphere_to_light_group::link, + jak3::light_hash_count_items::link, jak3::light_hash_add_items::link}}, + {"debug", + {jak3::debug_line_clip::link, jak3::init_boundary_regs::link, + jak3::draw_boundary_polygon::link, jak3::render_boundary_quad::link, + jak3::render_boundary_tri::link, jak3::set_sky_vf27::link}}, + {"generic-effect", + {jak3::generic_light_proc::link, jak3::generic_envmap_proc::link, + jak3::generic_prepare_dma_double::link, jak3::generic_prepare_dma_single::link, + jak3::generic_warp_source_proc::link, jak3::generic_warp_dest_proc::link, + jak3::generic_warp_dest::link, jak3::generic_warp_envmap_dest::link, + jak3::generic_no_light_proc::link}}, + {"font", + {jak3::method_9_font_work::link, jak3::draw_string_asm::link, jak3::get_string_length::link}}, + {"texture", {jak3::adgif_shader_texture_with_update::link}}, + {"collide-func", + {jak3::moving_sphere_triangle_intersect::link, jak3::collide_do_primitives::link}}, + {"joint", {jak3::cspace_parented_transformq_joint::link}}, + {"foreground", + {jak3::foreground_check_longest_edge_asm::link, jak3::foreground_generic_merc::link, + jak3::foreground_merc::link, jak3::foreground_draw_hud::link}}, + {"particle-curves", {jak3::live_func_curve::link, jak3::birth_func_curve::link}}, + {"collide-hash", + {jak3::method_11_collide_hash::link, jak3::method_12_collide_hash::link, + jak3::fill_bg_using_box_new::link, jak3::fill_bg_using_line_sphere_new::link}}, + {"collide-mesh", + {jak3::method_12_collide_mesh::link, jak3::method_14_collide_mesh::link, + jak3::method_15_collide_mesh::link, jak3::method_10_collide_shape_prim_mesh::link}}, + {"collide-cache", + {jak3::method_10_collide_shape_prim_mesh::link, + jak3::method_10_collide_shape_prim_sphere::link, + jak3::method_10_collide_shape_prim_group::link, + jak3::method_11_collide_shape_prim_mesh::link, + jak3::method_11_collide_shape_prim_sphere::link, + jak3::method_11_collide_shape_prim_group::link, jak3::method_9_collide_cache_prim::link, + jak3::method_10_collide_cache_prim::link, jak3::method_17_collide_cache::link, + jak3::method_9_collide_puss_work::link, jak3::method_10_collide_puss_work::link}}, + {"collide-edge-grab", + {jak3::method_10_collide_edge_hold_list::link, jak3::method_19_collide_edge_work::link, + jak3::method_9_edge_grab_info::link, jak3::method_17_collide_edge_work::link, + jak3::method_16_collide_edge_work::link, jak3::method_18_collide_edge_work::link}}, + {"spatial-hash", + {jak3::method_18_grid_hash::link, jak3::method_19_grid_hash::link, + jak3::method_20_grid_hash::link, jak3::method_22_grid_hash::link, + jak3::method_28_sphere_hash::link, jak3::method_32_sphere_hash::link, + jak3::method_29_sphere_hash::link, jak3::method_30_sphere_hash::link, + jak3::method_31_sphere_hash::link, jak3::method_32_spatial_hash::link, + jak3::method_38_spatial_hash::link, jak3::method_35_spatial_hash::link, + jak3::method_36_spatial_hash::link, jak3::method_34_spatial_hash::link}}, + {"sparticle-launcher", + {jak3::sparticle_motion_blur::link, jak3::sp_launch_particles_var::link, + jak3::particle_adgif::link, jak3::sp_init_fields::link}}, + {"sparticle", {jak3::sp_process_block_2d::link, jak3::sp_process_block_3d::link}}, + {"nav-engine", + {jak3::method_21_nav_engine::link, jak3::method_20_nav_engine::link, + jak3::method_18_nav_engine::link, jak3::method_17_nav_engine::link, + jak3::nav_state_patch_pointers::link, jak3::nav_dma_send_from_spr_no_flush::link, + jak3::nav_dma_send_to_spr_no_flush::link}}, + {"nav-control", {jak3::method_39_nav_state::link}}, + {"merc-blend-shape", + {jak3::blerc_execute::link, jak3::setup_blerc_chains_for_one_fragment::link}}, + {"wvehicle-part", {jak3::sparticle_motion_blur_dirt::link}}, + {"ripple", + {jak3::ripple_matrix_scale::link, jak3::ripple_apply_wave_table::link, + jak3::ripple_create_wave_table::link, jak3::ripple_execute_init::link}}, + {"ocean-vu0", + {jak3::method_14_ocean::link, jak3::method_15_ocean::link, jak3::method_16_ocean::link}}, + {"ocean", + {jak3::init_ocean_far_regs::link, jak3::draw_large_polygon_ocean::link, + jak3::render_ocean_quad::link}}, + {"generic-merc", + {jak3::generic_merc_do_chain::link, jak3::generic_merc_execute_asm::link, + jak3::generic_merc_death::link, jak3::generic_merc_query::link, + jak3::generic_translucent::link, jak3::high_speed_reject::link, + jak3::mercneric_convert::link, jak3::generic_merc_init_asm::link}}, + {"sky-tng", + {jak3::set_tex_offset::link, jak3::render_sky_quad::link, jak3::render_sky_tri::link, + jak3::method_17_sky_work::link, jak3::method_18_sky_work::link, + jak3::method_29_sky_work::link, jak3::method_30_sky_work::link, + jak3::method_31_sky_work::link, jak3::method_34_sky_work::link, + jak3::method_35_sky_work::link, jak3::method_32_sky_work::link, + jak3::set_sky_vf23_value::link, jak3::draw_large_polygon::link}}, + {"shadow-cpu", + {jak3::shadow_xform_verts::link, jak3::shadow_execute::link, + jak3::shadow_calc_dual_verts::link, jak3::shadow_scissor_edges::link, + jak3::shadow_scissor_top::link, jak3::shadow_init_vars::link, + jak3::shadow_find_facing_single_tris::link, jak3::shadow_find_facing_double_tris::link, + jak3::shadow_find_single_edges::link, jak3::shadow_find_double_edges::link, + jak3::shadow_add_verts::link, jak3::shadow_add_facing_single_tris::link, + jak3::shadow_add_single_edges::link, jak3::shadow_add_double_edges::link, + jak3::shadow_add_single_tris::link, jak3::shadow_add_double_tris::link}}, + {"cloth", {jak3::method_21_cloth_system::link}}}, + /////////// JAK X + // TODO: point at Jak X {{"lights", {jak3::light_hash_get_bucket_index::link, jak3::add_light_sphere_to_light_group::link, jak3::light_hash_count_items::link, jak3::light_hash_add_items::link}}, diff --git a/game/runtime.cpp b/game/runtime.cpp index 3f41177a2b6..96c1bdf6f04 100644 --- a/game/runtime.cpp +++ b/game/runtime.cpp @@ -232,6 +232,9 @@ void ee_runner(SystemThreadInterface& iface) { case GameVersion::Jak3: jak3::goal_main(g_argc, g_argv); break; + case GameVersion::JakX: + // TODO: point at a Jak X goal_main + jak3::goal_main(g_argc, g_argv); default: ASSERT_MSG(false, "Unsupported game version"); } @@ -271,7 +274,7 @@ void iop_runner(SystemThreadInterface& iface, GameVersion version) { iop::LIBRARY_register(&iop); Gfx::register_vsync_callback([&iop]() { iop.kernel.signal_vblank(); }); - if (version != GameVersion::Jak3) { + if (version != GameVersion::Jak3 && version != GameVersion::JakX) { jak1::dma_init_globals(); jak2::dma_init_globals(); @@ -331,6 +334,7 @@ void iop_runner(SystemThreadInterface& iface, GameVersion version) { jak2::start_overlord_wrapper(iop.overlord_argc, iop.overlord_argv, &complete); break; case GameVersion::Jak3: + case GameVersion::JakX: jak3::start_overlord_wrapper(&complete); break; default: diff --git a/goal_src/jakx/build/all_objs.json b/goal_src/jakx/build/all_objs.json new file mode 100644 index 00000000000..36eaa5b23f3 --- /dev/null +++ b/goal_src/jakx/build/all_objs.json @@ -0,0 +1,2476 @@ +[["dir-tpages", "dir-tpages", 5, ["ART", "GAME"], ""], +["tpage-1", "tpage-1", 5, ["ART", "GAME"], ""], +["tpage-2", "tpage-2", 5, ["ART", "GAME"], ""], +["tpage-3", "tpage-3", 5, ["ART", "GAME"], ""], +["texture-upload", "texture-upload", 5, ["ART", "GAME"], ""], +["tpage-4", "tpage-4", 5, ["ART", "GAME"], ""], +["tpage-5", "tpage-5", 5, ["ART", "GAME"], ""], +["tpage-6", "tpage-6", 5, ["ART", "GAME"], ""], +["tpage-7", "tpage-7", 5, ["ART", "GAME"], ""], +["tpage-8", "tpage-8", 5, ["ART", "GAME"], ""], +["tpage-9", "tpage-9", 5, ["ART", "GAME"], ""], +["tpage-10", "tpage-10", 5, ["ART", "GAME"], ""], +["tpage-11", "tpage-11", 5, ["ART", "GAME"], ""], +["tpage-12", "tpage-12", 5, ["ART", "GAME"], ""], +["tpage-1049", "tpage-1049", 5, ["ART", "GAME"], ""], +["tpage-2533", "tpage-2533", 5, ["ART", "GAME"], ""], +["texture-finish", "texture-finish", 5, ["ART", "GAME"], ""], +["collectables-ag", "collectables", 5, ["ART", "GAME"], ""], +["scenecamera-ag", "scenecamera", 5, ["ART", "GAME"], ""], +["this-way-ag", "this-way", 5, ["ART", "GAME"], ""], +["this-way-b-ag", "this-way-b", 5, ["ART", "GAME"], ""], +["wrong-way-ag", "wrong-way", 5, ["ART", "GAME"], ""], +["starting-linebot-ag", "starting-linebot", 5, ["ART", "GAME"], ""], +["start-banner-ag", "start-banner", 5, ["ART", "GAME"], ""], +["grenade-ag", "grenade", 5, ["ART", "GAME"], ""], +["mine-a-ag", "mine-a", 5, ["ART", "GAME"], ""], +["mine-b-ag", "mine-b", 5, ["ART", "GAME"], ""], +["mine-c-ag", "mine-c", 5, ["ART", "GAME"], ""], +["sentry-bot-ag", "sentry-bot", 5, ["ART", "GAME"], ""], +["missile-a-ag", "missile-a", 5, ["ART", "GAME"], ""], +["muzzle-flash-ag", "muzzle-flash", 5, ["ART", "GAME"], ""], +["gun-ag", "gun", 5, ["ART", "GAME"], ""], +["shield-ag", "shield", 5, ["ART", "GAME"], ""], +["weapon-drone-ag", "weapon-drone", 5, ["ART", "GAME"], ""], +["eco-blue-ag", "eco-blue", 5, ["ART", "GAME"], ""], +["eco-blue-debris-ag", "eco-blue-debris", 5, ["ART", "GAME"], ""], +["eco-green-ag", "eco-green", 5, ["ART", "GAME"], ""], +["eco-red-ag", "eco-red", 5, ["ART", "GAME"], ""], +["eco-yellow-ag", "eco-yellow", 5, ["ART", "GAME"], ""], +["vehicle-explosion-ag", "vehicle-explosion", 5, ["ART", "GAME"], ""], +["car-interior-ag", "car-interior", 5, ["ART", "GAME"], ""], +["plane-screen-ag", "plane-screen", 5, ["ART", "GAME"], ""], +["oil-slick-ag", "oil-slick", 5, ["ART", "GAME"], ""], +["daxter-ag", "daxter", 5, ["ART", "GAME"], ""], +["antenna-all-ag", "antenna-all", 5, ["ART", "GAME"], ""], +["helmet-a-ag", "helmet-a", 5, ["ART", "GAME"], ""], +["helmet-b-ag", "helmet-b", 5, ["ART", "GAME"], ""], +["helmet-c-ag", "helmet-c", 5, ["ART", "GAME"], ""], +["helmet-d-ag", "helmet-d", 5, ["ART", "GAME"], ""], +["helmet-e-ag", "helmet-e", 5, ["ART", "GAME"], ""], +["helmet-f-ag", "helmet-f", 5, ["ART", "GAME"], ""], +["menu2-part", "menu2-part", 5, ["COMMON", "GAME"], ""], +["menu2-COMMON-GAME", "menu2", 5, ["COMMON", "GAME"], ""], +["menu2-MENU2", "menu2", 5, ["MENU2"], ""], +["intro-part", "intro-part", 5, ["COMMON", "GAME"], ""], +["intro-scenes2", "intro-scenes2", 5, ["COMMON", "GAME"], ""], +["intro-scenes", "intro-scenes", 5, ["COMMON", "GAME"], ""], +["intro-scenes3", "intro-scenes3", 5, ["COMMON", "GAME"], ""], +["task-scenes", "task-scenes", 5, ["COMMON", "GAME"], ""], +["menu2-b", "menu2-b", 5, ["COMMON", "GAME"], ""], +["race-part", "race-part", 5, ["COMMON", "GAME"], ""], +["race-obs", "race-obs", 5, ["COMMON", "GAME"], ""], +["camera-facing-quad", "camera-facing-quad", 5, ["COMMON", "GAME"], ""], +["task-arrow", "task-arrow", 5, ["COMMON", "GAME"], ""], +["race-manager", "race-manager", 5, ["COMMON", "GAME"], ""], +["net-anim", "net-anim", 5, ["COMMON", "GAME"], ""], +["net-enemy-h", "net-enemy-h", 5, ["COMMON", "GAME"], ""], +["net-powerup", "net-powerup", 5, ["COMMON", "GAME"], ""], +["net-powerups", "net-powerups", 5, ["COMMON", "GAME"], ""], +["net-eco", "net-eco", 5, ["COMMON", "GAME"], ""], +["net-eco-types", "net-eco-types", 5, ["COMMON", "GAME"], ""], +["net-simple-destruct", "net-simple-destruct", 5, ["COMMON", "GAME"], ""], +["net-enemy", "net-enemy", 5, ["COMMON", "GAME"], ""], +["explosion", "explosion", 5, ["COMMON", "GAME"], ""], +["wvehicle-weapons-data", "wvehicle-weapons-data", 5, ["COMMON", "GAME"], ""], +["net-hud", "net-hud", 5, ["COMMON", "GAME"], ""], +["hud-effects", "hud-effects", 5, ["COMMON", "GAME"], ""], +["hud-widgets", "hud-widgets", 5, ["COMMON", "GAME"], ""], +["hud-results", "hud-results", 5, ["COMMON", "GAME"], ""], +["hud-results-grand-prix", "hud-results-grand-prix", 5, ["COMMON", "GAME"], ""], +["hud-high-scores", "hud-high-scores", 5, ["COMMON", "GAME"], ""], +["hud-cash", "hud-cash", 5, ["COMMON", "GAME"], ""], +["hud-widgets-2", "hud-widgets-2", 5, ["COMMON", "GAME"], ""], +["hud-widgets-3", "hud-widgets-3", 5, ["COMMON", "GAME"], ""], +["hud-widgets-4", "hud-widgets-4", 5, ["COMMON", "GAME"], ""], +["in-game-menu-hud", "in-game-menu-hud", 5, ["COMMON", "GAME"], ""], +["in-game-menu-hud2", "in-game-menu-hud2", 5, ["COMMON", "GAME"], ""], +["net-game-mgr", "net-game-mgr", 5, ["COMMON", "GAME"], ""], +["net-race", "net-race", 5, ["COMMON", "GAME"], ""], +["net-race-hud", "net-race-hud", 5, ["COMMON", "GAME"], ""], +["net-deathrace", "net-deathrace", 5, ["COMMON", "GAME"], ""], +["net-rushhour", "net-rushhour", 5, ["COMMON", "GAME"], ""], +["net-boss-battle", "net-boss-battle", 5, ["COMMON", "GAME"], ""], +["race-sabotage", "race-sabotage", 5, ["COMMON", "GAME"], ""], +["hud-oneoff", "hud-oneoff", 5, ["COMMON", "GAME"], ""], +["net-deathmatch", "net-deathmatch", 5, ["COMMON", "GAME"], ""], +["net-assassin", "net-assassin", 5, ["COMMON", "GAME"], ""], +["wvehicle-hud-h", "wvehicle-hud-h", 5, ["COMMON", "GAME"], ""], +["wvehicle-hud", "wvehicle-hud", 5, ["COMMON", "GAME"], ""], +["hud-widgets-powerhang", "hud-widgets-powerhang", 5, ["COMMON", "GAME"], ""], +["wvehicle-wheel", "wvehicle-wheel", 5, ["COMMON", "GAME"], ""], +["wvehicle-part", "wvehicle-part", 5, ["COMMON", "GAME"], ""], +["wvehicle-weapons-part", "wvehicle-weapons-part", 5, ["COMMON", "GAME"], ""], +["wvehicle-effects", "wvehicle-effects", 5, ["COMMON", "GAME"], ""], +["wvehicle-sounds", "wvehicle-sounds", 5, ["COMMON", "GAME"], ""], +["vehicle-reticle", "vehicle-reticle", 5, ["COMMON", "GAME"], ""], +["wvehicle", "wvehicle", 5, ["COMMON", "GAME"], ""], +["wvehicle-events", "wvehicle-events", 5, ["COMMON", "GAME"], ""], +["wvehicle-util", "wvehicle-util", 5, ["COMMON", "GAME"], ""], +["wvehicle-ai", "wvehicle-ai", 5, ["COMMON", "GAME"], ""], +["wvehicle-states", "wvehicle-states", 5, ["COMMON", "GAME"], ""], +["wvehicle-physics", "wvehicle-physics", 5, ["COMMON", "GAME"], ""], +["hud-player-indicators", "hud-player-indicators", 5, ["COMMON", "GAME"], ""], +["wvehicle-race", "wvehicle-race", 5, ["COMMON", "GAME"], ""], +["wvehicle-net", "wvehicle-net", 5, ["COMMON", "GAME"], ""], +["wcar-projectiles", "wcar-projectiles", 5, ["COMMON", "GAME"], ""], +["wvehicle-weapons-proj", "wvehicle-weapons-proj", 5, ["COMMON", "GAME"], ""], +["wvehicle-weapons-oil", "wvehicle-weapons-oil", 5, ["COMMON", "GAME"], ""], +["wvehicle-weapons", "wvehicle-weapons", 5, ["COMMON", "GAME"], ""], +["wvehicle-weapons-aux", "wvehicle-weapons-aux", 5, ["COMMON", "GAME"], ""], +["wvehicle-weapons2", "wvehicle-weapons2", 5, ["COMMON", "GAME"], ""], +["wvehicle-weapons3", "wvehicle-weapons3", 5, ["COMMON", "GAME"], ""], +["wvehicle-weapons-util", "wvehicle-weapons-util", 5, ["COMMON", "GAME"], ""], +["wcar-skel", "wcar-skel", 5, ["COMMON", "GAME"], ""], +["wcar", "wcar", 5, ["COMMON", "GAME"], ""], +["vehicle-antenna", "vehicle-antenna", 5, ["COMMON", "GAME"], ""], +["wcar-base", "wcar-base", 5, ["COMMON", "GAME"], ""], +["wcar-mongoose", "wcar-mongoose", 5, ["COMMON", "GAME"], ""], +["wcar-falcon", "wcar-falcon", 5, ["COMMON", "GAME"], ""], +["wcar-wombat", "wcar-wombat", 5, ["COMMON", "GAME"], ""], +["wcar-possum", "wcar-possum", 5, ["COMMON", "GAME"], ""], +["wcar-bobcat", "wcar-bobcat", 5, ["COMMON", "GAME"], ""], +["wcar-cougar", "wcar-cougar", 5, ["COMMON", "GAME"], ""], +["wcar-wolf", "wcar-wolf", 5, ["COMMON", "GAME"], ""], +["wcar-bear", "wcar-bear", 5, ["COMMON", "GAME"], ""], +["wcar-leopard", "wcar-leopard", 5, ["COMMON", "GAME"], ""], +["wcar-panther", "wcar-panther", 5, ["COMMON", "GAME"], ""], +["wcar-tiger", "wcar-tiger", 5, ["COMMON", "GAME"], ""], +["wcar-cheetah", "wcar-cheetah", 5, ["COMMON", "GAME"], ""], +["wcar-gila", "wcar-gila", 5, ["COMMON", "GAME"], ""], +["wcar-snake", "wcar-snake", 5, ["COMMON", "GAME"], ""], +["wcar-daxtermobile", "wcar-daxtermobile", 5, ["COMMON", "GAME"], ""], +["drift", "drift", 5, ["COMMON", "GAME"], ""], +["race-mesh", "race-mesh", 5, ["COMMON", "GAME"], ""], +["race-line", "race-line", 5, ["COMMON", "GAME"], ""], +["race-ai-tuning", "race-ai-tuning", 5, ["COMMON", "GAME"], ""], +["minimap", "minimap", 5, ["COMMON", "GAME"], ""], +["jakx-init", "jakx-init", 5, ["COMMON", "GAME"], ""], +["types-h", "types-h", 5, ["ENGINE", "GAME"], ""], +["vu1-macros", "vu1-macros", 5, ["ENGINE", "GAME"], ""], +["math", "math", 5, ["ENGINE", "GAME"], ""], +["vector-h", "vector-h", 5, ["ENGINE", "GAME"], ""], +["gravity-h", "gravity-h", 5, ["ENGINE", "GAME"], ""], +["bounding-box-h", "bounding-box-h", 5, ["ENGINE", "GAME"], ""], +["matrix-h", "matrix-h", 5, ["ENGINE", "GAME"], ""], +["quaternion-h", "quaternion-h", 5, ["ENGINE", "GAME"], ""], +["euler-h", "euler-h", 5, ["ENGINE", "GAME"], ""], +["transform-h", "transform-h", 5, ["ENGINE", "GAME"], ""], +["trigonometry-h", "trigonometry-h", 5, ["ENGINE", "GAME"], ""], +["geometry-h", "geometry-h", 5, ["ENGINE", "GAME"], ""], +["transformq-h", "transformq-h", 5, ["ENGINE", "GAME"], ""], +["bounding-box", "bounding-box", 5, ["ENGINE", "GAME"], ""], +["matrix", "matrix", 5, ["ENGINE", "GAME"], ""], +["matrix-compose", "matrix-compose", 5, ["ENGINE", "GAME"], ""], +["transform", "transform", 5, ["ENGINE", "GAME"], ""], +["quaternion", "quaternion", 5, ["ENGINE", "GAME"], ""], +["euler", "euler", 5, ["ENGINE", "GAME"], ""], +["trigonometry", "trigonometry", 5, ["ENGINE", "GAME"], ""], +["math-fx", "math-fx", 5, ["ENGINE", "GAME"], ""], +["res-h", "res-h", 5, ["ENGINE", "GAME"], ""], +["gsound-h", "gsound-h", 5, ["ENGINE", "GAME"], ""], +["sound-info", "sound-info", 5, ["ENGINE", "GAME"], ""], +["timer-h", "timer-h", 5, ["ENGINE", "GAME"], ""], +["vif-h", "vif-h", 5, ["ENGINE", "GAME"], ""], +["dma-h", "dma-h", 5, ["ENGINE", "GAME"], ""], +["video-h", "video-h", 5, ["ENGINE", "GAME"], ""], +["vu1-user-h", "vu1-user-h", 5, ["ENGINE", "GAME"], ""], +["profile-h", "profile-h", 5, ["ENGINE", "GAME"], ""], +["dma", "dma", 5, ["ENGINE", "GAME"], ""], +["dma-buffer", "dma-buffer", 5, ["ENGINE", "GAME"], ""], +["dma-bucket", "dma-bucket", 5, ["ENGINE", "GAME"], ""], +["dma-disasm", "dma-disasm", 5, ["ENGINE", "GAME"], ""], +["view-h", "view-h", 5, ["ENGINE", "GAME"], ""], +["pad", "pad", 5, ["ENGINE", "GAME"], ""], +["gs", "gs", 5, ["ENGINE", "GAME"], ""], +["display-h", "display-h", 5, ["ENGINE", "GAME"], ""], +["geometry", "geometry", 5, ["ENGINE", "GAME"], ""], +["timer", "timer", 5, ["ENGINE", "GAME"], ""], +["vector", "vector", 5, ["ENGINE", "GAME"], ""], +["file-io", "file-io", 5, ["ENGINE", "GAME"], ""], +["loader-h", "loader-h", 5, ["ENGINE", "GAME"], ""], +["texture-h", "texture-h", 5, ["ENGINE", "GAME"], ""], +["texture-anim-h", "texture-anim-h", 5, ["ENGINE", "GAME"], ""], +["lights-h", "lights-h", 5, ["ENGINE", "GAME"], ""], +["trail-h", "trail-h", 5, ["ENGINE", "GAME"], ""], +["connect", "connect", 5, ["ENGINE", "GAME"], ""], +["mood-h", "mood-h", 5, ["ENGINE", "GAME"], ""], +["level-h", "level-h", 5, ["ENGINE", "GAME"], ""], +["minimap-h", "minimap-h", 5, ["ENGINE", "GAME"], ""], +["main-h", "main-h", 5, ["ENGINE", "GAME"], ""], +["traffic-h", "traffic-h", 5, ["ENGINE", "GAME"], ""], +["game-task-h", "game-task-h", 5, ["ENGINE", "GAME"], ""], +["task-control-h", "task-control-h", 5, ["ENGINE", "GAME"], ""], +["car-info-h", "car-info-h", 5, ["ENGINE", "GAME"], ""], +["car-tables", "car-tables", 5, ["ENGINE", "GAME"], ""], +["capture-h", "capture-h", 5, ["ENGINE", "GAME"], ""], +["math-camera-h", "math-camera-h", 5, ["ENGINE", "GAME"], ""], +["viewport-h", "viewport-h", 5, ["ENGINE", "GAME"], ""], +["blit-displays-h", "blit-displays-h", 5, ["ENGINE", "GAME"], ""], +["sparks-h", "sparks-h", 5, ["ENGINE", "GAME"], ""], +["math-camera", "math-camera", 5, ["ENGINE", "GAME"], ""], +["view", "view", 5, ["ENGINE", "GAME"], ""], +["viewport", "viewport", 5, ["ENGINE", "GAME"], ""], +["font-h", "font-h", 5, ["ENGINE", "GAME"], ""], +["decomp-h", "decomp-h", 5, ["ENGINE", "GAME"], ""], +["time-of-day-h", "time-of-day-h", 5, ["ENGINE", "GAME"], ""], +["profile", "profile", 5, ["ENGINE", "GAME"], ""], +["display", "display", 5, ["ENGINE", "GAME"], ""], +["text-h", "text-h", 5, ["ENGINE", "GAME"], ""], +["camera-defs-h", "camera-defs-h", 5, ["ENGINE", "GAME"], ""], +["settings-h", "settings-h", 5, ["ENGINE", "GAME"], ""], +["memory-usage-h", "memory-usage-h", 5, ["ENGINE", "GAME"], ""], +["sky-h", "sky-h", 5, ["ENGINE", "GAME"], ""], +["ocean-h", "ocean-h", 5, ["ENGINE", "GAME"], ""], +["car-textures", "car-textures", 5, ["ENGINE", "GAME"], ""], +["texture", "texture", 5, ["ENGINE", "GAME"], ""], +["mspace-h", "mspace-h", 5, ["ENGINE", "GAME"], ""], +["drawable-h", "drawable-h", 5, ["ENGINE", "GAME"], ""], +["drawable-group-h", "drawable-group-h", 5, ["ENGINE", "GAME"], ""], +["drawable-inline-array-h", "drawable-inline-array-h", 5, ["ENGINE", "GAME"], ""], +["draw-node-h", "draw-node-h", 5, ["ENGINE", "GAME"], ""], +["drawable-tree-h", "drawable-tree-h", 5, ["ENGINE", "GAME"], ""], +["drawable-actor-h", "drawable-actor-h", 5, ["ENGINE", "GAME"], ""], +["region-h", "region-h", 5, ["ENGINE", "GAME"], ""], +["advanced-options", "advanced-options", 5, ["ENGINE", "GAME"], ""], +["generic-h", "generic-h", 5, ["ENGINE", "GAME"], ""], +["cloth-art-h", "cloth-art-h", 5, ["ENGINE", "GAME"], ""], +["art-h", "art-h", 5, ["ENGINE", "GAME"], ""], +["generic-vu1-h", "generic-vu1-h", 5, ["ENGINE", "GAME"], ""], +["merc-h", "merc-h", 5, ["ENGINE", "GAME"], ""], +["generic-merc-h", "generic-merc-h", 5, ["ENGINE", "GAME"], ""], +["generic-tie-h", "generic-tie-h", 5, ["ENGINE", "GAME"], ""], +["generic-work-h", "generic-work-h", 5, ["ENGINE", "GAME"], ""], +["shadow-cpu-h", "shadow-cpu-h", 5, ["ENGINE", "GAME"], ""], +["shadow-vu1-h", "shadow-vu1-h", 5, ["ENGINE", "GAME"], ""], +["prim-h", "prim-h", 5, ["ENGINE", "GAME"], ""], +["memcard-h", "memcard-h", 5, ["ENGINE", "GAME"], ""], +["game-info-h", "game-info-h", 5, ["ENGINE", "GAME"], ""], +["gui-h", "gui-h", 5, ["ENGINE", "GAME"], ""], +["ambient-h", "ambient-h", 5, ["ENGINE", "GAME"], ""], +["speech-h", "speech-h", 5, ["ENGINE", "GAME"], ""], +["wind-h", "wind-h", 5, ["ENGINE", "GAME"], ""], +["prototype-h", "prototype-h", 5, ["ENGINE", "GAME"], ""], +["joint-h", "joint-h", 5, ["ENGINE", "GAME"], ""], +["bones-h", "bones-h", 5, ["ENGINE", "GAME"], ""], +["foreground-h", "foreground-h", 5, ["ENGINE", "GAME"], ""], +["engines", "engines", 5, ["ENGINE", "GAME"], ""], +["lightning-h", "lightning-h", 5, ["ENGINE", "GAME"], ""], +["res", "res", 5, ["ENGINE", "GAME"], ""], +["lights", "lights", 5, ["ENGINE", "GAME"], ""], +["dynamics-h", "dynamics-h", 5, ["ENGINE", "GAME"], ""], +["pat-h", "pat-h", 5, ["ENGINE", "GAME"], ""], +["fact-h", "fact-h", 5, ["ENGINE", "GAME"], ""], +["penetrate-h", "penetrate-h", 5, ["ENGINE", "GAME"], ""], +["scert-1-h", "scert-1-h", 5, ["ENGINE", "GAME"], ""], +["scert-2-h", "scert-2-h", 5, ["ENGINE", "GAME"], ""], +["scert-3-h", "scert-3-h", 5, ["ENGINE", "GAME"], ""], +["scert-4-h", "scert-4-h", 5, ["ENGINE", "GAME"], ""], +["scert-5-h", "scert-5-h", 5, ["ENGINE", "GAME"], ""], +["scert-6-h", "scert-6-h", 5, ["ENGINE", "GAME"], ""], +["scert-7-h", "scert-7-h", 5, ["ENGINE", "GAME"], ""], +["scert-8-h", "scert-8-h", 5, ["ENGINE", "GAME"], ""], +["scert-9-h", "scert-9-h", 5, ["ENGINE", "GAME"], ""], +["scert-10-h", "scert-10-h", 5, ["ENGINE", "GAME"], ""], +["scert-11-h", "scert-11-h", 5, ["ENGINE", "GAME"], ""], +["scert-funcs", "scert-funcs", 5, ["ENGINE", "GAME"], ""], +["mem-buffer-h", "mem-buffer-h", 5, ["ENGINE", "GAME"], ""], +["net-mgr-h", "net-mgr-h", 5, ["ENGINE", "GAME"], ""], +["obj-list", "obj-list", 5, ["ENGINE", "GAME"], ""], +["process-nettable-h", "process-nettable-h", 5, ["ENGINE", "GAME"], ""], +["game-h", "game-h", 5, ["ENGINE", "GAME"], ""], +["script-h", "script-h", 5, ["ENGINE", "GAME"], ""], +["scene-h", "scene-h", 5, ["ENGINE", "GAME"], ""], +["pov-camera-h", "pov-camera-h", 5, ["ENGINE", "GAME"], ""], +["smush-control-h", "smush-control-h", 5, ["ENGINE", "GAME"], ""], +["debug-h", "debug-h", 5, ["ENGINE", "GAME"], ""], +["joint-mod-h", "joint-mod-h", 5, ["ENGINE", "GAME"], ""], +["collide-func-h", "collide-func-h", 5, ["ENGINE", "GAME"], ""], +["collide-mesh-h", "collide-mesh-h", 5, ["ENGINE", "GAME"], ""], +["collide-shape-h", "collide-shape-h", 5, ["ENGINE", "GAME"], ""], +["generic-obs-h", "generic-obs-h", 5, ["ENGINE", "GAME"], ""], +["trajectory-h", "trajectory-h", 5, ["ENGINE", "GAME"], ""], +["collide-touch-h", "collide-touch-h", 5, ["ENGINE", "GAME"], ""], +["process-drawable-h", "process-drawable-h", 5, ["ENGINE", "GAME"], ""], +["process-focusable", "process-focusable", 5, ["ENGINE", "GAME"], ""], +["focus", "focus", 5, ["ENGINE", "GAME"], ""], +["effect-control-h", "effect-control-h", 5, ["ENGINE", "GAME"], ""], +["collide-frag-h", "collide-frag-h", 5, ["ENGINE", "GAME"], ""], +["collide-hash-h", "collide-hash-h", 5, ["ENGINE", "GAME"], ""], +["water-info-h", "water-info-h", 5, ["ENGINE", "GAME"], ""], +["ragdoll-h", "ragdoll-h", 5, ["ENGINE", "GAME"], ""], +["projectile-h", "projectile-h", 5, ["ENGINE", "GAME"], ""], +["find-nearest-h", "find-nearest-h", 5, ["ENGINE", "GAME"], ""], +["target-h", "target-h", 5, ["ENGINE", "GAME"], ""], +["stats-h", "stats-h", 5, ["ENGINE", "GAME"], ""], +["bsp-h", "bsp-h", 5, ["ENGINE", "GAME"], ""], +["collide-cache-h", "collide-cache-h", 5, ["ENGINE", "GAME"], ""], +["collide-h", "collide-h", 5, ["ENGINE", "GAME"], ""], +["shrubbery-h", "shrubbery-h", 5, ["ENGINE", "GAME"], ""], +["tie-h", "tie-h", 5, ["ENGINE", "GAME"], ""], +["tfrag-h", "tfrag-h", 5, ["ENGINE", "GAME"], ""], +["background-h", "background-h", 5, ["ENGINE", "GAME"], ""], +["subdivide-h", "subdivide-h", 5, ["ENGINE", "GAME"], ""], +["entity-h", "entity-h", 5, ["ENGINE", "GAME"], ""], +["entity-more-perm", "entity-more-perm", 5, ["ENGINE", "GAME"], ""], +["sprite-h", "sprite-h", 5, ["ENGINE", "GAME"], ""], +["simple-sprite-h", "simple-sprite-h", 5, ["ENGINE", "GAME"], ""], +["eye-h", "eye-h", 5, ["ENGINE", "GAME"], ""], +["camera-h", "camera-h", 5, ["ENGINE", "GAME"], ""], +["cam-interface-h", "cam-interface-h", 5, ["ENGINE", "GAME"], ""], +["sparticle-launcher-h", "sparticle-launcher-h", 5, ["ENGINE", "GAME"], ""], +["sparticle-h", "sparticle-h", 5, ["ENGINE", "GAME"], ""], +["actor-link-h", "actor-link-h", 5, ["ENGINE", "GAME"], ""], +["cam-debug-h", "cam-debug-h", 5, ["ENGINE", "GAME"], ""], +["cam-update-h", "cam-update-h", 5, ["ENGINE", "GAME"], ""], +["hud-h", "hud-h", 5, ["ENGINE", "GAME"], ""], +["progress-h", "progress-h", 5, ["ENGINE", "GAME"], ""], +["rpc-h", "rpc-h", 5, ["ENGINE", "GAME"], ""], +["path-h", "path-h", 5, ["ENGINE", "GAME"], ""], +["nav-mesh-h", "nav-mesh-h", 5, ["ENGINE", "GAME"], ""], +["nav-control-h", "nav-control-h", 5, ["ENGINE", "GAME"], ""], +["spatial-hash-h", "spatial-hash-h", 5, ["ENGINE", "GAME"], ""], +["actor-hash-h", "actor-hash-h", 5, ["ENGINE", "GAME"], ""], +["fmv-player-h", "fmv-player-h", 5, ["ENGINE", "GAME"], ""], +["load-dgo", "load-dgo", 5, ["ENGINE", "GAME"], ""], +["ramdisk", "ramdisk", 5, ["ENGINE", "GAME"], ""], +["gsound", "gsound", 5, ["ENGINE", "GAME"], ""], +["transformq", "transformq", 5, ["ENGINE", "GAME"], ""], +["collide-func", "collide-func", 5, ["ENGINE", "GAME"], ""], +["joint", "joint", 5, ["ENGINE", "GAME"], ""], +["joint-mod", "joint-mod", 5, ["ENGINE", "GAME"], ""], +["wind-work", "wind-work", 5, ["ENGINE", "GAME"], ""], +["wind", "wind", 5, ["ENGINE", "GAME"], ""], +["bsp", "bsp", 5, ["ENGINE", "GAME"], ""], +["subdivide", "subdivide", 5, ["ENGINE", "GAME"], ""], +["sprite", "sprite", 5, ["ENGINE", "GAME"], ""], +["sprite-distort", "sprite-distort", 5, ["ENGINE", "GAME"], ""], +["sprite-glow", "sprite-glow", 5, ["ENGINE", "GAME"], ""], +["debug-sphere", "debug-sphere", 5, ["ENGINE", "GAME"], ""], +["debug", "debug", 5, ["ENGINE", "GAME"], ""], +["history", "history", 5, ["ENGINE", "GAME"], ""], +["merc-vu1", "merc-vu1", 5, ["ENGINE", "GAME"], ""], +["emerc-vu1", "emerc-vu1", 5, ["ENGINE", "GAME"], ""], +["merc-blend-shape", "merc-blend-shape", 5, ["ENGINE", "GAME"], ""], +["merc", "merc", 5, ["ENGINE", "GAME"], ""], +["emerc", "emerc", 5, ["ENGINE", "GAME"], ""], +["ripple", "ripple", 5, ["ENGINE", "GAME"], ""], +["bones", "bones", 5, ["ENGINE", "GAME"], ""], +["debug-foreground", "debug-foreground", 5, ["ENGINE", "GAME"], ""], +["foreground", "foreground", 5, ["ENGINE", "GAME"], ""], +["generic-vu0", "generic-vu0", 5, ["ENGINE", "GAME"], ""], +["generic-vu1", "generic-vu1", 5, ["ENGINE", "GAME"], ""], +["generic-effect", "generic-effect", 5, ["ENGINE", "GAME"], ""], +["generic-merc", "generic-merc", 5, ["ENGINE", "GAME"], ""], +["generic-tie", "generic-tie", 5, ["ENGINE", "GAME"], ""], +["shadow-cpu", "shadow-cpu", 5, ["ENGINE", "GAME"], ""], +["shadow-vu1", "shadow-vu1", 5, ["ENGINE", "GAME"], ""], +["warp", "warp", 5, ["ENGINE", "GAME"], ""], +["hflip", "hflip", 5, ["ENGINE", "GAME"], ""], +["texture-anim", "texture-anim", 5, ["ENGINE", "GAME"], ""], +["texture-anim-funcs", "texture-anim-funcs", 5, ["ENGINE", "GAME"], ""], +["texture-anim-tables", "texture-anim-tables", 5, ["ENGINE", "GAME"], ""], +["blit-displays", "blit-displays", 5, ["ENGINE", "GAME"], ""], +["font-data", "font-data", 5, ["ENGINE", "GAME"], ""], +["font", "font", 5, ["ENGINE", "GAME"], ""], +["decomp", "decomp", 5, ["ENGINE", "GAME"], ""], +["background", "background", 5, ["ENGINE", "GAME"], ""], +["draw-node", "draw-node", 5, ["ENGINE", "GAME"], ""], +["shrubbery", "shrubbery", 5, ["ENGINE", "GAME"], ""], +["shrub-work", "shrub-work", 5, ["ENGINE", "GAME"], ""], +["tfrag-near", "tfrag-near", 5, ["ENGINE", "GAME"], ""], +["tfrag", "tfrag", 5, ["ENGINE", "GAME"], ""], +["tfrag-methods", "tfrag-methods", 5, ["ENGINE", "GAME"], ""], +["tfrag-work", "tfrag-work", 5, ["ENGINE", "GAME"], ""], +["tie", "tie", 5, ["ENGINE", "GAME"], ""], +["etie-vu1", "etie-vu1", 5, ["ENGINE", "GAME"], ""], +["etie-near-vu1", "etie-near-vu1", 5, ["ENGINE", "GAME"], ""], +["tie-near", "tie-near", 5, ["ENGINE", "GAME"], ""], +["tie-work", "tie-work", 5, ["ENGINE", "GAME"], ""], +["tie-methods", "tie-methods", 5, ["ENGINE", "GAME"], ""], +["prim", "prim", 5, ["ENGINE", "GAME"], ""], +["trajectory", "trajectory", 5, ["ENGINE", "GAME"], ""], +["sparticle-launcher", "sparticle-launcher", 5, ["ENGINE", "GAME"], ""], +["sparticle-subsampler", "sparticle-subsampler", 5, ["ENGINE", "GAME"], ""], +["sparticle", "sparticle", 5, ["ENGINE", "GAME"], ""], +["entity-table", "entity-table", 5, ["ENGINE", "GAME"], ""], +["loader", "loader", 5, ["ENGINE", "GAME"], ""], +["game-info", "game-info", 5, ["ENGINE", "GAME"], ""], +["game-task", "game-task", 5, ["ENGINE", "GAME"], ""], +["lobby-dma", "lobby-dma", 5, ["ENGINE", "GAME"], ""], +["settings", "settings", 5, ["ENGINE", "GAME"], ""], +["mood-tables", "mood-tables", 5, ["ENGINE", "GAME"], ""], +["mood-tables2", "mood-tables2", 5, ["ENGINE", "GAME"], ""], +["mood", "mood", 5, ["ENGINE", "GAME"], ""], +["mood-funcs", "mood-funcs", 5, ["ENGINE", "GAME"], ""], +["mood-funcs2", "mood-funcs2", 5, ["ENGINE", "GAME"], ""], +["jungle-shared", "jungle-shared", 5, ["ENGINE", "GAME"], ""], +["weather-part", "weather-part", 5, ["ENGINE", "GAME"], ""], +["time-of-day", "time-of-day", 5, ["ENGINE", "GAME"], ""], +["sky-data", "sky-data", 5, ["ENGINE", "GAME"], ""], +["sky-tng", "sky-tng", 5, ["ENGINE", "GAME"], ""], +["load-state", "load-state", 5, ["ENGINE", "GAME"], ""], +["level-info", "level-info", 5, ["ENGINE", "GAME"], ""], +["level", "level", 5, ["ENGINE", "GAME"], ""], +["text", "text", 5, ["ENGINE", "GAME"], ""], +["collide-hash", "collide-hash", 5, ["ENGINE", "GAME"], ""], +["collide-probe", "collide-probe", 5, ["ENGINE", "GAME"], ""], +["collide-frag", "collide-frag", 5, ["ENGINE", "GAME"], ""], +["collide-mesh", "collide-mesh", 5, ["ENGINE", "GAME"], ""], +["collide-touch", "collide-touch", 5, ["ENGINE", "GAME"], ""], +["collide-shape", "collide-shape", 5, ["ENGINE", "GAME"], ""], +["collide-shape-rider", "collide-shape-rider", 5, ["ENGINE", "GAME"], ""], +["collide", "collide", 5, ["ENGINE", "GAME"], ""], +["collide-planes", "collide-planes", 5, ["ENGINE", "GAME"], ""], +["spatial-hash", "spatial-hash", 5, ["ENGINE", "GAME"], ""], +["actor-hash", "actor-hash", 5, ["ENGINE", "GAME"], ""], +["merc-death", "merc-death", 5, ["ENGINE", "GAME"], ""], +["water-h", "water-h", 5, ["ENGINE", "GAME"], ""], +["camera", "camera", 5, ["ENGINE", "GAME"], ""], +["cam-interface", "cam-interface", 5, ["ENGINE", "GAME"], ""], +["cam-master", "cam-master", 5, ["ENGINE", "GAME"], ""], +["cam-combiner", "cam-combiner", 5, ["ENGINE", "GAME"], ""], +["cam-update", "cam-update", 5, ["ENGINE", "GAME"], ""], +["vol-h", "vol-h", 5, ["ENGINE", "GAME"], ""], +["cam-layout", "cam-layout", 5, ["ENGINE", "GAME"], ""], +["cam-debug", "cam-debug", 5, ["ENGINE", "GAME"], ""], +["cam-start", "cam-start", 5, ["ENGINE", "GAME"], ""], +["cloth-h", "cloth-h", 5, ["ENGINE", "GAME"], ""], +["cloth", "cloth", 5, ["ENGINE", "GAME"], ""], +["process-drawable", "process-drawable", 5, ["ENGINE", "GAME"], ""], +["curves", "curves", 5, ["ENGINE", "GAME"], ""], +["ambient", "ambient", 5, ["ENGINE", "GAME"], ""], +["speech", "speech", 5, ["ENGINE", "GAME"], ""], +["region", "region", 5, ["ENGINE", "GAME"], ""], +["script", "script", 5, ["ENGINE", "GAME"], ""], +["generic-obs", "generic-obs", 5, ["ENGINE", "GAME"], ""], +["lightning", "lightning", 5, ["ENGINE", "GAME"], ""], +["light-trails-h", "light-trails-h", 5, ["ENGINE", "GAME"], ""], +["lightning-new-h", "lightning-new-h", 5, ["ENGINE", "GAME"], ""], +["particle-curves", "particle-curves", 5, ["ENGINE", "GAME"], ""], +["light-trails", "light-trails", 5, ["ENGINE", "GAME"], ""], +["lightning-new", "lightning-new", 5, ["ENGINE", "GAME"], ""], +["target-util", "target-util", 5, ["ENGINE", "GAME"], ""], +["logic-target", "logic-target", 5, ["ENGINE", "GAME"], ""], +["debug-part", "debug-part", 5, ["ENGINE", "GAME"], ""], +["attackable-hash", "attackable-hash", 5, ["ENGINE", "GAME"], ""], +["projectile", "projectile", 5, ["ENGINE", "GAME"], ""], +["rigid-body-h", "rigid-body-h", 5, ["ENGINE", "GAME"], ""], +["target-handler", "target-handler", 5, ["ENGINE", "GAME"], ""], +["target", "target", 5, ["ENGINE", "GAME"], ""], +["target-death", "target-death", 5, ["ENGINE", "GAME"], ""], +["gun-util", "gun-util", 5, ["ENGINE", "GAME"], ""], +["menu", "menu", 5, ["ENGINE", "GAME"], ""], +["drawable", "drawable", 5, ["ENGINE", "GAME"], ""], +["drawable-group", "drawable-group", 5, ["ENGINE", "GAME"], ""], +["drawable-inline-array", "drawable-inline-array", 5, ["ENGINE", "GAME"], ""], +["drawable-tree", "drawable-tree", 5, ["ENGINE", "GAME"], ""], +["prototype", "prototype", 5, ["ENGINE", "GAME"], ""], +["main-collide", "main-collide", 5, ["ENGINE", "GAME"], ""], +["video", "video", 5, ["ENGINE", "GAME"], ""], +["main", "main", 5, ["ENGINE", "GAME"], ""], +["collide-cache", "collide-cache", 5, ["ENGINE", "GAME"], ""], +["collide-debug", "collide-debug", 5, ["ENGINE", "GAME"], ""], +["relocate", "relocate", 5, ["ENGINE", "GAME"], ""], +["memory-usage", "memory-usage", 5, ["ENGINE", "GAME"], ""], +["entity", "entity", 5, ["ENGINE", "GAME"], ""], +["path", "path", 5, ["ENGINE", "GAME"], ""], +["vol", "vol", 5, ["ENGINE", "GAME"], ""], +["nav-engine", "nav-engine", 5, ["ENGINE", "GAME"], ""], +["nav-mesh", "nav-mesh", 5, ["ENGINE", "GAME"], ""], +["nav-control", "nav-control", 5, ["ENGINE", "GAME"], ""], +["effect-control", "effect-control", 5, ["ENGINE", "GAME"], ""], +["water-part", "water-part", 5, ["ENGINE", "GAME"], ""], +["water", "water", 5, ["ENGINE", "GAME"], ""], +["water-flow", "water-flow", 5, ["ENGINE", "GAME"], ""], +["task-control", "task-control", 5, ["ENGINE", "GAME"], ""], +["scene", "scene", 5, ["ENGINE", "GAME"], ""], +["movie-path", "movie-path", 5, ["ENGINE", "GAME"], ""], +["pov-camera", "pov-camera", 5, ["ENGINE", "GAME"], ""], +["powerups", "powerups", 5, ["ENGINE", "GAME"], ""], +["hud", "hud", 5, ["ENGINE", "GAME"], ""], +["hud-classes", "hud-classes", 5, ["ENGINE", "GAME"], ""], +["progress", "progress", 5, ["ENGINE", "GAME"], ""], +["ocean-trans-tables", "ocean-trans-tables", 5, ["ENGINE", "GAME"], ""], +["ocean", "ocean", 5, ["ENGINE", "GAME"], ""], +["ocean-mid", "ocean-mid", 5, ["ENGINE", "GAME"], ""], +["ocean-transition", "ocean-transition", 5, ["ENGINE", "GAME"], ""], +["ocean-near", "ocean-near", 5, ["ENGINE", "GAME"], ""], +["sparks", "sparks", 5, ["ENGINE", "GAME"], ""], +["eye", "eye", 5, ["ENGINE", "GAME"], ""], +["mem-buffer", "mem-buffer", 5, ["ENGINE", "GAME"], ""], +["dynamic-mem", "dynamic-mem", 5, ["ENGINE", "GAME"], ""], +["headset-h", "headset-h", 5, ["ENGINE", "GAME"], ""], +["stream-media-h", "stream-media-h", 5, ["ENGINE", "GAME"], ""], +["joint-exploder", "joint-exploder", 5, ["ENGINE", "GAME"], ""], +["debris", "debris", 5, ["ENGINE", "GAME"], ""], +["net-process-mgr-h", "net-process-mgr-h", 5, ["ENGINE", "GAME"], ""], +["statistics", "statistics", 5, ["ENGINE", "GAME"], ""], +["net-mgr-medius-cache-h", "net-mgr-medius-cache-h", 5, ["ENGINE", "GAME"], ""], +["net-mgr-medius-players-h", "net-mgr-medius-players-h", 5, ["ENGINE", "GAME"], ""], +["net-mgr-medius-clans-h", "net-mgr-medius-clans-h", 5, ["ENGINE", "GAME"], ""], +["net-mgr-medius-games-h", "net-mgr-medius-games-h", 5, ["ENGINE", "GAME"], ""], +["net-predict-h", "net-predict-h", 5, ["ENGINE", "GAME"], ""], +["rigid-body-surface-h", "rigid-body-surface-h", 5, ["ENGINE", "GAME"], ""], +["vehicle-h", "vehicle-h", 5, ["ENGINE", "GAME"], ""], +["race-ai-tuning-h", "race-ai-tuning-h", 5, ["ENGINE", "GAME"], ""], +["race-line-h", "race-line-h", 5, ["ENGINE", "GAME"], ""], +["race-h", "race-h", 5, ["ENGINE", "GAME"], ""], +["race-mesh-h", "race-mesh-h", 5, ["ENGINE", "GAME"], ""], +["race-control", "race-control", 5, ["ENGINE", "GAME"], ""], +["wvehicle-weapons-h", "wvehicle-weapons-h", 5, ["ENGINE", "GAME"], ""], +["wvehicle-h", "wvehicle-h", 5, ["ENGINE", "GAME"], ""], +["net-player-h", "net-player-h", 5, ["ENGINE", "GAME"], ""], +["net-world-h", "net-world-h", 5, ["ENGINE", "GAME"], ""], +["net-logging-h", "net-logging-h", 5, ["ENGINE", "GAME"], ""], +["net-powerup-h", "net-powerup-h", 5, ["ENGINE", "GAME"], ""], +["net-game-mgr-h", "net-game-mgr-h", 5, ["ENGINE", "GAME"], ""], +["net-race-h", "net-race-h", 5, ["ENGINE", "GAME"], ""], +["net-game-modes-h", "net-game-modes-h", 5, ["ENGINE", "GAME"], ""], +["net-game-modes2-h", "net-game-modes2-h", 5, ["ENGINE", "GAME"], ""], +["net-simple-destruct-h", "net-simple-destruct-h", 5, ["ENGINE", "GAME"], ""], +["net-hud-h", "net-hud-h", 5, ["ENGINE", "GAME"], ""], +["net-util-h", "net-util-h", 5, ["ENGINE", "GAME"], ""], +["net-proxy-h", "net-proxy-h", 5, ["ENGINE", "GAME"], ""], +["net-projectile-h", "net-projectile-h", 5, ["ENGINE", "GAME"], ""], +["net-time-trial-h", "net-time-trial-h", 5, ["ENGINE", "GAME"], ""], +["net-eco-h", "net-eco-h", 5, ["ENGINE", "GAME"], ""], +["menu2-h", "menu2-h", 5, ["ENGINE", "GAME"], ""], +["menu2-lists", "menu2-lists", 5, ["ENGINE", "GAME"], ""], +["keyboard", "keyboard", 5, ["ENGINE", "GAME"], ""], +["lobby-menu-manager-h", "lobby-menu-manager-h", 5, ["ENGINE", "GAME"], ""], +["hostnames", "hostnames", 5, ["ENGINE", "GAME"], ""], +["net-mgr-async", "net-mgr-async", 5, ["ENGINE", "GAME"], ""], +["net-mgr-chat", "net-mgr-chat", 5, ["ENGINE", "GAME"], ""], +["net-mgr-sysmsg", "net-mgr-sysmsg", 5, ["ENGINE", "GAME"], ""], +["net-mgr", "net-mgr", 5, ["ENGINE", "GAME"], ""], +["net-mgr-dme", "net-mgr-dme", 5, ["ENGINE", "GAME"], ""], +["net-aux-voice", "net-aux-voice", 5, ["ENGINE", "GAME"], ""], +["net-mgr-medius", "net-mgr-medius", 5, ["ENGINE", "GAME"], ""], +["net-mgr-muis", "net-mgr-muis", 5, ["ENGINE", "GAME"], ""], +["net-mgr-medius-cache", "net-mgr-medius-cache", 5, ["ENGINE", "GAME"], ""], +["net-mgr-medius-players", "net-mgr-medius-players", 5, ["ENGINE", "GAME"], ""], +["net-mgr-medius-buddies", "net-mgr-medius-buddies", 5, ["ENGINE", "GAME"], ""], +["net-mgr-medius-clans", "net-mgr-medius-clans", 5, ["ENGINE", "GAME"], ""], +["net-mgr-medius-ladders", "net-mgr-medius-ladders", 5, ["ENGINE", "GAME"], ""], +["net-mgr-medius-rooms", "net-mgr-medius-rooms", 5, ["ENGINE", "GAME"], ""], +["net-mgr-medius-games", "net-mgr-medius-games", 5, ["ENGINE", "GAME"], ""], +["lobby-ghost", "lobby-ghost", 5, ["ENGINE", "GAME"], ""], +["net-mgr-mgcl", "net-mgr-mgcl", 5, ["ENGINE", "GAME"], ""], +["net-mgr-playback", "net-mgr-playback", 5, ["ENGINE", "GAME"], ""], +["net-colarb", "net-colarb", 5, ["ENGINE", "GAME"], ""], +["net-init", "net-init", 5, ["ENGINE", "GAME"], ""], +["net-start", "net-start", 5, ["ENGINE", "GAME"], ""], +["net-process-mgr", "net-process-mgr", 5, ["ENGINE", "GAME"], ""], +["net-http", "net-http", 5, ["ENGINE", "GAME"], ""], +["capture", "capture", 5, ["ENGINE", "GAME"], ""], +["fmv-player", "fmv-player", 5, ["ENGINE", "GAME"], ""], +["game-save", "game-save", 5, ["ENGINE", "GAME"], ""], +["title-obs", "title-obs", 5, ["ENGINE", "GAME"], ""], +["dynamic-patch", "dynamic-patch", 5, ["ENGINE", "GAME"], ""], +["process-nettable", "process-nettable", 5, ["ENGINE", "GAME"], ""], +["net-player", "net-player", 5, ["ENGINE", "GAME"], ""], +["net-util", "net-util", 5, ["ENGINE", "GAME"], ""], +["net-predict", "net-predict", 5, ["ENGINE", "GAME"], ""], +["net-logging", "net-logging", 5, ["ENGINE", "GAME"], ""], +["net-world", "net-world", 5, ["ENGINE", "GAME"], ""], +["stream-media", "stream-media", 5, ["ENGINE", "GAME"], ""], +["net-projectile", "net-projectile", 5, ["ENGINE", "GAME"], ""], +["udp-layer", "udp-layer", 5, ["ENGINE", "GAME"], ""], +["headset", "headset", 5, ["ENGINE", "GAME"], ""], +["idle-control", "idle-control", 5, ["ENGINE", "GAME"], ""], +["water-anim", "water-anim", 5, ["ENGINE", "GAME"], ""], +["rigid-body-debug", "rigid-body-debug", 5, ["ENGINE", "GAME"], ""], +["rigid-body-surface", "rigid-body-surface", 5, ["ENGINE", "GAME"], ""], +["rigid-body", "rigid-body", 5, ["ENGINE", "GAME"], ""], +["rigid-body-queue", "rigid-body-queue", 5, ["ENGINE", "GAME"], ""], +["rigid-body-object", "rigid-body-object", 5, ["ENGINE", "GAME"], ""], +["scene-actor", "scene-actor", 5, ["ENGINE", "GAME"], ""], +["ragdoll-test", "ragdoll-test", 5, ["ENGINE", "GAME"], ""], +["spartacus", "spartacus", 5, ["ENGINE", "GAME"], ""], +["driver", "driver", 5, ["ENGINE", "GAME"], ""], +["helmet", "helmet", 5, ["ENGINE", "GAME"], ""], +["driver-jak", "driver-jak", 5, ["ENGINE", "GAME"], ""], +["driver-ashelin", "driver-ashelin", 5, ["ENGINE", "GAME"], ""], +["driver-razer", "driver-razer", 5, ["ENGINE", "GAME"], ""], +["driver-klever", "driver-klever", 5, ["ENGINE", "GAME"], ""], +["driver-kiera", "driver-kiera", 5, ["ENGINE", "GAME"], ""], +["driver-thug-a", "driver-thug-a", 5, ["ENGINE", "GAME"], ""], +["driver-thug-b", "driver-thug-b", 5, ["ENGINE", "GAME"], ""], +["driver-thug-c", "driver-thug-c", 5, ["ENGINE", "GAME"], ""], +["driver-taryn", "driver-taryn", 5, ["ENGINE", "GAME"], ""], +["driver-torn", "driver-torn", 5, ["ENGINE", "GAME"], ""], +["driver-sig", "driver-sig", 5, ["ENGINE", "GAME"], ""], +["driver-ur-86", "driver-ur-86", 5, ["ENGINE", "GAME"], ""], +["driver-kaeden", "driver-kaeden", 5, ["ENGINE", "GAME"], ""], +["driver-rayn", "driver-rayn", 5, ["ENGINE", "GAME"], ""], +["driver-ratchet", "driver-ratchet", 5, ["ENGINE", "GAME"], ""], +["driver-jaka", "driver-jaka", 5, ["ENGINE", "GAME"], ""], +["driver-jakb", "driver-jakb", 5, ["ENGINE", "GAME"], ""], +["driver-jakc", "driver-jakc", 5, ["ENGINE", "GAME"], ""], +["driver-daxter", "driver-daxter", 5, ["ENGINE", "GAME"], ""], +["driver-gtblitz", "driver-gtblitz", 5, ["ENGINE", "GAME"], ""], +["driver-pecker", "driver-pecker", 5, ["ENGINE", "GAME"], ""], +["driver-ximon", "driver-ximon", 5, ["ENGINE", "GAME"], ""], +["driver-osmo", "driver-osmo", 5, ["ENGINE", "GAME"], ""], +["cam-states", "cam-states", 5, ["ENGINE", "GAME"], ""], +["cam-states-dbg", "cam-states-dbg", 5, ["ENGINE", "GAME"], ""], +["speech-jak", "speech-jak", 5, ["ENGINE", "GAME"], ""], +["speech-daxter", "speech-daxter", 5, ["ENGINE", "GAME"], ""], +["speech-pecker", "speech-pecker", 5, ["ENGINE", "GAME"], ""], +["speech-gtblitz", "speech-gtblitz", 5, ["ENGINE", "GAME"], ""], +["speech-mizo", "speech-mizo", 5, ["ENGINE", "GAME"], ""], +["vehicle-part", "vehicle-part", 5, ["ENGINE", "GAME"], ""], +["vehicle-debris", "vehicle-debris", 5, ["ENGINE", "GAME"], ""], +["vehicle-effects", "vehicle-effects", 5, ["ENGINE", "GAME"], ""], +["vehicle", "vehicle", 5, ["ENGINE", "GAME"], ""], +["wcar-skel-template", "wcar-skel-template", 5, ["ENGINE", "GAME"], ""], +["vehicle-util", "vehicle-util", 5, ["ENGINE", "GAME"], ""], +["vehicle-physics", "vehicle-physics", 5, ["ENGINE", "GAME"], ""], +["vehicle-states", "vehicle-states", 5, ["ENGINE", "GAME"], ""], +["vehicle-manager", "vehicle-manager", 5, ["ENGINE", "GAME"], ""], +["vehicle-hud", "vehicle-hud", 5, ["ENGINE", "GAME"], ""], +["vehicle-net", "vehicle-net", 5, ["ENGINE", "GAME"], ""], +["target-pilot", "target-pilot", 5, ["ENGINE", "GAME"], ""], +["pilot-states", "pilot-states", 5, ["ENGINE", "GAME"], ""], +["find-nearest", "find-nearest", 5, ["ENGINE", "GAME"], ""], +["glist-h", "glist-h", 5, ["ENGINE", "GAME"], ""], +["glist", "glist", 5, ["ENGINE", "GAME"], ""], +["anim-tester", "anim-tester", 5, ["ENGINE", "GAME"], ""], +["viewer", "viewer", 5, ["ENGINE", "GAME"], ""], +["part-tester", "part-tester", 5, ["ENGINE", "GAME"], ""], +["manipulator", "manipulator", 5, ["ENGINE", "GAME"], ""], +["editable-h", "editable-h", 5, ["ENGINE", "GAME"], ""], +["editable", "editable", 5, ["ENGINE", "GAME"], ""], +["editable-player", "editable-player", 5, ["ENGINE", "GAME"], ""], +["mysql-nav-graph", "mysql-nav-graph", 5, ["ENGINE", "GAME"], ""], +["nav-graph-editor", "nav-graph-editor", 5, ["ENGINE", "GAME"], ""], +["nav-mesh-editor-h", "nav-mesh-editor-h", 5, ["ENGINE", "GAME"], ""], +["nav-mesh-editor", "nav-mesh-editor", 5, ["ENGINE", "GAME"], ""], +["sampler", "sampler", 5, ["ENGINE", "GAME"], ""], +["default-menu", "default-menu", 5, ["ENGINE", "GAME"], ""], +["visvol-edit", "visvol-edit", 5, ["ENGINE", "GAME"], ""], +["collision-editor", "collision-editor", 5, ["ENGINE", "GAME"], ""], +["construction-obs-h", "construction-obs-h", 5, ["ENGINE", "GAME"], ""], +["daxter", "daxter", 5, ["ENGINE", "GAME"], ""], +["wvehicle-weapons-debug", "wvehicle-weapons-debug", 5, ["ENGINE", "GAME"], ""], +["spartacus-editor", "spartacus-editor", 5, ["ENGINE", "GAME"], ""], +["gcommon", "gcommon", 5, ["KERNEL"], ""], +["gstring-h", "gstring-h", 5, ["KERNEL"], ""], +["gkernel-h", "gkernel-h", 5, ["KERNEL"], ""], +["gkernel", "gkernel", 5, ["KERNEL"], ""], +["pskernel", "pskernel", 5, ["KERNEL"], ""], +["gstring", "gstring", 5, ["KERNEL"], ""], +["dgo-h", "dgo-h", 5, ["KERNEL"], ""], +["gstate", "gstate", 5, ["KERNEL"], ""], +["tpage-3963", "tpage-3963", 5, ["ASHCRED"], ""], +["tpage-3962", "tpage-3962", 5, ["ASHCRED"], ""], +["ash-hr-cred-ag", "ash-hr-cred", 5, ["ASHCRED"], ""], +["ashcred", "ashcred", 5, ["ASHCRED"], ""], +["speech-ashelin", "speech-ashelin", 5, ["ASHLEV"], ""], +["tpage-3691", "tpage-3691", 5, ["ASHLEV"], ""], +["ashelin-ag", "ashelin", 5, ["ASHLEV"], ""], +["ashlev", "ashlev", 5, ["ASHLEV"], ""], +["tiger-chassis-ag", "tiger-chassis", 5, ["ASHVL", "RAYVL2", "TIGEL", "TORVL"], ""], +["tiger-door-c-ag", "tiger-door-c", 5, ["ASHVL", "TIGEL"], ""], +["tiger-f-fender-b-ag", "tiger-f-fender-b", 5, ["ASHVL", "TIGEL"], ""], +["tiger-hood-d-ag", "tiger-hood-d", 5, ["ASHVL", "TIGEL"], ""], +["tiger-r-fender-d-ag", "tiger-r-fender-d", 5, ["ASHVL", "TIGEL"], ""], +["tiger-roof-c-ag", "tiger-roof-c", 5, ["ASHVL", "TIGEL"], ""], +["wheel-e-ag", "wheel-e", 5, ["ASHVL", "BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "LEOPL", "MONGL", "PANTL", "POSSL", "SNAKL", "THBVL2", "TIGEL", "WOLFL", "WOMBL"], ""], +["ashvl", "ashvl", 5, ["ASHVL"], ""], +["falcon-chassis-ag", "falcon-chassis", 5, ["ASHVL2", "FALCL", "GTBVL", "JAKVL", "THCVL2"], ""], +["falcon-door-e-ag", "falcon-door-e", 5, ["ASHVL2", "FALCL"], ""], +["falcon-hood-e-ag", "falcon-hood-e", 5, ["ASHVL2", "FALCL"], ""], +["falcon-roof-e-ag", "falcon-roof-e", 5, ["ASHVL2", "FALCL"], ""], +["falcon-trunk-e-ag", "falcon-trunk-e", 5, ["ASHVL2", "FALCL"], ""], +["wheel-n-ag", "wheel-n", 5, ["ASHVL2", "BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "LEOPL", "MONGL", "PANTL", "POSSL", "SNAKL", "THCVL3", "TIGEL", "WOLFL", "WOMBL"], ""], +["ashvl2", "ashvl2", 5, ["ASHVL2"], ""], +["wheel-t-ag", "wheel-t", 5, ["ASHVL3", "BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "LEOPL", "MONGL", "PANTL", "POSSL", "SNAKL", "TIGEL", "TORVL3", "WOLFL", "WOMBL"], ""], +["wombat-chassis-ag", "wombat-chassis", 5, ["ASHVL3", "THCVL", "WOMBL"], ""], +["wombat-door-e-ag", "wombat-door-e", 5, ["ASHVL3", "WOMBL"], ""], +["wombat-hood-e-ag", "wombat-hood-e", 5, ["ASHVL3", "WOMBL"], ""], +["wombat-r-fender-b-ag", "wombat-r-fender-b", 5, ["ASHVL3", "WOMBL"], ""], +["wombat-roof-b-ag", "wombat-roof-b", 5, ["ASHVL3", "THCVL", "WOMBL"], ""], +["wombat-trunk-d-ag", "wombat-trunk-d", 5, ["ASHVL3", "WOMBL"], ""], +["ashvl3", "ashvl3", 5, ["ASHVL3"], ""], +["atoll-ocean", "atoll-ocean", 5, ["ATL", "ATX"], ""], +["atoll-effects", "atoll-effects", 5, ["ATL", "ATX"], ""], +["atoll-part", "atoll-part", 5, ["ATL", "ATX"], ""], +["atoll-obs", "atoll-obs", 5, ["ATL", "ATX"], ""], +["tpage-3039", "tpage-3039", 5, ["ATL"], ""], +["tpage-3042", "tpage-3042", 5, ["ATL"], ""], +["tpage-3040", "tpage-3040", 5, ["ATL"], ""], +["tpage-3041", "tpage-3041", 5, ["ATL"], ""], +["tpage-3038", "tpage-3038", 5, ["ATL"], ""], +["atoll-dish-ag", "atoll-dish", 5, ["ATL", "ATX"], ""], +["atoll-rotor-ag", "atoll-rotor", 5, ["ATL", "ATX"], ""], +["atoll-vis", "atoll-vis", 5, ["ATL"], ""], +["net-artifact", "net-artifact", 5, ["ATOLLART", "CLIFFART", "COLART", "DESART", "DISLEART", "KCROSART", "SNOBART"], ""], +["tpage-2759", "tpage-2759", 5, ["ATOLLART"], ""], +["pre-artifact-a-ag", "pre-artifact-a", 5, ["ATOLLART", "CLIFFART", "COLART", "DESART", "DISLEART", "KCROSART", "KRASFOOT", "SNOBART"], ""], +["pre-artifact-d-ag", "pre-artifact-d", 5, ["ATOLLART", "CLIFFART", "COLART", "DESART", "DISLEART", "KCROSART", "KRASFOOT", "SNOBART"], ""], +["pre-artifact-b-ag", "pre-artifact-b", 5, ["ATOLLART", "CLIFFART", "COLART", "DESART", "DISLEART", "KCROSART", "KRASFOOT", "SNOBART"], ""], +["pre-artifact-c-ag", "pre-artifact-c", 5, ["ATOLLART", "CLIFFART", "COLART", "DESART", "DISLEART", "KCROSART", "KRASFOOT", "SNOBART"], ""], +["atollart", "atollart", 5, ["ATOLLART"], ""], +["ctf-part", "ctf-part", 5, ["ATOLLCTF", "CLIFCTF", "COLICTF", "DESACTF", "DISLECTF", "KCROSCTF", "SBWLCTF"], ""], +["ctf-obs", "ctf-obs", 5, ["ATOLLCTF", "CLIFCTF", "COLICTF", "DESACTF", "DISLECTF", "KCROSCTF", "SBWLCTF"], ""], +["net-ctf", "net-ctf", 5, ["ATOLLCTF", "CLIFCTF", "COLICTF", "DESACTF", "DISLECTF", "KCROSCTF", "SBWLCTF"], ""], +["tpage-2760", "tpage-2760", 5, ["ATOLLCTF"], ""], +["tpage-2761", "tpage-2761", 5, ["ATOLLCTF"], ""], +["ctf-base-ag", "ctf-base", 5, ["ATOLLCTF", "CLIFCTF", "COLICTF", "DESACTF", "DISLECTF", "KCROSCTF", "SBWLCTF"], ""], +["fuel-cell-ag", "fuel-cell", 5, ["ATOLLCTF", "CANFOOT", "CLIFCTF", "CNSPFOOT", "COLICTF", "DESACTF", "DISLECTF", "DKKRFOOT", "DOCKFOOT", "DRDKFOOT", "DROMFOOT", "HAVNFOOT", "HAVTFOOT", "HJNGFOOT", "HVSWFOOT", "ICEBFOOT", "ICEFOOT", "ICEPFOOT", "ICETFOOT", "JUNGFOOT", "KCROSCTF", "KRASFOOT", "KRATFOOT", "PEAKFOOT", "SBWLCTF", "SEWFOOT", "SNOWFOOT", "SPARFOOT", "SPATFOOT", "SPTMFOOT", "TEMPFOOT"], ""], +["atollctf", "atollctf", 5, ["ATOLLCTF"], ""], +["tpage-3105", "tpage-3105", 5, ["ATOLLS"], ""], +["atolls", "atolls", 5, ["ATOLLS"], ""], +["net-beasthunt", "net-beasthunt", 5, ["ATOPLOW", "CLIFHUNT", "DESHUNT", "DESHUNT2", "DESRAPT", "KCRSPLOW"], ""], +["plow", "plow", 5, ["ATOPLOW", "KCRSPLOW"], ""], +["tpage-3717", "tpage-3717", 5, ["ATOPLOW"], ""], +["plow-ag", "plow", 5, ["ATOPLOW", "KCRSPLOW"], ""], +["plow-debris-ag", "plow-debris", 5, ["ATOPLOW", "KCRSPLOW"], ""], +["atoplow", "atoplow", 5, ["ATOPLOW"], ""], +["tpage-3033", "tpage-3033", 5, ["ATX"], ""], +["tpage-3037", "tpage-3037", 5, ["ATX"], ""], +["tpage-3035", "tpage-3035", 5, ["ATX"], ""], +["tpage-3036", "tpage-3036", 5, ["ATX"], ""], +["atollx-vis", "atollx-vis", 5, ["ATX"], ""], +["bear-chassis-ag", "bear-chassis", 5, ["BEARL", "KLEVL2", "SIGVL3", "UR8VL"], ""], +["bear-door-a-ag", "bear-door-a", 5, ["BEARL"], ""], +["bear-door-b-ag", "bear-door-b", 5, ["BEARL", "UR8VL"], ""], +["bear-door-c-ag", "bear-door-c", 5, ["BEARL", "SIGVL3"], ""], +["bear-door-d-ag", "bear-door-d", 5, ["BEARL", "KLEVL2"], ""], +["bear-door-e-ag", "bear-door-e", 5, ["BEARL"], ""], +["bear-hood-a-ag", "bear-hood-a", 5, ["BEARL"], ""], +["bear-hood-b-ag", "bear-hood-b", 5, ["BEARL", "UR8VL"], ""], +["bear-hood-c-ag", "bear-hood-c", 5, ["BEARL", "SIGVL3"], ""], +["bear-hood-d-ag", "bear-hood-d", 5, ["BEARL"], ""], +["bear-hood-e-ag", "bear-hood-e", 5, ["BEARL", "KLEVL2"], ""], +["bear-r-fender-a-ag", "bear-r-fender-a", 5, ["BEARL"], ""], +["bear-r-fender-b-ag", "bear-r-fender-b", 5, ["BEARL", "UR8VL"], ""], +["bear-r-fender-c-ag", "bear-r-fender-c", 5, ["BEARL", "KLEVL2"], ""], +["bear-r-fender-d-ag", "bear-r-fender-d", 5, ["BEARL"], ""], +["bear-r-fender-e-ag", "bear-r-fender-e", 5, ["BEARL", "SIGVL3"], ""], +["bear-roof-a-ag", "bear-roof-a", 5, ["BEARL", "UR8VL"], ""], +["bear-roof-b-ag", "bear-roof-b", 5, ["BEARL", "KLEVL2"], ""], +["bear-roof-c-ag", "bear-roof-c", 5, ["BEARL"], ""], +["bear-roof-d-ag", "bear-roof-d", 5, ["BEARL"], ""], +["bear-roof-e-ag", "bear-roof-e", 5, ["BEARL", "SIGVL3"], ""], +["bear-trunk-a-ag", "bear-trunk-a", 5, ["BEARL"], ""], +["bear-trunk-b-ag", "bear-trunk-b", 5, ["BEARL", "UR8VL"], ""], +["bear-trunk-c-ag", "bear-trunk-c", 5, ["BEARL", "KLEVL2"], ""], +["bear-trunk-d-ag", "bear-trunk-d", 5, ["BEARL"], ""], +["bear-trunk-e-ag", "bear-trunk-e", 5, ["BEARL", "SIGVL3"], ""], +["wheel-a-ag", "wheel-a", 5, ["BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "KIEVL", "LEOPL", "MONGL", "PANTL", "POSSL", "RAYVL2", "SNAKL", "TIGEL", "WOLFL", "WOMBL"], ""], +["wheel-b-ag", "wheel-b", 5, ["BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "LEOPL", "MONGL", "PANTL", "POSSL", "SNAKL", "TIGEL", "WOLFL", "WOMBL"], ""], +["wheel-c-ag", "wheel-c", 5, ["BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "LEOPL", "MONGL", "PANTL", "POSSL", "SNAKL", "THAVL", "TIGEL", "TORVL2", "WOLFL", "WOMBL"], ""], +["wheel-d-ag", "wheel-d", 5, ["BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "LEOPL", "MONGL", "PANTL", "PECVL", "POSSL", "SNAKL", "THCVL", "TIGEL", "WOLFL", "WOMBL"], ""], +["wheel-f-ag", "wheel-f", 5, ["BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "LEOPL", "MONGL", "PANTL", "POSSL", "SNAKL", "TIGEL", "WOLFL", "WOMBL"], ""], +["wheel-g-ag", "wheel-g", 5, ["BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "LEOPL", "MONGL", "PANTL", "POSSL", "SNAKL", "THBVL", "TIGEL", "WOLFL", "WOMBL"], ""], +["wheel-h-ag", "wheel-h", 5, ["BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "JAKVL", "LEOPL", "MONGL", "PANTL", "POSSL", "SNAKL", "TIGEL", "TORVL", "WOLFL", "WOMBL"], ""], +["wheel-i-ag", "wheel-i", 5, ["BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "KLEVL", "LEOPL", "MONGL", "PANTL", "POSSL", "RAYVL", "SNAKL", "TIGEL", "UR8VL", "WOLFL", "WOMBL"], ""], +["wheel-j-ag", "wheel-j", 5, ["BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "LEOPL", "MONGL", "PANTL", "POSSL", "SIGVL", "SNAKL", "TIGEL", "WOLFL", "WOMBL"], ""], +["wheel-k-ag", "wheel-k", 5, ["BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "GTBVL", "LEOPL", "MONGL", "PANTL", "POSSL", "RAZVL", "SNAKL", "TIGEL", "WOLFL", "WOMBL"], ""], +["wheel-l-ag", "wheel-l", 5, ["BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "LEOPL", "MONGL", "PANTL", "POSSL", "SIGVL3", "SNAKL", "TIGEL", "WOLFL", "WOMBL"], ""], +["wheel-m-ag", "wheel-m", 5, ["BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "KLEVL2", "LEOPL", "MONGL", "PANTL", "POSSL", "SNAKL", "TIGEL", "WOLFL", "WOMBL"], ""], +["wheel-o-ag", "wheel-o", 5, ["BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "LEOPL", "MONGL", "PANTL", "POSSL", "SNAKL", "THAVL2", "THAVL3", "TIGEL", "WOLFL", "WOMBL"], ""], +["wheel-p-ag", "wheel-p", 5, ["BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "LEOPL", "MONGL", "PANTL", "POSSL", "SNAKL", "THBVL3", "TIGEL", "WOLFL", "WOMBL"], ""], +["wheel-q-ag", "wheel-q", 5, ["BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "LEOPL", "MONGL", "PANTL", "POSSL", "SNAKL", "TIGEL", "UR8VL3", "WOLFL", "WOMBL"], ""], +["wheel-r-ag", "wheel-r", 5, ["BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "LEOPL", "MONGL", "PANTL", "POSSL", "SNAKL", "THCVL2", "TIGEL", "WOLFL", "WOMBL"], ""], +["wheel-s-ag", "wheel-s", 5, ["BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "LEOPL", "MONGL", "PANTL", "POSSL", "SNAKL", "TIGEL", "UR8VL2", "WOLFL", "WOMBL"], ""], +["wheel-u-ag", "wheel-u", 5, ["BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "LEOPL", "MONGL", "PANTL", "POSSL", "SIGVL2", "SNAKL", "TIGEL", "WOLFL", "WOMBL"], ""], +["wheel-v-ag", "wheel-v", 5, ["BEARL", "BOBCL", "CHEEL", "COUGL", "DAXTL", "FALCL", "GILAL", "LEOPL", "MONGL", "PANTL", "POSSL", "SNAKL", "TIGEL", "WOLFL", "WOMBL"], ""], +["bearl", "bearl", 5, ["BEARL"], ""], +["bobcat-chassis-ag", "bobcat-chassis", 5, ["BOBCL", "KIEVL", "PECVL", "UR8VL2"], ""], +["bobcat-door-a-ag", "bobcat-door-a", 5, ["BOBCL"], ""], +["bobcat-door-b-ag", "bobcat-door-b", 5, ["BOBCL"], ""], +["bobcat-door-c-ag", "bobcat-door-c", 5, ["BOBCL"], ""], +["bobcat-door-d-ag", "bobcat-door-d", 5, ["BOBCL", "KIEVL", "PECVL", "UR8VL2"], ""], +["bobcat-door-e-ag", "bobcat-door-e", 5, ["BOBCL"], ""], +["bobcat-f-fender-a-ag", "bobcat-f-fender-a", 5, ["BOBCL"], ""], +["bobcat-f-fender-b-ag", "bobcat-f-fender-b", 5, ["BOBCL", "KIEVL"], ""], +["bobcat-f-fender-c-ag", "bobcat-f-fender-c", 5, ["BOBCL", "UR8VL2"], ""], +["bobcat-f-fender-d-ag", "bobcat-f-fender-d", 5, ["BOBCL"], ""], +["bobcat-f-fender-e-ag", "bobcat-f-fender-e", 5, ["BOBCL", "PECVL"], ""], +["bobcat-hood-a-ag", "bobcat-hood-a", 5, ["BOBCL"], ""], +["bobcat-hood-b-ag", "bobcat-hood-b", 5, ["BOBCL"], ""], +["bobcat-hood-c-ag", "bobcat-hood-c", 5, ["BOBCL", "KIEVL"], ""], +["bobcat-hood-d-ag", "bobcat-hood-d", 5, ["BOBCL", "PECVL"], ""], +["bobcat-hood-e-ag", "bobcat-hood-e", 5, ["BOBCL"], ""], +["bobcat-r-fender-a-ag", "bobcat-r-fender-a", 5, ["BOBCL"], ""], +["bobcat-r-fender-b-ag", "bobcat-r-fender-b", 5, ["BOBCL"], ""], +["bobcat-r-fender-c-ag", "bobcat-r-fender-c", 5, ["BOBCL", "KIEVL"], ""], +["bobcat-r-fender-d-ag", "bobcat-r-fender-d", 5, ["BOBCL"], ""], +["bobcat-r-fender-e-ag", "bobcat-r-fender-e", 5, ["BOBCL", "PECVL", "UR8VL2"], ""], +["bobcat-roof-a-ag", "bobcat-roof-a", 5, ["BOBCL"], ""], +["bobcat-roof-b-ag", "bobcat-roof-b", 5, ["BOBCL"], ""], +["bobcat-roof-c-ag", "bobcat-roof-c", 5, ["BOBCL", "PECVL"], ""], +["bobcat-roof-d-ag", "bobcat-roof-d", 5, ["BOBCL", "KIEVL"], ""], +["bobcat-roof-e-ag", "bobcat-roof-e", 5, ["BOBCL", "UR8VL2"], ""], +["bobcl", "bobcl", 5, ["BOBCL"], ""], +["tpage-546", "tpage-546", 5, ["BRDROOM", "BRDROOMF"], ""], +["tpage-1544", "tpage-1544", 5, ["BRDROOM", "BRDROOMF"], ""], +["tpage-1119", "tpage-1119", 5, ["BRDROOM", "BRDROOMF"], ""], +["brd-pool-water-ag", "brd-pool-water", 5, ["BRDROOM", "BRDROOMF"], ""], +["brdroom", "brdroom", 5, ["BRDROOM", "BRDROOMF"], ""], +["brdroom-obs", "brdroom-obs", 5, ["BRDROOMF"], ""], +["brdroom-part", "brdroom-part", 5, ["BRDROOMF"], ""], +["raceline-weapon", "raceline-weapon", 5, ["CANFOOT", "CNSPFOOT", "DKKRFOOT", "DOCKFOOT", "DRDKFOOT", "DROMFOOT", "HAVNFOOT", "HAVTFOOT", "HJNGFOOT", "HVSWFOOT", "ICEBFOOT", "ICEFOOT", "ICEPFOOT", "ICETFOOT", "JUNGFOOT", "KRASFOOT", "KRATFOOT", "PEAKFOOT", "RACEWEAP", "SEWFOOT", "SNOWFOOT", "SPARFOOT", "SPATFOOT", "SPTMFOOT", "TEMPFOOT"], ""], +["wvehicle-weapons-chicken-drone", "wvehicle-weapons-chicken-drone", 5, ["CANFOOT", "CNSPFOOT", "DKKRFOOT", "DOCKFOOT", "DRDKFOOT", "DROMFOOT", "HAVNFOOT", "HAVTFOOT", "HJNGFOOT", "HVSWFOOT", "ICEBFOOT", "ICEFOOT", "ICEPFOOT", "ICETFOOT", "JUNGFOOT", "KRASFOOT", "KRATFOOT", "PEAKFOOT", "RACEWEAP", "SEWFOOT", "SNOWFOOT", "SPARFOOT", "SPATFOOT", "SPTMFOOT", "TEMPFOOT"], ""], +["football", "football", 5, ["CANFOOT", "CNSPFOOT", "DKKRFOOT", "DOCKFOOT", "DRDKFOOT", "DROMFOOT", "HAVNFOOT", "HAVTFOOT", "HJNGFOOT", "HVSWFOOT", "ICEBFOOT", "ICEFOOT", "ICEPFOOT", "ICETFOOT", "JUNGFOOT", "KRASFOOT", "KRATFOOT", "PEAKFOOT", "SEWFOOT", "SNOWFOOT", "SPARFOOT", "SPATFOOT", "SPTMFOOT", "TEMPFOOT"], ""], +["football2", "football2", 5, ["CANFOOT", "CNSPFOOT", "DKKRFOOT", "DOCKFOOT", "DRDKFOOT", "DROMFOOT", "HAVNFOOT", "HAVTFOOT", "HJNGFOOT", "HVSWFOOT", "ICEBFOOT", "ICEFOOT", "ICEPFOOT", "ICETFOOT", "JUNGFOOT", "KRASFOOT", "KRATFOOT", "PEAKFOOT", "SEWFOOT", "SNOWFOOT", "SPARFOOT", "SPATFOOT", "SPTMFOOT", "TEMPFOOT"], ""], +["tpage-2591", "tpage-2591", 5, ["CANFOOT"], ""], +["tpage-2592", "tpage-2592", 5, ["CANFOOT"], ""], +["fuel-cell-shield-ag", "fuel-cell-shield", 5, ["CANFOOT", "CNSPFOOT", "DKKRFOOT", "DOCKFOOT", "DRDKFOOT", "DROMFOOT", "HAVNFOOT", "HAVTFOOT", "HJNGFOOT", "HVSWFOOT", "ICEBFOOT", "ICEFOOT", "ICEPFOOT", "ICETFOOT", "JUNGFOOT", "KRASFOOT", "KRATFOOT", "PEAKFOOT", "SEWFOOT", "SNOWFOOT", "SPARFOOT", "SPATFOOT", "SPTMFOOT", "TEMPFOOT"], ""], +["canfoot", "canfoot", 5, ["CANFOOT"], ""], +["tpage-2205", "tpage-2205", 5, ["CANSPARS"], ""], +["tpage-2207", "tpage-2207", 5, ["CANSPARS"], ""], +["tpage-2324", "tpage-2324", 5, ["CANSPARS"], ""], +["canspars", "canspars", 5, ["CANSPARS"], ""], +["spargus-obs", "spargus-obs", 5, ["CANSPARW", "CSX", "SPARGUSW", "SPARTEMW", "SPX", "STX"], ""], +["canspar-ocean", "canspar-ocean", 5, ["CANSPARW", "CSX"], ""], +["canyon-part", "canyon-part", 5, ["CANSPARW", "CANYONW", "CSX", "CYX", "SPATOURW"], ""], +["canyon-effects", "canyon-effects", 5, ["CANSPARW", "CANYONW", "CSX", "CYX", "SPATOURW"], ""], +["tpage-2236", "tpage-2236", 5, ["CANSPARW"], ""], +["cansparw", "cansparw", 5, ["CANSPARW"], ""], +["net-time-box", "net-time-box", 5, ["CANTBOX", "CNSPTBOX", "DKKRTBOX", "DOCKTBOX", "DRDKTBOX", "DROMTBOX", "HAVNTBOX", "HAVTTBOX", "HVJGTBOX", "HVSWTBOX", "ICEBTBOX", "ICEPTBOX", "ICETBOX", "ICETTBOX", "JUNGTBOX", "KRASTBOX", "KRATTBOX", "PEAKTBOX", "SEWTBOX", "SNOWTBOX", "SPATTBOX", "SPRGSTBX", "SPTMTBOX", "TEMPTBOX"], ""], +["time-box-obs", "time-box-obs", 5, ["CANTBOX", "CNSPTBOX", "DKKRTBOX", "DOCKTBOX", "DRDKTBOX", "DROMTBOX", "HAVNTBOX", "HAVTTBOX", "HVJGTBOX", "HVSWTBOX", "ICEBTBOX", "ICEPTBOX", "ICETBOX", "ICETTBOX", "JUNGTBOX", "KRASTBOX", "KRATTBOX", "PEAKTBOX", "SEWTBOX", "SNOWTBOX", "SPATTBOX", "SPRGSTBX", "SPTMTBOX", "TEMPTBOX"], ""], +["tpage-2593", "tpage-2593", 5, ["CANTBOX"], ""], +["tpage-2668", "tpage-2668", 5, ["CANTBOX"], ""], +["time-freeze-ag", "time-freeze", 5, ["CANTBOX", "CNSPTBOX", "DKKRTBOX", "DOCKTBOX", "DRDKTBOX", "DROMTBOX", "HAVNTBOX", "HAVTTBOX", "HVJGTBOX", "HVSWTBOX", "ICEBTBOX", "ICEPTBOX", "ICETBOX", "ICETTBOX", "JUNGTBOX", "KRASTBOX", "KRATTBOX", "PEAKTBOX", "SEWTBOX", "SNOWTBOX", "SPATTBOX", "SPRGSTBX", "SPTMTBOX", "TEMPTBOX"], ""], +["time-freeze-debris-ag", "time-freeze-debris", 5, ["CANTBOX", "CNSPTBOX", "DKKRTBOX", "DOCKTBOX", "DRDKTBOX", "DROMTBOX", "HAVNTBOX", "HAVTTBOX", "HVJGTBOX", "HVSWTBOX", "ICEBTBOX", "ICEPTBOX", "ICETBOX", "ICETTBOX", "JUNGTBOX", "KRASTBOX", "KRATTBOX", "PEAKTBOX", "SEWTBOX", "SNOWTBOX", "SPATTBOX", "SPRGSTBX", "SPTMTBOX", "TEMPTBOX"], ""], +["cantbox", "cantbox", 5, ["CANTBOX"], ""], +["tpage-2346", "tpage-2346", 5, ["CANYONS"], ""], +["tpage-2452", "tpage-2452", 5, ["CANYONS"], ""], +["tpage-2325", "tpage-2325", 5, ["CANYONS"], ""], +["canyons", "canyons", 5, ["CANYONS"], ""], +["net-time-trial", "net-time-trial", 5, ["CANYONTT", "CNSPTT", "DKKRTT", "DOCKSTT", "DRDKTT", "DROMETT", "HAVTT", "HVJGTT", "HVSWTT", "HVTRTT", "ICBGTT", "ICETT", "ICPSTT", "ICTRTT", "JUNGLETT", "KRASTT", "KRTRTT", "PEAKTT", "SEWERTT", "SNOWTT", "SPARTT", "SPTMTT", "SPTRTT", "TEMPLETT"], ""], +["canyontt", "canyontt", 5, ["CANYONTT"], ""], +["canyon-obs", "canyon-obs", 5, ["CANYONW", "CYX", "SPATOURW"], ""], +["tpage-977", "tpage-977", 5, ["CANYONW"], ""], +["canyonw", "canyonw", 5, ["CANYONW"], ""], +["cars", "cars", 5, ["CARS"], ""], +["cheetah-chassis-ag", "cheetah-chassis", 5, ["CHEEL", "RAZVL", "THCVL3"], ""], +["cheetah-door-a-ag", "cheetah-door-a", 5, ["CHEEL"], ""], +["cheetah-door-b-ag", "cheetah-door-b", 5, ["CHEEL"], ""], +["cheetah-door-c-ag", "cheetah-door-c", 5, ["CHEEL"], ""], +["cheetah-door-d-ag", "cheetah-door-d", 5, ["CHEEL", "THCVL3"], ""], +["cheetah-door-e-ag", "cheetah-door-e", 5, ["CHEEL", "RAZVL"], ""], +["cheetah-f-fender-a-ag", "cheetah-f-fender-a", 5, ["CHEEL"], ""], +["cheetah-f-fender-b-ag", "cheetah-f-fender-b", 5, ["CHEEL", "THCVL3"], ""], +["cheetah-f-fender-c-ag", "cheetah-f-fender-c", 5, ["CHEEL", "RAZVL"], ""], +["cheetah-f-fender-d-ag", "cheetah-f-fender-d", 5, ["CHEEL"], ""], +["cheetah-f-fender-e-ag", "cheetah-f-fender-e", 5, ["CHEEL"], ""], +["cheetah-hood-a-ag", "cheetah-hood-a", 5, ["CHEEL"], ""], +["cheetah-hood-b-ag", "cheetah-hood-b", 5, ["CHEEL"], ""], +["cheetah-hood-c-ag", "cheetah-hood-c", 5, ["CHEEL", "RAZVL"], ""], +["cheetah-hood-d-ag", "cheetah-hood-d", 5, ["CHEEL", "THCVL3"], ""], +["cheetah-hood-e-ag", "cheetah-hood-e", 5, ["CHEEL"], ""], +["cheetah-r-fender-a-ag", "cheetah-r-fender-a", 5, ["CHEEL"], ""], +["cheetah-r-fender-b-ag", "cheetah-r-fender-b", 5, ["CHEEL", "RAZVL"], ""], +["cheetah-r-fender-c-ag", "cheetah-r-fender-c", 5, ["CHEEL", "THCVL3"], ""], +["cheetah-r-fender-d-ag", "cheetah-r-fender-d", 5, ["CHEEL"], ""], +["cheetah-r-fender-e-ag", "cheetah-r-fender-e", 5, ["CHEEL"], ""], +["cheetah-roof-a-ag", "cheetah-roof-a", 5, ["CHEEL"], ""], +["cheetah-roof-b-ag", "cheetah-roof-b", 5, ["CHEEL"], ""], +["cheetah-roof-c-ag", "cheetah-roof-c", 5, ["CHEEL", "RAZVL"], ""], +["cheetah-roof-d-ag", "cheetah-roof-d", 5, ["CHEEL", "THCVL3"], ""], +["cheetah-roof-e-ag", "cheetah-roof-e", 5, ["CHEEL"], ""], +["cheel", "cheel", 5, ["CHEEL"], ""], +["cliffs-part", "cliffs-part", 5, ["CLF", "CLFX"], ""], +["cliffs-obs", "cliffs-obs", 5, ["CLF", "CLFX"], ""], +["cliffs-effects", "cliffs-effects", 5, ["CLF", "CLFX"], ""], +["cliffs-ocean", "cliffs-ocean", 5, ["CLF", "CLFX"], ""], +["common-part", "common-part", 5, ["CLF", "CLFX", "IBX", "ICEBERGW", "ICEPASSW", "ICETOURW", "IPX", "PEAKW", "PKX", "SNO", "SNOX", "SNW", "SNWX"], ""], +["common-obs", "common-obs", 5, ["CLF", "CLFX", "IBX", "ICEBERGW", "ICEPASSW", "ICETOURW", "IPX", "PEAKW", "PKX", "SNO", "SNOX", "SNW", "SNWX"], ""], +["tpage-288", "tpage-288", 5, ["CLF"], ""], +["tpage-598", "tpage-598", 5, ["CLF"], ""], +["tpage-430", "tpage-430", 5, ["CLF"], ""], +["tpage-768", "tpage-768", 5, ["CLF"], ""], +["tpage-710", "tpage-710", 5, ["CLF"], ""], +["cliffs-fence-debris-ag", "cliffs-fence-debris", 5, ["CLF", "CLFX", "SNO", "SNOX", "SNW", "SNWX"], ""], +["cliffs-wood-fence-a-ag", "cliffs-wood-fence-a", 5, ["CLF", "CLFX", "SNO", "SNOX"], ""], +["cliffs-wood-fence-c-ag", "cliffs-wood-fence-c", 5, ["CLF", "CLFX", "SNO", "SNOX", "SNW", "SNWX"], ""], +["cliffs-wood-fence-b-ag", "cliffs-wood-fence-b", 5, ["CLF", "CLFX", "SNO", "SNOX", "SNW", "SNWX"], ""], +["cliffs-vis", "cliffs-vis", 5, ["CLF"], ""], +["tpage-1585", "tpage-1585", 5, ["CLFX"], ""], +["tpage-1887", "tpage-1887", 5, ["CLFX"], ""], +["tpage-1587", "tpage-1587", 5, ["CLFX"], ""], +["cliffsx-vis", "cliffsx-vis", 5, ["CLFX"], ""], +["tpage-1346", "tpage-1346", 5, ["CLIFCTF"], ""], +["tpage-1347", "tpage-1347", 5, ["CLIFCTF"], ""], +["clifctf", "clifctf", 5, ["CLIFCTF"], ""], +["tpage-1604", "tpage-1604", 5, ["CLIFFART"], ""], +["cliffart", "cliffart", 5, ["CLIFFART"], ""], +["tpage-1671", "tpage-1671", 5, ["CLIFFSS"], ""], +["tpage-1848", "tpage-1848", 5, ["CLIFFSS"], ""], +["prize-crate-ag", "prize-crate", 5, ["CLIFFSS"], ""], +["eco-light-ag", "eco-light", 5, ["CLIFFSS", "DESARENS", "EIGHT", "KRASS"], ""], +["cliffss", "cliffss", 5, ["CLIFFSS"], ""], +["ragdoll", "ragdoll", 5, ["CLIFHUNT", "DESHUNT", "DESHUNT2", "DESRAPT"], ""], +["raptor", "raptor", 5, ["CLIFHUNT", "DESHUNT", "DESHUNT2", "DESRAPT"], ""], +["tpage-1315", "tpage-1315", 5, ["CLIFHUNT"], ""], +["metal-raptor-ag", "metal-raptor", 5, ["CLIFHUNT", "DESHUNT", "DESHUNT2", "DESRAPT"], ""], +["clifhunt", "clifhunt", 5, ["CLIFHUNT"], ""], +["net-training", "net-training", 5, ["CLIFTRN", "ICETRN", "JUNGTRN", "KRASTRN", "SNOWTRN2"], ""], +["net-training-obs", "net-training-obs", 5, ["CLIFTRN", "ICETRN", "JUNGTRN", "KRASTRN", "SNOWTRN2"], ""], +["wcar-drone", "wcar-drone", 5, ["CLIFTRN", "DRONE", "ICETRN", "JUNGTRN", "KRASTRN", "SNOWTRN2"], ""], +["tpage-3909", "tpage-3909", 5, ["CLIFTRN"], ""], +["cliftrn", "cliftrn", 5, ["CLIFTRN"], ""], +["tpage-2824", "tpage-2824", 5, ["CNSPFOOT"], ""], +["tpage-2825", "tpage-2825", 5, ["CNSPFOOT"], ""], +["cnspfoot", "cnspfoot", 5, ["CNSPFOOT"], ""], +["tpage-2847", "tpage-2847", 5, ["CNSPTBOX"], ""], +["tpage-2848", "tpage-2848", 5, ["CNSPTBOX"], ""], +["cnsptbox", "cnsptbox", 5, ["CNSPTBOX"], ""], +["cnsptt", "cnsptt", 5, ["CNSPTT"], ""], +["coliseum-part", "coliseum-part", 5, ["COL", "COLX"], ""], +["coliseum-obs", "coliseum-obs", 5, ["COL", "COLX"], ""], +["coliseum-obs-atlas", "coliseum-obs-atlas", 5, ["COL", "COLX"], ""], +["coliseum-obs-2", "coliseum-obs-2", 5, ["COL", "COLX"], ""], +["coliseum-obs-female-statue", "coliseum-obs-female-statue", 5, ["COL", "COLX"], ""], +["tpage-289", "tpage-289", 5, ["COL"], ""], +["tpage-290", "tpage-290", 5, ["COL"], ""], +["tpage-337", "tpage-337", 5, ["COL"], ""], +["coli-atlas-break-ag", "coli-atlas-break", 5, ["COL", "COLX"], ""], +["coli-atlas-base-ag", "coli-atlas-base", 5, ["COL", "COLX"], ""], +["coli-statue-base-s-ag", "coli-statue-base-s", 5, ["COL", "COLX"], ""], +["coli-statue-base-c-ag", "coli-statue-base-c", 5, ["COL", "COLX"], ""], +["coli-bridge-a-ag", "coli-bridge-a", 5, ["COL"], ""], +["coli-atlas-globe-ag", "coli-atlas-globe", 5, ["COL", "COLISEUS"], ""], +["coli-center-arch-ag", "coli-center-arch", 5, ["COL", "COLX"], ""], +["coli-stands-rail-a-ag", "coli-stands-rail-a", 5, ["COL", "COLX"], ""], +["coli-pillar-break-ag", "coli-pillar-break", 5, ["COL", "COLX"], ""], +["coli-stands-rail-c-ag", "coli-stands-rail-c", 5, ["COL"], ""], +["coli-stands-rail-b-ag", "coli-stands-rail-b", 5, ["COL", "COLX"], ""], +["coli-bowl-a-ag", "coli-bowl-a", 5, ["COL"], ""], +["coli-bowl-hanger-ag", "coli-bowl-hanger", 5, ["COL"], ""], +["coli-center-arch-debris-ag", "coli-center-arch-debris", 5, ["COL", "COLX"], ""], +["coli-gate-a-straight-ag", "coli-gate-a-straight", 5, ["COL", "COLX"], ""], +["coli-ball-collision-ag", "coli-ball-collision", 5, ["COL", "COLX"], ""], +["coli-gate-b-curved-ag", "coli-gate-b-curved", 5, ["COL", "COLX"], ""], +["coli-atlas-pillar-ag", "coli-atlas-pillar", 5, ["COL"], ""], +["coli-pillar-debris-ag", "coli-pillar-debris", 5, ["COL", "COLX"], ""], +["coli-stands-rail-debris-ag", "coli-stands-rail-debris", 5, ["COL"], ""], +["coli-bowl-hanger-debris-ag", "coli-bowl-hanger-debris", 5, ["COL"], ""], +["coli-bridge-a-debris-ag", "coli-bridge-a-debris", 5, ["COL", "COLX"], ""], +["coli-gate-debris-ag", "coli-gate-debris", 5, ["COL", "COLX"], ""], +["coli-bowl-a-debris-ag", "coli-bowl-a-debris", 5, ["COL"], ""], +["coliseum-vis", "coliseum-vis", 5, ["COL"], ""], +["tpage-1605", "tpage-1605", 5, ["COLART"], ""], +["colart", "colart", 5, ["COLART"], ""], +["net-collectable-game", "net-collectable-game", 5, ["COLICLCT", "COLIREV", "DESCLCT", "DESREV", "KCRSCLCT"], ""], +["tpage-1326", "tpage-1326", 5, ["COLICLCT"], ""], +["collectoid-debris-ag", "collectoid-debris", 5, ["COLICLCT", "COLIREV", "DESCLCT", "DESREV", "KCRSCLCT"], ""], +["collectoid-ag", "collectoid", 5, ["COLICLCT", "COLIREV", "DESCLCT", "DESREV", "KCRSCLCT"], ""], +["coliclct", "coliclct", 5, ["COLICLCT"], ""], +["tpage-1348", "tpage-1348", 5, ["COLICTF"], ""], +["tpage-1349", "tpage-1349", 5, ["COLICTF"], ""], +["colictf", "colictf", 5, ["COLICTF"], ""], +["tpage-1345", "tpage-1345", 5, ["COLIREV"], ""], +["colirev", "colirev", 5, ["COLIREV"], ""], +["tpage-3874", "tpage-3874", 5, ["COLISEUS"], ""], +["tpage-1672", "tpage-1672", 5, ["COLISEUS"], ""], +["tpage-1850", "tpage-1850", 5, ["COLISEUS"], ""], +["coli-statue-female-s-break-ag", "coli-statue-female-s-break", 5, ["COLISEUS"], ""], +["coli-statue-female-c-break-ag", "coli-statue-female-c-break", 5, ["COLISEUS"], ""], +["coli-statue-chain-ag", "coli-statue-chain", 5, ["COLISEUS"], ""], +["coli-statue-female-ag", "coli-statue-female", 5, ["COLISEUS"], ""], +["coli-atlas-statue-ag", "coli-atlas-statue", 5, ["COLISEUS"], ""], +["coliseus", "coliseus", 5, ["COLISEUS"], ""], +["tpage-1673", "tpage-1673", 5, ["COLX"], ""], +["tpage-1676", "tpage-1676", 5, ["COLX"], ""], +["coliseux-vis", "coliseux-vis", 5, ["COLX"], ""], +["cougar-chassis-ag", "cougar-chassis", 5, ["COUGL", "SIGVL2", "THBVL"], ""], +["cougar-door-a-ag", "cougar-door-a", 5, ["COUGL"], ""], +["cougar-door-b-ag", "cougar-door-b", 5, ["COUGL"], ""], +["cougar-door-c-ag", "cougar-door-c", 5, ["COUGL", "THBVL"], ""], +["cougar-door-d-ag", "cougar-door-d", 5, ["COUGL"], ""], +["cougar-door-e-ag", "cougar-door-e", 5, ["COUGL", "SIGVL2"], ""], +["cougar-f-bumper-a-ag", "cougar-f-bumper-a", 5, ["COUGL", "THBVL"], ""], +["cougar-f-bumper-b-ag", "cougar-f-bumper-b", 5, ["COUGL"], ""], +["cougar-f-bumper-c-ag", "cougar-f-bumper-c", 5, ["COUGL"], ""], +["cougar-f-bumper-d-ag", "cougar-f-bumper-d", 5, ["COUGL"], ""], +["cougar-f-bumper-e-ag", "cougar-f-bumper-e", 5, ["COUGL", "SIGVL2"], ""], +["cougar-f-fender-a-ag", "cougar-f-fender-a", 5, ["COUGL"], ""], +["cougar-f-fender-b-ag", "cougar-f-fender-b", 5, ["COUGL"], ""], +["cougar-f-fender-c-ag", "cougar-f-fender-c", 5, ["COUGL", "THBVL"], ""], +["cougar-f-fender-d-ag", "cougar-f-fender-d", 5, ["COUGL", "SIGVL2"], ""], +["cougar-f-fender-e-ag", "cougar-f-fender-e", 5, ["COUGL"], ""], +["cougar-hood-a-ag", "cougar-hood-a", 5, ["COUGL"], ""], +["cougar-hood-b-ag", "cougar-hood-b", 5, ["COUGL"], ""], +["cougar-hood-c-ag", "cougar-hood-c", 5, ["COUGL", "THBVL"], ""], +["cougar-hood-d-ag", "cougar-hood-d", 5, ["COUGL", "SIGVL2"], ""], +["cougar-hood-e-ag", "cougar-hood-e", 5, ["COUGL"], ""], +["cougar-r-fender-a-ag", "cougar-r-fender-a", 5, ["COUGL"], ""], +["cougar-r-fender-b-ag", "cougar-r-fender-b", 5, ["COUGL", "THBVL"], ""], +["cougar-r-fender-c-ag", "cougar-r-fender-c", 5, ["COUGL"], ""], +["cougar-r-fender-d-ag", "cougar-r-fender-d", 5, ["COUGL", "SIGVL2"], ""], +["cougar-r-fender-e-ag", "cougar-r-fender-e", 5, ["COUGL"], ""], +["cougl", "cougl", 5, ["COUGL"], ""], +["0credits-tx", "0credits-tx", 5, ["CREDITS"], ""], +["1credits-tx", "1credits-tx", 5, ["CREDITS"], ""], +["2credits-tx", "2credits-tx", 5, ["CREDITS"], ""], +["3credits-tx", "3credits-tx", 5, ["CREDITS"], ""], +["4credits-tx", "4credits-tx", 5, ["CREDITS"], ""], +["5credits-tx", "5credits-tx", 5, ["CREDITS"], ""], +["6credits-tx", "6credits-tx", 5, ["CREDITS"], ""], +["7credits-tx", "7credits-tx", 5, ["CREDITS"], ""], +["8credits-tx", "8credits-tx", 5, ["CREDITS"], ""], +["9credits-tx", "9credits-tx", 5, ["CREDITS"], ""], +["10credits-tx", "10credits-tx", 5, ["CREDITS"], ""], +["credits-h", "credits-h", 5, ["CREDITS"], ""], +["credits-cloth", "credits-cloth", 5, ["CREDITS"], ""], +["credits-obs", "credits-obs", 5, ["CREDITS"], ""], +["credits", "credits", 5, ["CREDITS"], ""], +["tpage-2444", "tpage-2444", 5, ["CSX"], ""], +["tpage-3012", "tpage-3012", 5, ["CSX"], ""], +["cansparx-vis", "cansparx-vis", 5, ["CSX"], ""], +["tpage-2674", "tpage-2674", 5, ["CSY"], ""], +["canspary-vis", "canspary-vis", 5, ["CSY"], ""], +["tpage-2258", "tpage-2258", 5, ["CYA"], ""], +["tpage-2259", "tpage-2259", 5, ["CYA"], ""], +["tpage-3870", "tpage-3870", 5, ["CYA"], ""], +["tpage-3008", "tpage-3008", 5, ["CYA"], ""], +["canyona-vis", "canyona-vis", 5, ["CYA"], ""], +["tpage-2256", "tpage-2256", 5, ["CYB"], ""], +["tpage-2257", "tpage-2257", 5, ["CYB"], ""], +["tpage-3887", "tpage-3887", 5, ["CYB"], ""], +["canyonb-vis", "canyonb-vis", 5, ["CYB"], ""], +["tpage-2264", "tpage-2264", 5, ["CYC"], ""], +["tpage-2265", "tpage-2265", 5, ["CYC"], ""], +["tpage-3010", "tpage-3010", 5, ["CYC"], ""], +["canyonc-vis", "canyonc-vis", 5, ["CYC"], ""], +["tpage-2260", "tpage-2260", 5, ["CYD"], ""], +["tpage-2261", "tpage-2261", 5, ["CYD"], ""], +["canyond-vis", "canyond-vis", 5, ["CYD"], ""], +["tpage-2262", "tpage-2262", 5, ["CYE"], ""], +["tpage-2263", "tpage-2263", 5, ["CYE"], ""], +["tpage-3009", "tpage-3009", 5, ["CYE"], ""], +["canyone-vis", "canyone-vis", 5, ["CYE"], ""], +["tpage-2442", "tpage-2442", 5, ["CYX"], ""], +["tpage-3013", "tpage-3013", 5, ["CYX"], ""], +["canyonx-vis", "canyonx-vis", 5, ["CYX"], ""], +["tpage-2630", "tpage-2630", 5, ["CYY"], ""], +["tpage-3011", "tpage-3011", 5, ["CYY"], ""], +["canyony-vis", "canyony-vis", 5, ["CYY"], ""], +["tpage-3959", "tpage-3959", 5, ["DAXCRED"], ""], +["dax-hr-cred-ag", "dax-hr-cred", 5, ["DAXCRED"], ""], +["daxcred", "daxcred", 5, ["DAXCRED"], ""], +["tpage-3692", "tpage-3692", 5, ["DAXLEV"], ""], +["dax-driver-ag", "dax-driver", 5, ["DAXLEV"], ""], +["daxlev", "daxlev", 5, ["DAXLEV"], ""], +["daxtermobile-chassis-ag", "daxtermobile-chassis", 5, ["DAXTL"], ""], +["daxtermobile-f-bumper-a-ag", "daxtermobile-f-bumper-a", 5, ["DAXTL"], ""], +["daxtermobile-hood-a-ag", "daxtermobile-hood-a", 5, ["DAXTL"], ""], +["daxtermobile-r-fender-a-ag", "daxtermobile-r-fender-a", 5, ["DAXTL"], ""], +["daxtermobile-roof-a-ag", "daxtermobile-roof-a", 5, ["DAXTL"], ""], +["daxtermobile-trunk-a-ag", "daxtermobile-trunk-a", 5, ["DAXTL"], ""], +["daxtl", "daxtl", 5, ["DAXTL"], ""], +["tpage-1793", "tpage-1793", 5, ["DESACTF"], ""], +["tpage-1794", "tpage-1794", 5, ["DESACTF"], ""], +["desactf", "desactf", 5, ["DESACTF"], ""], +["tpage-1680", "tpage-1680", 5, ["DESARENS"], ""], +["tpage-1858", "tpage-1858", 5, ["DESARENS"], ""], +["desarens", "desarens", 5, ["DESARENS"], ""], +["tpage-1563", "tpage-1563", 5, ["DESART"], ""], +["com-rod-of-god-ag", "com-rod-of-god", 5, ["DESART"], ""], +["desart", "desart", 5, ["DESART"], ""], +["tpage-910", "tpage-910", 5, ["DESCLCT"], ""], +["tpage-923", "tpage-923", 5, ["DESCLCT"], ""], +["crate-ag", "crate", 5, ["DESCLCT", "EIGHT", "KRASW", "SPB"], ""], +["desclct", "desclct", 5, ["DESCLCT"], ""], +["tpage-950", "tpage-950", 5, ["DESHUNT"], ""], +["deshunt", "deshunt", 5, ["DESHUNT"], ""], +["tpage-1314", "tpage-1314", 5, ["DESHUNT2"], ""], +["deshunt2", "deshunt2", 5, ["DESHUNT2"], ""], +["tpage-2750", "tpage-2750", 5, ["DESISLES"], ""], +["desisles", "desisles", 5, ["DESISLES"], ""], +["tpage-3718", "tpage-3718", 5, ["DESRAPT"], ""], +["desrapt", "desrapt", 5, ["DESRAPT"], ""], +["tpage-1027", "tpage-1027", 5, ["DESREV"], ""], +["desrev", "desrev", 5, ["DESREV"], ""], +["dethrace", "dethrace", 5, ["DETHRACE"], ""], +["tpage-2756", "tpage-2756", 5, ["DISLEART"], ""], +["disleart", "disleart", 5, ["DISLEART"], ""], +["tpage-2757", "tpage-2757", 5, ["DISLECTF"], ""], +["tpage-2758", "tpage-2758", 5, ["DISLECTF"], ""], +["dislectf", "dislectf", 5, ["DISLECTF"], ""], +["tpage-2582", "tpage-2582", 5, ["DKA"], ""], +["tpage-2583", "tpage-2583", 5, ["DKA"], ""], +["wind-rotor-ag", "wind-rotor", 5, ["DKA", "DKE", "DKKY", "DRA", "DRDY", "DROMEX", "DRX"], ""], +["docksa-vis", "docksa-vis", 5, ["DKA"], ""], +["tpage-2586", "tpage-2586", 5, ["DKB"], ""], +["tpage-2587", "tpage-2587", 5, ["DKB"], ""], +["train-ag", "train", 5, ["DKB", "DKKY", "DKX", "DRDX"], ""], +["docksb-vis", "docksb-vis", 5, ["DKB"], ""], +["tpage-2588", "tpage-2588", 5, ["DKC"], ""], +["tpage-3054", "tpage-3054", 5, ["DKC"], ""], +["docksc-vis", "docksc-vis", 5, ["DKC"], ""], +["tpage-2584", "tpage-2584", 5, ["DKD"], ""], +["tpage-2585", "tpage-2585", 5, ["DKD"], ""], +["tpage-1938", "tpage-1938", 5, ["DKD"], ""], +["docksd-vis", "docksd-vis", 5, ["DKD"], ""], +["tpage-2580", "tpage-2580", 5, ["DKE"], ""], +["tpage-2581", "tpage-2581", 5, ["DKE"], ""], +["dockse-vis", "dockse-vis", 5, ["DKE"], ""], +["tpage-2851", "tpage-2851", 5, ["DKKRFOOT"], ""], +["tpage-2852", "tpage-2852", 5, ["DKKRFOOT"], ""], +["dkkrfoot", "dkkrfoot", 5, ["DKKRFOOT"], ""], +["tpage-2828", "tpage-2828", 5, ["DKKRTBOX"], ""], +["tpage-2829", "tpage-2829", 5, ["DKKRTBOX"], ""], +["dkkrtbox", "dkkrtbox", 5, ["DKKRTBOX"], ""], +["dkkrtt", "dkkrtt", 5, ["DKKRTT"], ""], +["kras-effects", "kras-effects", 5, ["DKKX", "DOCKKRAW", "KRASW", "KRATOURW", "KRX"], ""], +["train-obs", "train-obs", 5, ["DKKX", "DKX", "DOCKKRAW", "DOCKSW", "DRDX", "DROMDOCW", "HAVENW", "HAVSEWW", "HSX", "HVX"], ""], +["docks-effects", "docks-effects", 5, ["DKKX", "DKX", "DOCKKRAW", "DOCKSW", "DRDX", "DROMDOCW", "KRATOURW"], ""], +["docks-part", "docks-part", 5, ["DKKX", "DKX", "DOCKKRAW", "DOCKSW", "DRDX", "DROMDOCW", "KRATOURW"], ""], +["docks-obs", "docks-obs", 5, ["DKKX", "DKX", "DOCKKRAW", "DOCKSW", "DRDX", "DROMEW", "DROMEX", "DRX", "KRATOURW"], ""], +["docks-ocean", "docks-ocean", 5, ["DKKX", "DKX", "DOCKKRAW", "DOCKSW", "DRDX", "DROMDOCW", "KRATOURW"], ""], +["kras-part", "kras-part", 5, ["DKKX", "DOCKKRAW", "KRASW", "KRATOURW", "KRX"], ""], +["kras-obs", "kras-obs", 5, ["DKKX", "DOCKKRAW", "KRASW", "KRATOURW", "KRX"], ""], +["kras-ocean", "kras-ocean", 5, ["DKKX", "DOCKKRAW", "KRASW", "KRATOURW", "KRX"], ""], +["construction-obs", "construction-obs", 5, ["DKKX", "DOCKKRAW", "HAVENW", "HAVJUNGW", "HAVSEWW", "HAVTOURW", "HJX", "HSX", "HVX", "KCR", "KCRX", "KRASW", "KRX"], ""], +["tpage-3052", "tpage-3052", 5, ["DKKX"], ""], +["tpage-3053", "tpage-3053", 5, ["DKKX"], ""], +["tpage-3101", "tpage-3101", 5, ["DKKX"], ""], +["kras-rusty-sign-ag", "kras-rusty-sign", 5, ["DKKX", "KRA", "KRX"], ""], +["kras-fishtank-lo-ag", "kras-fishtank-lo", 5, ["DKKX", "KRA", "KRX"], ""], +["kras-fireworks-ship-a-ag", "kras-fireworks-ship-a", 5, ["DKKX", "DOCKKRAW", "KRA", "KRASW", "KRATOURW", "KRC", "KRX", "KRY"], ""], +["dockkrax-vis", "dockkrax-vis", 5, ["DKKX"], ""], +["tpage-3049", "tpage-3049", 5, ["DKKY"], ""], +["tpage-3051", "tpage-3051", 5, ["DKKY"], ""], +["dockkray-vis", "dockkray-vis", 5, ["DKKY"], ""], +["tpage-2677", "tpage-2677", 5, ["DKX"], ""], +["tpage-2678", "tpage-2678", 5, ["DKX"], ""], +["docksx-vis", "docksx-vis", 5, ["DKX"], ""], +["tpage-2568", "tpage-2568", 5, ["DOCKFOOT"], ""], +["tpage-2569", "tpage-2569", 5, ["DOCKFOOT"], ""], +["dockfoot", "dockfoot", 5, ["DOCKFOOT"], ""], +["tpage-2670", "tpage-2670", 5, ["DOCKKRAS"], ""], +["tpage-3878", "tpage-3878", 5, ["DOCKKRAS"], ""], +["tpage-2671", "tpage-2671", 5, ["DOCKKRAS"], ""], +["tpage-2675", "tpage-2675", 5, ["DOCKKRAS"], ""], +["dockkras", "dockkras", 5, ["DOCKKRAS"], ""], +["tpage-1545", "tpage-1545", 5, ["DOCKKRAW"], ""], +["dockkraw", "dockkraw", 5, ["DOCKKRAW"], ""], +["tpage-2551", "tpage-2551", 5, ["DOCKSS"], ""], +["tpage-2646", "tpage-2646", 5, ["DOCKSS"], ""], +["tpage-2596", "tpage-2596", 5, ["DOCKSS"], ""], +["dockss", "dockss", 5, ["DOCKSS"], ""], +["dockstt", "dockstt", 5, ["DOCKSTT"], ""], +["docksw", "docksw", 5, ["DOCKSW"], ""], +["tpage-2570", "tpage-2570", 5, ["DOCKTBOX"], ""], +["tpage-2610", "tpage-2610", 5, ["DOCKTBOX"], ""], +["docktbox", "docktbox", 5, ["DOCKTBOX"], ""], +["tpage-3017", "tpage-3017", 5, ["DRA"], ""], +["tpage-3018", "tpage-3018", 5, ["DRA"], ""], +["dromea-vis", "dromea-vis", 5, ["DRA"], ""], +["tpage-3021", "tpage-3021", 5, ["DRB"], ""], +["tpage-3176", "tpage-3176", 5, ["DRB"], ""], +["drome-tunnel-drum-ag", "drome-tunnel-drum", 5, ["DRB", "DRDY", "DROMEX", "DRX"], ""], +["dromeb-vis", "dromeb-vis", 5, ["DRB"], ""], +["tpage-3020", "tpage-3020", 5, ["DRC"], ""], +["tpage-3019", "tpage-3019", 5, ["DRC"], ""], +["dromec-vis", "dromec-vis", 5, ["DRC"], ""], +["tpage-3016", "tpage-3016", 5, ["DRD"], ""], +["dromed-vis", "dromed-vis", 5, ["DRD"], ""], +["tpage-3807", "tpage-3807", 5, ["DRDKFOOT"], ""], +["tpage-3808", "tpage-3808", 5, ["DRDKFOOT"], ""], +["drdkfoot", "drdkfoot", 5, ["DRDKFOOT"], ""], +["tpage-3454", "tpage-3454", 5, ["DRDKTBOX"], ""], +["tpage-3455", "tpage-3455", 5, ["DRDKTBOX"], ""], +["drdktbox", "drdktbox", 5, ["DRDKTBOX"], ""], +["drdktt", "drdktt", 5, ["DRDKTT"], ""], +["drome-effects", "drome-effects", 5, ["DRDX", "DROMDOCW", "DROMEW", "DROMEX", "DRX", "KRATOURW"], ""], +["drome-part", "drome-part", 5, ["DRDX", "DROMDOCW", "DROMEW", "DROMEX", "DRX", "KRATOURW"], ""], +["drome-obs", "drome-obs", 5, ["DRDX", "DROMDOCW", "DROMEW", "DROMEX", "DRX", "KRATOURW"], ""], +["drome-ocean", "drome-ocean", 5, ["DRDX", "DROMDOCW", "DROMEW", "DROMEX", "DRX", "KRATOURW"], ""], +["tpage-3069", "tpage-3069", 5, ["DRDX"], ""], +["tpage-3070", "tpage-3070", 5, ["DRDX"], ""], +["dromdocx-vis", "dromdocx-vis", 5, ["DRDX"], ""], +["tpage-3072", "tpage-3072", 5, ["DRDY"], ""], +["tpage-3073", "tpage-3073", 5, ["DRDY"], ""], +["dromdocy-vis", "dromdocy-vis", 5, ["DRDY"], ""], +["tpage-2794", "tpage-2794", 5, ["DROMDOCS"], ""], +["tpage-2795", "tpage-2795", 5, ["DROMDOCS"], ""], +["tpage-2689", "tpage-2689", 5, ["DROMDOCS"], ""], +["dromdocs", "dromdocs", 5, ["DROMDOCS"], ""], +["tpage-2872", "tpage-2872", 5, ["DROMDOCW"], ""], +["dromdocw", "dromdocw", 5, ["DROMDOCW"], ""], +["tpage-2871", "tpage-2871", 5, ["DROMES"], ""], +["tpage-2961", "tpage-2961", 5, ["DROMES"], ""], +["tpage-2688", "tpage-2688", 5, ["DROMES"], ""], +["dromes", "dromes", 5, ["DROMES"], ""], +["dromett", "dromett", 5, ["DROMETT"], ""], +["dromew", "dromew", 5, ["DROMEW"], ""], +["tpage-3024", "tpage-3024", 5, ["DROMEX"], ""], +["tpage-3025", "tpage-3025", 5, ["DROMEX"], ""], +["dromex", "dromex", 5, ["DROMEX"], ""], +["tpage-3809", "tpage-3809", 5, ["DROMFOOT"], ""], +["tpage-3810", "tpage-3810", 5, ["DROMFOOT"], ""], +["dromfoot", "dromfoot", 5, ["DROMFOOT"], ""], +["tpage-3441", "tpage-3441", 5, ["DROMTBOX"], ""], +["tpage-3442", "tpage-3442", 5, ["DROMTBOX"], ""], +["dromtbox", "dromtbox", 5, ["DROMTBOX"], ""], +["tpage-2331", "tpage-2331", 5, ["DRONE"], ""], +["deathrace-drone-ag", "deathrace-drone", 5, ["DRONE", "KRASTRN", "SNOWTRN2"], ""], +["drone", "drone", 5, ["DRONE"], ""], +["tpage-3030", "tpage-3030", 5, ["DRX"], ""], +["tpage-3031", "tpage-3031", 5, ["DRX"], ""], +["dromex-vis", "dromex-vis", 5, ["DRX"], ""], +["tpage-3026", "tpage-3026", 5, ["DRY"], ""], +["tpage-3027", "tpage-3027", 5, ["DRY"], ""], +["dromey-vis", "dromey-vis", 5, ["DRY"], ""], +["desisle-ocean", "desisle-ocean", 5, ["DSI", "DSX"], ""], +["desisle-effects", "desisle-effects", 5, ["DSI", "DSX"], ""], +["desisle-part", "desisle-part", 5, ["DSI", "DSX"], ""], +["tpage-2634", "tpage-2634", 5, ["DSI"], ""], +["tpage-2635", "tpage-2635", 5, ["DSI"], ""], +["tpage-3971", "tpage-3971", 5, ["DSI"], ""], +["tpage-2636", "tpage-2636", 5, ["DSI"], ""], +["desisle-vis", "desisle-vis", 5, ["DSI"], ""], +["des-cactus", "des-cactus", 5, ["DSR", "DSRX"], ""], +["desert-effects", "desert-effects", 5, ["DSR", "DSRX"], ""], +["desert-ocean", "desert-ocean", 5, ["DSR", "DSRX"], ""], +["desert-part", "desert-part", 5, ["DSR", "DSRX"], ""], +["desarena-part", "desarena-part", 5, ["DSR", "DSRX"], ""], +["desarena-obs", "desarena-obs", 5, ["DSR", "DSRX"], ""], +["desarena-effects", "desarena-effects", 5, ["DSR", "DSRX"], ""], +["tpage-278", "tpage-278", 5, ["DSR"], ""], +["tpage-280", "tpage-280", 5, ["DSR"], ""], +["tpage-279", "tpage-279", 5, ["DSR"], ""], +["tpage-277", "tpage-277", 5, ["DSR"], ""], +["tpage-396", "tpage-396", 5, ["DSR"], ""], +["des-cactus-b-ag", "des-cactus-b", 5, ["DSR", "DSRX"], ""], +["des-cactus-a-ag", "des-cactus-a", 5, ["DSR", "DSRX"], ""], +["palm-tree-a-ag", "palm-tree-a", 5, ["DSR", "DSRX"], ""], +["palm-tree-c-ag", "palm-tree-c", 5, ["DSR", "DSRX"], ""], +["palm-tree-b-ag", "palm-tree-b", 5, ["DSR", "DSRX"], ""], +["palm-tree-debris-ag", "palm-tree-debris", 5, ["DSR", "DSRX"], ""], +["desarena-vis", "desarena-vis", 5, ["DSR"], ""], +["tpage-1654", "tpage-1654", 5, ["DSRX"], ""], +["tpage-1656", "tpage-1656", 5, ["DSRX"], ""], +["tpage-1655", "tpage-1655", 5, ["DSRX"], ""], +["desarenx-vis", "desarenx-vis", 5, ["DSRX"], ""], +["tpage-2742", "tpage-2742", 5, ["DSX"], ""], +["desislex-vis", "desislex-vis", 5, ["DSX"], ""], +["tpage-96", "tpage-96", 5, ["EIGHT"], ""], +["tpage-260", "tpage-260", 5, ["EIGHT"], ""], +["tpage-1195", "tpage-1195", 5, ["EIGHT"], ""], +["eco-dark-ag", "eco-dark", 5, ["EIGHT"], ""], +["eight", "eight", 5, ["EIGHT"], ""], +["tpage-105", "tpage-105", 5, ["EIGHTB"], ""], +["eightb", "eightb", 5, ["EIGHTB"], ""], +["falcon-door-a-ag", "falcon-door-a", 5, ["FALCL", "JAKVL"], ""], +["falcon-door-b-ag", "falcon-door-b", 5, ["FALCL", "GTBVL", "THCVL2"], ""], +["falcon-door-c-ag", "falcon-door-c", 5, ["FALCL"], ""], +["falcon-door-d-ag", "falcon-door-d", 5, ["FALCL"], ""], +["falcon-hood-a-ag", "falcon-hood-a", 5, ["FALCL", "JAKVL"], ""], +["falcon-hood-b-ag", "falcon-hood-b", 5, ["FALCL", "GTBVL"], ""], +["falcon-hood-c-ag", "falcon-hood-c", 5, ["FALCL", "THCVL2"], ""], +["falcon-hood-d-ag", "falcon-hood-d", 5, ["FALCL"], ""], +["falcon-r-fender-a-ag", "falcon-r-fender-a", 5, ["FALCL", "GTBVL", "JAKVL"], ""], +["falcon-r-fender-b-ag", "falcon-r-fender-b", 5, ["FALCL"], ""], +["falcon-r-fender-c-ag", "falcon-r-fender-c", 5, ["FALCL"], ""], +["falcon-r-fender-d-ag", "falcon-r-fender-d", 5, ["FALCL"], ""], +["falcon-r-fender-e-ag", "falcon-r-fender-e", 5, ["FALCL", "THCVL2"], ""], +["falcon-roof-a-ag", "falcon-roof-a", 5, ["FALCL", "GTBVL", "JAKVL"], ""], +["falcon-roof-b-ag", "falcon-roof-b", 5, ["FALCL"], ""], +["falcon-roof-c-ag", "falcon-roof-c", 5, ["FALCL", "THCVL2"], ""], +["falcon-roof-d-ag", "falcon-roof-d", 5, ["FALCL"], ""], +["falcon-trunk-a-ag", "falcon-trunk-a", 5, ["FALCL", "JAKVL"], ""], +["falcon-trunk-b-ag", "falcon-trunk-b", 5, ["FALCL", "THCVL2"], ""], +["falcon-trunk-c-ag", "falcon-trunk-c", 5, ["FALCL", "GTBVL"], ""], +["falcon-trunk-d-ag", "falcon-trunk-d", 5, ["FALCL"], ""], +["falcl", "falcl", 5, ["FALCL"], ""], +["tpage-3872", "tpage-3872", 5, ["FMVLEV"], ""], +["fmvlev", "fmvlev", 5, ["FMVLEV"], ""], +["fox-chassis-ag", "fox-chassis", 5, ["FOXL"], ""], +["fox-door-a-ag", "fox-door-a", 5, ["FOXL"], ""], +["fox-f-fender-a-ag", "fox-f-fender-a", 5, ["FOXL"], ""], +["fox-hood-a-ag", "fox-hood-a", 5, ["FOXL"], ""], +["fox-r-fender-a-ag", "fox-r-fender-a", 5, ["FOXL"], ""], +["fox-roof-a-ag", "fox-roof-a", 5, ["FOXL"], ""], +["fox-trunk-a-ag", "fox-trunk-a", 5, ["FOXL"], ""], +["fox-wheel-ag", "fox-wheel", 5, ["FOXL"], ""], +["foxl", "foxl", 5, ["FOXL"], ""], +["tpage-1057", "tpage-1057", 5, ["GARAGE"], ""], +["tpage-2180", "tpage-2180", 5, ["GARAGE"], ""], +["tpage-2495", "tpage-2495", 5, ["GARAGE"], ""], +["car-color-tab-ag", "car-color-tab", 5, ["GARAGE", "MENU2"], ""], +["car-vert-tab-ag", "car-vert-tab", 5, ["GARAGE", "MENU2"], ""], +["garage-tool-arm-ag", "garage-tool-arm", 5, ["GARAGE"], ""], +["cust-icon-tab-ag", "cust-icon-tab", 5, ["GARAGE", "MENU2"], ""], +["cust-title-tab-ag", "cust-title-tab", 5, ["GARAGE", "MENU2"], ""], +["garage-sliding-door-ag", "garage-sliding-door", 5, ["GARAGE", "GARAGEB", "MENU2"], ""], +["body-parts-tab-ag", "body-parts-tab", 5, ["GARAGE", "MENU2"], ""], +["garage-car-arm-ag", "garage-car-arm", 5, ["GARAGE", "MENU2"], ""], +["garage-turntable-ag", "garage-turntable", 5, ["GARAGE", "MENU2"], ""], +["garage-door-ag", "garage-door", 5, ["GARAGE", "MENU2"], ""], +["garage", "garage", 5, ["GARAGE"], ""], +["garage-part", "garage-part", 5, ["GARAGEB", "MENU2"], ""], +["tpage-1801", "tpage-1801", 5, ["GARAGEB"], ""], +["tpage-1873", "tpage-1873", 5, ["GARAGEB"], ""], +["tpage-2288", "tpage-2288", 5, ["GARAGEB"], ""], +["tpage-1986", "tpage-1986", 5, ["GARAGEB"], ""], +["garageb", "garageb", 5, ["GARAGEB"], ""], +["gila-chassis-ag", "gila-chassis", 5, ["GILAL", "THAVL3", "THBVL3"], ""], +["gila-f-bumper-a-ag", "gila-f-bumper-a", 5, ["GILAL"], ""], +["gila-f-bumper-b-ag", "gila-f-bumper-b", 5, ["GILAL"], ""], +["gila-f-bumper-c-ag", "gila-f-bumper-c", 5, ["GILAL"], ""], +["gila-f-bumper-d-ag", "gila-f-bumper-d", 5, ["GILAL", "THAVL3"], ""], +["gila-f-bumper-e-ag", "gila-f-bumper-e", 5, ["GILAL", "THBVL3"], ""], +["gila-f-fender-a-ag", "gila-f-fender-a", 5, ["GILAL"], ""], +["gila-f-fender-b-ag", "gila-f-fender-b", 5, ["GILAL"], ""], +["gila-f-fender-c-ag", "gila-f-fender-c", 5, ["GILAL", "THAVL3"], ""], +["gila-f-fender-d-ag", "gila-f-fender-d", 5, ["GILAL", "THBVL3"], ""], +["gila-f-fender-e-ag", "gila-f-fender-e", 5, ["GILAL"], ""], +["gila-r-fender-a-ag", "gila-r-fender-a", 5, ["GILAL"], ""], +["gila-r-fender-b-ag", "gila-r-fender-b", 5, ["GILAL", "THAVL3"], ""], +["gila-r-fender-c-ag", "gila-r-fender-c", 5, ["GILAL"], ""], +["gila-r-fender-d-ag", "gila-r-fender-d", 5, ["GILAL"], ""], +["gila-r-fender-e-ag", "gila-r-fender-e", 5, ["GILAL", "THBVL3"], ""], +["gila-roof-a-ag", "gila-roof-a", 5, ["GILAL"], ""], +["gila-roof-b-ag", "gila-roof-b", 5, ["GILAL", "THBVL3"], ""], +["gila-roof-c-ag", "gila-roof-c", 5, ["GILAL"], ""], +["gila-roof-d-ag", "gila-roof-d", 5, ["GILAL"], ""], +["gila-roof-e-ag", "gila-roof-e", 5, ["GILAL", "THAVL3"], ""], +["gila-trunk-a-ag", "gila-trunk-a", 5, ["GILAL", "THAVL3"], ""], +["gila-trunk-b-ag", "gila-trunk-b", 5, ["GILAL"], ""], +["gila-trunk-c-ag", "gila-trunk-c", 5, ["GILAL"], ""], +["gila-trunk-d-ag", "gila-trunk-d", 5, ["GILAL", "THBVL3"], ""], +["gila-trunk-e-ag", "gila-trunk-e", 5, ["GILAL"], ""], +["gilal", "gilal", 5, ["GILAL"], ""], +["tpage-3958", "tpage-3958", 5, ["GTBCRED"], ""], +["gtb-hr-cred-ag", "gtb-hr-cred", 5, ["GTBCRED"], ""], +["gtbcred", "gtbcred", 5, ["GTBCRED"], ""], +["tpage-3693", "tpage-3693", 5, ["GTBLEV"], ""], +["raceblitz-ag", "raceblitz", 5, ["GTBLEV"], ""], +["gtblev", "gtblev", 5, ["GTBLEV"], ""], +["gtbvl", "gtbvl", 5, ["GTBVL"], ""], +["tpage-1997", "tpage-1997", 5, ["HAVENS"], ""], +["tpage-1687", "tpage-1687", 5, ["HAVENS"], ""], +["tpage-2241", "tpage-2241", 5, ["HAVENS"], ""], +["tpage-1852", "tpage-1852", 5, ["HAVENS"], ""], +["construction-barricade-ag", "construction-barricade", 5, ["HAVENS", "KRASS"], ""], +["construction-cone-ag", "construction-cone", 5, ["HAVENS", "KRASS"], ""], +["haven-gen-light-debris-ag", "haven-gen-light-debris", 5, ["HAVENS", "HAVJUNGS", "HAVTOURS"], ""], +["haven-gen-light-ag", "haven-gen-light", 5, ["HAVENS", "HAVJUNGS", "HAVTOURS"], ""], +["haven-trashcan-ag", "haven-trashcan", 5, ["HAVENS", "HAVSEWS", "HAVTOURS"], ""], +["havens", "havens", 5, ["HAVENS"], ""], +["haven-ocean", "haven-ocean", 5, ["HAVENW", "HVX"], ""], +["haven-effects", "haven-effects", 5, ["HAVENW", "HAVSEWW", "HAVTOURW", "HSX", "HVX"], ""], +["haven-part", "haven-part", 5, ["HAVENW", "HAVJUNGW", "HAVSEWW", "HAVTOURW", "HJX", "HSX", "HVX"], ""], +["haven-obs", "haven-obs", 5, ["HAVENW", "HAVJUNGW", "HAVSEWW", "HAVTOURW", "HJX", "HSX", "HVX"], ""], +["tpage-488", "tpage-488", 5, ["HAVENW"], ""], +["jungle-flaming-arrow-ag", "jungle-flaming-arrow", 5, ["HAVENW", "HAVJUNGW", "HAVTOURW", "HJX", "HVX", "JGX", "JUNGLEW"], ""], +["havenw", "havenw", 5, ["HAVENW"], ""], +["tpage-1792", "tpage-1792", 5, ["HAVJUNGS"], ""], +["tpage-1783", "tpage-1783", 5, ["HAVJUNGS"], ""], +["tpage-2272", "tpage-2272", 5, ["HAVJUNGS"], ""], +["tpage-2374", "tpage-2374", 5, ["HAVJUNGS"], ""], +["tpage-1853", "tpage-1853", 5, ["HAVJUNGS"], ""], +["jungle-stone-snake-head-ag", "jungle-stone-snake-head", 5, ["HAVJUNGS", "HAVTOURS", "JUNGLES"], ""], +["havjungs", "havjungs", 5, ["HAVJUNGS"], ""], +["havjung-part", "havjung-part", 5, ["HAVJUNGW", "HJX"], ""], +["havjung-ocean", "havjung-ocean", 5, ["HAVJUNGW", "HAVTOURW", "HJX"], ""], +["jungle-part", "jungle-part", 5, ["HAVJUNGW", "HAVTOURW", "HJX", "JGX", "JUNGLEW"], ""], +["jungle-obs", "jungle-obs", 5, ["HAVJUNGW", "HAVTOURW", "HJX", "JGX", "JUNGLEW"], ""], +["jungle-effects", "jungle-effects", 5, ["HAVJUNGW", "HAVTOURW", "HJX", "JGX", "JUNGLEW"], ""], +["havjung-effects", "havjung-effects", 5, ["HAVJUNGW", "HAVTOURW", "HJX", "JGX", "JUNGLEW"], ""], +["tpage-1635", "tpage-1635", 5, ["HAVJUNGW"], ""], +["havjungw", "havjungw", 5, ["HAVJUNGW"], ""], +["tpage-1836", "tpage-1836", 5, ["HAVNFOOT"], ""], +["tpage-1871", "tpage-1871", 5, ["HAVNFOOT"], ""], +["havnfoot", "havnfoot", 5, ["HAVNFOOT"], ""], +["tpage-1785", "tpage-1785", 5, ["HAVNTBOX"], ""], +["tpage-2669", "tpage-2669", 5, ["HAVNTBOX"], ""], +["havntbox", "havntbox", 5, ["HAVNTBOX"], ""], +["tpage-2254", "tpage-2254", 5, ["HAVSEWS"], ""], +["tpage-3676", "tpage-3676", 5, ["HAVSEWS"], ""], +["tpage-2255", "tpage-2255", 5, ["HAVSEWS"], ""], +["tpage-2310", "tpage-2310", 5, ["HAVSEWS"], ""], +["havsews", "havsews", 5, ["HAVSEWS"], ""], +["havsew-effects", "havsew-effects", 5, ["HAVSEWW", "HSX"], ""], +["sewer-effects", "sewer-effects", 5, ["HAVSEWW", "HAVTOURW", "HSX", "SEWERW", "SWX"], ""], +["sewer-part", "sewer-part", 5, ["HAVSEWW", "HAVTOURW", "HSX", "SEWERW", "SWX"], ""], +["tpage-2212", "tpage-2212", 5, ["HAVSEWW"], ""], +["havseww", "havseww", 5, ["HAVSEWW"], ""], +["tpage-3811", "tpage-3811", 5, ["HAVTFOOT"], ""], +["tpage-3812", "tpage-3812", 5, ["HAVTFOOT"], ""], +["havtfoot", "havtfoot", 5, ["HAVTFOOT"], ""], +["tpage-2327", "tpage-2327", 5, ["HAVTOURS"], ""], +["tpage-2329", "tpage-2329", 5, ["HAVTOURS"], ""], +["tpage-2328", "tpage-2328", 5, ["HAVTOURS"], ""], +["tpage-2465", "tpage-2465", 5, ["HAVTOURS"], ""], +["tpage-3600", "tpage-3600", 5, ["HAVTOURS"], ""], +["finish-banner-ag", "finish-banner", 5, ["HAVTOURS", "ICETOURS", "ICETRN", "KRATOURS", "SPATOURS"], ""], +["havtours", "havtours", 5, ["HAVTOURS"], ""], +["havtour-part", "havtour-part", 5, ["HAVTOURW"], ""], +["jungle-ocean", "jungle-ocean", 5, ["HAVTOURW", "JGX", "JUNGLEW"], ""], +["tpage-2286", "tpage-2286", 5, ["HAVTOURW"], ""], +["havtourw", "havtourw", 5, ["HAVTOURW"], ""], +["havtt", "havtt", 5, ["HAVTT"], ""], +["tpage-3439", "tpage-3439", 5, ["HAVTTBOX"], ""], +["tpage-3440", "tpage-3440", 5, ["HAVTTBOX"], ""], +["havttbox", "havttbox", 5, ["HAVTTBOX"], ""], +["tpage-1838", "tpage-1838", 5, ["HJNGFOOT"], ""], +["tpage-1870", "tpage-1870", 5, ["HJNGFOOT"], ""], +["hjngfoot", "hjngfoot", 5, ["HJNGFOOT"], ""], +["tpage-1861", "tpage-1861", 5, ["HJX"], ""], +["tpage-1864", "tpage-1864", 5, ["HJX"], ""], +["tpage-1880", "tpage-1880", 5, ["HJX"], ""], +["tpage-1863", "tpage-1863", 5, ["HJX"], ""], +["jungle-debris-jar-a-ag", "jungle-debris-jar-a", 5, ["HJX", "JGA", "JGC", "JGD", "JGE", "JGG", "JGX", "JGY"], ""], +["jungle-debris-jar-b-ag", "jungle-debris-jar-b", 5, ["HJX", "JGA", "JGC", "JGD", "JGE", "JGG", "JGX", "JGY"], ""], +["jungle-debris-ag", "jungle-debris", 5, ["HJX", "JGA", "JGE", "JGX", "JGY"], ""], +["jungle-clay-jar-b-ag", "jungle-clay-jar-b", 5, ["HJX", "JGA", "JGC", "JGD", "JGE", "JGG", "JGX", "JGY"], ""], +["jungle-clay-jar-a-ag", "jungle-clay-jar-a", 5, ["HJX", "JGA", "JGC", "JGD", "JGE", "JGG", "JGX", "JGY"], ""], +["jungle-tree-root-large-b-ag", "jungle-tree-root-large-b", 5, ["HJX", "JGA", "JGE", "JGX", "JGY"], ""], +["jungle-tree-root-large-a-ag", "jungle-tree-root-large-a", 5, ["HJX", "JGA", "JGE", "JGX", "JGY"], ""], +["havjungx-vis", "havjungx-vis", 5, ["HJX"], ""], +["tpage-1867", "tpage-1867", 5, ["HJY"], ""], +["havjungy-vis", "havjungy-vis", 5, ["HJY"], ""], +["tpage-1949", "tpage-1949", 5, ["HSX"], ""], +["tpage-2295", "tpage-2295", 5, ["HSX"], ""], +["havsewx-vis", "havsewx-vis", 5, ["HSX"], ""], +["tpage-1960", "tpage-1960", 5, ["HSY"], ""], +["tpage-3893", "tpage-3893", 5, ["HSY"], ""], +["tpage-1962", "tpage-1962", 5, ["HSY"], ""], +["havsewy-vis", "havsewy-vis", 5, ["HSY"], ""], +["tpage-646", "tpage-646", 5, ["HVA"], ""], +["tpage-963", "tpage-963", 5, ["HVA"], ""], +["havena-vis", "havena-vis", 5, ["HVA"], ""], +["tpage-658", "tpage-658", 5, ["HVB"], ""], +["tpage-968", "tpage-968", 5, ["HVB"], ""], +["havenb-vis", "havenb-vis", 5, ["HVB"], ""], +["tpage-656", "tpage-656", 5, ["HVC"], ""], +["tpage-1058", "tpage-1058", 5, ["HVC"], ""], +["havenc-vis", "havenc-vis", 5, ["HVC"], ""], +["tpage-645", "tpage-645", 5, ["HVD"], ""], +["tpage-965", "tpage-965", 5, ["HVD"], ""], +["tpage-3886", "tpage-3886", 5, ["HVD"], ""], +["tpage-1995", "tpage-1995", 5, ["HVD"], ""], +["havend-vis", "havend-vis", 5, ["HVD"], ""], +["tpage-665", "tpage-665", 5, ["HVE"], ""], +["tpage-1525", "tpage-1525", 5, ["HVE"], ""], +["havene-vis", "havene-vis", 5, ["HVE"], ""], +["tpage-1859", "tpage-1859", 5, ["HVJGTBOX"], ""], +["tpage-2846", "tpage-2846", 5, ["HVJGTBOX"], ""], +["hvjgtbox", "hvjgtbox", 5, ["HVJGTBOX"], ""], +["hvjgtt", "hvjgtt", 5, ["HVJGTT"], ""], +["tpage-2853", "tpage-2853", 5, ["HVSWFOOT"], ""], +["tpage-2854", "tpage-2854", 5, ["HVSWFOOT"], ""], +["hvswfoot", "hvswfoot", 5, ["HVSWFOOT"], ""], +["tpage-2841", "tpage-2841", 5, ["HVSWTBOX"], ""], +["tpage-2842", "tpage-2842", 5, ["HVSWTBOX"], ""], +["hvswtbox", "hvswtbox", 5, ["HVSWTBOX"], ""], +["hvswtt", "hvswtt", 5, ["HVSWTT"], ""], +["hvtrtt", "hvtrtt", 5, ["HVTRTT"], ""], +["tpage-1697", "tpage-1697", 5, ["HVX"], ""], +["havenx-vis", "havenx-vis", 5, ["HVX"], ""], +["tpage-1764", "tpage-1764", 5, ["HVY"], ""], +["tpage-3897", "tpage-3897", 5, ["HVY"], ""], +["tpage-1996", "tpage-1996", 5, ["HVY"], ""], +["haveny-vis", "haveny-vis", 5, ["HVY"], ""], +["peak-part", "peak-part", 5, ["IBX", "ICEBERGW", "ICEPASSW", "ICETOURW", "ICEW", "ICX", "IPX", "PEAKW", "PKX"], ""], +["tpage-2745", "tpage-2745", 5, ["IBX"], ""], +["tpage-2746", "tpage-2746", 5, ["IBX"], ""], +["tpage-3157", "tpage-3157", 5, ["IBX"], ""], +["tpage-3158", "tpage-3158", 5, ["IBX"], ""], +["snow-icebreak-c-ag", "snow-icebreak-c", 5, ["IBX", "IPX", "PKA", "PKB", "PKC", "PKX", "SNO", "SNOX", "SNW", "SNWX"], ""], +["icebergx-vis", "icebergx-vis", 5, ["IBX"], ""], +["tpage-2748", "tpage-2748", 5, ["IBY"], ""], +["tpage-3980", "tpage-3980", 5, ["IBY"], ""], +["icebergy-vis", "icebergy-vis", 5, ["IBY"], ""], +["tpage-2641", "tpage-2641", 5, ["ICA"], ""], +["tpage-3115", "tpage-3115", 5, ["ICA"], ""], +["tpage-2642", "tpage-2642", 5, ["ICA"], ""], +["tpage-3060", "tpage-3060", 5, ["ICA"], ""], +["ice-flag-ag", "ice-flag", 5, ["ICA", "ICB", "ICX", "IPY"], ""], +["icea-vis", "icea-vis", 5, ["ICA"], ""], +["tpage-2639", "tpage-2639", 5, ["ICB"], ""], +["tpage-3124", "tpage-3124", 5, ["ICB"], ""], +["tpage-2640", "tpage-2640", 5, ["ICB"], ""], +["tpage-3059", "tpage-3059", 5, ["ICB"], ""], +["iceb-vis", "iceb-vis", 5, ["ICB"], ""], +["icbgtt", "icbgtt", 5, ["ICBGTT"], ""], +["tpage-2643", "tpage-2643", 5, ["ICC"], ""], +["tpage-3001", "tpage-3001", 5, ["ICC"], ""], +["tpage-3974", "tpage-3974", 5, ["ICC"], ""], +["icec-vis", "icec-vis", 5, ["ICC"], ""], +["tpage-2644", "tpage-2644", 5, ["ICD"], ""], +["tpage-2645", "tpage-2645", 5, ["ICD"], ""], +["tpage-3516", "tpage-3516", 5, ["ICD"], ""], +["iced-vis", "iced-vis", 5, ["ICD"], ""], +["tpage-2957", "tpage-2957", 5, ["ICEBERGS"], ""], +["tpage-3361", "tpage-3361", 5, ["ICEBERGS"], ""], +["tpage-2958", "tpage-2958", 5, ["ICEBERGS"], ""], +["tpage-3104", "tpage-3104", 5, ["ICEBERGS"], ""], +["icebergs", "icebergs", 5, ["ICEBERGS"], ""], +["tpage-2996", "tpage-2996", 5, ["ICEBERGW"], ""], +["icebergw", "icebergw", 5, ["ICEBERGW"], ""], +["tpage-2849", "tpage-2849", 5, ["ICEBFOOT"], ""], +["tpage-2850", "tpage-2850", 5, ["ICEBFOOT"], ""], +["icebfoot", "icebfoot", 5, ["ICEBFOOT"], ""], +["tpage-3456", "tpage-3456", 5, ["ICEBTBOX"], ""], +["tpage-3457", "tpage-3457", 5, ["ICEBTBOX"], ""], +["icebtbox", "icebtbox", 5, ["ICEBTBOX"], ""], +["tpage-2855", "tpage-2855", 5, ["ICEFOOT"], ""], +["tpage-2856", "tpage-2856", 5, ["ICEFOOT"], ""], +["icefoot", "icefoot", 5, ["ICEFOOT"], ""], +["tpage-2955", "tpage-2955", 5, ["ICEPASSS"], ""], +["tpage-3360", "tpage-3360", 5, ["ICEPASSS"], ""], +["tpage-2956", "tpage-2956", 5, ["ICEPASSS"], ""], +["tpage-3103", "tpage-3103", 5, ["ICEPASSS"], ""], +["icepasss", "icepasss", 5, ["ICEPASSS"], ""], +["tpage-2951", "tpage-2951", 5, ["ICEPASSW"], ""], +["icepassw", "icepassw", 5, ["ICEPASSW"], ""], +["tpage-2857", "tpage-2857", 5, ["ICEPFOOT"], ""], +["tpage-2858", "tpage-2858", 5, ["ICEPFOOT"], ""], +["icepfoot", "icepfoot", 5, ["ICEPFOOT"], ""], +["tpage-3458", "tpage-3458", 5, ["ICEPTBOX"], ""], +["tpage-3459", "tpage-3459", 5, ["ICEPTBOX"], ""], +["iceptbox", "iceptbox", 5, ["ICEPTBOX"], ""], +["tpage-2905", "tpage-2905", 5, ["ICES"], ""], +["tpage-3125", "tpage-3125", 5, ["ICES"], ""], +["tpage-2963", "tpage-2963", 5, ["ICES"], ""], +["tpage-3102", "tpage-3102", 5, ["ICES"], ""], +["peak-snowball-ag", "peak-snowball", 5, ["ICES", "ICETOURS", "PEAKS"], ""], +["ices", "ices", 5, ["ICES"], ""], +["tpage-3133", "tpage-3133", 5, ["ICETBOX"], ""], +["tpage-3134", "tpage-3134", 5, ["ICETBOX"], ""], +["icetbox", "icetbox", 5, ["ICETBOX"], ""], +["tpage-3813", "tpage-3813", 5, ["ICETFOOT"], ""], +["tpage-3814", "tpage-3814", 5, ["ICETFOOT"], ""], +["icetfoot", "icetfoot", 5, ["ICETFOOT"], ""], +["tpage-2959", "tpage-2959", 5, ["ICETOURS"], ""], +["tpage-3355", "tpage-3355", 5, ["ICETOURS"], ""], +["tpage-3362", "tpage-3362", 5, ["ICETOURS"], ""], +["tpage-2960", "tpage-2960", 5, ["ICETOURS"], ""], +["tpage-3602", "tpage-3602", 5, ["ICETOURS"], ""], +["icetours", "icetours", 5, ["ICETOURS"], ""], +["peak-obs", "peak-obs", 5, ["ICETOURW", "ICEW", "ICX", "PEAKW", "PKX"], ""], +["ice-obs", "ice-obs", 5, ["ICETOURW", "ICEW", "ICX"], ""], +["tpage-2964", "tpage-2964", 5, ["ICETOURW"], ""], +["icetourw", "icetourw", 5, ["ICETOURW"], ""], +["tpage-3834", "tpage-3834", 5, ["ICETRN"], ""], +["tpage-3913", "tpage-3913", 5, ["ICETRN"], ""], +["icetrn", "icetrn", 5, ["ICETRN"], ""], +["icett", "icett", 5, ["ICETT"], ""], +["tpage-3460", "tpage-3460", 5, ["ICETTBOX"], ""], +["tpage-3461", "tpage-3461", 5, ["ICETTBOX"], ""], +["icettbox", "icettbox", 5, ["ICETTBOX"], ""], +["icew", "icew", 5, ["ICEW"], ""], +["icpstt", "icpstt", 5, ["ICPSTT"], ""], +["ictrtt", "ictrtt", 5, ["ICTRTT"], ""], +["tpage-2719", "tpage-2719", 5, ["ICX"], ""], +["tpage-3120", "tpage-3120", 5, ["ICX"], ""], +["icex-vis", "icex-vis", 5, ["ICX"], ""], +["tpage-2728", "tpage-2728", 5, ["ICY"], ""], +["tpage-3669", "tpage-3669", 5, ["ICY"], ""], +["icey-vis", "icey-vis", 5, ["ICY"], ""], +["tpage-2711", "tpage-2711", 5, ["IPX"], ""], +["tpage-2712", "tpage-2712", 5, ["IPX"], ""], +["tpage-3155", "tpage-3155", 5, ["IPX"], ""], +["icepassx-vis", "icepassx-vis", 5, ["IPX"], ""], +["tpage-2730", "tpage-2730", 5, ["IPY"], ""], +["tpage-3121", "tpage-3121", 5, ["IPY"], ""], +["icepassy-vis", "icepassy-vis", 5, ["IPY"], ""], +["tpage-3888", "tpage-3888", 5, ["JAKCRED"], ""], +["tpage-3889", "tpage-3889", 5, ["JAKCRED"], ""], +["tpage-3890", "tpage-3890", 5, ["JAKCRED"], ""], +["jakd-hr-cred-ag", "jakd-hr-cred", 5, ["JAKCRED"], ""], +["keira-highres-ag", "keira-highres", 5, ["JAKCRED"], ""], +["jakcred", "jakcred", 5, ["JAKCRED"], ""], +["tpage-3694", "tpage-3694", 5, ["JAKLEV"], ""], +["jakd-ag", "jakd", 5, ["JAKLEV"], ""], +["jaklev", "jaklev", 5, ["JAKLEV"], ""], +["jakvl", "jakvl", 5, ["JAKVL"], ""], +["tpage-649", "tpage-649", 5, ["JGA"], ""], +["tpage-962", "tpage-962", 5, ["JGA"], ""], +["tpage-650", "tpage-650", 5, ["JGA"], ""], +["tpage-652", "tpage-652", 5, ["JGA"], ""], +["junglea-vis", "junglea-vis", 5, ["JGA"], ""], +["tpage-641", "tpage-641", 5, ["JGB"], ""], +["tpage-642", "tpage-642", 5, ["JGB"], ""], +["tpage-644", "tpage-644", 5, ["JGB"], ""], +["jungleb-vis", "jungleb-vis", 5, ["JGB"], ""], +["tpage-653", "tpage-653", 5, ["JGC"], ""], +["tpage-654", "tpage-654", 5, ["JGC"], ""], +["junglec-vis", "junglec-vis", 5, ["JGC"], ""], +["tpage-648", "tpage-648", 5, ["JGD"], ""], +["tpage-706", "tpage-706", 5, ["JGD"], ""], +["jungled-vis", "jungled-vis", 5, ["JGD"], ""], +["tpage-640", "tpage-640", 5, ["JGE"], ""], +["tpage-1050", "tpage-1050", 5, ["JGE"], ""], +["tpage-967", "tpage-967", 5, ["JGE"], ""], +["tpage-966", "tpage-966", 5, ["JGE"], ""], +["junglee-vis", "junglee-vis", 5, ["JGE"], ""], +["tpage-638", "tpage-638", 5, ["JGF"], ""], +["tpage-1742", "tpage-1742", 5, ["JGF"], ""], +["tpage-1879", "tpage-1879", 5, ["JGF"], ""], +["tpage-1780", "tpage-1780", 5, ["JGF"], ""], +["junglef-vis", "junglef-vis", 5, ["JGF"], ""], +["tpage-639", "tpage-639", 5, ["JGG"], ""], +["tpage-1190", "tpage-1190", 5, ["JGG"], ""], +["jungleg-vis", "jungleg-vis", 5, ["JGG"], ""], +["jungle-part2", "jungle-part2", 5, ["JGX", "JUNGLEW"], ""], +["tpage-1601", "tpage-1601", 5, ["JGX"], ""], +["tpage-1603", "tpage-1603", 5, ["JGX"], ""], +["tpage-1600", "tpage-1600", 5, ["JGX"], ""], +["junglex-vis", "junglex-vis", 5, ["JGX"], ""], +["tpage-1621", "tpage-1621", 5, ["JGY"], ""], +["tpage-1624", "tpage-1624", 5, ["JGY"], ""], +["tpage-1623", "tpage-1623", 5, ["JGY"], ""], +["jungley-vis", "jungley-vis", 5, ["JGY"], ""], +["tpage-3695", "tpage-3695", 5, ["JKALEV"], ""], +["jak-ag", "jak", 5, ["JKALEV"], ""], +["jkalev", "jkalev", 5, ["JKALEV"], ""], +["tpage-3696", "tpage-3696", 5, ["JKBLEV"], ""], +["jakb-ag", "jakb", 5, ["JKBLEV"], ""], +["jkblev", "jkblev", 5, ["JKBLEV"], ""], +["tpage-3697", "tpage-3697", 5, ["JKCLEV"], ""], +["jakc-ag", "jakc", 5, ["JKCLEV"], ""], +["jkclev", "jkclev", 5, ["JKCLEV"], ""], +["tpage-1839", "tpage-1839", 5, ["JUNGFOOT"], ""], +["tpage-1872", "tpage-1872", 5, ["JUNGFOOT"], ""], +["jungfoot", "jungfoot", 5, ["JUNGFOOT"], ""], +["tpage-2375", "tpage-2375", 5, ["JUNGLES"], ""], +["tpage-1682", "tpage-1682", 5, ["JUNGLES"], ""], +["tpage-2563", "tpage-2563", 5, ["JUNGLES"], ""], +["tpage-2333", "tpage-2333", 5, ["JUNGLES"], ""], +["tpage-1847", "tpage-1847", 5, ["JUNGLES"], ""], +["jungle-statue-small-outdoors-ag", "jungle-statue-small-outdoors", 5, ["JUNGLES"], ""], +["jungle-statue-small-debris-ag", "jungle-statue-small-debris", 5, ["JUNGLES"], ""], +["jungles", "jungles", 5, ["JUNGLES"], ""], +["junglett", "junglett", 5, ["JUNGLETT"], ""], +["tpage-544", "tpage-544", 5, ["JUNGLEW"], ""], +["jungle-branch-collision-a-ag", "jungle-branch-collision-a", 5, ["JUNGLEW"], ""], +["junglew", "junglew", 5, ["JUNGLEW"], ""], +["tpage-1782", "tpage-1782", 5, ["JUNGTBOX"], ""], +["tpage-2827", "tpage-2827", 5, ["JUNGTBOX"], ""], +["jungtbox", "jungtbox", 5, ["JUNGTBOX"], ""], +["tpage-3914", "tpage-3914", 5, ["JUNGTRN"], ""], +["jungtrn", "jungtrn", 5, ["JUNGTRN"], ""], +["speech-kaeden", "speech-kaeden", 5, ["KAELEV"], ""], +["tpage-3698", "tpage-3698", 5, ["KAELEV"], ""], +["kaeden-ag", "kaeden", 5, ["KAELEV"], ""], +["kaelev", "kaelev", 5, ["KAELEV"], ""], +["kcross-part", "kcross-part", 5, ["KCR", "KCRX"], ""], +["kcross-obs", "kcross-obs", 5, ["KCR", "KCRX"], ""], +["kcross-ocean", "kcross-ocean", 5, ["KCR", "KCRX"], ""], +["kcross-effects", "kcross-effects", 5, ["KCR", "KCRX"], ""], +["tpage-1807", "tpage-1807", 5, ["KCR"], ""], +["tpage-2229", "tpage-2229", 5, ["KCR"], ""], +["tpage-1806", "tpage-1806", 5, ["KCR"], ""], +["tpage-3981", "tpage-3981", 5, ["KCR"], ""], +["tpage-1808", "tpage-1808", 5, ["KCR"], ""], +["kcro-flag-down-ag", "kcro-flag-down", 5, ["KCR", "KCRX"], ""], +["kcro-fence-piece-a-ag", "kcro-fence-piece-a", 5, ["KCR", "KCRX"], ""], +["kcro-fence-debris-ag", "kcro-fence-debris", 5, ["KCR"], ""], +["kcro-oil-barrel-ag", "kcro-oil-barrel", 5, ["KCR", "KCRX"], ""], +["kcro-staff-flag-ag", "kcro-staff-flag", 5, ["KCR"], ""], +["kcro-fence-piece-b-ag", "kcro-fence-piece-b", 5, ["KCR", "KCRX"], ""], +["kcro-bouncy-tire-a-ag", "kcro-bouncy-tire-a", 5, ["KCR", "KCRX"], ""], +["kcross-vis", "kcross-vis", 5, ["KCR"], ""], +["tpage-2438", "tpage-2438", 5, ["KCROSART"], ""], +["kcrosart", "kcrosart", 5, ["KCROSART"], ""], +["tpage-2219", "tpage-2219", 5, ["KCROSCTF"], ""], +["tpage-2220", "tpage-2220", 5, ["KCROSCTF"], ""], +["kcrosctf", "kcrosctf", 5, ["KCROSCTF"], ""], +["tpage-2323", "tpage-2323", 5, ["KCROSSS"], ""], +["kcrosss", "kcrosss", 5, ["KCROSSS"], ""], +["tpage-2436", "tpage-2436", 5, ["KCRSCLCT"], ""], +["kcrsclct", "kcrsclct", 5, ["KCRSCLCT"], ""], +["tpage-2363", "tpage-2363", 5, ["KCRSPLOW"], ""], +["kcrsplow", "kcrsplow", 5, ["KCRSPLOW"], ""], +["tpage-2296", "tpage-2296", 5, ["KCRX"], ""], +["tpage-2299", "tpage-2299", 5, ["KCRX"], ""], +["tpage-3977", "tpage-3977", 5, ["KCRX"], ""], +["tpage-2298", "tpage-2298", 5, ["KCRX"], ""], +["kcrossx-vis", "kcrossx-vis", 5, ["KCRX"], ""], +["tpage-3944", "tpage-3944", 5, ["KEICRED"], ""], +["tpage-3943", "tpage-3943", 5, ["KEICRED"], ""], +["kei-hr-cred-ag", "kei-hr-cred", 5, ["KEICRED"], ""], +["keicred", "keicred", 5, ["KEICRED"], ""], +["speech-keira", "speech-keira", 5, ["KIELEV"], ""], +["tpage-3715", "tpage-3715", 5, ["KIELEV"], ""], +["keira-ag", "keira", 5, ["KIELEV"], ""], +["kielev", "kielev", 5, ["KIELEV"], ""], +["kievl", "kievl", 5, ["KIEVL"], ""], +["tpage-3948", "tpage-3948", 5, ["KLECRED"], ""], +["kle-hr-cred-ag", "kle-hr-cred", 5, ["KLECRED"], ""], +["klecred", "klecred", 5, ["KLECRED"], ""], +["speech-kleiver", "speech-kleiver", 5, ["KLELEV"], ""], +["tpage-3700", "tpage-3700", 5, ["KLELEV"], ""], +["klever-ag", "klever", 5, ["KLELEV"], ""], +["klelev", "klelev", 5, ["KLELEV"], ""], +["panther-chassis-ag", "panther-chassis", 5, ["KLEVL", "PANTL", "THAVL2"], ""], +["panther-door-b-ag", "panther-door-b", 5, ["KLEVL", "PANTL"], ""], +["panther-f-bumper-c-ag", "panther-f-bumper-c", 5, ["KLEVL", "PANTL"], ""], +["panther-hood-a-ag", "panther-hood-a", 5, ["KLEVL", "PANTL"], ""], +["panther-roof-c-ag", "panther-roof-c", 5, ["KLEVL", "PANTL"], ""], +["klevl", "klevl", 5, ["KLEVL"], ""], +["klevl2", "klevl2", 5, ["KLEVL2"], ""], +["tpage-296", "tpage-296", 5, ["KRA"], ""], +["tpage-582", "tpage-582", 5, ["KRA"], ""], +["tpage-406", "tpage-406", 5, ["KRA"], ""], +["tpage-583", "tpage-583", 5, ["KRA"], ""], +["kras-windsock-ag", "kras-windsock", 5, ["KRA"], ""], +["krasa-vis", "krasa-vis", 5, ["KRA"], ""], +["tpage-1646", "tpage-1646", 5, ["KRASFOOT"], ""], +["tpage-1681", "tpage-1681", 5, ["KRASFOOT"], ""], +["tpage-1688", "tpage-1688", 5, ["KRASFOOT"], ""], +["krasfoot", "krasfoot", 5, ["KRASFOOT"], ""], +["tpage-2024", "tpage-2024", 5, ["KRASS"], ""], +["tpage-1658", "tpage-1658", 5, ["KRASS"], ""], +["tpage-3877", "tpage-3877", 5, ["KRASS"], ""], +["tpage-2039", "tpage-2039", 5, ["KRASS"], ""], +["tpage-1846", "tpage-1846", 5, ["KRASS"], ""], +["kras-pump-break-ag", "kras-pump-break", 5, ["KRASS", "KRASW"], ""], +["kras-pump-debris-ag", "kras-pump-debris", 5, ["KRASS"], ""], +["krass", "krass", 5, ["KRASS"], ""], +["tpage-1696", "tpage-1696", 5, ["KRASTBOX"], ""], +["tpage-2612", "tpage-2612", 5, ["KRASTBOX"], ""], +["krastbox", "krastbox", 5, ["KRASTBOX"], ""], +["tpage-1775", "tpage-1775", 5, ["KRASTRN"], ""], +["tpage-2862", "tpage-2862", 5, ["KRASTRN"], ""], +["training-wall-ag", "training-wall", 5, ["KRASTRN"], ""], +["start-light-ag", "start-light", 5, ["KRASTRN"], ""], +["training-marker-ag", "training-marker", 5, ["KRASTRN"], ""], +["krastrn", "krastrn", 5, ["KRASTRN"], ""], +["krastt", "krastt", 5, ["KRASTT"], ""], +["tpage-207", "tpage-207", 5, ["KRASW"], ""], +["tpage-185", "tpage-185", 5, ["KRASW"], ""], +["krasw", "krasw", 5, ["KRASW"], ""], +["tpage-3817", "tpage-3817", 5, ["KRATFOOT"], ""], +["tpage-3818", "tpage-3818", 5, ["KRATFOOT"], ""], +["kratfoot", "kratfoot", 5, ["KRATFOOT"], ""], +["tpage-2887", "tpage-2887", 5, ["KRATOURS"], ""], +["tpage-3883", "tpage-3883", 5, ["KRATOURS"], ""], +["tpage-3135", "tpage-3135", 5, ["KRATOURS"], ""], +["tpage-3601", "tpage-3601", 5, ["KRATOURS"], ""], +["kratours", "kratours", 5, ["KRATOURS"], ""], +["tpage-2886", "tpage-2886", 5, ["KRATOURW"], ""], +["kratourw", "kratourw", 5, ["KRATOURW"], ""], +["tpage-3462", "tpage-3462", 5, ["KRATTBOX"], ""], +["tpage-3463", "tpage-3463", 5, ["KRATTBOX"], ""], +["krattbox", "krattbox", 5, ["KRATTBOX"], ""], +["tpage-408", "tpage-408", 5, ["KRB"], ""], +["tpage-492", "tpage-492", 5, ["KRB"], ""], +["tpage-409", "tpage-409", 5, ["KRB"], ""], +["kras-tower-ag", "kras-tower", 5, ["KRB", "KRX"], ""], +["kras-flag-ag", "kras-flag", 5, ["KRB"], ""], +["krasb-vis", "krasb-vis", 5, ["KRB"], ""], +["tpage-407", "tpage-407", 5, ["KRC"], ""], +["tpage-676", "tpage-676", 5, ["KRC"], ""], +["tpage-504", "tpage-504", 5, ["KRC"], ""], +["krasc-vis", "krasc-vis", 5, ["KRC"], ""], +["krtrtt", "krtrtt", 5, ["KRTRTT"], ""], +["tpage-390", "tpage-390", 5, ["KRX"], ""], +["tpage-733", "tpage-733", 5, ["KRX"], ""], +["tpage-732", "tpage-732", 5, ["KRX"], ""], +["krasx-vis", "krasx-vis", 5, ["KRX"], ""], +["tpage-728", "tpage-728", 5, ["KRY"], ""], +["tpage-729", "tpage-729", 5, ["KRY"], ""], +["krasy-vis", "krasy-vis", 5, ["KRY"], ""], +["leopard-chassis-ag", "leopard-chassis", 5, ["LEOPL", "SIGVL", "THBVL2"], ""], +["leopard-door-a-ag", "leopard-door-a", 5, ["LEOPL"], ""], +["leopard-door-b-ag", "leopard-door-b", 5, ["LEOPL", "SIGVL"], ""], +["leopard-door-c-ag", "leopard-door-c", 5, ["LEOPL"], ""], +["leopard-door-d-ag", "leopard-door-d", 5, ["LEOPL"], ""], +["leopard-door-e-ag", "leopard-door-e", 5, ["LEOPL", "THBVL2"], ""], +["leopard-f-fender-a-ag", "leopard-f-fender-a", 5, ["LEOPL"], ""], +["leopard-f-fender-b-ag", "leopard-f-fender-b", 5, ["LEOPL", "SIGVL"], ""], +["leopard-f-fender-c-ag", "leopard-f-fender-c", 5, ["LEOPL"], ""], +["leopard-f-fender-d-ag", "leopard-f-fender-d", 5, ["LEOPL"], ""], +["leopard-f-fender-e-ag", "leopard-f-fender-e", 5, ["LEOPL", "THBVL2"], ""], +["leopard-hood-a-ag", "leopard-hood-a", 5, ["LEOPL"], ""], +["leopard-hood-b-ag", "leopard-hood-b", 5, ["LEOPL", "SIGVL"], ""], +["leopard-hood-c-ag", "leopard-hood-c", 5, ["LEOPL", "THBVL2"], ""], +["leopard-hood-d-ag", "leopard-hood-d", 5, ["LEOPL"], ""], +["leopard-hood-e-ag", "leopard-hood-e", 5, ["LEOPL"], ""], +["leopard-r-fender-a-ag", "leopard-r-fender-a", 5, ["LEOPL", "THBVL2"], ""], +["leopard-r-fender-b-ag", "leopard-r-fender-b", 5, ["LEOPL", "SIGVL"], ""], +["leopard-r-fender-c-ag", "leopard-r-fender-c", 5, ["LEOPL"], ""], +["leopard-r-fender-d-ag", "leopard-r-fender-d", 5, ["LEOPL"], ""], +["leopard-r-fender-e-ag", "leopard-r-fender-e", 5, ["LEOPL"], ""], +["leopard-roof-a-ag", "leopard-roof-a", 5, ["LEOPL"], ""], +["leopard-roof-b-ag", "leopard-roof-b", 5, ["LEOPL"], ""], +["leopard-roof-c-ag", "leopard-roof-c", 5, ["LEOPL"], ""], +["leopard-roof-d-ag", "leopard-roof-d", 5, ["LEOPL"], ""], +["leopard-roof-e-ag", "leopard-roof-e", 5, ["LEOPL", "THBVL2"], ""], +["leopl", "leopl", 5, ["LEOPL"], ""], +["3d-menu-elements", "3d-menu-elements", 5, ["MENU2"], ""], +["lobby-menu-data", "lobby-menu-data", 5, ["MENU2"], ""], +["lobby-menu-manager", "lobby-menu-manager", 5, ["MENU2"], ""], +["lobby-scroll", "lobby-scroll", 5, ["MENU2"], ""], +["lobby-brs", "lobby-brs", 5, ["MENU2"], ""], +["lobby-profile", "lobby-profile", 5, ["MENU2"], ""], +["menumap-effects", "menumap-effects", 5, ["MENU2"], ""], +["lobby-adventure-awards", "lobby-adventure-awards", 5, ["MENU2"], ""], +["lobby-adventure-maps", "lobby-adventure-maps", 5, ["MENU2"], ""], +["lobby-adventure-maps-2", "lobby-adventure-maps-2", 5, ["MENU2"], ""], +["lobby-adventure", "lobby-adventure", 5, ["MENU2"], ""], +["lobby-customize", "lobby-customize", 5, ["MENU2"], ""], +["lobby-results", "lobby-results", 5, ["MENU2"], ""], +["lobby-net-h", "lobby-net-h", 5, ["MENU2"], ""], +["lobby-stats", "lobby-stats", 5, ["MENU2"], ""], +["lobby-net-startup", "lobby-net-startup", 5, ["MENU2"], ""], +["lobby-patch", "lobby-patch", 5, ["MENU2"], ""], +["lobby-buddies", "lobby-buddies", 5, ["MENU2"], ""], +["lobby-games", "lobby-games", 5, ["MENU2"], ""], +["lobby-rooms", "lobby-rooms", 5, ["MENU2"], ""], +["lobby-clans", "lobby-clans", 5, ["MENU2"], ""], +["lobby-advanced", "lobby-advanced", 5, ["MENU2"], ""], +["lobby-secrets", "lobby-secrets", 5, ["MENU2"], ""], +["garage-obs", "garage-obs", 5, ["MENU2"], ""], +["tpage-1022", "tpage-1022", 5, ["MENU2"], ""], +["tpage-1446", "tpage-1446", 5, ["MENU2"], ""], +["tpage-1121", "tpage-1121", 5, ["MENU2"], ""], +["tpage-1625", "tpage-1625", 5, ["MENU2"], ""], +["jakxlogo-ag", "jakxlogo", 5, ["MENU2"], ""], +["select-screen-ag", "select-screen", 5, ["MENU2"], ""], +["adv-event-panel-ag", "adv-event-panel", 5, ["MENU2"], ""], +["select-screen-sml-ag", "select-screen-sml", 5, ["MENU2"], ""], +["full-screen-ag", "full-screen", 5, ["MENU2"], ""], +["select-mode-chooser-ag", "select-mode-chooser", 5, ["MENU2"], ""], +["lobby-screen-a-ag", "lobby-screen-a", 5, ["MENU2"], ""], +["lobby-screen-c-ag", "lobby-screen-c", 5, ["MENU2"], ""], +["pop-up-screen-b-ag", "pop-up-screen-b", 5, ["MENU2"], ""], +["mem-card-screen-ag", "mem-card-screen", 5, ["MENU2"], ""], +["lg-player-screen-ag", "lg-player-screen", 5, ["MENU2"], ""], +["pop-up-screen-c-ag", "pop-up-screen-c", 5, ["MENU2"], ""], +["play-screen-ag", "play-screen", 5, ["MENU2"], ""], +["pop-up-screen-a-ag", "pop-up-screen-a", 5, ["MENU2"], ""], +["top-bar-ag", "top-bar", 5, ["MENU2"], ""], +["lobby-screen-b-ag", "lobby-screen-b", 5, ["MENU2"], ""], +["map-screen-ag", "map-screen", 5, ["MENU2"], ""], +["bottom-bar-ag", "bottom-bar", 5, ["MENU2"], ""], +["character-select-ag", "character-select", 5, ["MENU2"], ""], +["keyboard-ag", "keyboard", 5, ["MENU2"], ""], +["confirm-screen-ag", "confirm-screen", 5, ["MENU2"], ""], +["combat-racing-ag", "combat-racing", 5, ["MENU2"], ""], +["play-screen-b-ag", "play-screen-b", 5, ["MENU2"], ""], +["lobby-tab-large-ag", "lobby-tab-large", 5, ["MENU2"], ""], +["lobby-tab-small-ag", "lobby-tab-small", 5, ["MENU2"], ""], +["lobby-tab-small-b-ag", "lobby-tab-small-b", 5, ["MENU2"], ""], +["split-screen-ag", "split-screen", 5, ["MENU2"], ""], +["cash-bar-ag", "cash-bar", 5, ["MENU2"], ""], +["large-type-bar-ag", "large-type-bar", 5, ["MENU2"], ""], +["sml-type-bar-ag", "sml-type-bar", 5, ["MENU2"], ""], +["points-counter-ag", "points-counter", 5, ["MENU2"], ""], +["side-walls-ag", "side-walls", 5, ["MENU2"], ""], +["side-bar-e-ag", "side-bar-e", 5, ["MENU2"], ""], +["tune-meter-bar-ag", "tune-meter-bar", 5, ["MENU2"], ""], +["side-bar-ag", "side-bar", 5, ["MENU2"], ""], +["garage-cinema-ag", "garage-cinema", 5, ["MENU2"], ""], +["side-bar-title-ag", "side-bar-title", 5, ["MENU2"], ""], +["lobby-screen-d-ag", "lobby-screen-d", 5, ["MENU2"], ""], +["tune-type-bar-ag", "tune-type-bar", 5, ["MENU2"], ""], +["side-bar-b-ag", "side-bar-b", 5, ["MENU2"], ""], +["side-bar-c-ag", "side-bar-c", 5, ["MENU2"], ""], +["side-bar-d-ag", "side-bar-d", 5, ["MENU2"], ""], +["interface-cam-ag", "interface-cam", 5, ["MENU2"], ""], +["menumap-part", "menumap-part", 5, ["MENUMAP"], ""], +["lobby-adventure-obs", "lobby-adventure-obs", 5, ["MENUMAP"], ""], +["tpage-2920", "tpage-2920", 5, ["MENUMAP"], ""], +["tpage-2916", "tpage-2916", 5, ["MENUMAP"], ""], +["tpage-3674", "tpage-3674", 5, ["MENUMAP"], ""], +["world-map-hav-tour-mesh-ag", "world-map-hav-tour-mesh", 5, ["MENUMAP"], ""], +["world-map-ice-tour-mesh-ag", "world-map-ice-tour-mesh", 5, ["MENUMAP"], ""], +["world-map-haven-mesh-ag", "world-map-haven-mesh", 5, ["MENUMAP"], ""], +["world-map-spar-tour-mesh-ag", "world-map-spar-tour-mesh", 5, ["MENUMAP"], ""], +["world-map-iceberg-mesh-ag", "world-map-iceberg-mesh", 5, ["MENUMAP"], ""], +["world-map-icepass-mesh-ag", "world-map-icepass-mesh", 5, ["MENUMAP"], ""], +["world-map-kras-tour-mesh-ag", "world-map-kras-tour-mesh", 5, ["MENUMAP"], ""], +["world-map-havjung-mesh-ag", "world-map-havjung-mesh", 5, ["MENUMAP"], ""], +["world-map-spartem-mesh-ag", "world-map-spartem-mesh", 5, ["MENUMAP"], ""], +["world-map-canspar-mesh-ag", "world-map-canspar-mesh", 5, ["MENUMAP"], ""], +["world-map-havsew-mesh-ag", "world-map-havsew-mesh", 5, ["MENUMAP"], ""], +["world-map-ice-mesh-ag", "world-map-ice-mesh", 5, ["MENUMAP"], ""], +["wm-docks-crane-ag", "wm-docks-crane", 5, ["MENUMAP"], ""], +["world-map-peak-mesh-ag", "world-map-peak-mesh", 5, ["MENUMAP"], ""], +["world-map-jungle-mesh-ag", "world-map-jungle-mesh", 5, ["MENUMAP"], ""], +["world-map-drome-mesh-ag", "world-map-drome-mesh", 5, ["MENUMAP"], ""], +["world-map-desarena-mesh-ag", "world-map-desarena-mesh", 5, ["MENUMAP"], ""], +["world-map-spargus-mesh-ag", "world-map-spargus-mesh", 5, ["MENUMAP"], ""], +["world-map-temple-mesh-ag", "world-map-temple-mesh", 5, ["MENUMAP"], ""], +["world-map-sewer-mesh-ag", "world-map-sewer-mesh", 5, ["MENUMAP"], ""], +["world-map-canyon-mesh-ag", "world-map-canyon-mesh", 5, ["MENUMAP"], ""], +["world-map-dromedoc-mesh-ag", "world-map-dromedoc-mesh", 5, ["MENUMAP"], ""], +["world-map-dockkra-mesh-ag", "world-map-dockkra-mesh", 5, ["MENUMAP"], ""], +["world-map-kras-mesh-ag", "world-map-kras-mesh", 5, ["MENUMAP"], ""], +["menu-kras-trophy-ag", "menu-kras-trophy", 5, ["MENUMAP"], ""], +["wm-kras-circular-tower-ag", "wm-kras-circular-tower", 5, ["MENUMAP"], ""], +["world-map-docks-mesh-ag", "world-map-docks-mesh", 5, ["MENUMAP"], ""], +["menu-marauder-trophy-ag", "menu-marauder-trophy", 5, ["MENUMAP"], ""], +["world-map-snow-mesh-ag", "world-map-snow-mesh", 5, ["MENUMAP"], ""], +["menu-spargus-trophy-ag", "menu-spargus-trophy", 5, ["MENUMAP"], ""], +["menu-haven-trophy-ag", "menu-haven-trophy", 5, ["MENUMAP"], ""], +["world-map-kcross-mesh-ag", "world-map-kcross-mesh", 5, ["MENUMAP"], ""], +["world-map-cliffs-mesh-ag", "world-map-cliffs-mesh", 5, ["MENUMAP"], ""], +["wm-track-car-ag", "wm-track-car", 5, ["MENUMAP"], ""], +["world-map-fort-mesh-ag", "world-map-fort-mesh", 5, ["MENUMAP"], ""], +["world-map-atoll-mesh-ag", "world-map-atoll-mesh", 5, ["MENUMAP"], ""], +["world-map-desisle-mesh-ag", "world-map-desisle-mesh", 5, ["MENUMAP"], ""], +["wm-drome-wind-machine-ag", "wm-drome-wind-machine", 5, ["MENUMAP"], ""], +["world-map-coliseum-mesh-ag", "world-map-coliseum-mesh", 5, ["MENUMAP"], ""], +["wm-fireworks-ship-ag", "wm-fireworks-ship", 5, ["MENUMAP"], ""], +["world-map-snowbowl-mesh-ag", "world-map-snowbowl-mesh", 5, ["MENUMAP"], ""], +["world-map-havenarena-mesh-ag", "world-map-havenarena-mesh", 5, ["MENUMAP"], ""], +["menumap", "menumap", 5, ["MENUMAP"], ""], +["mongoose-chassis-ag", "mongoose-chassis", 5, ["MONGL"], ""], +["mongoose-door-a-ag", "mongoose-door-a", 5, ["MONGL"], ""], +["mongoose-f-fender-a-ag", "mongoose-f-fender-a", 5, ["MONGL"], ""], +["mongoose-f-fender-b-ag", "mongoose-f-fender-b", 5, ["MONGL"], ""], +["mongoose-hood-a-ag", "mongoose-hood-a", 5, ["MONGL"], ""], +["mongoose-hood-b-ag", "mongoose-hood-b", 5, ["MONGL"], ""], +["mongoose-hood-c-ag", "mongoose-hood-c", 5, ["MONGL"], ""], +["mongoose-r-bumper-a-ag", "mongoose-r-bumper-a", 5, ["MONGL"], ""], +["mongoose-trunk-a-ag", "mongoose-trunk-a", 5, ["MONGL"], ""], +["mongoose-trunk-b-ag", "mongoose-trunk-b", 5, ["MONGL"], ""], +["mongoose-trunk-c-ag", "mongoose-trunk-c", 5, ["MONGL"], ""], +["mongoose-trunk-d-ag", "mongoose-trunk-d", 5, ["MONGL"], ""], +["mongl", "mongl", 5, ["MONGL"], ""], +["speech-osmo", "speech-osmo", 5, ["OSMLEV"], ""], +["tpage-3712", "tpage-3712", 5, ["OSMLEV"], ""], +["osmo-ag", "osmo", 5, ["OSMLEV"], ""], +["osmlev", "osmlev", 5, ["OSMLEV"], ""], +["panther-door-a-ag", "panther-door-a", 5, ["PANTL"], ""], +["panther-door-c-ag", "panther-door-c", 5, ["PANTL"], ""], +["panther-door-d-ag", "panther-door-d", 5, ["PANTL"], ""], +["panther-door-e-ag", "panther-door-e", 5, ["PANTL", "THAVL2"], ""], +["panther-f-bumper-a-ag", "panther-f-bumper-a", 5, ["PANTL"], ""], +["panther-f-bumper-b-ag", "panther-f-bumper-b", 5, ["PANTL"], ""], +["panther-f-bumper-d-ag", "panther-f-bumper-d", 5, ["PANTL"], ""], +["panther-f-bumper-e-ag", "panther-f-bumper-e", 5, ["PANTL", "THAVL2"], ""], +["panther-hood-b-ag", "panther-hood-b", 5, ["PANTL"], ""], +["panther-hood-c-ag", "panther-hood-c", 5, ["PANTL"], ""], +["panther-hood-d-ag", "panther-hood-d", 5, ["PANTL"], ""], +["panther-hood-e-ag", "panther-hood-e", 5, ["PANTL", "THAVL2"], ""], +["panther-roof-a-ag", "panther-roof-a", 5, ["PANTL"], ""], +["panther-roof-b-ag", "panther-roof-b", 5, ["PANTL"], ""], +["panther-roof-d-ag", "panther-roof-d", 5, ["PANTL"], ""], +["panther-roof-e-ag", "panther-roof-e", 5, ["PANTL", "THAVL2"], ""], +["pantl", "pantl", 5, ["PANTL"], ""], +["tpage-2859", "tpage-2859", 5, ["PEAKFOOT"], ""], +["tpage-2860", "tpage-2860", 5, ["PEAKFOOT"], ""], +["peakfoot", "peakfoot", 5, ["PEAKFOOT"], ""], +["tpage-2914", "tpage-2914", 5, ["PEAKS"], ""], +["tpage-3354", "tpage-3354", 5, ["PEAKS"], ""], +["tpage-3363", "tpage-3363", 5, ["PEAKS"], ""], +["tpage-2915", "tpage-2915", 5, ["PEAKS"], ""], +["tpage-2751", "tpage-2751", 5, ["PEAKS"], ""], +["peaks", "peaks", 5, ["PEAKS"], ""], +["tpage-3464", "tpage-3464", 5, ["PEAKTBOX"], ""], +["tpage-3465", "tpage-3465", 5, ["PEAKTBOX"], ""], +["peaktbox", "peaktbox", 5, ["PEAKTBOX"], ""], +["peaktt", "peaktt", 5, ["PEAKTT"], ""], +["tpage-2734", "tpage-2734", 5, ["PEAKW"], ""], +["peakw", "peakw", 5, ["PEAKW"], ""], +["tpage-3967", "tpage-3967", 5, ["PECCRED"], ""], +["pec-hr-cred-ag", "pec-hr-cred", 5, ["PECCRED"], ""], +["peccred", "peccred", 5, ["PECCRED"], ""], +["tpage-3780", "tpage-3780", 5, ["PECLEV"], ""], +["pecker-driver-ag", "pecker-driver", 5, ["PECLEV"], ""], +["peclev", "peclev", 5, ["PECLEV"], ""], +["pecvl", "pecvl", 5, ["PECVL"], ""], +["tpage-2700", "tpage-2700", 5, ["PKA"], ""], +["tpage-2701", "tpage-2701", 5, ["PKA"], ""], +["tpage-3153", "tpage-3153", 5, ["PKA"], ""], +["tpage-3152", "tpage-3152", 5, ["PKA"], ""], +["peaka-vis", "peaka-vis", 5, ["PKA"], ""], +["tpage-2717", "tpage-2717", 5, ["PKB"], ""], +["tpage-2718", "tpage-2718", 5, ["PKB"], ""], +["tpage-3976", "tpage-3976", 5, ["PKB"], ""], +["peakb-vis", "peakb-vis", 5, ["PKB"], ""], +["tpage-2714", "tpage-2714", 5, ["PKC"], ""], +["tpage-2716", "tpage-2716", 5, ["PKC"], ""], +["tpage-2715", "tpage-2715", 5, ["PKC"], ""], +["peakc-vis", "peakc-vis", 5, ["PKC"], ""], +["tpage-2713", "tpage-2713", 5, ["PKD"], ""], +["tpage-3117", "tpage-3117", 5, ["PKD"], ""], +["tpage-3443", "tpage-3443", 5, ["PKD"], ""], +["tpage-2930", "tpage-2930", 5, ["PKD"], ""], +["peak-double-flag-ag", "peak-double-flag", 5, ["PKD", "PKX"], ""], +["peakd-vis", "peakd-vis", 5, ["PKD"], ""], +["tpage-2738", "tpage-2738", 5, ["PKE"], ""], +["tpage-3581", "tpage-3581", 5, ["PKE"], ""], +["tpage-3979", "tpage-3979", 5, ["PKE"], ""], +["peake-vis", "peake-vis", 5, ["PKE"], ""], +["tpage-2732", "tpage-2732", 5, ["PKX"], ""], +["tpage-3119", "tpage-3119", 5, ["PKX"], ""], +["tpage-2733", "tpage-2733", 5, ["PKX"], ""], +["tpage-3154", "tpage-3154", 5, ["PKX"], ""], +["peakx-vis", "peakx-vis", 5, ["PKX"], ""], +["possum-chassis-ag", "possum-chassis", 5, ["POSSL", "THAVL", "TORVL2"], ""], +["possum-door-a-ag", "possum-door-a", 5, ["POSSL"], ""], +["possum-door-b-ag", "possum-door-b", 5, ["POSSL"], ""], +["possum-door-c-ag", "possum-door-c", 5, ["POSSL", "TORVL2"], ""], +["possum-door-d-ag", "possum-door-d", 5, ["POSSL"], ""], +["possum-door-e-ag", "possum-door-e", 5, ["POSSL", "THAVL"], ""], +["possum-f-fender-a-ag", "possum-f-fender-a", 5, ["POSSL"], ""], +["possum-f-fender-b-ag", "possum-f-fender-b", 5, ["POSSL", "THAVL"], ""], +["possum-f-fender-c-ag", "possum-f-fender-c", 5, ["POSSL"], ""], +["possum-f-fender-d-ag", "possum-f-fender-d", 5, ["POSSL"], ""], +["possum-f-fender-e-ag", "possum-f-fender-e", 5, ["POSSL", "TORVL2"], ""], +["possum-hood-a-ag", "possum-hood-a", 5, ["POSSL"], ""], +["possum-hood-b-ag", "possum-hood-b", 5, ["POSSL"], ""], +["possum-hood-c-ag", "possum-hood-c", 5, ["POSSL"], ""], +["possum-hood-d-ag", "possum-hood-d", 5, ["POSSL", "THAVL"], ""], +["possum-hood-e-ag", "possum-hood-e", 5, ["POSSL", "TORVL2"], ""], +["possum-trunk-a-ag", "possum-trunk-a", 5, ["POSSL"], ""], +["possum-trunk-b-ag", "possum-trunk-b", 5, ["POSSL"], ""], +["possum-trunk-c-ag", "possum-trunk-c", 5, ["POSSL", "THAVL"], ""], +["possum-trunk-d-ag", "possum-trunk-d", 5, ["POSSL", "TORVL2"], ""], +["possum-trunk-e-ag", "possum-trunk-e", 5, ["POSSL"], ""], +["possl", "possl", 5, ["POSSL"], ""], +["tpage-3673", "tpage-3673", 5, ["RACEWEAP"], ""], +["tpage-3930", "tpage-3930", 5, ["RACEWEAP"], ""], +["saucer-ag", "saucer", 5, ["RACEWEAP"], ""], +["raceweap", "raceweap", 5, ["RACEWEAP"], ""], +["speech-ratchet", "speech-ratchet", 5, ["RATLEV"], ""], +["tpage-3701", "tpage-3701", 5, ["RATLEV"], ""], +["ratchet-ag", "ratchet", 5, ["RATLEV"], ""], +["ratlev", "ratlev", 5, ["RATLEV"], ""], +["tpage-3947", "tpage-3947", 5, ["RAYCRED"], ""], +["ray-hr-cred-ag", "ray-hr-cred", 5, ["RAYCRED"], ""], +["raycred", "raycred", 5, ["RAYCRED"], ""], +["speech-rayn", "speech-rayn", 5, ["RAYLEV"], ""], +["tpage-3702", "tpage-3702", 5, ["RAYLEV"], ""], +["racerayn-ag", "racerayn", 5, ["RAYLEV"], ""], +["raylev", "raylev", 5, ["RAYLEV"], ""], +["wolf-chassis-ag", "wolf-chassis", 5, ["RAYVL", "TORVL3", "UR8VL3", "WOLFL"], ""], +["wolf-door-d-ag", "wolf-door-d", 5, ["RAYVL", "WOLFL"], ""], +["wolf-f-bumper-a-ag", "wolf-f-bumper-a", 5, ["RAYVL", "WOLFL"], ""], +["wolf-hood-c-ag", "wolf-hood-c", 5, ["RAYVL", "UR8VL3", "WOLFL"], ""], +["wolf-r-bumper-a-ag", "wolf-r-bumper-a", 5, ["RAYVL", "WOLFL"], ""], +["wolf-roof-d-ag", "wolf-roof-d", 5, ["RAYVL", "UR8VL3", "WOLFL"], ""], +["rayvl", "rayvl", 5, ["RAYVL"], ""], +["tiger-door-e-ag", "tiger-door-e", 5, ["RAYVL2", "TIGEL"], ""], +["tiger-hood-e-ag", "tiger-hood-e", 5, ["RAYVL2", "TIGEL"], ""], +["tiger-r-fender-a-ag", "tiger-r-fender-a", 5, ["RAYVL2", "TIGEL"], ""], +["tiger-roof-e-ag", "tiger-roof-e", 5, ["RAYVL2", "TIGEL"], ""], +["rayvl2", "rayvl2", 5, ["RAYVL2"], ""], +["tpage-3946", "tpage-3946", 5, ["RAZCRED"], ""], +["raz-hr-cred-ag", "raz-hr-cred", 5, ["RAZCRED"], ""], +["razcred", "razcred", 5, ["RAZCRED"], ""], +["speech-razer", "speech-razer", 5, ["RAZLEV"], ""], +["tpage-3703", "tpage-3703", 5, ["RAZLEV"], ""], +["razer-ag", "razer", 5, ["RAZLEV"], ""], +["razlev", "razlev", 5, ["RAZLEV"], ""], +["razvl", "razvl", 5, ["RAZVL"], ""], +["rustyh-part", "rustyh-part", 5, ["RTH", "RUSTYH"], ""], +["tpage-1111", "tpage-1111", 5, ["RTH"], ""], +["tpage-1112", "tpage-1112", 5, ["RTH"], ""], +["tpage-1875", "tpage-1875", 5, ["RTH"], ""], +["tpage-1114", "tpage-1114", 5, ["RTH"], ""], +["tpage-1860", "tpage-1860", 5, ["RTH"], ""], +["tpage-1224", "tpage-1224", 5, ["RTH", "RUSTYH"], ""], +["daxter-highres-ag", "daxter-highres", 5, ["RTH", "RUSTYH"], ""], +["krasmale-ag", "krasmale", 5, ["RTH", "RUSTYH"], ""], +["krasfemale-ag", "krasfemale", 5, ["RTH", "RUSTYH"], ""], +["rustyh-fishtank-broken-ag", "rustyh-fishtank-broken", 5, ["RTH", "RUSTYH"], ""], +["rustyh-tank-stuff-ag", "rustyh-tank-stuff", 5, ["RTH", "RUSTYH"], ""], +["rustyh-treasure-chest-ag", "rustyh-treasure-chest", 5, ["RTH", "RUSTYH"], ""], +["rustyh-blue-fish-ag", "rustyh-blue-fish", 5, ["RTH", "RUSTYH"], ""], +["rustyh-pink-fish-ag", "rustyh-pink-fish", 5, ["RTH", "RUSTYH"], ""], +["rustyh-fishtank-ag", "rustyh-fishtank", 5, ["RTH", "RUSTYH"], ""], +["rustyh-seaweed-c-ag", "rustyh-seaweed-c", 5, ["RTH", "RUSTYH"], ""], +["rustyh-seaweed-b-ag", "rustyh-seaweed-b", 5, ["RTH", "RUSTYH"], ""], +["rustyh-seaweed-d-ag", "rustyh-seaweed-d", 5, ["RTH", "RUSTYH"], ""], +["rustyh-seaweed-a-ag", "rustyh-seaweed-a", 5, ["RTH", "RUSTYH"], ""], +["rustyh-mug-ag", "rustyh-mug", 5, ["RTH", "RUSTYH"], ""], +["rustyh-mug-b-ag", "rustyh-mug-b", 5, ["RTH", "RUSTYH"], ""], +["rustyh-bar-stool-ag", "rustyh-bar-stool", 5, ["RTH", "RUSTYH"], ""], +["rustyh-small-fish-ag", "rustyh-small-fish", 5, ["RTH", "RUSTYH"], ""], +["rustyh-bottle-d-ag", "rustyh-bottle-d", 5, ["RTH", "RUSTYH"], ""], +["rustyh-bottle-c-ag", "rustyh-bottle-c", 5, ["RTH", "RUSTYH"], ""], +["rustyh-vis", "rustyh-vis", 5, ["RTH"], ""], +["tpage-132", "tpage-132", 5, ["RUSTYH"], ""], +["tpage-777", "tpage-777", 5, ["RUSTYH"], ""], +["tpage-945", "tpage-945", 5, ["RUSTYH"], ""], +["tpage-389", "tpage-389", 5, ["RUSTYH"], ""], +["tpage-1527", "tpage-1527", 5, ["RUSTYH"], ""], +["rustyh", "rustyh", 5, ["RUSTYH"], ""], +["tpage-2753", "tpage-2753", 5, ["S2A"], ""], +["sewera2-vis", "sewera2-vis", 5, ["S2A"], ""], +["tpage-3926", "tpage-3926", 5, ["S3A"], ""], +["sewera3-vis", "sewera3-vis", 5, ["S3A"], ""], +["tpage-1798", "tpage-1798", 5, ["SBWLCTF"], ""], +["tpage-1799", "tpage-1799", 5, ["SBWLCTF"], ""], +["sbwlctf", "sbwlctf", 5, ["SBWLCTF"], ""], +["tpage-2252", "tpage-2252", 5, ["SEWERS"], ""], +["tpage-2253", "tpage-2253", 5, ["SEWERS"], ""], +["tpage-2309", "tpage-2309", 5, ["SEWERS"], ""], +["sewers", "sewers", 5, ["SEWERS"], ""], +["sewertt", "sewertt", 5, ["SEWERTT"], ""], +["tpage-1513", "tpage-1513", 5, ["SEWERW"], ""], +["sewerw", "sewerw", 5, ["SEWERW"], ""], +["tpage-2799", "tpage-2799", 5, ["SEWFOOT"], ""], +["tpage-2800", "tpage-2800", 5, ["SEWFOOT"], ""], +["sewfoot", "sewfoot", 5, ["SEWFOOT"], ""], +["tpage-2623", "tpage-2623", 5, ["SEWTBOX"], ""], +["tpage-2624", "tpage-2624", 5, ["SEWTBOX"], ""], +["sewtbox", "sewtbox", 5, ["SEWTBOX"], ""], +["tpage-3953", "tpage-3953", 5, ["SIGCRED"], ""], +["sig-hr-cred-ag", "sig-hr-cred", 5, ["SIGCRED"], ""], +["sigcred", "sigcred", 5, ["SIGCRED"], ""], +["speech-sig", "speech-sig", 5, ["SIGLEV"], ""], +["tpage-3704", "tpage-3704", 5, ["SIGLEV"], ""], +["racesig-ag", "racesig", 5, ["SIGLEV"], ""], +["siglev", "siglev", 5, ["SIGLEV"], ""], +["sigvl", "sigvl", 5, ["SIGVL"], ""], +["sigvl2", "sigvl2", 5, ["SIGVL2"], ""], +["sigvl3", "sigvl3", 5, ["SIGVL3"], ""], +["snake-chassis-ag", "snake-chassis", 5, ["SNAKL"], ""], +["snake-door-a-ag", "snake-door-a", 5, ["SNAKL"], ""], +["snake-f-bumper-a-ag", "snake-f-bumper-a", 5, ["SNAKL"], ""], +["snake-hood-a-ag", "snake-hood-a", 5, ["SNAKL"], ""], +["snake-roof-a-ag", "snake-roof-a", 5, ["SNAKL"], ""], +["snakl", "snakl", 5, ["SNAKL"], ""], +["tpage-707", "tpage-707", 5, ["SNO"], ""], +["tpage-907", "tpage-907", 5, ["SNO"], ""], +["tpage-708", "tpage-708", 5, ["SNO"], ""], +["tpage-3982", "tpage-3982", 5, ["SNO"], ""], +["tpage-946", "tpage-946", 5, ["SNO"], ""], +["ice-debris-ag", "ice-debris", 5, ["SNO", "SNW"], ""], +["cliffs-wood-fence-d-ag", "cliffs-wood-fence-d", 5, ["SNO", "SNOX"], ""], +["snobowl-vis", "snobowl-vis", 5, ["SNO"], ""], +["tpage-1889", "tpage-1889", 5, ["SNOBART"], ""], +["snobart", "snobart", 5, ["SNOBART"], ""], +["tpage-1851", "tpage-1851", 5, ["SNOBOWLS"], ""], +["snobowls", "snobowls", 5, ["SNOBOWLS"], ""], +["tpage-1837", "tpage-1837", 5, ["SNOWFOOT"], ""], +["tpage-1869", "tpage-1869", 5, ["SNOWFOOT"], ""], +["snowfoot", "snowfoot", 5, ["SNOWFOOT"], ""], +["tpage-2350", "tpage-2350", 5, ["SNOWS"], ""], +["tpage-1845", "tpage-1845", 5, ["SNOWS"], ""], +["snows", "snows", 5, ["SNOWS"], ""], +["tpage-1784", "tpage-1784", 5, ["SNOWTBOX"], ""], +["tpage-2747", "tpage-2747", 5, ["SNOWTBOX"], ""], +["snowtbox", "snowtbox", 5, ["SNOWTBOX"], ""], +["tpage-2268", "tpage-2268", 5, ["SNOWTRN2"], ""], +["tpage-3912", "tpage-3912", 5, ["SNOWTRN2"], ""], +["snowtrn2", "snowtrn2", 5, ["SNOWTRN2"], ""], +["snowtt", "snowtt", 5, ["SNOWTT"], ""], +["tpage-1630", "tpage-1630", 5, ["SNOX"], ""], +["tpage-1918", "tpage-1918", 5, ["SNOX"], ""], +["tpage-1631", "tpage-1631", 5, ["SNOX"], ""], +["tpage-3983", "tpage-3983", 5, ["SNOX"], ""], +["tpage-1632", "tpage-1632", 5, ["SNOX"], ""], +["snobowlx-vis", "snobowlx-vis", 5, ["SNOX"], ""], +["snow-obs", "snow-obs", 5, ["SNW", "SNWX"], ""], +["snow-effects", "snow-effects", 5, ["SNW", "SNWX"], ""], +["snow-part", "snow-part", 5, ["SNW", "SNWX"], ""], +["tpage-282", "tpage-282", 5, ["SNW"], ""], +["tpage-285", "tpage-285", 5, ["SNW"], ""], +["tpage-284", "tpage-284", 5, ["SNW"], ""], +["tpage-283", "tpage-283", 5, ["SNW"], ""], +["tpage-287", "tpage-287", 5, ["SNW"], ""], +["snow-dinobreak-ag", "snow-dinobreak", 5, ["SNW", "SNWX"], ""], +["snow-icebreak-b-ag", "snow-icebreak-b", 5, ["SNW", "SNWX"], ""], +["snow-icebreak-a-ag", "snow-icebreak-a", 5, ["SNW", "SNWX"], ""], +["snow-vis", "snow-vis", 5, ["SNW"], ""], +["tpage-1739", "tpage-1739", 5, ["SNWX"], ""], +["tpage-1888", "tpage-1888", 5, ["SNWX"], ""], +["tpage-1741", "tpage-1741", 5, ["SNWX"], ""], +["tpage-3978", "tpage-3978", 5, ["SNWX"], ""], +["tpage-1740", "tpage-1740", 5, ["SNWX"], ""], +["snowx-vis", "snowx-vis", 5, ["SNWX"], ""], +["tpage-1610", "tpage-1610", 5, ["SPA"], ""], +["tpage-1611", "tpage-1611", 5, ["SPA"], ""], +["spargusa-vis", "spargusa-vis", 5, ["SPA"], ""], +["tpage-2621", "tpage-2621", 5, ["SPARFOOT"], ""], +["tpage-2622", "tpage-2622", 5, ["SPARFOOT"], ""], +["sparfoot", "sparfoot", 5, ["SPARFOOT"], ""], +["tpage-1939", "tpage-1939", 5, ["SPARGUSS"], ""], +["tpage-2204", "tpage-2204", 5, ["SPARGUSS"], ""], +["tpage-2326", "tpage-2326", 5, ["SPARGUSS"], ""], +["sparguss", "sparguss", 5, ["SPARGUSS"], ""], +["spargus-ocean", "spargus-ocean", 5, ["SPARGUSW", "SPARTEMW", "SPATOURW", "SPX", "STX"], ""], +["spargus-part", "spargus-part", 5, ["SPARGUSW", "SPARTEMW", "SPATOURW", "SPX", "STX"], ""], +["spargusw", "spargusw", 5, ["SPARGUSW"], ""], +["tpage-2552", "tpage-2552", 5, ["SPARTEMS"], ""], +["tpage-2553", "tpage-2553", 5, ["SPARTEMS"], ""], +["tpage-2686", "tpage-2686", 5, ["SPARTEMS"], ""], +["spartems", "spartems", 5, ["SPARTEMS"], ""], +["temple-part", "temple-part", 5, ["SPARTEMW", "SPATOURW", "STX", "TEMPLEW", "TPX"], ""], +["temple-effects", "temple-effects", 5, ["SPARTEMW", "SPATOURW", "STX", "TEMPLEW", "TPX"], ""], +["temple-ocean", "temple-ocean", 5, ["SPARTEMW", "SPATOURW", "STX", "TEMPLEW", "TPX"], ""], +["spartemw", "spartemw", 5, ["SPARTEMW"], ""], +["spartt", "spartt", 5, ["SPARTT"], ""], +["tpage-3815", "tpage-3815", 5, ["SPATFOOT"], ""], +["tpage-3816", "tpage-3816", 5, ["SPATFOOT"], ""], +["spatfoot", "spatfoot", 5, ["SPATFOOT"], ""], +["tpage-2803", "tpage-2803", 5, ["SPATOURS"], ""], +["tpage-2804", "tpage-2804", 5, ["SPATOURS"], ""], +["tpage-3603", "tpage-3603", 5, ["SPATOURS"], ""], +["spatours", "spatours", 5, ["SPATOURS"], ""], +["tpage-2786", "tpage-2786", 5, ["SPATOURW"], ""], +["spatourw", "spatourw", 5, ["SPATOURW"], ""], +["tpage-3466", "tpage-3466", 5, ["SPATTBOX"], ""], +["tpage-3467", "tpage-3467", 5, ["SPATTBOX"], ""], +["spattbox", "spattbox", 5, ["SPATTBOX"], ""], +["tpage-1615", "tpage-1615", 5, ["SPB"], ""], +["tpage-2402", "tpage-2402", 5, ["SPB"], ""], +["tpage-1616", "tpage-1616", 5, ["SPB"], ""], +["spar-lighthouse-light-ag", "spar-lighthouse-light", 5, ["SPB", "SPX", "STY"], ""], +["spargusb-vis", "spargusb-vis", 5, ["SPB"], ""], +["tpage-1607", "tpage-1607", 5, ["SPC"], ""], +["tpage-1608", "tpage-1608", 5, ["SPC"], ""], +["spargusc-vis", "spargusc-vis", 5, ["SPC"], ""], +["tpage-1613", "tpage-1613", 5, ["SPD"], ""], +["tpage-1614", "tpage-1614", 5, ["SPD"], ""], +["spargusd-vis", "spargusd-vis", 5, ["SPD"], ""], +["tpage-2249", "tpage-2249", 5, ["SPE"], ""], +["tpage-2250", "tpage-2250", 5, ["SPE"], ""], +["sparguse-vis", "sparguse-vis", 5, ["SPE"], ""], +["tpage-2322", "tpage-2322", 5, ["SPRGSTBX"], ""], +["tpage-2819", "tpage-2819", 5, ["SPRGSTBX"], ""], +["sprgstbx", "sprgstbx", 5, ["SPRGSTBX"], ""], +["tpage-2820", "tpage-2820", 5, ["SPTMFOOT"], ""], +["tpage-2821", "tpage-2821", 5, ["SPTMFOOT"], ""], +["sptmfoot", "sptmfoot", 5, ["SPTMFOOT"], ""], +["tpage-3468", "tpage-3468", 5, ["SPTMTBOX"], ""], +["tpage-3469", "tpage-3469", 5, ["SPTMTBOX"], ""], +["sptmtbox", "sptmtbox", 5, ["SPTMTBOX"], ""], +["sptmtt", "sptmtt", 5, ["SPTMTT"], ""], +["sptrtt", "sptrtt", 5, ["SPTRTT"], ""], +["tpage-2300", "tpage-2300", 5, ["SPX"], ""], +["tpage-2422", "tpage-2422", 5, ["SPX"], ""], +["spargusx-vis", "spargusx-vis", 5, ["SPX"], ""], +["tpage-2301", "tpage-2301", 5, ["SPY"], ""], +["spargusy-vis", "spargusy-vis", 5, ["SPY"], ""], +["tpage-2663", "tpage-2663", 5, ["STX"], ""], +["tpage-2664", "tpage-2664", 5, ["STX"], ""], +["tpage-3412", "tpage-3412", 5, ["STX"], ""], +["spartemx-vis", "spartemx-vis", 5, ["STX"], ""], +["tpage-2660", "tpage-2660", 5, ["STY"], ""], +["tpage-2661", "tpage-2661", 5, ["STY"], ""], +["spartemy-vis", "spartemy-vis", 5, ["STY"], ""], +["tpage-1933", "tpage-1933", 5, ["SWA"], ""], +["sewera-vis", "sewera-vis", 5, ["SWA"], ""], +["tpage-1928", "tpage-1928", 5, ["SWB"], ""], +["tpage-1926", "tpage-1926", 5, ["SWB"], ""], +["sewerb-vis", "sewerb-vis", 5, ["SWB"], ""], +["tpage-1923", "tpage-1923", 5, ["SWC"], ""], +["tpage-1922", "tpage-1922", 5, ["SWC"], ""], +["sewerc-vis", "sewerc-vis", 5, ["SWC"], ""], +["tpage-1925", "tpage-1925", 5, ["SWD"], ""], +["tpage-2209", "tpage-2209", 5, ["SWD"], ""], +["tpage-1924", "tpage-1924", 5, ["SWD"], ""], +["sewerd-vis", "sewerd-vis", 5, ["SWD"], ""], +["tpage-1930", "tpage-1930", 5, ["SWE"], ""], +["tpage-1931", "tpage-1931", 5, ["SWE"], ""], +["tpage-1929", "tpage-1929", 5, ["SWE"], ""], +["sewere-vis", "sewere-vis", 5, ["SWE"], ""], +["tpage-2367", "tpage-2367", 5, ["SWF"], ""], +["tpage-2366", "tpage-2366", 5, ["SWF"], ""], +["sewerf-vis", "sewerf-vis", 5, ["SWF"], ""], +["tpage-1991", "tpage-1991", 5, ["SWX"], ""], +["tpage-1992", "tpage-1992", 5, ["SWX"], ""], +["sewerx-vis", "sewerx-vis", 5, ["SWX"], ""], +["speech-taryn", "speech-taryn", 5, ["TARLEV"], ""], +["tpage-3705", "tpage-3705", 5, ["TARLEV"], ""], +["taryn-ag", "taryn", 5, ["TARLEV"], ""], +["tarlev", "tarlev", 5, ["TARLEV"], ""], +["tpage-2822", "tpage-2822", 5, ["TEMPFOOT"], ""], +["tpage-2823", "tpage-2823", 5, ["TEMPFOOT"], ""], +["tempfoot", "tempfoot", 5, ["TEMPFOOT"], ""], +["tpage-2844", "tpage-2844", 5, ["TEMPLES"], ""], +["tpage-3406", "tpage-3406", 5, ["TEMPLES"], ""], +["tpage-2687", "tpage-2687", 5, ["TEMPLES"], ""], +["temples", "temples", 5, ["TEMPLES"], ""], +["templett", "templett", 5, ["TEMPLETT"], ""], +["templew", "templew", 5, ["TEMPLEW"], ""], +["tpage-3444", "tpage-3444", 5, ["TEMPTBOX"], ""], +["tpage-3445", "tpage-3445", 5, ["TEMPTBOX"], ""], +["temptbox", "temptbox", 5, ["TEMPTBOX"], ""], +["tpage-3936", "tpage-3936", 5, ["THACRED"], ""], +["tha-hr-cred-ag", "tha-hr-cred", 5, ["THACRED"], ""], +["thacred", "thacred", 5, ["THACRED"], ""], +["speech-thuga", "speech-thuga", 5, ["THALEV"], ""], +["tpage-3706", "tpage-3706", 5, ["THALEV"], ""], +["thuga-low-ag", "thuga-low", 5, ["THALEV"], ""], +["thalev", "thalev", 5, ["THALEV"], ""], +["thavl", "thavl", 5, ["THAVL"], ""], +["thavl2", "thavl2", 5, ["THAVL2"], ""], +["thavl3", "thavl3", 5, ["THAVL3"], ""], +["tpage-3964", "tpage-3964", 5, ["THBCRED"], ""], +["thb-hr-cred-ag", "thb-hr-cred", 5, ["THBCRED"], ""], +["thbcred", "thbcred", 5, ["THBCRED"], ""], +["speech-thugb", "speech-thugb", 5, ["THBLEV"], ""], +["tpage-3707", "tpage-3707", 5, ["THBLEV"], ""], +["thugb-low-ag", "thugb-low", 5, ["THBLEV"], ""], +["thblev", "thblev", 5, ["THBLEV"], ""], +["thbvl", "thbvl", 5, ["THBVL"], ""], +["thbvl2", "thbvl2", 5, ["THBVL2"], ""], +["thbvl3", "thbvl3", 5, ["THBVL3"], ""], +["tpage-3942", "tpage-3942", 5, ["THCCRED"], ""], +["thc-hr-cred-ag", "thc-hr-cred", 5, ["THCCRED"], ""], +["thccred", "thccred", 5, ["THCCRED"], ""], +["speech-thugc", "speech-thugc", 5, ["THCLEV"], ""], +["tpage-3708", "tpage-3708", 5, ["THCLEV"], ""], +["thugc-low-ag", "thugc-low", 5, ["THCLEV"], ""], +["thclev", "thclev", 5, ["THCLEV"], ""], +["wombat-door-c-ag", "wombat-door-c", 5, ["THCVL", "WOMBL"], ""], +["wombat-f-fender-b-ag", "wombat-f-fender-b", 5, ["THCVL", "WOMBL"], ""], +["wombat-hood-c-ag", "wombat-hood-c", 5, ["THCVL", "WOMBL"], ""], +["wombat-r-fender-a-ag", "wombat-r-fender-a", 5, ["THCVL", "WOMBL"], ""], +["thcvl", "thcvl", 5, ["THCVL"], ""], +["thcvl2", "thcvl2", 5, ["THCVL2"], ""], +["thcvl3", "thcvl3", 5, ["THCVL3"], ""], +["tiger-door-a-ag", "tiger-door-a", 5, ["TIGEL"], ""], +["tiger-door-b-ag", "tiger-door-b", 5, ["TIGEL"], ""], +["tiger-door-d-ag", "tiger-door-d", 5, ["TIGEL", "TORVL"], ""], +["tiger-f-fender-a-ag", "tiger-f-fender-a", 5, ["TIGEL"], ""], +["tiger-f-fender-c-ag", "tiger-f-fender-c", 5, ["TIGEL", "TORVL"], ""], +["tiger-f-fender-d-ag", "tiger-f-fender-d", 5, ["TIGEL"], ""], +["tiger-f-fender-e-ag", "tiger-f-fender-e", 5, ["TIGEL"], ""], +["tiger-hood-a-ag", "tiger-hood-a", 5, ["TIGEL", "TORVL"], ""], +["tiger-hood-b-ag", "tiger-hood-b", 5, ["TIGEL"], ""], +["tiger-hood-c-ag", "tiger-hood-c", 5, ["TIGEL"], ""], +["tiger-r-fender-b-ag", "tiger-r-fender-b", 5, ["TIGEL", "TORVL"], ""], +["tiger-r-fender-c-ag", "tiger-r-fender-c", 5, ["TIGEL"], ""], +["tiger-r-fender-e-ag", "tiger-r-fender-e", 5, ["TIGEL"], ""], +["tiger-roof-a-ag", "tiger-roof-a", 5, ["TIGEL"], ""], +["tiger-roof-b-ag", "tiger-roof-b", 5, ["TIGEL"], ""], +["tiger-roof-d-ag", "tiger-roof-d", 5, ["TIGEL", "TORVL"], ""], +["tigel", "tigel", 5, ["TIGEL"], ""], +["toad-chassis-ag", "toad-chassis", 5, ["TOADL"], ""], +["toad-door-a-ag", "toad-door-a", 5, ["TOADL"], ""], +["toad-f-fender-a-ag", "toad-f-fender-a", 5, ["TOADL"], ""], +["toad-hood-a-ag", "toad-hood-a", 5, ["TOADL"], ""], +["toad-r-fender-a-ag", "toad-r-fender-a", 5, ["TOADL"], ""], +["toad-roof-a-ag", "toad-roof-a", 5, ["TOADL"], ""], +["toad-trunk-a-ag", "toad-trunk-a", 5, ["TOADL"], ""], +["toad-wheel-ag", "toad-wheel", 5, ["TOADL"], ""], +["toadl", "toadl", 5, ["TOADL"], ""], +["tpage-3949", "tpage-3949", 5, ["TORCRED"], ""], +["tor-hr-cred-ag", "tor-hr-cred", 5, ["TORCRED"], ""], +["torcred", "torcred", 5, ["TORCRED"], ""], +["speech-torn", "speech-torn", 5, ["TORLEV"], ""], +["tpage-3709", "tpage-3709", 5, ["TORLEV"], ""], +["racetorn-ag", "racetorn", 5, ["TORLEV"], ""], +["torlev", "torlev", 5, ["TORLEV"], ""], +["torvl", "torvl", 5, ["TORVL"], ""], +["torvl2", "torvl2", 5, ["TORVL2"], ""], +["wolf-door-b-ag", "wolf-door-b", 5, ["TORVL3", "WOLFL"], ""], +["wolf-f-bumper-b-ag", "wolf-f-bumper-b", 5, ["TORVL3", "WOLFL"], ""], +["wolf-hood-e-ag", "wolf-hood-e", 5, ["TORVL3", "WOLFL"], ""], +["wolf-r-bumper-b-ag", "wolf-r-bumper-b", 5, ["TORVL3", "WOLFL"], ""], +["torvl3", "torvl3", 5, ["TORVL3"], ""], +["tpage-2685", "tpage-2685", 5, ["TPA"], ""], +["tpage-3618", "tpage-3618", 5, ["TPA"], ""], +["templea-vis", "templea-vis", 5, ["TPA"], ""], +["tpage-2679", "tpage-2679", 5, ["TPB"], ""], +["tpage-3675", "tpage-3675", 5, ["TPB"], ""], +["templeb-vis", "templeb-vis", 5, ["TPB"], ""], +["tpage-2690", "tpage-2690", 5, ["TPC"], ""], +["tpage-3859", "tpage-3859", 5, ["TPC"], ""], +["templec-vis", "templec-vis", 5, ["TPC"], ""], +["tpage-2693", "tpage-2693", 5, ["TPD"], ""], +["tpage-3687", "tpage-3687", 5, ["TPD"], ""], +["tpage-2694", "tpage-2694", 5, ["TPD"], ""], +["tpage-3408", "tpage-3408", 5, ["TPD"], ""], +["templed-vis", "templed-vis", 5, ["TPD"], ""], +["tpage-2695", "tpage-2695", 5, ["TPE"], ""], +["tpage-3685", "tpage-3685", 5, ["TPE"], ""], +["tpage-3858", "tpage-3858", 5, ["TPE"], ""], +["templee-vis", "templee-vis", 5, ["TPE"], ""], +["tpage-2698", "tpage-2698", 5, ["TPX"], ""], +["tpage-2699", "tpage-2699", 5, ["TPX"], ""], +["tpage-3779", "tpage-3779", 5, ["TPX"], ""], +["templex-vis", "templex-vis", 5, ["TPX"], ""], +["tpage-2704", "tpage-2704", 5, ["TPY"], ""], +["tpage-3413", "tpage-3413", 5, ["TPY"], ""], +["templey-vis", "templey-vis", 5, ["TPY"], ""], +["turtle-chassis-ag", "turtle-chassis", 5, ["TURTL"], ""], +["turtle-door-a-ag", "turtle-door-a", 5, ["TURTL"], ""], +["turtle-f-fender-a-ag", "turtle-f-fender-a", 5, ["TURTL"], ""], +["turtle-hood-a-ag", "turtle-hood-a", 5, ["TURTL"], ""], +["turtle-r-fender-a-ag", "turtle-r-fender-a", 5, ["TURTL"], ""], +["turtle-roof-a-ag", "turtle-roof-a", 5, ["TURTL"], ""], +["turtle-trunk-a-ag", "turtle-trunk-a", 5, ["TURTL"], ""], +["turtle-wheel-ag", "turtle-wheel", 5, ["TURTL"], ""], +["turtl", "turtl", 5, ["TURTL"], ""], +["tpage-3955", "tpage-3955", 5, ["UR8CRED"], ""], +["ur8-hr-cred-ag", "ur8-hr-cred", 5, ["UR8CRED"], ""], +["ur8cred", "ur8cred", 5, ["UR8CRED"], ""], +["speech-ur86", "speech-ur86", 5, ["UR8LEV"], ""], +["tpage-3710", "tpage-3710", 5, ["UR8LEV"], ""], +["ur-86-low-ag", "ur-86-low", 5, ["UR8LEV"], ""], +["ur8lev", "ur8lev", 5, ["UR8LEV"], ""], +["ur8vl", "ur8vl", 5, ["UR8VL"], ""], +["ur8vl2", "ur8vl2", 5, ["UR8VL2"], ""], +["wolf-door-c-ag", "wolf-door-c", 5, ["UR8VL3", "WOLFL"], ""], +["wolf-f-bumper-c-ag", "wolf-f-bumper-c", 5, ["UR8VL3", "WOLFL"], ""], +["wolf-r-bumper-d-ag", "wolf-r-bumper-d", 5, ["UR8VL3", "WOLFL"], ""], +["ur8vl3", "ur8vl3", 5, ["UR8VL3"], ""], +["wolf-door-a-ag", "wolf-door-a", 5, ["WOLFL"], ""], +["wolf-door-e-ag", "wolf-door-e", 5, ["WOLFL"], ""], +["wolf-f-bumper-d-ag", "wolf-f-bumper-d", 5, ["WOLFL"], ""], +["wolf-f-bumper-e-ag", "wolf-f-bumper-e", 5, ["WOLFL"], ""], +["wolf-hood-a-ag", "wolf-hood-a", 5, ["WOLFL"], ""], +["wolf-hood-b-ag", "wolf-hood-b", 5, ["WOLFL"], ""], +["wolf-hood-d-ag", "wolf-hood-d", 5, ["WOLFL"], ""], +["wolf-r-bumper-c-ag", "wolf-r-bumper-c", 5, ["WOLFL"], ""], +["wolf-r-bumper-e-ag", "wolf-r-bumper-e", 5, ["WOLFL"], ""], +["wolf-roof-a-ag", "wolf-roof-a", 5, ["WOLFL"], ""], +["wolf-roof-b-ag", "wolf-roof-b", 5, ["WOLFL"], ""], +["wolf-roof-c-ag", "wolf-roof-c", 5, ["WOLFL"], ""], +["wolf-roof-e-ag", "wolf-roof-e", 5, ["WOLFL"], ""], +["wolfl", "wolfl", 5, ["WOLFL"], ""], +["wombat-door-a-ag", "wombat-door-a", 5, ["WOMBL"], ""], +["wombat-door-b-ag", "wombat-door-b", 5, ["WOMBL"], ""], +["wombat-door-d-ag", "wombat-door-d", 5, ["WOMBL"], ""], +["wombat-f-fender-a-ag", "wombat-f-fender-a", 5, ["WOMBL"], ""], +["wombat-f-fender-c-ag", "wombat-f-fender-c", 5, ["WOMBL"], ""], +["wombat-f-fender-d-ag", "wombat-f-fender-d", 5, ["WOMBL"], ""], +["wombat-f-fender-e-ag", "wombat-f-fender-e", 5, ["WOMBL"], ""], +["wombat-hood-a-ag", "wombat-hood-a", 5, ["WOMBL"], ""], +["wombat-hood-b-ag", "wombat-hood-b", 5, ["WOMBL"], ""], +["wombat-hood-d-ag", "wombat-hood-d", 5, ["WOMBL"], ""], +["wombat-r-fender-c-ag", "wombat-r-fender-c", 5, ["WOMBL"], ""], +["wombat-r-fender-d-ag", "wombat-r-fender-d", 5, ["WOMBL"], ""], +["wombat-r-fender-e-ag", "wombat-r-fender-e", 5, ["WOMBL"], ""], +["wombat-roof-a-ag", "wombat-roof-a", 5, ["WOMBL"], ""], +["wombat-roof-c-ag", "wombat-roof-c", 5, ["WOMBL"], ""], +["wombat-roof-d-ag", "wombat-roof-d", 5, ["WOMBL"], ""], +["wombat-roof-e-ag", "wombat-roof-e", 5, ["WOMBL"], ""], +["wombat-trunk-a-ag", "wombat-trunk-a", 5, ["WOMBL"], ""], +["wombat-trunk-b-ag", "wombat-trunk-b", 5, ["WOMBL"], ""], +["wombat-trunk-c-ag", "wombat-trunk-c", 5, ["WOMBL"], ""], +["wombat-trunk-e-ag", "wombat-trunk-e", 5, ["WOMBL"], ""], +["wombl", "wombl", 5, ["WOMBL"], ""], +["speech-ximon", "speech-ximon", 5, ["XIMLEV"], ""], +["tpage-3711", "tpage-3711", 5, ["XIMLEV"], ""], +["ximon-ag", "ximon", 5, ["XIMLEV"], ""], +["ximlev", "ximlev", 5, ["XIMLEV"], ""], +["0COMMON", "0COMMON", 5, ["NO-XGO"], ""], +["0SUBTIT", "0SUBTIT", 5, ["NO-XGO"], ""], +["1COMMON", "1COMMON", 5, ["NO-XGO"], ""], +["1SUBTIT", "1SUBTIT", 5, ["NO-XGO"], ""], +["2COMMON", "2COMMON", 5, ["NO-XGO"], ""], +["2SUBTIT", "2SUBTIT", 5, ["NO-XGO"], ""], +["3COMMON", "3COMMON", 5, ["NO-XGO"], ""], +["3SUBTIT", "3SUBTIT", 5, ["NO-XGO"], ""], +["4COMMON", "4COMMON", 5, ["NO-XGO"], ""], +["4SUBTIT", "4SUBTIT", 5, ["NO-XGO"], ""], +["5COMMON", "5COMMON", 5, ["NO-XGO"], ""], +["5SUBTIT", "5SUBTIT", 5, ["NO-XGO"], ""], +["6COMMON", "6COMMON", 5, ["NO-XGO"], ""], +["6SUBTIT", "6SUBTIT", 5, ["NO-XGO"], ""], +["7COMMON", "7COMMON", 5, ["NO-XGO"], ""], +["7SUBTIT", "7SUBTIT", 5, ["NO-XGO"], ""], +["8COMMON", "8COMMON", 5, ["NO-XGO"], ""], +["8SUBTIT", "8SUBTIT", 5, ["NO-XGO"], ""], +["9COMMON", "9COMMON", 5, ["NO-XGO"], ""], +["9SUBTIT", "9SUBTIT", 5, ["NO-XGO"], ""], +["10COMMON", "10COMMON", 5, ["NO-XGO"], ""], +["10SUBTIT", "10SUBTIT", 5, ["NO-XGO"], ""], +["11COMMON", "11COMMON", 5, ["NO-XGO"], ""], +["11SUBTIT", "11SUBTIT", 5, ["NO-XGO"], ""]] diff --git a/scripts/tasks/update-env.py b/scripts/tasks/update-env.py index 5bf045f1f2f..a5023c7cae6 100644 --- a/scripts/tasks/update-env.py +++ b/scripts/tasks/update-env.py @@ -34,12 +34,13 @@ print(file) sys.exit(0) -valid_games = ["jak1", "jak2", "jak3"] +valid_games = ["jak1", "jak2", "jak3", "jakx"] decomp_config_map = { "jak1": "jak1/jak1_config.jsonc", "jak2": "jak2/jak2_config.jsonc", - "jak3": "jak3/jak3_config.jsonc" + "jak3": "jak3/jak3_config.jsonc", + "jakx": "jakx/jakx_config.jsonc" } decomp_config_version_map = { @@ -60,19 +61,24 @@ "jak3": { "ntscv1": "ntsc_v1", "pal": "pal" + }, + "jakx": { + "pal": "pal" } } default_config_version_map = { "jak1": "ntsc_v1", "jak2": "ntsc_v1", - "jak3": "ntsc_v1" + "jak3": "ntsc_v1", + "jakx": "pal" } type_consistency_filter_map = { "jak1": "Jak1TypeConsistency", "jak2": "Jak2TypeConsistency", - "jak3": "Jak3TypeConsistency" + "jak3": "Jak3TypeConsistency", + "jakx": "JakXTypeConsistency" } if args.game: diff --git a/test/goalc/test_type_consistency.cpp b/test/goalc/test_type_consistency.cpp index 516efd9fba2..00a26802c5c 100644 --- a/test/goalc/test_type_consistency.cpp +++ b/test/goalc/test_type_consistency.cpp @@ -19,6 +19,8 @@ void add_jak2_expected_type_mismatches(Compiler& c) { void add_jak3_expected_type_mismatches(Compiler& /*c*/) {} +void add_jakx_expected_type_mismatches(Compiler& /*c*/) {} + TEST(Jak1TypeConsistency, MANUAL_TEST_TypeConsistencyWithBuildFirst) { Compiler compiler(GameVersion::Jak1); compiler.enable_throw_on_redefines(); @@ -46,6 +48,15 @@ TEST(Jak3TypeConsistency, TypeConsistencyWithBuildFirst) { compiler.run_test_no_load("decompiler/config/jak3/all-types.gc"); } +TEST(JakXTypeConsistency, TypeConsistencyWithBuildFirst) { + Compiler compiler(GameVersion::JakX); + compiler.enable_throw_on_redefines(); + add_common_expected_type_mismatches(compiler); + add_jakx_expected_type_mismatches(compiler); + compiler.run_test_no_load("test/goalc/source_templates/with_game/test-build-all-code.gc"); + compiler.run_test_no_load("decompiler/config/jakx/all-types.gc"); +} + TEST(Jak1TypeConsistency, TypeConsistency) { Compiler compiler(GameVersion::Jak1); compiler.enable_throw_on_redefines(); @@ -72,3 +83,12 @@ TEST(Jak3TypeConsistency, TypeConsistency) { compiler.run_test_no_load("decompiler/config/jak3/all-types.gc"); compiler.run_test_no_load("test/goalc/source_templates/with_game/test-build-all-code.gc"); } + +TEST(JakXTypeConsistency, TypeConsistency) { + Compiler compiler(GameVersion::JakX); + compiler.enable_throw_on_redefines(); + add_common_expected_type_mismatches(compiler); + add_jakx_expected_type_mismatches(compiler); + compiler.run_test_no_load("decompiler/config/jakx/all-types.gc"); + compiler.run_test_no_load("test/goalc/source_templates/with_game/test-build-all-code.gc"); +} diff --git a/tools/type_searcher/main.cpp b/tools/type_searcher/main.cpp index 192a97b6fa9..2e82e41bcf7 100644 --- a/tools/type_searcher/main.cpp +++ b/tools/type_searcher/main.cpp @@ -66,6 +66,8 @@ int main(int argc, char** argv) { case GameVersion::Jak3: dts.parse_type_defs({"decompiler", "config", "jak3", "all-types.gc"}); break; + case GameVersion::JakX: + dts.parse_type_defs({"decompiler", "config", "jakx", "all-types.gc"}); default: lg::error("unsupported game version"); return 1;