From 25b0e1be7d40216ccbea22d58afb6d35c2924ce8 Mon Sep 17 00:00:00 2001 From: ManDude <7569514+ManDude@users.noreply.github.com> Date: Tue, 23 Nov 2021 23:25:57 +0000 Subject: [PATCH] [decomp] `collectables` + works ingame! (#971) * decomp: `collectables` * fix types * `powerups` and fixes * fixes * Merge branch 'pr/929' into d/temp/collectables * fix collide stuff * update things... * update * update * temp bump global heap mem * fix `defstate` hooks wrong/unnecessary sets & collide stuff for collectables * dumb mistakes :) * stub out broken process-drawable stuff * update refs * add `:no-inspect` key and save some memory & remove birth logs * Update kmachine.h * clang * add citadel * fix no-inspect key * fix tests!! * fix stupid mistake in `collide-shape-prim-sphere` alloc * comment annoying print * feedback * fix edge-case probably * remove `:no-inspect`s --- common/type_system/Type.cpp | 5 + common/type_system/Type.h | 5 + common/type_system/TypeSystem.cpp | 3 + common/type_system/deftype.cpp | 4 + common/type_system/state.cpp | 18 +- common/type_system/state.h | 4 +- decompiler/IR2/FormStack.cpp | 2 +- decompiler/ObjectFile/ObjectFileDB_IR2.cpp | 2 +- decompiler/analysis/cfg_builder.cpp | 5 +- decompiler/config/all-types.gc | 626 +-- .../anonymous_function_types.jsonc | 6 +- .../config/jak1_ntsc_black_label/hacks.jsonc | 100 +- .../jak1_ntsc_black_label/label_types.jsonc | 42 +- .../stack_structures.jsonc | 302 +- .../jak1_ntsc_black_label/type_casts.jsonc | 264 +- .../jak1_ntsc_black_label/var_names.jsonc | 37 + decompiler/util/data_decompile.cpp | 8 +- game/fake_iso.txt | 13 +- game/kernel/kmachine.h | 4 +- game/overlord/stream.cpp | 4 +- goal_src/dgos/cit.gd | 54 + goal_src/engine/collide/collide-cache-h.gc | 65 +- goal_src/engine/collide/collide-cache.gc | 34 + .../engine/collide/collide-edge-grab-h.gc | 82 +- goal_src/engine/collide/collide-edge-grab.gc | 81 + goal_src/engine/collide/collide-mesh-h.gc | 17 +- goal_src/engine/collide/collide-probe.gc | 63 + .../engine/collide/collide-reaction-target.gc | 4 +- goal_src/engine/collide/collide-shape-h.gc | 139 +- goal_src/engine/collide/collide-shape.gc | 2215 +++++++++ goal_src/engine/collide/collide-target-h.gc | 14 +- goal_src/engine/collide/collide-touch-h.gc | 154 +- goal_src/engine/collide/collide-touch.gc | 566 +++ goal_src/engine/debug/default-menu.gc | 12 +- goal_src/engine/draw/drawable-h.gc | 5 +- goal_src/engine/draw/process-drawable.gc | 93 +- goal_src/engine/entity/entity.gc | 23 +- goal_src/engine/game/collectables.gc | 4307 ++++++++++++++++- goal_src/engine/game/fact-h.gc | 35 +- goal_src/engine/game/generic-obs-h.gc | 4 +- goal_src/engine/game/generic-obs.gc | 137 +- goal_src/engine/game/main.gc | 26 +- goal_src/engine/game/powerups.gc | 1120 ++++- goal_src/engine/game/projectiles.gc | 37 +- goal_src/engine/game/task/process-taskable.gc | 10 +- goal_src/engine/gfx/shrub/shrub-work.gc | 14 +- goal_src/engine/gfx/tie/prototype-h.gc | 7 +- goal_src/engine/gfx/tie/tie-h.gc | 117 +- goal_src/engine/math/vector-h.gc | 2 +- goal_src/engine/ps2/rpc-h.gc | 18 +- goal_src/engine/target/logic-target.gc | 71 +- goal_src/engine/target/surface-h.gc | 20 +- goal_src/engine/target/target-h.gc | 2 +- goal_src/engine/target/target-util.gc | 10 +- goal_src/engine/ui/text-h.gc | 1 + goal_src/examples/debug-draw-example.gc | 5 +- goal_src/game.gp | 82 +- goal_src/goal-lib.gc | 5 + goal_src/kernel/gkernel-h.gc | 2 +- goal_src/kernel/gkernel.gc | 12 +- goal_src/kernel/gstate.gc | 13 +- goal_src/levels/beach/beach-rocks.gc | 14 +- goal_src/levels/beach/lurkercrab.gc | 27 +- goal_src/levels/beach/lurkerpuppy.gc | 12 +- goal_src/levels/beach/lurkerworm.gc | 24 +- goal_src/levels/citadel/citadel-obs.gc | 52 +- goal_src/levels/citadel/citadel-sages.gc | 14 +- goal_src/levels/citadel/citb-drop-plat-CIT.gc | 12 +- goal_src/levels/common/babak-with-cannon.gc | 6 +- goal_src/levels/common/babak.gc | 22 +- goal_src/levels/common/basebutton.gc | 18 +- goal_src/levels/common/baseplat.gc | 10 +- goal_src/levels/common/battlecontroller.gc | 10 +- goal_src/levels/common/blocking-plane.gc | 4 +- goal_src/levels/common/nav-enemy.gc | 16 +- goal_src/levels/common/orb-cache.gc | 12 +- goal_src/levels/common/plat-button.gc | 16 +- goal_src/levels/common/plat.gc | 32 +- goal_src/levels/common/rigid-body.gc | 12 +- goal_src/levels/common/sharkey.gc | 12 +- goal_src/levels/darkcave/darkcave-obs.gc | 4 +- goal_src/levels/finalboss/final-door.gc | 24 +- goal_src/levels/finalboss/green-eco-lurker.gc | 30 +- goal_src/levels/finalboss/light-eco.gc | 6 +- goal_src/levels/finalboss/robotboss-misc.gc | 24 +- goal_src/levels/finalboss/robotboss-weapon.gc | 53 +- goal_src/levels/finalboss/robotboss.gc | 50 +- goal_src/levels/firecanyon/firecanyon-obs.gc | 24 +- goal_src/levels/flut_common/flutflut.gc | 14 +- goal_src/levels/jungle/bouncer.gc | 12 +- goal_src/levels/jungle/fisher-JUN.gc | 12 +- goal_src/levels/jungle/hopper.gc | 16 +- goal_src/levels/jungle/jungle-elevator.gc | 8 +- goal_src/levels/jungle/jungle-obs.gc | 130 +- goal_src/levels/jungle/junglefish.gc | 12 +- goal_src/levels/jungle/junglesnake.gc | 24 +- goal_src/levels/jungleb/aphid.gc | 12 +- goal_src/levels/jungleb/jungleb-obs.gc | 18 +- goal_src/levels/jungleb/plat-flip.gc | 12 +- goal_src/levels/maincave/baby-spider.gc | 14 +- .../levels/maincave/mother-spider-proj.gc | 12 +- goal_src/levels/maincave/spiderwebs.gc | 12 +- goal_src/levels/misty/bonelurker.gc | 18 +- goal_src/levels/misty/misty-conveyor.gc | 26 +- goal_src/levels/misty/misty-teetertotter.gc | 22 +- goal_src/levels/misty/misty-warehouse.gc | 16 +- goal_src/levels/misty/muse.gc | 16 +- goal_src/levels/ogre/flying-lurker.gc | 4 +- goal_src/levels/ogre/ogre-obs.gc | 72 +- .../racer-states-FIC-LAV-MIS-OGR-ROL.gc | 18 +- goal_src/levels/snow/snow-flutflut-obs.gc | 60 +- goal_src/levels/snow/target-snowball.gc | 7 +- goal_src/levels/snow/yeti.gc | 18 +- goal_src/levels/sunken/floating-launcher.gc | 12 +- goal_src/levels/sunken/qbert-plat.gc | 12 +- goal_src/levels/sunken/shover.gc | 12 +- goal_src/levels/sunken/square-platform.gc | 12 +- goal_src/levels/sunken/steam-cap.gc | 12 +- goal_src/levels/sunken/sun-iris-door.gc | 12 +- goal_src/levels/sunken/sunken-obs.gc | 12 +- goal_src/levels/sunken/wall-plat.gc | 22 +- goal_src/levels/sunken/wedge-plats.gc | 24 +- goal_src/levels/sunken/whirlpool.gc | 4 +- goal_src/levels/swamp/billy.gc | 8 +- goal_src/levels/swamp/swamp-bat.gc | 29 +- goal_src/levels/swamp/swamp-obs.gc | 48 +- goal_src/levels/swamp/swamp-rat-nest.gc | 14 +- goal_src/levels/swamp/swamp-rat.gc | 14 +- goal_src/levels/village1/farmer.gc | 8 +- goal_src/levels/village1/fishermans-boat.gc | 14 +- goal_src/levels/village1/sage.gc | 8 +- goal_src/levels/village1/village-obs-VI1.gc | 12 +- goal_src/levels/village1/yakow.gc | 20 +- goal_src/levels/village2/sunken-elevator.gc | 8 +- goal_src/levels/village2/village2-obs.gc | 53 +- goal_src/levels/village2/warrior.gc | 8 +- goalc/compiler/Compiler.h | 9 + goalc/compiler/compilation/State.cpp | 134 +- goalc/compiler/compilation/Type.cpp | 18 +- goalc/debugger/Debugger.cpp | 2 +- .../decompiler/reference/decompiler-macros.gc | 14 +- .../reference/engine/camera/cam-master_REF.gc | 8 +- .../reference/engine/camera/camera_REF.gc | 8 +- .../engine/collide/collide-cache-h_REF.gc | 52 +- .../engine/collide/collide-edge-grab-h_REF.gc | 40 +- .../engine/collide/collide-mesh-h_REF.gc | 16 +- .../engine/collide/collide-shape-h_REF.gc | 176 +- .../engine/collide/collide-target-h_REF.gc | 13 +- .../engine/collide/collide-touch-h_REF.gc | 28 +- .../engine/collide/collide-touch_REF.gc | 591 +++ .../reference/engine/debug/anim-tester_REF.gc | 6 +- .../engine/debug/default-menu_REF.gc | 24 +- .../reference/engine/draw/drawable-h_REF.gc | 2 +- .../engine/draw/process-drawable_REF.gc | 17 +- .../engine/game/effect-control_REF.gc | 14 +- .../reference/engine/game/fact-h_REF.gc | 15 +- .../reference/engine/game/game-info_REF.gc | 2 +- .../reference/engine/game/generic-obs_REF.gc | 116 +- .../reference/engine/game/projectiles_REF.gc | 37 +- .../engine/game/task/process-taskable_REF.gc | 10 +- .../engine/gfx/generic/generic-vu1-h_REF.gc | 6 +- .../engine/gfx/shrub/shrubbery-h_REF.gc | 2 +- .../engine/gfx/tie/prototype-h_REF.gc | 38 +- .../reference/engine/gfx/tie/tie-h_REF.gc | 10 +- .../reference/engine/math/vector-h_REF.gc | 2 +- .../engine/target/logic-target_REF.gc | 68 +- .../reference/engine/target/target-h_REF.gc | 2 +- .../engine/target/target-util_REF.gc | 10 +- .../decompiler/reference/kernel/gstate_REF.gc | 2 +- .../reference/levels/beach/beach-rocks_REF.gc | 14 +- .../reference/levels/beach/lurkercrab_REF.gc | 29 +- .../reference/levels/beach/lurkerpuppy_REF.gc | 12 +- .../reference/levels/beach/lurkerworm_REF.gc | 24 +- .../levels/citadel/citadel-obs_REF.gc | 52 +- .../levels/citadel/citadel-sages_REF.gc | 14 +- .../levels/citadel/citb-drop-plat-CIT_REF.gc | 12 +- .../levels/common/babak-with-cannon_REF.gc | 6 +- .../reference/levels/common/babak_REF.gc | 22 +- .../reference/levels/common/basebutton_REF.gc | 18 +- .../reference/levels/common/baseplat_REF.gc | 10 +- .../levels/common/battlecontroller_REF.gc | 10 +- .../levels/common/blocking-plane_REF.gc | 4 +- .../reference/levels/common/nav-enemy_REF.gc | 16 +- .../reference/levels/common/orb-cache_REF.gc | 12 +- .../levels/common/plat-button_REF.gc | 17 +- .../reference/levels/common/plat_REF.gc | 32 +- .../reference/levels/common/rigid-body_REF.gc | 12 +- .../reference/levels/common/sharkey_REF.gc | 12 +- .../levels/darkcave/darkcave-obs_REF.gc | 4 +- .../levels/finalboss/final-door_REF.gc | 24 +- .../levels/finalboss/green-eco-lurker_REF.gc | 30 +- .../levels/finalboss/light-eco_REF.gc | 6 +- .../levels/finalboss/robotboss-misc_REF.gc | 24 +- .../levels/finalboss/robotboss-weapon_REF.gc | 53 +- .../levels/finalboss/robotboss_REF.gc | 50 +- .../levels/firecanyon/firecanyon-obs_REF.gc | 24 +- .../levels/flut_common/flutflut_REF.gc | 14 +- .../reference/levels/jungle/bouncer_REF.gc | 12 +- .../reference/levels/jungle/fisher-JUN_REF.gc | 12 +- .../reference/levels/jungle/hopper_REF.gc | 16 +- .../levels/jungle/jungle-elevator_REF.gc | 8 +- .../reference/levels/jungle/jungle-obs_REF.gc | 130 +- .../reference/levels/jungle/junglefish_REF.gc | 12 +- .../levels/jungle/junglesnake_REF.gc | 24 +- .../reference/levels/jungleb/aphid_REF.gc | 12 +- .../levels/jungleb/jungleb-obs_REF.gc | 18 +- .../reference/levels/jungleb/plat-flip_REF.gc | 12 +- .../levels/maincave/baby-spider_REF.gc | 14 +- .../levels/maincave/mother-spider-proj_REF.gc | 12 +- .../levels/maincave/spiderwebs_REF.gc | 12 +- .../reference/levels/misty/bonelurker_REF.gc | 18 +- .../levels/misty/misty-conveyor_REF.gc | 26 +- .../levels/misty/misty-teetertotter_REF.gc | 22 +- .../levels/misty/misty-warehouse_REF.gc | 16 +- .../reference/levels/misty/muse_REF.gc | 16 +- .../levels/ogre/flying-lurker_REF.gc | 4 +- .../reference/levels/ogre/ogre-obs_REF.gc | 72 +- .../racer-states-FIC-LAV-MIS-OGR-ROL_REF.gc | 18 +- .../levels/snow/snow-flutflut-obs_REF.gc | 60 +- .../levels/snow/target-snowball_REF.gc | 7 +- .../reference/levels/snow/yeti_REF.gc | 18 +- .../levels/sunken/floating-launcher_REF.gc | 12 +- .../reference/levels/sunken/qbert-plat_REF.gc | 12 +- .../reference/levels/sunken/shover_REF.gc | 12 +- .../levels/sunken/square-platform_REF.gc | 12 +- .../reference/levels/sunken/steam-cap_REF.gc | 12 +- .../levels/sunken/sun-iris-door_REF.gc | 12 +- .../reference/levels/sunken/sunken-obs_REF.gc | 12 +- .../reference/levels/sunken/wall-plat_REF.gc | 22 +- .../levels/sunken/wedge-plats_REF.gc | 24 +- .../reference/levels/sunken/whirlpool_REF.gc | 4 +- .../reference/levels/swamp/billy_REF.gc | 4 +- .../reference/levels/swamp/swamp-bat_REF.gc | 29 +- .../reference/levels/swamp/swamp-obs_REF.gc | 49 +- .../levels/swamp/swamp-rat-nest_REF.gc | 14 +- .../reference/levels/swamp/swamp-rat_REF.gc | 14 +- .../reference/levels/village1/farmer_REF.gc | 8 +- .../levels/village1/fishermans-boat_REF.gc | 14 +- .../reference/levels/village1/sage_REF.gc | 8 +- .../levels/village1/village-obs-VI1_REF.gc | 12 +- .../reference/levels/village1/yakow_REF.gc | 21 +- .../levels/village2/sunken-elevator_REF.gc | 9 +- .../levels/village2/village2-obs_REF.gc | 53 +- .../reference/levels/village2/warrior_REF.gc | 8 +- .../with_game/test-pw-shifts.gc | 2 +- .../test-vector-int-float-conversions.gc | 2 +- 246 files changed, 13131 insertions(+), 2505 deletions(-) create mode 100644 goal_src/dgos/cit.gd create mode 100644 test/decompiler/reference/engine/collide/collide-touch_REF.gc diff --git a/common/type_system/Type.cpp b/common/type_system/Type.cpp index 0ac2e02062..1e9f52f83c 100644 --- a/common/type_system/Type.cpp +++ b/common/type_system/Type.cpp @@ -226,6 +226,7 @@ bool Type::common_type_info_equal(const Type& other) const { m_allow_in_runtime == other.m_allow_in_runtime && m_runtime_name == other.m_runtime_name && m_is_boxed == other.m_is_boxed && + m_generate_inspect == other.m_generate_inspect && m_heap_base == other.m_heap_base; // clang-format on } @@ -292,6 +293,10 @@ std::string Type::common_type_info_diff(const Type& other) const { if (m_heap_base != other.m_heap_base) { result += fmt::format("heap_base: {} vs. {}\n", m_heap_base, other.m_heap_base); } + if (m_generate_inspect != other.m_generate_inspect) { + result += + fmt::format("generate_inspect: {} vs. {}\n", m_generate_inspect, other.m_generate_inspect); + } return result; } diff --git a/common/type_system/Type.h b/common/type_system/Type.h index 9e28d98209..2ff45f4b4d 100644 --- a/common/type_system/Type.h +++ b/common/type_system/Type.h @@ -102,6 +102,8 @@ class Type { int heap_base() const { return m_heap_base; } + bool gen_inspect() const { return m_generate_inspect; } + protected: Type(std::string parent, std::string name, bool is_boxed, int heap_base); virtual std::string diff_impl(const Type& other) const = 0; @@ -111,6 +113,7 @@ class Type { std::map m_states; MethodInfo m_new_method_info; bool m_new_method_info_defined = false; + bool m_generate_inspect = true; std::string m_parent; // the parent type (is empty for none and object) std::string m_name; @@ -276,6 +279,7 @@ class StructureType : public ReferenceType { bool is_packed() const { return m_pack; } bool is_allowed_misalign() const { return m_allow_misalign; }; void set_allow_misalign(bool misalign) { m_allow_misalign = misalign; } + void set_gen_inspect(bool gen_inspect) { m_generate_inspect = gen_inspect; } protected: friend class TypeSystem; @@ -343,6 +347,7 @@ class BitFieldType : public ValueType { bool operator==(const Type& other) const override; const std::vector& fields() const { return m_fields; } std::string diff_impl(const Type& other) const override; + void set_gen_inspect(bool gen_inspect) { m_generate_inspect = gen_inspect; } private: friend class TypeSystem; diff --git a/common/type_system/TypeSystem.cpp b/common/type_system/TypeSystem.cpp index 404a4cebbb..3b8a68cc72 100644 --- a/common/type_system/TypeSystem.cpp +++ b/common/type_system/TypeSystem.cpp @@ -1633,6 +1633,9 @@ std::string TypeSystem::generate_deftype_footer(const Type* type) const { flags.methods = method_count; result.append(fmt::format(" :flag-assert #x{:x}\n ", flags.flag)); + if (!type->gen_inspect()) { + result.append(":no-inspect\n "); + } std::string methods_string; auto new_info = type->get_new_method_defined_for_type(); diff --git a/common/type_system/deftype.cpp b/common/type_system/deftype.cpp index c27437736f..c0b632b7f1 100644 --- a/common/type_system/deftype.cpp +++ b/common/type_system/deftype.cpp @@ -335,6 +335,8 @@ StructureDefResult parse_structure_def(StructureType* type, rest = cdr(rest); } else if (opt_name == ":no-runtime-type") { result.generate_runtime_type = false; + } else if (opt_name == ":no-inspect") { + type->set_gen_inspect(false); } else if (opt_name == ":pack-me") { result.pack_me = true; } else if (opt_name == ":heap-base") { @@ -441,6 +443,8 @@ BitFieldTypeDefResult parse_bitfield_type_def(BitFieldType* type, rest = cdr(rest); } else if (opt_name == ":no-runtime-type") { result.generate_runtime_type = false; + } else if (opt_name == ":no-inspect") { + type->set_gen_inspect(false); } else if (opt_name == ":heap-base") { u16 hb = get_int(car(rest)); rest = cdr(rest); diff --git a/common/type_system/state.cpp b/common/type_system/state.cpp index f8925dee37..373fa6b599 100644 --- a/common/type_system/state.cpp +++ b/common/type_system/state.cpp @@ -131,4 +131,20 @@ std::optional get_state_type_from_enter_and_code(const TypeSpec& enter } else { return {}; } -} \ No newline at end of file +} + +std::optional get_state_type_from_func(const TypeSpec& func_type, + const TypeSpec& proc_type) { + bool real_func = func_type.base_type() == "function" && func_type.arg_count() > 0; + + if (real_func) { + TypeSpec result("state"); + for (int i = 0; i < (int)func_type.arg_count() - 1; i++) { + result.add_arg(func_type.get_arg(i)); + } + result.add_arg(proc_type); + return result; + } else { + return {}; + } +} diff --git a/common/type_system/state.h b/common/type_system/state.h index 0cd279c33d..b1ecb9801e 100644 --- a/common/type_system/state.h +++ b/common/type_system/state.h @@ -20,4 +20,6 @@ TypeSpec get_state_handler_type(StateHandler kind, const TypeSpec& state_type); std::optional get_state_type_from_enter_and_code(const TypeSpec& enter_func_type, const TypeSpec& code_func_type, const TypeSpec& proc_type, - const TypeSystem& ts); \ No newline at end of file + const TypeSystem& ts); +std::optional get_state_type_from_func(const TypeSpec& func_type, + const TypeSpec& proc_type); diff --git a/decompiler/IR2/FormStack.cpp b/decompiler/IR2/FormStack.cpp index e49a43eee8..c68d19dbcc 100644 --- a/decompiler/IR2/FormStack.cpp +++ b/decompiler/IR2/FormStack.cpp @@ -395,7 +395,7 @@ std::optional rewrite_to_get_var(std::vector& defa auto cast = last_op_as_set->required_cast(env); if (cast && cast == TypeSpec("none")) { env.func->warnings.general_warning( - "rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: {}]", + "rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: {}]", last_op_as_set->dst().idx()); cast = std::nullopt; } diff --git a/decompiler/ObjectFile/ObjectFileDB_IR2.cpp b/decompiler/ObjectFile/ObjectFileDB_IR2.cpp index bf4ddafc05..12bba4e091 100644 --- a/decompiler/ObjectFile/ObjectFileDB_IR2.cpp +++ b/decompiler/ObjectFile/ObjectFileDB_IR2.cpp @@ -628,7 +628,7 @@ std::string ObjectFileDB::ir2_to_file(ObjectFileData& data, const Config& config try { result += ir2_function_to_string(data, func, seg); } catch (std::exception& e) { - result += "Failed to write"; + result += "Failed to write "; result += func.name(); result += ": "; result += e.what(); diff --git a/decompiler/analysis/cfg_builder.cpp b/decompiler/analysis/cfg_builder.cpp index 40b9663440..7ea244669c 100644 --- a/decompiler/analysis/cfg_builder.cpp +++ b/decompiler/analysis/cfg_builder.cpp @@ -163,9 +163,8 @@ void clean_up_return_final(const Function& f, ReturnElement* ir) { } if (!dead) { - lg::error("failed to recognize dead code after return, got {}", - ir->dead_code->to_string(f.ir2.env)); - throw std::runtime_error("failed to recognize dead code"); + throw std::runtime_error(fmt::format("failed to recognize dead code after return, got {}", + ir->dead_code->to_string(f.ir2.env))); } assert(dead); auto src = dynamic_cast(dead->src()->try_as_single_element()); diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index ad1711863e..5392e08d49 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -285,26 +285,6 @@ (nop 15) ) -(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) - ) - ) - (defenum pad-buttons :bitfield #t :type uint32 @@ -996,6 +976,7 @@ (yakow-owed-powercell #x297) (misty-teetertotter-bonk-dax-tutorial #x2a4) + (sidekick-hint-misty-get-red-eco #x2a5) (daxter-blue-eco-plat-tutorial #x2a7) (misty-bone-bridge-hint #x2aa) @@ -1920,12 +1901,12 @@ ) (deftype vector4w (structure) - ((data int32 4 :score -9999 :offset-assert 0) + ((data uint32 4 :score -9999 :offset-assert 0) (x int32 :offset 0) (y int32 :offset 4) (z int32 :offset 8) (w int32 :offset 12) - (dword uint64 2 :offset 0) + (dword uint64 2 :offset 0) (quad uint128 :offset 0) ) :method-count-assert 9 @@ -6275,9 +6256,9 @@ (declare-type ambient-list structure) (declare-type collide-list structure) +(declare-type drawable-error drawable) (deftype drawable (basic) ((id int16 :offset-assert 4) - ; (unknown basic :offset-assert 8) ;; - from default-menu::build-instance-list (bsphere vector :inline :offset-assert 16) ) :method-count-assert 18 @@ -6297,7 +6278,7 @@ ) (deftype drawable-error (drawable) - ((name basic :offset-assert 32) + ((name string :offset-assert 32) ) :method-count-assert 18 :size-assert #x24 @@ -8066,7 +8047,7 @@ (deftype pris-mtx (structure) ((data float 32 :offset 0) (vector vector 8 :inline :offset 0) - (t-mtx matrix :inline :offset 0) + (t-mtx matrix :inline :score 100 :offset 0) (n-mtx matrix3 :inline :offset 64) (scale vector :inline :offset 112) ) @@ -9482,6 +9463,7 @@ :flag-assert #x90000000c ) +(declare-type drawable-inline-array-collide-fragment drawable-inline-array) (deftype prototype-bucket-tie (prototype-bucket) ((generic-count uint16 4 :offset-assert 88) (generic-next uint32 4 :offset-assert 96) @@ -9491,8 +9473,8 @@ (envmap-rfade float :offset-assert 128) (envmap-fade-far float :offset-assert 132) (envmap-shader adgif-shader :offset-assert 136) - (collide-frag basic :offset-assert 140) - (tie-colors basic :offset-assert 144) + (collide-frag drawable-inline-array-collide-fragment :offset-assert 140) + (tie-colors time-of-day-palette :offset-assert 144) (data uint32 :dynamic :offset-assert 148) (color-index-qwc uint32 :dynamic :offset-assert 148) (generic-next-clear uint128 :offset 96) @@ -9525,7 +9507,7 @@ (deftype instance (drawable) ((bucket-index uint16 :offset 6) - (unknown uint32 :offset 8) ; TODO - from default-menu + (error (pointer drawable-error) :offset 8) ;; - from default-menu::build-instance-list (origin matrix4h :inline :offset-assert 32) ; TODO - this can also be a float, default-menu::lambda_62 (unknown-vector vector :inline :offset 32) ;; todo, this might not be right. (wind-index uint16 :offset 62) @@ -10064,6 +10046,31 @@ ;; - Types +(defenum fact-options + :bitfield #t + :type uint64 + (vent-blocked 0) + (fop1 1) + (vent-valve 2) + (fop3 3) + (fop4 4) + (fop5 5) + (fop6 6) + (fop7 7) + (can-collect 8) + (fade 9) + (large 10) + (fop11 11) + (powerup 12) + (fop13 13) + (fop14 14) + (fop15 15) + (fop16 16) + (fop17 17) + (eco-blocked 18) + (respawn 19) + ) + (deftype fact-bank (basic) ((eco-level-max float :offset-assert 4) (eco-single-inc float :offset-assert 8) @@ -10091,15 +10098,15 @@ (pickup-type pickup-type :offset-assert 8) (pickup-amount float :offset-assert 12) (pickup-spawn-amount float :offset-assert 16) - (options uint64 :offset-assert 24) - (fade-time uint64 :offset-assert 32) + (options fact-options :offset-assert 24) + (fade-time int64 :offset-assert 32) ) :method-count-assert 12 :size-assert #x28 :flag-assert #xc00000028 (:methods (new (symbol type process-drawable pickup-type float) _type_ 0) - (TODO-RENAME-9 (_type_ symbol process-tree fact-info int) uint 9) ;; See nav-enemy::process-drawable-death-event-handler + (drop-pickup (_type_ symbol process-tree fact-info int) none 9) (reset! (_type_ symbol) none 10) (pickup-collectable! (_type_ pickup-type float handle) float 11) ) @@ -10985,6 +10992,7 @@ :flag-assert #x900000008 ) +(declare-type collide-mesh-cache-tri structure) (deftype collide-mesh (basic) ((joint-id int32 :offset-assert 4) (num-tris uint32 :offset-assert 8) @@ -10996,13 +11004,13 @@ :size-assert #x28 :flag-assert #x1000000028 (:methods - (dummy-9 () none 9) - (dummy-10 () none 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) + (debug-draw-tris (_type_ process-drawable int) none 9) + (dummy-10 (_type_ object vector) none 10) ;; what is the second arg!? + (dummy-11 (_type_) none 11) + (dummy-12 (_type_ collide-mesh-cache-tri collide-tri-result vector float) float 12) + (dummy-13 (_type_) none 13) + (dummy-14 (_type_) none 14) + (dummy-15 (_type_) none 15) ) ) @@ -11016,7 +11024,7 @@ :size-assert #xa020 :flag-assert #xc0000a020 (:methods - (dummy-9 () none 9) + (dummy-9 (_type_) none 9) (is-id? (_type_ int) symbol 10) (next-id! (_type_) uint 11) ) @@ -11046,9 +11054,10 @@ ;; - Types +(declare-type collide-shape-prim basic) (deftype collide-sticky-rider (structure) ((rider-handle handle :offset-assert 0) - (sticky-prim basic :offset-assert 8) + (sticky-prim collide-shape-prim :offset-assert 8) (prim-ry float :offset-assert 12) (rider-local-pos vector :inline :offset-assert 16) ) @@ -11070,14 +11079,14 @@ :flag-assert #xb00000030 (:methods (new (symbol type int) _type_ 0) - (dummy-9 () none 9) + (add-rider! (_type_ process-drawable) collide-sticky-rider 9) (reset! (_type_) int 10) ) ) (deftype pull-rider-info (structure) ((rider collide-sticky-rider :offset-assert 0) - (rider-cshape basic :offset-assert 4) + (rider-cshape collide-shape-prim :offset-assert 4) ;; collide-shape-prim fixes some methods...but this is likely a collide-shape...right (it fixes other methods!) (rider-delta-ry float :offset-assert 8) (rider-dest vector :inline :offset-assert 16) ) @@ -11098,7 +11107,7 @@ :size-assert #x8c :flag-assert #xa0000008c (:methods - (dummy-9 () none 9) + (init! (_type_ vector) symbol 9) ) ) @@ -11141,8 +11150,9 @@ :flag-assert #x900000020 ) +(declare-type collide-cache-prim structure) (deftype collide-shape-prim (basic) - ((cshape basic :offset-assert 4) + ((cshape collide-shape :offset-assert 4) (prim-id uint32 :offset-assert 8) (transform-index int8 :offset-assert 12) (prim-core collide-prim-core :inline :offset-assert 16) @@ -11159,26 +11169,26 @@ :size-assert #x48 :flag-assert #x1c00000048 (:methods - (new (symbol type basic uint int) _type_ 0) - (dummy-9 () none 9) + (new (symbol type collide-shape uint int) _type_ 0) + (dummy-9 (_type_ vector) object 9) ;; ret - symbol | float (dummy-10 (_type_ uint) collide-shape-prim 10) - (dummy-11 () none 11) - (add-fg-prim-using-box (_type_) none 12) - (add-fg-prim-using-line-sphere (_type_) none 13) - (add-fg-prim-using-y-probe (_type_) none 14) - (dummy-15 () none 15) + (debug-draw-world-sphere (_type_) symbol 11) + (add-fg-prim-using-box (_type_ process-drawable) none 12) + (add-fg-prim-using-line-sphere (_type_ process-drawable) none 13) + (add-fg-prim-using-y-probe (_type_ process-drawable) none 14) + (overlaps-others-test (_type_) symbol 15) (dummy-16 () none 16) (dummy-17 () none 17) - (dummy-18 () none 18) - (dummy-19 () none 19) - (dummy-20 () none 20) - (dummy-21 () none 21) - (dummy-22 () none 22) - (dummy-23 () none 23) + (collide-with-collide-cache-prim-mesh (_type_ collide-shape-intersect collide-cache-prim) none 18) + (collide-with-collide-cache-prim-sphere (_type_ collide-shape-intersect collide-cache-prim) none 19) + (dummy-20 (_type_ uint) symbol 20) + (num-mesh (_type_ collide-shape-prim) int 21) + (on-platform-test (_type_ _type_ collide-overlap-result float) pat-surface 22) + (should-push-away-test () none 23) (dummy-24 () none 24) - (dummy-25 () none 25) - (dummy-26 () none 26) - (dummy-27 () none 27) + (dummy-25 (_type_ process-drawable) symbol 25) + (set-collide-as! (_type_ handle) none 26) + (set-collide-with! (_type_ handle) none 27) ) ) @@ -11189,7 +11199,7 @@ :size-assert #x4c :flag-assert #x1c0000004c (:methods - (new (symbol type basic uint) _type_ 0) + (new (symbol type collide-shape uint) _type_ 0) ) ) @@ -11203,8 +11213,8 @@ :size-assert #x5c :flag-assert #x1d0000005c (:methods - (new (symbol type basic uint uint) _type_ 0) - (dummy-28 (_type_ int) none 28) + (new (symbol type collide-shape uint uint) _type_ 0) + (change-mesh (_type_ int) none 28) ) ) @@ -11218,15 +11228,17 @@ :size-assert #x54 :flag-assert #x1e00000054 (:methods - (new (symbol type basic uint int) _type_ 0) - (dummy-28 (_type_) none 28) - (dummy-29 () none 29) + (new (symbol type collide-shape uint int) _type_ 0) + (append-prim (_type_ collide-shape-prim) none 28) + (dummy-29 (_type_ uint) none 29) ) ) (declare-type collide-edge-hold-list structure) +(declare-type collide-work structure) +(declare-type touching-shapes-entry structure) (deftype collide-shape (trsqv) - ((process process :offset-assert 140) + ((process process-drawable :offset-assert 140) (max-iteration-count uint8 :offset-assert 144) (nav-flags uint8 :offset-assert 145) (pad-byte uint8 2 :offset-assert 146) @@ -11242,35 +11254,35 @@ :size-assert #xb8 :flag-assert #x38000000b8 (:methods - (new (symbol type process collide-list-enum) _type_) - (TODO-RENAME-28 (_type_) none 28) + (new (symbol type process-drawable collide-list-enum) _type_) + (TODO-RENAME-28 (_type_ vector) none 28) (dummy-29 (_type_ int) none 29) (TODO-RENAME-30 (_type_ vector) none 30) - (dummy-31 () none 31) - (dummy-32 (_type_ float uint) none 32) + (dummy-31 (_type_) none 31) + (dummy-32 (_type_ object uint) none 32) (dummy-33 (_type_ vector uint) none 33) (dummy-34 (_type_ uint) collide-shape-prim 34) - (dummy-35 (_type_) none 35) - (dummy-36 () none 36) + (dummy-35 (_type_) symbol 35) + (dummy-36 (_type_ bounding-box float uint) symbol 36) (dummy-37 (_type_ vector) none 37) - (dummy-38 () none 38) - (dummy-39 () none 39) + (find-collision-meshes (_type_) symbol 38) + (dummy-39 (_type_ collide-shape collide-overlap-result) symbol 39) (dummy-40 (_type_ structure) none 40) ;; ?? - I've seen overlaps-others-params | collide-edge-hold-list - (dummy-41 (_type_ attack-info float) none 41) - (dummy-42 () none 42) - (dummy-43 () none 43) - (dummy-44 (_type_) none 44) - (dummy-45 (_type_) none 45) - (dummy-46 (_type_) none 46) - (dummy-47 (_type_) none 47) - (dummy-48 (_type_) none 48) - (dummy-49 (_type_) none 49) - (dummy-50 (_type_) none 50) - (dummy-51 () none 51) - (dummy-52 () none 52) + (dummy-41 (_type_ attack-info float) vector 41) + (dummy-42 (_type_ collide-shape collide-work) none 42) ; collide-work is a guess + (dummy-43 (_type_ pull-rider-info) none 43) + (dummy-44 (_type_) symbol 44) + (dummy-45 (_type_) symbol 45) + (set-root-prim! (_type_ collide-shape-prim) collide-shape-prim 46) + (dummy-47 (_type_) symbol 47) + (clear-collide-with-as (_type_) none 48) + (restore-collide-with-as (_type_) none 49) + (backup-collide-with-as (_type_) none 50) + (set-root-prim-collide-with! (_type_ handle) none 51) + (set-root-prim-collide-as! (_type_ handle) none 52) (dummy-53 (_type_ int int int) none 53) (dummy-54 (_type_ int int) none 54) - (dummy-55 (_type_ process uint float float float) none 55) + (dummy-55 (_type_ process touching-shapes-entry float float float) none 55) ) ) @@ -11285,8 +11297,8 @@ (old-status uint64 :offset-assert 280) (prev-status uint64 :offset-assert 288) (reaction-flag uint32 :offset-assert 296) - (reaction function :offset-assert 300) - (no-reaction function :offset-assert 304) + (reaction (function collide-shape-moving collide-shape-intersect vector vector none) :offset-assert 300) + (no-reaction (function collide-shape-moving collide-shape-intersect vector vector none) :offset-assert 304) (local-normal vector :inline :offset-assert 320) (surface-normal vector :inline :offset-assert 336) (poly-normal vector :inline :offset-assert 352) @@ -11307,13 +11319,13 @@ (:methods (dummy-56 (_type_ pat-surface) none 56) (dummy-57 (_type_ vector) none 57) - (dummy-58 (_type_ vector) none 58) + (dummy-58 (_type_ vector) symbol 58) (dummy-59 (_type_ vector uint float symbol symbol symbol) none 59) - (dummy-60 (_type_ float float symbol uint) none 60) + (dummy-60 (_type_ float float symbol uint) symbol 60) (TODO-RENAME-61 (_type_ vector vector vector) none 61) (dummy-62 (_type_ vector float) vector 62) - (dummy-63 () none 63) - (dummy-64 () none 64) + (dummy-63 (_type_ vector vector float) float 63) + (dummy-64 (_type_ collide-tri-result vector) none 64) ) ) @@ -11368,7 +11380,10 @@ (unknown-vector10 vector :inline :offset 544) ;; from - logic-target::flat-setup (unknown-vector11 vector :inline :offset 560) ;; from - logic-target::target-no-move-post (unknown-vector12 vector :inline :offset 576) - (unknown-vector13 vector :inline :offset 608) ;; from - logic-target::target-no-move-post + (unknown-vector13 vector :inline :offset 592) ;; from - collide-shape::method-37 + (unknown-vector14 vector :inline :offset 608) ;; from - logic-target::target-no-move-post + (unknown-vector15 vector :inline :offset 624) ;; from - collide-shape::method-37 + (unknown-vector16 vector :inline :offset 640) ;; from - collide-shape::method-37 (unknown-dynamics00 dynamics :offset 656) ;; from - logic-target::bend-gravity (unknown-surface00 surface :offset 660) (unknown-surface01 surface :offset 664) ;; not a symbol - target-util::target-align-vel-z-adjust @@ -11403,7 +11418,8 @@ (unknown-vector53 vector :inline :offset 1232) (unknown-vector54 vector :inline :offset 1248) (unknown-vector55 vector :inline :offset 1264) - (unknown-dword10 int64 :offset 1288) ;; from - target-util::can-jump? + (unknown-dword10 int64 :offset 1280) ;; from - collide-reaction-target::target-collision-reaction + (unknown-dword11 int64 :offset 1288) ;; from - target-util::can-jump? (unknown-float60 float :offset 1300) ;; from - target-util::can-duck? (unknown-float61 float :offset 1304) ;; from - target-util::target-align-vel-z-adjust (unknown-float62 float :offset 1308) ;; from - target-util::target-print-stats @@ -11414,8 +11430,10 @@ (unknown-vector60 vector :inline :offset 1456) ;; from - logic-target::add-thrust (unknown-vector61 vector :inline :offset 1504) ;; from - logic-target::add-thrust (unknown-float70 float :offset 1520) ;; from - logic-target::add-thrust + (unknown-float71 float :offset 1524) ;; from - collide-shape::method-37 (unknown-vector70 vector :inline :offset 1536) ;; from - logic-target::add-thrust (unknown-vector71 vector :inline :offset 1552) ;; from - target-tube::tube-thrust + (unknown-vector72 vector :inline :offset 1584) ;; from - collide-reaction-target::target-collision-reaction (unknown-handle00 handle :offset 1600) ;; from logic-target::reset-target-state (unknown-sphere-array00 collide-shape-prim-sphere 3 :offset 1608) ;; from target-util::target-collide-set! and from target-util::target-danger-set! (unknown-sphere00 collide-shape-prim-sphere :offset 1632) ;; from target-util::target-danger-set! @@ -11430,7 +11448,7 @@ (unknown-float82 float :offset 1732) ;; from logic-target::bend-gravity (unknown-vector80 vector :inline :offset 1744) ;; from logic-target::joint-points (unknown-cspace00 cspace :inline :offset 1760) ;; from logic-target::joint-points - (unknown-vector90 vector :inline :offset 1776) ;; from logic-target::target-compute-edge + (unknown-vector90 vector :score 100 :inline :offset 1776) ;; from logic-target::target-compute-edge (unknown-vector91 vector :inline :offset 1792) ;; from logic-target::target-compute-edge (unknown-vector92 vector :inline :offset 1824) ;; from logic-target::joint-points (unknown-cspace10 cspace :inline :offset 1808) ;; from logic-target::joint-points @@ -11466,11 +11484,13 @@ ;; these were determined from racer-collision-reaction. (history-length int16 :offset 2490) (history-data collide-history 128 :inline :offset-assert 2496) + (unknown-float140 float :offset 18944) (unknown-dword60 int64 :offset 18952) ;; from logic-target::add-thrust (unknown-int40 int32 :offset 18880) ;; from logic-target::flag-setup (unknown-dword70 int64 :offset 18888) ;; from logic-target::post-flag-setup (unknown-dword71 int64 :offset 18896) ;; from logic-target::post-flag-setup (unknown-dword72 int64 :offset 18912) ;; from logic-target::reset-target-state + (unknown-vector120 vector :offset 18928) ;; from collide-shape::method-37 (unknown-int50 uint32 :offset 18976) ;; from logic-target::print-target-stats (unknown-soundid00 sound-id :offset 18980) ;; from powerups::target-powerup-process (unknown-float130 float :offset 18984) ;; from powerups::target-powerup-process @@ -11511,10 +11531,10 @@ :size-assert #xe4 :flag-assert #xd000000e4 (:methods - (touched-prim (_type_ collide-shape-moving touching-shapes-entry) collide-shape-prim 9) + (get-touched-prim (_type_ trsqv touching-prims-entry) collide-shape-prim 9) (dummy-10 () none 10) (dummy-11 (_type_ vector) vector 11) - (dummy-12 () none 12) + (get-touched-tri (_type_ touching-prims-entry touching-prims-entry) collide-tri-result 12) ) ) @@ -11527,10 +11547,10 @@ :flag-assert #xd00003c10 (:methods (new (symbol type) _type_ 0) - (dummy-9 () none 9) - (dummy-10 () none 10) + (alloc-node (_type_) touching-prims-entry 9) + (get-size (_type_) int 10) (init-list! (_type_) none 11) - (dummy-12 () none 12) + (free-node (_type_ touching-prims-entry) touching-prims-entry 12) ) ) @@ -11545,13 +11565,13 @@ :size-assert #x10 :flag-assert #x1200000010 (:methods - (dummy-9 () none 9) - (touched-shape (_type_ collide-shape-moving) collide-shape 10) + (dummy-9 (_type_) none 9) + (get-touched-shape (_type_ collide-shape) collide-shape 10) (dummy-11 () none 11) (prims-touching? (_type_ collide-shape-moving uint) touching-prims-entry 12) ; this one! - (dummy-13 (_type_ control-info int int) none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) + (prims-touching-action? (_type_ collide-shape uint uint) touching-prims-entry 13) + (free-list () none 14) + (free-entry-list (_type_) symbol 15) (get-head (_type_) touching-prims-entry 16) (unknown1 (_type_ (pointer uint32)) uint 17) ) @@ -11567,11 +11587,11 @@ :flag-assert #xf00000208 (:methods (new (symbol type) _type_ 0) - (dummy-9 () none 9) + (dummy-9 (_type_ collide-shape-prim collide-shape-prim float collide-shape collide-mesh-cache-tri) none 9) (dummy-10 () none 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) + (dummy-11 (_type_ float) none 11) + (dummy-12 (_type_) none 12) + (get-shapes-entry (_type_ collide-shape collide-shape) touching-shapes-entry 13) (dummy-14 (_type_) none 14) ) ) @@ -11594,7 +11614,7 @@ ((world-vertex vector 6 :inline :offset-assert 0) (local-vertex vector 6 :inline :offset-assert 96) (actor-cshape-prim-offset int32 :offset-assert 192) - (actor-handle uint64 :offset-assert 200) + (actor-handle handle :offset-assert 200) (hanging-matrix matrix :inline :offset-assert 208) (edge-vertex vector 2 :inline :offset 0) (center-hold vector :inline :offset 32) @@ -11626,7 +11646,7 @@ (deftype collide-edge-edge (structure) ((ignore basic :offset-assert 0) (etri collide-edge-tri :offset-assert 4) - (vertex-ptr vector 2 :offset-assert 8) + (vertex-ptr (inline-array vector) 2 :offset-assert 8) (outward vector :inline :offset-assert 16) (edge-vec-norm vector :inline :offset-assert 32) ) @@ -11659,14 +11679,16 @@ :size-assert #x810 :flag-assert #xb00000810 (:methods - (dummy-9 () none 9) + (debug-draw (_type_) object 9) (dummy-10 () none 10) ) ) +(declare-type collide-cache basic) +(declare-type collide-shape basic) (deftype collide-edge-work (structure) - ((ccache basic :offset-assert 0) - (cshape basic :offset-assert 4) + ((ccache collide-cache :offset-assert 0) + (cshape collide-shape :offset-assert 4) (num-verts uint32 :offset-assert 8) (num-edges uint32 :offset-assert 12) (num-tris uint32 :offset-assert 16) @@ -11696,17 +11718,17 @@ :size-assert #x2690 :flag-assert #x1400002690 (:methods - (dummy-9 () none 9) - (dummy-10 () none 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-16 () none 16) - (dummy-17 () none 17) - (dummy-18 () none 18) - (dummy-19 () none 19) + (dummy-9 (_type_ collide-edge-hold-list) symbol 9) + (debug-draw-edges (_type_) object 10) + (dummy-11 (_type_) none 11) + (debug-draw-sphere (_type_) symbol 12) + (dummy-13 (_type_) none 13) + (dummy-14 (_type_ vector vector int) float 14) + (dummy-15 (_type_) none 15) + (dummy-16 (_type_) none 16) + (dummy-17 (_type_) none 17) + (dummy-18 (_type_) none 18) + (dummy-19 (_type_ collide-edge-hold-item edge-grab-info) symbol 19) ) ) @@ -11946,9 +11968,8 @@ :method-count-assert 21 :size-assert #x248 ;;#x250 :flag-assert #x1501e00248 ;;#x1501e00250 - ;; inherited inspect of process-drawable (:methods - (dummy-20 (_type_ collide-cache) none 20) + (dummy-20 (_type_ collide-cache) object 20) ;; none or #f ) (:states @@ -12225,12 +12246,12 @@ ;; - Types (deftype collide-using-spheres-params (structure) - ((spheres uint32 :offset-assert 0) + ((spheres (pointer sphere) :offset-assert 0) (num-spheres uint32 :offset-assert 4) (collide-with uint64 :offset-assert 8) - (proc basic :offset-assert 16) - (ignore-pat uint32 :offset-assert 20) - (solid-only basic :offset-assert 24) + (proc process-drawable :offset-assert 16) + (ignore-pat uint32 :offset-assert 20) ;; flags / bitfield i bet + (solid-only basic :offset-assert 24) ;; probably a symbol ) :method-count-assert 9 :size-assert #x1c @@ -12291,7 +12312,7 @@ ((prim-core collide-prim-core :inline :offset-assert 0) ;;(extra-quad UNKNOWN 16 :offset-assert 32) (ccache collide-cache :offset-assert 32) - (prim collide-shape-prim :offset-assert 36) + (prim (pointer collide-shape-prim) :offset-assert 36) (first-tri uint16 :offset-assert 40) (num-tris uint16 :offset-assert 42) (unused uint8 4 :offset-assert 44) @@ -12305,8 +12326,8 @@ :size-assert #x30 :flag-assert #xb00000030 (:methods - (dummy-9 (_type_ float pointer (pointer collide-cache) float int) float 9) - (dummy-10 (_type_ float pointer (pointer collide-cache) float int) float 10) + (dummy-9 (_type_ collide-mesh-cache-tri collide-prim-core vector float int) float 9) + (dummy-10 (_type_ collide-mesh-cache-tri collide-prim-core vector float int) float 10) ) ) @@ -12329,25 +12350,25 @@ (dummy-10 (_type_ vector vector float int process collide-mesh-cache-tri int) float 10) (dummy-11 (_type_ collide-using-spheres-params) none 11) (fill-and-probe-using-y-probe (_type_ vector float uint process collide-tri-result uint) float 12) - (dummy-13 (_type_ int uint process-drawable uint) none 13) + (dummy-13 (_type_ bounding-box uint process-drawable uint) none 13) (dummy-14 (_type_ vector vector float int process int) none 14) - (dummy-15 (_type_ int) none 15) - (dummy-16 (_type_ vector float uint process uint) none 16) + (dummy-15 (_type_ collide-using-spheres-params) none 15) + (dummy-16 (_type_ vector float uint process-drawable uint) none 16) (initialize (_type_) none 17) (dummy-18 (_type_ vector vector float int collide-mesh-cache-tri int) float 18) (probe-using-spheres (_type_) none 19) (dummy-20 (_type_ vector float uint collide-tri-result uint) float 20) - (dummy-21 (_type_) none 21) + (dummy-21 (_type_ (function bsp-header int collide-list none) (function collide-cache none)) none 21) ;; second functiom is method 28 (dummy-22 (_type_) none 22) (dummy-23 (_type_) none 23) (dummy-24 (_type_) none 24) - (dummy-25 (_type_) none 25) + (dummy-25 (_type_ water-control) none 25) ;; or whatever is from 152 in the process passed to 16 (dummy-26 (_type_) none 26) (dummy-27 (_type_) none 27) (dummy-28 (_type_) none 28) - (dummy-29 (_type_) none 29) + (dummy-29 (_type_ collide-frag-mesh) none 29) (dummy-30 (_type_) none 30) - (dummy-31 (_type_) none 31) + (dummy-31 (_type_ collide-puyp-work collide-cache-prim) vector 31) (dummy-32 (_type_) none 32) ) ) @@ -12665,7 +12686,7 @@ (deftype instance-tie (instance) ((color-indices uint32 :offset 8) - (bucket-ptr basic :offset 12) + (bucket-ptr prototype-bucket-tie :offset 12) (max-scale uint16 :offset 38) (flags uint16 :offset 46) ) @@ -16171,11 +16192,11 @@ (define-extern texscroll-execute (function none)) (define-extern bones-set-sqwc function) (define-extern bones-reset-sqwc function) -(define-extern bones-init function) +(define-extern bones-init (function dma-buffer none)) ;; TODO - unconfirmed (define-extern draw-bones-mtx-calc function) (define-extern bones-mtx-calc function) (define-extern bones-mtx-calc-execute (function none)) -(define-extern bones-wrapup function) +(define-extern bones-wrapup (function none)) ;; TODO - unconfirmed (define-extern dump-qword function) (define-extern bones-debug function) (define-extern dump-bone-mem function) @@ -18216,31 +18237,31 @@ ;; - Functions -(define-extern misty-ambush-height function) -(define-extern distc function) -(define-extern interpolate function) -(define-extern collide-upload-vu0 function) -(define-extern collide-probe-instance-tie function) -(define-extern collide-probe-node function) -(define-extern indent-to function) -(define-extern probe-traverse-inline-array-node function) -(define-extern probe-traverse-draw-node function) -(define-extern creates-new-method? function) -(define-extern overrides-parent-method? function) -(define-extern describe-methods function) -(define-extern probe-traverse-collide-fragment function) -(define-extern print-out function) -(define-extern collide-probe-instance-tie-collide-frags function) -(define-extern collide-probe-collide-fragment-tree-make-list function) -(define-extern collide-probe-instance-tie-tree-make-list function) -(define-extern collide-probe-make-list function) -(define-extern misty-ambush-height-probe function) -(define-extern pke-collide-test function) +(define-extern misty-ambush-height (function vector float)) +(define-extern distc (function vector vector float)) +(define-extern interpolate (function float float float float float float)) +(define-extern collide-upload-vu0 (function none)) +(define-extern collide-probe-instance-tie (function drawable int object int int)) ;; drawable is probably an instance-tie? +(define-extern collide-probe-node (function drawable int int int)) +(define-extern indent-to (function int string)) +(define-extern probe-traverse-inline-array-node (function drawable-inline-array-node int none)) +(define-extern probe-traverse-draw-node (function draw-node int none)) +(define-extern creates-new-method? (function type int symbol)) +(define-extern overrides-parent-method? (function type type symbol)) +(define-extern describe-methods (function type symbol)) +(define-extern probe-traverse-collide-fragment (function collide-fragment int none)) +(define-extern print-out (function int object)) +(define-extern collide-probe-instance-tie-collide-frags (function none)) ;; does nothing +(define-extern collide-probe-collide-fragment-tree-make-list (function drawable-tree-collide-fragment int symbol)) +(define-extern collide-probe-instance-tie-tree-make-list (function drawable-tree-instance-tie int int)) +(define-extern collide-probe-make-list (function level collide-list none)) +(define-extern misty-ambush-height-probe (function vector float float)) +(define-extern pke-collide-test (function none)) ;; does nothing ;; - Unknowns -;;(define-extern collide-vu0-block object) ;; unknown type -;;(define-extern *collide-probe-stack* object) ;; unknown type +(define-extern collide-vu0-block vu-function) ;; unknown type +(define-extern *collide-probe-stack* pointer) ;; scratchpad pointer? ;; ---------------------- @@ -18251,7 +18272,7 @@ ;; - Functions -(define-extern sphere-cull (function vector symbol)) +(define-extern sphere-cull (function vector symbol)) ;; vf deps - vf16-19 ;; ---------------------- @@ -18298,14 +18319,14 @@ ;; - Types -; (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 -; ) +(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 + ) ;; ---------------------- @@ -18316,21 +18337,21 @@ ;; - Types -; (deftype pbhp-stack-vars (structure) -; ((edge collide-edge-edge :offset-assert 0) -; (allocated basic :offset-assert 4) -; (neg-hold-pt vector :inline :offset-assert 16) -; (split-vec vector :inline :offset-assert 32) -; ) -; :method-count-assert 9 -; :size-assert #x30 -; :flag-assert #x900000030 -; ) +(deftype pbhp-stack-vars (structure) + ((edge collide-edge-edge :offset-assert 0) + (allocated basic :offset-assert 4) + (neg-hold-pt vector :inline :offset-assert 16) + (split-vec vector :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) ;; - Unknowns -;;(define-extern *rotate-surface* object) ;; unknown type -;;(define-extern *no-walk-surface* object) ;; unknown type +(define-extern *rotate-surface* surface) ;; unknown type +(define-extern *no-walk-surface* surface) ;; unknown type ;; ---------------------- @@ -18341,18 +18362,18 @@ ;; - Functions -(define-extern target-attack-up (function target symbol symbol object)) ;; TODO - ret not confirmed -(define-extern find-ground-point function) +(define-extern target-attack-up (function target symbol symbol none)) +(define-extern find-ground-point (function control-info vector float float vector)) (define-extern default-collision-reaction (function collide-shape-moving collide-shape-intersect vector vector none)) ;; TODO - not completely confirmed -(define-extern simple-collision-reaction function) +(define-extern simple-collision-reaction (function collide-shape-moving collide-shape-intersect none)) (define-extern collide-shape-draw-debug-marks (function none)) -(define-extern debug-report-col-stats function) +(define-extern debug-report-col-stats (function int)) ;; - Unknowns -;;(define-extern *col-timer-enable* object) ;; unknown type -;;(define-extern *frame-timer* object) ;; unknown type -;;(define-extern *col-timer* object) ;; unknown type +(define-extern *col-timer-enable* symbol) ;; unknown type +(define-extern *frame-timer* stopwatch) ;; unknown type +(define-extern *col-timer* stopwatch) ;; unknown type (define-extern *race-track-surface* surface) @@ -18384,12 +18405,12 @@ ;; - Functions -(define-extern camera-bounding-box-draw (function bounding-box none)) -(define-extern collide-planes-test0 function) -(define-extern collide-planes-test1 function) +(define-extern camera-bounding-box-draw (function bounding-box basic rgba none)) +(define-extern collide-planes-test0 (function vector float float vector vector bounding-box vector float)) +(define-extern collide-planes-test1 (function vector float vector (inline-array vector) vector float)) (define-extern camera-cross (function vector vector vector vector4w meters basic)) -(define-extern collide-planes-intersect function) -(define-extern collide-planes function) +(define-extern collide-planes-intersect (function vector (inline-array bounding-box) vector float)) +(define-extern collide-planes (function (inline-array vector) int vector (inline-array vector) symbol)) ;; ---------------------- @@ -19521,7 +19542,7 @@ ;; - Functions -(define-extern line-in-view-frustum? (function vector vector symbol)) ;; TODO - not confirmed +(define-extern line-in-view-frustum? (function vector vector symbol)) (define-extern process-drawable-random-point! (function process-drawable vector vector)) (define-extern process-drawable-from-entity! (function process-drawable entity-actor none)) (define-extern cam-launcher-long-joystick (function vector :behavior camera-slave)) @@ -19727,11 +19748,11 @@ ;; - Functions -(define-extern collide-shape-moving-angle-set! function) -(define-extern target-collision-low-coverage function) -(define-extern poly-find-nearest-edge function) -(define-extern target-collision-reaction function) -(define-extern target-collision-no-reaction function) +(define-extern collide-shape-moving-angle-set! (function collide-shape-moving vector float none)) +(define-extern target-collision-low-coverage (function control-info collide-shape-intersect vector (pointer int) (pointer int) (pointer symbol) uint)) ;; i think the pointers are lies - TODO +(define-extern poly-find-nearest-edge (function vector (inline-array vector) vector vector vector)) +(define-extern target-collision-reaction (function control-info collide-shape-intersect vector vector none)) +(define-extern target-collision-no-reaction (function control-info collide-shape-intersect vector vector none)) ;; ---------------------- @@ -20235,26 +20256,26 @@ (define-extern deactivate-progress (function none)) (define-extern debug-init-buffer (function bucket-id gs-zbuf gs-test none)) (define-extern real-main-draw-hook (function none)) -(define-extern error-sphere function) -(define-extern draw-instance-info function) -(define-extern find-instance-by-name (function string instance)) ;; TODO - ret not verified -(define-extern prototype-bucket-type function) -(define-extern guard-band-cull (function vector symbol)) +(define-extern error-sphere (function drawable-error string none)) +(define-extern draw-instance-info (function string none)) ;; only passed *stdcon* +(define-extern find-instance-by-name (function string prototype-bucket)) +(define-extern prototype-bucket-type (function instance type)) +(define-extern guard-band-cull (function vector symbol)) ;; vf deps - 20-23 (define-extern find-instance-by-index function) -(define-extern prototype-bucket-recalc-fields (function instance none)) ;; TODO - ret not confirmed +(define-extern prototype-bucket-recalc-fields (function instance instance)) (define-extern dma-add-process-drawable-hud (function process-drawable draw-control symbol dma-buffer none)) (define-extern foreground-engine-execute (function engine display-frame int int none)) -(define-extern main-debug-hook function) +(define-extern main-debug-hook (function none)) (define-extern main-draw-hook (function none)) (define-extern swap-display (function display none)) -(define-extern marks-cam-restore function) -(define-extern eddie-cam-restore function) -(define-extern gregs-jungle-cam-restore function) -(define-extern gregs-village1-cam-restore function) -(define-extern gregs-texture-cam-restore function) -(define-extern gregs-texture2-cam-restore function) -(define-extern cave-cam-restore function) -(define-extern paals-cam-restore function) +(define-extern marks-cam-restore (function symbol)) +(define-extern eddie-cam-restore (function vector)) +(define-extern gregs-jungle-cam-restore (function string)) +(define-extern gregs-village1-cam-restore (function string)) +(define-extern gregs-texture-cam-restore (function string)) +(define-extern gregs-texture2-cam-restore (function string)) +(define-extern cave-cam-restore (function vector)) +(define-extern paals-cam-restore (function vector)) ;; - Symbols @@ -20376,32 +20397,32 @@ ;; - Types -; (deftype collide-puls-work (structure) -; ((ignore-pat uint32 :offset-assert 0) -; (tri-out collide-tri-result :offset-assert 4) -; (bsphere sphere :inline :offset-assert 16) -; (move-dist vector :inline :offset-assert 32) -; ) -; :method-count-assert 9 -; :size-assert #x30 -; :flag-assert #x900000030 -; ) +(deftype collide-puls-work (structure) + ((ignore-pat uint32 :offset-assert 0) + (tri-out collide-tri-result :offset-assert 4) + (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) -; (tri-out collide-tri-result :inline :offset-assert 16) -; ) -; :method-count-assert 9 -; :size-assert #x64 -; :flag-assert #x900000064 -; ) +(deftype lsmi-work (structure) + ((best-u float :offset-assert 0) + (orig-best-u float :offset-assert 4) + (action uint32 :offset-assert 8) + (tri-out collide-tri-result :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x64 + :flag-assert #x900000064 + ) ;; - Functions -(define-extern make-collide-list-using-line-sphere-inst-test function) -(define-extern test-closest-pt-in-triangle function) +(define-extern make-collide-list-using-line-sphere-inst-test (function collide-fragment instance-tie symbol)) +(define-extern test-closest-pt-in-triangle (function collide-cache symbol)) ;; - Unknowns @@ -20696,6 +20717,18 @@ ;; - Types +(defenum collectable-flags + :bitfield #t + :type uint32 + (trans 0) + (fade 1) + (can-collect 2) + (fading 3) + (suck 4) + (ignore-blue 5) + (anim 6) + ) + (deftype collectable (process-drawable) ((root-override collide-shape-moving :score 100 :offset 112) (pickup-type pickup-type :offset-assert 176) @@ -20705,39 +20738,42 @@ (base vector :inline :offset-assert 208) (extra-trans vector :inline :offset-assert 224) (jump-pos vector :inline :offset-assert 240) - (flags uint32 :offset-assert 256) - (birth-time uint64 :offset-assert 264) - (collect-timeout uint64 :offset-assert 272) - (fadeout-timeout uint64 :offset-assert 280) - (bob-offset uint64 :offset-assert 288) + (flags collectable-flags :offset-assert 256) + (birth-time int64 :offset-assert 264) + (collect-timeout int64 :offset-assert 272) + (fadeout-timeout int64 :offset-assert 280) + (bob-offset int64 :offset-assert 288) (bob-amount float :offset-assert 296) (pickup-handle handle :offset-assert 304) ;; not sure it's a handle (actor-pause symbol :offset-assert 312) ) - (:methods - (TODO-RENAME-20 (_type_) _type_ 20) - (dummy-21 (_type_ uint float) none 21) ;; TODO - weird math issue - ) :heap-base #xd0 - :method-count-assert 22 :size-assert #x13c :flag-assert #x1600d0013c + (:methods + (initialize (_type_) _type_ 20) + (initialize-params (_type_ int float) none 21) + ) ) (deftype eco-collectable (collectable) ((eco-effect sparticle-launch-group :offset-assert 316) (collect-effect sparticle-launch-group :offset-assert 320) (collect-effect2 sparticle-launch-group :offset-assert 324) - (collect-effect-time uint64 :offset-assert 328) - (respawn-delay uint64 :offset-assert 336) - (sound-name sound-spec :offset-assert 344) + (collect-effect-time seconds :offset-assert 328) + (respawn-delay int64 :offset-assert 336) + (sound-name sound-spec :offset-assert 344) (target handle :offset-assert 352) - (suck-time uint64 :offset-assert 360) + (suck-time int64 :offset-assert 360) (suck-y-offset float :offset-assert 368) (speed vector :inline :offset-assert 384) (movie-pos-index int32 :offset-assert 400) ) + :heap-base #x130 + :method-count-assert 31 + :size-assert #x194 + :flag-assert #x1f01300194 (:methods (wait () _type_ :state 22) ;; state (pickup (object handle) _type_ :state 23) ;; state @@ -20745,14 +20781,10 @@ (jump () _type_ :state 25) (notice-blue (handle) _type_ :state 26) ;; state (get-pickup-sound (_type_ pickup-type) ambient-sound 27) - (dummy-28 (_type_ res-lump pickup-type float) object 28) - (update-sound! (_type_) none 29) ;; something to do with particles too + (initialize-eco (_type_ entity-actor pickup-type float) object 28) + (animate (_type_) none 29) (blocked () _type_ :state 30) ) - :heap-base #x130 - :method-count-assert 31 - :size-assert #x194 - :flag-assert #x1f01300194 ) (deftype eco (eco-collectable) @@ -20813,7 +20845,8 @@ (deftype fuel-cell (eco-collectable) ((victory-anim spool-anim :offset-assert 404) - (state-object symbol :offset-assert 408)) + (state-object symbol :offset-assert 408) + ) :heap-base #x130 :method-count-assert 31 :size-assert #x19c @@ -20821,19 +20854,21 @@ ) (deftype buzzer (eco-collectable) - ((victory-anim spool-anim :offset-assert 404)) - + ((victory-anim spool-anim :offset-assert 404) + ) :heap-base #x130 :method-count-assert 31 :size-assert #x198 :flag-assert #x1f01300198 ) +(declare-type vent process-drawable) (deftype ecovalve (process-drawable) ((root-override collide-shape-moving :score 100 :offset 112) (offset vector :inline :offset-assert 176) (offset-target vector :inline :offset-assert 192) - (block-func (function ecovalve symbol) :offset-assert 208)) + (block-func (function vent symbol) :offset-assert 208) + ) :heap-base #x70 :method-count-assert 20 :size-assert #xd4 @@ -20848,16 +20883,20 @@ (collect-effect-time uint64 :offset-assert 192) (blocker entity-actor :offset-assert 200) (block-func (function vent symbol) :offset-assert 204) - (pickup-handle handle :offset-assert 208)) ;; not sure handle - - (:methods - (dummy-20 (_type_ res-lump pickup-type) none 20) - ) - + (pickup-handle handle :offset-assert 208) + ) :heap-base #x70 :method-count-assert 21 :size-assert #xd8 :flag-assert #x15007000d8 + (:methods + (initialize (_type_ entity-actor pickup-type) none 20) + ) + (:states + vent-blocked + vent-wait-for-touch + (vent-pickup handle) + ) ) (deftype ventyellow (vent) @@ -20896,12 +20935,12 @@ (define-extern vent-standard-event-handler (function process int symbol event-message-block object :behavior vent)) (define-extern ecovalve-init-by-other (function (function vent symbol) none :behavior ecovalve)) -(define-extern birth-pickup-at-point (function vector int float symbol process-drawable fact-info (pointer process))) +(define-extern birth-pickup-at-point (function vector pickup-type float symbol process-drawable fact-info (pointer process) :behavior process)) (define-extern fuel-cell-pick-anim (function process-drawable spool-anim)) (define-extern othercam-init-by-other (function process-taskable symbol symbol symbol none :behavior othercam)) (define-extern fuel-cell-animate (function none :behavior fuel-cell)) -(define-extern add-blue-motion (function symbol symbol symbol symbol symbol :behavior eco-blue)) -(define-extern check-blue-suck (function eco-blue uint :behavior eco-blue)) +(define-extern add-blue-motion (function symbol symbol symbol symbol symbol :behavior eco-collectable)) +(define-extern check-blue-suck (function process-drawable none :behavior eco-collectable)) (define-extern initialize-eco-by-other (function vector vector fact-info none :behavior eco)) (define-extern add-blue-shake (function vector vector vector vector)) (define-extern money-init-by-other (function vector vector fact-info entity none :behavior money)) @@ -20912,17 +20951,14 @@ ;; - Symbols -(define-extern vent-wait-for-touch (state vent)) ;; unknown type -(define-extern vent-pickup (state handle vent)) ;; unknown type -(define-extern vent-blocked (state vent)) ;; unknown type -(define-extern *ecovalve-sg* skeleton-group) ;; unknown type -(define-extern ecovalve-idle (state ecovalve)) ;; unknown type -(define-extern *eco-pill-count* int) ;; unknown type -(define-extern *buzzer-sg* skeleton-group) ;; unknown type -(define-extern fuel-cell-clone-anim (state handle fuel-cell)) ;; unknown type -(define-extern *fuel-cell-tune-pos* vector) ;; unknown type -(define-extern *fuel-cell-sg* skeleton-group) ;; unknown type -(define-extern *money-sg* skeleton-group) ;; unknown type +(define-extern *ecovalve-sg* skeleton-group) +(define-extern ecovalve-idle (state ecovalve)) +(define-extern *eco-pill-count* int) +(define-extern *buzzer-sg* skeleton-group) +(define-extern fuel-cell-clone-anim (state handle fuel-cell)) +(define-extern *fuel-cell-tune-pos* vector) +(define-extern *fuel-cell-sg* skeleton-group) +(define-extern *money-sg* skeleton-group) ;; ---------------------- @@ -20984,7 +21020,7 @@ ;; - Unknowns -(define-extern othercam-running (state othercam)) ;; unknown type +(define-extern othercam-running (state othercam)) ;; ---------------------- @@ -21007,7 +21043,7 @@ ;; - Functions (define-extern eco-blue-glow (function vector none)) -(define-extern cloud-track (function process-tree process-tree (function vector none) int int int symbol)) +(define-extern cloud-track (function process-tree process-tree (function vector none) int int int none :behavior process)) ;; ---------------------- @@ -21105,7 +21141,7 @@ (define-extern *crate-barrel-sg* skeleton-group) (define-extern *crate-bucket-sg* skeleton-group) (define-extern *crate-wood-sg* skeleton-group) -(define-extern *CRATE-bank* crate-bank) ;; unknown type +(define-extern *CRATE-bank* crate-bank) ;; ---------------------- @@ -21121,7 +21157,7 @@ ;; - Symbols -(define-extern hud-arriving (state hud)) ;; unknown type +(define-extern hud-arriving (state hud)) ;; - Unknowns @@ -21415,7 +21451,7 @@ ;; - Unknowns -(define-extern *search-info* search-info) ;; unknown type +(define-extern *search-info* search-info) ;; ---------------------- @@ -21447,7 +21483,7 @@ ;; - Unknowns -(define-extern *swamp-low-ocean-marker* vector) ;; unknown type +(define-extern *swamp-low-ocean-marker* vector) ;; ---------------------- @@ -22800,7 +22836,7 @@ (define-extern nav-enemy-rnd-percent? (function float symbol)) (define-extern nav-enemy-default-event-handler (function process int symbol event-message-block none :behavior nav-enemy)) ;; TODO - last arg is definitely a vector...but also not? (define-extern nav-enemy-jump-event-handler (function process int symbol event-message-block object :behavior nav-enemy)) -(define-extern process-drawable-death-event-handler (function process int symbol event-message-block uint :behavior process-drawable)) ;; First two args are unused +(define-extern process-drawable-death-event-handler (function process int symbol event-message-block none :behavior process-drawable)) ;; First two args are unused (define-extern nav-enemy-patrol-post (function none :behavior nav-enemy)) (define-extern nav-enemy-chase-post (function none :behavior nav-enemy)) (define-extern nav-enemy-flee-post (function none :behavior nav-enemy)) diff --git a/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc b/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc index 0ef550b1f3..128da81a78 100644 --- a/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc @@ -848,9 +848,13 @@ [12, "(function symbol)"], [13, "(function symbol)"], [14, "(function vent symbol)"], - [38, "(function int none :behavior collectable)"], + [38, "(function game-task none :behavior collectable)"], [69, "(function part-tracker vector)"] ], + "collide-edge-grab": [ + [0, "(function surface object object int float)"] + ], + "placeholder-do-not-add-below": [] } diff --git a/decompiler/config/jak1_ntsc_black_label/hacks.jsonc b/decompiler/config/jak1_ntsc_black_label/hacks.jsonc index 92410b7190..f2d11b8e17 100644 --- a/decompiler/config/jak1_ntsc_black_label/hacks.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/hacks.jsonc @@ -234,46 +234,29 @@ "draw-boundary-polygon", // collide-probe - "collide-probe-instance-tie", - "collide-probe-node", - - // collide-mesh - "(method 10 collide-mesh)", - "(method 13 collide-mesh)", - "(method 9 collide-mesh-cache)", - "(method 15 collide-mesh)", - "(method 14 collide-mesh)", - "(method 11 collide-mesh)", - "(method 12 collide-mesh)", + "collide-probe-instance-tie", // CFG + "collide-probe-node", // CFG // collide-edge-grab - "(method 13 collide-edge-work)", - "(method 17 collide-edge-work)", - "(method 15 collide-edge-work)", - "(method 16 collide-edge-work)", - "(method 9 edge-grab-info)", // maybe bug - "(method 18 collide-edge-work)", - "(method 10 collide-edge-hold-list)", + "(method 13 collide-edge-work)", // CFG + "(method 17 collide-edge-work)", // CFG + "(method 15 collide-edge-work)", // CFG + "(method 16 collide-edge-work)", // CFG + "(method 9 edge-grab-info)", // CFG + "(method 18 collide-edge-work)", // CFG + "(method 10 collide-edge-hold-list)", // CFG // collide-shape - "(method 15 collide-shape-prim-mesh)", // BUG: - "(method 15 collide-shape-prim-sphere)", // BUG: - "(method 16 collide-shape-prim)", - "(method 15 collide-shape-prim-group)", - "(method 45 collide-shape)", - "(method 28 collide-shape-prim-mesh)", // BUG: - "(method 29 collide-shape-prim-group)", - "(method 20 collide-shape-prim-group)", - "(method 19 collide-shape-prim-sphere)", + "(method 15 collide-shape-prim-mesh)", // CFG + "(method 15 collide-shape-prim-sphere)", // CFG + "(method 16 collide-shape-prim)", // CFG + "(method 15 collide-shape-prim-group)", // CFG "(method 18 collide-shape-prim-sphere)", - "(method 23 collide-shape-prim-sphere)", - "(method 23 collide-shape-prim-mesh)", // BUG: maybe - "(method 24 collide-shape-prim)", - "(method 23 collide-shape-prim-group)", - "(method 42 collide-shape)", - - // collide-shape-rider - "(method 35 collide-shape)", + "(method 23 collide-shape-prim-sphere)", // CFG + "(method 23 collide-shape-prim-mesh)", // BUG - crash in variable pass + "(method 24 collide-shape-prim)", // CFG + "(method 23 collide-shape-prim-group)", // CFG + "(method 42 collide-shape)", // CFG // process-drawable BUG "cspace-inspect-tree", @@ -294,28 +277,24 @@ "(method 16 drawable-tree)", // collide-cache - "(method 10 collide-puss-work)", - "(method 9 collide-puss-work)", - "(method 19 collide-cache)", - "(method 10 collide-cache-prim)", - "(method 9 collide-cache-prim)", - "(method 30 collide-cache)", - "(method 13 collide-shape-prim-group)", - "(method 13 collide-shape-prim-sphere)", - "(method 13 collide-shape-prim-mesh)", - "(method 14 collide-shape-prim-group)", - "(method 14 collide-shape-prim-sphere)", - "(method 14 collide-shape-prim-mesh)", - "(method 12 collide-shape-prim-group)", // BUG: maybe - "(method 12 collide-shape-prim-sphere)", - "(method 12 collide-shape-prim-mesh)", - "(method 29 collide-cache)", - "(method 27 collide-cache)", - "(method 14 collide-cache)", - "(method 28 collide-cache)", - "(method 26 collide-cache)", - "(method 21 collide-cache)", - "(method 32 collide-cache)", + "(method 10 collide-puss-work)", // CFG + "(method 9 collide-puss-work)", // decompiler crash + "(method 19 collide-cache)", // decompiler crash + "(method 10 collide-cache-prim)", // CFG + "(method 9 collide-cache-prim)", // CFG + "(method 30 collide-cache)", // unsupported asm - c.le.s + "(method 13 collide-shape-prim-group)", // CFG + "(method 13 collide-shape-prim-mesh)", // CFG + "(method 14 collide-shape-prim-group)", // CFG + "(method 14 collide-shape-prim-mesh)", // CFG + "(method 12 collide-shape-prim-group)", // CFG + "(method 12 collide-shape-prim-mesh)", // CFG + "(method 27 collide-cache)", // CFG + "(method 14 collide-cache)", // CFG + "(method 28 collide-cache)", // CFG + "(method 26 collide-cache)", // CFG + "(method 21 collide-cache)", // CFG + "(method 32 collide-cache)", // CFG // memory-usage BUG //"(method 14 level)", @@ -427,7 +406,8 @@ " misc ~192H~5DK ~280Hsprite~456H~5DK~%": 2, "ERROR: ~A in spool anim loop for ~A ~D, but not loaded.~": 3, "~0k~5d/~d ~6d/~d ~6d/~d ": 6, - "~0k~s~%": 1 + "~0k~s~%": 1, + "money ~A was killed in pickup~%": 0 }, "blocks_ending_in_asm_branch": { @@ -504,7 +484,9 @@ "draw-drawable-tree-tfrag": [6, 8, 13, 15], "draw-drawable-tree-trans-tfrag": [6, 8, 13, 15], "draw-drawable-tree-dirt-tfrag": [6, 8, 13, 15], - "draw-drawable-tree-ice-tfrag": [6, 8, 13, 15] + "draw-drawable-tree-ice-tfrag": [6, 8, 13, 15], + + "birth-pickup-at-point": [0] }, // Sometimes the game might use format strings that are fetched dynamically, diff --git a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc index 6c805b792b..ac53a2ff1b 100644 --- a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc @@ -1289,7 +1289,7 @@ ["L660", "float", true], ["L661", "float", true], ["L662", "float", true], - ["L663", "(pointer float)", 1], + ["L663", "float", true], ["L664", "uint64", true], ["L666", "uint64", true], ["L665", "uint64", true], @@ -1447,6 +1447,46 @@ ["L51", "attack-info"] ], + "collide-shape": [ + ["L399", "attack-info"], + ["L408", "vector"], + ["L410", "vector"], + ["L411", "vector"], + ["L413", "attack-info"], + ["L414", "attack-info"], + ["L415", "attack-info"], + ["L416", "attack-info"], + ["L417", "attack-info"], + ["L418", "attack-info"], + ["L419", "attack-info"], + ["L420", "vector"], + ["L421", "vector"] + ], + + "collide-planes": [ + ["L53", "vector4w"], + ["L54", "vector4w"], + ["L55", "vector4w"], + ["L56", "vector4w"], + ["L57", "vector4w"], + ["L58", "vector4w"], + ["L59", "vector4w"], + ["L60", "vector4w"], + ["L63", "vector4w"], + ["L64", "vector4w"], + ["L65", "vector4w"], + ["L66", "vector4w"] + ], + + "collide-probe": [ + ["L100", "vector"], + ["L102", "vector"] + ], + + "collide-cache": [ + ["L304", "vector"] + ], + // please do not add things after this entry! git is dumb. "object-file-that-doesnt-actually-exist-and-i-just-put-this-here-to-prevent-merge-conflicts-with-this-file": [] } diff --git a/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc b/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc index ead8ed0d18..fa0267d56c 100644 --- a/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc @@ -745,13 +745,6 @@ "(anon-function 9 plat-eco)": [[16, "event-message-block"]], - "default-collision-reaction": [ - [16, "vector"], - [32, "vector"], - [48, "vector"], - [96, "vector"] - ], - "(trans plat-button-move-downward sunken-elevator)": [ [16, "vector"], [32, "vector"], @@ -4133,5 +4126,300 @@ [32, "event-message-block"] ], + "(method 12 touching-list)": [ + [16, "event-message-block"] + ], + + "(method 9 touching-list)": [ + [16, "touching-shapes-entry"] + ], + + "(method 11 touching-prims-entry)": [ + [16, "vector"] + ], + + "(method 35 collide-shape)": [ + [16, "pull-rider-info"], + [128, "matrix"], + [192, "event-message-block"], + [272, "collide-overlap-result"], + [384, "matrix"], + [448, "collide-overlap-result"], + [560, "matrix"], + [624, "collide-overlap-result"], + [736, "matrix"] + ], + + "(method 44 collide-shape)": [ + [16, "pull-rider-info"] + ], + + "(method 12 collide-mesh)": [ + [16, "matrix"] + ], + + "target-attack-up": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "event-message-block"] + ], + + "(method 30 collide-shape)": [ + [16, "vector"] + ], + + "(method 32 collide-shape)": [ + [16, "bounding-box"] + ], + + "(method 33 collide-shape)": [ + [16, "vector"] + ], + + "(method 57 collide-shape-moving)": [ + [16, "vector"] + ], + + "(method 60 collide-shape-moving)": [ + [16, "vector"], + [32, "collide-tri-result"] + ], + + "(method 59 collide-shape-moving)": [ + [16, "collide-mesh-cache-tri"], + [112, "touching-shapes-entry"] + ], + + "(method 58 collide-shape-moving)": [ + [16, "touching-shapes-entry"] + ], + + "simple-collision-reaction": [ + [16, "vector"], + [32, "vector"] + ], + + "(method 62 collide-shape-moving)": [ + [16, "vector"], + [32, "vector"] + ], + + "default-collision-reaction": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [96, "vector"], + [112, "vector"], + [144, "vector"] + ], + + "(method 56 collide-shape-moving)": [ + [16, "event-message-block"] + ], + + "(method 63 collide-shape-moving)": [ + [16, "collide-shape-intersect"], + [160, "vector"], + [176, "vector"] + ], + + "(method 37 control-info)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "vector"], + [96, "vector"], + [112, "vector"], + [128, "vector"] + ], + + "(method 55 collide-shape)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "event-message-block"] + ], + + "(method 41 collide-shape)": [ + [16, "vector"], + [32, "vector"] + ], + + "(method 45 collide-shape)": [ + [16, "collide-work"], + [128, "vector"], + [144, "vector"], + [160, "collide-work"], + [272, "vector"], + [288, "vector"], + [304, "collide-work"], + [416, "vector"], + [432, "vector"], + [448, "collide-work"], + [560, "vector"], + [576, "vector"] + ], + + "collide-planes": [ + [16, "bounding-box"], + [48, ["inline-array", "vector", 18]], + [336, ["inline-array", "bounding-box", 18]], + [928, "vector"], + [944, "vector"], + [960, "vector"], + [976, "vector"], + [992, "vector"], + [1008, "vector"], + [1024, "vector"], + [1040, "vector"], + [1056, "vector"], + [1072, "vector"] + ], + + "dma-add-process-drawable": [ + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + + "marks-cam-restore": [ + [16, "vector"], + [32, "matrix"], + [96, "event-message-block"] + ], + + "gregs-village1-cam-restore": [ + [16, "vector"], + [32, "matrix"], + [96, "event-message-block"] + ], + + "gregs-texture-cam-restore": [ + [16, "vector"], + [32, "matrix"], + [96, "event-message-block"] + ], + + "gregs-texture2-cam-restore": [ + [16, "vector"], + [32, "matrix"], + [96, "event-message-block"] + ], + + "gregs-jungle-cam-restore": [ + [16, "vector"], + [32, "matrix"], + [96, "event-message-block"] + ], + + "eddie-cam-restore": [ + [16, "vector"], + [32, "matrix"] + ], + + "cave-cam-restore": [ + [16, "vector"], + [32, "matrix"] + ], + + "paals-cam-restore": [ + [16, "vector"], + [32, "matrix"] + ], + + "(method 20 target)": [ + [16, "event-message-block"] + ], + + "(method 19 collide-edge-work)": [ + [16, "vector"], + [32, "vector"], + [48, "collide-using-spheres-params"], + [80, "matrix"] + ], + + "(method 14 collide-edge-work)": [ + [16, "vector"] + ], + + "(method 10 collide-edge-work)": [ + [16, "vector"] + ], + + "(method 9 collide-edge-hold-list)": [ + [16, "vector"] + ], + + "collide-shape-moving-angle-set!": [ + [16, "vector"] + ], + + "poly-find-nearest-edge": [ + [16, "vector"], + [64, "vector"] + ], + + "target-collision-reaction": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [112, "vector"], + [128, "vector"], + [144, "vector"], + [176, "vector"], + [192, "vector"], + [208, "vector"] + ], + + "(method 31 collide-cache)": [ + [16, "vector"], + [32, "vector"] + ], + + "(method 43 collide-shape)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"], + [80, "event-message-block"] + ], + + "(method 15 collide-cache)": [ + [16, "bounding-box"] + ], + + "test-closest-pt-in-triangle": [ + [16, "vector"], + [32, "vector"], + [48, "vector"], + [64, "vector"] + ], + + "(method 9 collide-mesh)": [ + [16, "vector"], + [32, "vector"], + [48, "vector"] + ], + + "(method 10 collide-mesh)": [ + [16, "matrix"] + ], + + "(method 22 collide-shape-prim-mesh)": [ + [16, "collide-tri-result"] + ], + + "find-ground-point": [ + [16, "vector"], + [32, "collide-mesh-cache-tri"], + [128, "bounding-box"], + [160, "vector"] + ], + + "(method 19 collide-shape-prim-sphere)": [[16, "collide-mesh-cache-tri"]], + "(method 37 collide-shape)": [[16, "vector"]], + "placeholder-do-not-add-below!": [] } diff --git a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc index ccdf8dab4d..9d396c27df 100644 --- a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc @@ -5100,7 +5100,7 @@ "(trans manipy-idle)": [ [57, "v1", "process-drawable"], - [66, "a0", "collide-shape"] + [[66, 73], "a0", "collide-shape"] ], "(method 14 camera-tracker)": [ @@ -5518,7 +5518,8 @@ ], "(event pickup eco-collectable)": [ - [18, "a0", "vector"] + [18, "a0", "vector"], + [[15, 21], "v1", "vector"] ], "(event fuel-cell-clone-anim)": [ @@ -5549,6 +5550,7 @@ "(anon-function 69 collectables)": [ [2, "v1", "handle"], [5, "v1", "handle"], + [8, "v1", "handle"], [13, "s5", "eco-collectable"], [33, "v1", "target"], [38, "v1", "target"], @@ -5608,5 +5610,263 @@ [92, "v0", "(pointer float)"] ], + "(method 21 collectable)": [ + [20, "v1", "int"], + [20, "a0", "int"], + [24, "a0", "int"] + ], + + "check-blue-suck": [ + [25, "v1", "collide-shape"] + ], + + "(code die eco)": [ + [53, "v1", "float"] + ], + + "(trans pickup fuel-cell)": [ + [92, "v1", "float"] + ], + + "(enter notice-blue eco-collectable)": [ + [13, "v1", "float"] + ], + + "(code pickup fuel-cell)": [ + ["_stack_", 96, "res-tag"], + [[131, 143], "v1", "(inline-array vector)"], + [438, "a0", "game-task"], + [456, "a0", "game-task"], + [474, "a0", "game-task"], + [492, "a0", "game-task"], + [509, "v1", "game-task"], + [513, "v1", "game-task"], + [517, "v1", "game-task"], + [521, "v1", "game-task"] + ], + + "(method 11 eco)": [ + [13, "v0", "pickup-type"] + ], + + "target-powerup-process": [ + [[200, 215], "v1", "sound-rpc-set-param"] + ], + + "(method 14 touching-list)": [ + [5, "s5", "touching-shapes-entry"], + [10, "s5", "touching-shapes-entry"] + ], + + "(method 13 touching-list)": [ + [5, "v0", "touching-shapes-entry"], + [10, "v0", "touching-shapes-entry"], + [17, "v0", "touching-shapes-entry"], + [26, "v0", "touching-shapes-entry"], + [46, "v0", "touching-shapes-entry"], + [47, "v0", "touching-shapes-entry"], + [48, "v0", "touching-shapes-entry"], + [50, "v0", "touching-shapes-entry"] + ], + + "(method 11 touching-list)": [ + [8, "s5", "touching-shapes-entry"], + [10, "s5", "touching-shapes-entry"], + [11, "s5", "touching-shapes-entry"], + [13, "s5", "touching-shapes-entry"], + [32, "s5", "touching-shapes-entry"], + [47, "s5", "touching-shapes-entry"], + [49, "s5", "touching-shapes-entry"], + [51, "s5", "touching-shapes-entry"] + ], + + "(method 12 touching-list)": [ + [4, "gp", "touching-shapes-entry"], + [6, "gp", "touching-shapes-entry"], + [67, "gp", "touching-shapes-entry"] + ], + + "(method 35 collide-shape)": [ + [23, "v1", "connection"], + [24, "s2", "collide-shape"], + [33, "s2", "collide-shape"], + [48, "s2", "collide-shape"], + [62, "v1", "process-drawable"], + [80, "s2", "collide-shape"], + [117, "v1", "connection"], + [118, "s2", "collide-shape"], + [127, "s2", "collide-shape"], + [142, "s2", "collide-shape"], + [174, "s2", "collide-shape"], + [209, "v1", "connection"], + [210, "s2", "collide-shape"], + [219, "s2", "collide-shape"], + [234, "s2", "collide-shape"], + [266, "s2", "collide-shape"], + [301, "v1", "connection"], + [302, "s2", "collide-shape"], + [311, "s2", "collide-shape"], + [326, "s2", "collide-shape"], + [358, "s2", "collide-shape"] + ], + + "(method 56 collide-shape-moving)": [ + [89, "v1", "target"] + ], + + "(method 20 collide-shape-prim-group)": [ + [40, "a0", "collide-shape-prim-group"] + ], + + "(method 25 collide-shape-prim)": [ + [43, "gp", "collide-shape-prim-group"], + [47, "gp", "collide-shape-prim-group"] + ], + + "(method 29 collide-shape-prim-group)": [ + [13, "a0", "collide-shape-prim-group"] + ], + + "(method 28 collide-shape-prim-mesh)": [ + [27, "s4", "collide-shape-prim-group"] + ], + + "(method 53 collide-shape)": [ + [26, "a1", "collide-shape-prim-group"], + [36, "v1", "collide-shape-prim-group"] + ], + + "(method 54 collide-shape)": [ + [22, "a1", "collide-shape-prim-group"], + [29, "v1", "collide-shape-prim-group"] + ], + + "(method 45 collide-shape)": [ + [18, "v1", "connection"], + [[19, 146], "s3", "collide-shape-moving"], + [146, "v1", "connection"], + [[147, 272], "s3", "collide-shape-moving"], + [272, "v1", "connection"], + [[273, 398], "s3", "collide-shape-moving"], + [398, "v1", "connection"], + [[399, 497], "s3", "collide-shape-moving"] + ], + + "(method 55 collide-shape)": [ + [33, "s5", "process-drawable"], + [54, "s5", "process-drawable"], + [59, "s5", "process-drawable"], + [68, "s5", "process-drawable"] + ], + + "collide-shape-draw-debug-marks": [ + [24, "v1", "connection"], + [[33, 55], "s5", "collide-shape"], + [72, "v1", "connection"], + [[81, 103], "s5", "collide-shape"], + [120, "v1", "connection"], + [[129, 151], "s5", "collide-shape"], + [168, "v1", "connection"], + [[177, 199], "s5", "collide-shape"] + ], + + "(method 9 collide-edge-work)": [ + [10, "s3", "collide-edge-edge"], + [16, "s4", "collide-edge-hold-item"], + [46, "s4", "(inline-array collide-edge-hold-item)"], + [48, "s3", "(inline-array collide-edge-edge)"] + ], + + "(method 19 collide-edge-work)": [ + [150, "a1", "int"], + [150, "v1", "int"], + [[149, 162], "a0", "collide-shape-prim-group"] + ], + + "collide-probe-make-list": [ + [18, "v1", "drawable-group"], + [29, "v1", "drawable-group"], + [45, "v1", "drawable-group"] + ], + + "(method 11 instance-tie)": [ + [28, "s1", "collide-fragment"], + [38, "s1", "collide-fragment"], + [45, "s1", "(inline-array collide-fragment)"] + ], + + "(method 12 instance-tie)": [ + [21, "s1", "collide-fragment"], + [31, "s1", "collide-fragment"], + [38, "s1", "(inline-array collide-fragment)"] + ], + + "(method 13 instance-tie)": [ + [21, "s1", "collide-fragment"], + [29, "s1", "collide-fragment"], + [36, "s1", "(inline-array collide-fragment)"] + ], + + "(method 20 collide-cache)": [ + [18, "s2", "collide-cache-prim"], + [23, "s2", "collide-cache-prim"], + [27, "s2", "collide-cache-prim"], + [33, "s2", "collide-cache-prim"], + [37, "s2", "collide-cache-prim"], + [38, "v1", "collide-shape-prim-sphere"], // could be sphere or mesh...? + [45, "s2", "collide-cache-prim"], + [48, "s2", "(inline-array collide-cache-prim)"] + ], + + "test-closest-pt-in-triangle": [ + [19, "s5", "collide-cache-tri"], + [20, "s5", "collide-cache-tri"], + [21, "s5", "collide-cache-tri"], + [26, "s5", "collide-cache-tri"], + [47, "s5", "collide-cache-tri"], + [48, "s5", "(inline-array collide-cache-tri)"] + ], + + "(method 9 collide-cache)": [ + [5, "gp", "collide-cache-tri"], + [19, "gp", "collide-cache-tri"], + [20, "gp", "collide-cache-tri"], + [21, "gp", "collide-cache-tri"], + [23, "gp", "(inline-array collide-cache-tri)"], + [33, "gp", "collide-cache-prim"], + [35, "gp", "collide-cache-prim"], + [50, "gp", "collide-cache-prim"], + [51, "gp", "collide-cache-prim"], + [55, "gp", "(inline-array collide-cache-prim)"] + ], + + "(method 9 collide-mesh)": [ + [[17, 62], "s5", "collide-mesh-tri"], + [62, "s5", "(inline-array collide-mesh-tri)"] + ], + + "(method 22 collide-shape-prim-mesh)": [ + [10, "s4", "collide-shape-prim-group"] + ], + + "(method 44 collide-shape)": [ + [26, "a0", "process-drawable"] + ], + + "(method 43 collide-shape)": [ + [58, "gp", "collide-shape-moving"], + [88, "gp", "collide-shape-moving"] + ], + + "find-instance-by-name": [ + [21, "v1", "drawable-tree-instance-shrub"], + [48, "v1", "drawable-tree-instance-tie"] + ], + + "(method 63 collide-shape-moving)": [ + [[33, 53], "s0", "collide-cache-prim"], + [53, "s0", "(inline-array collide-cache-prim)"] + ], + "placeholder-do-not-add-below": [] } diff --git a/decompiler/config/jak1_ntsc_black_label/var_names.jsonc b/decompiler/config/jak1_ntsc_black_label/var_names.jsonc index 02e46fbda7..7f06f7ff70 100644 --- a/decompiler/config/jak1_ntsc_black_label/var_names.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/var_names.jsonc @@ -3693,5 +3693,42 @@ } }, + "(code pickup fuel-cell)": { + "vars": { + "v1-34": ["v1-34", "(inline-array vector)"] + } + }, + + "(method 11 eco)": { + "vars": { + "v1-2": ["v1-2", "pickup-type"] + } + }, + + "(method 9 fact-info)": { + "vars": { + "s3-0": ["s3-0", "pickup-type"] + } + }, + + "(event pickup eco-collectable)": { + "vars": { + "v0-1": ["v0-1", "symbol"] + } + }, + + "cloud-track": { + "vars": { + "s1-1": ["s1-1", "handle"], + "s2-1": ["s2-1", "handle"] + } + }, + + "(method 63 collide-shape-moving)": { + "vars": { + "s0-0": ["s0-0", "collide-cache-prim"] + } + }, + "aaaaaaaaaaaaaaaaaaaaaaa": {} } diff --git a/decompiler/util/data_decompile.cpp b/decompiler/util/data_decompile.cpp index 90a85f089f..af4531a9dc 100644 --- a/decompiler/util/data_decompile.cpp +++ b/decompiler/util/data_decompile.cpp @@ -1010,7 +1010,13 @@ goos::Object decompile_value(const TypeSpec& type, float value; memcpy(&value, bytes.data(), 4); double meters = (double)value / METER_LENGTH; - return pretty_print::build_list("meters", pretty_print::float_representation(meters)); + auto rep = pretty_print::float_representation(meters); + if (rep.print().find("the-as") != std::string::npos) { + return rep; + // return pretty_print::build_list("the-as", "meters", rep); + } else { + return pretty_print::build_list("meters", rep); + } } else if (type == TypeSpec("degrees")) { assert(bytes.size() == 4); float value; diff --git a/game/fake_iso.txt b/game/fake_iso.txt index c52975415d..4f41203d1d 100644 --- a/game/fake_iso.txt +++ b/game/fake_iso.txt @@ -25,4 +25,15 @@ FIN.DGO out/iso/FIN.DGO FIC.DGO out/iso/FIC.DGO JUN.DGO out/iso/JUN.DGO MAI.DGO out/iso/MAI.DGO -BEA.DGO out/iso/BEA.DGO \ No newline at end of file +BEA.DGO out/iso/BEA.DGO +CIT.DGO out/iso/CIT.DGO +FUCVICTO.STR out/iso/FUCVICTO.STR +FUCV2.STR out/iso/FUCV2.STR +FUCV3.STR out/iso/FUCV3.STR +FUCV4.STR out/iso/FUCV4.STR +FUCV5.STR out/iso/FUCV5.STR +FUCV6.STR out/iso/FUCV6.STR +FUCV7.STR out/iso/FUCV7.STR +FUCV8.STR out/iso/FUCV8.STR +FUCFV1.STR out/iso/FUCFV1.STR +FUCRV1.STR out/iso/FUCRV1.STR diff --git a/game/kernel/kmachine.h b/game/kernel/kmachine.h index b78a1e00a1..1c2b894530 100644 --- a/game/kernel/kmachine.h +++ b/game/kernel/kmachine.h @@ -18,7 +18,7 @@ constexpr u32 DEBUG_HEAP_SPACE_FOR_STACK = 0x10000; constexpr u32 HEAP_START = 0x13fd20; //! Where to end the global heap so it doesn't overlap with the stack. -constexpr u32 GLOBAL_HEAP_END = 0x1ffc000; +constexpr u32 GLOBAL_HEAP_END = 0x1ffc000 + (0x1ffc000 - HEAP_START); // doubled //! Location of kglobalheap, kdebugheap kheapinfo structures. constexpr u32 GLOBAL_HEAP_INFO_ADDR = 0x13AD00; @@ -128,4 +128,4 @@ struct FileStream { // static_assert(offsetof(CpadInfo, new_pad) == 76, "cpad type offset"); void vif_interrupt_callback(); -u32 offset_of_s7(); \ No newline at end of file +u32 offset_of_s7(); diff --git a/game/overlord/stream.cpp b/game/overlord/stream.cpp index d14cec902e..827aa78d22 100644 --- a/game/overlord/stream.cpp +++ b/game/overlord/stream.cpp @@ -156,6 +156,6 @@ void* RPC_STR(unsigned int fno, void* _cmd, int y) { void* RPC_PLAY(unsigned int fno, void* _cmd, int y) { (void)fno; (void)y; - printf("[RPC_PLAY] ignoring...\n"); + // printf("[RPC_PLAY] ignoring...\n"); return _cmd; -} \ No newline at end of file +} diff --git a/goal_src/dgos/cit.gd b/goal_src/dgos/cit.gd new file mode 100644 index 0000000000..89606f88e9 --- /dev/null +++ b/goal_src/dgos/cit.gd @@ -0,0 +1,54 @@ + +("CIT.DGO" + ("villagep-obs.o" "villagep-obs") + ("oracle.o" "oracle") + ("battlecontroller.o" "battlecontroller") + ("citadel-part.o" "citadel-part") + ("citadel-obs.o" "citadel-obs") + ("citb-plat.o" "citb-plat") + ("citadel-sages.o" "citadel-sages") + ("snow-bunny.o" "snow-bunny") + ("citb-bunny.o" "citb-bunny") + ("citb-drop-plat-CIT.o" "citb-drop-plat") + ("assistant-citadel.o" "assistant-citadel") + ("tpage-1415.go" "tpage-1415") + ("tpage-1417.go" "tpage-1417") + ("tpage-1416.go" "tpage-1416") + ("tpage-1414.go" "tpage-1414") + ("assistant-lavatube-end-ag.go" "assistant-lavatube-end") + ("babak-ag.go" "babak") + ("bluesage-ag.go" "bluesage") + ("citadelcam-ag.go" "citadelcam") + ("citb-arm-ag.go" "citb-arm") + ("citb-arm-shoulder-ag.go" "citb-arm-shoulder") + ("citb-bunny-ag.go" "citb-bunny") + ("citb-button-ag.go" "citb-button") + ("citb-chain-plat-ag.go" "citb-chain-plat") + ("citb-chains-ag.go" "citb-chains") + ("citb-coil-ag.go" "citb-coil") + ("citb-disc-ag.go" "citb-disc") + ("citb-donut-ag.go" "citb-donut") + ("citb-drop-plat-ag.go" "citb-drop-plat") + ("citb-exit-plat-ag.go" "citb-exit-plat") + ("citb-firehose-ag.go" "citb-firehose") + ("citb-generator-ag.go" "citb-generator") + ("citb-hose-ag.go" "citb-hose") + ("citb-iris-door-ag.go" "citb-iris-door") + ("citb-launcher-ag.go" "citb-launcher") + ("citb-robotboss-ag.go" "citb-robotboss") + ("citb-rotatebox-ag.go" "citb-rotatebox") + ("citb-sagecage-ag.go" "citb-sagecage") + ("citb-stopbox-ag.go" "citb-stopbox") + ("ecovalve-ag-CIT.go" "ecovalve") + ("evilbro-citadel-ag.go" "evilbro-citadel") + ("evilsis-citadel-ag.go" "evilsis-citadel") + ("green-sagecage-ag.go" "green-sagecage") + ("orb-cache-top-ag-CIT.go" "orb-cache-top") + ("plat-citb-ag.go" "plat-citb") + ("plat-eco-citb-ag.go" "plat-eco-citb") + ("redsage-ag.go" "redsage") + ("warp-gate-switch-ag-CIT.go" "warp-gate-switch") + ("warpgate-ag.go" "warpgate") + ("yellowsage-ag.go" "yellowsage") + ("citadel-vis.go" "citadel-vis") + ) \ No newline at end of file diff --git a/goal_src/engine/collide/collide-cache-h.gc b/goal_src/engine/collide/collide-cache-h.gc index 3cfa110eae..2ed1d890f8 100644 --- a/goal_src/engine/collide/collide-cache-h.gc +++ b/goal_src/engine/collide/collide-cache-h.gc @@ -5,15 +5,19 @@ ;; name in dgo: collide-cache-h ;; dgos: GAME, ENGINE +(define-extern collide-cache-using-line-sphere-test (function vector symbol)) +(define-extern collide-cache-using-y-probe-test (function vector symbol)) +(define-extern collide-cache-using-box-test (function vector symbol)) + ;; DECOMP BEGINS (deftype collide-using-spheres-params (structure) - ((spheres uint32 :offset-assert 0) - (num-spheres uint32 :offset-assert 4) - (collide-with uint64 :offset-assert 8) - (proc basic :offset-assert 16) - (ignore-pat uint32 :offset-assert 20) - (solid-only basic :offset-assert 24) + ((spheres (pointer sphere) :offset-assert 0) + (num-spheres uint32 :offset-assert 4) + (collide-with uint64 :offset-assert 8) + (proc process-drawable :offset-assert 16) + (ignore-pat uint32 :offset-assert 20) + (solid-only basic :offset-assert 24) ) :method-count-assert 9 :size-assert #x1c @@ -75,24 +79,24 @@ (deftype collide-cache-prim (structure) - ((prim-core collide-prim-core :inline :offset-assert 0) - (ccache collide-cache :offset-assert 32) - (prim collide-shape-prim :offset-assert 36) - (first-tri uint16 :offset-assert 40) - (num-tris uint16 :offset-assert 42) - (unused uint8 4 :offset-assert 44) - (world-sphere vector :inline :offset 0) - (collide-as uint64 :offset 16) - (action uint32 :offset 24) - (offense int8 :offset 28) - (prim-type int8 :offset 29) + ((prim-core collide-prim-core :inline :offset-assert 0) + (ccache collide-cache :offset-assert 32) + (prim (pointer collide-shape-prim) :offset-assert 36) + (first-tri uint16 :offset-assert 40) + (num-tris uint16 :offset-assert 42) + (unused uint8 4 :offset-assert 44) + (world-sphere vector :inline :offset 0) + (collide-as uint64 :offset 16) + (action uint32 :offset 24) + (offense int8 :offset 28) + (prim-type int8 :offset 29) ) :method-count-assert 11 :size-assert #x30 :flag-assert #xb00000030 (:methods - (dummy-9 (_type_ float pointer (pointer collide-cache) float int) float 9) - (dummy-10 (_type_ float pointer (pointer collide-cache) float int) float 10) + (dummy-9 (_type_ collide-mesh-cache-tri collide-prim-core vector float int) float 9) + (dummy-10 (_type_ collide-mesh-cache-tri collide-prim-core vector float int) float 10) ) ) @@ -116,25 +120,25 @@ (dummy-10 (_type_ vector vector float int process collide-mesh-cache-tri int) float 10) (dummy-11 (_type_ collide-using-spheres-params) none 11) (fill-and-probe-using-y-probe (_type_ vector float uint process collide-tri-result uint) float 12) - (dummy-13 (_type_ int uint process-drawable uint) none 13) + (dummy-13 (_type_ bounding-box uint process-drawable uint) none 13) (dummy-14 (_type_ vector vector float int process int) none 14) - (dummy-15 (_type_ int) none 15) - (dummy-16 (_type_ vector float uint process uint) none 16) + (dummy-15 (_type_ collide-using-spheres-params) none 15) + (dummy-16 (_type_ vector float uint process-drawable uint) none 16) (initialize (_type_) none 17) (dummy-18 (_type_ vector vector float int collide-mesh-cache-tri int) float 18) (probe-using-spheres (_type_) none 19) (dummy-20 (_type_ vector float uint collide-tri-result uint) float 20) - (dummy-21 (_type_) none 21) + (dummy-21 (_type_ (function bsp-header int collide-list none) (function collide-cache none)) none 21) (dummy-22 (_type_) none 22) (dummy-23 (_type_) none 23) (dummy-24 (_type_) none 24) - (dummy-25 (_type_) none 25) + (dummy-25 (_type_ water-control) none 25) (dummy-26 (_type_) none 26) (dummy-27 (_type_) none 27) (dummy-28 (_type_) none 28) - (dummy-29 (_type_) none 29) + (dummy-29 (_type_ collide-frag-mesh) none 29) (dummy-30 (_type_) none 30) - (dummy-31 (_type_) none 31) + (dummy-31 (_type_ collide-puyp-work collide-cache-prim) vector 31) (dummy-32 (_type_) none 32) ) ) @@ -170,10 +174,13 @@ :flag-assert #x900000070 ) + (define-perm *collide-work* collide-work (new 'global 'collide-work)) + (define-perm *collide-cache* collide-cache (new 'global 'collide-cache)) + (define-perm *collide-list* collide-list (new 'global 'collide-list)) -(define-extern collide-cache-using-box-test (function vector symbol)) -(define-extern collide-cache-using-y-probe-test (function vector symbol)) -(define-extern collide-cache-using-line-sphere-test (function vector symbol)) \ No newline at end of file + + + diff --git a/goal_src/engine/collide/collide-cache.gc b/goal_src/engine/collide/collide-cache.gc index 70e775c741..f8f34f7d31 100644 --- a/goal_src/engine/collide/collide-cache.gc +++ b/goal_src/engine/collide/collide-cache.gc @@ -5,3 +5,37 @@ ;; name in dgo: collide-cache ;; dgos: GAME, ENGINE +;; TODO this doesnt work properly due to qmfc2 bugs +(defun collide-cache-using-box-test ((arg0 vector)) + (local-vars (v1-1 float)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + ) + (init-vf0-vector) + (nop!) + (.max.w.vf vf3 vf0 vf0) + (let ((v1-0 *collide-work*)) + (nop!) + (.lvf vf1 (&-> arg0 quad)) + (nop!) + (.lvf vf2 (&-> v1-0 collide-sphere-neg-r quad)) + ) + (.sub.vf vf1 vf1 vf2) + (nop!) + (.mul.vf vf1 vf1 vf1) + (nop!) + (.mul.x.vf acc vf3 vf1) + (nop!) + (.add.mul.y.vf acc vf3 vf1 acc) + (nop!) + (.add.mul.z.vf acc vf3 vf1 acc) + (nop!) + (.sub.mul.w.vf vf1 vf3 vf1 acc) + (nop!) + (.mov v1-1 vf1) + (<= (the-as int v1-1) 0) + ) + ) \ No newline at end of file diff --git a/goal_src/engine/collide/collide-edge-grab-h.gc b/goal_src/engine/collide/collide-edge-grab-h.gc index 849b737aa0..27923fb54f 100644 --- a/goal_src/engine/collide/collide-edge-grab-h.gc +++ b/goal_src/engine/collide/collide-edge-grab-h.gc @@ -9,7 +9,7 @@ ((world-vertex vector 6 :inline :offset-assert 0) (local-vertex vector 6 :inline :offset-assert 96) (actor-cshape-prim-offset int32 :offset-assert 192) - (actor-handle uint64 :offset-assert 200) + (actor-handle handle :offset-assert 200) (hanging-matrix matrix :inline :offset-assert 208) (edge-vertex vector 2 :inline :offset 0) (center-hold vector :inline :offset 32) @@ -41,7 +41,7 @@ (deftype collide-edge-edge (structure) ((ignore basic :offset-assert 0) (etri collide-edge-tri :offset-assert 4) - (vertex-ptr vector 2 :offset-assert 8) + (vertex-ptr (inline-array vector) 2 :offset-assert 8) (outward vector :inline :offset-assert 16) (edge-vec-norm vector :inline :offset-assert 32) ) @@ -74,54 +74,56 @@ :size-assert #x810 :flag-assert #xb00000810 (:methods - (dummy-9 () none 9) + (debug-draw (_type_) object 9) (dummy-10 () none 10) ) ) +(declare-type collide-cache basic) +(declare-type collide-shape basic) (deftype collide-edge-work (structure) - ((ccache basic :offset-assert 0) - (cshape basic :offset-assert 4) - (num-verts uint32 :offset-assert 8) - (num-edges uint32 :offset-assert 12) - (num-tris uint32 :offset-assert 16) - (cache-fill-box bounding-box :inline :offset-assert 32) - (within-reach-box bounding-box :inline :offset-assert 64) - (within-reach-box4w bounding-box4w :inline :offset-assert 96) - (search-pt vector :inline :offset-assert 128) - (search-dir-vec vector :inline :offset-assert 144) - (max-dist-sqrd-to-outward-pt float :offset-assert 160) - (max-dir-cosa-delta float :offset-assert 164) - (split-dists float 2 :offset-assert 168) - (outward-offset vector :inline :offset-assert 176) - (local-cache-fill-box bounding-box :inline :offset-assert 192) - (local-within-reach-box bounding-box :inline :offset-assert 224) - (local-player-spheres sphere 12 :inline :offset-assert 256) - (world-player-spheres sphere 12 :inline :offset-assert 448) - (local-player-hanging-spheres sphere 6 :inline :offset 256) - (world-player-hanging-spheres sphere 6 :inline :offset 448) - (local-player-leap-up-spheres sphere 6 :inline :offset 352) - (world-player-leap-up-spheres sphere 6 :inline :offset 544) - (verts vector 64 :inline :offset-assert 640) - (edges collide-edge-edge 96 :inline :offset-assert 1664) - (tris collide-edge-tri 48 :inline :offset-assert 6272) - (hold-list collide-edge-hold-list :inline :offset-assert 7808) + ((ccache collide-cache :offset-assert 0) + (cshape collide-shape :offset-assert 4) + (num-verts uint32 :offset-assert 8) + (num-edges uint32 :offset-assert 12) + (num-tris uint32 :offset-assert 16) + (cache-fill-box bounding-box :inline :offset-assert 32) + (within-reach-box bounding-box :inline :offset-assert 64) + (within-reach-box4w bounding-box4w :inline :offset-assert 96) + (search-pt vector :inline :offset-assert 128) + (search-dir-vec vector :inline :offset-assert 144) + (max-dist-sqrd-to-outward-pt float :offset-assert 160) + (max-dir-cosa-delta float :offset-assert 164) + (split-dists float 2 :offset-assert 168) + (outward-offset vector :inline :offset-assert 176) + (local-cache-fill-box bounding-box :inline :offset-assert 192) + (local-within-reach-box bounding-box :inline :offset-assert 224) + (local-player-spheres sphere 12 :inline :offset-assert 256) + (world-player-spheres sphere 12 :inline :offset-assert 448) + (local-player-hanging-spheres sphere 6 :inline :offset 256) + (world-player-hanging-spheres sphere 6 :inline :offset 448) + (local-player-leap-up-spheres sphere 6 :inline :offset 352) + (world-player-leap-up-spheres sphere 6 :inline :offset 544) + (verts vector 64 :inline :offset-assert 640) + (edges collide-edge-edge 96 :inline :offset-assert 1664) + (tris collide-edge-tri 48 :inline :offset-assert 6272) + (hold-list collide-edge-hold-list :inline :offset-assert 7808) ) :method-count-assert 20 :size-assert #x2690 :flag-assert #x1400002690 (:methods - (dummy-9 () none 9) - (dummy-10 () none 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-16 () none 16) - (dummy-17 () none 17) - (dummy-18 () none 18) - (dummy-19 () none 19) + (dummy-9 (_type_ collide-edge-hold-list) symbol 9) + (debug-draw-edges (_type_) object 10) + (dummy-11 (_type_) none 11) + (debug-draw-sphere (_type_) symbol 12) + (dummy-13 (_type_) none 13) + (dummy-14 (_type_ vector vector int) float 14) + (dummy-15 (_type_) none 15) + (dummy-16 (_type_) none 16) + (dummy-17 (_type_) none 17) + (dummy-18 (_type_) none 18) + (dummy-19 (_type_ collide-edge-hold-item edge-grab-info) symbol 19) ) ) diff --git a/goal_src/engine/collide/collide-edge-grab.gc b/goal_src/engine/collide/collide-edge-grab.gc index 703e8163ee..cb91826553 100644 --- a/goal_src/engine/collide/collide-edge-grab.gc +++ b/goal_src/engine/collide/collide-edge-grab.gc @@ -5,3 +5,84 @@ ;; name in dgo: collide-edge-grab ;; dgos: GAME, ENGINE +;; failed to figure out what this is: +(let + ((v1-1 + (new 'static 'surface + :name '*rotate-surface* + :turnv 1.0 + :turnvv 1.0 + :tiltv 1.0 + :tiltvv 1.0 + :transv-max 1.0 + :target-speed 1.0 + :seek0 153600.0 + :seek90 153600.0 + :seek180 256000.0 + :fric 153600.0 + :nonlin-fric-dist 5120.0 + :slip-factor 1.0 + :slope-down-factor 10240.0 + :slope-slip-angle 8192.0 + :impact-fric 1.0 + :bend-factor 0.8 + :bend-speed 4.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :flags #x4000 + ) + ) + ) + (define *rotate-surface* v1-1) + (set! + (-> v1-1 mult-hook) + (the-as + (function surface surface surface int none) + (lambda ((arg0 surface) (arg1 object) (arg2 object) (arg3 int)) + (when (= arg3 1) + (let ((f0-0 151756.8)) + (set! (-> arg0 fric) f0-0) + f0-0 + ) + ) + ) + ) + ) + (set! (-> v1-1 touch-hook) nothing) + (set! (-> v1-1 active-hook) nothing) + ) + +;; failed to figure out what this is: +(let + ((v1-2 + (new 'static 'surface + :name '*no-walk-surface* + :turnv 0.5 + :turnvv 1.0 + :tiltv 1.0 + :tiltvv 1.0 + :transv-max 0.7 + :target-speed 0.7 + :seek0 24576.0 + :seek90 24576.0 + :seek180 24576.0 + :fric 23756.8 + :nonlin-fric-dist 4091904.0 + :slope-slip-angle 16384.0 + :bend-speed 4.0 + :alignv 0.5 + :slope-up-traction 0.9 + :align-speed 1.0 + :flags #x28 + ) + ) + ) + (define *no-walk-surface* v1-2) + (set! + (-> v1-2 mult-hook) + (the-as (function surface surface surface int none) nothing) + ) + (set! (-> v1-2 touch-hook) nothing) + (set! (-> v1-2 active-hook) nothing) + ) \ No newline at end of file diff --git a/goal_src/engine/collide/collide-mesh-h.gc b/goal_src/engine/collide/collide-mesh-h.gc index f053edf4ab..926dce91f9 100644 --- a/goal_src/engine/collide/collide-mesh-h.gc +++ b/goal_src/engine/collide/collide-mesh-h.gc @@ -27,6 +27,7 @@ :flag-assert #x900000008 ) +(declare-type collide-mesh-cache-tri structure) (deftype collide-mesh (basic) ((joint-id int32 :offset-assert 4) (num-tris uint32 :offset-assert 8) @@ -38,13 +39,13 @@ :size-assert #x28 :flag-assert #x1000000028 (:methods - (dummy-9 () none 9) - (dummy-10 () none 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) + (debug-draw-tris (_type_ process-drawable int) none 9) + (dummy-10 (_type_ object vector) none 10) ;; what is the second arg!? + (dummy-11 (_type_) none 11) + (dummy-12 (_type_ collide-mesh-cache-tri collide-tri-result vector float) float 12) + (dummy-13 (_type_) none 13) + (dummy-14 (_type_) none 14) + (dummy-15 (_type_) none 15) ) ) @@ -60,7 +61,7 @@ :size-assert #xa020 :flag-assert #xc0000a020 (:methods - (dummy-9 () none 9) + (dummy-9 (_type_) none 9) (is-id? (_type_ int) symbol 10) (next-id! (_type_) uint 11) ) diff --git a/goal_src/engine/collide/collide-probe.gc b/goal_src/engine/collide/collide-probe.gc index 92193095a3..04da58ef5e 100644 --- a/goal_src/engine/collide/collide-probe.gc +++ b/goal_src/engine/collide/collide-probe.gc @@ -5,3 +5,66 @@ ;; name in dgo: collide-probe ;; dgos: GAME, ENGINE + +(defun + interpolate + ((arg0 float) (arg1 float) (arg2 float) (arg3 float) (arg4 float)) + (let ((f0-1 (- arg3 arg1)) + (f1-2 (- arg4 arg2)) + (f3-1 (- arg0 arg1)) + ) + (+ arg2 (/ (* f3-1 f1-2) f0-1)) + ) + ) + +(defun distc ((arg0 vector) (arg1 vector)) + (let* ((f0-1 (- (-> arg0 x) (-> arg1 x))) + (f0-3 (* f0-1 f0-1)) + (f1-2 (- (-> arg0 z) (-> arg1 z))) + ) + (sqrtf (+ f0-3 (* f1-2 f1-2))) + ) + ) + +(defun misty-ambush-height ((arg0 vector)) + (let* ((a1-0 (new 'static 'vector :x -808960.0 :y 111656.96 :z 3924992.0)) + (f0-0 (distc arg0 a1-0)) + ) + (cond + ((< f0-0 52019.2) + 111656.96 + ) + ((>= 58982.4 f0-0) + (interpolate f0-0 52019.2 111656.96 58982.4 116776.96) + ) + ((>= 124436.48 f0-0) + (interpolate f0-0 58982.4 116776.96 124436.48 114688.0) + ) + ((>= 219217.92 f0-0) + (interpolate f0-0 124436.48 114688.0 219217.92 113254.4) + ) + (else + 113254.4 + ) + ) + ) + ) + +(defun misty-ambush-height-probe ((arg0 vector) (arg1 float)) + (let ((f0-0 (misty-ambush-height arg0))) + (cond + ((< f0-0 (-> arg0 y)) + (/ (- (-> arg0 y) f0-0) arg1) + ) + (else + (format + 0 + "WARNING: ~%height = ~f, pos.y = ~f" + (* 0.00024414062 f0-0) + (* 0.00024414062 (-> arg0 y)) + ) + -1.0 + ) + ) + ) + ) \ No newline at end of file diff --git a/goal_src/engine/collide/collide-reaction-target.gc b/goal_src/engine/collide/collide-reaction-target.gc index 3603f1d907..1bc7e1e0b2 100644 --- a/goal_src/engine/collide/collide-reaction-target.gc +++ b/goal_src/engine/collide/collide-reaction-target.gc @@ -6,5 +6,5 @@ ;; dgos: GAME, ENGINE ;; TODO - for logic-target -(define-extern target-collision-reaction function) -(define-extern target-collision-no-reaction function) +(define-extern target-collision-reaction (function control-info collide-shape-intersect vector vector none)) +(define-extern target-collision-no-reaction (function control-info collide-shape-intersect vector vector none)) diff --git a/goal_src/engine/collide/collide-shape-h.gc b/goal_src/engine/collide/collide-shape-h.gc index 040983669a..2eaec47bbb 100644 --- a/goal_src/engine/collide/collide-shape-h.gc +++ b/goal_src/engine/collide/collide-shape-h.gc @@ -7,11 +7,12 @@ (declare-type touching-list structure) +(declare-type collide-shape-prim basic) ;; Represents a collision between the "rider" (zoomer?) and a primitive shape. ;; collisions are "sticky", meaning these structures stick around. (deftype collide-sticky-rider (structure) ((rider-handle handle :offset-assert 0) - (sticky-prim basic :offset-assert 8) + (sticky-prim collide-shape-prim :offset-assert 8) (prim-ry float :offset-assert 12) (rider-local-pos vector :inline :offset-assert 16) ) @@ -42,7 +43,7 @@ :flag-assert #xb00000030 (:methods (new (symbol type int) _type_ 0) - (dummy-9 () none 9) + (add-rider! (_type_ process-drawable) collide-sticky-rider 9) (reset! (_type_) int 10) ) ) @@ -55,7 +56,7 @@ (deftype pull-rider-info (structure) ((rider collide-sticky-rider :offset-assert 0) - (rider-cshape basic :offset-assert 4) + (rider-cshape collide-shape-prim :offset-assert 4) (rider-delta-ry float :offset-assert 8) (rider-dest vector :inline :offset-assert 16) ) @@ -64,7 +65,6 @@ :flag-assert #x900000020 ) -(declare-type collide-shape-prim basic) (deftype collide-shape-intersect (basic) ((move-vec vector :inline :offset-assert 16) (best-u float :offset-assert 32) @@ -76,7 +76,7 @@ :size-assert #x8c :flag-assert #xa0000008c (:methods - (dummy-9 () none 9) + (init! (_type_ vector) symbol 9) ) ) @@ -133,47 +133,47 @@ :flag-assert #x900000020 ) +(declare-type collide-shape basic) +(declare-type collide-cache-prim structure) ;; the base class for collision shapes. (deftype collide-shape-prim (basic) - ((cshape basic :offset-assert 4) + ((cshape collide-shape :offset-assert 4) (prim-id uint32 :offset-assert 8) (transform-index int8 :offset-assert 12) (prim-core collide-prim-core :inline :offset-assert 16) (local-sphere vector :inline :offset-assert 48) (collide-with uint64 :offset-assert 64) - ;; overlays of the prim-core (world-sphere vector :inline :offset 16) (collide-as uint64 :offset 32) (action uint32 :offset 40) (offense int8 :offset 44) (prim-type int8 :offset 45) - ;; overlay of the local-sphere w (radius meters :offset 60) ) :method-count-assert 28 :size-assert #x48 :flag-assert #x1c00000048 (:methods - (new (symbol type basic uint int) _type_ 0) - (dummy-9 () none 9) + (new (symbol type collide-shape uint int) _type_ 0) + (dummy-9 (_type_ vector) object 9) ;; ret - symbol | float (dummy-10 (_type_ uint) collide-shape-prim 10) - (dummy-11 () none 11) - (add-fg-prim-using-box (_type_) none 12) - (add-fg-prim-using-line-sphere (_type_) none 13) - (add-fg-prim-using-y-probe (_type_) none 14) - (dummy-15 () none 15) + (debug-draw-world-sphere (_type_) symbol 11) + (add-fg-prim-using-box (_type_ process-drawable) none 12) + (add-fg-prim-using-line-sphere (_type_ process-drawable) none 13) + (add-fg-prim-using-y-probe (_type_ process-drawable) none 14) + (overlaps-others-test (_type_) symbol 15) (dummy-16 () none 16) (dummy-17 () none 17) - (dummy-18 () none 18) - (dummy-19 () none 19) - (dummy-20 () none 20) - (dummy-21 () none 21) - (dummy-22 () none 22) - (dummy-23 () none 23) + (collide-with-collide-cache-prim-mesh (_type_ collide-shape-intersect collide-cache-prim) none 18) + (collide-with-collide-cache-prim-sphere (_type_ collide-shape-intersect collide-cache-prim) none 19) + (dummy-20 (_type_ uint) symbol 20) + (num-mesh (_type_ collide-shape-prim) int 21) + (on-platform-test (_type_ _type_ collide-overlap-result float) pat-surface 22) + (should-push-away-test () none 23) (dummy-24 () none 24) - (dummy-25 () none 25) - (dummy-26 () none 26) - (dummy-27 () none 27) + (dummy-25 (_type_ process-drawable) symbol 25) + (set-collide-as! (_type_ handle) none 26) + (set-collide-with! (_type_ handle) none 27) ) ) @@ -186,7 +186,7 @@ :size-assert #x4c :flag-assert #x1c0000004c (:methods - (new (symbol type basic uint) _type_ 0) + (new (symbol type collide-shape uint) _type_ 0) ) ) @@ -202,8 +202,8 @@ :size-assert #x5c :flag-assert #x1d0000005c (:methods - (new (symbol type basic uint uint) _type_ 0) - (dummy-28 (_type_ int) none 28) + (new (symbol type collide-shape uint uint) _type_ 0) + (change-mesh (_type_ int) none 28) ) ) @@ -218,9 +218,9 @@ :size-assert #x54 :flag-assert #x1e00000054 (:methods - (new (symbol type basic uint int) _type_ 0) - (dummy-28 (_type_) none 28) - (dummy-29 () none 29) + (new (symbol type collide-shape uint int) _type_ 0) + (append-prim (_type_ collide-shape-prim) none 28) + (dummy-29 (_type_ uint) none 29) ) ) @@ -230,10 +230,13 @@ (hit-by-others) (player) ) + +(declare-type collide-work structure) +(declare-type touching-shapes-entry structure) ;; an actual instance of a collision primitive. ;; it's based on a transform (q means quaternion, v means with derivatives) (deftype collide-shape (trsqv) - ((process process :offset-assert 140) + ((process process-drawable :offset-assert 140) (max-iteration-count uint8 :offset-assert 144) (nav-flags uint8 :offset-assert 145) (pad-byte uint8 2 :offset-assert 146) @@ -249,35 +252,35 @@ :size-assert #xb8 :flag-assert #x38000000b8 (:methods - (new (symbol type process collide-list-enum) _type_) - (TODO-RENAME-28 (_type_) none 28) + (new (symbol type process-drawable collide-list-enum) _type_) + (TODO-RENAME-28 (_type_ vector) none 28) (dummy-29 (_type_ int) none 29) (TODO-RENAME-30 (_type_ vector) none 30) - (dummy-31 () none 31) - (dummy-32 (_type_ float uint) none 32) + (dummy-31 (_type_) none 31) + (dummy-32 (_type_ object uint) none 32) (dummy-33 (_type_ vector uint) none 33) (dummy-34 (_type_ uint) collide-shape-prim 34) - (dummy-35 (_type_) none 35) - (dummy-36 () none 36) + (dummy-35 (_type_) symbol 35) + (dummy-36 (_type_ bounding-box float uint) symbol 36) (dummy-37 (_type_ vector) none 37) - (dummy-38 () none 38) - (dummy-39 () none 39) + (find-collision-meshes (_type_) symbol 38) + (dummy-39 (_type_ collide-shape collide-overlap-result) symbol 39) (dummy-40 (_type_ structure) none 40) ;; ?? - I've seen overlaps-others-params | collide-edge-hold-list - (dummy-41 (_type_ attack-info float) none 41) - (dummy-42 () none 42) - (dummy-43 () none 43) - (dummy-44 (_type_) none 44) - (dummy-45 (_type_) none 45) - (dummy-46 (_type_) none 46) - (dummy-47 (_type_) none 47) - (dummy-48 (_type_) none 48) - (dummy-49 (_type_) none 49) - (dummy-50 (_type_) none 50) - (dummy-51 () none 51) - (dummy-52 () none 52) + (dummy-41 (_type_ attack-info float) vector 41) + (dummy-42 (_type_ collide-shape collide-work) none 42) ; collide-work is a guess + (dummy-43 (_type_ pull-rider-info) none 43) + (dummy-44 (_type_) symbol 44) + (dummy-45 (_type_) symbol 45) + (set-root-prim! (_type_ collide-shape-prim) collide-shape-prim 46) + (dummy-47 (_type_) symbol 47) + (clear-collide-with-as (_type_) none 48) + (restore-collide-with-as (_type_) none 49) + (backup-collide-with-as (_type_) none 50) + (set-root-prim-collide-with! (_type_ handle) none 51) + (set-root-prim-collide-as! (_type_ handle) none 52) (dummy-53 (_type_ int int int) none 53) (dummy-54 (_type_ int int) none 54) - (dummy-55 (_type_ process uint float float float) none 55) + (dummy-55 (_type_ process touching-shapes-entry float float float) none 55) ) ) @@ -293,8 +296,8 @@ (old-status uint64 :offset-assert 280) (prev-status uint64 :offset-assert 288) (reaction-flag uint32 :offset-assert 296) - (reaction function :offset-assert 300) - (no-reaction function :offset-assert 304) + (reaction (function collide-shape-moving collide-shape-intersect vector vector none) :offset-assert 300) + (no-reaction (function collide-shape-moving collide-shape-intersect vector vector none) :offset-assert 304) (local-normal vector :inline :offset-assert 320) (surface-normal vector :inline :offset-assert 336) (poly-normal vector :inline :offset-assert 352) @@ -315,17 +318,17 @@ (:methods (dummy-56 (_type_ pat-surface) none 56) (dummy-57 (_type_ vector) none 57) - (dummy-58 (_type_ vector) none 58) + (dummy-58 (_type_ vector) symbol 58) (dummy-59 (_type_ vector uint float symbol symbol symbol) none 59) - (dummy-60 (_type_ float float symbol uint) none 60) + (dummy-60 (_type_ float float symbol uint) symbol 60) (TODO-RENAME-61 (_type_ vector vector vector) none 61) (dummy-62 (_type_ vector float) vector 62) - (dummy-63 () none 63) - (dummy-64 () none 64) + (dummy-63 (_type_ vector vector float) float 63) + (dummy-64 (_type_ collide-tri-result vector) none 64) ) ) -(defmethod new collide-shape-prim ((allocation symbol) (type-to-make type) (cshape basic) (prim-id uint) (size-bytes int)) +(defmethod new collide-shape-prim ((allocation symbol) (type-to-make type) (cshape collide-shape) (prim-id uint) (size-bytes int)) "Allocate a new collide-shape-prim. It is expected that children of collide-shape-prim override this. NOTE: uses the size-bytes as the TOTAL size of the structure." @@ -345,17 +348,17 @@ ) -(defmethod new collide-shape-prim-sphere ((allocation symbol) (type-to-make type) (cshape basic) (prim-id uint)) +(defmethod new collide-shape-prim-sphere ((allocation symbol) (type-to-make type) (cshape collide-shape) (prim-id uint)) "Allocate a new sphere primitive" - (let ((obj (the collide-shape-prim-sphere ((method-of-type collide-shape-prim new) allocation type-to-make cshape prim-id (size-of collide-shape-prim-mesh))))) + (let ((obj (the collide-shape-prim-sphere ((method-of-type collide-shape-prim new) allocation type-to-make cshape prim-id (size-of collide-shape-prim-sphere))))) (set! (-> obj pat) (new 'static 'pat-surface :mode (pat-mode obstacle))) (set! (-> obj prim-core prim-type) -1) obj ) ) -(defmethod new collide-shape-prim-mesh ((allocation symbol) (type-to-make type) (cshape basic) (mesh-id uint) (prim-id uint)) +(defmethod new collide-shape-prim-mesh ((allocation symbol) (type-to-make type) (cshape collide-shape) (mesh-id uint) (prim-id uint)) "Allocate a new mesh primitive" (let ((obj (the collide-shape-prim-mesh ((method-of-type collide-shape-prim new) allocation type-to-make cshape prim-id (size-of collide-shape-prim-mesh))))) @@ -367,7 +370,7 @@ ) ) -(defmethod new collide-shape-prim-group ((allocation symbol) (type-to-make type) (cshape basic) (elt-count uint) (prim-id int)) +(defmethod new collide-shape-prim-group ((allocation symbol) (type-to-make type) (cshape collide-shape) (elt-count uint) (prim-id int)) "Allocate a group of primitives." (let ((obj (the collide-shape-prim-group ((method-of-type collide-shape-prim new) allocation type-to-make cshape (the uint prim-id) (the int (+ (-> type-to-make size) (* (+ elt-count -1) 4))))))) @@ -390,12 +393,10 @@ (defmethod asize-of collide-shape-prim-group ((obj collide-shape-prim-group)) "How big is this in memory?" - (the-as int - (+ (-> obj type size) (the-as uint (* (+ (-> obj allocated-prims) -1) 4))) - ) + (the-as int (+ (-> obj type size) (* (+ (-> obj allocated-prims) -1) 4))) ) -(defmethod new collide-shape ((allocation symbol) (type-to-make type) (proc process) (collide-list-kind collide-list-enum)) +(defmethod new collide-shape ((allocation symbol) (type-to-make type) (proc process-drawable) (collide-list-kind collide-list-enum)) "Allocate a new collide-shape and add to a collide-list" (let ((obj (object-new allocation type-to-make (the int (-> type-to-make size))))) @@ -464,9 +465,7 @@ ) (defmethod asize-of collide-sticky-rider-group ((obj collide-sticky-rider-group)) - (the-as int - (+ (-> obj type size) (the-as uint (* (1- (-> obj allocated-riders)) (size-of collide-sticky-rider)))) - ) + (the-as int (+ (-> obj type size) (* (+ (-> obj allocated-riders) -1) 32))) ) (define *collide-shape-prim-backgnd* diff --git a/goal_src/engine/collide/collide-shape.gc b/goal_src/engine/collide/collide-shape.gc index ea3ecb8052..091bf8f4c4 100644 --- a/goal_src/engine/collide/collide-shape.gc +++ b/goal_src/engine/collide/collide-shape.gc @@ -7,3 +7,2218 @@ ;; TODO - for misty-teetertotter | rigid-body (define-extern default-collision-reaction (function collide-shape-moving collide-shape-intersect vector vector none)) ;; TODO - not completely confirmed + +;; DECOMP BEGINS + +;; ERROR: function was not converted to expressions. Cannot decompile. + +(defmethod should-push-away-test collide-shape-prim () + (format + 0 + "ERROR: collide-shape-prim::should-push-away-test was called illegally!~%" + ) + (none) + ) + +;; ERROR: function was not converted to expressions. Cannot decompile. + +;; ERROR: function was not converted to expressions. Cannot decompile. + +;; ERROR: function was not converted to expressions. Cannot decompile. + +;; ERROR: function was not converted to expressions. Cannot decompile. + +(defmethod + collide-with-collide-cache-prim-mesh + collide-shape-prim + ((obj collide-shape-prim) + (arg0 collide-shape-intersect) + (arg1 collide-cache-prim) + ) + (format + 0 + "ERROR: Unsupported prim type in collide-shape-prim::collide-with-collide-cache-prim-mesh!~%" + ) + (none) + ) + +;; ERROR: function was not converted to expressions. Cannot decompile. + +(defmethod + collide-with-collide-cache-prim-mesh + collide-shape-prim-mesh + ((obj collide-shape-prim-mesh) + (arg0 collide-shape-intersect) + (arg1 collide-cache-prim) + ) + (format + 0 + "ERROR: collide-shape-prim-mesh vs. collide-cache-prim mesh is not currently supported!~%" + ) + (none) + ) + +(defmethod + collide-with-collide-cache-prim-mesh + collide-shape-prim-group + ((obj collide-shape-prim-group) + (arg0 collide-shape-intersect) + (arg1 collide-cache-prim) + ) + (let ((s3-0 (-> arg1 prim-core collide-as))) + (dotimes (s2-0 (-> obj num-prims)) + (let ((a0-1 (-> obj prims s2-0))) + (if (logtest? (-> a0-1 collide-with) s3-0) + (collide-with-collide-cache-prim-mesh a0-1 arg0 arg1) + ) + ) + ) + ) + (none) + ) + +(defmethod + collide-with-collide-cache-prim-sphere + collide-shape-prim + ((obj collide-shape-prim) + (arg0 collide-shape-intersect) + (arg1 collide-cache-prim) + ) + (format + 0 + "ERROR: Unsupported prim type in collide-shape-prim::collide-with-collide-cache-prim-sphere!~%" + ) + (none) + ) + +(defmethod + collide-with-collide-cache-prim-sphere + collide-shape-prim-sphere + ((obj collide-shape-prim-sphere) + (arg0 collide-shape-intersect) + (arg1 collide-cache-prim) + ) + (local-vars (v1-4 int) (a3-2 uint)) + (rlet ((vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + ) + (let* ((s5-0 (new 'stack-no-clear 'collide-mesh-cache-tri)) + (f0-1 + (dummy-10 + arg1 + s5-0 + (-> obj prim-core) + (-> arg0 move-vec) + (-> arg0 best-u) + (the-as int (-> obj prim-core action)) + ) + ) + ) + (when (>= f0-1 0.0) + (let ((v1-3 0) + (a1-2 (-> obj prim-core action)) + ) + (nop!) + (let ((a2-2 (-> arg1 prim-core action))) + (nop!) + (let ((a0-2 (-> arg1 prim-core offense)) + (a1-3 (logand a1-2 a2-2)) + (a2-3 (-> arg1 prim)) + ) + (let ((a3-1 (logand a1-3 1)) + (a1-4 (-> obj prim-core offense)) + ) + (b! (zero? a3-1) cfg-5 :delay (set! a3-2 (-> s5-0 bbox4w max data 0))) + (b! (= a0-2 v1-3) cfg-5 :delay (set! v1-4 (- a1-4 a0-2))) + ) + (b! (> v1-4 0) cfg-5 :delay (.lvf vf1 (&-> s5-0 normal quad))) + (.lvf vf2 (&-> s5-0 bbox4w min quad)) + (.lvf vf3 (&-> s5-0 vertex 0 quad)) + (.lvf vf4 (&-> s5-0 vertex 1 quad)) + (.lvf vf5 (&-> s5-0 vertex 2 quad)) + (set! (-> arg0 best-u) f0-1) + (set! (-> arg0 best-to-prim) (the-as collide-shape-prim a2-3)) + (set! (-> arg0 best-from-prim) obj) + (set! (-> arg0 best-tri pat) (the-as pat-surface a3-2)) + (.svf (&-> arg0 best-tri intersect quad) vf1) + (.svf (&-> arg0 best-tri normal quad) vf2) + (.svf (&-> arg0 best-tri vertex 0 quad) vf3) + (.svf (&-> arg0 best-tri vertex 1 quad) vf4) + (.svf (&-> arg0 best-tri vertex 2 quad) vf5) + (label cfg-5) + (dummy-9 + *touching-list* + obj + (the-as collide-shape-prim a2-3) + f0-1 + (the-as collide-shape #f) + s5-0 + ) + ) + ) + ) + ) + ) + 0 + (none) + ) + ) + +(defmethod + collide-with-collide-cache-prim-sphere + collide-shape-prim-mesh + ((obj collide-shape-prim-mesh) + (arg0 collide-shape-intersect) + (arg1 collide-cache-prim) + ) + (format + 0 + "ERROR: collide-shape-prim-mesh vs. collide-cache-prim sphere is not currently supported!~%" + ) + (none) + ) + +(defmethod + collide-with-collide-cache-prim-sphere + collide-shape-prim-group + ((obj collide-shape-prim-group) + (arg0 collide-shape-intersect) + (arg1 collide-cache-prim) + ) + (let ((s3-0 (-> arg1 prim-core collide-as))) + (dotimes (s2-0 (-> obj num-prims)) + (let ((a0-1 (-> obj prims s2-0))) + (if (logtest? (-> a0-1 collide-with) s3-0) + (collide-with-collide-cache-prim-sphere a0-1 arg0 arg1) + ) + ) + ) + ) + (none) + ) + +(defun + find-ground-point + ((arg0 control-info) (arg1 vector) (arg2 float) (arg3 float)) + (local-vars (sv-176 int) (sv-192 int)) + (let ((f30-1 (if (< 819.2 (vector-xz-length (-> arg0 transv))) + (vector-y-angle (-> arg0 transv)) + (y-angle arg0) + ) + ) + (s2-0 (-> arg0 trans)) + (s1-0 (new 'stack-no-clear 'vector)) + (s0-0 (new 'stack-no-clear 'collide-mesh-cache-tri)) + ) + (let ((a1-1 (new 'stack-no-clear 'bounding-box))) + (set! (-> arg1 w) 0.0) + (dotimes (v1-1 3) + (set! (-> a1-1 min data v1-1) (- (-> s2-0 data v1-1) arg3)) + (set! (-> a1-1 max data v1-1) (+ (-> s2-0 data v1-1) arg3)) + ) + (set! (-> a1-1 min y) (+ -40960.0 (-> s2-0 y))) + (set! (-> a1-1 max y) (+ 20480.0 (-> s2-0 y))) + (dummy-13 + *collide-cache* + a1-1 + (-> arg0 root-prim collide-with) + (-> arg0 process) + (the-as uint 1) + ) + ) + (set! sv-176 0) + (while (< sv-176 8) + (let ((f28-0 (+ f30-1 (if (zero? (logand sv-176 1)) + (* 8192.0 (the float (/ sv-176 2))) + (* -8192.0 (the float (/ sv-176 2))) + ) + ) + ) + ) + (set! sv-192 0) + (let ((f26-0 arg3)) + (set-vector! s1-0 0.0 0.0 arg3 1.0) + (vector-rotate-y! s1-0 s1-0 f28-0) + (if + (>= + (dummy-18 + *collide-cache* + (vector+! + (new 'stack-no-clear 'vector) + s2-0 + (new 'static 'vector :y 20480.0 :w 1.0) + ) + s1-0 + 2048.0 + (the-as int (-> arg0 root-prim collide-with)) + s0-0 + 1 + ) + 0.0 + ) + (set! + f26-0 + (+ -6144.0 (vector-vector-xz-distance s2-0 (-> s0-0 normal))) + ) + ) + (let ((f24-0 arg2)) + (while (>= f26-0 f24-0) + (set-vector! s1-0 0.0 0.0 f24-0 1.0) + (vector-rotate-y! s1-0 s1-0 f28-0) + (vector+! s1-0 s2-0 s1-0) + (set! (-> s1-0 y) (+ 20480.0 (-> s2-0 y))) + (when + (>= + (dummy-18 + *collide-cache* + s1-0 + (new 'static 'vector :y -251658240.0 :w 1.0) + 10240.0 + (the-as int (-> arg0 root-prim collide-with)) + s0-0 + 1 + ) + 0.0 + ) + (cond + ((and + (zero? (shr (shl (-> s0-0 bbox4w max data 0) 58) 61)) + (zero? (shr (shl (-> s0-0 bbox4w max data 0) 44) 58)) + (< 0.7 (the-as float (-> s0-0 bbox4w min data 1))) + ) + (set! (-> arg1 quad) (-> s0-0 normal quad)) + (set! sv-192 (+ sv-192 1)) + (if (>= sv-192 2) + (return arg1) + ) + ) + ((and + (= (shr (shl (-> s0-0 bbox4w max data 0) 58) 61) 1) + (< (+ 4096.0 (-> s2-0 y)) (-> s0-0 normal y)) + ) + (goto cfg-35) + ) + ) + ) + (set! f24-0 (+ 4096.0 f24-0)) + ) + ) + ) + ) + (label cfg-35) + (set! sv-176 (+ sv-176 1)) + ) + ) + (the-as vector #f) + ) + +(defun target-attack-up ((arg0 target) (arg1 symbol) (arg2 symbol)) + (with-pp + (let + ((s4-0 + (find-ground-point + (-> arg0 control) + (new 'stack-no-clear 'vector) + 8192.0 + 40960.0 + ) + ) + ) + (set! s4-0 (cond + (s4-0 + (empty) + s4-0 + ) + (else + (-> arg0 control unknown-vector54) + ) + ) + ) + (let* + ((s2-1 + (vector-! (new 'stack-no-clear 'vector) s4-0 (-> arg0 control trans)) + ) + (f30-1 (fmax 8192.0 (fmin 40960.0 (vector-xz-length s2-1)))) + ) + (cond + ((< + (fabs + (vector-dot + (-> arg0 control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) s4-0 (-> arg0 control trans)) + ) + ) + 40960.0 + ) + (vector-xz-normalize! s2-1 f30-1) + (let ((s1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> s1-0 from) pp) + (set! (-> s1-0 num-params) 2) + (set! (-> s1-0 message) arg1) + (set! (-> s1-0 param 0) (the-as uint #f)) + (let ((s3-1 (new 'static 'attack-info :mask #x8a2))) + (set! (-> s3-1 mode) arg2) + (set! (-> s3-1 vector quad) (-> s2-1 quad)) + (set! + (-> s3-1 shove-up) + (+ + (lerp-scale 4096.0 16384.0 f30-1 4096.0 40960.0) + (fmax 0.0 (- (-> s4-0 y) (-> arg0 control trans y))) + ) + ) + (set! (-> s3-1 angle) 'up) + (set! (-> s1-0 param 1) (the-as uint s3-1)) + ) + (send-event-function arg0 s1-0) + ) + ) + (else + (let ((a1-6 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-6 from) pp) + (set! (-> a1-6 num-params) 2) + (set! (-> a1-6 message) arg1) + (set! (-> a1-6 param 0) (the-as uint #f)) + (let ((v1-12 (new 'static 'attack-info :mask #xca2))) + (set! (-> v1-12 mode) arg2) + (set! + (-> v1-12 vector quad) + (-> + (new 'static 'attack-info + :trans (new 'static 'vector :y 40960.0 :w 1.0) + :speed (the-as float #x1) + ) + trans + quad + ) + ) + (set! (-> v1-12 shove-up) 40960.0) + (set! (-> v1-12 angle) 'up) + (set! (-> v1-12 control) 1.0) + (set! (-> a1-6 param 1) (the-as uint v1-12)) + ) + (send-event-function arg0 a1-6) + ) + ) + ) + ) + ) + (none) + ) + ) + +(defmethod + dummy-56 + collide-shape-moving + ((obj collide-shape-moving) (arg0 pat-surface)) + (with-pp + (set! (-> obj cur-pat) arg0) + (set! (-> obj poly-pat) arg0) + (case (-> arg0 material) + (((pat-material ice)) + (set! (-> obj surf) *ice-surface*) + ) + (((pat-material quicksand)) + (set! (-> obj surf) *quicksand-surface*) + ) + (((pat-material tube)) + (set! (-> obj surf) *no-walk-surface*) + ) + (((pat-material rotate)) + (set! (-> obj surf) *rotate-surface*) + ) + (else + (set! (-> obj surf) *standard-ground-surface*) + ) + ) + (if (logtest? (-> obj root-prim prim-core action) 512) + (set! (-> obj surf) *race-track-surface*) + ) + (when (nonzero? (-> arg0 event)) + (case (-> arg0 event) + (((pat-event deadly)) + (let ((a1-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-3 from) pp) + (set! (-> a1-3 num-params) 2) + (set! (-> a1-3 message) 'attack) + (set! (-> a1-3 param 0) (the-as uint #f)) + (let ((v1-19 (new 'static 'attack-info :mask #xa0))) + (set! (-> v1-19 mode) 'deadly) + (set! (-> v1-19 shove-up) 12288.0) + (set! (-> a1-3 param 1) (the-as uint v1-19)) + ) + (send-event-function (-> obj process) a1-3) + ) + ) + (((pat-event burn)) + (let ((a1-6 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-6 from) pp) + (set! (-> a1-6 num-params) 2) + (set! (-> a1-6 message) 'attack) + (set! (-> a1-6 param 0) (the-as uint #f)) + (let ((v1-23 (new 'static 'attack-info :mask #xa0))) + (set! (-> v1-23 mode) 'burn) + (set! (-> v1-23 shove-up) 12288.0) + (set! (-> a1-6 param 1) (the-as uint v1-23)) + ) + (send-event-function (-> obj process) a1-6) + ) + ) + (((pat-event deadlyup)) + (target-attack-up + (the-as target (-> obj process)) + 'attack-or-shove + 'deadlyup + ) + ) + (((pat-event burnup)) + (if + (zero? + (logand + (-> + (the-as target (-> obj process)) + control + root-prim + prim-core + action + ) + 512 + ) + ) + (target-attack-up + (the-as target (-> obj process)) + 'attack-or-shove + 'burnup + ) + ) + ) + (((pat-event melt)) + (let ((a1-15 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-15 from) pp) + (set! (-> a1-15 num-params) 2) + (set! (-> a1-15 message) 'attack-invinc) + (set! (-> a1-15 param 0) (the-as uint #f)) + (let ((a2-8 (new 'static 'attack-info :mask #x20))) + (set! (-> a2-8 mode) 'melt) + (set! (-> a1-15 param 1) (the-as uint a2-8)) + ) + (send-event-function (-> obj process) a1-15) + ) + ) + (((pat-event endlessfall)) + (let ((a1-17 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-17 from) pp) + (set! (-> a1-17 num-params) 2) + (set! (-> a1-17 message) 'attack-invinc) + (set! (-> a1-17 param 0) (the-as uint #f)) + (let ((a2-9 (new 'static 'attack-info :mask #x20))) + (set! (-> a2-9 mode) 'endlessfall) + (set! (-> a1-17 param 1) (the-as uint a2-9)) + ) + (send-event-function (-> obj process) a1-17) + ) + ) + ) + ) + 0 + (none) + ) + ) + +(defun + default-collision-reaction + ((arg0 collide-shape-moving) + (arg1 collide-shape-intersect) + (arg2 vector) + (arg3 vector) + ) + (local-vars + (sv-64 vector) + (sv-68 vector) + (sv-72 vector) + (sv-80 int) + (sv-128 symbol) + ) + (set! sv-64 (new-stack-vector0)) + (set! sv-68 (new-stack-vector0)) + (set! sv-72 (new 'stack-no-clear 'vector)) + (set! sv-80 0) + (set! (-> sv-72 quad) (-> arg3 quad)) + (let ((a1-1 (new 'stack-no-clear 'vector))) + (vector-float*! a1-1 (-> arg1 move-vec) (-> arg1 best-u)) + (TODO-RENAME-28 arg0 a1-1) + ) + (dummy-56 arg0 (-> arg1 best-tri pat)) + (vector-! + sv-64 + (the-as vector (-> arg1 best-from-prim prim-core)) + (-> arg1 best-tri intersect) + ) + (set! (-> sv-64 w) 1.0) + (vector-normalize! sv-64 1.0) + (set! (-> arg0 coverage) (vector-dot sv-64 (-> arg1 best-tri normal))) + (let ((v1-16 (-> sv-64 quad))) + (set! (-> sv-68 quad) v1-16) + ) + (if (= (-> arg1 best-u) 0.0) + (TODO-RENAME-28 arg0 sv-68) + ) + (set! (-> arg0 surface-normal quad) (-> sv-68 quad)) + (set! (-> arg0 poly-normal quad) (-> arg1 best-tri normal quad)) + (set! + (-> arg0 surface-angle) + (vector-dot sv-68 (-> arg0 dynam gravity-normal)) + ) + (set! + (-> arg0 poly-angle) + (vector-dot (-> arg0 poly-normal) (-> arg0 dynam gravity-normal)) + ) + (set! + (-> arg0 touch-angle) + (vector-dot + sv-68 + (vector-normalize! (vector-negate! (new-stack-vector0) sv-72) 1.0) + ) + ) + (if (< (-> arg0 poly-angle) -0.2) + (set! sv-80 (logior sv-80 16)) + ) + (set! + sv-128 + (< + (fabs (-> arg0 surface-angle)) + (-> *pat-mode-info* (-> arg0 cur-pat mode) wall-angle) + ) + ) + (when (zero? (logand (-> arg0 prev-status) 1)) + (set! + (-> arg0 ground-impact-vel) + (- (vector-dot (-> arg0 transv) (-> arg0 dynam gravity-normal))) + ) + (when (not sv-128) + (let ((f30-0 (- 1.0 (-> arg0 surf impact-fric)))) + (when (< f30-0 1.0) + (let ((s3-1 (new-stack-vector0)) + (f28-0 (vector-dot (-> arg0 dynam gravity-normal) sv-72)) + ) + 0.0 + (vector-! + s3-1 + sv-72 + (vector-float*! s3-1 (-> arg0 dynam gravity-normal) f28-0) + ) + (let* ((f0-22 (vector-length s3-1)) + (f1-4 f0-22) + ) + (if (< f28-0 0.0) + (set! f28-0 (* f28-0 f30-0)) + ) + (vector+! + sv-72 + (vector-float*! sv-72 (-> arg0 dynam gravity-normal) f28-0) + (vector-float*! s3-1 s3-1 (/ f0-22 f1-4)) + ) + ) + ) + ) + ) + ) + ) + (set! sv-80 (logior sv-80 4)) + (if (-> arg1 best-to-prim) + (set! sv-80 (logior sv-80 32)) + ) + (cond + (sv-128 + (set! sv-80 (logior sv-80 8)) + (set! (-> arg0 cur-pat mode) 1) + ) + (else + (set! sv-80 (logior sv-80 1)) + (set! (-> arg0 local-normal quad) (-> sv-68 quad)) + ) + ) + (vector-reflect-flat! arg2 sv-72 sv-68) + (when (and (not sv-128) (>= (-> arg0 coverage) 0.9)) + (set! sv-80 (logior sv-80 2)) + (set! (-> arg0 ground-poly-normal quad) (-> arg0 poly-normal quad)) + (when (!= (-> arg0 poly-pat mode) (pat-mode wall)) + (set! (-> arg0 ground-pat) (-> arg0 poly-pat)) + (set! (-> arg0 ground-touch-point quad) (-> arg1 best-tri intersect quad)) + ) + ) + (logior! (-> arg0 status) sv-80) + sv-80 + (none) + ) + +(defun + simple-collision-reaction + ((arg0 collide-shape-moving) (arg1 collide-shape-intersect)) + (let ((s5-0 0)) + (let ((a1-1 (new 'stack-no-clear 'vector))) + (vector-float*! a1-1 (-> arg1 move-vec) (-> arg1 best-u)) + (TODO-RENAME-28 arg0 a1-1) + ) + (let ((f0-2 (vector-dot (-> arg0 transv) (-> arg1 best-tri normal))) + (v1-6 (new 'stack-no-clear 'vector)) + ) + (vector-float*! v1-6 (-> arg1 best-tri normal) (* 1.5 f0-2)) + (vector-! (-> arg0 transv) (-> arg0 transv) v1-6) + ) + (let ((v0-1 (logior s5-0 7))) + (logior! (-> arg0 status) v0-1) + ) + ) + (none) + ) + +(defmethod + dummy-63 + collide-shape-moving + ((obj collide-shape-moving) (arg0 vector) (arg1 vector) (arg2 float)) + (local-vars (sv-192 int)) + (let ((s5-0 (new 'stack 'collide-shape-intersect)) + (s2-0 (new 'stack-no-clear 'vector)) + ) + (vector-float*! s2-0 arg1 (* arg2 (-> *display* seconds-per-frame))) + (init! s5-0 s2-0) + (let* ((s1-1 (-> obj root-prim)) + (v1-4 *collide-cache*) + (s0-0 (the-as collide-cache-prim (-> v1-4 prims))) + ) + (set! sv-192 (-> v1-4 num-prims)) + (while (nonzero? sv-192) + (set! sv-192 (+ sv-192 -1)) + (when (logtest? (-> s1-1 collide-with) (-> s0-0 prim-core collide-as)) + (if (>= (-> s0-0 prim-core prim-type) 0) + (collide-with-collide-cache-prim-mesh s1-1 s5-0 s0-0) + (collide-with-collide-cache-prim-sphere s1-1 s5-0 s0-0) + ) + ) + (set! s0-0 (-> (the-as (inline-array collide-cache-prim) s0-0) 1)) + ) + ) + (let ((f30-0 (-> s5-0 best-u))) + (cond + ((>= f30-0 0.0) + (let ((s2-1 (new 'stack-no-clear 'vector))) + (if *display-collision-marks* + (set! (-> s2-1 quad) (-> arg1 quad)) + ) + (set! + (-> obj prev-status) + (the-as uint ((-> obj reaction) obj s5-0 arg0 arg1)) + ) + (when *display-collision-marks* + (let + ((t1-0 (-> *pat-mode-info* (-> s5-0 best-tri pat mode) hilite-color))) + (add-debug-outline-triangle + #t + (bucket-id debug-draw1) + (the-as vector (-> s5-0 best-tri)) + (-> s5-0 best-tri vertex 1) + (-> s5-0 best-tri vertex 2) + t1-0 + ) + ) + (add-debug-vector + #t + (bucket-id debug-draw1) + (-> s5-0 best-tri intersect) + s2-1 + (meters 0.00007324219) + (new 'static 'rgba :r #xff :g #xa0 :a #x80) + ) + (add-debug-vector + #t + (bucket-id debug-draw1) + (-> s5-0 best-tri intersect) + arg0 + (meters 0.00007324219) + (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) + ) + (if (= (-> obj process type) target) + (add-debug-vector + #t + (bucket-id debug-draw1) + (-> s5-0 best-tri intersect) + (-> obj surface-normal) + (meters 0.5) + (-> *pat-mode-info* (-> obj cur-pat mode) hilite-color) + ) + ) + ) + ) + (return f30-0) + ) + (else + (set! (-> obj reaction-flag) (the-as uint 0)) + ((-> obj no-reaction) obj s5-0 arg0 arg1) + (set! (-> obj prev-status) (the-as uint 0)) + (TODO-RENAME-28 obj s2-0) + (set! (-> arg0 quad) (-> arg1 quad)) + (return 1.0) + ) + ) + ) + ) + (the-as none 0) + (the-as float 1.0) + ) + +(defmethod dummy-37 collide-shape ((obj collide-shape) (arg0 vector)) + (local-vars (at-0 int)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + ) + (init-vf0-vector) + (let ((t9-0 (method-of-object obj TODO-RENAME-28)) + (v1-1 (new 'stack-no-clear 'vector)) + ) + (.lvf vf1 (&-> arg0 quad)) + (let ((f0-0 (-> *display* seconds-per-frame))) + (.mov at-0 f0-0) + ) + (.mov vf2 at-0) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> v1-1 quad) vf1) + (t9-0 obj v1-1) + ) + (none) + ) + ) + +(defmethod + dummy-37 + collide-shape-moving + ((obj collide-shape-moving) (arg0 vector)) + (dummy-47 obj) + (set! (-> obj trans-old 2 quad) (-> obj trans-old 1 quad)) + (set! (-> obj trans-old 1 quad) (-> obj trans-old 0 quad)) + (set! (-> obj trans-old 0 quad) (-> obj trans quad)) + (set! (-> obj prev-status) (-> obj status)) + (set! (-> obj status) (logand -16128 (-> obj status))) + (set! (-> obj local-normal quad) (-> obj dynam gravity-normal quad)) + (set! (-> obj surface-normal quad) (-> obj dynam gravity-normal quad)) + (set! (-> obj poly-normal quad) (-> obj dynam gravity-normal quad)) + (set! (-> obj coverage) 0.0) + (set! (-> obj touch-angle) 0.0) + (let ((f30-0 1.0) + (s4-0 0) + ) + (while + (and + (< 0.05 f30-0) + (and + (< s4-0 (the-as int (-> obj max-iteration-count))) + (not (and (= (-> arg0 x) 0.0) (= (-> arg0 y) 0.0) (= (-> arg0 z) 0.0))) + ) + ) + (let ((f28-0 (dummy-63 obj arg0 arg0 f30-0))) + (dummy-11 *touching-list* f28-0) + (set! f30-0 (- f30-0 (* f28-0 f30-0))) + ) + (+! s4-0 1) + ) + ) + 0 + (none) + ) + +(defmethod dummy-37 control-info ((obj control-info) (arg0 vector)) + (stopwatch-start (-> *collide-stats* total-target)) + (when (< 1638400.0 (vector-length arg0)) + (format + 0 + "WARNING: target vel is ~M m/s, reseting to zero.~%" + (vector-length arg0) + ) + (vector-reset! arg0) + ) + (set! (-> obj unknown-vector15 quad) (-> obj unknown-vector14 quad)) + (vector-matrix*! + (-> obj unknown-vector14) + (-> obj unknown-vector13) + (-> obj unknown-matrix02) + ) + (vector-! + (-> obj unknown-vector16) + (-> obj unknown-vector14) + (-> obj unknown-vector15) + ) + (let + ((a1-6 + (vector-! + (new 'stack-no-clear 'vector) + (-> obj unknown-vector11) + (-> obj unknown-vector14) + ) + ) + ) + (vector-seek! + (-> obj unknown-vector12) + a1-6 + (* 16384.0 (-> *display* seconds-per-frame)) + ) + ) + (let + ((s3-1 + (vector+float*! (new-stack-vector0) arg0 (-> obj unknown-vector16) 60.0) + ) + (s4-1 (new 'stack-no-clear 'vector)) + ) + (set! (-> s4-1 quad) (-> arg0 quad)) + (let ((t9-7 (method-of-type collide-shape-moving dummy-37))) + (t9-7 obj s3-1) + ) + (let ((s1-0 (new-stack-vector0))) + (set! (-> s1-0 quad) (-> s4-1 quad)) + (let ((s2-1 (new-stack-vector0))) + (set! (-> s2-1 quad) (-> s3-1 quad)) + (let ((s0-0 (new-stack-vector0))) + (let ((f0-4 (vector-dot (-> obj dynam gravity-normal) s1-0))) + 0.0 + (vector-! + s0-0 + s1-0 + (vector-float*! s0-0 (-> obj dynam gravity-normal) f0-4) + ) + ) + (let* ((f0-5 (vector-length s0-0)) + (f1-2 f0-5) + (f2-0 0.0) + ) + (vector+! + s1-0 + (vector-float*! s1-0 (-> obj dynam gravity-normal) f2-0) + (vector-float*! s0-0 s0-0 (/ f0-5 f1-2)) + ) + ) + ) + (let ((s0-1 (new-stack-vector0))) + (let ((f0-8 (vector-dot (-> obj dynam gravity-normal) s2-1))) + 0.0 + (vector-! + s0-1 + s2-1 + (vector-float*! s0-1 (-> obj dynam gravity-normal) f0-8) + ) + ) + (let* ((f0-9 (vector-length s0-1)) + (f1-4 f0-9) + (f2-1 0.0) + ) + (vector+! + s2-1 + (vector-float*! s2-1 (-> obj dynam gravity-normal) f2-1) + (vector-float*! s0-1 s0-1 (/ f0-9 f1-4)) + ) + ) + ) + (vector-normalize! s1-0 1.0) + (vector-normalize! s2-1 1.0) + (let ((f30-1 (vector-dot s1-0 s2-1))) + (cond + ((and + (!= (vector-length (-> obj unknown-vector01)) 0.0) + (if (logtest? (-> obj status) 8) + (< f30-1 0.9999) + (< f30-1 0.95) + ) + ) + (set! + (-> obj unknown-float70) + (seek + (-> obj unknown-float70) + 1.0 + (* 4.0 (-> *display* seconds-per-frame)) + ) + ) + (set! + (-> obj unknown-float71) + (seek + (-> obj unknown-float71) + (if (= (-> obj unknown-surface00 mode) 'air) + 1.0 + 0.0 + ) + (* 4.0 (-> *display* seconds-per-frame)) + ) + ) + (logior! (-> obj status) 512) + ) + (else + (set! + (-> obj unknown-float70) + (seek + (-> obj unknown-float70) + 0.0 + (* 2.0 (-> *display* seconds-per-frame)) + ) + ) + (set! + (-> obj unknown-float71) + (seek + (-> obj unknown-float71) + 0.0 + (* 2.0 (-> *display* seconds-per-frame)) + ) + ) + ) + ) + ) + ) + ) + (if (logtest? (-> obj status) 1) + (set! (-> arg0 quad) (-> s3-1 quad)) + (vector--float*! arg0 s3-1 (-> obj unknown-vector16) 60.0) + ) + (if + (and + (logtest? (-> obj status) 1) + (and + (zero? (logand (-> obj status) 520)) + (< (vector-length (-> obj unknown-vector61)) (vector-length s4-1)) + ) + ) + (set! (-> obj unknown-vector61 quad) (-> s4-1 quad)) + ) + ) + (let + ((s5-1 + (vector-normalize-copy! + (new 'stack-no-clear 'vector) + (the-as vector (&-> obj unknown-vector120)) + 1.0 + ) + ) + (f0-32 (vector-length (the-as vector (&-> obj unknown-vector120)))) + ) + (set! (-> obj unknown-float140) (if (= f0-32 0.0) + 0.0 + (fmax + 0.0 + (/ (vector-dot (-> obj transv) s5-1) f0-32) + ) + ) + ) + ) + (stopwatch-stop (-> *collide-stats* total-target)) + 0 + (none) + ) + +(defmethod + TODO-RENAME-61 + collide-shape-moving + ((obj collide-shape-moving) (arg0 vector) (arg1 vector) (arg2 vector)) + (TODO-RENAME-30 obj arg0) + (set! (-> arg1 y) 0.0) + (logior! (-> obj status) 7) + (set! (-> obj poly-normal quad) (-> arg2 quad)) + (set! (-> obj surface-normal quad) (-> arg2 quad)) + (set! (-> obj local-normal quad) (-> arg2 quad)) + (set! (-> obj ground-poly-normal quad) (-> arg2 quad)) + (set! + (-> obj ground-impact-vel) + (- (vector-dot arg1 (-> obj dynam gravity-normal))) + ) + (set! (-> obj ground-touch-point quad) (-> arg0 quad)) + 0 + (none) + ) + +(defmethod + dummy-57 + collide-shape-moving + ((obj collide-shape-moving) (arg0 vector)) + (local-vars (at-0 int)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + ) + (init-vf0-vector) + (dummy-47 obj) + (set! (-> obj trans-old 2 quad) (-> obj trans-old 1 quad)) + (set! (-> obj trans-old 1 quad) (-> obj trans-old 0 quad)) + (set! (-> obj trans-old 0 quad) (-> obj trans quad)) + (set! (-> obj prev-status) (-> obj status)) + (set! (-> obj status) (logand -16128 (-> obj status))) + (set! (-> obj local-normal quad) (-> obj dynam gravity-normal quad)) + (set! (-> obj surface-normal quad) (-> obj dynam gravity-normal quad)) + (set! (-> obj poly-normal quad) (-> obj dynam gravity-normal quad)) + (set! (-> obj coverage) 0.0) + (set! (-> obj touch-angle) 0.0) + (let* ((a0-12 obj) + (t9-1 (method-of-object a0-12 TODO-RENAME-28)) + (a1-1 (new 'stack-no-clear 'vector)) + ) + (.lvf vf1 (&-> arg0 quad)) + (let ((f0-2 (-> *display* seconds-per-frame))) + (.mov at-0 f0-2) + ) + (.mov vf2 at-0) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> a1-1 quad) vf1) + (t9-1 a0-12 a1-1) + ) + (set! (-> obj shadow-pos quad) (-> obj trans quad)) + 0 + (none) + ) + ) + +(defmethod + dummy-58 + collide-shape-moving + ((obj collide-shape-moving) (arg0 vector)) + (dummy-57 obj arg0) + (let ((a1-1 (new 'stack-no-clear 'touching-shapes-entry))) + (set! (-> a1-1 cshape1) (the-as collide-shape 1)) + (set! (-> a1-1 cshape2) (the-as collide-shape *touching-list*)) + (when (dummy-40 obj a1-1) + (TODO-RENAME-30 obj (the-as vector (-> obj trans-old))) + (return #t) + ) + ) + #f + ) + +(defmethod + dummy-64 + collide-shape-moving + ((obj collide-shape-moving) (arg0 collide-tri-result) (arg1 vector)) + (TODO-RENAME-30 obj arg1) + (logior! (-> obj status) 7) + (let ((v1-4 (-> arg0 normal))) + (set! (-> obj poly-normal quad) (-> v1-4 quad)) + (set! (-> obj surface-normal quad) (-> v1-4 quad)) + (set! (-> obj local-normal quad) (-> v1-4 quad)) + (set! (-> obj ground-poly-normal quad) (-> v1-4 quad)) + ) + (set! (-> obj poly-pat) (-> arg0 pat)) + (set! (-> obj cur-pat) (-> arg0 pat)) + (set! (-> obj ground-pat) (-> arg0 pat)) + (set! (-> obj ground-touch-point quad) (-> arg1 quad)) + 0 + (none) + ) + +;; WARN: Stack slot offset 128 signed mismatch +(defmethod + dummy-59 + collide-shape-moving + ((obj collide-shape-moving) + (arg0 vector) + (arg1 uint) + (arg2 float) + (arg3 symbol) + (arg4 symbol) + (arg5 symbol) + ) + (local-vars (sv-128 float) (sv-144 collide-mesh-cache-tri)) + (set! sv-128 arg2) + (let ((s5-0 arg3)) + (let ((s3-0 arg4) + (s1-0 arg5) + ) + (if *debug-segment* + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80) + ) + ) + (dummy-57 obj arg0) + (let ((s0-0 (-> obj shadow-pos))) + (set! (-> s0-0 quad) (-> obj trans quad)) + (set! sv-144 (new 'stack-no-clear 'collide-mesh-cache-tri)) + (+! (-> s0-0 y) sv-128) + 0.0 + (let ((f0-4 (if s1-0 + (misty-ambush-height-probe s0-0 81920.0) + (dummy-10 + *collide-cache* + s0-0 + (new 'static 'vector :y -81920.0 :w 1.0) + 40.96 + (the-as int arg1) + (-> obj process) + sv-144 + 1 + ) + ) + ) + ) + (cond + ((>= f0-4 0.0) + (let ((a2-3 (new 'static 'vector :y -81920.0 :w 1.0))) + (vector+float*! s0-0 s0-0 a2-3 f0-4) + ) + (when (>= (-> s0-0 y) (-> obj trans y)) + (dummy-64 obj (the-as collide-tri-result sv-144) s0-0) + (set! + (-> obj ground-impact-vel) + (- (vector-dot arg0 (-> obj dynam gravity-normal))) + ) + (set! (-> arg0 y) 0.0) + ) + ) + (s3-0 + (set! (-> obj trans y) (-> obj trans-old 0 y)) + ) + ) + ) + ) + ) + (when (logtest? (-> obj root-prim collide-with) 30) + (let ((a1-7 (new 'stack-no-clear 'touching-shapes-entry))) + (set! (-> a1-7 cshape1) (the-as collide-shape 1)) + (set! (-> a1-7 cshape2) (the-as collide-shape *touching-list*)) + (when (dummy-40 obj a1-7) + (if s5-0 + (TODO-RENAME-30 obj (the-as vector (-> obj trans-old))) + ) + ) + ) + ) + ) + (if *debug-segment* + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :g #xff :a #x80) + ) + ) + 0 + (none) + ) + +(defmethod + dummy-60 + collide-shape-moving + ((obj collide-shape-moving) + (arg0 float) + (arg1 float) + (arg2 symbol) + (arg3 uint) + ) + (if *debug-segment* + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80) + ) + ) + (let ((s4-0 (new 'stack-no-clear 'vector)) + (s3-0 (new 'stack-no-clear 'collide-tri-result)) + ) + (let ((f30-0 (+ arg0 arg1))) + (set! (-> s4-0 quad) (-> obj trans quad)) + (+! (-> s4-0 y) arg0) + 0.0 + (let + ((f0-4 + (fill-and-probe-using-y-probe + *collide-cache* + s4-0 + f30-0 + arg3 + (-> obj process) + s3-0 + (the-as uint 1) + ) + ) + ) + (when (< f0-4 0.0) + (if arg2 + (format + 0 + "WARNING: move-to-ground: (~f ~f) failed to locate ground [~S type ~S]~%" + (* 0.00024414062 (-> s4-0 y)) + (* 0.00024414062 f30-0) + (-> obj process name) + (-> obj process type symbol) + ) + ) + (return #f) + ) + (set! (-> s4-0 y) (- (-> s4-0 y) (* f0-4 f30-0))) + ) + ) + (set! (-> obj shadow-pos quad) (-> s4-0 quad)) + (dummy-64 obj s3-0 s4-0) + ) + (if *debug-segment* + (add-frame + (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) + ) + ) + #t + ) + +(defmethod + dummy-62 + collide-shape-moving + ((obj collide-shape-moving) (arg0 vector) (arg1 float)) + (let* ((s4-0 (vector-negate! (new-stack-vector0) (-> obj dynam gravity))) + (a2-1 (-> obj local-normal)) + (a2-2 (vector-reflect-flat! (new-stack-vector0) s4-0 a2-1)) + ) + (vector--float*! arg0 s4-0 a2-2 (cond + ((logtest? (-> obj status) 1) + (empty) + arg1 + ) + (else + 0.0 + ) + ) + ) + ) + arg0 + ) + +(defmethod dummy-33 collide-shape ((obj collide-shape) (arg0 vector) (arg1 uint)) + (local-vars (at-0 int)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + ) + (init-vf0-vector) + (let ((a0-1 (new 'stack-no-clear 'vector))) + (let ((v1-0 a0-1)) + (.lvf vf1 (&-> arg0 quad)) + (let ((f0-0 (-> *display* seconds-per-frame))) + (.mov at-0 f0-0) + ) + (.mov vf2 at-0) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> v1-0 quad) vf1) + ) + (let ((f0-2 (+ (vector-length a0-1) (if (= (-> obj process type) target) + 4096.0 + 0.0 + ) + ) + ) + ) + (dummy-32 obj f0-2 arg1) + ) + ) + (dummy-37 obj arg0) + (none) + ) + ) + +(defmethod dummy-32 collide-shape ((obj collide-shape) (arg0 object) (arg1 uint)) + (let ((s5-0 (new 'stack-no-clear 'bounding-box))) + (cond + ((dummy-36 obj s5-0 (the-as float arg0) arg1) + (dummy-13 + *collide-cache* + s5-0 + arg1 + (-> obj process) + (the-as uint (-> obj pat-ignore-mask)) + ) + (if (and *display-collide-cache* (= (-> obj process type) target)) + (dummy-9 *collide-cache*) + ) + ) + (else + (initialize *collide-cache*) + ) + ) + ) + (none) + ) + +(defmethod + dummy-36 + collide-shape + ((obj collide-shape) (arg0 bounding-box) (arg1 float) (arg2 uint)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf29 :class vf) + (vf30 :class vf) + (vf31 :class vf) + ) + (init-vf0-vector) + (let ((v1-0 (new 'static 'vector :x 4.096)) + (a0-1 (-> obj root-prim)) + ) + (cond + ((logtest? (-> a0-1 collide-with) arg2) + (.mov vf31 arg1) + (.lvf vf1 (&-> v1-0 quad)) + (.add.x.vf vf31 vf31 vf1 :mask #b1) + (cond + ((dummy-20 a0-1 arg2) + (.mov.vf vf29 vf0 :mask #b1000) + (.mov.vf vf30 vf0 :mask #b1000) + (.svf (&-> arg0 min quad) vf29) + (.svf (&-> arg0 max quad) vf30) + (return #t) + ) + (else + (return #f) + ) + ) + (the-as none 0) + ) + (else + (return #f) + ) + ) + ) + (the-as symbol 0) + ) + ) + +;; WARN: Bad vector register dependency: vf31 +(defmethod dummy-20 collide-shape-prim ((obj collide-shape-prim) (arg0 uint)) + (rlet ((vf1 :class vf) + (vf2 :class vf) + (vf29 :class vf) + (vf30 :class vf) + (vf31 :class vf) + ) + (.lvf vf1 (&-> obj prim-core world-sphere quad)) + (.add.w.vf vf2 vf31 vf1 :mask #b1) + (.add.x.vf vf30 vf1 vf2 :mask #b111) + (.sub.x.vf vf29 vf1 vf2 :mask #b111) + #t + ) + ) + +;; ERROR: function was not converted to expressions. Cannot decompile. + +(defmethod dummy-34 collide-shape ((obj collide-shape) (arg0 uint)) + (dummy-10 (-> obj root-prim) arg0) + ) + +(defmethod dummy-10 collide-shape-prim ((obj collide-shape-prim) (arg0 uint)) + (if (= (-> obj prim-id) arg0) + (return obj) + ) + (the-as collide-shape-prim #f) + ) + +(defmethod + dummy-10 + collide-shape-prim-group + ((obj collide-shape-prim-group) (arg0 uint)) + (if (= (-> obj prim-id) arg0) + (return obj) + ) + (countdown (s4-0 (-> obj num-prims)) + (let ((a0-1 (-> obj prims s4-0))) + (cond + ((= (-> a0-1 type) collide-shape-prim-group) + (let ((a0-2 (dummy-10 a0-1 arg0))) + (if a0-2 + (return a0-2) + ) + ) + ) + (else + (if (= (-> a0-1 prim-id) arg0) + (return a0-1) + ) + ) + ) + ) + ) + (the-as collide-shape-prim #f) + ) + +(defun-debug collide-shape-draw-debug-marks () + (add-debug-sphere + (or *display-collision-marks* *display-target-marks*) + (bucket-id debug-draw0) + (target-pos 0) + 819.2 + (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) + ) + (when *display-collision-marks* + (let ((v1-4 (-> *collide-player-list* alive-list next0))) + *collide-player-list* + (let ((gp-1 (-> v1-4 next0))) + (while (!= v1-4 (-> *collide-player-list* alive-list-end)) + (let ((s5-1 (-> (the-as connection v1-4) param1))) + (if + (or + (and (not *display-actor-anim*) (not *display-process-anim*)) + (or + (= (-> (the-as collide-shape s5-1) process) *target*) + (name= + *display-actor-anim* + (-> (the-as collide-shape s5-1) process name) + ) + (= + (ppointer->process *display-process-anim*) + (-> (the-as collide-shape s5-1) process) + ) + ) + ) + (dummy-31 (the-as collide-shape s5-1)) + ) + ) + (set! v1-4 gp-1) + *collide-player-list* + (set! gp-1 (-> gp-1 next0)) + ) + ) + ) + (let ((v1-19 (-> *collide-hit-by-player-list* alive-list next0))) + *collide-hit-by-player-list* + (let ((gp-2 (-> v1-19 next0))) + (while (!= v1-19 (-> *collide-hit-by-player-list* alive-list-end)) + (let ((s5-2 (-> (the-as connection v1-19) param1))) + (if + (or + (and (not *display-actor-anim*) (not *display-process-anim*)) + (or + (= (-> (the-as collide-shape s5-2) process) *target*) + (name= + *display-actor-anim* + (-> (the-as collide-shape s5-2) process name) + ) + (= + (ppointer->process *display-process-anim*) + (-> (the-as collide-shape s5-2) process) + ) + ) + ) + (dummy-31 (the-as collide-shape s5-2)) + ) + ) + (set! v1-19 gp-2) + *collide-hit-by-player-list* + (set! gp-2 (-> gp-2 next0)) + ) + ) + ) + (let ((v1-34 (-> *collide-usually-hit-by-player-list* alive-list next0))) + *collide-usually-hit-by-player-list* + (let ((gp-3 (-> v1-34 next0))) + (while (!= v1-34 (-> *collide-usually-hit-by-player-list* alive-list-end)) + (let ((s5-3 (-> (the-as connection v1-34) param1))) + (if + (or + (and (not *display-actor-anim*) (not *display-process-anim*)) + (or + (= (-> (the-as collide-shape s5-3) process) *target*) + (name= + *display-actor-anim* + (-> (the-as collide-shape s5-3) process name) + ) + (= + (ppointer->process *display-process-anim*) + (-> (the-as collide-shape s5-3) process) + ) + ) + ) + (dummy-31 (the-as collide-shape s5-3)) + ) + ) + (set! v1-34 gp-3) + *collide-usually-hit-by-player-list* + (set! gp-3 (-> gp-3 next0)) + ) + ) + ) + (let ((v1-49 (-> *collide-hit-by-others-list* alive-list next0))) + *collide-hit-by-others-list* + (let ((gp-4 (-> v1-49 next0))) + (while (!= v1-49 (-> *collide-hit-by-others-list* alive-list-end)) + (let ((s5-4 (-> (the-as connection v1-49) param1))) + (if + (or + (and (not *display-actor-anim*) (not *display-process-anim*)) + (or + (= (-> (the-as collide-shape s5-4) process) *target*) + (name= + *display-actor-anim* + (-> (the-as collide-shape s5-4) process name) + ) + (= + (ppointer->process *display-process-anim*) + (-> (the-as collide-shape s5-4) process) + ) + ) + ) + (dummy-31 (the-as collide-shape s5-4)) + ) + ) + (set! v1-49 gp-4) + *collide-hit-by-others-list* + (set! gp-4 (-> gp-4 next0)) + ) + ) + ) + ) + 0 + (none) + ) + +(defmethod dummy-31 collide-shape ((obj collide-shape)) + (if (sphere-in-view-frustum? (the-as sphere (-> obj root-prim prim-core))) + (debug-draw-world-sphere (-> obj root-prim)) + ) + (none) + ) + +(define *col-timer* (new 'global 'stopwatch)) + +(define *frame-timer* (new 'global 'stopwatch)) + +(define *col-timer-enable* #t) + +(defun debug-report-col-stats () + (when *col-timer-enable* + (stopwatch-end *frame-timer*) + (format *stdcon* "col stats:~%") + (format + *stdcon* + " col ~F ms~%" + (* 1000.0 (stopwatch-elapsed-seconds *col-timer*)) + ) + (format + *stdcon* + " frame ~F ms~%" + (* 1000.0 (stopwatch-elapsed-seconds *frame-timer*)) + ) + (stopwatch-init *col-timer*) + (stopwatch-init *frame-timer*) + (stopwatch-begin *frame-timer*) + ) + ) + +(defmethod dummy-47 collide-shape ((obj collide-shape)) + (dummy-25 (-> obj root-prim) (-> obj process)) + #f + ) + +(defmethod + dummy-25 + collide-shape-prim + ((obj collide-shape-prim) (arg0 process-drawable)) + (local-vars (a0-2 float) (a0-4 float) (a0-6 float)) + (rlet ((acc :class vf) + (Q :class vf) + (vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + ) + (init-vf0-vector) + (let ((a1-1 (-> arg0 node-list)) + (v1-0 (-> obj cshape)) + (a0-1 (-> obj transform-index)) + ) + (cond + ((nonzero? a1-1) + (cond + ((>= a0-1 0) + (let ((v1-4 (-> a1-1 data a0-1 bone transform))) + (.lvf vf5 (&-> v1-4 vector 3 quad)) + (.lvf vf1 (&-> obj local-sphere quad)) + (.lvf vf2 (&-> v1-4 vector 0 quad)) + (.mul.w.vf acc vf5 vf0) + (.div.vf Q vf0 vf5 :fsf #b11 :ftf #b11) + (.lvf vf3 (&-> v1-4 vector 1 quad)) + (.add.mul.x.vf acc vf2 vf1 acc) + (.lvf vf4 (&-> v1-4 vector 2 quad)) + ) + (.add.mul.y.vf acc vf3 vf1 acc) + (.add.mul.z.vf vf1 vf4 vf1 acc :mask #b111) + (.mul.vf vf1 vf1 Q :mask #b111) + (.svf (&-> obj prim-core world-sphere quad) vf1) + (.mov a0-2 vf1) + ) + (else + (when (= a0-1 -2) + (.lvf vf1 (&-> obj local-sphere quad)) + (.lvf vf2 (&-> v1-0 trans quad)) + (.add.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> obj prim-core world-sphere quad) vf1) + (.mov a0-4 vf1) + ) + ) + ) + ) + (else + (when (!= a0-1 -1) + (.lvf vf1 (&-> obj local-sphere quad)) + (.lvf vf2 (&-> v1-0 trans quad)) + (.add.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> obj prim-core world-sphere quad) vf1) + (.mov a0-6 vf1) + ) + ) + ) + ) + (when (= (-> obj type) collide-shape-prim-group) + (countdown (s4-0 (-> (the-as collide-shape-prim-group obj) num-prims)) + (dummy-25 (-> (the-as collide-shape-prim-group obj) prims s4-0) arg0) + ) + #f + ) + ) + ) + +(defmethod TODO-RENAME-28 collide-shape ((obj collide-shape) (arg0 vector)) + (vector+! (-> obj trans) (-> obj trans) arg0) + (dummy-9 (-> obj root-prim) arg0) + (none) + ) + +(defmethod dummy-9 collide-shape-prim ((obj collide-shape-prim) (arg0 vector)) + (vector+! + (the-as vector (-> obj prim-core)) + (the-as vector (-> obj prim-core)) + arg0 + ) + (let ((f0-0 (-> obj local-sphere w))) + (set! (-> obj prim-core world-sphere w) f0-0) + (the-as object f0-0) + ) + ) + +(defmethod + dummy-9 + collide-shape-prim-group + ((obj collide-shape-prim-group) (arg0 vector)) + (vector+! + (the-as vector (-> obj prim-core)) + (the-as vector (-> obj prim-core)) + arg0 + ) + (set! (-> obj prim-core world-sphere w) (-> obj local-sphere w)) + (countdown (s4-0 (-> obj num-prims)) + (let ((a0-2 (-> obj prims s4-0))) + (cond + ((= (-> a0-2 type) collide-shape-prim-group) + (dummy-9 a0-2 arg0) + ) + (else + (vector+! + (the-as vector (-> a0-2 prim-core)) + (the-as vector (-> a0-2 prim-core)) + arg0 + ) + (set! (-> a0-2 prim-core world-sphere w) (-> a0-2 local-sphere w)) + ) + ) + ) + ) + (the-as object #f) + ) + +(defmethod TODO-RENAME-30 collide-shape ((obj collide-shape) (arg0 vector)) + (let ((v1-0 (new 'stack-no-clear 'vector))) + (vector-! v1-0 arg0 (-> obj trans)) + (TODO-RENAME-28 obj v1-0) + ) + (none) + ) + +(defmethod + set-root-prim! + collide-shape + ((obj collide-shape) (arg0 collide-shape-prim)) + (set! (-> obj root-prim) arg0) + arg0 + ) + +(defmethod + set-collide-with! + collide-shape-prim + ((obj collide-shape-prim) (arg0 handle)) + (set! (-> obj collide-with) (the-as uint arg0)) + 0 + (none) + ) + +(defmethod + set-collide-with! + collide-shape-prim-group + ((obj collide-shape-prim-group) (arg0 handle)) + (set! (-> obj collide-with) (the-as uint arg0)) + (dotimes (s4-0 (-> obj num-prims)) + (set-collide-with! (-> obj prims s4-0) arg0) + ) + 0 + (none) + ) + +(defmethod + set-collide-as! + collide-shape-prim + ((obj collide-shape-prim) (arg0 handle)) + (set! (-> obj prim-core collide-as) (the-as uint arg0)) + 0 + (none) + ) + +(defmethod + set-collide-as! + collide-shape-prim-group + ((obj collide-shape-prim-group) (arg0 handle)) + (set! (-> obj prim-core collide-as) (the-as uint arg0)) + (dotimes (s4-0 (-> obj num-prims)) + (set-collide-as! (-> obj prims s4-0) arg0) + ) + 0 + (none) + ) + +(defmethod + set-root-prim-collide-with! + collide-shape + ((obj collide-shape) (arg0 handle)) + (set-collide-with! (-> obj root-prim) arg0) + 0 + (none) + ) + +(defmethod + set-root-prim-collide-as! + collide-shape + ((obj collide-shape) (arg0 handle)) + (set-collide-as! (-> obj root-prim) arg0) + 0 + (none) + ) + +(defmethod + append-prim + collide-shape-prim-group + ((obj collide-shape-prim-group) (arg0 collide-shape-prim)) + (let ((v1-0 (-> obj num-prims))) + (cond + ((>= v1-0 (-> obj allocated-prims)) + (format + 0 + "collide-shape-prim-group::append-prim : Exceeded max # of prims!~%" + ) + ) + (else + (set! (-> obj prims v1-0) arg0) + (set! (-> obj num-prims) (+ v1-0 1)) + ) + ) + ) + (none) + ) + +(defmethod find-collision-meshes collide-shape ((obj collide-shape)) + (let ((s5-0 0)) + (let ((v1-1 (-> obj process draw))) + (when (and (nonzero? v1-1) (-> v1-1 jgeo)) + (let + ((a1-1 + (res-lump-struct (-> v1-1 jgeo extra) 'collide-mesh-group structure) + ) + ) + (if a1-1 + (set! + s5-0 + (num-mesh (-> obj root-prim) (the-as collide-shape-prim a1-1)) + ) + ) + ) + ) + ) + (if (nonzero? s5-0) + (format + 0 + "ERROR: Failed to find collision meshes for ~D prim(s) in ~A!~%" + s5-0 + (-> obj process name) + ) + ) + ) + (dummy-47 obj) + ) + +(defmethod + num-mesh + collide-shape-prim + ((obj collide-shape-prim) (arg0 collide-shape-prim)) + (local-vars (v0-0 int)) + (return 0) + v0-0 + ) + +(defmethod + num-mesh + collide-shape-prim-mesh + ((obj collide-shape-prim-mesh) (arg0 collide-shape-prim)) + (let ((s4-0 (-> obj mesh-id))) + (cond + ((and (>= s4-0 0) (< s4-0 (length arg0))) + (set! + (-> obj mesh) + (the-as collide-mesh (-> arg0 prim-core world-sphere data s4-0)) + ) + (return 0) + ) + (else + (set! (-> obj mesh) #f) + (return 1) + ) + ) + ) + (the-as int 0) + ) + +(defmethod + num-mesh + collide-shape-prim-group + ((obj collide-shape-prim-group) (arg0 collide-shape-prim)) + (let ((gp-0 0)) + (countdown (s3-0 (-> obj num-prims)) + (+! gp-0 (num-mesh (-> obj prims s3-0) arg0)) + ) + gp-0 + ) + ) + +(defmethod + init! + collide-shape-intersect + ((obj collide-shape-intersect) (arg0 vector)) + (set! (-> obj move-vec quad) (-> arg0 quad)) + (set! (-> obj best-u) -100000000.0) + (set! (-> obj best-from-prim) #f) + (set! (-> obj best-to-prim) #f) + #f + ) + +(defmethod debug-draw-world-sphere collide-shape-prim ((obj collide-shape-prim)) + (add-debug-sphere + #t + (bucket-id debug-draw0) + (the-as vector (-> obj prim-core)) + (-> obj local-sphere w) + (new 'static 'rgba :r #xff :g #xff :b #xff :a #x40) + ) + ) + +(defmethod + debug-draw-world-sphere + collide-shape-prim-sphere + ((obj collide-shape-prim-sphere)) + (add-debug-sphere + #t + (bucket-id debug-draw0) + (the-as vector (-> obj prim-core)) + (-> obj local-sphere w) + (the-as rgba (cond + ((and + (zero? (-> obj prim-core collide-as)) + (zero? (-> obj collide-with)) + ) + #x40808080 + ) + ((logtest? (-> obj prim-core action) 1) + #x4000ffff + ) + (else + #x400080ff + ) + ) + ) + ) + ) + +(defmethod + debug-draw-world-sphere + collide-shape-prim-mesh + ((obj collide-shape-prim-mesh)) + (add-debug-sphere + #t + (bucket-id debug-draw0) + (the-as vector (-> obj prim-core)) + (-> obj local-sphere w) + (new 'static 'rgba :b #xff :a #x40) + ) + ) + +(defmethod + debug-draw-world-sphere + collide-shape-prim-group + ((obj collide-shape-prim-group)) + (add-debug-sphere + #t + (bucket-id debug-draw0) + (the-as vector (-> obj prim-core)) + (-> obj local-sphere w) + (new 'static 'rgba :g #xff :a #x10) + ) + (countdown (s5-0 (-> obj num-prims)) + (debug-draw-world-sphere (-> obj prims s5-0)) + ) + #f + ) + +;; ERROR: function was not converted to expressions. Cannot decompile. + +(defmethod overlaps-others-test collide-shape-prim ((obj collide-shape-prim)) + (format + 0 + "ERROR: Unsupported call to collide-shape-prim::overlaps-others-test!~%" + ) + #f + ) + +;; ERROR: function was not converted to expressions. Cannot decompile. + +;; ERROR: function was not converted to expressions. Cannot decompile. + +;; ERROR: function was not converted to expressions. Cannot decompile. + +;; ERROR: function was not converted to expressions. Cannot decompile. + +(defmethod clear-collide-with-as collide-shape ((obj collide-shape)) + (set! (-> obj root-prim collide-with) (the-as uint 0)) + (set! (-> obj root-prim prim-core collide-as) (the-as uint 0)) + 0 + (none) + ) + +(defmethod backup-collide-with-as collide-shape ((obj collide-shape)) + (set! (-> obj backup-collide-with) (-> obj root-prim collide-with)) + (set! (-> obj backup-collide-as) (-> obj root-prim prim-core collide-as)) + 0 + (none) + ) + +(defmethod restore-collide-with-as collide-shape ((obj collide-shape)) + (set! (-> obj root-prim collide-with) (-> obj backup-collide-with)) + (set! (-> obj root-prim prim-core collide-as) (-> obj backup-collide-as)) + 0 + (none) + ) + +(defmethod + dummy-53 + collide-shape + ((obj collide-shape) (arg0 int) (arg1 int) (arg2 int)) + (let ((s3-0 (-> obj root-prim))) + (if (logtest? (-> s3-0 prim-id) arg0) + (set! + (-> s3-0 prim-core collide-as) + (logior (logclear (-> s3-0 prim-core collide-as) arg1) arg2) + ) + ) + (let + ((v1-7 + (if + (and + (nonzero? s3-0) + (type-type? (-> s3-0 type) collide-shape-prim-group) + ) + s3-0 + ) + ) + ) + (when v1-7 + (dotimes (a0-4 (-> (the-as collide-shape-prim-group v1-7) num-prims)) + (let + ((a1-4 + (-> + (the-as collide-shape-prim-group (+ (* a0-4 4) (the-as int v1-7))) + prims + 0 + ) + ) + ) + (if (logtest? (-> a1-4 prim-id) arg0) + (set! + (-> a1-4 prim-core collide-as) + (logior (logclear (-> a1-4 prim-core collide-as) arg1) arg2) + ) + ) + ) + ) + ) + ) + ) + 0 + (none) + ) + +(defmethod dummy-54 collide-shape ((obj collide-shape) (arg0 int) (arg1 int)) + (let ((s4-0 (-> obj root-prim))) + (if (logtest? (-> s4-0 prim-id) arg0) + (set! (-> s4-0 prim-core offense) arg1) + ) + (let + ((v1-5 + (if + (and + (nonzero? s4-0) + (type-type? (-> s4-0 type) collide-shape-prim-group) + ) + s4-0 + ) + ) + ) + (when v1-5 + (dotimes (a0-3 (-> (the-as collide-shape-prim-group v1-5) num-prims)) + (let + ((a1-4 + (-> + (the-as collide-shape-prim-group (+ (* a0-3 4) (the-as int v1-5))) + prims + 0 + ) + ) + ) + (if (logtest? (-> a1-4 prim-id) arg0) + (set! (-> a1-4 prim-core offense) arg1) + ) + ) + ) + ) + ) + ) + 0 + (none) + ) + +(defmethod + dummy-55 + collide-shape + ((obj collide-shape) + (arg0 process) + (arg1 touching-shapes-entry) + (arg2 float) + (arg3 float) + (arg4 float) + ) + (local-vars (sv-144 process)) + (with-pp + (when arg1 + (let ((s1-0 (-> arg1 head))) + (set! sv-144 arg0) + (let + ((s5-0 + (if + (and (nonzero? sv-144) (type-type? (-> sv-144 type) process-drawable)) + sv-144 + ) + ) + ) + (when (and s1-0 s5-0) + (let + ((s0-1 (get-touched-prim s1-0 obj (the-as touching-prims-entry arg1)))) + (get-touched-prim + s1-0 + (-> (the-as process-drawable s5-0) root) + (the-as touching-prims-entry arg1) + ) + (let* ((v1-8 (dummy-11 s1-0 (new 'stack-no-clear 'vector))) + (s1-2 + (vector-! + (new 'stack-no-clear 'vector) + v1-8 + (the-as vector (-> s0-1 prim-core)) + ) + ) + ) + (vector-normalize! s1-2 1.0) + (when (< arg2 (-> s1-2 y)) + (let ((s2-1 (new 'stack-no-clear 'vector))) + (set! + (-> s2-1 quad) + (-> (the-as process-drawable s5-0) root transv quad) + ) + (let + ((f30-0 + (vector-xz-length (-> (the-as process-drawable s5-0) root transv)) + ) + ) + (if (= f30-0 0.0) + (set! + (-> s2-1 quad) + (-> + (vector-z-quaternion! + s2-1 + (-> (the-as process-drawable s5-0) root quat) + ) + quad + ) + ) + ) + (vector-xz-normalize! s2-1 (fmax f30-0 arg4)) + ) + (set! (-> s2-1 y) arg3) + (let ((a1-8 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-8 from) pp) + (set! (-> a1-8 num-params) 2) + (set! (-> a1-8 message) 'shove) + (set! (-> a1-8 param 0) (the-as uint arg1)) + (let ((v1-18 (new 'static 'attack-info :mask #x802))) + (set! (-> v1-18 vector quad) (-> s2-1 quad)) + (set! (-> v1-18 angle) 'jump) + (set! (-> a1-8 param 1) (the-as uint v1-18)) + ) + (send-event-function s5-0 a1-8) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (none) + ) + ) + +(defmethod + dummy-41 + collide-shape + ((obj collide-shape) (arg0 attack-info) (arg1 float)) + (set! (-> arg0 shove-up) arg1) + (let* ((s3-0 (-> obj process path)) + (s2-0 (-> s3-0 curve num-cverts)) + (s4-0 (target-pos 0)) + (s1-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector)) + ) + (let ((f30-0 -1.0)) + (dotimes (s0-0 s2-0) + (eval-path-curve-div! s3-0 s1-0 (the float s0-0) 'interp) + (let ((f0-3 (vector-vector-distance-squared s4-0 s1-0))) + (when (or (< f30-0 0.0) (< f0-3 f30-0)) + (set! f30-0 f0-3) + (set! (-> s5-0 quad) (-> s1-0 quad)) + ) + ) + ) + ) + (vector-! (-> arg0 vector) s5-0 s4-0) + ) + ) + + + + diff --git a/goal_src/engine/collide/collide-target-h.gc b/goal_src/engine/collide/collide-target-h.gc index 15af0a5f4a..bf80fc6df7 100644 --- a/goal_src/engine/collide/collide-target-h.gc +++ b/goal_src/engine/collide/collide-target-h.gc @@ -43,7 +43,10 @@ (unknown-vector10 vector :inline :offset 544) ;; from - logic-target::flat-setup (unknown-vector11 vector :inline :offset 560) ;; from - logic-target::target-no-move-post (unknown-vector12 vector :inline :offset 576) - (unknown-vector13 vector :inline :offset 608) ;; from - logic-target::target-no-move-post + (unknown-vector13 vector :inline :offset 592) ;; from - collide-shape::method-37 + (unknown-vector14 vector :inline :offset 608) ;; from - logic-target::target-no-move-post + (unknown-vector15 vector :inline :offset 624) ;; from - collide-shape::method-37 + (unknown-vector16 vector :inline :offset 640) ;; from - collide-shape::method-37 (unknown-dynamics00 dynamics :offset 656) ;; from - logic-target::bend-gravity (unknown-surface00 surface :offset 660) (unknown-surface01 surface :offset 664) ;; not a symbol - target-util::target-align-vel-z-adjust @@ -78,7 +81,8 @@ (unknown-vector53 vector :inline :offset 1232) (unknown-vector54 vector :inline :offset 1248) (unknown-vector55 vector :inline :offset 1264) - (unknown-dword10 int64 :offset 1288) ;; from - target-util::can-jump? + (unknown-dword10 int64 :offset 1280) ;; from - collide-reaction-target::target-collision-reaction + (unknown-dword11 int64 :offset 1288) ;; from - target-util::can-jump? (unknown-float60 float :offset 1300) ;; from - target-util::can-duck? (unknown-float61 float :offset 1304) ;; from - target-util::target-align-vel-z-adjust (unknown-float62 float :offset 1308) ;; from - target-util::target-print-stats @@ -89,8 +93,10 @@ (unknown-vector60 vector :inline :offset 1456) ;; from - logic-target::add-thrust (unknown-vector61 vector :inline :offset 1504) ;; from - logic-target::add-thrust (unknown-float70 float :offset 1520) ;; from - logic-target::add-thrust + (unknown-float71 float :offset 1524) ;; from - collide-shape::method-37 (unknown-vector70 vector :inline :offset 1536) ;; from - logic-target::add-thrust (unknown-vector71 vector :inline :offset 1552) ;; from - target-tube::tube-thrust + (unknown-vector72 vector :inline :offset 1584) ;; from - collide-reaction-target::target-collision-reaction (unknown-handle00 handle :offset 1600) ;; from logic-target::reset-target-state (unknown-sphere-array00 collide-shape-prim-sphere 3 :offset 1608) ;; from target-util::target-collide-set! and from target-util::target-danger-set! (unknown-sphere00 collide-shape-prim-sphere :offset 1632) ;; from target-util::target-danger-set! @@ -105,7 +111,7 @@ (unknown-float82 float :offset 1732) ;; from logic-target::bend-gravity (unknown-vector80 vector :inline :offset 1744) ;; from logic-target::joint-points (unknown-cspace00 cspace :inline :offset 1760) ;; from logic-target::joint-points - (unknown-vector90 vector :inline :offset 1776) ;; from logic-target::target-compute-edge + (unknown-vector90 vector :score 100 :inline :offset 1776) ;; from logic-target::target-compute-edge (unknown-vector91 vector :inline :offset 1792) ;; from logic-target::target-compute-edge (unknown-vector92 vector :inline :offset 1824) ;; from logic-target::joint-points (unknown-cspace10 cspace :inline :offset 1808) ;; from logic-target::joint-points @@ -141,11 +147,13 @@ ;; these were determined from racer-collision-reaction. (history-length int16 :offset 2490) (history-data collide-history 128 :inline :offset-assert 2496) + (unknown-float140 float :offset 18944) (unknown-dword60 int64 :offset 18952) ;; from logic-target::add-thrust (unknown-int40 int32 :offset 18880) ;; from logic-target::flag-setup (unknown-dword70 int64 :offset 18888) ;; from logic-target::post-flag-setup (unknown-dword71 int64 :offset 18896) ;; from logic-target::post-flag-setup (unknown-dword72 int64 :offset 18912) ;; from logic-target::reset-target-state + (unknown-vector120 vector :offset 18928) ;; from collide-shape::method-37 (unknown-int50 uint32 :offset 18976) ;; from logic-target::print-target-stats (unknown-soundid00 sound-id :offset 18980) ;; from powerups::target-powerup-process (unknown-float130 float :offset 18984) ;; from powerups::target-powerup-process diff --git a/goal_src/engine/collide/collide-touch-h.gc b/goal_src/engine/collide/collide-touch-h.gc index b0b589e1c9..a752ea711f 100644 --- a/goal_src/engine/collide/collide-touch-h.gc +++ b/goal_src/engine/collide/collide-touch-h.gc @@ -5,167 +5,153 @@ ;; name in dgo: collide-touch-h ;; dgos: GAME, ENGINE -(declare-type touching-shapes-entry structure) - -;; DECOMP BEGINS - (deftype touching-prim (structure) - ((cprim collide-shape-prim :offset-assert 0) - (has-tri? symbol :offset-assert 4) - (tri collide-tri-result :inline :offset-assert 16) + ((cprim collide-shape-prim :offset-assert 0) ;; a big guess, there's a few that meet this name + (has-tri? symbol :offset-assert 4) + (tri collide-tri-result :inline :offset-assert 16) ) :method-count-assert 9 :size-assert #x64 :flag-assert #x900000064 ) - (deftype touching-prims-entry (structure) - ((next touching-prims-entry :offset-assert 0) - (prev touching-prims-entry :offset-assert 4) - (allocated? symbol :offset-assert 8) - (u float :offset-assert 12) - (prim1 touching-prim :inline :offset-assert 16) + ((next touching-prims-entry :offset-assert 0) + (prev touching-prims-entry :offset-assert 4) + (allocated? symbol :offset-assert 8) + (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 #xe4 :flag-assert #xd000000e4 (:methods - (touched-prim (_type_ collide-shape-moving touching-shapes-entry) collide-shape-prim 9) + (get-touched-prim (_type_ trsqv touching-prims-entry) collide-shape-prim 9) (dummy-10 () none 10) (dummy-11 (_type_ vector) vector 11) - (dummy-12 () none 12) + (get-touched-tri (_type_ touching-prims-entry touching-prims-entry) collide-tri-result 12) ) ) - (deftype touching-prims-entry-pool (structure) - ((head touching-prims-entry :offset-assert 0) - (nodes touching-prims-entry 64 :inline :offset-assert 16) + ((head touching-prims-entry :offset-assert 0) + (nodes touching-prims-entry 64 :inline :offset-assert 16) ) :method-count-assert 13 :size-assert #x3c10 :flag-assert #xd00003c10 (:methods (new (symbol type) _type_ 0) - (dummy-9 () none 9) - (dummy-10 () none 10) + (alloc-node (_type_) touching-prims-entry 9) + (get-size (_type_) int 10) (init-list! (_type_) none 11) - (dummy-12 () none 12) + (free-node (_type_ touching-prims-entry) touching-prims-entry 12) ) ) - (defmethod init-list! touching-prims-entry-pool ((obj touching-prims-entry-pool)) + "Initialize all entries to be not allocated and in a linked list." (let ((prev (the-as touching-prims-entry #f))) - (let ((current (the-as touching-prims-entry (-> obj nodes)))) - (set! (-> obj head) current) - (countdown (a0-1 64) - (set! (-> current prev) prev) - (let ((next (&+ current 240))) - (set! (-> current next) (the-as touching-prims-entry next)) - (set! (-> current allocated?) #f) - (set! prev current) - (set! current (the-as touching-prims-entry next)) + (let ((current (the-as touching-prims-entry (-> obj nodes)))) + (set! (-> obj head) current) + (countdown (a0-1 64) + (set! (-> current prev) prev) + (let ((next (&+ current 240))) + (set! (-> current next) (the-as touching-prims-entry next)) + (set! (-> current allocated?) #f) + (set! prev current) + (set! current (the-as touching-prims-entry next)) + ) + ) ) - ) + (set! (-> prev next) #f) ) - (set! (-> prev next) #f) - ) (none) ) -(defmethod - new - touching-prims-entry-pool - ((allocation symbol) (type-to-make type)) - (let ((t9-0 (method-of-type structure new)) - (v1-1 type-to-make) - ) - (-> type-to-make size) - (let ((gp-0 (t9-0 allocation v1-1))) - ((method-of-type touching-prims-entry-pool init-list!) - (the-as touching-prims-entry-pool gp-0) - ) - (the-as touching-prims-entry-pool gp-0) +(defmethod new touching-prims-entry-pool ((allocation symbol) (type-to-make type)) + "Allocate a new touching-prims-entry-pool" + + ;; Note - the original code passed (-> type-to-make size) as an argument. + ;; however, the new method of structure doesn't have this argument. + ;; it uses the same value for the size so it doesn't really matter. + (let ((obj (the touching-prims-entry-pool ((method-of-type structure new) + allocation + type-to-make + ;; (-> type-to-make size) see note + ) + ))) + (init-list! obj) + obj ) - ) ) (deftype touching-shapes-entry (structure) - ((cshape1 collide-shape :offset-assert 0) - (cshape2 collide-shape :offset-assert 4) - (resolve-u int8 :offset-assert 8) - (head touching-prims-entry :offset-assert 12) + ((cshape1 collide-shape :offset-assert 0) + (cshape2 collide-shape :offset-assert 4) + (resolve-u int8 :offset-assert 8) + (head touching-prims-entry :offset-assert 12) ) - :allow-misaligned :method-count-assert 18 + :allow-misaligned + :method-count-assert 18 :size-assert #x10 :flag-assert #x1200000010 (:methods - (dummy-9 () none 9) - (touched-shape (_type_ collide-shape-moving) collide-shape 10) + (dummy-9 (_type_) none 9) + (get-touched-shape (_type_ collide-shape) collide-shape 10) (dummy-11 () none 11) - (prims-touching? (_type_ collide-shape-moving uint) touching-prims-entry 12) - (dummy-13 (_type_ control-info int int) none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) + (prims-touching? (_type_ collide-shape-moving uint) touching-prims-entry 12) ; this one! + (prims-touching-action? (_type_ collide-shape uint uint) touching-prims-entry 13) + (free-list () none 14) + (free-entry-list (_type_) symbol 15) (get-head (_type_) touching-prims-entry 16) (unknown1 (_type_ (pointer uint32)) uint 17) ) ) - (deftype touching-list (structure) - ((num-touching-shapes int32 :offset-assert 0) - (resolve-u int8 :offset-assert 4) - (touching-shapes touching-shapes-entry 32 :inline :offset-assert 8) + ((num-touching-shapes int32 :offset-assert 0) + (resolve-u int8 :offset-assert 4) + (touching-shapes touching-shapes-entry 32 :inline :offset-assert 8) ) :method-count-assert 15 :size-assert #x208 :flag-assert #xf00000208 (:methods (new (symbol type) _type_ 0) - (dummy-9 () none 9) + (dummy-9 (_type_ collide-shape-prim collide-shape-prim float collide-shape collide-mesh-cache-tri) none 9) (dummy-10 () none 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) + (dummy-11 (_type_ float) none 11) + (dummy-12 (_type_) none 12) + (get-shapes-entry (_type_ collide-shape collide-shape) touching-shapes-entry 13) (dummy-14 (_type_) none 14) ) ) - (defmethod new touching-list ((allocation symbol) (type-to-make type)) - (let ((t9-0 (method-of-type structure new)) - (v1-1 type-to-make) - ) - (-> type-to-make size) - (let ((obj (the-as touching-list (t9-0 allocation v1-1)))) + "See note in touching-prims-entry-pool" + (let ((obj (the touching-list ((method-of-type structure new) + allocation + type-to-make + ;; (-> type-to-make size) see note + ) + ))) (set! (-> obj num-touching-shapes) 0) (set! (-> obj resolve-u) 0) obj ) - ) ) (defmethod get-head touching-shapes-entry ((obj touching-shapes-entry)) (-> obj head) ) -(defmethod - unknown1 - touching-shapes-entry - ((obj touching-shapes-entry) (arg0 (pointer uint32))) +(defmethod unknown1 touching-shapes-entry ((obj touching-shapes-entry) (arg0 (pointer uint32))) (-> arg0 0) ) -(define-perm *touching-prims-entry-pool* touching-prims-entry-pool - (new 'global 'touching-prims-entry-pool) - ) +(define-perm *touching-prims-entry-pool* touching-prims-entry-pool (new 'global 'touching-prims-entry-pool)) (define-perm *touching-list* touching-list (new 'global 'touching-list)) - - - diff --git a/goal_src/engine/collide/collide-touch.gc b/goal_src/engine/collide/collide-touch.gc index 85e0d02ce2..69af68b930 100644 --- a/goal_src/engine/collide/collide-touch.gc +++ b/goal_src/engine/collide/collide-touch.gc @@ -5,3 +5,569 @@ ;; name in dgo: collide-touch ;; dgos: GAME, ENGINE +;; DECOMP BEGINS + +(defmethod get-size touching-prims-entry-pool ((obj touching-prims-entry-pool)) + (let ((v0-0 0)) + (let ((v1-0 (-> obj head))) + (while v1-0 + (+! v0-0 1) + (set! v1-0 (-> v1-0 next)) + (nop!) + (nop!) + (nop!) + ) + ) + v0-0 + ) + ) + +(defmethod alloc-node touching-prims-entry-pool ((obj touching-prims-entry-pool)) + (let ((gp-0 (-> obj head))) + (cond + (gp-0 + (let ((v1-0 (-> gp-0 next))) + (set! (-> obj head) v1-0) + (if v1-0 + (set! (-> v1-0 prev) #f) + ) + ) + (set! (-> gp-0 allocated?) #t) + (set! (-> gp-0 next) #f) + (set! (-> gp-0 prev) #f) + ) + (else + (format 0 "ERROR: touching-prims-entry-pool::alloc-node() failed!~%") + ) + ) + gp-0 + ) + ) + +(defmethod + free-node + touching-prims-entry-pool + ((obj touching-prims-entry-pool) (arg0 touching-prims-entry)) + (when (-> arg0 allocated?) + (set! (-> arg0 allocated?) #f) + (let ((v1-1 (-> obj head))) + (set! (-> arg0 next) v1-1) + (set! (-> arg0 prev) #f) + (set! (-> obj head) arg0) + (when v1-1 + (set! (-> v1-1 prev) arg0) + arg0 + ) + ) + ) + ) + +(defmethod free-entry-list touching-shapes-entry ((obj touching-shapes-entry)) + (when (-> obj cshape1) + (set! (-> obj cshape1) #f) + (let ((gp-0 (-> obj head))) + (when gp-0 + (set! (-> obj head) #f) + (let ((s5-0 *touching-prims-entry-pool*)) + (while gp-0 + (let ((a1-0 gp-0)) + (set! gp-0 (-> a1-0 next)) + (free-node s5-0 a1-0) + ) + ) + ) + #f + ) + ) + ) + ) + +(defmethod dummy-14 touching-list ((obj touching-list)) + (let ((s5-0 (the-as object (-> obj touching-shapes)))) + (countdown (s4-0 (-> obj num-touching-shapes)) + (free-entry-list (the-as touching-shapes-entry s5-0)) + (set! s5-0 (&+ (the-as touching-shapes-entry s5-0) 16)) + ) + ) + (set! (-> obj num-touching-shapes) 0) + (set! (-> obj resolve-u) 0) + 0 + (none) + ) + +(defmethod + get-shapes-entry + touching-list + ((obj touching-list) (arg0 collide-shape) (arg1 collide-shape)) + (let ((v0-0 (the-as object (-> obj touching-shapes)))) + (let ((v1-0 (the-as object #f))) + (countdown (a3-0 (-> obj num-touching-shapes)) + (let ((t0-0 (-> (the-as touching-shapes-entry v0-0) cshape1))) + (set! v1-0 (cond + (t0-0 + (if + (or + (and + (= t0-0 arg0) + (= (-> (the-as touching-shapes-entry v0-0) cshape2) arg1) + ) + (and + (= t0-0 arg1) + (= (-> (the-as touching-shapes-entry v0-0) cshape2) arg0) + ) + ) + (return (the-as touching-shapes-entry v0-0)) + ) + v1-0 + ) + (else + v0-0 + ) + ) + ) + ) + (set! v0-0 (&+ (the-as touching-shapes-entry v0-0) 16)) + ) + (cond + (v1-0 + (set! v0-0 v1-0) + ) + (else + (when (>= (-> obj num-touching-shapes) 32) + (format 0 "ERROR: touching-list::get-shapes-entry() failed!~%") + (return (the-as touching-shapes-entry #f)) + ) + (+! (-> obj num-touching-shapes) 1) + ) + ) + ) + (set! (-> (the-as touching-shapes-entry v0-0) cshape1) arg0) + (set! (-> (the-as touching-shapes-entry v0-0) cshape2) arg1) + (set! (-> (the-as touching-shapes-entry v0-0) head) #f) + (set! (-> (the-as touching-shapes-entry v0-0) resolve-u) 1) + (set! (-> obj resolve-u) 1) + (the-as touching-shapes-entry v0-0) + ) + ) + +(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 + ) + + +;; WARN: Expression building failed: Function (method 9 touching-list) has a return type of none, but the expression builder found a return statement. +(defmethod + dummy-9 + touching-list + ((obj touching-list) + (arg0 collide-shape-prim) + (arg1 collide-shape-prim) + (arg2 float) + (arg3 collide-shape) + (arg4 collide-mesh-cache-tri) + ) + (let ((gp-0 (new 'stack-no-clear 'touching-shapes-entry))) + (set! (-> gp-0 cshape1) arg3) + (set! (-> gp-0 cshape2) (the-as collide-shape arg4)) + (let ((s2-0 (get-shapes-entry obj (-> arg0 cshape) (-> arg1 cshape)))) + (when s2-0 + (when (= (-> s2-0 cshape1) (-> arg1 cshape)) + (let ((v1-4 arg0)) + (set! arg0 arg1) + (set! arg1 v1-4) + ) + ) + (let ((s0-0 (-> s2-0 head))) + (while s0-0 + (when (and (= (-> s0-0 prim1 cprim) arg0) (= (-> s0-0 prim2 cprim) arg1)) + (when (< arg2 (-> s0-0 u)) + (-> s0-0 u) + (let ((v1-12 (-> s0-0 prim1)) + (a1-2 (-> gp-0 cshape1)) + ) + (cond + (a1-2 + (set! (-> v1-12 has-tri?) #t) + (mem-copy! (the-as pointer (-> v1-12 tri)) (the-as pointer a1-2) 84) + ) + (else + (set! (-> v1-12 has-tri?) #f) + ) + ) + ) + (let ((v1-15 (-> s0-0 prim2)) + (a1-3 (-> gp-0 cshape2)) + ) + (cond + (a1-3 + (set! (-> v1-15 has-tri?) #t) + (mem-copy! (the-as pointer (-> v1-15 tri)) (the-as pointer a1-3) 84) + ) + (else + (set! (-> v1-15 has-tri?) #f) + ) + ) + ) + ) + (return 0) + ) + (set! s0-0 (-> s0-0 next)) + ) + ) + (let ((s0-1 (alloc-node *touching-prims-entry-pool*))) + (when s0-1 + (let ((v1-22 (-> s2-0 head))) + (set! (-> s0-1 next) v1-22) + (set! (-> s0-1 prev) #f) + (set! (-> s2-0 head) s0-1) + (if v1-22 + (set! (-> v1-22 prev) s0-1) + ) + ) + (set! (-> s0-1 u) arg2) + (when (>= arg2 0.0) + (set! (-> s2-0 resolve-u) 1) + (set! (-> obj resolve-u) 1) + ) + (let ((v1-26 (-> s0-1 prim1)) + (a1-4 (-> gp-0 cshape1)) + ) + (set! (-> v1-26 cprim) arg0) + (cond + (a1-4 + (set! (-> v1-26 has-tri?) #t) + (mem-copy! (the-as pointer (-> v1-26 tri)) (the-as pointer a1-4) 84) + ) + (else + (set! (-> v1-26 has-tri?) #f) + ) + ) + ) + (let ((v1-29 (-> s0-1 prim2)) + (a1-5 (-> gp-0 cshape2)) + ) + (set! (-> v1-29 cprim) arg1) + (cond + (a1-5 + (set! (-> v1-29 has-tri?) #t) + (mem-copy! (the-as pointer (-> v1-29 tri)) (the-as pointer a1-5) 84) + ) + (else + (set! (-> v1-29 has-tri?) #f) + ) + ) + ) + ) + ) + ) + ) + ) + 0 + (none) + ) + +(defmethod dummy-11 touching-list ((obj touching-list) (arg0 float)) + (when (nonzero? (-> obj resolve-u)) + (set! (-> obj resolve-u) 0) + (let ((s5-0 (the-as object (-> obj touching-shapes)))) + (countdown (s4-0 (-> obj num-touching-shapes)) + (when (nonzero? (-> (the-as touching-shapes-entry s5-0) resolve-u)) + (set! (-> (the-as touching-shapes-entry s5-0) resolve-u) 0) + (when (-> (the-as touching-shapes-entry s5-0) cshape1) + (let ((s3-0 (-> (the-as touching-shapes-entry s5-0) head))) + (while s3-0 + (let ((f0-0 (-> s3-0 u))) + (set! s3-0 (cond + ((>= f0-0 0.0) + (cond + ((>= arg0 f0-0) + (set! (-> s3-0 u) -1.0) + (set! s3-0 (-> s3-0 next)) + ) + (else + (let ((a1-1 s3-0)) + (let ((v1-7 (-> s3-0 next))) + (let ((a0-1 (-> s3-0 prev))) + (if a0-1 + (set! (-> a0-1 next) v1-7) + (set! + (-> (the-as touching-shapes-entry s5-0) head) + v1-7 + ) + ) + (if v1-7 + (set! (-> v1-7 prev) a0-1) + ) + ) + (set! s3-0 v1-7) + ) + (free-node *touching-prims-entry-pool* a1-1) + ) + ) + ) + s3-0 + ) + (else + (-> s3-0 next) + ) + ) + ) + ) + ) + ) + (if (not (-> (the-as touching-shapes-entry s5-0) head)) + (set! (-> (the-as touching-shapes-entry s5-0) cshape1) #f) + ) + ) + ) + (set! s5-0 (&+ (the-as touching-shapes-entry s5-0) 16)) + ) + ) + ) + 0 + (none) + ) + +(defmethod dummy-12 touching-list ((obj touching-list)) + (let ((gp-0 (the-as object (-> obj touching-shapes)))) + (countdown (s5-0 (-> obj num-touching-shapes)) + (let ((s4-0 (-> (the-as touching-shapes-entry gp-0) cshape1))) + (when s4-0 + (let ((s3-0 (-> (the-as touching-shapes-entry gp-0) cshape2))) + (when (= (-> s3-0 process type) target) + (let ((v1-2 s4-0)) + (set! s4-0 s3-0) + (set! s3-0 v1-2) + ) + ) + (let ((v1-4 (-> s4-0 event-self))) + (when v1-4 + (let ((a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 from) (-> s3-0 process)) + (set! (-> a1-0 num-params) 1) + (set! (-> a1-0 message) (the-as symbol v1-4)) + (set! (-> a1-0 param 0) (the-as uint gp-0)) + (send-event-function (-> s4-0 process) a1-0) + ) + ) + ) + (let ((v1-5 (-> s4-0 event-other))) + (when v1-5 + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) (-> s4-0 process)) + (set! (-> a1-1 num-params) 1) + (set! (-> a1-1 message) (the-as symbol v1-5)) + (set! (-> a1-1 param 0) (the-as uint gp-0)) + (send-event-function (-> s3-0 process) a1-1) + ) + ) + ) + (let ((v1-6 (-> s3-0 event-self))) + (when v1-6 + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) (-> s4-0 process)) + (set! (-> a1-2 num-params) 1) + (set! (-> a1-2 message) (the-as symbol v1-6)) + (set! (-> a1-2 param 0) (the-as uint gp-0)) + (send-event-function (-> s3-0 process) a1-2) + ) + ) + ) + (let ((v1-7 (-> s3-0 event-other))) + (when v1-7 + (let ((a1-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-3 from) (-> s3-0 process)) + (set! (-> a1-3 num-params) 1) + (set! (-> a1-3 message) (the-as symbol v1-7)) + (set! (-> a1-3 param 0) (the-as uint gp-0)) + (send-event-function (-> s4-0 process) a1-3) + ) + ) + ) + ) + ) + ) + (set! gp-0 (&+ (the-as touching-shapes-entry gp-0) 16)) + ) + ) + 0 + (none) + ) + +(defmethod + prims-touching? + touching-shapes-entry + ((obj touching-shapes-entry) (arg0 collide-shape-moving) (arg1 uint)) + (cond + ((= (-> obj cshape1) arg0) + (let ((v1-1 (-> obj head))) + (while v1-1 + (if (logtest? (-> v1-1 prim1 cprim prim-id) arg1) + (return v1-1) + ) + (set! v1-1 (-> v1-1 next)) + ) + ) + ) + ((= (-> obj cshape2) arg0) + (let ((v1-4 (-> obj head))) + (while v1-4 + (if (logtest? (-> v1-4 prim2 cprim prim-id) arg1) + (return v1-4) + ) + (set! v1-4 (-> v1-4 next)) + ) + ) + ) + (else + (format + 0 + "ERROR: touching-shapes-entry::prims-touching? : Bogus cshape value!~%" + ) + ) + ) + (the-as touching-prims-entry #f) + ) + +(defmethod + prims-touching-action? + touching-shapes-entry + ((obj touching-shapes-entry) (arg0 collide-shape) (arg1 uint) (arg2 uint)) + (cond + ((= (-> obj cshape1) arg0) + (let ((v1-1 (-> obj head))) + (while v1-1 + (let ((a0-1 (-> v1-1 prim1 cprim))) + (if + (and + (logtest? arg1 (-> a0-1 prim-core action)) + (zero? (logand arg2 (-> a0-1 prim-core action))) + ) + (return v1-1) + ) + ) + (set! v1-1 (-> v1-1 next)) + ) + ) + ) + ((= (-> obj cshape2) arg0) + (let ((v1-4 (-> obj head))) + (while v1-4 + (let ((a0-5 (-> v1-4 prim2 cprim))) + (if + (and + (logtest? arg1 (-> a0-5 prim-core action)) + (zero? (logand arg2 (-> a0-5 prim-core action))) + ) + (return v1-4) + ) + ) + (set! v1-4 (-> v1-4 next)) + ) + ) + ) + (else + (format + 0 + "ERROR: touching-shapes-entry::prims-touching-action? : Bogus cshape value!~%" + ) + ) + ) + (the-as touching-prims-entry #f) + ) + +(defmethod + get-touched-shape + touching-shapes-entry + ((obj touching-shapes-entry) (arg0 collide-shape)) + (cond + ((= (-> obj cshape1) arg0) + (return (-> obj cshape2)) + ) + ((= (-> obj cshape2) arg0) + (return (-> obj cshape1)) + ) + ) + (the-as collide-shape #f) + ) + +(defmethod + get-touched-prim + touching-prims-entry + ((obj touching-prims-entry) (arg0 trsqv) (arg1 touching-prims-entry)) + (cond + ((= (-> arg1 next) arg0) + (return (-> obj prim1 cprim)) + ) + ((= (-> arg1 prev) arg0) + (return (-> obj prim2 cprim)) + ) + ) + (the-as collide-shape-prim #f) + ) + +(defmethod + get-touched-tri + touching-prims-entry + ((obj touching-prims-entry) + (arg0 touching-prims-entry) + (arg1 touching-prims-entry) + ) + (let ((v0-0 (the-as collide-tri-result #f))) + (cond + ((= (-> arg1 next) arg0) + (let ((v1-2 (-> obj prim1))) + (if (-> v1-2 has-tri?) + (set! v0-0 (-> v1-2 tri)) + ) + ) + ) + ((= (-> arg1 prev) arg0) + (let ((v1-5 (-> obj prim2))) + (if (-> v1-5 has-tri?) + (set! v0-0 (-> v1-5 tri)) + ) + ) + ) + ) + v0-0 + ) + ) + +(defmethod + dummy-11 + touching-prims-entry + ((obj touching-prims-entry) (arg0 vector)) + (let* ((s4-0 (-> obj prim1 cprim)) + (s3-0 (-> obj prim2 cprim)) + (gp-1 + (vector-! + (new 'stack-no-clear 'vector) + (the-as vector (-> s3-0 prim-core)) + (the-as vector (-> s4-0 prim-core)) + ) + ) + ) + (let + ((f1-2 + (- + (- (vector-length gp-1) (-> s3-0 prim-core world-sphere w)) + (-> s4-0 prim-core world-sphere w) + ) + ) + ) + (vector-normalize! gp-1 (+ (-> s4-0 prim-core world-sphere w) (* 0.5 f1-2))) + ) + (vector+! arg0 gp-1 (the-as vector (-> s4-0 prim-core))) + ) + arg0 + ) + + + + diff --git a/goal_src/engine/debug/default-menu.gc b/goal_src/engine/debug/default-menu.gc index 5d096832d5..c7ac6cb9e6 100644 --- a/goal_src/engine/debug/default-menu.gc +++ b/goal_src/engine/debug/default-menu.gc @@ -6,9 +6,9 @@ ;; dgos: GAME, ENGINE ;; Forward declarations for stuff we haven't written yet: -(define-extern find-instance-by-name (function string instance)) +(define-extern find-instance-by-name (function string prototype-bucket)) (define-extern *edit-instance* string) -(define-extern prototype-bucket-recalc-fields (function instance none)) +(define-extern prototype-bucket-recalc-fields (function instance instance)) ;; Necessary forward declarations (define-extern cam-robotboss (state camera-slave)) @@ -487,9 +487,9 @@ (let ((v1-0 (find-instance-by-name *edit-instance*))) (when v1-0 (if (= arg1 4) - (set! (-> v1-0 unknown) (logxor (-> v1-0 unknown) (the-as uint arg0))) + (set! (-> v1-0 flags) (logxor (-> v1-0 flags) (the-as uint arg0))) ) - (logtest? (-> v1-0 unknown) arg0) + (logtest? (-> v1-0 flags) arg0) ) ) ) @@ -603,9 +603,9 @@ (cond (v1-0 (if (= arg1 4) - (set! (-> v1-0 unknown) (logxor (-> v1-0 unknown) 1)) + (set! (-> v1-0 flags) (logxor (-> v1-0 flags) 1)) ) - (zero? (logand (-> v1-0 unknown) 1)) + (zero? (logand (-> v1-0 flags) 1)) ) (else #f diff --git a/goal_src/engine/draw/drawable-h.gc b/goal_src/engine/draw/drawable-h.gc index bb64e5a685..99f0fae1a9 100644 --- a/goal_src/engine/draw/drawable-h.gc +++ b/goal_src/engine/draw/drawable-h.gc @@ -15,6 +15,7 @@ ;; In many cases, "draw" simply adds data to a buffer that must later be converted to dma in finish-background ;; or similar. +(declare-type drawable-error drawable) (deftype drawable (basic) ((id int16 :offset-assert 4) ;; ID number (not always used) (bsphere vector :inline :offset-assert 16) ;; bounding sphere @@ -24,7 +25,7 @@ :flag-assert #x1200000020 (:methods (login (_type_) _type_ 9) - (draw (_type_ drawable display-frame) none 10) + (draw (_type_ drawable display-frame) none 10) ;; display-frame is from the method inspect tool (collide-with-box (_type_ int collide-list) none 11) (collide-y-probe (_type_ int collide-list) none 12) (collide-ray (_type_ int collide-list) none 13) @@ -39,7 +40,7 @@ ;; A drawable that simply draws a sphere and an error message at the origin of the bounding sphere. (deftype drawable-error (drawable) - ((name basic :offset-assert 32) + ((name string :offset-assert 32) ) :method-count-assert 18 :size-assert #x24 diff --git a/goal_src/engine/draw/process-drawable.gc b/goal_src/engine/draw/process-drawable.gc index 79b979b211..00d831f1b6 100644 --- a/goal_src/engine/draw/process-drawable.gc +++ b/goal_src/engine/draw/process-drawable.gc @@ -5,7 +5,8 @@ ;; name in dgo: process-drawable ;; dgos: GAME, ENGINE -;; definition for function cspace-by-name +;; DECOMP BEGINS + (defun cspace-by-name ((arg0 process-drawable) (arg1 string)) (let* ((s4-0 (-> arg0 node-list length)) (s3-0 0) @@ -22,7 +23,6 @@ (the-as cspace #f) ) -;; definition for function cspace-index-by-name (defun cspace-index-by-name ((arg0 process-drawable) (arg1 string)) (let* ((s4-0 0) (s3-0 (-> arg0 node-list length)) @@ -41,7 +41,6 @@ -1 ) -;; definition for function vector<-cspace! (defun vector<-cspace! ((arg0 vector) (arg1 cspace)) (rlet ((Q :class vf) (vf0 :class vf) @@ -60,12 +59,10 @@ ) ) -;; definition for function vector<-cspace+vector! (defun vector<-cspace+vector! ((arg0 vector) (arg1 cspace) (arg2 vector)) (vector-matrix*! arg0 arg2 (-> arg1 bone transform)) ) -;; definition (debug) for function cspace-children (defun-debug cspace-children ((arg0 process-drawable) (arg1 int)) (let ((a3-0 '())) (countdown (s4-0 (-> arg0 node-list length)) @@ -77,9 +74,8 @@ ) ) -;; definition (debug) for function cspace-inspect-tree +;; ERROR: function was not converted to expressions. Cannot decompile. -;; definition for method 0 of type draw-control (defmethod new draw-control @@ -95,8 +91,6 @@ ) ) -;; definition for method 10 of type draw-control -;; INFO: Return type mismatch int vs none. (defmethod lod-set! draw-control ((obj draw-control) (arg0 int)) (let ((v1-1 (max 0 (min arg0 (-> obj lod-set max-lod))))) (set! (-> obj desired-lod) v1-1) @@ -109,8 +103,6 @@ (none) ) -;; definition for method 11 of type draw-control -;; INFO: Return type mismatch int vs none. (defmethod lods-assign! draw-control ((obj draw-control) (arg0 lod-set)) (mem-copy! (the-as pointer (-> obj lod-set)) (the-as pointer arg0) 33) (let ((a1-2 (min (-> obj cur-lod) (-> obj lod-set max-lod)))) @@ -121,8 +113,6 @@ (none) ) -;; definition for method 9 of type lod-set -;; Used lq/sq (defmethod dummy-9 lod-set @@ -192,7 +182,6 @@ obj ) -;; definition for symbol *default-skel-template*, type pair (define *default-skel-template* '( @@ -200,7 +189,6 @@ ) ) -;; definition for function make-nodes-from-jg (defbehavior make-nodes-from-jg process-drawable ((arg0 art-joint-geo) (arg1 pair) (arg2 symbol)) @@ -287,7 +275,6 @@ ) ) -;; definition for function fill-skeleton-cache ;; WARN: Unsupported inline assembly instruction kind - [sync.l] ;; WARN: Unsupported inline assembly instruction kind - [cache dxwbin a2, 0] ;; WARN: Unsupported inline assembly instruction kind - [sync.l] @@ -329,7 +316,6 @@ 0 ) -;; definition for function execute-math-engine (defun execute-math-engine () (let ((gp-0 *matrix-engine*)) (countdown (s5-0 (-> gp-0 length)) @@ -345,12 +331,9 @@ 0 ) -;; definition for method 17 of type process-drawable -;; INFO: Return type mismatch int vs none. -;; Used lq/sq (defmethod dummy-17 process-drawable ((obj process-drawable)) (cond - ((logtest? (-> obj draw status) 6) + (#t;;(logtest? (-> obj draw status) 6) ) ((zero? (-> obj skel)) (matrix<-transformq+trans! @@ -461,11 +444,9 @@ (none) ) -;; definition for method 18 of type process-drawable -;; INFO: Return type mismatch int vs none. (defmethod dummy-18 process-drawable ((obj process-drawable)) (if (type-type? (-> obj root type) collide-shape) - (dummy-48 (the-as collide-shape (-> obj root))) + (clear-collide-with-as (the-as collide-shape (-> obj root))) ) (if (nonzero? (-> obj skel)) (ja-channel-set! 0) @@ -474,8 +455,6 @@ (none) ) -;; definition for function draw-joint-spheres -;; Used lq/sq (defun draw-joint-spheres ((arg0 process-drawable)) (dotimes (s5-0 (-> arg0 node-list length)) (let @@ -492,7 +471,6 @@ #f ) -;; definition for method 10 of type process-drawable (defmethod deactivate process-drawable ((obj process-drawable)) (if (nonzero? (-> obj part)) (kill-and-free-particles (-> obj part)) @@ -504,7 +482,6 @@ (none) ) -;; failed to figure out what this is: (defstate process-drawable-art-error (process-drawable) :code (behavior ((arg0 string)) @@ -539,7 +516,6 @@ (define-extern ja-post (function none :behavior process-drawable)) (define-extern anim-loop (function none :behavior process-drawable)) -;; failed to figure out what this is: (defstate process-drawable-idle (process-drawable) :code anim-loop @@ -547,12 +523,9 @@ ja-post ) -;; definition for method 14 of type process-drawable ;; WARN: Stack slot offset 20 signed mismatch ;; WARN: Stack slot offset 20 signed mismatch ;; WARN: Stack slot offset 20 signed mismatch -;; INFO: Return type mismatch draw-control vs none. -;; Used lq/sq (defmethod initialize-skeleton process-drawable @@ -737,7 +710,7 @@ (-> (the-as vector - ((method-of-type res-lump get-property-struct) + (get-property-struct (-> sv-16 extra) 'trans-offset 'interp @@ -758,14 +731,13 @@ (let ((gp-1 (the-as collide-shape (-> (the-as collide-shape obj) dir-targ x)))) (if (and gp-1 (nonzero? gp-1) (type-type? (-> gp-1 type) collide-shape)) - ((method-of-object gp-1 dummy-38)) + (find-collision-meshes gp-1) ) ) (label cfg-59) (none) ) -;; definition for method 15 of type process-drawable (defmethod dummy-15 process-drawable @@ -782,8 +754,6 @@ obj ) -;; definition for method 16 of type process-drawable -;; INFO: Return type mismatch trsqv vs collide-shape. (defmethod dummy-16 process-drawable @@ -866,7 +836,6 @@ (the-as collide-shape (-> obj root)) ) -;; definition for function ja-done? (defbehavior ja-done? process-drawable ((arg0 int)) (let ((v1-2 (-> self skel root-channel arg0))) (cond @@ -883,12 +852,10 @@ ) ) -;; definition for function ja-min? (defbehavior ja-min? process-drawable ((arg0 int)) (= (-> self skel root-channel arg0 frame-num) 0.0) ) -;; definition for function ja-max? (defbehavior ja-max? process-drawable ((arg0 int)) (let ((v1-2 (-> self skel root-channel arg0))) (>= @@ -898,17 +865,14 @@ ) ) -;; definition for function ja-num-frames (defbehavior ja-num-frames process-drawable ((arg0 int)) (+ (-> self skel root-channel arg0 frame-group data 0 length) -1) ) -;; definition for function ja-frame-num (defbehavior ja-frame-num process-drawable ((arg0 int)) (-> self skel root-channel arg0 frame-num) ) -;; definition for function ja-aframe-num (defbehavior ja-aframe-num process-drawable ((arg0 int)) (let* ((a0-2 (-> self skel root-channel arg0)) (v1-2 (-> a0-2 frame-group)) @@ -923,7 +887,6 @@ ) ) -;; definition for function ja-aframe (defbehavior ja-aframe process-drawable ((arg0 float) (arg1 int)) (let ((v1-3 (-> self skel root-channel arg1 frame-group))) (/ (- arg0 (if (and v1-3 (nonzero? v1-3)) @@ -939,17 +902,14 @@ ) ) -;; definition for function ja-speed (defbehavior ja-speed process-drawable ((arg0 int)) (-> self skel root-channel arg0 frame-group speed) ) -;; definition for function ja-step (defbehavior ja-step process-drawable ((arg0 int)) (-> self skel root-channel arg0 frame-group artist-step) ) -;; definition for function ja-channel-set! (defbehavior ja-channel-set! process-drawable ((arg0 int)) (set! (-> self skel active-channels) arg0) (set! (-> self skel root-channel) (-> self skel channel)) @@ -975,7 +935,6 @@ arg0 ) -;; definition for function ja-channel-push! (defbehavior ja-channel-push! process-drawable ((arg0 int) (arg1 int)) (cond ((or @@ -1068,8 +1027,6 @@ ) ) -;; definition for function joint-control-reset! -;; INFO: Return type mismatch int vs none. (defbehavior joint-control-reset! process-drawable ((arg0 joint-control) (arg1 joint-control-channel)) @@ -1121,7 +1078,6 @@ (none) ) -;; definition for function ja-group-size (defbehavior ja-group-size process-drawable () (if (< @@ -1133,7 +1089,6 @@ ) ) -;; definition for function ja-eval (defbehavior ja-eval process-drawable () (let ((gp-0 (-> self skel root-channel 0)) (s5-0 (-> self skel channel (-> self skel active-channels))) @@ -1155,7 +1110,6 @@ 0 ) -;; definition for function ja-blend-eval (defbehavior ja-blend-eval process-drawable () (let ((gp-0 (-> self skel root-channel)) (s5-0 (the-as joint-control-channel (-> self skel channel))) @@ -1179,17 +1133,14 @@ 0 ) -;; definition for method 19 of type process-drawable ;; ERROR: function was not converted to expressions. Cannot decompile. -;; definition for function ja-post -;; INFO: Return type mismatch int vs none. ;; WARN: Expression building failed: Function ja-post has a return type of none, but the expression builder found a return statement. (defbehavior ja-post process-drawable () (when (nonzero? (-> self draw)) (let ((gp-1 (logtest? (-> self draw status) 16))) (set! (-> self draw status) (logand -21 (-> self draw status))) - (when (nonzero? (-> self skel)) + (when #f ;;(nonzero? (-> self skel)) TODO this stuff is not done (dummy-19 self) (when (or (logtest? (-> self skel status) 1) gp-1) (dummy-17 self) @@ -1209,8 +1160,6 @@ (none) ) -;; definition for method 9 of type joint-control -;; INFO: Return type mismatch float vs none. (defmethod dummy-9 joint-control ((obj joint-control)) (cond ((< @@ -1253,7 +1202,6 @@ (none) ) -;; definition for function anim-loop (defbehavior anim-loop process-drawable () (logior! (-> self mask) (process-mask sleep-code)) (while #t @@ -1263,20 +1211,17 @@ (none) ) -;; definition for function transform-post (defbehavior transform-post process-drawable () (ja-post) (dummy-47 (the-as collide-shape (-> self root))) 0 ) -;; definition for function rider-trans (defbehavior rider-trans process-drawable () (dummy-35 (the-as collide-shape (-> self root))) 0 ) -;; definition for function rider-post (defbehavior rider-post process-drawable () (ja-post) (let ((gp-0 (the-as collide-shape (-> self root)))) @@ -1287,7 +1232,6 @@ 0 ) -;; definition for function pusher-post (defbehavior pusher-post process-drawable () (ja-post) (let ((gp-0 (the-as collide-shape (-> self root)))) @@ -1297,7 +1241,6 @@ 0 ) -;; definition for function process-drawable-delay-player (defbehavior process-drawable-delay-player process-drawable ((arg0 int)) (while (and @@ -1326,8 +1269,6 @@ 0 ) -;; definition for function process-drawable-fuel-cell-handler -;; INFO: Return type mismatch int vs none. (defbehavior process-drawable-fuel-cell-handler process-drawable ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) @@ -1345,10 +1286,7 @@ (none) ) -;; definition for function process-drawable-birth-fuel-cell ;; WARN: Found some very strange gotos. Check result carefully, this is not well tested. -;; INFO: Return type mismatch int vs none. -;; Used lq/sq (defbehavior process-drawable-birth-fuel-cell process-drawable ((arg0 entity) (arg1 vector) (arg2 symbol)) @@ -1365,13 +1303,20 @@ (let ((s5-0 (-> v1-0 extra perm task)) (s4-0 (new 'static 'fact-info)) ) - (set! (-> s4-0 options) (the-as uint 0)) + (set! (-> s4-0 options) (fact-options)) (if arg2 - (set! (-> s4-0 options) (the-as uint 64)) + (set! (-> s4-0 options) (fact-options fop6)) ) (when (and (nonzero? s5-0) (not (task-complete? *game-info* s5-0))) (label cfg-12) - (birth-pickup-at-point gp-0 6 (the float s5-0) #f self s4-0) + (birth-pickup-at-point + gp-0 + (pickup-type fuel-cell) + (the float s5-0) + #f + self + s4-0 + ) (when (not (-> self child)) (suspend) (goto cfg-12) @@ -1385,11 +1330,9 @@ ;; this part is debug only (when *debug-segment* -;; definition for symbol *valid-con*, type string (define *valid-con* (new 'debug 'string #x4000 (the-as string #f))) ) -;; definition (debug) for function process-drawable-valid? (defun-debug process-drawable-valid? ((arg0 process-drawable)) (let ((s5-0 #t)) (clear *valid-con*) diff --git a/goal_src/engine/entity/entity.gc b/goal_src/engine/entity/entity.gc index 81a3ec1e8b..6836303a7b 100644 --- a/goal_src/engine/entity/entity.gc +++ b/goal_src/engine/entity/entity.gc @@ -1443,7 +1443,7 @@ (set! (-> proc entity) ent) (set! (-> ent extra process) proc) - (birth-log "activated: ~A ~A, now doing init ~A~%" proc ent (method-of-object proc init-from-entity!)) + ;;(birth-log "activated: ~A ~A, now doing init ~A~%" proc ent (method-of-object proc init-from-entity!)) ;; run the initializer (run-now-in-process proc (method-of-object proc init-from-entity!) proc ent) @@ -1455,17 +1455,26 @@ ;; TODO (define-extern birth-viewer (function process entity object)) +(declare-type collectable process-drawable) +(declare-type ecovalve basic) +(declare-type eco-collectable process-drawable) +(declare-type eco eco-collectable) (defmethod birth! entity-actor ((obj entity-actor)) "Create a process for this entity and start it." ;; temp - (unless (type-type? (-> obj etype) part-spawner) - (birth-log "rejecting ~A birth because it is not a part-spawner (was ~A)~%" obj (-> obj etype)) + (unless (or (type-type? (-> obj etype) part-spawner) + (type-type? (-> obj etype) collectable) + (type-type? (-> obj etype) vent) + (type-type? (-> obj etype) ecovalve) + ;(type-type? (-> obj etype) eco) + ) + ;;(birth-log "rejecting ~A birth because yes (was ~A)~%" obj (-> obj etype)) (logior! (-> obj extra perm status) (entity-perm-status bit-0)) (return obj) ) - (birth-log "call to birth! on ~A~%" obj) + ;;(birth-log "call to birth! on ~A~%" obj) (let* ((entity-type (-> obj etype)) (info (entity-info-lookup entity-type)) @@ -1565,12 +1574,12 @@ ;; NOTE: we don't actually birth the actors. It is too slow. ;; so it gets spread over multiple frames later. (when (nonzero? (-> obj actors)) - (birth-log "add-to-level! for ~D actors for ~A~%" (-> obj actors length) obj) + ;;(birth-log "add-to-level! for ~D actors for ~A~%" (-> obj actors length) obj) (dotimes (birth-idx (-> obj actors length)) (let* ((idx-to-birth (-> obj actor-birth-order birth-idx)) (actor-to-birth (-> obj actors data (logand idx-to-birth #xffff) actor)) ) - (birth-log "now adding to level: ~D ~D ~A~%" birth-idx idx-to-birth actor-to-birth) + ;;(birth-log "now adding to level: ~D ~D ~A~%" birth-idx idx-to-birth actor-to-birth) (add-to-level! actor-to-birth *level* (-> obj level) (the-as actor-id (-> actor-to-birth aid))) ) ) @@ -1622,7 +1631,7 @@ (let ((cams (-> obj cameras))) (when (nonzero? cams) (dotimes (s3-1 (-> cams length)) - (birth-log "birth cam: ~A~%" (-> cams s3-1)) + ;;(birth-log "birth cam: ~A~%" (-> cams s3-1)) (birth! (-> cams s3-1)) ) ) diff --git a/goal_src/engine/game/collectables.gc b/goal_src/engine/game/collectables.gc index d9b1d06b74..943dd5f6d1 100644 --- a/goal_src/engine/game/collectables.gc +++ b/goal_src/engine/game/collectables.gc @@ -5,98 +5,1509 @@ ;; name in dgo: collectables ;; dgos: GAME, ENGINE -;; TODO - for nav-enemy -(define-extern birth-pickup-at-point (function vector int float symbol process-drawable fact-info (pointer process))) +(declare-type vent process-drawable) +(declare-type eco eco-collectable) + +(defenum collectable-flags + :bitfield #t + :type uint32 + (trans 0) + (fade 1) + (can-collect 2) + (fading 3) + (suck 4) + (ignore-blue 5) + (anim 6) + ) + +;; DECOMP BEGINS + +(define *eco-pill-count* 0) -;; TODO - for entity and beach-rocks (deftype collectable (process-drawable) - ((root-override collide-shape-moving :score 100 :offset 112) - (pickup-type pickup-type :offset-assert 176) - (pickup-amount float :offset-assert 180) - (notify-parent basic :offset-assert 184) - (old-base vector :inline :offset-assert 192) - (base vector :inline :offset-assert 208) - (extra-trans vector :inline :offset-assert 224) - (jump-pos vector :inline :offset-assert 240) - (flags uint32 :offset-assert 256) - (birth-time uint64 :offset-assert 264) - (collect-timeout uint64 :offset-assert 272) - (fadeout-timeout uint64 :offset-assert 280) - (bob-offset uint64 :offset-assert 288) - (bob-amount float :offset-assert 296) - (pickup-handle handle :offset-assert 304) ;; not sure it's a handle - (actor-pause symbol :offset-assert 312) + ((root-override collide-shape-moving :offset 112) + (pickup-type pickup-type :offset-assert 176) + (pickup-amount float :offset-assert 180) + (notify-parent basic :offset-assert 184) + (old-base vector :inline :offset-assert 192) + (base vector :inline :offset-assert 208) + (extra-trans vector :inline :offset-assert 224) + (jump-pos vector :inline :offset-assert 240) + (flags collectable-flags :offset-assert 256) + (birth-time int64 :offset-assert 264) + (collect-timeout int64 :offset-assert 272) + (fadeout-timeout int64 :offset-assert 280) + (bob-offset int64 :offset-assert 288) + (bob-amount float :offset-assert 296) + (pickup-handle handle :offset-assert 304) + (actor-pause symbol :offset-assert 312) ) - (:methods - (TODO-RENAME-20 (_type_) _type_ 20) - (dummy-21 (_type_ uint float) none 21) ;; TODO - weird math issue - ) :heap-base #xd0 - :method-count-assert 22 :size-assert #x13c :flag-assert #x1600d0013c - ) -(deftype eco-collectable (collectable) - ((eco-effect sparticle-launch-group :offset-assert 316) - (collect-effect sparticle-launch-group :offset-assert 320) - (collect-effect2 sparticle-launch-group :offset-assert 324) - (collect-effect-time uint64 :offset-assert 328) - (respawn-delay uint64 :offset-assert 336) - (sound-name sound-spec :offset-assert 344) - (target handle :offset-assert 352) - (suck-time uint64 :offset-assert 360) - (suck-y-offset float :offset-assert 368) - (speed vector :inline :offset-assert 384) - (movie-pos-index int32 :offset-assert 400) - ) (:methods - (wait () _type_ :state 22) ;; state - (pickup (object handle) _type_ :state 23) ;; state - (die () _type_ :state 24) ;; state + (initialize (_type_) _type_ 20) + (initialize-params (_type_ int float) none 21) + ) + ) + + +(defmethod + initialize-params + collectable + ((obj collectable) (arg0 int) (arg1 float)) + (logclear! (-> obj mask) (process-mask crate enemy platform ambient)) + (set! (-> obj mask) (logior (process-mask collectable) (-> obj mask))) + (set! (-> obj flags) (collectable-flags can-collect ignore-blue)) + (set! (-> obj bob-amount) arg1) + (set! + (-> obj bob-offset) + (+ + (the-as int (-> obj root-override trans x)) + (the-as int (-> obj root-override trans y)) + (the-as int (-> obj root-override trans z)) + ) + ) + (cond + ((or + (= (vector-length (-> obj root-override transv)) 0.0) + (logtest? (-> obj fact options) (fact-options fop6)) + ) + (vector-reset! (-> obj root-override transv)) + ) + (else + (logior! (-> obj flags) (collectable-flags trans)) + (logclear! (-> obj flags) (collectable-flags can-collect)) + (logclear! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj bob-amount) 0.0) + ) + ) + (when (and (> arg0 0) #t) + (logior! (-> obj flags) (collectable-flags fade)) + (set! (-> obj fadeout-timeout) arg0) + ) + (set! (-> obj collect-timeout) 99) + (set! (-> obj birth-time) (-> *display* base-frame-counter)) + (set! (-> obj base quad) (-> obj root-override trans quad)) + (set! (-> obj old-base quad) (-> obj root-override trans quad)) + (set! (-> obj pickup-handle) (the-as handle #f)) + (case (-> obj fact pickup-type) + (((pickup-type eco-pill) + (pickup-type eco-green) + (pickup-type money) + (pickup-type eco-blue) + ) + (logclear! (-> obj flags) (collectable-flags ignore-blue)) + ) + ) + (if (logtest? (-> obj fact options) (fact-options large)) + (set! + (-> obj root-override root-prim local-sphere w) + (* 2.5 (-> obj root-override root-prim local-sphere w)) + ) + ) + (none) + ) + +(deftype eco-collectable (collectable) + ((eco-effect sparticle-launch-group :offset-assert 316) + (collect-effect sparticle-launch-group :offset-assert 320) + (collect-effect2 sparticle-launch-group :offset-assert 324) + (collect-effect-time seconds :offset-assert 328) + (respawn-delay int64 :offset-assert 336) + (sound-name sound-spec :offset-assert 344) + (target handle :offset-assert 352) + (suck-time int64 :offset-assert 360) + (suck-y-offset float :offset-assert 368) + (speed vector :inline :offset-assert 384) + (movie-pos-index int32 :offset-assert 400) + ) + :heap-base #x130 + :method-count-assert 31 + :size-assert #x194 + :flag-assert #x1f01300194 + (:methods + (wait () _type_ :state 22) + (pickup (object handle) _type_ :state 23) + (die () _type_ :state 24) (jump () _type_ :state 25) - (notice-blue (handle) _type_ :state 26) ;; state + (notice-blue (handle) _type_ :state 26) (get-pickup-sound (_type_ pickup-type) ambient-sound 27) - (dummy-28 (_type_ res-lump pickup-type float) object 28) - (update-sound! (_type_) none 29) ;; something to do with particles too + (initialize-eco (_type_ entity-actor pickup-type float) object 28) + (animate (_type_) none 29) (blocked () _type_ :state 30) ) + ) + + +(defmethod initialize eco-collectable ((obj eco-collectable)) + (stack-size-set! (-> obj main-thread) 128) + (logior! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj actor-pause) #t) + (set! (-> obj notify-parent) #f) + (let + ((s5-0 + (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) + (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (the-as uint #x8040)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set-vector! (-> s4-0 local-sphere) 0.0 3276.8 0.0 3276.8) + (set-root-prim! s5-0 s4-0) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) + ) + (set! + (-> obj fact) + (new 'process 'fact-info obj (-> obj pickup-type) (-> obj pickup-amount)) + ) + (if (logtest? (fact-options respawn) (-> obj fact options)) + (set! (-> obj respawn-delay) (-> obj fact fade-time)) + ) + obj + ) + +(defmethod + get-pickup-sound + eco-collectable + ((obj eco-collectable) (arg0 pickup-type)) + (set! (-> obj fact pickup-type) arg0) + (case (-> obj fact pickup-type) + (((pickup-type eco-blue) + (pickup-type eco-red) + (pickup-type eco-green) + (pickup-type eco-yellow) + ) + (logclear! (-> obj mask) (process-mask actor-pause)) + ) + ) + (set! (-> obj sound-name) #f) + (case arg0 + (((pickup-type eco-yellow)) + (set! (-> obj eco-effect) (-> *part-group-id-table* 56)) + (set! (-> obj collect-effect) (-> *part-group-id-table* 68)) + (set! (-> obj collect-effect2) (-> *part-group-id-table* 57)) + (set! (-> obj collect-effect-time) 150) + (set! + (-> obj sound-name) + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "yel-eco-idle") + :volume #x400 + :fo-max 15 + ) + ) + ) + (((pickup-type eco-red)) + (set! (-> obj eco-effect) (-> *part-group-id-table* 48)) + (set! (-> obj collect-effect) (-> *part-group-id-table* 69)) + (set! (-> obj collect-effect2) (-> *part-group-id-table* 49)) + (set! (-> obj collect-effect-time) 150) + (set! + (-> obj sound-name) + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "red-eco-idle") + :volume #x400 + :fo-max 15 + ) + ) + ) + (((pickup-type eco-blue)) + (set! (-> obj eco-effect) (-> *part-group-id-table* 42)) + (set! (-> obj collect-effect) (-> *part-group-id-table* 67)) + (set! (-> obj collect-effect2) (-> *part-group-id-table* 43)) + (set! (-> obj collect-effect-time) 150) + (set! + (-> obj sound-name) + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "blue-eco-idle") + :volume #x400 + :fo-max 15 + ) + ) + ) + (((pickup-type eco-green)) + (set! (-> obj eco-effect) (-> *part-group-id-table* 58)) + (set! (-> obj collect-effect) (-> *part-group-id-table* 66)) + (set! (-> obj collect-effect2) (-> *part-group-id-table* 61)) + (set! (-> obj collect-effect-time) 150) + (set! + (-> obj sound-name) + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "green-eco-idle") + :volume #x400 + :fo-max 15 + ) + ) + ) + (((pickup-type eco-pill)) + (set! (-> obj eco-effect) (-> *part-group-id-table* 59)) + (set! (-> obj collect-effect2) (-> *part-group-id-table* 60)) + (set! (-> obj collect-effect-time) 150) + ) + ) + (set! (-> obj part) (create-launch-control (-> obj eco-effect) obj)) + (when (-> obj sound-name) + (let + ((v0-1 + (new + 'process + 'ambient-sound + (-> obj sound-name) + (-> obj root-override trans) + ) + ) + ) + (set! (-> obj sound) v0-1) + v0-1 + ) + ) + ) + +(defbehavior + initialize-eco-by-other eco + ((arg0 vector) (arg1 vector) (arg2 fact-info)) + (let ((s3-0 (-> arg2 pickup-type)) + (f30-0 (-> arg2 pickup-spawn-amount)) + ) + (set! (-> self pickup-amount) f30-0) + (set! (-> self pickup-type) s3-0) + (initialize self) + (set! (-> self fact pickup-type) s3-0) + (set! (-> self fact pickup-amount) f30-0) + ) + (set! (-> self fact options) (-> arg2 options)) + (set! (-> self root-override trans quad) (-> arg0 quad)) + (set! (-> self root-override transv quad) (-> arg1 quad)) + (get-pickup-sound self (-> self fact pickup-type)) + (set! (-> self notify-parent) #f) + (case (-> self fact pickup-type) + (((pickup-type eco-blue) (pickup-type eco-yellow) (pickup-type eco-red)) + (initialize-params + self + (if (and arg2 (logtest? (-> arg2 options) (fact-options fade))) + (-> arg2 fade-time) + 0 + ) + (the-as float 1024.0) + ) + ) + (else + (initialize-params self 4500 (the-as float 1024.0)) + ) + ) + (dummy-47 (-> self root-override)) + (set! (-> self event-hook) (-> (method-of-object self wait) event)) + (if (logtest? (fact-options eco-blocked) (-> self fact options)) + (go-virtual blocked) + ) + (go-virtual wait) + (none) + ) + +(defmethod + initialize-eco + eco-collectable + ((obj eco-collectable) (arg0 entity-actor) (arg1 pickup-type) (arg2 float)) + (set! (-> obj pickup-amount) arg2) + (set! (-> obj pickup-type) arg1) + (initialize obj) + (set! (-> obj root-override trans quad) (-> arg0 extra trans quad)) + (get-pickup-sound obj (-> obj fact pickup-type)) + (initialize-params obj 0 (the-as float 1024.0)) + (dummy-47 (-> obj root-override)) + (if (logtest? (fact-options eco-blocked) (-> obj fact options)) + (go (method-of-object obj blocked)) + ) + (go (method-of-object obj wait)) + ) + +(defmethod animate eco-collectable ((obj eco-collectable)) + 0 + (none) + ) + +(defun add-blue-shake ((arg0 vector) (arg1 vector) (arg2 vector)) + (let* ((f0-0 (vector-vector-distance arg1 arg2)) + (f30-0 + (lerp-scale + (the-as float 409.6) + (the-as float 0.0) + f0-0 + (-> *FACT-bank* suck-suck-dist) + (-> *FACT-bank* suck-bounce-dist) + ) + ) + ) + (+! (-> arg0 x) (rand-vu-float-range (- f30-0) f30-0)) + (+! (-> arg0 y) (rand-vu-float-range (- f30-0) f30-0)) + (+! (-> arg0 z) (rand-vu-float-range (- f30-0) f30-0)) + ) + arg0 + ) + +(defbehavior check-blue-suck eco-collectable ((arg0 process-drawable)) + (let + ((v1-1 (if (and (nonzero? arg0) (type-type? (-> arg0 type) process-drawable)) + arg0 + ) + ) + ) + (when v1-1 + (let* ((gp-1 (-> v1-1 root)) + (v1-3 + (if (and (nonzero? gp-1) (type-type? (-> gp-1 type) collide-shape)) + gp-1 + ) + ) + ) + (when v1-3 + (let ((a0-5 (-> self root-override root-prim prim-core)) + (a1-2 (-> (the-as collide-shape v1-3) root-prim prim-core)) + ) + (if + (< + (vector-vector-distance (the-as vector a0-5) (the-as vector a1-2)) + (-> *FACT-bank* suck-suck-dist) + ) + (logior! (-> self flags) (collectable-flags suck)) + ) + ) + ) + ) + ) + ) + (none) + ) + +(defbehavior + add-blue-motion eco-collectable + ((arg0 symbol) (arg1 symbol) (arg2 symbol) (arg3 symbol)) + (let* ((gp-0 (handle->process (-> self target))) + (v1-4 + (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) + gp-0 + ) + ) + ) + (when v1-4 + (let* ((gp-1 (-> (the-as process-drawable v1-4) root)) + (v1-6 + (if (and (nonzero? gp-1) (type-type? (-> gp-1 type) collide-shape)) + (the-as collide-shape gp-1) + ) + ) + ) + (when v1-6 + (let ((s2-0 (-> self root-override root-prim prim-core)) + (gp-2 (-> v1-6 root-prim prim-core)) + ) + (if (and arg1 (rand-vu-percent? (the-as float 0.25))) + (eco-blue-glow (the-as vector s2-0)) + ) + (let + ((f0-0 + (vector-vector-distance (the-as vector s2-0) (the-as vector gp-2)) + ) + ) + (cond + ((and arg3 (< f0-0 8192.0)) + (return #t) + ) + ((begin + (set! + arg0 + (and + (or + (not arg2) + (or + (< f0-0 (-> *FACT-bank* suck-suck-dist)) + (logtest? (-> self flags) (collectable-flags suck)) + ) + ) + arg0 + ) + ) + arg0 + ) + (logior! (-> self flags) (collectable-flags suck)) + (if (= (-> self speed w) 0.0) + (set! (-> self suck-time) (-> *display* base-frame-counter)) + ) + (+! (-> self speed w) (* 163840.0 (-> *display* seconds-per-frame))) + (+! (-> self speed y) (* 291271.12 (-> *display* seconds-per-frame))) + (set! + (-> self speed y) + (fmin (fmin 291271.12 (-> self speed y)) (-> self speed y)) + ) + (let + ((s5-2 + (vector-! + (new 'stack-no-clear 'vector) + (-> self base) + (the-as vector gp-2) + ) + ) + ) + (vector-normalize! + s5-2 + (fmax + 0.0 + (- + (vector-length s5-2) + (* (-> self speed w) (-> *display* seconds-per-frame)) + ) + ) + ) + (vector-rotate-y! + s5-2 + s5-2 + (* + (-> self speed y) + (-> self speed z) + (-> *display* seconds-per-frame) + ) + ) + (set! + (-> self suck-y-offset) + (* + 2048.0 + (sin + (* + 873.81335 + (the + float + (mod + (- (-> *display* base-frame-counter) (-> self suck-time)) + 75 + ) + ) + ) + ) + ) + ) + (vector+! (-> self base) (the-as vector gp-2) s5-2) + ) + ) + ((and + arg2 + (and + (< (+ 4096.0 (-> *FACT-bank* suck-bounce-dist)) f0-0) + (zero? (logand (-> self flags) (collectable-flags suck))) + ) + ) + (go-virtual wait) + ) + (arg1 + (add-blue-shake + (-> self root-override trans) + (the-as vector s2-0) + (the-as vector gp-2) + ) + ) + ) + ) + ) + ) + ) + ) + ) + #f + ) + +(defstate blocked (eco-collectable) + :virtual #t + :trans + (behavior () + (if (task-complete? *game-info* (-> self entity extra perm task)) + (go-virtual wait) + ) + (none) + ) + :code + (the-as (function none :behavior eco-collectable) anim-loop) + ) + +(defstate jump (eco-collectable) + :virtual #t + :code + (behavior () + (if (type-type? (-> self type) fuel-cell) + (sound-play-by-name + (static-sound-name "cell-prize") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + ) + (logclear! (-> self mask) (process-mask actor-pause)) + (let ((gp-1 (new 'stack 'trajectory))) + (set! (-> self base y) (-> self jump-pos y)) + (setup-from-to-duration! + gp-1 + (-> self root-override trans) + (-> self jump-pos) + (the-as float 300.0) + (the-as float -2.2755556) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) + (let + ((f0-2 + (the float (- (-> *display* base-frame-counter) (-> self state-time))) + ) + ) + (eval-position! gp-1 f0-2 (-> self root-override trans)) + ) + (transform-post) + (animate self) + (suspend) + (when (nonzero? (-> self skel)) + (let ((a0-10 (-> self skel root-channel 0))) + (set! (-> a0-10 param 0) 0.5) + (joint-control-channel-group-eval! + a0-10 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + ) + ) + ) + (set! (-> self root-override trans quad) (-> self jump-pos quad)) + (set! (-> self base quad) (-> self root-override trans quad)) + (vector-reset! (-> self root-override transv)) + (dummy-47 (-> self root-override)) + (logclear! (-> self flags) (collectable-flags trans)) + (logior! (-> self flags) (collectable-flags can-collect)) + (if (-> self actor-pause) + (logior! (-> self mask) (process-mask actor-pause)) + ) + (go-virtual wait) + (none) + ) + ) + +(defstate wait (eco-collectable) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (local-vars (v0-3 none)) + (when + (and + (or (= arg2 'touch) (= arg2 'attack)) + (and + (logtest? (-> self flags) (collectable-flags can-collect)) + (>= + (- (-> *display* base-frame-counter) (-> self birth-time)) + (-> self collect-timeout) + ) + (!= (-> self next-state name) 'pickup) + (send-event + arg0 + 'get-pickup + (-> self fact pickup-type) + (-> self fact pickup-amount) + ) + ) + ) + (logclear! (-> self mask) (process-mask actor-pause)) + (go-virtual pickup #f (process->handle arg0)) + ) + (the-as object (cond + ((= arg2 'eco-blue) + (when + (and + (zero? + (logand + (-> self flags) + (collectable-flags fading ignore-blue) + ) + ) + (!= (-> self next-state name) 'pickup) + (begin + (check-blue-suck (the-as process-drawable arg0)) + #t + ) + (logtest? (-> self flags) (collectable-flags can-collect)) + (>= + (- + (-> *display* base-frame-counter) + (-> self birth-time) + ) + (-> self collect-timeout) + ) + ) + (logclear! (-> self mask) (process-mask actor-pause)) + (go-virtual notice-blue (process->handle arg0)) + ) + ) + ((= arg2 'trans) + (set! + (-> self root-override trans quad) + (-> (the-as vector (-> arg3 param 0)) quad) + ) + (dummy-47 (-> self root-override)) + (ja-post) + ) + ((= arg2 'jump) + (logclear! (-> self mask) (process-mask actor-pause)) + (set! + (-> self jump-pos quad) + (-> (the-as vector (-> arg3 param 0)) quad) + ) + (go-virtual jump) + ) + ((= arg2 'pickup) + (when (!= (-> self next-state name) 'pickup) + (if (and (> arg1 0) (-> arg3 param 0)) + (TODO-RENAME-30 + (-> self root-override) + (the-as vector (-> arg3 param 0)) + ) + ) + (logclear! (-> self mask) (process-mask actor-pause)) + (go-virtual pickup #f (the-as handle #f)) + ) + ) + ((= arg2 'die) + (logclear! (-> self mask) (process-mask actor-pause)) + (go-virtual die) + ) + ((= arg2 'movie-pos) + (set! v0-3 (the-as none (-> arg3 param 0))) + (set! (-> self movie-pos-index) (the-as int v0-3)) + v0-3 + ) + ((= arg2 'actor-pause) + (cond + ((-> arg3 param 0) + (logior! (-> self mask) (process-mask actor-pause)) + (set! v0-3 (the-as none #t)) + (set! (-> self actor-pause) (the-as symbol v0-3)) + v0-3 + ) + (else + (logclear! (-> self mask) (process-mask actor-pause)) + (set! (-> self actor-pause) #f) + #f + ) + ) + ) + ((= arg2 'fade) + (logior! (-> self flags) (collectable-flags fade)) + (set! (-> self fadeout-timeout) 30) + (set! v0-3 (the-as none (-> *display* base-frame-counter))) + (set! (-> self birth-time) (the-as int v0-3)) + v0-3 + ) + ) + ) + ) + :enter + (behavior () + (if + (and + (logtest? (-> self fact options) (fact-options fop6 can-collect)) + (logtest? (-> self flags) (collectable-flags can-collect)) + (!= (-> self next-state name) 'pickup) + (send-event + *target* + 'get-pickup + (-> self fact pickup-type) + (-> self fact pickup-amount) + ) + ) + (go-virtual pickup #f (process->handle *target*)) + ) + (none) + ) + :trans + (behavior () + (cond + ((logtest? (-> self flags) (collectable-flags trans)) + (vector-v++! + (-> self root-override transv) + (dummy-62 (-> self root-override) (new-stack-vector0) (the-as float 0.0)) + ) + (dummy-57 (-> self root-override) (-> self root-override transv)) + (when + (and + (>= 0.0 (-> self root-override transv y)) + (>= (-> self base y) (-> self root-override trans y)) + ) + (set! (-> self root-override trans y) (-> self base y)) + (cond + ((< (-> self root-override transv y) -8192.0) + (set! + (-> self root-override transv y) + (* -0.5 (-> self root-override transv y)) + ) + ) + (else + (vector-reset! (-> self root-override transv)) + (logclear! (-> self flags) (collectable-flags trans)) + (logior! (-> self flags) (collectable-flags can-collect)) + (if (-> self actor-pause) + (logior! (-> self mask) (process-mask actor-pause)) + ) + (set! (-> self base quad) (-> self root-override trans quad)) + (if + (and + (logtest? (-> self fact options) (fact-options can-collect)) + (zero? (logand (-> self flags) (collectable-flags ignore-blue))) + ) + (go-virtual notice-blue (process->handle *target*)) + ) + (if + (and + (logtest? (-> self fact options) (fact-options fop6 can-collect)) + (!= (-> self next-state name) 'pickup) + (send-event + *target* + 'get-pickup + (-> self fact pickup-type) + (-> self fact pickup-amount) + ) + ) + (go-virtual pickup #f (process->handle *target*)) + ) + ) + ) + ) + ) + (else + (set! (-> self trans-hook) #f) + ) + ) + (dummy-47 (-> self root-override)) + (none) + ) + :code + (behavior () + (while #t + (let ((gp-0 (-> self part)) + (s5-0 (-> self root-override root-prim prim-core)) + ) + (when + (and + (logtest? (-> self flags) (collectable-flags fade)) + (>= + (- (-> *display* base-frame-counter) (-> self birth-time)) + (-> self fadeout-timeout) + ) + ) + (let + ((v1-10 + (- + 300 + (- + (- (-> *display* base-frame-counter) (-> self birth-time)) + (-> self fadeout-timeout) + ) + ) + ) + ) + (cond + ((< v1-10 0) + (process-entity-status! self (entity-perm-status dead) #t) + (deactivate self) + ) + (else + (logclear! (-> self mask) (process-mask actor-pause)) + (set! (-> self actor-pause) #f) + (logior! (-> self flags) (collectable-flags fading)) + (logior! (-> self state-flags) 1) + (set! (-> gp-0 fade) (* 0.0033333334 (the float v1-10))) + ) + ) + ) + ) + (spawn gp-0 (the-as vector s5-0)) + ) + (if (nonzero? (-> self sound)) + (update! (-> self sound)) + ) + (suspend) + ) + (none) + ) + ) + +(defstate notice-blue (eco-collectable) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (when + (and + (or (= arg2 'touch) (= arg2 'attack)) + (and + (logtest? (-> self flags) (collectable-flags can-collect)) + (>= + (- (-> *display* base-frame-counter) (-> self birth-time)) + (-> self collect-timeout) + ) + (!= (-> self next-state name) 'pickup) + (send-event + arg0 + 'get-pickup + (-> self fact pickup-type) + (-> self fact pickup-amount) + ) + ) + ) + (logclear! (-> self mask) (process-mask actor-pause)) + (go-virtual pickup #f (process->handle arg0)) + ) + ) + :enter + (behavior ((arg0 handle)) + (set! (-> self target) arg0) + (set! (-> self speed quad) (the-as uint128 0)) + (set! + (-> self speed z) + (the-as float (if (rand-vu-percent? (the-as float 0.5)) + 1.0 + -1.0 + ) + ) + ) + (set! (-> self suck-y-offset) 0.0) + (logclear! (-> self mask) (process-mask actor-pause)) + (none) + ) + :exit + (behavior () + (if (-> self actor-pause) + (logior! (-> self mask) (process-mask actor-pause)) + ) + (none) + ) + :trans + (behavior () + (let ((a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 from) self) + (set! (-> a1-0 num-params) 2) + (set! (-> a1-0 message) 'query) + (set! (-> a1-0 param 0) (the-as uint 'powerup)) + (set! (-> a1-0 param 1) (the-as uint 3)) + (if + (and + (not (send-event-function *target* a1-0)) + (zero? (logand (-> self flags) (collectable-flags suck))) + ) + (go-virtual wait) + ) + ) + (none) + ) + :code + (behavior ((arg0 handle)) + (while #t + (set! (-> self root-override trans quad) (-> self base quad)) + (add-blue-motion #t #f #t #f) + (dummy-47 (-> self root-override)) + (if (nonzero? (-> self draw)) + (ja-post) + ) + (let ((a0-5 (-> self part)) + (a1-1 (-> self root-override root-prim prim-core)) + ) + (if (nonzero? a0-5) + (spawn a0-5 (the-as vector a1-1)) + ) + ) + (if (nonzero? (-> self sound)) + (update! (-> self sound)) + ) + (suspend) + ) + (none) + ) + ) + +(defstate pickup (eco-collectable) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (cond + ((= v1-0 'set-movie-pos) + (let + ((v1-3 + (res-lump-struct + (-> self entity) + 'movie-pos + vector + :time + (the-as float -1000000000.0) + ) + ) + ) + (the-as symbol (when v1-3 + (set! + (-> v1-3 quad) + (-> + (the-as vector (-> arg3 param 0)) + quad + ) + ) + (the-as symbol v1-3) + ) + ) + ) + ) + ((= v1-0 'actor-pause) + (the-as symbol (cond + ((-> arg3 param 0) + (logior! + (-> self mask) + (process-mask actor-pause) + ) + (let ((v0-1 #t)) + (set! (-> self actor-pause) v0-1) + v0-1 + ) + ) + (else + (logclear! + (-> self mask) + (process-mask actor-pause) + ) + (set! (-> self actor-pause) #f) + #f + ) + ) + ) + ) + ((= v1-0 'fade) + (process-entity-status! self (entity-perm-status dead) #t) + (the-as symbol (deactivate self)) + ) + ) + ) + ) + ) + :enter + (behavior ((arg0 object) (arg1 handle)) + (set! (-> self pickup-handle) arg1) + (when (-> self notify-parent) + (let ((gp-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> gp-0 from) self) + (set! (-> gp-0 num-params) 1) + (set! (-> gp-0 message) 'notify) + (set! (-> gp-0 param 0) (the-as uint 'pickup)) + (let ((s5-0 send-event-function) + (s4-0 (ppointer->process (-> self parent))) + ) + (s5-0 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process)) + s4-0 + ) + gp-0 + ) + ) + ) + ) + (logclear! (-> self mask) (process-mask actor-pause)) + (none) + ) + :code + (behavior ((arg0 object) (arg1 handle)) + (clear-collide-with-as (-> self root-override)) + (if + (not + (or + (= (-> self fact pickup-type) (pickup-type eco-pill)) + (logtest? (-> self fact options) (fact-options powerup)) + ) + ) + (send-event + (handle->process arg1) + 'powerup + (-> self fact pickup-type) + (-> self fact pickup-amount) + ) + ) + (if (nonzero? (-> self sound)) + (stop! (-> self sound)) + ) + (case (-> self fact pickup-type) + (((pickup-type eco-yellow)) + (sound-play-by-name + (static-sound-name "y-eco-pickup") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + ) + (((pickup-type eco-red)) + (sound-play-by-name + (static-sound-name "r-eco-pickup") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + ) + (((pickup-type eco-blue)) + (sound-play-by-name + (static-sound-name "b-eco-pickup") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (case (-> (level-get-target-inside *level*) name) + (('training) + (level-hint-spawn + (game-text-id training-more-eco-more-time) + "sagevb23" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ) + ) + (((pickup-type eco-green)) + (sound-play-by-name + (static-sound-name "g-eco-pickup") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + ) + (((pickup-type eco-green) (pickup-type eco-pill)) + (sound-play-by-name + (static-sound-name "pill-pickup") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + ) + ) + (if (nonzero? (-> self part)) + (kill-and-free-particles (-> self part)) + ) + (let ((gp-6 (handle->process (-> self pickup-handle)))) + (when (nonzero? (-> self collect-effect)) + (let ((s5-5 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-5 + (let ((t9-17 (method-of-type part-tracker activate))) + (t9-17 + (the-as part-tracker s5-5) + gp-6 + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-5 + part-tracker-init + (-> self collect-effect) + -1 + part-tracker-track-target + #f + #f + (-> self root-override root-prim prim-core) + ) + (-> s5-5 ppointer) + ) + ) + ) + ) + (when (nonzero? (-> self collect-effect2)) + (let ((gp-7 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-7 + (let ((t9-20 (method-of-type part-tracker activate))) + (t9-20 + (the-as part-tracker gp-7) + self + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-7 + part-tracker-init + (-> self collect-effect2) + -1 + (lambda ((arg0 part-tracker)) + (let ((s5-0 (handle->process (-> arg0 userdata)))) + (when s5-0 + (let* + ((v1-4 + (handle->process (-> (the-as eco-collectable s5-0) pickup-handle)) + ) + (a2-0 (cond + ((not v1-4) + (-> arg0 root trans) + ) + ((= (-> v1-4 type) target) + (vector<-cspace! + (new 'stack-no-clear 'vector) + (-> (the-as target v1-4) node-list data 5) + ) + ) + (else + (-> (the-as target v1-4) control trans) + ) + ) + ) + ) + (vector-lerp! + (-> arg0 root trans) + (-> arg0 offset) + a2-0 + (/ + (the + float + (- + (-> *display* base-frame-counter) + (the-as int (-> arg0 start-time)) + ) + ) + (the float (-> (the-as eco-collectable s5-0) collect-effect-time)) + ) + ) + ) + ) + ) + ) + (process->handle self) + #f + (-> self root-override root-prim prim-core) + ) + (-> gp-7 ppointer) + ) + ) + ) + (while (-> self child) + (suspend) + ) + (go-virtual die) + (none) + ) + ) + +(defstate die (eco-collectable) + :virtual #t + :code + (behavior () + (process-entity-status! self (entity-perm-status dead) #t) + (none) + ) + ) + +(deftype eco (eco-collectable) + () :heap-base #x130 :method-count-assert 31 :size-assert #x194 :flag-assert #x1f01300194 ) -(deftype fuel-cell (eco-collectable) - ((victory-anim spool-anim :offset-assert 404) - (state-object symbol :offset-assert 408)) + + +(defmethod animate eco ((obj eco)) + (let ((a0-1 (-> obj part)) + (a1-0 (-> obj root-override root-prim prim-core)) + ) + (spawn a0-1 (the-as vector a1-0)) + ) + (if (nonzero? (-> obj sound)) + (update! (-> obj sound)) + ) + 0 + (none) + ) + +(defstate die (eco) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (cond + ((= v1-0 'fade) + (process-entity-status! self (entity-perm-status dead) #t) + (deactivate self) + ) + ((= v1-0 'die) + (go-virtual die) + ) + ) + ) + ) + ) + :exit + (behavior () + (process-entity-status! self (entity-perm-status bit-3) #f) + (if (-> self actor-pause) + (logior! (-> self mask) (process-mask actor-pause)) + ) + (none) + ) + :code + (behavior () + (process-entity-status! self (entity-perm-status bit-3) #t) + (logclear! (-> self mask) (process-mask actor-pause)) + (logclear! (-> self fact options) (fact-options fop6 can-collect)) + (if (nonzero? (-> self part)) + (kill-and-free-particles (-> self part)) + ) + (cond + ((nonzero? (-> self respawn-delay)) + (let ((gp-0 (-> *display* base-frame-counter))) + (while + (< (- (-> *display* base-frame-counter) gp-0) (-> self respawn-delay)) + (suspend) + ) + ) + ) + (else + (while (let ((f30-0 0.0) + (a1-1 (new 'stack-no-clear 'event-message-block)) + ) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 2) + (set! (-> a1-1 message) 'query) + (set! (-> a1-1 param 0) (the-as uint 'pickup)) + (set! (-> a1-1 param 1) (the-as uint (-> self fact pickup-type))) + (< f30-0 (the-as float (send-event-function *target* a1-1))) + ) + (suspend) + ) + ) + ) + (set! (-> self base quad) (-> self old-base quad)) + (set! (-> self root-override trans quad) (-> self base quad)) + (restore-collide-with-as (-> self root-override)) + (go-virtual wait) + (none) + ) + ) + +(deftype eco-yellow (eco) + () :heap-base #x130 :method-count-assert 31 - :size-assert #x19c - :flag-assert #x1f0130019c + :size-assert #x194 + :flag-assert #x1f01300194 + ) + + +(defmethod init-from-entity! eco-yellow ((obj eco-yellow) (arg0 entity-actor)) + (initialize-eco + obj + arg0 + (pickup-type eco-yellow) + (-> *FACT-bank* eco-single-inc) + ) + (none) + ) + +(deftype eco-red (eco) + () + :heap-base #x130 + :method-count-assert 31 + :size-assert #x194 + :flag-assert #x1f01300194 + ) + + +(defmethod init-from-entity! eco-red ((obj eco-red) (arg0 entity-actor)) + (initialize-eco + obj + arg0 + (pickup-type eco-red) + (-> *FACT-bank* eco-single-inc) + ) + (none) + ) + +(deftype eco-blue (eco) + () + :heap-base #x130 + :method-count-assert 31 + :size-assert #x194 + :flag-assert #x1f01300194 + ) + + +(defmethod init-from-entity! eco-blue ((obj eco-blue) (arg0 entity-actor)) + (initialize-eco + obj + arg0 + (pickup-type eco-blue) + (-> *FACT-bank* eco-single-inc) + ) + (none) + ) + +(deftype health (eco-collectable) + () + :heap-base #x130 + :method-count-assert 31 + :size-assert #x194 + :flag-assert #x1f01300194 + ) + + +(defmethod animate health ((obj health)) + (let ((a0-1 (-> obj part)) + (a1-0 (-> obj root-override root-prim prim-core)) + ) + (spawn a0-1 (the-as vector a1-0)) + ) + (if (nonzero? (-> obj sound)) + (update! (-> obj sound)) + ) + 0 + (none) + ) + +(defmethod init-from-entity! health ((obj health) (arg0 entity-actor)) + (initialize-eco + obj + arg0 + (pickup-type eco-green) + (-> *FACT-bank* health-single-inc) + ) + (none) + ) + +(deftype eco-pill (eco-collectable) + () + :heap-base #x130 + :method-count-assert 31 + :size-assert #x194 + :flag-assert #x1f01300194 + ) + + +(defmethod animate eco-pill ((obj eco-pill)) + (let ((a0-1 (-> obj part)) + (a1-0 (-> obj root-override root-prim prim-core)) + ) + (spawn a0-1 (the-as vector a1-0)) + ) + (if (nonzero? (-> obj sound)) + (update! (-> obj sound)) + ) + 0 + (none) + ) + +(defmethod init-from-entity! eco-pill ((obj eco-pill) (arg0 entity-actor)) + (initialize-eco + obj + arg0 + (pickup-type eco-pill) + (-> *FACT-bank* health-small-inc) + ) + (none) + ) + +(defmethod deactivate eco-pill ((obj eco-pill)) + (set! *eco-pill-count* (+ *eco-pill-count* -1)) + ((method-of-type eco-collectable deactivate) obj) + (none) + ) + +(defmethod initialize eco-pill ((obj eco-pill)) + (set! *eco-pill-count* (+ *eco-pill-count* 1)) + (stack-size-set! (-> obj main-thread) 128) + (logior! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj actor-pause) #t) + (set! (-> obj notify-parent) #f) + (let + ((s5-0 + (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) + (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (the-as uint #x8040)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set-vector! (-> s4-0 local-sphere) 0.0 3276.8 0.0 8192.0) + (set-root-prim! s5-0 s4-0) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) + ) + (set! + (-> obj fact) + (new 'process 'fact-info obj (-> obj pickup-type) (-> obj pickup-amount)) + ) + obj ) -(define-extern fuel-cell-init-as-clone (function handle int none :behavior fuel-cell)) -(define-extern fuel-cell-pick-anim (function process-drawable spool-anim)) (defskelgroup *money-sg* money 0 4 ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) - :bounds (static-spherem 0 0 0 0.6000000238418579) + :bounds (static-spherem 0 0 0 0.6) :longest-edge (meters 0) :texture-level 2 ) -;; failed to figure out what this is: (defskelgroup *fuel-cell-sg* fuel-cell 0 2 ((1 (meters 999999))) - :bounds (static-spherem 0 1 0 1.600000023841858) + :bounds (static-spherem 0 1 0 1.6) :longest-edge (meters 0) :texture-level 2 ) -;; definition of type money (deftype money (eco-collectable) () :heap-base #x130 @@ -105,5 +1516,2787 @@ :flag-assert #x1f01300194 ) -;; TODO - for orb-cache -(define-extern money-init-by-other-no-bob (function vector vector fact-info float entity none :behavior money)) + +(defmethod run-logic? money ((obj money)) + (or + (zero? (logand (-> obj mask) (process-mask actor-pause))) + (or + (and + (nonzero? (-> obj draw)) + (logtest? (-> obj draw status) 8) + (>= + (+ + (-> *ACTOR-bank* pause-dist) + (-> obj root-override pause-adjust-distance) + ) + (vector-vector-distance (-> obj root-override trans) (math-camera-pos)) + ) + ) + (and + (nonzero? (-> obj skel)) + (!= (-> obj skel root-channel 0) (-> obj skel channel)) + ) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) 16)) + ) + ) + ) + +(defmethod deactivate money ((obj money)) + (when (= (-> obj next-state name) 'pickup) + (if + (not + (and + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status dead)) + ) + ) + (format #t "money ~A was killed in pickup~%") + ) + (process-entity-status! obj (entity-perm-status dead) #t) + ) + ((method-of-type eco-collectable deactivate) obj) + (none) + ) + +(defstate wait (money) + :virtual #t + :code + (behavior () + (while #t + (quaternion-rotate-y! + (-> self root-override quat) + (-> self root-override quat) + (* 40049.777 (-> *display* seconds-per-frame)) + ) + (let ((f30-0 (-> self bob-amount))) + (when (< 0.0 f30-0) + (set! + (-> self root-override trans y) + (+ + (-> self base y) + (-> self suck-y-offset) + (* + f30-0 + (sin + (* + 109.22667 + (the + float + (mod + (+ + (- (-> *display* base-frame-counter) (-> self birth-time)) + (-> self bob-offset) + ) + 600 + ) + ) + ) + ) + ) + ) + ) + (dummy-47 (-> self root-override)) + ) + ) + (ja-post) + (suspend) + ) + (none) + ) + ) + +(defstate notice-blue (money) + :virtual #t + :code + (behavior ((arg0 handle)) + (while #t + (quaternion-rotate-y! + (-> self root-override quat) + (-> self root-override quat) + (* 91022.22 (-> *display* seconds-per-frame)) + ) + (set! (-> self root-override trans quad) (-> self base quad)) + (add-blue-motion #t #t #t #f) + (let ((f30-0 (-> self bob-amount))) + (if (< 0.0 f30-0) + (set! + (-> self root-override trans y) + (+ + (-> self base y) + (-> self suck-y-offset) + (* + f30-0 + (sin + (* + 109.22667 + (the + float + (mod + (+ + (- (-> *display* base-frame-counter) (-> self birth-time)) + (-> self bob-offset) + ) + 600 + ) + ) + ) + ) + ) + ) + ) + ) + ) + (transform-post) + (suspend) + ) + (none) + ) + ) + +(defstate pickup (money) + :virtual #t + :code + (behavior ((arg0 object) (arg1 handle)) + (logclear! (-> self mask) (process-mask actor-pause)) + (clear-collide-with-as (-> self root-override)) + (process-entity-status! self (entity-perm-status dead) #t) + (convert-to-hud-object + self + (the-as hud (ppointer->process (-> *hud-parts* money))) + ) + (none) + ) + ) + +(defmethod initialize money ((obj money)) + (stack-size-set! (-> obj main-thread) 128) + (let + ((s5-0 + (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) + (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (the-as uint #x8040)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set-vector! (-> s4-0 local-sphere) 0.0 2048.0 0.0 4915.2) + (set-root-prim! s5-0 s4-0) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) + ) + (logior! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj actor-pause) #t) + (set! (-> obj notify-parent) #f) + (set! + (-> obj fact) + (new 'process 'fact-info obj (pickup-type money) (the-as float 1.0)) + ) + (let ((a0-10 (-> obj entity))) + (if (when a0-10 + (let ((a0-11 (-> a0-10 extra perm task))) + (if a0-11 + (= a0-11 (game-task none)) + ) + ) + ) + (set! (-> obj entity extra perm task) (game-task complete)) + ) + ) + (initialize-skeleton obj *money-sg* '()) + (if (-> obj entity) + (nav-mesh-connect obj (-> obj root-override) (the-as nav-control #f)) + ) + (set-vector! (-> obj draw color-mult) 0.8 0.8 0.8 1.0) + (set-vector! (-> obj draw color-emissive) 0.2 0.2 0.2 1.0) + obj + ) + +(defmethod init-from-entity! money ((obj money) (arg0 entity-actor)) + (initialize obj) + (process-drawable-from-entity! obj (the-as entity-actor (-> obj entity))) + (initialize-params obj 0 (the-as float 1024.0)) + (dummy-47 (-> obj root-override)) + (go (method-of-object obj wait)) + (none) + ) + +(defbehavior + money-init-by-other money + ((arg0 vector) (arg1 vector) (arg2 fact-info) (arg3 entity)) + (let ((s3-0 (-> arg2 pickup-type)) + (f30-0 (-> arg2 pickup-spawn-amount)) + ) + (set! (-> self entity) arg3) + (set! (-> self pickup-type) s3-0) + (set! (-> self pickup-amount) f30-0) + (initialize self) + (set! (-> self fact pickup-type) s3-0) + (set! (-> self fact pickup-amount) f30-0) + ) + (set! (-> self fact options) (-> arg2 options)) + (set! (-> self notify-parent) #t) + (set! (-> self root-override trans quad) (-> arg0 quad)) + (quaternion-identity! (-> self root-override quat)) + (vector-identity! (-> self root-override scale)) + (set! (-> self root-override transv quad) (-> arg1 quad)) + (initialize-params self 4500 (the-as float 1024.0)) + (dummy-47 (-> self root-override)) + (set! (-> self event-hook) (-> (method-of-object self wait) event)) + (go-virtual wait) + (none) + ) + +(defbehavior + money-init-by-other-no-bob money + ((arg0 vector) (arg1 vector) (arg2 fact-info) (arg3 float) (arg4 entity)) + (set! (-> self entity) arg4) + (set! (-> self pickup-type) (the-as pickup-type arg2)) + (set! (-> self pickup-amount) arg3) + (initialize self) + (set! (-> self fact pickup-type) (the-as pickup-type arg2)) + (set! (-> self fact pickup-amount) arg3) + (set! (-> self notify-parent) #t) + (set! (-> self root-override trans quad) (-> arg0 quad)) + (quaternion-identity! (-> self root-override quat)) + (vector-identity! (-> self root-override scale)) + (set! (-> self root-override transv quad) (-> arg1 quad)) + (initialize-params self 4500 (the-as float 0.0)) + (logior! (-> self flags) (collectable-flags ignore-blue)) + (dummy-47 (-> self root-override)) + (set! (-> self event-hook) (-> (method-of-object self wait) event)) + (go-virtual wait) + (none) + ) + +(define *fuel-cell-tune-pos* (new 'static 'vector :w 1000000000.0)) + +(deftype fuel-cell (eco-collectable) + ((victory-anim spool-anim :offset-assert 404) + (state-object symbol :offset-assert 408) + ) + :heap-base #x130 + :method-count-assert 31 + :size-assert #x19c + :flag-assert #x1f0130019c + ) + + +(defun fuel-cell-pick-anim ((arg0 process-drawable)) + (let* ((gp-0 (-> arg0 entity extra trans)) + (a0-2 + (res-lump-value + (-> arg0 entity) + 'movie-mask + uint128 + :time + (the-as float -1000000000.0) + ) + ) + (a1-1 8) + (v1-6 + (abs + (the + int + (+ (* 0.00024414062 (-> gp-0 x)) (* 0.00024414062 (-> gp-0 z))) + ) + ) + ) + (v1-7 (mod v1-6 a1-1)) + ) + (while (logtest? a0-2 (ash 1 v1-7)) + (set! v1-7 (mod (+ v1-7 1) a1-1)) + ) + (when *target* + (cond + ((logtest? (-> *target* control root-prim prim-core action) 512) + (set! v1-7 16) + ) + ((logtest? (-> *target* control root-prim prim-core action) #x4000) + (set! v1-7 32) + ) + ) + ) + (cond + ((zero? v1-7) + (new 'static 'spool-anim + :name "fuel-cell-victory" + :index 3 + :parts 2 + :command-list '() + ) + ) + ((= v1-7 1) + (new 'static 'spool-anim + :name "fuel-cell-victory-2" + :index 4 + :parts 2 + :command-list '() + ) + ) + ((= v1-7 2) + (new 'static 'spool-anim + :name "fuel-cell-victory-3" + :index 5 + :parts 2 + :command-list '() + ) + ) + ((= v1-7 3) + (new 'static 'spool-anim + :name "fuel-cell-victory-4" + :index 6 + :parts 2 + :command-list '() + ) + ) + ((= v1-7 4) + (new 'static 'spool-anim + :name "fuel-cell-victory-5" + :index 7 + :parts 2 + :command-list '() + ) + ) + ((= v1-7 5) + (new 'static 'spool-anim + :name "fuel-cell-victory-6" + :index 8 + :parts 2 + :command-list '() + ) + ) + ((= v1-7 6) + (new 'static 'spool-anim + :name "fuel-cell-victory-7" + :index 9 + :parts 2 + :command-list '() + ) + ) + ((= v1-7 7) + (new 'static 'spool-anim + :name "fuel-cell-victory-8" + :index 10 + :parts 2 + :command-list '() + ) + ) + ((= v1-7 16) + (new 'static 'spool-anim + :name "fuel-cell-racer-victory-1" + :index 40 + :parts 2 + :command-list '() + ) + ) + ((= v1-7 32) + (new 'static 'spool-anim + :name "fuel-cell-flut-victory-1" + :index 44 + :parts 2 + :command-list '() + ) + ) + (else + (new 'static 'spool-anim + :name "fuel-cell-victory-3" + :index 5 + :parts 2 + :command-list '() + ) + ) + ) + ) + ) + +(defbehavior fuel-cell-animate fuel-cell () + (let* ((gp-0 self) + (s5-0 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) fuel-cell)) + gp-0 + ) + ) + ) + (cond + (s5-0 + (set! (-> s5-0 victory-anim) (fuel-cell-pick-anim s5-0)) + (spool-push + *art-control* + (-> s5-0 victory-anim name) + 0 + self + (the-as float -99.0) + ) + ) + (else + (let ((v1-5 (fuel-cell-pick-anim self))) + (spool-push *art-control* (-> v1-5 name) 0 self (the-as float -99.0)) + ) + ) + ) + ) + (when (nonzero? (-> self part)) + (cond + ((logtest? (-> self draw status) 6) + (kill-and-free-particles (-> self part)) + (if (nonzero? (-> self sound)) + (kill-and-free-particles (-> self part)) + ) + ) + (else + (let* ((gp-1 (-> self root-override)) + (v1-20 + (if (and (nonzero? gp-1) (type-type? (-> gp-1 type) collide-shape)) + gp-1 + ) + ) + (gp-2 (if v1-20 + (-> v1-20 root-prim prim-core) + (-> self root-override trans) + ) + ) + ) + (spawn (-> self part) (the-as vector gp-2)) + (when (nonzero? (-> self sound)) + (update-trans! (-> self sound) (the-as vector gp-2)) + (update! (-> self sound)) + ) + ) + ) + ) + ) + (set-vector! (-> self draw color-mult) 0.5 0.5 0.5 1.0) + (set-vector! (-> self draw color-emissive) 0.5 0.5 0.5 1.0) + 0 + (none) + ) + +(method-set! fuel-cell 29 fuel-cell-animate) + +(defstate wait (fuel-cell) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (local-vars (v0-3 none)) + (when + (and + (or (= arg2 'touch) (= arg2 'attack)) + (and + (logtest? (-> self flags) (collectable-flags can-collect)) + (>= + (- (-> *display* base-frame-counter) (-> self birth-time)) + (-> self collect-timeout) + ) + (and + (not (handle->process (-> *game-info* other-camera-handle))) + (not *progress-process*) + (!= (-> self next-state name) 'pickup) + *target* + (zero? (logand (-> *target* state-flags) #x8100)) + ) + ) + ) + (push-setting! *setting-control* self 'allow-progress #f 0.0 0) + (copy-settings-from-target! *setting-control*) + (logclear! (-> self mask) (process-mask actor-pause)) + (go-virtual pickup #f (process->handle arg0)) + ) + (the-as object (cond + ((= arg2 'trans) + (set! + (-> self root-override trans quad) + (-> (the-as vector (-> arg3 param 0)) quad) + ) + (set! + (-> self base quad) + (-> self root-override trans quad) + ) + (dummy-47 (-> self root-override)) + ) + ((= arg2 'pickup) + (when (!= (-> self next-state name) 'pickup) + (if (and (> arg1 0) (-> arg3 param 0)) + (TODO-RENAME-30 + (-> self root-override) + (the-as vector (-> arg3 param 0)) + ) + ) + (logclear! (-> self mask) (process-mask actor-pause)) + (go-virtual pickup #f (process->handle *target*)) + ) + ) + ((= arg2 'collide-shape) + (if (-> arg3 param 0) + (restore-collide-with-as (-> self root-override)) + (clear-collide-with-as (-> self root-override)) + ) + ) + ((= arg2 'movie-pos) + (set! v0-3 (the-as none (-> arg3 param 0))) + (set! (-> self movie-pos-index) (the-as int v0-3)) + v0-3 + ) + ((= arg2 'anim) + (cond + ((-> arg3 param 0) + (set! + v0-3 + (the-as + none + (logclear (-> self flags) (collectable-flags anim)) + ) + ) + (set! (-> self flags) (the-as collectable-flags v0-3)) + ) + (else + (set! + v0-3 + (the-as + none + (logior (-> self flags) (collectable-flags anim)) + ) + ) + (set! (-> self flags) (the-as collectable-flags v0-3)) + ) + ) + v0-3 + ) + ) + ) + ) + :code + (behavior () + 0.5 + (let ((f28-0 0.0)) + (let ((v1-3 (-> self skel root-channel 0))) + (set! + (-> v1-3 frame-group) + (the-as art-joint-anim (-> self draw art-group data 2)) + ) + ) + (while #t + (let ((f30-0 (vector-vector-distance (-> self base) (target-pos 0)))) + (set! + f28-0 + (if + (and + (< f30-0 (-> *FACT-bank* suck-suck-dist)) + (zero? (logand (-> self flags) (collectable-flags anim))) + ) + (seek + f28-0 + (the-as float 16384.0) + (* 3072.0 (-> *display* seconds-per-frame)) + ) + (seek + f28-0 + (the-as float 0.0) + (* 3072.0 (-> *display* seconds-per-frame)) + ) + ) + ) + (set! + (-> self root-override trans y) + (+ (-> self base y) (* 2867.2 (sin f28-0))) + ) + (let + ((f30-1 + (lerp-scale + (the-as float 0.6) + (the-as float 0.5) + f30-0 + (the-as float 8192.0) + (-> *FACT-bank* suck-suck-dist) + ) + ) + ) + (transform-post) + (fuel-cell-animate) + (suspend) + (let ((a0-11 (-> self skel root-channel 0))) + (set! (-> a0-11 param 0) f30-1) + (joint-control-channel-group-eval! + a0-11 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + ) + ) + ) + ) + (none) + ) + ) + +(defstate pickup (fuel-cell) + :virtual #t + :enter + (behavior ((arg0 object) (arg1 handle)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self state-object) #t) + (let + ((t9-1 + (-> + (the-as (state eco-collectable) (find-parent-method fuel-cell 23)) + enter + ) + ) + ) + (if t9-1 + (t9-1) + ) + ) + (none) + ) + :trans + (behavior () + (let ((f30-0 (the-as float (cond + ((string= + (-> self victory-anim name) + "fuel-cell-victory" + ) + 97.0 + ) + ((string= + (-> self victory-anim name) + "fuel-cell-victory-2" + ) + 97.0 + ) + ((string= + (-> self victory-anim name) + "fuel-cell-victory-3" + ) + 97.0 + ) + ((string= + (-> self victory-anim name) + "fuel-cell-victory-4" + ) + 97.0 + ) + ((string= + (-> self victory-anim name) + "fuel-cell-victory-5" + ) + 77.0 + ) + ((string= + (-> self victory-anim name) + "fuel-cell-victory-6" + ) + 97.0 + ) + ((string= + (-> self victory-anim name) + "fuel-cell-victory-7" + ) + 97.0 + ) + ((string= + (-> self victory-anim name) + "fuel-cell-victory-8" + ) + 97.0 + ) + ((string= + (-> self victory-anim name) + "fuel-cell-racer-victory-1" + ) + 88.0 + ) + ((string= + (-> self victory-anim name) + "fuel-cell-flut-victory-1" + ) + 150.0 + ) + (else + 5000.0 + ) + ) + ) + ) + ) + (when + (and + (logtest? (-> self skel status) 32) + (and (>= (ja-aframe-num 0) f30-0) (-> self state-object)) + ) + (set! (-> self state-object) #f) + (kill-and-free-particles (-> self part)) + (logior! (-> self draw status) 32) + (if + (not + (or + (logtest? + (the-as + int + (res-lump-value + (-> self entity) + 'options + uint128 + :time + (the-as float -1000000000.0) + ) + ) + 4096 + ) + (and + *target* + (logtest? (-> *target* control root-prim prim-core action) 512) + ) + ) + ) + (send-event *camera* 'teleport-to-other-start-string) + ) + ) + ) + (none) + ) + :code + (behavior ((arg0 object) (arg1 handle)) + (local-vars (sv-96 res-tag)) + (sound-play-by-name + (static-sound-name "pu-powercell") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (clear-collide-with-as (-> self root-override)) + (logclear! (-> self mask) (process-mask actor-pause)) + (set! (-> self draw status) (logand -3 (-> self draw status))) + (process-entity-status! self (entity-perm-status dead) #t) + (stop! (-> self sound)) + (while (handle->process (-> *game-info* other-camera-handle)) + (format + #t + "WARNING: fuel-cell stall ~D ~A ~A~%" + (-> *display* base-frame-counter) + (handle->process (-> *game-info* other-camera-handle)) + (-> *level* loading-level) + ) + (spool-push + *art-control* + (-> self victory-anim name) + 0 + self + (the-as float -99.0) + ) + (suspend) + ) + (while (let ((a1-8 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-8 from) self) + (set! (-> a1-8 num-params) 1) + (set! (-> a1-8 message) 'clone-anim) + (set! (-> a1-8 param 0) (the-as uint self)) + (not (send-event-function *target* a1-8)) + ) + (spool-push + *art-control* + (-> self victory-anim name) + 0 + self + (the-as float -99.0) + ) + (format #t "WARNING: fuel-cell stall on not cloning.~%") + (suspend) + ) + (set! sv-96 (new 'static 'res-tag)) + (let* + ((v1-34 + (res-lump-data + (-> self entity) + 'movie-pos + (inline-array vector) + :tag-ptr + (& sv-96) + :time + (the-as float -1000000000.0) + ) + ) + (gp-1 + (if + (and + v1-34 + (< (-> self movie-pos-index) (the-as int (-> sv-96 elt-count))) + ) + (-> v1-34 (-> self movie-pos-index)) + (the-as vector #f) + ) + ) + ) + (cond + ((and *debug-segment* (< (-> *fuel-cell-tune-pos* w) 1000000000.0)) + (TODO-RENAME-30 (-> self root-override) *fuel-cell-tune-pos*) + (set-yaw-angle-clear-roll-pitch! + (-> self root-override) + (-> *fuel-cell-tune-pos* w) + ) + ) + ((= (-> self movie-pos-index) -1) + ) + (gp-1 + (TODO-RENAME-30 (-> self root-override) gp-1) + (set-yaw-angle-clear-roll-pitch! (-> self root-override) (-> gp-1 w)) + ) + (else + (TODO-RENAME-30 (-> self root-override) (-> *target* control trans)) + (set-yaw-angle-clear-roll-pitch! + (-> self root-override) + (y-angle (-> *target* control)) + ) + (dummy-60 + (-> self root-override) + (the-as float 40960.0) + (the-as float 40960.0) + #f + (the-as uint 1) + ) + ) + ) + ) + (spool-push + *art-control* + (-> self victory-anim name) + 0 + self + (the-as float -99.0) + ) + (send-event + *target* + 'get-pickup + (-> self fact pickup-type) + (-> self fact pickup-amount) + ) + (set! (-> self draw bounds w) 32768.0) + (logior! (-> self skel status) 1) + (send-event *target* 'blend-shape #t) + (push-setting! + *setting-control* + self + 'music-volume + 'rel + (-> *setting-control* current music-volume-movie) + 0 + ) + (push-setting! + *setting-control* + self + 'sfx-volume + 'rel + (-> *setting-control* current sfx-volume-movie) + 0 + ) + (push-setting! + *setting-control* + self + 'ambient-volume + 'rel + (-> *setting-control* current ambient-volume-movie) + 0 + ) + (let ((gp-3 (get-process *default-dead-pool* othercam #x4000))) + (when gp-3 + (let ((t9-26 (method-of-type othercam activate))) + (t9-26 (the-as othercam gp-3) self 'othercam (the-as pointer #x70004000)) + ) + (run-now-in-process gp-3 othercam-init-by-other self 10 #f #t) + (-> gp-3 ppointer) + ) + ) + (auto-save-command 'auto-save 0 0 *default-pool*) + (ja-play-spooled-anim + (-> self victory-anim) + (the-as art-joint-anim (-> self draw art-group data 2)) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func) + ) + (clear-pending-settings-from-process *setting-control* self 'music-volume) + (clear-pending-settings-from-process *setting-control* self 'sfx-volume) + (clear-pending-settings-from-process *setting-control* self 'ambient-volume) + (send-event *target* 'blend-shape #f) + (send-event *target* 'end-mode) + (send-event *camera* 'no-intro) + (send-event *camera* 'clear-entity) + (ja-channel-set! 0) + (suspend) + (suspend) + (let ((gp-4 (get-process *default-dead-pool* process #x4000))) + (when gp-4 + (let ((t9-39 (method-of-type process activate))) + (t9-39 gp-4 self 'process (the-as pointer #x70004000)) + ) + (run-next-time-in-process + gp-4 + (lambda :behavior collectable + ((arg0 game-task)) + (while + (or + (-> *setting-control* current ambient) + (-> *setting-control* current movie) + (-> *setting-control* current hint) + (str-is-playing?) + ) + (suspend) + ) + (cond + ((= arg0 (game-task training-buzzer)) + (level-hint-spawn + (game-text-id training-assistant-found-scout-fly-cell) + "asstvb45" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task training-door)) + (level-hint-spawn + (game-text-id training-eco-opened-door) + "sagevb25" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task beach-ecorocks)) + (level-hint-spawn + (game-text-id beach-collectors-unblocked) + "sagevb01" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task misty-cannon)) + (level-hint-spawn + (game-text-id misty-stopped-lurkers-at-silo) + "sagevb02" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task misty-bike)) + (level-hint-spawn + (game-text-id misty-stopped-balloon-lurkers) + "asstvb03" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task firecanyon-end)) + (level-hint-spawn + (game-text-id fire-canyon-we-made-it) + "sksp0095" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task rolling-robbers)) + (level-hint-spawn + (game-text-id rolling-beat-lurkers) + "asstvb20" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task rolling-plants)) + (level-hint-spawn + (game-text-id sage-golfclap-i-have-low-expectations) + "sagevb03" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task swamp-flutflut)) + (level-hint-spawn + (game-text-id swamp-finished-with-flutflut) + "asstvb21" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task ogre-boss)) + (level-hint-spawn + (game-text-id ogre-boss-killed) + "asstvb23" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task ogre-end)) + (level-hint-spawn + (game-text-id assistant-finished-mountain-pass-race) + "asstvb25" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task beach-buzzer)) + (level-hint-spawn + (game-text-id found-all-scout-flies) + "sksp009k" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task jungle-buzzer)) + (level-hint-spawn + (game-text-id found-all-scout-flies) + "sksp009k" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task misty-buzzer)) + (level-hint-spawn + (game-text-id found-all-scout-flies) + "sksp009k" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task firecanyon-buzzer)) + (level-hint-spawn + (game-text-id found-all-scout-flies) + "sksp009k" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task rolling-buzzer)) + (level-hint-spawn + (game-text-id found-all-scout-flies) + "sksp009k" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task sunken-buzzer)) + (level-hint-spawn + (game-text-id found-all-scout-flies) + "sksp009k" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task swamp-buzzer)) + (level-hint-spawn + (game-text-id found-all-scout-flies) + "sksp009k" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task ogre-buzzer)) + (level-hint-spawn + (game-text-id found-all-scout-flies) + "sksp009k" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task cave-buzzer)) + (level-hint-spawn + (game-text-id found-all-scout-flies) + "sksp009k" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task snow-buzzer)) + (level-hint-spawn + (game-text-id found-all-scout-flies) + "sksp009k" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task lavatube-buzzer)) + (level-hint-spawn + (game-text-id found-all-scout-flies) + "sksp009k" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task citadel-buzzer)) + (level-hint-spawn + (game-text-id found-all-scout-flies) + "sksp009k" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task village1-buzzer)) + (level-hint-spawn + (game-text-id found-all-scout-flies) + "sksp009k" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task village2-buzzer)) + (level-hint-spawn + (game-text-id found-all-scout-flies) + "sksp009k" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= arg0 (game-task village3-buzzer)) + (level-hint-spawn + (game-text-id found-all-scout-flies) + "sksp009k" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ) + (none) + ) + (the int (-> self fact pickup-amount)) + ) + (-> gp-4 ppointer) + ) + ) + (case (the int (-> self fact pickup-amount)) + (((game-task citadel-sage-blue)) + (send-event (process-by-name "blue-sagecage-1" *active-pool*) 'play-anim) + ) + (((game-task citadel-sage-red)) + (send-event (process-by-name "red-sagecage-1" *active-pool*) 'play-anim) + ) + (((game-task citadel-sage-yellow)) + (send-event (process-by-name "yellow-sagecage-1" *active-pool*) 'play-anim) + ) + (((game-task citadel-sage-green)) + (send-event (process-by-name "green-sagecage-1" *active-pool*) 'play-anim) + ) + (((game-task jungle-eggtop) + (game-task snow-eggtop) + (game-task snow-ball) + (game-task sunken-slide) + ) + ) + (else + (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'show) + ) + ) + (convert-to-hud-object + self + (the-as hud (ppointer->process (-> *hud-parts* fuel-cell))) + ) + (none) + ) + :post + (behavior () + (transform-post) + (if (-> self state-object) + (spawn + (-> self part) + (the-as vector (-> self root-override root-prim prim-core)) + ) + ) + (none) + ) + ) + +(defmethod initialize fuel-cell ((obj fuel-cell)) + (stack-size-set! (-> obj main-thread) 512) + (let + ((s5-0 + (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) + (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (the-as uint 64)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 transform-index) 3) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 4915.2) + (set-root-prim! s5-0 s4-0) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) + ) + (logior! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj actor-pause) #t) + (set! (-> obj notify-parent) #f) + (set! + (-> obj fact) + (new 'process 'fact-info obj (pickup-type fuel-cell) (the-as float 0.0)) + ) + (initialize-skeleton obj *fuel-cell-sg* '()) + (set! (-> obj base quad) (-> obj root-override trans quad)) + (set! (-> obj old-base quad) (-> obj root-override trans quad)) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 63) obj)) + (set! + (-> obj sound) + (new + 'process + 'ambient-sound + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "powercell-idle") + :volume #x400 + :fo-max 40 + ) + (-> obj root-override trans) + ) + ) + (set! (-> obj victory-anim) (fuel-cell-pick-anim obj)) + obj + ) + +(defmethod init-from-entity! fuel-cell ((obj fuel-cell) (arg0 entity-actor)) + (initialize obj) + (process-drawable-from-entity! obj (the-as entity-actor (-> obj entity))) + (initialize-params obj 0 (the-as float 1024.0)) + (logclear! (-> obj fact options) (fact-options can-collect)) + (dummy-47 (-> obj root-override)) + (go (method-of-object obj wait)) + (none) + ) + +(defbehavior + fuel-cell-init-by-other fuel-cell + ((arg0 vector) (arg1 vector) (arg2 fact-info) (arg3 entity)) + (let ((s3-0 (-> arg2 pickup-type)) + (f30-0 (-> arg2 pickup-spawn-amount)) + ) + (set! (-> self entity) arg3) + (set! (-> self pickup-type) s3-0) + (set! (-> self pickup-amount) f30-0) + (initialize self) + (set! (-> self fact pickup-type) s3-0) + (set! (-> self fact pickup-amount) f30-0) + ) + (set! (-> self fact options) (-> arg2 options)) + (set! (-> self notify-parent) #t) + (set! (-> self root-override trans quad) (-> arg0 quad)) + (quaternion-identity! (-> self root-override quat)) + (vector-identity! (-> self root-override scale)) + (set! (-> self root-override transv quad) (-> arg1 quad)) + (initialize-params self 0 (the-as float 1024.0)) + (logclear! (-> self fact options) (fact-options can-collect)) + (dummy-47 (-> self root-override)) + (let + ((gp-1 + (res-lump-struct + (-> self entity) + 'movie-pos + structure + :time + (the-as float -1000000000.0) + ) + ) + ) + (cond + ((and *debug-segment* (< (-> *fuel-cell-tune-pos* w) 1000000000.0)) + (set! (-> self jump-pos quad) (-> *fuel-cell-tune-pos* quad)) + (set! (-> self jump-pos y) (+ 4096.0 (-> self jump-pos y))) + (go-virtual jump) + ) + ((and + gp-1 + (zero? + (logand + (the-as + int + (res-lump-value + (-> self entity) + 'options + uint128 + :time + (the-as float -1000000000.0) + ) + ) + 128 + ) + ) + (zero? (logand (-> self fact options) (fact-options fop7))) + ) + (set! (-> self jump-pos quad) (-> (the-as vector gp-1) quad)) + (set! (-> self jump-pos y) (+ 4096.0 (-> self jump-pos y))) + (go-virtual jump) + ) + ) + ) + (set! (-> self event-hook) (-> (method-of-object self wait) event)) + (go-virtual wait) + (none) + ) + +(defstate fuel-cell-clone-anim (fuel-cell) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('pickup) + (when (!= (-> self next-state name) 'pickup) + (if (and (> arg1 0) (-> arg3 param 0)) + (TODO-RENAME-30 + (-> self root-override) + (the-as vector (-> arg3 param 0)) + ) + ) + (logclear! (-> self mask) (process-mask actor-pause)) + (go-virtual pickup #f (the-as handle #f)) + ) + ) + (('trans) + (set! + (-> self root-override trans quad) + (-> (the-as vector (-> arg3 param 0)) quad) + ) + (set! (-> self base quad) (-> self root-override trans quad)) + (dummy-47 (-> self root-override)) + ) + (('stop-cloning 'notify) + (set! (-> self root-override trans quad) (-> self draw origin quad)) + (set! (-> self base quad) (-> self root-override trans quad)) + (ja-channel-set! 1) + (let ((v1-20 (-> self skel root-channel 0))) + (set! + (-> v1-20 frame-group) + (the-as art-joint-anim (-> self draw art-group data 2)) + ) + ) + (set! (-> self draw status) (logand -3 (-> self draw status))) + (vector-reset! (-> self draw origin)) + (go-virtual wait) + ) + ) + ) + :exit + (behavior () + (if (-> self actor-pause) + (logior! (-> self mask) (process-mask actor-pause)) + ) + (set! (-> self skel status) (logand -33 (-> self skel status))) + (none) + ) + :code + (behavior ((arg0 handle)) + (logclear! (-> self mask) (process-mask actor-pause)) + (clone-anim arg0 3 #t "") + (format #t "ERROR: clone-anim returned in fuel-cell~%") + (deactivate self) + (none) + ) + :post + (behavior () + (dummy-47 (-> self root-override)) + (animate self) + (none) + ) + ) + +(defbehavior fuel-cell-init-as-clone fuel-cell ((arg0 handle) (arg1 int)) + (initialize self) + (set! (-> self fact pickup-type) (pickup-type fuel-cell)) + (set! (-> self fact pickup-amount) (the float arg1)) + (initialize-params self 0 (the-as float 1024.0)) + (logclear! (-> self mask) (process-mask actor-pause)) + (set! (-> self actor-pause) #f) + (sound-play-by-name + (static-sound-name "cell-prize") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (go fuel-cell-clone-anim arg0) + (none) + ) + +(defskelgroup *buzzer-sg* buzzer + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 1 0 1.6) + :longest-edge (meters 0) + :texture-level 2 + ) + +(deftype buzzer (eco-collectable) + ((victory-anim spool-anim :offset-assert 404) + ) + :heap-base #x130 + :method-count-assert 31 + :size-assert #x198 + :flag-assert #x1f01300198 + ) + + +(defmethod animate buzzer ((obj buzzer)) + (quaternion-rotate-y! + (-> obj root-override quat) + (-> obj root-override quat) + (* 40049.777 (-> *display* seconds-per-frame)) + ) + (let ((a0-2 (-> obj skel root-channel 0))) + (set! (-> a0-2 param 0) 1.0) + (joint-control-channel-group-eval! + a0-2 + (the-as art-joint-anim #f) + num-func-loop! + ) + ) + (let ((f0-3 (y-angle (-> obj root-override)))) + (set! (-> *part-id-table* 239 init-specs 4 initial-valuef) (+ 16384.0 f0-3)) + (set! (-> *part-id-table* 240 init-specs 4 initial-valuef) (+ 16384.0 f0-3)) + ) + (spawn + (-> obj part) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> obj node-list data 15)) + ) + (if (nonzero? (-> obj sound)) + (update! (-> obj sound)) + ) + (if (and *target* (>= (-> *target* fact-info-target buzzer) 6.0)) + (spool-push + *art-control* + (-> obj victory-anim name) + 0 + obj + (the-as float -99.0) + ) + ) + 0 + (none) + ) + +(defstate wait (buzzer) + :virtual #t + :code + (behavior () + (case + (get-reminder + (get-task-control + (the-as game-task (logand (the int (-> self fact pickup-amount)) #xffff)) + ) + 0 + ) + + ((127) + (go-virtual pickup #t (the-as handle #f)) + ) + ) + (while #t + (transform-post) + (animate self) + (suspend) + ) + (none) + ) + ) + +(defstate pickup (buzzer) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v1-0 arg2)) + (the-as object (if (= v1-0 'notify) + (process-entity-status! self (entity-perm-status dead) #t) + ) + ) + ) + ) + :enter + (behavior ((arg0 object) (arg1 handle)) + (set! (-> self pickup-handle) arg1) + (logclear! (-> self mask) (process-mask actor-pause)) + (none) + ) + :code + (behavior ((arg0 object) (arg1 handle)) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status complete) #t) + (sound-play-by-name + (static-sound-name "buzzer-pickup") + (new-sound-id) + 1024 + 0 + 0 + 1 + #t + ) + (case (-> (level-get-target-inside *level*) name) + (('training) + (level-hint-spawn + (game-text-id training-assistant-found-scout-fly) + "asstvb44" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + (('firecanyon) + (level-hint-spawn + (game-text-id collectables-theres-scout-flys-here-too) + "sksp0096" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + (else + (level-hint-spawn + (game-text-id collectables-scout-flies-red-boxes) + "sksp009j" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ) + (ja-channel-set! 0) + (clear-collide-with-as (-> self root-override)) + (if (nonzero? (-> self sound)) + (stop! (-> self sound)) + ) + (when (not arg0) + (let* ((s5-1 (get-process *default-dead-pool* manipy #x4000)) + (v1-18 (when s5-1 + (let ((t9-11 (method-of-type manipy activate))) + (t9-11 + (the-as manipy s5-1) + *entity-pool* + 'manipy + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s5-1 + manipy-init + (-> self root-override trans) + #f + *buzzer-sg* + #f + ) + (-> s5-1 ppointer) + ) + ) + ) + (send-event + (ppointer->process v1-18) + 'become-hud-object + (ppointer->process (-> *hud-parts* buzzers)) + ) + ) + ) + (let* ((s5-2 (logand (the int (-> self fact pickup-amount)) #xffff)) + (s4-1 (get-task-control (the-as game-task s5-2))) + ) + (if (nonzero? s5-2) + (close-specific-task! (the-as game-task s5-2) (task-status need-hint)) + ) + (when + (and + (= (get-reminder s4-1 0) 127) + (and + (-> self entity) + (not (task-complete? *game-info* (the-as game-task s5-2))) + ) + ) + (if + (and + *target* + (logtest? (-> *target* control root-prim prim-core action) #x7200) + (not arg0) + ) + (logior! (-> self fact options) (fact-options fop6 fop7)) + ) + (let + ((v1-47 + (birth-pickup-at-point + (vector+! + (new 'stack-no-clear 'vector) + (-> self root-override trans) + (new 'static 'vector :y 4096.0 :w 1.0) + ) + (pickup-type fuel-cell) + (the float s5-2) + #f + self + (-> self fact) + ) + ) + ) + (when v1-47 + (send-event + (ppointer->process v1-47) + 'movie-pos + (-> self movie-pos-index) + ) + (ja-channel-set! 0) + (clear-collide-with-as (-> self root-override)) + (ja-post) + (while (-> self child) + (suspend) + ) + ) + ) + ) + ) + (when (-> self notify-parent) + (let ((gp-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> gp-1 from) self) + (set! (-> gp-1 num-params) 1) + (set! (-> gp-1 message) 'notify) + (set! (-> gp-1 param 0) (the-as uint 'pickup)) + (let ((s5-3 send-event-function) + (s4-2 (ppointer->process (-> self parent))) + ) + (s5-3 (if (and (nonzero? s4-2) (type-type? (-> s4-2 type) process)) + s4-2 + ) + gp-1 + ) + ) + ) + ) + (none) + ) + ) + +(defmethod initialize buzzer ((obj buzzer)) + (let + ((s5-0 + (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) + (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (the-as uint #x8040)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set-vector! (-> s4-0 local-sphere) 0.0 2457.6 0.0 4915.2) + (set-root-prim! s5-0 s4-0) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) + ) + (logior! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj actor-pause) #t) + (set! (-> obj notify-parent) #f) + (set! + (-> obj fact) + (new 'process 'fact-info obj (pickup-type buzzer) (the-as float 0.0)) + ) + (initialize-skeleton obj *buzzer-sg* '()) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 65) obj)) + (set! + (-> obj sound) + (new + 'process + 'ambient-sound + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "buzzer") + :volume #x400 + :fo-max 40 + ) + (-> obj root-override trans) + ) + ) + (set! (-> obj victory-anim) (fuel-cell-pick-anim obj)) + obj + ) + +(defmethod init-from-entity! buzzer ((obj buzzer) (arg0 entity-actor)) + (initialize obj) + (process-drawable-from-entity! obj (the-as entity-actor (-> obj entity))) + (initialize-params obj 0 (the-as float 1024.0)) + (set! (-> obj collect-timeout) 600) + (dummy-47 (-> obj root-override)) + (update-trans! (-> obj sound) (-> obj root-override trans)) + (if + (and + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) + ) + (go (method-of-object obj wait)) + (go (method-of-object obj pickup) #t (the-as handle #f)) + ) + (none) + ) + +(defbehavior + buzzer-init-by-other buzzer + ((arg0 vector) (arg1 vector) (arg2 fact-info) (arg3 entity)) + (let ((s3-0 (-> arg2 pickup-type)) + (f30-0 (-> arg2 pickup-spawn-amount)) + ) + (set! (-> self entity) arg3) + (set! (-> self pickup-type) s3-0) + (set! (-> self pickup-amount) f30-0) + (initialize self) + (set! (-> self fact pickup-type) s3-0) + (set! (-> self fact pickup-amount) f30-0) + ) + (set! (-> self fact options) (-> arg2 options)) + (set! (-> self notify-parent) #t) + (set! (-> self root-override trans quad) (-> arg0 quad)) + (quaternion-identity! (-> self root-override quat)) + (vector-identity! (-> self root-override scale)) + (set! (-> self root-override transv quad) (-> arg1 quad)) + (initialize-params self 0 (the-as float 1024.0)) + (dummy-47 (-> self root-override)) + (update-trans! (-> self sound) (-> self root-override trans)) + (set! (-> self event-hook) (-> (method-of-object self wait) event)) + (go-virtual wait) + (none) + ) + +(defmethod init-from-entity! eco ((obj eco) (arg0 entity-actor)) + (let + ((v1-2 + (res-lump-value + (-> obj entity) + 'eco-info + pickup-type + :time + (the-as float -1000000000.0) + ) + ) + ) + (set! (-> obj type) (cond + ((= v1-2 (pickup-type eco-blue)) + eco-blue + ) + ((= v1-2 (pickup-type eco-red)) + eco-red + ) + ((= v1-2 (pickup-type eco-yellow)) + eco-yellow + ) + ((= v1-2 (pickup-type eco-green)) + health + ) + ((= v1-2 (pickup-type money)) + money + ) + ((= v1-2 (pickup-type fuel-cell)) + fuel-cell + ) + ((= v1-2 (pickup-type buzzer)) + buzzer + ) + (else + eco-pill + ) + ) + ) + ) + (init-from-entity! obj arg0) + (none) + ) + +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 190] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 221] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 252] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 284] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 320] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 356] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 363] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 122] +(defbehavior + birth-pickup-at-point process + ((arg0 vector) + (arg1 pickup-type) + (arg2 float) + (arg3 symbol) + (arg4 process-drawable) + (arg5 fact-info) + ) + (local-vars + (v1-2 basic) + (v1-28 symbol) + (v1-34 symbol) + (v1-40 symbol) + (v1-46 symbol) + (v1-52 symbol) + (v1-58 symbol) + (v1-64 symbol) + (v1-71 symbol) + (sv-32 fact-info) + (sv-48 int) + (sv-64 process) + (sv-80 process) + (sv-96 process) + (sv-112 process) + (sv-128 process) + (sv-144 process) + (sv-160 process) + (sv-176 process) + (sv-192 (pointer process)) + ) + (set! sv-32 arg5) + (let ((s1-0 (new-stack-vector0)) + (t9-0 (method-of-type res-lump get-property-value-float)) + ) + (let ((v1-1 sv-32)) + (b! (not v1-1) cfg-3 :likely-delay (set! v1-2 sv-32)) + ) + (set! v1-2 (nonzero? (-> sv-32 process))) + (label cfg-3) + (let ((f30-0 (t9-0 (if v1-2 + (-> sv-32 process entity) + ) + 'pickup-radius + 'interp + (the-as float -1000000000.0) + (the-as float (cond + ((= arg1 (pickup-type buzzer)) + 0.0 + ) + ((= arg2 1.0) + 409.6 + ) + (else + 8192.0 + ) + ) + ) + (the-as (pointer res-tag) #f) + *res-static-buf* + ) + ) + ) + (set! sv-192 (the-as (pointer process) #f)) + (set! sv-48 (the int arg2)) + (let ((s0-0 (new 'static 'fact-info))) + (set! (-> s0-0 options) (fact-options)) + (if sv-32 + (mem-copy! (&-> s0-0 type) (&-> sv-32 type) 40) + ) + (set! (-> s0-0 pickup-type) arg1) + (set! (-> s0-0 pickup-spawn-amount) 1.0) + (while (> sv-48 0) + (set! sv-48 (+ sv-48 -1)) + (when arg3 + (set-vector! s1-0 0.0 57001.605 f30-0 1.0) + (vector-rotate-around-y! + s1-0 + s1-0 + (/ (* 65536.0 (the float sv-48)) arg2) + ) + ) + (let ((v1-25 arg1)) + (cond + ((= v1-25 (pickup-type eco-yellow)) + (set! sv-64 (get-process *pickup-dead-pool* eco-yellow #x4000)) + (set! v1-28 (when sv-64 + (set! sv-192 (the-as (pointer process) v1-28)) + (let ((t9-4 (method-of-type eco-yellow activate))) + (t9-4 + (the-as eco-yellow sv-64) + arg4 + 'eco-yellow + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + sv-64 + initialize-eco-by-other + arg0 + s1-0 + s0-0 + ) + (set! sv-192 (-> sv-64 ppointer)) + v1-28 + ) + ) + sv-192 + ) + ((= v1-25 (pickup-type eco-red)) + (set! sv-80 (get-process *pickup-dead-pool* eco-red #x4000)) + (set! v1-34 (when sv-80 + (set! sv-192 (the-as (pointer process) v1-34)) + (let ((t9-7 (method-of-type eco-red activate))) + (t9-7 + (the-as eco-red sv-80) + arg4 + 'eco-red + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + sv-80 + initialize-eco-by-other + arg0 + s1-0 + s0-0 + ) + (set! sv-192 (-> sv-80 ppointer)) + v1-34 + ) + ) + (level-hint-spawn + (game-text-id sidekick-hint-misty-get-red-eco) + "sksp0071" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ((= v1-25 (pickup-type eco-blue)) + (set! sv-96 (get-process *pickup-dead-pool* eco-blue #x4000)) + (set! v1-40 (when sv-96 + (set! sv-192 (the-as (pointer process) v1-40)) + (let ((t9-11 (method-of-type eco-blue activate))) + (t9-11 + (the-as eco-blue sv-96) + arg4 + 'eco-blue + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + sv-96 + initialize-eco-by-other + arg0 + s1-0 + s0-0 + ) + (set! sv-192 (-> sv-96 ppointer)) + v1-40 + ) + ) + sv-192 + ) + ((= v1-25 (pickup-type eco-green)) + (set! sv-112 (get-process *pickup-dead-pool* health #x4000)) + (set! v1-46 (when sv-112 + (set! sv-192 (the-as (pointer process) v1-46)) + (let ((t9-14 (method-of-type health activate))) + (t9-14 + (the-as health sv-112) + arg4 + 'health + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + sv-112 + initialize-eco-by-other + arg0 + s1-0 + s0-0 + ) + (set! sv-192 (-> sv-112 ppointer)) + v1-46 + ) + ) + sv-192 + ) + ((= v1-25 (pickup-type eco-pill)) + (set! sv-128 (get-process *pickup-dead-pool* eco-pill #x4000)) + (set! v1-52 (when sv-128 + (set! sv-192 (the-as (pointer process) v1-52)) + (let ((t9-17 (method-of-type eco-pill activate))) + (t9-17 + (the-as eco-pill sv-128) + arg4 + 'eco-pill + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + sv-128 + initialize-eco-by-other + arg0 + s1-0 + s0-0 + ) + (set! sv-192 (-> sv-128 ppointer)) + v1-52 + ) + ) + sv-192 + ) + ((= v1-25 (pickup-type money)) + (set! sv-144 (get-process *pickup-dead-pool* money #x4000)) + (set! v1-58 (when sv-144 + (set! sv-192 (the-as (pointer process) v1-58)) + (let ((t9-20 (method-of-type money activate))) + (t9-20 + (the-as money sv-144) + arg4 + 'money + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + sv-144 + money-init-by-other + arg0 + s1-0 + s0-0 + (-> self entity) + ) + (set! sv-192 (-> sv-144 ppointer)) + v1-58 + ) + ) + sv-192 + ) + ((= v1-25 (pickup-type fuel-cell)) + (set! (-> s0-0 pickup-spawn-amount) arg2) + (set! sv-160 (get-process *pickup-dead-pool* fuel-cell #x4000)) + (set! v1-64 (when sv-160 + (set! sv-192 (the-as (pointer process) v1-64)) + (let ((t9-23 (method-of-type fuel-cell activate))) + (t9-23 + (the-as fuel-cell sv-160) + arg4 + 'fuel-cell + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + sv-160 + fuel-cell-init-by-other + arg0 + s1-0 + s0-0 + (-> self entity) + ) + (set! sv-192 (-> sv-160 ppointer)) + v1-64 + ) + ) + (set! sv-48 0) + sv-48 + ) + ((= v1-25 (pickup-type buzzer)) + (set! (-> s0-0 pickup-spawn-amount) arg2) + (set! sv-176 (get-process *pickup-dead-pool* buzzer #x4000)) + (set! v1-71 (when sv-176 + (set! sv-192 (the-as (pointer process) v1-71)) + (let ((t9-26 (method-of-type buzzer activate))) + (t9-26 + (the-as buzzer sv-176) + arg4 + 'buzzer + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + sv-176 + buzzer-init-by-other + arg0 + s1-0 + s0-0 + (-> self entity) + ) + (set! sv-192 (-> sv-176 ppointer)) + v1-71 + ) + ) + (set! sv-48 0) + sv-48 + ) + (else + (format 0 "ERROR: unknown type of eco ~d~%" arg1) + #f + ) + ) + ) + ) + ) + ) + ) + sv-192 + ) + +;; WARN: Expression building failed: Function (method 9 fact-info) has a return type of none, but the expression builder found a return statement. +(defmethod + drop-pickup + fact-info + ((obj fact-info) + (arg0 symbol) + (arg1 process-tree) + (arg2 fact-info) + (arg3 int) + ) + (let ((s3-0 (-> obj pickup-type)) + (f30-0 (-> obj pickup-amount)) + ) + (when (= s3-0 (pickup-type eco-pill-random)) + f30-0 + (let ((s1-0 (get-death-count *game-info* #f))) + (set! s3-0 (pickup-type eco-pill)) + (set! f30-0 (cond + ((and + (= s1-0 1) + *target* + (and + (>= 1.0 (-> *target* fact-info-target health)) + (rand-vu-percent? (the-as float 0.1)) + ) + ) + (set! s3-0 (pickup-type eco-green)) + 1.0 + ) + ((and + (< 1 s1-0) + *target* + (and + (>= 2.0 (-> *target* fact-info-target health)) + (rand-vu-percent? (the-as float 0.05)) + ) + ) + (set! s3-0 (pickup-type eco-green)) + 1.0 + ) + ((< 20 *eco-pill-count*) + (return #f) + f30-0 + ) + ((< 10 *eco-pill-count*) + 1.0 + ) + ((type-type? (-> obj type) fact-info-enemy) + (+ + (rand-vu-float-range (the-as float 3.0) (+ 5.0 f30-0)) + (the float arg3) + ) + ) + (else + (+ + (rand-vu-float-range (the-as float 2.0) (+ 3.0 f30-0)) + (the float arg3) + ) + ) + ) + ) + ) + ) + (let ((s2-1 (new 'stack-no-clear 'vector))) + (set! (-> s2-1 quad) (-> obj process root trans quad)) + (set! (-> s2-1 y) (+ 12288.0 (-> s2-1 y))) + (let ((s1-1 (new 'stack-no-clear 'collide-tri-result))) + (if + (>= + (fill-and-probe-using-y-probe + *collide-cache* + s2-1 + (the-as float 81920.0) + (the-as uint 1) + (the-as process #f) + s1-1 + (the-as uint 1) + ) + 0.0 + ) + (set! (-> s2-1 quad) (-> s1-1 intersect quad)) + (set! (-> s2-1 quad) (-> obj process root trans quad)) + ) + ) + (if (= (the-as int s3-0) 6) + (set! (-> s2-1 y) (+ 6144.0 (-> s2-1 y))) + ) + (birth-pickup-at-point + s2-1 + (the-as pickup-type s3-0) + f30-0 + arg0 + (the-as process-drawable arg1) + obj + ) + ) + ) + (none) + ) + +(deftype ecovalve (process-drawable) + ((root-override collide-shape-moving :offset 112) + (offset vector :inline :offset-assert 176) + (offset-target vector :inline :offset-assert 192) + (block-func (function vent symbol) :offset-assert 208) + ) + :heap-base #x70 + :method-count-assert 20 + :size-assert #xd4 + :flag-assert #x14007000d4 + ) + + +(defskelgroup *ecovalve-sg* ecovalve + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 1 0 1.6) + :longest-edge (meters 0) + :texture-level 2 + ) + +(defstate ecovalve-idle (ecovalve) + :code + (behavior () + (transform-post) + (suspend) + (transform-post) + (while #t + (if + (not + ((-> self block-func) (the-as vent (ppointer->process (-> self parent)))) + ) + (set-vector! (-> self offset-target) 0.0 0.0 0.0 1.0) + ) + (when (!= (-> self offset-target y) (-> self offset y)) + (vector-seek! + (-> self offset) + (-> self offset-target) + (* 4096.0 (-> *display* seconds-per-frame)) + ) + (TODO-RENAME-30 + (-> self root-override) + (vector+! + (new 'stack-no-clear 'vector) + (-> (the-as process-drawable (-> self parent 0)) root trans) + (-> self offset) + ) + ) + (transform-post) + ) + (suspend) + ) + (none) + ) + ) + +(defbehavior ecovalve-init-by-other ecovalve ((arg0 (function vent symbol))) + (stack-size-set! (-> self main-thread) 128) + (let + ((s5-0 + (new 'process 'collide-shape-moving self (collide-list-enum hit-by-player)) + ) + ) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) + (let + ((s4-0 + (new + 'process + 'collide-shape-prim-mesh + s5-0 + (the-as uint 0) + (the-as uint 0) + ) + ) + ) + (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) + (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core offense) 1) + (set! (-> s4-0 transform-index) 3) + (set-vector! (-> s4-0 local-sphere) 0.0 3686.4 0.0 6144.0) + (set-root-prim! s5-0 s4-0) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> self root-override) s5-0) + ) + (if + (and + *target* + (logtest? (-> *target* control root-prim prim-core action) 512) + ) + (clear-collide-with-as (-> self root-override)) + ) + (set! (-> self block-func) arg0) + (set! + (-> self root-override trans quad) + (-> (the-as process-drawable (-> self parent 0)) root trans quad) + ) + (set-vector! (-> self offset-target) 0.0 -2252.8 0.0 1.0) + (if + (not + ((-> self block-func) (the-as vent (ppointer->process (-> self parent)))) + ) + (set-vector! (-> self offset-target) 0.0 0.0 0.0 1.0) + ) + (set! (-> self offset quad) (-> self offset-target quad)) + (initialize-skeleton self *ecovalve-sg* '()) + (TODO-RENAME-30 + (-> self root-override) + (vector+! + (new 'stack-no-clear 'vector) + (-> (the-as process-drawable (-> self parent 0)) root trans) + (-> self offset) + ) + ) + (go ecovalve-idle) + (none) + ) + +(deftype vent (process-drawable) + ((root-override collide-shape :offset 112) + (show-particles symbol :offset-assert 176) + (collect-effect sparticle-launch-group :offset-assert 180) + (collect-effect2 sparticle-launch-group :offset-assert 184) + (collect-effect-time uint64 :offset-assert 192) + (blocker entity-actor :offset-assert 200) + (block-func (function vent symbol) :offset-assert 204) + (pickup-handle handle :offset-assert 208) + ) + :heap-base #x70 + :method-count-assert 21 + :size-assert #xd8 + :flag-assert #x15007000d8 + (:methods + (initialize (_type_ entity-actor pickup-type) none 20) + ) + (:states + vent-blocked + (vent-pickup handle) + vent-wait-for-touch + ) + ) + + +(defmethod initialize vent ((obj vent) (arg0 entity-actor) (arg1 pickup-type)) + (stack-size-set! (-> obj main-thread) 128) + (logior! (-> obj mask) (process-mask actor-pause)) + (let + ((s3-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((s2-0 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 0)))) + (set! (-> s2-0 prim-core collide-as) (the-as uint 64)) + (set! (-> s2-0 collide-with) (the-as uint 16)) + (set-vector! (-> s2-0 local-sphere) 0.0 4915.2 0.0 6553.6) + (set-root-prim! s3-0 s2-0) + ) + (set! (-> s3-0 nav-radius) (* 0.75 (-> s3-0 root-prim local-sphere w))) + (backup-collide-with-as s3-0) + (set! (-> obj root-override) s3-0) + ) + (set! (-> obj root-override trans quad) (-> arg0 extra trans quad)) + (dummy-47 (-> obj root-override)) + (set! (-> obj root-override pause-adjust-distance) 409600.0) + (set! + (-> obj fact) + (new 'process 'fact-info obj arg1 (-> *FACT-bank* eco-full-inc)) + ) + (set! (-> obj block-func) (the-as (function vent symbol) true-func)) + (case (-> obj fact pickup-type) + (((pickup-type eco-blue)) + (set! + (-> obj part) + (create-launch-control (-> *part-group-id-table* 44) obj) + ) + (set! (-> obj collect-effect) (-> *part-group-id-table* 67)) + (set! (-> obj collect-effect2) (-> *part-group-id-table* 43)) + (set! + (-> obj sound) + (new 'process 'ambient-sound 'eco-bg-blue (-> obj root-override trans)) + ) + ) + (((pickup-type eco-red)) + (set! + (-> obj part) + (create-launch-control (-> *part-group-id-table* 50) obj) + ) + (set! (-> obj collect-effect) (-> *part-group-id-table* 69)) + (set! (-> obj collect-effect2) (-> *part-group-id-table* 49)) + (set! + (-> obj sound) + (new 'process 'ambient-sound 'eco-bg-red (-> obj root-override trans)) + ) + ) + (((pickup-type eco-green)) + (set! + (-> obj part) + (create-launch-control (-> *part-group-id-table* 62) obj) + ) + (set! (-> obj collect-effect) (-> *part-group-id-table* 66)) + (set! (-> obj collect-effect2) (-> *part-group-id-table* 61)) + (set! + (-> obj sound) + (new 'process 'ambient-sound 'eco-bg-green (-> obj root-override trans)) + ) + ) + (((pickup-type eco-yellow)) + (set! + (-> obj part) + (create-launch-control (-> *part-group-id-table* 52) obj) + ) + (set! (-> obj collect-effect) (-> *part-group-id-table* 68)) + (set! (-> obj collect-effect2) (-> *part-group-id-table* 57)) + (set! + (-> obj sound) + (new 'process 'ambient-sound 'eco-bg-yellow (-> obj root-override trans)) + ) + ) + ) + (set! (-> obj blocker) (entity-actor-lookup (-> obj entity) 'alt-actor 0)) + (when (-> obj blocker) + (logior! (-> obj fact options) (fact-options vent-blocked)) + (set! (-> obj block-func) (lambda ((arg0 vent)) + (zero? + (logand + (-> arg0 blocker extra perm status) + (entity-perm-status complete) + ) + ) + ) + ) + ) + (set! (-> obj show-particles) #t) + (when (logtest? (-> obj fact options) (fact-options vent-blocked)) + (when (logtest? (-> obj fact options) (fact-options vent-valve)) + (case (-> obj fact pickup-type) + (((pickup-type eco-blue)) + (set! (-> obj block-func) (the-as (function vent symbol) (lambda () + (not + (task-complete? + *game-info* + (game-task + jungle-eggtop + ) + ) + ) + ) + ) + ) + ) + (((pickup-type eco-red)) + (set! (-> obj block-func) (the-as (function vent symbol) (lambda () + (not + (task-complete? + *game-info* + (game-task + red-eggtop + ) + ) + ) + ) + ) + ) + ) + (((pickup-type eco-yellow)) + (set! (-> obj block-func) (the-as (function vent symbol) (lambda () + (not + (task-complete? + *game-info* + (game-task + snow-eggtop + ) + ) + ) + ) + ) + ) + ) + ) + (let ((s5-1 (get-process *pickup-dead-pool* ecovalve #x4000))) + (when s5-1 + (let ((t9-17 (method-of-type ecovalve activate))) + (t9-17 (the-as ecovalve s5-1) obj 'ecovalve (the-as pointer #x70004000)) + ) + (run-now-in-process s5-1 ecovalve-init-by-other (-> obj block-func)) + (-> s5-1 ppointer) + ) + ) + ) + (if ((-> obj block-func) obj) + (go vent-blocked) + ) + ) + (go vent-wait-for-touch) + (none) + ) + +(defbehavior + vent-standard-event-handler vent + ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('show-particles) + (let ((v0-0 (the-as object (-> arg3 param 0)))) + (set! (-> self show-particles) (the-as symbol v0-0)) + v0-0 + ) + ) + (('hide) + (set! (-> self block-func) (the-as (function vent symbol) true-func)) + (go vent-blocked) + ) + ) + ) + +(defstate vent-wait-for-touch (vent) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (if + (and + (or (= arg2 'touch) (= arg2 'attack)) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 2) + (set! (-> a1-1 message) 'get-pickup) + (set! (-> a1-1 param 0) (the-as uint (-> self fact pickup-type))) + (set! (-> a1-1 param 1) (the-as uint (-> self fact pickup-amount))) + (and + (= (send-event-function arg0 a1-1) #t) + (or + (logtest? (-> self fact options) (fact-options powerup)) + (send-event arg0 'powerup) + ) + ) + ) + ) + (go vent-pickup (process->handle arg0)) + ) + (vent-standard-event-handler arg0 arg1 arg2 arg3) + ) + :code + (behavior () + (while #t + (let ((a0-0 (-> self part)) + (a1-0 (-> self root-override trans)) + (gp-0 (-> self sound)) + ) + (if (and (nonzero? a0-0) (-> self show-particles)) + (spawn a0-0 a1-0) + ) + (if (nonzero? gp-0) + (update! gp-0) + ) + ) + (suspend) + ) + (none) + ) + ) + +(defstate vent-blocked (vent) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('show) + (go vent-wait-for-touch) + ) + ) + ) + :code + (behavior () + (while #t + (if (not ((-> self block-func) self)) + (go vent-wait-for-touch) + ) + (suspend) + ) + (none) + ) + ) + +(defstate vent-pickup (vent) + :event + vent-standard-event-handler + :code + (behavior ((arg0 handle)) + (when (-> self show-particles) + (when (nonzero? (-> self collect-effect)) + (let* ((s5-0 (handle->process arg0)) + (gp-0 + (if + (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) + s5-0 + ) + ) + ) + (when gp-0 + (let* ((s4-0 (-> (the-as process-drawable gp-0) root)) + (s5-1 + (if + (and (nonzero? s4-0) (type-type? (-> s4-0 type) collide-shape)) + s4-0 + ) + ) + ) + (when s5-1 + (let ((s4-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when s4-1 + (let ((t9-3 (method-of-type part-tracker activate))) + (t9-3 + (the-as part-tracker s4-1) + gp-0 + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + s4-1 + part-tracker-init + (-> self collect-effect) + -1 + part-tracker-track-target + #f + #f + (-> (the-as collide-shape s5-1) root-prim prim-core) + ) + (-> s4-1 ppointer) + ) + ) + (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-1 + (let ((t9-6 (method-of-type part-tracker activate))) + (t9-6 + (the-as part-tracker gp-1) + self + 'part-tracker + (the-as pointer #x70004000) + ) + ) + (run-now-in-process + gp-1 + part-tracker-init + (-> self collect-effect2) + -1 + part-tracker-move-to-target + #f + #f + (-> self root-override root-prim prim-core) + ) + (-> gp-1 ppointer) + ) + ) + ) + ) + ) + ) + ) + ) + (go vent-wait-for-touch) + (none) + ) + ) + +(deftype ventyellow (vent) + () + :heap-base #x70 + :method-count-assert 21 + :size-assert #xd8 + :flag-assert #x15007000d8 + ) + + +(defmethod init-from-entity! ventyellow ((obj ventyellow) (arg0 entity-actor)) + (initialize obj arg0 (pickup-type eco-yellow)) + (none) + ) + +(deftype ventred (vent) + () + :heap-base #x70 + :method-count-assert 21 + :size-assert #xd8 + :flag-assert #x15007000d8 + ) + + +(defmethod init-from-entity! ventred ((obj ventred) (arg0 entity-actor)) + (initialize obj arg0 (pickup-type eco-red)) + (none) + ) + +(deftype ventblue (vent) + () + :heap-base #x70 + :method-count-assert 21 + :size-assert #xd8 + :flag-assert #x15007000d8 + ) + + +(defmethod init-from-entity! ventblue ((obj ventblue) (arg0 entity-actor)) + (initialize obj arg0 (pickup-type eco-blue)) + (none) + ) + +(deftype ecovent (vent) + () + :heap-base #x70 + :method-count-assert 21 + :size-assert #xd8 + :flag-assert #x15007000d8 + ) + + +(defmethod init-from-entity! ecovent ((obj ecovent) (arg0 entity-actor)) + (initialize obj arg0 (pickup-type eco-blue)) + (none) + ) + + + + diff --git a/goal_src/engine/game/fact-h.gc b/goal_src/engine/game/fact-h.gc index 356f071b14..b9882cb8cf 100644 --- a/goal_src/engine/game/fact-h.gc +++ b/goal_src/engine/game/fact-h.gc @@ -65,6 +65,31 @@ (enum->string pickup-type arg0) ) +(defenum fact-options + :bitfield #t + :type uint64 + (vent-blocked 0) + (fop1 1) + (vent-valve 2) + (fop3 3) + (fop4 4) + (fop5 5) + (fop6 6) + (fop7 7) + (can-collect 8) + (fade 9) + (large 10) + (fop11 11) + (powerup 12) + (fop13 13) + (fop14 14) + (fop15 15) + (fop16 16) + (fop17 17) + (eco-blocked 18) + (respawn 19) + ) + ;; Each individual enemy and pickup process will allocate a fact-info on its process heap ;; The settings may be different per object - for example some eco pickups may have different ;; amounts or timings @@ -74,15 +99,15 @@ (pickup-type pickup-type :offset-assert 8) (pickup-amount float :offset-assert 12) ;; eco increment on pickup (pickup-spawn-amount float :offset-assert 16) - (options uint64 :offset-assert 24) ;; actually bitfield enum - (fade-time uint64 :offset-assert 32) + (options fact-options :offset-assert 24) + (fade-time int64 :offset-assert 32) ) :method-count-assert 12 :size-assert #x28 :flag-assert #xc00000028 (:methods (new (symbol type process-drawable pickup-type float) _type_ 0) - (TODO-RENAME-9 (_type_ symbol process-tree fact-info int) uint 9) ;; See nav-enemy::process-drawable-death-event-handler + (drop-pickup (_type_ symbol process-tree fact-info int) none 9) (reset! (_type_ symbol) none 10) (pickup-collectable! (_type_ pickup-type float handle) float 11) ) @@ -179,11 +204,11 @@ ) ;; read the options - (set! (-> obj options) (res-lump-value ent 'options uint)) + (set! (-> obj options) (res-lump-value ent 'options fact-options)) ;; TODO - some enum bitfield here. (if (nonzero? (logand #x80200 (the-as int (-> obj options)))) - (set! (-> obj fade-time) (the-as uint (the int (* 300.0 (res-lump-float ent 'timeout))))) + (set! (-> obj fade-time) (the int (* 300.0 (res-lump-float ent 'timeout)))) ) ) diff --git a/goal_src/engine/game/generic-obs-h.gc b/goal_src/engine/game/generic-obs-h.gc index a73f5bc47c..3b5fa3152a 100644 --- a/goal_src/engine/game/generic-obs-h.gc +++ b/goal_src/engine/game/generic-obs-h.gc @@ -17,7 +17,7 @@ (define-extern fuel-cell type) -(define-extern birth-pickup-at-point (function vector int float symbol process-drawable fact-info (pointer process))) +(define-extern birth-pickup-at-point (function vector pickup-type float symbol process-drawable fact-info (pointer process) :behavior process)) (declare-type collide-shape-moving basic) (declare-type sparticle-launch-group basic) @@ -28,6 +28,8 @@ (declare-type touch-tracker process-drawable) (define-extern touch-tracker-init (function vector float uint none :behavior touch-tracker)) ;; last arg is a handle to `target` +(define-extern eco-blue-glow (function vector none)) + ;; DECOMP BEGINS (deftype manipy (process-drawable) diff --git a/goal_src/engine/game/generic-obs.gc b/goal_src/engine/game/generic-obs.gc index 882c824349..2c249960c1 100644 --- a/goal_src/engine/game/generic-obs.gc +++ b/goal_src/engine/game/generic-obs.gc @@ -139,13 +139,13 @@ (< (vector-vector-distance (-> self root trans) - (the-as vector (&-> (-> *target* control) unknown-cspace00 bone)) + (-> *target* control unknown-vector90) ) (-> self range) ) (logtest? (-> *target* control root-prim prim-core action) 64) (< - (the-as float (-> *target* control unknown-cspace00 param0)) + (-> *target* control unknown-vector90 y) (+ (-> self root trans y) (* 0.5 (-> self range))) ) ) @@ -187,12 +187,12 @@ ) (defmethod init-from-entity! swingpole ((obj swingpole) (arg0 entity-actor)) - + "Copy defaults from the entity." (stack-size-set! (-> obj main-thread) 128) (logior! (-> obj mask) (process-mask actor-pause)) (set! (-> obj root) (new 'process 'trsq)) (set! (-> obj root trans quad) (-> arg0 extra trans quad)) - (quaternion-copy! (-> obj root quat) (-> (the-as entity-actor arg0) quat)) + (quaternion-copy! (-> obj root quat) (-> arg0 quat)) (vector-identity! (-> obj root scale)) (vector-y-quaternion! (-> obj dir) (-> obj root quat)) (set! (-> obj dir y) 0.0) @@ -209,8 +209,11 @@ (the-as (function none :behavior process-hidden) nothing) ) -(defmethod init-from-entity! process-hidden ((obj process-hidden) (arg0 entity-actor)) - +(defmethod + init-from-entity! + process-hidden + ((obj process-hidden) (arg0 entity-actor)) + "Copy defaults from the entity." (process-entity-status! obj (entity-perm-status dead) #t) (go (method-of-object obj die)) (none) @@ -556,23 +559,15 @@ (let ((v1-20 (handle->process (-> self cur-grab-handle)))) (when v1-20 (let ((gp-1 (-> (the-as process-drawable v1-20) root trans))) - (cond - ((type-type? (-> self root type) collide-shape) - (let* ((a0-13 (-> self root)) - (t9-3 - (method-of-object (the-as collide-shape a0-13) TODO-RENAME-28) - ) - ) - (vector-! (new 'stack-no-clear 'vector) gp-1 (-> self old-grab-pos)) - (t9-3 (the-as collide-shape a0-13)) - ) + (if (type-type? (-> self root type) collide-shape) + (TODO-RENAME-28 + (the-as collide-shape (-> self root)) + (vector-! (new 'stack-no-clear 'vector) gp-1 (-> self old-grab-pos)) ) - (else - (vector+! - (-> self root trans) - (-> self root trans) - (vector-! (new 'stack-no-clear 'vector) gp-1 (-> self old-grab-pos)) - ) + (vector+! + (-> self root trans) + (-> self root trans) + (vector-! (new 'stack-no-clear 'vector) gp-1 (-> self old-grab-pos)) ) ) (set! (-> self old-grab-pos quad) (-> gp-1 quad)) @@ -729,20 +724,20 @@ ) (set! (-> s4-1 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-1 reaction) default-collision-reaction) - (set! (-> s4-1 no-reaction) nothing) - (set-vector! - (-> - (new 'process 'collide-shape-prim-sphere s4-1 (the-as uint 0)) - local-sphere + (set! + (-> s4-1 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing ) - 0.0 - 0.0 - 0.0 - 4096.0 ) - (dummy-46 s4-1) + (let + ((s3-1 (new 'process 'collide-shape-prim-sphere s4-1 (the-as uint 0)))) + (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 4096.0) + (set-root-prim! s4-1 s3-1) + ) (set! (-> s4-1 nav-radius) (* 0.75 (-> s4-1 root-prim local-sphere w))) - (dummy-50 s4-1) + (backup-collide-with-as s4-1) (set! (-> self root) s4-1) ) ) @@ -763,10 +758,10 @@ (-> arg3 z) (-> arg3 w) ) + (set-root-prim! s4-2 s2-0) ) - (dummy-46 s4-2) (set! (-> s4-2 nav-radius) (* 0.75 (-> s4-2 root-prim local-sphere w))) - (dummy-50 s4-2) + (backup-collide-with-as s4-2) (set! (-> self root) s4-2) ) ) @@ -1741,7 +1736,10 @@ (define *lev-string* (new 'global 'string 64 (the-as string #f))) -(defmethod init-from-entity! med-res-level ((obj med-res-level) (arg0 entity-actor)) +(defmethod + init-from-entity! + med-res-level + ((obj med-res-level) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) (stack-size-set! (-> obj main-thread) 128) "#f" @@ -1857,7 +1855,10 @@ ) ) -(defmethod init-from-entity! part-spawner ((obj part-spawner) (arg0 entity-actor)) +(defmethod + init-from-entity! + part-spawner + ((obj part-spawner) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) (stack-size-set! (-> obj main-thread) 128) (set! (-> obj mask) (logior (process-mask ambient) (-> obj mask))) @@ -2544,19 +2545,13 @@ (defstate launcher-idle (launcher) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) - (the-as object (cond - ((= v1-0 'instant-death) - (go launcher-deactivated) - ) - ((= v1-0 'trans) - (TODO-RENAME-30 - (-> self root-override) - (the-as vector (-> arg3 param 0)) - ) - (dummy-47 (-> self root-override)) - ) - ) + (case arg2 + (('instant-death) + (go launcher-deactivated) + ) + (('trans) + (TODO-RENAME-30 (-> self root-override) (the-as vector (-> arg3 param 0))) + (dummy-47 (-> self root-override)) ) ) ) @@ -2648,18 +2643,14 @@ (-> self seek-time) ) ) - (the-as object (cond - ((= arg2 'instant-death) - (go launcher-deactivated) - ) - ((= arg2 'trans) - (TODO-RENAME-30 - (-> self root-override) - (the-as vector (-> arg3 param 0)) - ) - (dummy-47 (-> self root-override)) - ) - ) + (cond + ((= arg2 'instant-death) + (go launcher-deactivated) + ) + ((= arg2 'trans) + (TODO-RENAME-30 (-> self root-override) (the-as vector (-> arg3 param 0))) + (dummy-47 (-> self root-override)) + ) ) ) :exit @@ -2764,10 +2755,10 @@ (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) 13926.4) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -2830,10 +2821,10 @@ (set! (-> s1-0 prim-core collide-as) (the-as uint 256)) (set! (-> s1-0 collide-with) (the-as uint 16)) (set-vector! (-> s1-0 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s2-0 s1-0) ) - (dummy-46 s2-0) (set! (-> s2-0 nav-radius) (* 0.75 (-> s2-0 root-prim local-sphere w))) - (dummy-50 s2-0) + (backup-collide-with-as s2-0) (set! (-> self root-override) s2-0) ) (set! (-> self root-override trans quad) (-> arg0 quad)) @@ -3061,7 +3052,7 @@ ) (suspend) ) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (suspend) 0 (none) @@ -3078,16 +3069,22 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 272)) (set! (-> s2-0 collide-with) (the-as uint 3022)) (set! (-> s2-0 prim-core offense) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 arg1) + (set-root-prim! s4-0 s2-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> s4-0 event-self) 'touched) (set! (-> self root-override) s4-0) ) diff --git a/goal_src/engine/game/main.gc b/goal_src/engine/game/main.gc index 8d26e09481..69e7abdeb8 100644 --- a/goal_src/engine/game/main.gc +++ b/goal_src/engine/game/main.gc @@ -544,17 +544,22 @@ ;; blerc ;; texscroll ;; ripple - ;; music pick - ;; sound/flava + (set! *weather-off* #f) + ;; music + (set! (-> *setting-control* default sound-flava) (the-as uint 49)) + (set! (-> *setting-control* default sound-flava-priority) 0.0) ;; do ambients - ;; math engine. - + (add-ee-profile-frame 'draw :r #x40 :b #x40) + (execute-math-engine) ;; DEBUG PROF + (add-ee-profile-frame 'draw :r #x80) (add-ee-profile-frame 'draw :r #x40 :b #x40) ;; debug hook (main-cheats) + (add-ee-profile-frame 'draw :r #x20 :g #x20) (update-camera) + (add-ee-profile-frame 'draw :r #x40 :b #x40) (*draw-hook*) (add-ee-profile-frame 'draw :g #x80) @@ -654,9 +659,16 @@ ) ;; added - ; (format *stdcon* "~3Lglobal heap at ~,,2fK remaining~0L~%" - ; (* (1/ 1024) (&- (-> global top) (-> global current)))) - (format *stdcon* "~3Lglob: ~d free debug: ~d free~0L~%" + (let ( + (remain (&- (-> global top) (-> global current))) + (total (&- (-> global top) (-> global base))) + ) + (format *stdcon* "~3Lglobal heap ~,,2fK/~,,2fK (~,,2f%) remain~0L~%" + (* (1/ 1024) remain) (* (1/ 1024) total) + (* 100.0 (/ (the float remain) (the float total))) + ) + ) + (format *stdcon* "~3LDMA global: ~d debug: ~d~0L~%" (dma-buffer-free (-> disp frames (-> disp on-screen) frame global-buf)) (dma-buffer-free (-> disp frames (-> disp on-screen) frame debug-buf)) ) diff --git a/goal_src/engine/game/powerups.gc b/goal_src/engine/game/powerups.gc index e4757db0f0..82c533d1b1 100644 --- a/goal_src/engine/game/powerups.gc +++ b/goal_src/engine/game/powerups.gc @@ -5,5 +5,1121 @@ ;; name in dgo: powerups ;; dgos: GAME, ENGINE -;; TODO - for projectiles -(define-extern eco-blue-glow (function vector none)) +;; DECOMP BEGINS + +(defbehavior + cloud-track process + ((arg0 process-tree) + (arg1 process-tree) + (arg2 (function vector none)) + (arg3 int) + (arg4 int) + (arg5 int) + ) + (change-parent self arg0) + (let ((s1-1 (process->handle arg0)) + (s2-1 (process->handle arg1)) + ) + (let ((s0-0 (-> *display* base-frame-counter))) + (until (>= (- (-> *display* base-frame-counter) s0-0) (+ arg3 arg4)) + (let + ((v1-8 (or (not (handle->process s1-1)) (not (handle->process s2-1))))) + (if v1-8 + (deactivate self) + ) + ) + (let* + ((f0-1 + (fmax + 0.0 + (fmin + 1.0 + (/ + (- + (the float (- (-> *display* base-frame-counter) s0-0)) + (the float arg3) + ) + (the float arg4) + ) + ) + ) + ) + (a0-18 + (process-drawable-pair-random-point! + (the-as process-drawable (-> s1-1 process 0)) + (the-as process-drawable (-> s2-1 process 0)) + (new-stack-vector0) + f0-1 + ) + ) + ) + (arg2 a0-18) + ) + (suspend) + ) + ) + (cond + ((zero? arg5) + (while #t + (suspend) + ) + ) + (else + (let ((s4-1 (-> *display* base-frame-counter))) + (until (>= (- (-> *display* base-frame-counter) s4-1) arg5) + (let + ((a0-21 + (process-drawable-random-point! + (the-as process-drawable (-> s2-1 process 0)) + (new-stack-vector0) + ) + ) + ) + (arg2 a0-21) + ) + (suspend) + ) + ) + ) + ) + ) + (none) + ) + +(set! + (-> *part-id-table* 255) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 15 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.4) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 64.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 192.0) + (sp-flt spt-a 64.0) + (sp-flt spt-fade-a -1.0666667) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 256) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 15 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.4) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 64.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 192.0) + (sp-flt spt-a 64.0) + (sp-flt spt-fade-a -1.0666667) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 257) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 16 + (sp-tex spt-texture (new 'static 'texture-id :index #x1f :page #x2)) + (sp-rnd-flt spt-num 1.0 3.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) + (sp-int spt-rot-x 4) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.2) (meters 0.1) 1.0) + (sp-flt spt-r 64.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-flt spt-fade-a -1.6) + (sp-int spt-timer 90) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 10) + (sp-launcher-by-id spt-next-launcher 258) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 259) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 16 + (sp-tex spt-texture (new 'static 'texture-id :index #x1f :page #x2)) + (sp-rnd-flt spt-num 0.0 3.0 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 1.5) 1.0) + (sp-int spt-rot-x 4) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.2) (meters 0.1) 1.0) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 128.0) + (sp-flt spt-fade-a -1.6) + (sp-int spt-timer 91) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 10) + (sp-launcher-by-id spt-next-launcher 258) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 258) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 6 + (sp-flt spt-r 64.0) + (sp-flt spt-g 64.0) + (sp-flt spt-fade-r -1.0) + (sp-flt spt-fade-g -0.4) + (sp-flt spt-fade-a -2.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 260) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 15 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.15) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 32.0) + (sp-rnd-flt spt-g 32.0 64.0 1.0) + (sp-rnd-flt spt-b 192.0 64.0 1.0) + (sp-rnd-flt spt-a 64.0 128.0 1.0) + (sp-flt spt-scalevel-x (meters -0.00033333333)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.2) + (sp-flt spt-accel-y -0.06826667) + (sp-int spt-timer 450) + (sp-cpuinfo-flags bit0 bit2 bit3) + (sp-end) + ) + ) + ) + +(set! + (-> *part-group-id-table* 70) + (new 'static 'sparticle-launch-group + :length 5 + :duration #x5 + :linger-duration #x1c2 + :name "group-blue-hit-ground-effect" + :launcher + (new 'static 'inline-array sparticle-group-item 5 + (sp-item 261) + (sp-item 262) + (sp-item 263 :flags (is-3d)) + (sp-item 264) + (sp-item 265 :flags (is-3d)) + ) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! + (-> *part-id-table* 264) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 32.0) + (sp-flt spt-y (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 3.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 32.0 32.0 1.0) + (sp-rnd-flt spt-b 192.0 63.0 1.0) + (sp-rnd-int spt-a 0 63 1.0) + (sp-flt spt-vel-y (meters 0.093333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit3) + (sp-int-plain-rnd spt-next-time 20 19 1) + (sp-launcher-by-id spt-next-launcher 266) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.0)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 266) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 7 + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 32.0 32.0 1.0) + (sp-rnd-flt spt-b 192.0 63.0 1.0) + (sp-rnd-int spt-a 0 63 1.0) + (sp-int-plain-rnd spt-next-time 20 19 1) + (sp-launcher-by-id spt-next-launcher 266) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 265) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 16 + (sp-tex spt-texture (new 'static 'texture-id :index #x1e :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.5)) + (sp-flt spt-scale-x (meters 0.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 32.0 32.0 1.0) + (sp-rnd-flt spt-b 192.0 63.0 1.0) + (sp-rnd-flt spt-a 96.0 32.0 1.0) + (sp-flt spt-scalevel-x (meters 0.21333334)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-int spt-timer 120) + (sp-cpuinfo-flags bit2 bit3 left-multiply-quat) + (sp-int spt-next-time 60) + (sp-launcher-by-id spt-next-launcher 267) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 267) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 + (sp-flt spt-fade-a -2.1333334) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 263) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 17 + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.5)) + (sp-flt spt-scale-x (meters 0.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 32.0 32.0 1.0) + (sp-rnd-flt spt-b 192.0 63.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-scalevel-x (meters 0.22666667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.7111111) + (sp-int spt-timer 90) + (sp-cpuinfo-flags bit2 bit3 left-multiply-quat) + (sp-int spt-next-time 45) + (sp-launcher-by-id spt-next-launcher 268) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 268) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 + (sp-flt spt-fade-a -1.4222223) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 261) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 32.0 32.0 1.0) + (sp-rnd-flt spt-b 192.0 63.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.026666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 262) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 32.0 32.0 1.0) + (sp-rnd-flt spt-b 192.0 63.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.053333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 269) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 15 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.4) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 92.0 32.0 1.0) + (sp-rnd-flt spt-g 32.0 92.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-flt spt-fade-a -1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 270) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 15 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.4) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 92.0 32.0 1.0) + (sp-rnd-flt spt-g 32.0 92.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-flt spt-fade-a -1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 271) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-rnd-flt spt-num 0.5 2.0 1.0) + (sp-flt spt-y (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 100.0 28.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.0023333333) (meters 0.0016666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.00083333335)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.4) + (sp-flt spt-fade-a -0.024242423) + (sp-rnd-flt spt-accel-y -0.40960002 -1.2288 1.0) + (sp-flt spt-friction 0.93) + (sp-int-plain-rnd spt-timer 30 209 1) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 272) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.05)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 272) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 + (sp-flt spt-fade-r 0.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 273) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 15 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.4) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 92.0 32.0 1.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-flt spt-fade-a -1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 274) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 15 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.4) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 92.0 32.0 1.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-flt spt-fade-a -1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 275) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-rnd-flt spt-num 0.5 2.0 1.0) + (sp-flt spt-y (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 100.0 28.0 1.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.0023333333) (meters 0.0016666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.00083333335)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.4) + (sp-flt spt-fade-a -0.024242423) + (sp-rnd-flt spt-accel-y -0.40960002 -1.2288 1.0) + (sp-flt spt-friction 0.93) + (sp-int-plain-rnd spt-timer 30 209 1) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 276) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.05)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 276) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 + (sp-flt spt-fade-r 0.0) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 277) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 15 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.4) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 92.0 32.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-flt spt-fade-a -1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 278) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 15 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.4) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 92.0 32.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-flt spt-fade-a -1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 279) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-rnd-flt spt-num 0.5 2.0 1.0) + (sp-flt spt-y (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-rnd-flt spt-g 100.0 28.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.0023333333) (meters 0.0016666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.00083333335)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.4) + (sp-flt spt-fade-a -0.024242423) + (sp-rnd-flt spt-accel-y -0.40960002 -1.2288 1.0) + (sp-flt spt-friction 0.93) + (sp-int-plain-rnd spt-timer 30 209 1) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 280) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.05)) + (sp-end) + ) + ) + ) + +(set! + (-> *part-id-table* 280) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 + (sp-flt spt-fade-g 0.0) + (sp-end) + ) + ) + ) + +(defun eco-blue-glow ((arg0 vector)) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* 255) + arg0 + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + (if (rand-vu-percent? 0.5) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* 257) + arg0 + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + ) + 0 + (none) + ) + +(defbehavior target-powerup-process target () + (dummy-10 (-> self water)) + (when (not *weather-off*) + (case (-> self current-level name) + (('swamp) + (update-rain self) + ) + (('snow) + (update-snow self) + ) + ) + ) + (cond + ((and + (= (-> self control ground-pat material) (pat-material ice)) + (and + (>= (-> self control unknown-float01) 204.8) + (< + (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) + 15 + ) + ) + ) + (let + ((gp-0 + (vector<-cspace! + (new 'stack-no-clear 'vector) + (-> self node-list data 74) + ) + ) + ) + (if + (and + (< + (fabs + (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) gp-0 (-> self control trans)) + ) + ) + 819.2 + ) + (rand-vu-percent? 0.5) + ) + (sp-launch-particles-var + *sp-particle-system-3d* + (-> *part-id-table* 2391) + gp-0 + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + ) + ) + (let + ((gp-1 + (vector<-cspace! + (new 'stack-no-clear 'vector) + (-> self node-list data 70) + ) + ) + ) + (if + (and + (< + (fabs + (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) gp-1 (-> self control trans)) + ) + ) + 819.2 + ) + (rand-vu-percent? 0.5) + ) + (sp-launch-particles-var + *sp-particle-system-3d* + (-> *part-id-table* 2391) + gp-1 + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + ) + ) + (let + ((f0-8 + (lerp-scale 60.0 90.0 (-> self control unknown-float01) 0.0 81920.0) + ) + ) + (if (not (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 104) + ) + ) + (set! f0-8 (* 0.75 f0-8)) + ) + (set! + (-> self control unknown-float130) + (seek + (-> self control unknown-float130) + f0-8 + (* 100.0 (-> *display* seconds-per-frame)) + ) + ) + ) + (let ((f30-0 (-> self control unknown-float130)) + (f0-13 + (lerp-scale -0.3 0.3 (-> self control unknown-float01) 0.0 81920.0) + ) + ) + (sound-play-by-name + (static-sound-name "ice-loop") + (-> self control unknown-soundid00) + (the int (* 10.24 f30-0)) + (the int (* 1524.0 f0-13)) + 0 + 1 + (the-as symbol (-> self control trans)) + ) + ) + ) + ((< 0.0 (-> self control unknown-float130)) + (set! (-> self control unknown-float130) 0.0) + (let ((v1-64 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) + (set! (-> v1-64 command) (sound-command set-param)) + (set! (-> v1-64 id) (-> self control unknown-soundid00)) + (set! (-> v1-64 parms volume) -4) + (set! (-> v1-64 auto-time) 48) + (set! (-> v1-64 auto-from) 2) + (set! (-> v1-64 parms mask) (the-as uint 17)) + (-> v1-64 id) + ) + ) + ) + (let ((v1-67 (-> *time-of-day-context* current-shadow)) + (a0-33 (-> self draw shadow-ctrl)) + ) + (set! (-> a0-33 settings shadow-dir x) (-> v1-67 x)) + (set! (-> a0-33 settings shadow-dir y) (-> v1-67 y)) + (set! (-> a0-33 settings shadow-dir z) (-> v1-67 z)) + ) + (when + (and + (!= (-> self fact-info-target eco-level) 0.0) + (>= + (- + (-> *display* game-frame-counter) + (the-as int (-> self fact-info-target eco-pickup-time)) + ) + (the-as int (-> self fact-info-target eco-timeout)) + ) + ) + (set! (-> self fact-info-target eco-level) 0.0) + (set! (-> self fact-info-target eco-timeout) 0) + (set! (-> self state-flags) (logand -65 (-> self state-flags))) + (send-event self 'reset-collide) + (stop! (-> self sound)) + ) + (when + (and + (< 0.0 (-> self fact-info-target eco-level)) + (zero? (logand (-> self state-flags) 512)) + (zero? (logand (-> self draw status) 6)) + (not (movie?)) + (rand-vu-percent? + (lerp-scale + 0.0 + 1.0 + (the + float + (- + (-> self fact-info-target eco-timeout) + (the-as + uint + (- + (-> *display* game-frame-counter) + (the-as int (-> self fact-info-target eco-pickup-time)) + ) + ) + ) + ) + 0.0 + 900.0 + ) + ) + ) + (case (-> self fact-info-target eco-type) + ((1) + (change-sound! (-> self sound) (static-sound-name "yel-eco-jak")) + (let ((s4-0 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* (if (rand-vu-percent? 0.5) + 269 + 270 + ) + ) + (vector<-cspace! + (new 'stack-no-clear 'vector) + (-> self node-list data s4-0) + ) + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + ) + (dotimes (gp-4 2) + (let ((v1-111 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* 271) + (vector<-cspace! + (new 'stack-no-clear 'vector) + (-> self node-list data v1-111) + ) + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + ) + ) + ) + ((2) + (target-danger-set! (-> self control unknown-symbol30) #t) + (dummy-47 (-> self control)) + (let ((a1-23 (new 'stack-no-clear 'touching-shapes-entry))) + (set! (-> a1-23 cshape1) (the-as collide-shape 0)) + (set! (-> a1-23 cshape2) (the-as collide-shape *touching-list*)) + (dummy-40 (-> self control) a1-23) + ) + (target-danger-set! (-> self control unknown-symbol30) #f) + (dummy-47 (-> self control)) + (change-sound! (-> self sound) (static-sound-name "red-eco-jak")) + (let ((s4-2 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* (if (rand-vu-percent? 0.5) + 273 + 274 + ) + ) + (vector<-cspace! + (new 'stack-no-clear 'vector) + (-> self node-list data s4-2) + ) + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + ) + (dotimes (gp-6 2) + (let ((v1-139 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* 275) + (vector<-cspace! + (new 'stack-no-clear 'vector) + (-> self node-list data v1-139) + ) + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + ) + ) + ) + ((3) + (change-sound! (-> self sound) (static-sound-name "blue-eco-jak")) + (let ((v1-150 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) + (cond + ((and + (logtest? (-> self control unknown-surface00 flags) 2048) + (zero? (logand (-> self control status) 1)) + ) + (set! (-> *part-id-table* 259 init-specs 4 initial-valuef) 0.0) + (set! (-> *part-id-table* 259 init-specs 4 random-rangef) 65536.0) + ) + (else + (set! (-> *part-id-table* 259 init-specs 4 initial-valuef) 40960.0) + (set! (-> *part-id-table* 259 init-specs 4 random-rangef) 16384.0) + ) + ) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* 259) + (vector<-cspace! + (new 'stack-no-clear 'vector) + (-> self node-list data v1-150) + ) + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + ) + (let ((gp-8 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* (if (rand-vu-percent? 0.5) + 255 + 256 + ) + ) + (vector<-cspace! + (new 'stack-no-clear 'vector) + (-> self node-list data gp-8) + ) + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + (if (rand-vu-percent? 0.5) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* 257) + (vector<-cspace! + (new 'stack-no-clear 'vector) + (-> self node-list data gp-8) + ) + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + ) + ) + (let ((v1-168 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* 260) + (vector<-cspace! + (new 'stack-no-clear 'vector) + (-> self node-list data v1-168) + ) + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 0 1 30) + ) + ((4) + (change-sound! (-> self sound) (static-sound-name "green-eco-jak")) + (let ((s4-8 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* (if (rand-vu-percent? 0.5) + 277 + 278 + ) + ) + (vector<-cspace! + (new 'stack-no-clear 'vector) + (-> self node-list data s4-8) + ) + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + ) + (dotimes (gp-11 2) + (let ((v1-188 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* 279) + (vector<-cspace! + (new 'stack-no-clear 'vector) + (-> self node-list data v1-188) + ) + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + ) + ) + ) + ) + (update-trans! (-> self sound) (-> self control trans)) + (update! (-> self sound)) + ) + 0 + (none) + ) + +(defbehavior target-powerup-effect target ((arg0 symbol)) + (case arg0 + (('eco-blue) + (let ((v1-4 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) + (eco-blue-glow + (vector<-cspace! + (new 'stack-no-clear 'vector) + (-> self node-list data v1-4) + ) + ) + ) + ) + ) + 0 + (none) + ) + + + + diff --git a/goal_src/engine/game/projectiles.gc b/goal_src/engine/game/projectiles.gc index b1d414466c..fbbdaf4b28 100644 --- a/goal_src/engine/game/projectiles.gc +++ b/goal_src/engine/game/projectiles.gc @@ -215,12 +215,10 @@ (set! sv-72 (new 'stack-no-clear 'matrix)) (set! sv-80 0) (set! (-> sv-72 vector 0 quad) (-> arg3 quad)) - (vector-float*! - (new 'stack-no-clear 'vector) - (-> arg1 move-vec) - (-> arg1 best-u) + (let ((a1-1 (new 'stack-no-clear 'vector))) + (vector-float*! a1-1 (-> arg1 move-vec) (-> arg1 best-u)) + (TODO-RENAME-28 arg0 a1-1) ) - (TODO-RENAME-28 arg0) (dummy-56 arg0 (-> arg1 best-tri pat)) (case (-> arg1 best-tri pat material) (((pat-material stopproj)) @@ -239,8 +237,9 @@ (set! (-> sv-68 quad) v1-22) ) (when (= (-> arg1 best-u) 0.0) - (vector-float*! (new 'stack-no-clear 'vector) sv-68 32.0) - (TODO-RENAME-28 arg0) + (let ((a1-7 (vector-float*! (new 'stack-no-clear 'vector) sv-68 32.0))) + (TODO-RENAME-28 arg0 a1-7) + ) ) (set! (-> arg0 surface-normal quad) (-> sv-68 quad)) (set! (-> arg0 poly-normal quad) (-> arg1 best-tri normal quad)) @@ -1187,17 +1186,23 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) projectile-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (the-as uint 1024)) (set! (-> s4-0 collide-with) (the-as uint 2957)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 3) (set-vector! (-> s4-0 local-sphere) 0.0 5324.8 0.0 5324.8) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) (set! (-> s5-0 event-self) 'touched) (set! (-> obj root-override) s5-0) @@ -1682,17 +1687,23 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) projectile-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (the-as uint 1024)) (set! (-> s4-0 collide-with) (the-as uint 1)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 3) (set-vector! (-> s4-0 local-sphere) 0.0 5324.8 0.0 5324.8) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) (set! (-> s5-0 event-self) 'touched) (set! (-> obj root-override) s5-0) diff --git a/goal_src/engine/game/task/process-taskable.gc b/goal_src/engine/game/task/process-taskable.gc index 901606f9ba..7a53c91c57 100644 --- a/goal_src/engine/game/task/process-taskable.gc +++ b/goal_src/engine/game/task/process-taskable.gc @@ -936,7 +936,7 @@ ) 0 (process-taskable-clean-up-after-talking) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (ja-channel-set! 0) (the-as int (ja-post)) ) @@ -951,7 +951,7 @@ (let ((gp-0 (-> self skel root-channel 0))) (set! (-> gp-0 frame-group) (the-as art-joint-anim (get-art-elem self))) ) - (dummy-49 (-> self root-override)) + (restore-collide-with-as (-> self root-override)) (process-entity-status! self (entity-perm-status bit-3) #t) (let ((v1-7 (-> self draw shadow-ctrl))) (set! (-> v1-7 settings flags) (logand -33 (-> v1-7 settings flags))) @@ -1198,7 +1198,7 @@ (dummy-55 (-> self root-override) arg0 - (-> arg3 param 0) + (the-as touching-shapes-entry (-> arg3 param 0)) 0.7 6144.0 16384.0 @@ -1440,10 +1440,10 @@ (-> arg1 z) (-> arg1 w) ) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/goal_src/engine/gfx/shrub/shrub-work.gc b/goal_src/engine/gfx/shrub/shrub-work.gc index 0a6b333f02..3b54746c73 100644 --- a/goal_src/engine/gfx/shrub/shrub-work.gc +++ b/goal_src/engine/gfx/shrub/shrub-work.gc @@ -5,7 +5,8 @@ ;; name in dgo: shrub-work ;; dgos: GAME, ENGINE -;; definition for symbol *instance-shrub-work*, type instance-shrub-work +;; DECOMP BEGINS + (define *instance-shrub-work* (new 'static 'instance-shrub-work @@ -590,10 +591,7 @@ (new 'static 'vector :x 0.5 :y 100.0 :z 0.0166 :w -1.0) :constants (new 'static 'vector :x 128.0 :y 1.0) :color-constant - (new 'static 'vector4w - :data - (new 'static 'array int32 4 #x47000000 #x47000000 #x47000000 0) - ) + (new 'static 'vector4w :x #x47000000 :y #x47000000 :z #x47000000) :start-bank (new 'static 'array uint8 20 #x0 @@ -620,14 +618,10 @@ ) ) -;; failed to figure out what this is: (set! (-> *instance-shrub-work* mscalf-tmpl vif0 imm) 103) -;; failed to figure out what this is: (set! (-> *instance-shrub-work* mscalf-ret-tmpl vif0 imm) 103) -;; definition for function upload-generic-shrub -;; Used lq/sq (defun upload-generic-shrub ((arg0 dma-buffer) (arg1 generic-shrub-fragment) (arg2 int) (arg3 int)) @@ -664,7 +658,7 @@ (set! (-> v1-1 vector 2 quad) t2-4) (set! (-> v1-1 vector 3 quad) t3-1) ) - (set! (-> arg0 base) (&+ (-> arg0 base) 64)) + (&+! (-> arg0 base) 64) (let* ((v1-4 arg0) (t0-4 (the-as object (-> v1-4 base))) ) diff --git a/goal_src/engine/gfx/tie/prototype-h.gc b/goal_src/engine/gfx/tie/prototype-h.gc index 4b59fbc5aa..9e6c2ed874 100644 --- a/goal_src/engine/gfx/tie/prototype-h.gc +++ b/goal_src/engine/gfx/tie/prototype-h.gc @@ -72,6 +72,7 @@ :flag-assert #x90000000c ) +(declare-type drawable-inline-array-collide-fragment drawable-inline-array) (deftype prototype-bucket-tie (prototype-bucket) ((generic-count uint16 4 :offset-assert 88) (generic-next uint32 4 :offset-assert 96) @@ -81,8 +82,8 @@ (envmap-rfade float :offset-assert 128) (envmap-fade-far float :offset-assert 132) (envmap-shader adgif-shader :offset-assert 136) - (collide-frag basic :offset-assert 140) - (tie-colors basic :offset-assert 144) + (collide-frag drawable-inline-array-collide-fragment :offset-assert 140) + (tie-colors time-of-day-palette :offset-assert 144) (data uint32 :dynamic :offset-assert 148) (color-index-qwc uint32 :dynamic :offset-assert 148) (generic-next-clear uint128 :offset 96) @@ -115,7 +116,7 @@ (deftype instance (drawable) ((bucket-index uint16 :offset 6) - (unknown uint32 :offset 8) ; TODO - from default-menu + (error (pointer drawable-error) :offset 8) ;; - from default-menu::build-instance-list (origin matrix4h :inline :offset-assert 32) ; TODO - this can also be a float, default-menu::lambda_62 (unknown-vector vector :inline :offset 32) ;; todo, this might not be right. (wind-index uint16 :offset 62) diff --git a/goal_src/engine/gfx/tie/tie-h.gc b/goal_src/engine/gfx/tie/tie-h.gc index 26cd39c7f5..00bcf282e8 100644 --- a/goal_src/engine/gfx/tie/tie-h.gc +++ b/goal_src/engine/gfx/tie/tie-h.gc @@ -5,42 +5,46 @@ ;; name in dgo: tie-h ;; dgos: GAME, ENGINE +;; DECOMP BEGINS + (deftype tie-fragment (drawable) - ((gif-ref uint32 :offset 4) - (point-ref uint32 :offset 8) - (color-index uint16 :offset 12) - (base-colors uint8 :offset 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) - (num-tris uint16 :offset-assert 40) - (num-dverts uint16 :offset-assert 42) - (dp-ref uint32 :offset-assert 44) - (dp-qwc uint32 :offset-assert 48) - (generic-ref uint32 :offset-assert 52) - (generic-count uint32 :offset-assert 56) - (debug-lines basic :offset-assert 60) + ((gif-ref uint32 :offset 4) + (point-ref uint32 :offset 8) + (color-index uint16 :offset 12) + (base-colors uint8 :offset 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) + (num-tris uint16 :offset-assert 40) + (num-dverts uint16 :offset-assert 42) + (dp-ref uint32 :offset-assert 44) + (dp-qwc uint32 :offset-assert 48) + (generic-ref uint32 :offset-assert 52) + (generic-count uint32 :offset-assert 56) + (debug-lines basic :offset-assert 60) ) :method-count-assert 18 :size-assert #x40 :flag-assert #x1200000040 ) + (deftype instance-tie (instance) - ((color-indices uint32 :offset 8) - (bucket-ptr basic :offset 12) - (max-scale uint16 :offset 38) - (flags uint16 :offset 46) + ((color-indices uint32 :offset 8) + (bucket-ptr prototype-bucket-tie :offset 12) + (max-scale uint16 :offset 38) + (flags uint16 :offset 46) ) :method-count-assert 18 :size-assert #x40 :flag-assert #x1200000040 ) + (deftype drawable-inline-array-instance-tie (drawable-inline-array) - ((data instance-tie 1 :inline :offset-assert 32) - (pad uint32 :offset-assert 96) + ((data instance-tie 1 :inline :offset-assert 32) + (pad uint32 :offset-assert 96) ) :method-count-assert 18 :size-assert #x64 @@ -48,16 +52,17 @@ ) (deftype drawable-tree-instance-tie (drawable-tree) - ((prototypes proxy-prototype-array-tie :offset 8) + ((prototypes proxy-prototype-array-tie :offset 8) ) :method-count-assert 18 :size-assert #x24 :flag-assert #x1200000024 ) + (deftype prototype-tie (drawable-inline-array) - ((data instance-tie 1 :inline :offset-assert 32) - (pad uint32 :offset-assert 96) + ((data instance-tie 1 :inline :offset-assert 32) + (pad uint32 :offset-assert 96) ) :method-count-assert 18 :size-assert #x64 @@ -65,23 +70,24 @@ ) (deftype tie-matrix (structure) - ((mat matrix :inline :offset-assert 0) - (morph qword :inline :offset-assert 64) - (fog qword :inline :offset-assert 80) + ((mat matrix :inline :offset-assert 0) + (morph qword :inline :offset-assert 64) + (fog qword :inline :offset-assert 80) ) :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) + ((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 :inline :offset-assert 128) (upload-color-0 dma-packet :inline :offset-assert 192) @@ -115,26 +121,28 @@ :flag-assert #x9000001c0 ) + (deftype instance-tie-dma (structure) - ((banka instance-tie 32 :inline :offset-assert 0) + ((banka instance-tie 32 :inline :offset-assert 0) (bankb instance-tie 32 :inline :offset-assert 2048) (outa uint128 256 :offset-assert 4096) (outb uint128 256 :offset-assert 8192) - (work instance-tie-work :dynamic :offset-assert 12288) ;; something weird here, this falls off the end of the type. + (work instance-tie-work :dynamic :offset-assert 12288) ) :method-count-assert 9 :size-assert #x3000 :flag-assert #x900003000 ) + (deftype prototype-tie-work (structure) - ((upload-palette-0 dma-packet :inline :offset-assert 0) - (upload-palette-1 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-palette-0 dma-packet :inline :offset-assert 0) + (upload-palette-1 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) @@ -159,24 +167,25 @@ :flag-assert #x900000134 ) + (deftype prototype-tie-dma (structure) - ((colora rgba 256 :offset-assert 0) - (colorb rgba 256 :offset-assert 1024) - (outa uint128 256 :offset-assert 2048) - (outb uint128 256 :offset-assert 6144) - (length uint32 :offset-assert 10240) - (dma-buffer basic :offset-assert 10244) - (this-frag-count uint32 :offset-assert 10248) - (next uint32 4 :offset 10256) - (geometry uint32 4 :offset-assert 10272) - (frag-count uint8 4 :offset-assert 10288) + ((colora rgba 256 :offset-assert 0) + (colorb rgba 256 :offset-assert 1024) + (outa uint128 256 :offset-assert 2048) + (outb uint128 256 :offset-assert 6144) + (length uint32 :offset-assert 10240) + (dma-buffer basic :offset-assert 10244) + (this-frag-count uint32 :offset-assert 10248) + (next uint32 4 :offset 10256) + (geometry uint32 4 :offset-assert 10272) + (frag-count uint8 4 :offset-assert 10288) ) :method-count-assert 9 :size-assert #x2834 :flag-assert #x900002834 ) -;; probably a more specific type. + (define *instance-tie-work-copy* (the-as instance-tie-work #f)) (define-extern *instance-tie-work* instance-tie-work) (define-extern tie-near-make-perspective-matrix (function matrix none)) diff --git a/goal_src/engine/math/vector-h.gc b/goal_src/engine/math/vector-h.gc index 1d80df1376..3f6e2c841e 100644 --- a/goal_src/engine/math/vector-h.gc +++ b/goal_src/engine/math/vector-h.gc @@ -193,7 +193,7 @@ ;; Vector of 4 signed words (deftype vector4w (structure) - ((data int32 4 :score -9999 :offset-assert 0) + ((data uint32 4 :score -9999 :offset-assert 0) (x int32 :offset 0) (y int32 :offset 4) (z int32 :offset 8) diff --git a/goal_src/engine/ps2/rpc-h.gc b/goal_src/engine/ps2/rpc-h.gc index 5cc0be5c63..ffed796d82 100644 --- a/goal_src/engine/ps2/rpc-h.gc +++ b/goal_src/engine/ps2/rpc-h.gc @@ -43,7 +43,7 @@ (set! (-> obj elt-size) elt-size) (set! (-> obj elt-count) elt-count) (set! (-> obj elt-used) 0) - (set! (-> obj busy) '#f) + (set! (-> obj busy) #f) ;(set! (-> obj base) (logand -64 (+ (the uint obj) 28 63))) ;; base is the 64-byte aligned buffer. (set! (-> obj base) (the pointer (logand -64 (+ (the uint (-> obj data)) 63)))) @@ -81,7 +81,7 @@ (set! (-> obj buffer 0) (new 'global 'rpc-buffer elt-size elt-count)) (set! (-> obj buffer 1) (new 'global 'rpc-buffer elt-size elt-count)) (set! (-> obj current) (-> obj buffer 0)) - (set! (-> obj last-recv-buffer) (the pointer '#f)) + (set! (-> obj last-recv-buffer) (the pointer #f)) (set! (-> obj rpc-port) rpc-port) obj ) @@ -111,7 +111,7 @@ ) (else ;; not actually busy, clear the flag! - (set! (-> active-buffer busy) '#f) + (set! (-> active-buffer busy) #f) (set! (-> active-buffer elt-used) 0) ) ) @@ -130,13 +130,13 @@ ))) (when (-> active-buffer busy) (if (!= 0 (rpc-busy? (-> obj rpc-port))) - (return-from #f '#t) + (return-from #f #t) ) - (set! (-> active-buffer busy) '#f) + (set! (-> active-buffer busy) #f) (set! (-> active-buffer elt-used) 0) ) ) - '#f + #f ) @@ -162,7 +162,7 @@ ) ) ;; not busy. - (set! (-> active-buffer busy) '#f) + (set! (-> active-buffer busy) #f) (set! (-> active-buffer elt-used) 0) ) ;; now we've cleared the last RPC call, we can do another @@ -177,7 +177,7 @@ (the uint recv-buff) (the int recv-size) ) - (set! (-> current-buffer busy) '#t) + (set! (-> current-buffer busy) #t) (set! (-> obj last-recv-buffer) recv-buff) (set! (-> obj current) active-buffer) ) @@ -190,7 +190,7 @@ ;; method 14 (defmethod pop-last-received rpc-buffer-pair ((obj rpc-buffer-pair)) (let ((result (-> obj last-recv-buffer))) - (set! (-> obj last-recv-buffer) (the pointer '#f)) + (set! (-> obj last-recv-buffer) (the pointer #f)) result ) ) diff --git a/goal_src/engine/target/logic-target.gc b/goal_src/engine/target/logic-target.gc index 6e5ed7fde8..cf744e2c6f 100644 --- a/goal_src/engine/target/logic-target.gc +++ b/goal_src/engine/target/logic-target.gc @@ -557,7 +557,7 @@ arg1 "~0ky:~,,2M t:~d cy: ~,,2M my: ~,,2M impv:~,,2M " (-> arg0 control unknown-vector52 y) - (- (-> *display* base-frame-counter) (-> arg0 control unknown-dword10)) + (- (-> *display* base-frame-counter) (-> arg0 control unknown-dword11)) (- (-> arg0 control trans y) (-> arg0 control unknown-vector52 y)) (- (-> arg0 control unknown-vector111 y) @@ -1350,7 +1350,7 @@ ((-> self control unknown-surface01 active-hook)) (cond ((logtest? (-> self control status) 1) - (set! (-> self control unknown-dword10) (-> *display* base-frame-counter)) + (set! (-> self control unknown-dword11) (-> *display* base-frame-counter)) (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) (if (and @@ -1571,7 +1571,7 @@ (when (and (>= - (- (-> *display* base-frame-counter) (-> self control unknown-dword10)) + (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) 600 ) (and @@ -1763,7 +1763,7 @@ (vector-! (new-stack-vector0) (-> s5-0 center-hold) - (the-as vector (&-> (-> self control) unknown-cspace00 bone)) + (-> self control unknown-vector90) ) ) ) @@ -1777,7 +1777,7 @@ ) ) (vector-normalize! s4-1 1228.8) - (TODO-RENAME-28 (-> self control)) + (TODO-RENAME-28 (-> self control) s4-1) (vector-float*! (-> self control rider-last-move) s4-1 @@ -1880,13 +1880,13 @@ a1-7 (-> *display* frames-per-second) ) + (set! + (-> self control rider-time) + (the-as uint (-> *display* base-frame-counter)) + ) + (TODO-RENAME-28 (-> self control) a1-7) ) ) - (set! - (-> self control rider-time) - (the-as uint (-> *display* base-frame-counter)) - ) - (TODO-RENAME-28 (-> self control)) (set! (-> self control unknown-float110) 0.0) (dummy-17 self) (none) @@ -1923,7 +1923,7 @@ (send-event *camera* 'ease-in 0.5 v1-8) ) (vector-segment-distance-point! - (the-as vector (&-> (-> self control) unknown-cspace00 bone)) + (-> self control unknown-vector90) s3-0 s2-0 s5-0 @@ -1947,7 +1947,7 @@ (add-debug-sphere #t (bucket-id debug-draw0) - (the-as vector (&-> (-> self control) unknown-cspace00 bone)) + (-> self control unknown-vector90) 819.2 (new 'static 'rgba :r #xff :a #x80) ) @@ -1976,11 +1976,7 @@ ) (let ((s4-2 - (vector-! - (new-stack-vector0) - s5-0 - (the-as vector (&-> (-> self control) unknown-cspace00 bone)) - ) + (vector-! (new-stack-vector0) s5-0 (-> self control unknown-vector90)) ) ) (cond @@ -1988,12 +1984,7 @@ (< 2457.6 (vector-length s4-2)) (not (-> self control unknown-int20)) ) - (let* ((s5-1 (-> self control)) - (s3-1 (method-of-object s5-1 TODO-RENAME-28)) - ) - (vector-normalize! s4-2 2457.6) - (s3-1 s5-1) - ) + (TODO-RENAME-28 (-> self control) (vector-normalize! s4-2 2457.6)) ) (else (set! (-> self control unknown-int20) (the-as int #t)) @@ -2209,15 +2200,11 @@ s5-0 (the-as cspace (-> self control unknown-cspace00 joint)) ) - (vector-average! - (the-as vector (&-> (-> self control) unknown-cspace00 bone)) - gp-0 - s5-0 - ) + (vector-average! (-> self control unknown-vector90) gp-0 s5-0) ) (vector-! (-> self control unknown-vector91) - (the-as vector (&-> (-> self control) unknown-cspace00 bone)) + (-> self control unknown-vector90) (-> self control trans) ) (cond @@ -2496,7 +2483,7 @@ (vector-! (-> self control unknown-vector12) (-> self control unknown-vector11) - (-> self control unknown-vector13) + (-> self control unknown-vector14) ) (let ((a1-3 (new 'stack-no-clear 'collide-edge-hold-list))) (set! (-> a1-3 num-allocs) (the-as uint 1)) @@ -2620,7 +2607,7 @@ (vector-! (-> self control unknown-vector12) (-> self control unknown-vector11) - (-> self control unknown-vector13) + (-> self control unknown-vector14) ) (let ((a1-2 (new 'stack-no-clear 'collide-edge-hold-list))) (set! (-> a1-2 num-allocs) (the-as uint 1)) @@ -2656,7 +2643,7 @@ ) (quaternion-identity! (-> self control unknown-quaternion01)) (set! (-> self control unknown-float00) 0.0) - (set! (-> self control unknown-dword10) (-> *display* base-frame-counter)) + (set! (-> self control unknown-dword11) (-> *display* base-frame-counter)) (set! (-> self control unknown-float80) 0.0) (set! (-> self control unknown-float82) 32.0) (set! (-> self cam-user-mode) 'normal) @@ -2690,13 +2677,13 @@ (set! (-> s4-0 collide-with) (the-as uint #x2bef)) (set! (-> s4-0 prim-core offense) 1) (set! (-> s4-0 prim-core action) (the-as uint 5)) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 6)))) (set! (-> s3-0 prim-core action) (the-as uint 5)) (set! (-> s3-0 prim-core collide-as) (the-as uint 16)) (set! (-> s3-0 collide-with) (the-as uint #x2bef)) (set! (-> s3-0 prim-core offense) 1) - (dummy-28 s4-0) + (append-prim s4-0 s3-0) (set! (-> s5-0 unknown-sphere-array00 0) s3-0) ) (let @@ -2705,7 +2692,7 @@ (set! (-> s3-1 prim-core collide-as) (the-as uint 16)) (set! (-> s3-1 collide-with) (the-as uint #x2bef)) (set! (-> s3-1 prim-core offense) 1) - (dummy-28 s4-0) + (append-prim s4-0 s3-1) (set! (-> s5-0 unknown-sphere-array00 1) s3-1) ) (let @@ -2714,28 +2701,28 @@ (set! (-> s3-2 prim-core collide-as) (the-as uint 16)) (set! (-> s3-2 collide-with) (the-as uint #x2bef)) (set! (-> s3-2 prim-core offense) 1) - (dummy-28 s4-0) + (append-prim s4-0 s3-2) (set! (-> s5-0 unknown-sphere-array00 2) s3-2) ) (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 32)))) - (dummy-28 s4-0) + (append-prim s4-0 s3-3) (set! (-> s5-0 unknown-sphere00) s3-3) ) (let ((s3-4 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 64)))) - (dummy-28 s4-0) + (append-prim s4-0 s3-4) (set! (-> s5-0 unknown-sphere01) s3-4) ) (let ((s3-5 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 128)))) - (dummy-28 s4-0) + (append-prim s4-0 s3-5) (set! (-> s5-0 unknown-sphere02) s3-5) ) ) ) (target-collide-set! 'normal 0.0) - (dummy-50 (-> self control)) + (backup-collide-with-as (-> self control)) (set! (-> self game) *game-info*) (TODO-RENAME-30 (-> self control) (-> arg0 trans)) (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> arg0 trans quad)) @@ -2850,11 +2837,11 @@ 0 ) -;; hack +;; TODO temp hack (defun start ((arg0 symbol) (arg1 continue-point)) (set! *target* #f) (return *target*) - + (set! (-> *level* border?) #f) (set! (-> *setting-control* default border-mode) #f) (stop arg0) diff --git a/goal_src/engine/target/surface-h.gc b/goal_src/engine/target/surface-h.gc index a3345ca4cf..b8b898d034 100644 --- a/goal_src/engine/target/surface-h.gc +++ b/goal_src/engine/target/surface-h.gc @@ -993,7 +993,7 @@ (the-as (function surface surface surface int none) nothing) ) (set! (-> v1-41 touch-hook) nothing) - (set! (-> v1-41 active-hook) nothing) + (set! (-> v1-41 active-hook) (the-as (function none) nothing)) ) (let ((v1-42 @@ -1025,7 +1025,7 @@ (the-as (function surface surface surface int none) nothing) ) (set! (-> v1-42 touch-hook) nothing) - (set! (-> v1-42 active-hook) nothing) + (set! (-> v1-42 active-hook) (the-as (function none) nothing)) ) (let ((v1-43 @@ -1059,7 +1059,7 @@ (the-as (function surface surface surface int none) nothing) ) (set! (-> v1-43 touch-hook) nothing) - (set! (-> v1-43 active-hook) nothing) + (set! (-> v1-43 active-hook) (the-as (function none) nothing)) ) (let ((v1-44 @@ -1094,7 +1094,7 @@ (the-as (function surface surface surface int none) nothing) ) (set! (-> v1-44 touch-hook) nothing) - (set! (-> v1-44 active-hook) nothing) + (set! (-> v1-44 active-hook) (the-as (function none) nothing)) ) (let ((v1-45 @@ -1129,7 +1129,7 @@ (the-as (function surface surface surface int none) nothing) ) (set! (-> v1-45 touch-hook) nothing) - (set! (-> v1-45 active-hook) nothing) + (set! (-> v1-45 active-hook) (the-as (function none) nothing)) ) (let ((v1-46 @@ -1164,7 +1164,7 @@ (the-as (function surface surface surface int none) nothing) ) (set! (-> v1-46 touch-hook) nothing) - (set! (-> v1-46 active-hook) nothing) + (set! (-> v1-46 active-hook) (the-as (function none) nothing)) ) (let ((v1-47 @@ -1196,7 +1196,7 @@ (the-as (function surface surface surface int none) nothing) ) (set! (-> v1-47 touch-hook) nothing) - (set! (-> v1-47 active-hook) nothing) + (set! (-> v1-47 active-hook) (the-as (function none) nothing)) ) (let ((v1-48 @@ -1228,7 +1228,7 @@ (the-as (function surface surface surface int none) nothing) ) (set! (-> v1-48 touch-hook) nothing) - (set! (-> v1-48 active-hook) nothing) + (set! (-> v1-48 active-hook) (the-as (function none) nothing)) ) (let ((v1-49 @@ -1262,8 +1262,10 @@ (the-as (function surface surface surface int none) nothing) ) (set! (-> v1-49 touch-hook) nothing) - (set! (-> v1-49 active-hook) nothing) + (set! (-> v1-49 active-hook) (the-as (function none) nothing)) ) (define *standard-ground-surface* *stone-surface*) (define *swim-surface* *stone-surface*) + +(define-extern *race-track-surface* surface) diff --git a/goal_src/engine/target/target-h.gc b/goal_src/engine/target/target-h.gc index 47d557f8db..7e5e4c3854 100644 --- a/goal_src/engine/target/target-h.gc +++ b/goal_src/engine/target/target-h.gc @@ -70,7 +70,7 @@ :size-assert #x248 :flag-assert #x1501e00248 (:methods - (dummy-20 (_type_ collide-cache) none 20) + (dummy-20 (_type_ collide-cache) object 20) ) (:states target-clone-anim diff --git a/goal_src/engine/target/target-util.gc b/goal_src/engine/target/target-util.gc index fa1cb08928..bdc3b1d6f3 100644 --- a/goal_src/engine/target/target-util.gc +++ b/goal_src/engine/target/target-util.gc @@ -831,7 +831,7 @@ (or (logtest? (-> self control status) 1) (< - (- (-> *display* base-frame-counter) (-> self control unknown-dword10)) + (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (the-as int (-> *TARGET-bank* ground-timeout)) ) (and @@ -875,7 +875,7 @@ (and (zero? (logand (-> self control status) 1)) (>= - (- (-> *display* base-frame-counter) (-> self control unknown-dword10)) + (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (the-as int (-> *TARGET-bank* ground-timeout)) ) (>= @@ -925,7 +925,7 @@ (and (zero? (logand (-> self control status) 129)) (>= - (- (-> *display* base-frame-counter) (-> self control unknown-dword10)) + (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (the-as int (-> *TARGET-bank* ground-timeout)) ) (logtest? (-> self control status) 4) @@ -993,7 +993,7 @@ (set! (-> s5-0 1 quad) (-> self control trans quad)) (set! (-> s5-0 1 y) (+ 2867.2 (-> *TARGET-bank* body-radius) (-> s5-0 1 y))) (set! (-> s5-0 1 w) (-> *TARGET-bank* body-radius)) - (set! (-> gp-0 spheres) (the-as uint s5-0)) + (set! (-> gp-0 spheres) (the-as (pointer sphere) s5-0)) ) (set! (-> gp-0 num-spheres) (the-as uint 2)) (set! (-> gp-0 collide-with) (-> self control root-prim collide-with)) @@ -1045,7 +1045,7 @@ (not arg0) (and (< - (- (-> *display* base-frame-counter) (-> self control unknown-dword10)) + (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (the-as int (-> *TARGET-bank* ground-timeout)) ) (< (-> self control unknown-float61) 0.7) diff --git a/goal_src/engine/ui/text-h.gc b/goal_src/engine/ui/text-h.gc index 7c391692cd..9c4e2c5ddf 100644 --- a/goal_src/engine/ui/text-h.gc +++ b/goal_src/engine/ui/text-h.gc @@ -194,6 +194,7 @@ (yakow-owed-powercell #x297) (misty-teetertotter-bonk-dax-tutorial #x2a4) + (sidekick-hint-misty-get-red-eco #x2a5) (daxter-blue-eco-plat-tutorial #x2a7) (misty-bone-bridge-hint #x2aa) diff --git a/goal_src/examples/debug-draw-example.gc b/goal_src/examples/debug-draw-example.gc index 27de6147cb..3fd0aac20e 100644 --- a/goal_src/examples/debug-draw-example.gc +++ b/goal_src/examples/debug-draw-example.gc @@ -113,10 +113,8 @@ (none) ) - +#| (define *wasd-camera-transform* (new 'global 'transform)) - - (defun wasd-camera-update () (let ((local-trans (new-stack-vector0)) (trans *wasd-camera-transform*) @@ -270,6 +268,7 @@ "Kill all processes started by launch-test-process" (kill-by-name "test" *active-pool*) ) +|# (set! *display-profile* #t) ; (set! *display-split-boxes* #t) diff --git a/goal_src/game.gp b/goal_src/game.gp index e8e0fcf3fb..3a72f15fe3 100644 --- a/goal_src/game.gp +++ b/goal_src/game.gp @@ -67,7 +67,7 @@ ) ) -(defmacro cgo (output-name desc-file-name &rest objs) +(defmacro cgo (output-name desc-file-name) "Add a CGO with the given output name (in out/iso) and input name (in goal_src/dgos)" `(defstep :in ,(string-append "goal_src/dgos/" desc-file-name) :tool 'dgo @@ -218,6 +218,24 @@ "out/iso/JUN.DGO" "out/iso/MAI.DGO" "out/iso/BEA.DGO" + "out/iso/CIT.DGO" + ) + + +;;;;;;;;;;;;;;;;;;;;; +;; hub1 Group +;;;;;;;;;;;;;;;;;;;;; +;; the hub1 group is a group of files required to play the first hub (village1, jungle, beach, misty, training, firecanyon) + +(group "hub1" + "out/iso/0COMMON.TXT" + "out/iso/KERNEL.CGO" + "out/iso/GAME.CGO" + "out/iso/VI1.DGO" + "out/iso/TRA.DGO" + "out/iso/FIC.DGO" + "out/iso/JUN.DGO" + "out/iso/BEA.DGO" ) ;;;;;;;;;;;;;;;;;;;;;;;; @@ -251,6 +269,8 @@ "common/launcherdoor.gc" "common/mistycannon.gc" "common/babak-with-cannon.gc" + "common/snow-bunny.gc" + "common/battlecontroller.gc" "racer_common/target-racer-h-FIC-LAV-MIS-OGR-ROL.gc" "racer_common/racer-part.gc" @@ -680,6 +700,65 @@ ; "darkcave/darkcave-obs.gc" ; ) +;;;;;;;;;;;;;;;;;;;;; +;; citadel +;;;;;;;;;;;;;;;;;;;;; + +(cgo "CIT.DGO" "cit.gd") + +(goal-src-sequence + "levels/citadel/" + :deps ("out/obj/default-menu.o") + + "citadel-part.gc" + "citadel-obs.gc" + "citb-plat.gc" + "citadel-sages.gc" + "citb-bunny.gc" + "citb-drop-plat-CIT.gc" + "assistant-citadel.gc" + ) + +(copy-textures 1415 1417 1416 1414) + +(copy-gos + "babak-ag-CIT" + "ecovalve-ag-CIT" + "orb-cache-top-ag-CIT" + "assistant-lavatube-end-ag" + "bluesage-ag" + "citadelcam-ag" + "citb-arm-ag" + "citb-arm-shoulder-ag" + "citb-bunny-ag" + "citb-button-ag" + "citb-chain-plat-ag" + "citb-chains-ag" + "citb-coil-ag" + "citb-disc-ag" + "citb-donut-ag" + "citb-drop-plat-ag" + "citb-exit-plat-ag" + "citb-firehose-ag" + "citb-generator-ag" + "citb-hose-ag" + "citb-iris-door-ag" + "citb-launcher-ag" + "citb-robotboss-ag" + "citb-rotatebox-ag" + "citb-sagecage-ag" + "citb-stopbox-ag" + "evilbro-citadel-ag" + "evilsis-citadel-ag" + "green-sagecage-ag" + "plat-citb-ag" + "plat-eco-citb-ag" + "redsage-ag" + "warp-gate-switch-ag-CIT" + "yellowsage-ag" + "citadel-vis" + ) + ;;;;;;;;;;;;;;;;;;;;; ;; Final Boss ;;;;;;;;;;;;;;;;;;;;; @@ -710,7 +789,6 @@ "ecovalve-ag-FIN" "finalbosscam-ag" "green-eco-lurker-ag" - "green-sagecage-ag" "greenshot-ag" "jak-white-ag" "light-eco-ag" diff --git a/goal_src/goal-lib.gc b/goal_src/goal-lib.gc index a1d16aafa6..9a32cce63e 100644 --- a/goal_src/goal-lib.gc +++ b/goal_src/goal-lib.gc @@ -724,6 +724,11 @@ "Make ISO" `(make-group "iso") ) + +(defmacro mh1 () + "Make hub1" + `(make-group "hub1") + ) ;;;;;;;;;;;;;;;;;;; ;; enum stuff ;;;;;;;;;;;;;;;;;;; diff --git a/goal_src/kernel/gkernel-h.gc b/goal_src/kernel/gkernel-h.gc index 57ea845438..e7008750f7 100644 --- a/goal_src/kernel/gkernel-h.gc +++ b/goal_src/kernel/gkernel-h.gc @@ -413,7 +413,7 @@ (defmacro handle->process (handle) ;; the actual implementation is more clever than this. ;; Checks PID. - `(let ((the-handle ,handle)) + `(let ((the-handle (the-as handle ,handle))) (if (-> the-handle process) ;; if we don't point to a process, kernel sets this to #f (let ((proc (-> (-> the-handle process)))) (if (= (-> the-handle pid) (-> proc pid)) ;; make sure it's the same process diff --git a/goal_src/kernel/gkernel.gc b/goal_src/kernel/gkernel.gc index 50a33ac71e..303674d5ec 100644 --- a/goal_src/kernel/gkernel.gc +++ b/goal_src/kernel/gkernel.gc @@ -119,19 +119,19 @@ (#cond (PC_PORT - ;; We will move stacks on the scratchpad to here. - ;; it might be possible to also throw them on the *dram-stack*, but they might depend on these - ;; not overlapping. We can spare the 16k of memory. - (define *fake-scratchpad-stack* (new 'global 'array 'uint8 (* 16 1024))) ;; similar thing for the scratchpad data. - (let* ((mem (new 'global 'array 'uint8 (* (+ 16 8) 1024))) (aligned (logand (&+ mem 8192) (lognot 8191))) ) (define *fake-scratchpad-data* aligned) ) + ;; We will move stacks on the scratchpad to here. + ;; it might be possible to also throw them on the *dram-stack*, but they might depend on these + ;; not overlapping. We can spare the 16k of memory. + (define *fake-scratchpad-stack* *fake-scratchpad-data*) + ;;(define *fake-scratchpad-stack* (new 'global 'array 'uint8 (* 16 1024))) (defmacro scratchpad-start() @@ -1370,7 +1370,7 @@ (let ((proc (-> gap next process)) (size (gap-size obj gap))) (unless (zero? size) - (format #t "[kernel] Relocating process ~A by ~D.~%" proc (- size)) + ;;(format #t "[kernel] Relocating process ~A by ~D.~%" proc (- size)) (when (< size 0) ;; bug! (break) diff --git a/goal_src/kernel/gstate.gc b/goal_src/kernel/gstate.gc index f157724778..ea42f79ec8 100644 --- a/goal_src/kernel/gstate.gc +++ b/goal_src/kernel/gstate.gc @@ -140,14 +140,15 @@ It type checks the arguments for the entry function. (set! *defstate-type-stack* '()) `(none) ) +;; *no-state* is just used for the compiler to know whether a handler was actually set or not (defmacro defstate (state-name parents &key (virtual #f) - &key (event #f) - &key (enter #f) - &key (trans #f) - &key (exit #f) - &key (code #f) - &key (post #f) + &key (event *no-state*) + &key (enter *no-state*) + &key (trans *no-state*) + &key (exit *no-state*) + &key (code *no-state*) + &key (post *no-state*) ) "Define a new state!" diff --git a/goal_src/levels/beach/beach-rocks.gc b/goal_src/levels/beach/beach-rocks.gc index b9502bb9f0..23e1452cc3 100644 --- a/goal_src/levels/beach/beach-rocks.gc +++ b/goal_src/levels/beach/beach-rocks.gc @@ -626,7 +626,7 @@ (vector<-cspace! s5-0 (-> obj node-list data 8)) (birth-pickup-at-point s5-0 - 6 + (pickup-type fuel-cell) (the float (the-as int (-> obj entity extra perm task))) #f obj @@ -660,7 +660,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new @@ -678,10 +684,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/beach/lurkercrab.gc b/goal_src/levels/beach/lurkercrab.gc index dc89cac708..2efd06dfcd 100644 --- a/goal_src/levels/beach/lurkercrab.gc +++ b/goal_src/levels/beach/lurkercrab.gc @@ -116,7 +116,14 @@ 'generic ) ) - (dummy-55 (-> obj collide-info) arg0 (-> arg1 param 0) 0.7 6144.0 16384.0) + (dummy-55 + (-> obj collide-info) + arg0 + (the-as touching-shapes-entry (-> arg1 param 0)) + 0.7 + 6144.0 + 16384.0 + ) (the-as object (if (zero? (logand (-> obj nav-enemy-flags) 256)) (dummy-45 (-> obj collide-info)) ) @@ -1132,40 +1139,46 @@ nav-enemy-default-event-handler ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set-vector! (-> s3-0 local-sphere) 0.0 10240.0 0.0 12288.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) (set! (-> s2-0 collide-with) (the-as uint 16)) (set! (-> s2-0 prim-core action) (the-as uint 1)) (set! (-> s2-0 prim-core offense) 4) (set-vector! (-> s2-0 local-sphere) 0.0 4915.2 0.0 4096.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) (set! (-> s2-1 collide-with) (the-as uint 16)) (set! (-> s2-1 prim-core offense) 2) (set! (-> s2-1 transform-index) 16) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 1638.4) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) (set! (-> s2-2 collide-with) (the-as uint 16)) (set! (-> s2-2 prim-core offense) 2) (set! (-> s2-2 transform-index) 21) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 1638.4) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) 4096.0) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj collide-info) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/beach/lurkerpuppy.gc b/goal_src/levels/beach/lurkerpuppy.gc index b399d13954..d075ea0eb3 100644 --- a/goal_src/levels/beach/lurkerpuppy.gc +++ b/goal_src/levels/beach/lurkerpuppy.gc @@ -590,17 +590,23 @@ nav-enemy-default-event-handler ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 2) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 4915.2) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) 2048.0) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj collide-info) s5-0) ) 0 diff --git a/goal_src/levels/beach/lurkerworm.gc b/goal_src/levels/beach/lurkerworm.gc index dd70c4ce37..44f2231c93 100644 --- a/goal_src/levels/beach/lurkerworm.gc +++ b/goal_src/levels/beach/lurkerworm.gc @@ -869,13 +869,19 @@ lurkerworm-default-post-behavior ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 6) 0))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set-vector! (-> s3-0 local-sphere) 0.0 10240.0 0.0 24576.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) (set! (-> s2-0 collide-with) (the-as uint 16)) @@ -883,8 +889,8 @@ lurkerworm-default-post-behavior (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4096.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) (set! (-> s2-1 collide-with) (the-as uint 16)) @@ -892,8 +898,8 @@ lurkerworm-default-post-behavior (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 5) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 4096.0) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) (set! (-> s2-2 collide-with) (the-as uint 16)) @@ -901,8 +907,8 @@ lurkerworm-default-post-behavior (set! (-> s2-2 prim-core offense) 4) (set! (-> s2-2 transform-index) 6) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 4096.0) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) (set! (-> s2-3 collide-with) (the-as uint 16)) @@ -910,8 +916,8 @@ lurkerworm-default-post-behavior (set! (-> s2-3 prim-core offense) 4) (set! (-> s2-3 transform-index) 7) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 4096.0) + (append-prim s3-0 s2-3) ) - (dummy-28 s3-0) (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-4 prim-core collide-as) (the-as uint 256)) (set! (-> s2-4 collide-with) (the-as uint 16)) @@ -919,19 +925,19 @@ lurkerworm-default-post-behavior (set! (-> s2-4 prim-core offense) 4) (set! (-> s2-4 transform-index) 8) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 4096.0) + (append-prim s3-0 s2-4) ) - (dummy-28 s3-0) (let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-5 prim-core collide-as) (the-as uint 256)) (set! (-> s2-5 collide-with) (the-as uint 16)) (set! (-> s2-5 prim-core offense) 2) (set! (-> s2-5 transform-index) 11) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 6144.0) + (append-prim s3-0 s2-5) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/citadel/citadel-obs.gc b/goal_src/levels/citadel/citadel-obs.gc index 7b709d6cd7..c11759cc8c 100644 --- a/goal_src/levels/citadel/citadel-obs.gc +++ b/goal_src/levels/citadel/citadel-obs.gc @@ -221,8 +221,8 @@ :post (behavior () (if (logtest? (-> self draw status) 2) - (dummy-48 (-> self root-override)) - (dummy-49 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) + (restore-collide-with-as (-> self root-override)) ) (rider-post) (none) @@ -237,7 +237,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -256,10 +262,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 40960.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 @@ -492,7 +498,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -511,10 +523,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 49152.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 @@ -661,10 +673,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 @@ -707,7 +719,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new @@ -725,10 +743,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) (the-as collide-shape-moving 0) @@ -1319,10 +1337,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 81920.0 0.0 143360.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -2136,10 +2154,10 @@ (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 4) (set-vector! (-> s4-0 local-sphere) 0.0 4096.0 0.0 4096.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/goal_src/levels/citadel/citadel-sages.gc b/goal_src/levels/citadel/citadel-sages.gc index 2eed32086d..fb0cf03f19 100644 --- a/goal_src/levels/citadel/citadel-sages.gc +++ b/goal_src/levels/citadel/citadel-sages.gc @@ -99,7 +99,7 @@ ) (defbehavior citb-sagecage-update-collision citb-sagecage () - (dummy-28 + (change-mesh (the-as collide-shape-prim-mesh (-> self root-override root-prim)) (if (-> self bars-on) 0 @@ -206,7 +206,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -225,10 +231,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 20480.0 0.0 28672.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/goal_src/levels/citadel/citb-drop-plat-CIT.gc b/goal_src/levels/citadel/citb-drop-plat-CIT.gc index 0d64c9b406..524bb1e5eb 100644 --- a/goal_src/levels/citadel/citb-drop-plat-CIT.gc +++ b/goal_src/levels/citadel/citb-drop-plat-CIT.gc @@ -365,7 +365,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -384,10 +390,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/goal_src/levels/common/babak-with-cannon.gc b/goal_src/levels/common/babak-with-cannon.gc index 3d77b30316..05128ded20 100644 --- a/goal_src/levels/common/babak-with-cannon.gc +++ b/goal_src/levels/common/babak-with-cannon.gc @@ -615,7 +615,7 @@ nav-enemy-default-event-handler :code (behavior () (ja-channel-set! 0) - (dummy-48 (-> self collide-info)) + (clear-collide-with-as (-> self collide-info)) (ja-post) (when (not (task-complete? *game-info* (-> self entity extra perm task))) (when @@ -639,7 +639,7 @@ nav-enemy-default-event-handler (if (not (-> self child)) (birth-pickup-at-point (-> self collide-info trans) - 6 + (pickup-type fuel-cell) (the float (-> self entity extra perm task)) #f self @@ -686,7 +686,7 @@ nav-enemy-default-event-handler (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) ) ) - (zero? (logand (-> obj enemy-info options) 2)) + (zero? (logand (-> obj enemy-info options) (fact-options fop1))) ) (go (method-of-object obj nav-enemy-idle)) ) diff --git a/goal_src/levels/common/babak.gc b/goal_src/levels/common/babak.gc index 31771fe842..025ea77f56 100644 --- a/goal_src/levels/common/babak.gc +++ b/goal_src/levels/common/babak.gc @@ -613,40 +613,46 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 3) 0))) (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 12288.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 1) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 3072.0) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) (set! (-> s3-1 collide-with) (the-as uint 16)) (set! (-> s3-1 prim-core action) (the-as uint 1)) (set! (-> s3-1 prim-core offense) 1) (set-vector! (-> s3-1 local-sphere) 0.0 9830.4 0.0 3072.0) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) (set! (-> s3-2 collide-with) (the-as uint 16)) (set! (-> s3-2 prim-core offense) 2) (set! (-> s3-2 transform-index) 6) (set-vector! (-> s3-2 local-sphere) 0.0 0.0 0.0 2048.0) + (append-prim s4-0 s3-2) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) 6144.0) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) (set! (-> obj collide-info) s5-0) ) @@ -671,11 +677,11 @@ (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) ) - (logtest? (-> obj enemy-info options) 2) + (logtest? (-> obj enemy-info options) (fact-options fop1)) ) (go (method-of-object obj nav-enemy-fuel-cell)) ) - ((logtest? (-> obj enemy-info options) 32) + ((logtest? (-> obj enemy-info options) (fact-options fop5)) (go (method-of-object obj nav-enemy-wait-for-cue)) ) (else diff --git a/goal_src/levels/common/basebutton.gc b/goal_src/levels/common/basebutton.gc index a17fe09682..0c6b0146fe 100644 --- a/goal_src/levels/common/basebutton.gc +++ b/goal_src/levels/common/basebutton.gc @@ -505,14 +505,20 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 3)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new @@ -530,8 +536,8 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) (let ((s3-1 (new @@ -549,11 +555,11 @@ (set! (-> s3-1 prim-core offense) 4) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 12288.0) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) s5-0 ) @@ -876,7 +882,7 @@ ) ) ) - (dummy-48 (-> self control)) + (clear-collide-with-as (-> self control)) (set! (-> self state-time) (-> *display* base-frame-counter)) (set! (-> self trans-hook) diff --git a/goal_src/levels/common/baseplat.gc b/goal_src/levels/common/baseplat.gc index 72aad02716..669d2f8954 100644 --- a/goal_src/levels/common/baseplat.gc +++ b/goal_src/levels/common/baseplat.gc @@ -283,7 +283,7 @@ eco-door-event-handler ) ) (sound-play-by-name (-> self open-sound) (new-sound-id) 1024 0 0 1 #t) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (until (ja-done? 0) (let ((a0-9 (-> self skel root-channel 0))) (set! @@ -318,7 +318,7 @@ eco-door-event-handler (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (process-entity-status! self (entity-perm-status complete) #t) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (let ((v1-6 (-> self skel root-channel 0))) (set! (-> v1-6 num-func) num-func-identity) (set! @@ -365,7 +365,7 @@ eco-door-event-handler eco-door-event-handler :code (behavior () - (dummy-49 (-> self root-override)) + (restore-collide-with-as (-> self root-override)) (set! (-> self draw status) (logand -3 (-> self draw status))) (let ((gp-0 (new 'stack 'overlaps-others-params))) (set! (-> gp-0 options) (the-as uint 1)) @@ -440,10 +440,10 @@ eco-door-event-handler (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/goal_src/levels/common/battlecontroller.gc b/goal_src/levels/common/battlecontroller.gc index f6db1583cc..c94ddb5220 100644 --- a/goal_src/levels/common/battlecontroller.gc +++ b/goal_src/levels/common/battlecontroller.gc @@ -268,11 +268,11 @@ battlecontroller-default-event-handler (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info pickup-spawn-amount) 0.0 ) - (logior! (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info options) 512) - (set! - (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info fade-time) - (the-as uint 1200) + (logior! + (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info options) + (fact-options fade) ) + (set! (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info fade-time) 1200) ) ) ) @@ -691,7 +691,7 @@ battlecontroller-default-event-handler (label cfg-15) (birth-pickup-at-point (-> self final-pickup-spawn-point) - (the-as int (-> self final-pickup-type)) + (-> self final-pickup-type) (the float (-> self entity extra perm task)) #f self diff --git a/goal_src/levels/common/blocking-plane.gc b/goal_src/levels/common/blocking-plane.gc index ae966ca670..3b5a1ffba5 100644 --- a/goal_src/levels/common/blocking-plane.gc +++ b/goal_src/levels/common/blocking-plane.gc @@ -75,10 +75,10 @@ (set! (-> s3-1 prim-core offense) 4) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 (fmax 122880.0 f30-1)) + (set-root-prim! s4-1 s3-1) ) - (dummy-46 s4-1) (set! (-> s4-1 nav-radius) (* 0.75 (-> s4-1 root-prim local-sphere w))) - (dummy-50 s4-1) + (backup-collide-with-as s4-1) (set! (-> self root) s4-1) ) (let ((s4-2 (new-stack-matrix0))) diff --git a/goal_src/levels/common/nav-enemy.gc b/goal_src/levels/common/nav-enemy.gc index 72cfeeddda..17589e93f0 100644 --- a/goal_src/levels/common/nav-enemy.gc +++ b/goal_src/levels/common/nav-enemy.gc @@ -305,15 +305,13 @@ ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('death-start) - (TODO-RENAME-9 (-> self fact) #t *entity-pool* (-> self fact) 0) + (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) ) (('death-end) - (let ((v0-0 (logior (-> self draw status) 2))) - (set! (-> self draw status) v0-0) - v0-0 - ) + (logior! (-> self draw status) 2) ) ) + (none) ) nav-enemy-default-event-handler @@ -2183,7 +2181,7 @@ nav-enemy-default-event-handler :code (behavior () (ja-channel-push! 1 22) - (dummy-48 (-> self collide-info)) + (clear-collide-with-as (-> self collide-info)) (nav-enemy-fall-and-play-death-anim (the-as art-joint-anim @@ -2195,7 +2193,7 @@ nav-enemy-default-event-handler 600 ) (send-event self 'death-end) - (if (logtest? (-> self enemy-info options) 2) + (if (logtest? (-> self enemy-info options) (fact-options fop1)) (go-virtual nav-enemy-fuel-cell) ) (while (-> self child) @@ -2218,14 +2216,14 @@ nav-enemy-default-event-handler :code (behavior () (ja-channel-set! 0) - (dummy-48 (-> self collide-info)) + (clear-collide-with-as (-> self collide-info)) (ja-post) (process-entity-status! self (entity-perm-status complete) #t) (when (not (task-complete? *game-info* (-> self entity extra perm task))) (label cfg-1) (birth-pickup-at-point (-> self collide-info trans) - 6 + (pickup-type fuel-cell) (the float (the-as int (-> self entity extra perm task))) #f self diff --git a/goal_src/levels/common/orb-cache.gc b/goal_src/levels/common/orb-cache.gc index 5b76061f59..6f7ee36805 100644 --- a/goal_src/levels/common/orb-cache.gc +++ b/goal_src/levels/common/orb-cache.gc @@ -468,7 +468,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -487,10 +493,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 11468.8) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/common/plat-button.gc b/goal_src/levels/common/plat-button.gc index 00f2d37954..70a07177c0 100644 --- a/goal_src/levels/common/plat-button.gc +++ b/goal_src/levels/common/plat-button.gc @@ -543,7 +543,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) @@ -551,7 +557,7 @@ (set! (-> s4-0 prim-core action) (the-as uint 3)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -4096.0 0.0 27033.6) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new @@ -569,8 +575,8 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 -3072.0 0.0 7372.8) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) (let ((s3-1 (new @@ -588,11 +594,11 @@ (set! (-> s3-1 prim-core offense) 4) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 -4096.0 0.0 27033.6) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) s5-0 ) diff --git a/goal_src/levels/common/plat.gc b/goal_src/levels/common/plat.gc index a3ccb6725d..c79d3e7036 100644 --- a/goal_src/levels/common/plat.gc +++ b/goal_src/levels/common/plat.gc @@ -164,7 +164,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -183,10 +189,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 13107.2) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 @@ -290,10 +296,12 @@ ) :trans (behavior () - (set! (-> self path-pos) (if (logtest? (-> self fact options) 8) - (get-current-phase (-> self sync)) - (get-current-phase-with-mirror (-> self sync)) - ) + (set! + (-> self path-pos) + (if (logtest? (-> self fact options) (fact-options fop3)) + (get-current-phase (-> self sync)) + (get-current-phase-with-mirror (-> self sync)) + ) ) (eval-path-curve! (-> self path) @@ -360,10 +368,12 @@ ) ) ((> (-> obj sync period) 0) - (set! (-> obj path-pos) (if (logtest? (-> obj fact options) 8) - (get-current-phase (-> obj sync)) - (get-current-phase-with-mirror (-> obj sync)) - ) + (set! + (-> obj path-pos) + (if (logtest? (-> obj fact options) (fact-options fop3)) + (get-current-phase (-> obj sync)) + (get-current-phase-with-mirror (-> obj sync)) + ) ) (eval-path-curve! (-> obj path) diff --git a/goal_src/levels/common/rigid-body.gc b/goal_src/levels/common/rigid-body.gc index f1aec1ae62..0e43f8ba58 100644 --- a/goal_src/levels/common/rigid-body.gc +++ b/goal_src/levels/common/rigid-body.gc @@ -945,7 +945,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -964,10 +970,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-overlay) s5-0) ) 0 diff --git a/goal_src/levels/common/sharkey.gc b/goal_src/levels/common/sharkey.gc index c778c8a574..2f72d7d3d2 100644 --- a/goal_src/levels/common/sharkey.gc +++ b/goal_src/levels/common/sharkey.gc @@ -1166,16 +1166,22 @@ nav-enemy-default-event-handler ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core offense) 2) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 (* 6144.0 (-> obj scale))) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj collide-info) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/darkcave/darkcave-obs.gc b/goal_src/levels/darkcave/darkcave-obs.gc index b1122e9370..ce82b6e047 100644 --- a/goal_src/levels/darkcave/darkcave-obs.gc +++ b/goal_src/levels/darkcave/darkcave-obs.gc @@ -298,10 +298,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 19251.2 0.0 22118.4) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) 4915.2) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (set! (-> obj link) (new 'process 'actor-link-info obj)) diff --git a/goal_src/levels/finalboss/final-door.gc b/goal_src/levels/finalboss/final-door.gc index 4c8fce91a5..f9aeac1f7c 100644 --- a/goal_src/levels/finalboss/final-door.gc +++ b/goal_src/levels/finalboss/final-door.gc @@ -211,7 +211,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new @@ -229,10 +235,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 45056.0 0.0 49152.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -469,15 +475,21 @@ ) (set! (-> s3-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s3-0 reaction) default-collision-reaction) - (set! (-> s3-0 no-reaction) nothing) + (set! + (-> s3-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 0)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 64)) (set! (-> s2-0 collide-with) (the-as uint 16)) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4915.2) + (set-root-prim! s3-0 s2-0) ) - (dummy-46 s3-0) (set! (-> s3-0 nav-radius) (* 0.75 (-> s3-0 root-prim local-sphere w))) - (dummy-50 s3-0) + (backup-collide-with-as s3-0) (set! (-> self root-override) s3-0) ) (set! (-> self root-override trans quad) (-> arg1 quad)) diff --git a/goal_src/levels/finalboss/green-eco-lurker.gc b/goal_src/levels/finalboss/green-eco-lurker.gc index a87465ea55..059461380d 100644 --- a/goal_src/levels/finalboss/green-eco-lurker.gc +++ b/goal_src/levels/finalboss/green-eco-lurker.gc @@ -499,13 +499,13 @@ :enter (behavior () (logior! (-> self draw status) 2) - (dummy-48 (-> self collide-info)) + (clear-collide-with-as (-> self collide-info)) (none) ) :exit (behavior () (set! (-> self draw status) (logand -3 (-> self draw status))) - (dummy-49 (-> self collide-info)) + (restore-collide-with-as (-> self collide-info)) (none) ) :trans @@ -1112,73 +1112,79 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 7) 0))) (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 transform-index) 4) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 -4096.0 20480.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 1) (set-vector! (-> s3-0 local-sphere) 0.0 2785.28 0.0 3276.8) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) (set! (-> s3-1 collide-with) (the-as uint 16)) (set! (-> s3-1 prim-core action) (the-as uint 1)) (set! (-> s3-1 prim-core offense) 1) (set-vector! (-> s3-1 local-sphere) 0.0 6615.04 0.0 3276.8) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) (set! (-> s3-2 collide-with) (the-as uint 16)) (set! (-> s3-2 prim-core action) (the-as uint 1)) (set! (-> s3-2 prim-core offense) 1) (set-vector! (-> s3-2 local-sphere) 0.0 10444.8 0.0 3276.8) + (append-prim s4-0 s3-2) ) - (dummy-28 s4-0) (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-3 prim-core collide-as) (the-as uint 256)) (set! (-> s3-3 collide-with) (the-as uint 16)) (set! (-> s3-3 prim-core offense) 2) (set! (-> s3-3 transform-index) 6) (set-vector! (-> s3-3 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s4-0 s3-3) ) - (dummy-28 s4-0) (let ((s3-4 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-4 prim-core collide-as) (the-as uint 256)) (set! (-> s3-4 collide-with) (the-as uint 16)) (set! (-> s3-4 prim-core offense) 2) (set! (-> s3-4 transform-index) 4) (set-vector! (-> s3-4 local-sphere) 0.0 -3276.8 -2048.0 5734.4) + (append-prim s4-0 s3-4) ) - (dummy-28 s4-0) (let ((s3-5 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-5 prim-core collide-as) (the-as uint 256)) (set! (-> s3-5 collide-with) (the-as uint 16)) (set! (-> s3-5 prim-core offense) 2) (set! (-> s3-5 transform-index) 12) (set-vector! (-> s3-5 local-sphere) 0.0 0.0 0.0 2457.6) + (append-prim s4-0 s3-5) ) - (dummy-28 s4-0) (let ((s3-6 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-6 prim-core collide-as) (the-as uint 256)) (set! (-> s3-6 collide-with) (the-as uint 16)) (set! (-> s3-6 prim-core offense) 2) (set! (-> s3-6 transform-index) 16) (set-vector! (-> s3-6 local-sphere) 0.0 0.0 0.0 2457.6) + (append-prim s4-0 s3-6) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) 8192.0) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) (set! (-> obj collide-info) s5-0) ) diff --git a/goal_src/levels/finalboss/light-eco.gc b/goal_src/levels/finalboss/light-eco.gc index d5c10b3491..34bee770f6 100644 --- a/goal_src/levels/finalboss/light-eco.gc +++ b/goal_src/levels/finalboss/light-eco.gc @@ -735,7 +735,7 @@ 'untrigger (-> self angle-bit) ) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (logior! (-> self draw status) 2) (set! (-> self state-time) (-> *display* base-frame-counter)) (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30) @@ -782,10 +782,10 @@ (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core offense) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 4096.0) + (set-root-prim! s4-2 s3-0) ) - (dummy-46 s4-2) (set! (-> s4-2 nav-radius) (* 0.75 (-> s4-2 root-prim local-sphere w))) - (dummy-50 s4-2) + (backup-collide-with-as s4-2) (set! (-> self root-override) s4-2) ) (set! (-> self root-override trans quad) (-> arg1 quad)) diff --git a/goal_src/levels/finalboss/robotboss-misc.gc b/goal_src/levels/finalboss/robotboss-misc.gc index dd8992228f..0f84299121 100644 --- a/goal_src/levels/finalboss/robotboss-misc.gc +++ b/goal_src/levels/finalboss/robotboss-misc.gc @@ -170,8 +170,8 @@ (none) ) -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 28] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 79] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 28] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 79] (defbehavior ecoclaw-handler ecoclaw ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) @@ -575,7 +575,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 4) 0))) (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) @@ -583,7 +589,7 @@ (set! (-> s3-0 prim-core action) (the-as uint 3)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 102400.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new @@ -601,8 +607,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 5) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 102400.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new @@ -620,8 +626,8 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 102400.0) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new @@ -639,8 +645,8 @@ (set! (-> s2-2 prim-core offense) 4) (set! (-> s2-2 transform-index) 7) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 102400.0) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) (let ((s2-3 (new @@ -658,11 +664,11 @@ (set! (-> s2-3 prim-core offense) 4) (set! (-> s2-3 transform-index) 6) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 102400.0) + (append-prim s3-0 s2-3) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/finalboss/robotboss-weapon.gc b/goal_src/levels/finalboss/robotboss-weapon.gc index e35613830e..a7d9d61b0f 100644 --- a/goal_src/levels/finalboss/robotboss-weapon.gc +++ b/goal_src/levels/finalboss/robotboss-weapon.gc @@ -778,7 +778,13 @@ ) (set! (-> s1-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s1-0 reaction) default-collision-reaction) - (set! (-> s1-0 no-reaction) nothing) + (set! + (-> s1-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s0-0 (new 'process 'collide-shape-prim-sphere s1-0 (the-as uint 0)))) (set! (-> s0-0 prim-core collide-as) (the-as uint 512)) (set! (-> s0-0 collide-with) (the-as uint 16)) @@ -786,10 +792,10 @@ (set! (-> s0-0 prim-core offense) 4) (set! (-> s0-0 transform-index) 3) (set-vector! (-> s0-0 local-sphere) 0.0 0.0 0.0 16384.0) + (set-root-prim! s1-0 s0-0) ) - (dummy-46 s1-0) (set! (-> s1-0 nav-radius) (* 0.75 (-> s1-0 root-prim local-sphere w))) - (dummy-50 s1-0) + (backup-collide-with-as s1-0) (set! (-> self root) s1-0) ) (set! (-> self root trans quad) (-> arg0 quad)) @@ -937,16 +943,22 @@ ) (set! (-> s2-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s2-0 reaction) default-collision-reaction) - (set! (-> s2-0 no-reaction) nothing) + (set! + (-> s2-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s1-0 (new 'process 'collide-shape-prim-sphere s2-0 (the-as uint 0)))) (set! (-> s1-0 prim-core collide-as) (the-as uint 256)) (set! (-> s1-0 collide-with) (the-as uint 16)) (set! (-> s1-0 prim-core offense) 4) (set-vector! (-> s1-0 local-sphere) 0.0 8192.0 0.0 8192.0) + (set-root-prim! s2-0 s1-0) ) - (dummy-46 s2-0) (set! (-> s2-0 nav-radius) (* 0.75 (-> s2-0 root-prim local-sphere w))) - (dummy-50 s2-0) + (backup-collide-with-as s2-0) (set! (-> self root) s2-0) ) (set! (-> self root trans quad) (-> arg0 quad)) @@ -1267,7 +1279,13 @@ ) (set! (-> s0-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s0-0 reaction) default-collision-reaction) - (set! (-> s0-0 no-reaction) nothing) + (set! + (-> s0-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (set! sv-16 (new 'process 'collide-shape-prim-sphere s0-0 (the-as uint 0))) (set! (-> sv-16 prim-core collide-as) (the-as uint 512)) (set! (-> sv-16 collide-with) (the-as uint 16)) @@ -1275,14 +1293,9 @@ (set! (-> sv-16 prim-core offense) 4) (set! (-> sv-16 transform-index) 4) (set-vector! (-> sv-16 local-sphere) 0.0 0.0 0.0 12288.0) - (let* ((a0-9 s0-0) - (t9-3 (method-of-object a0-9 dummy-46)) - ) - sv-16 - (t9-3 a0-9) - ) + (set-root-prim! s0-0 sv-16) (set! (-> s0-0 nav-radius) (* 0.75 (-> s0-0 root-prim local-sphere w))) - (dummy-50 s0-0) + (backup-collide-with-as s0-0) (set! (-> self root) s0-0) ) (set! (-> self root trans quad) (-> arg0 quad)) @@ -1408,17 +1421,23 @@ ) (set! (-> s2-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s2-0 reaction) default-collision-reaction) - (set! (-> s2-0 no-reaction) nothing) + (set! + (-> s2-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s1-0 (new 'process 'collide-shape-prim-sphere s2-0 (the-as uint 0)))) (set! (-> s1-0 prim-core collide-as) (the-as uint 512)) (set! (-> s1-0 collide-with) (the-as uint 16)) (set! (-> s1-0 prim-core action) (the-as uint 1)) (set! (-> s1-0 prim-core offense) 4) (set-vector! (-> s1-0 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s2-0 s1-0) ) - (dummy-46 s2-0) (set! (-> s2-0 nav-radius) (* 0.75 (-> s2-0 root-prim local-sphere w))) - (dummy-50 s2-0) + (backup-collide-with-as s2-0) (set! (-> self root) s2-0) ) (set! (-> self root trans quad) (-> arg0 quad)) diff --git a/goal_src/levels/finalboss/robotboss.gc b/goal_src/levels/finalboss/robotboss.gc index 54bc13db00..fb1026c31a 100644 --- a/goal_src/levels/finalboss/robotboss.gc +++ b/goal_src/levels/finalboss/robotboss.gc @@ -5628,7 +5628,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 19) 0))) (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) @@ -5636,7 +5642,7 @@ (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 368640.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new @@ -5654,8 +5660,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 7) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 32768.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new @@ -5673,8 +5679,8 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 6) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 57344.0) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new @@ -5692,8 +5698,8 @@ (set! (-> s2-2 prim-core offense) 4) (set! (-> s2-2 transform-index) 6) (set-vector! (-> s2-2 local-sphere) 0.0 -57344.0 61440.0 73728.0) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) (let ((s2-3 (new @@ -5711,8 +5717,8 @@ (set! (-> s2-3 prim-core offense) 4) (set! (-> s2-3 transform-index) 16) (set-vector! (-> s2-3 local-sphere) 0.0 -20480.0 69632.0 237568.0) + (append-prim s3-0 s2-3) ) - (dummy-28 s3-0) (let ((s2-4 (new @@ -5730,8 +5736,8 @@ (set! (-> s2-4 prim-core offense) 4) (set! (-> s2-4 transform-index) 14) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 81920.0) + (append-prim s3-0 s2-4) ) - (dummy-28 s3-0) (let ((s2-5 (new @@ -5749,8 +5755,8 @@ (set! (-> s2-5 prim-core offense) 4) (set! (-> s2-5 transform-index) 39) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 69632.0) + (append-prim s3-0 s2-5) ) - (dummy-28 s3-0) (let ((s2-6 (new @@ -5768,8 +5774,8 @@ (set! (-> s2-6 prim-core offense) 4) (set! (-> s2-6 transform-index) 31) (set-vector! (-> s2-6 local-sphere) 0.0 -57344.0 0.0 90112.0) + (append-prim s3-0 s2-6) ) - (dummy-28 s3-0) (let ((s2-7 (new @@ -5787,8 +5793,8 @@ (set! (-> s2-7 prim-core offense) 4) (set! (-> s2-7 transform-index) 30) (set-vector! (-> s2-7 local-sphere) 0.0 24576.0 0.0 81920.0) + (append-prim s3-0 s2-7) ) - (dummy-28 s3-0) (let ((s2-8 (new @@ -5806,8 +5812,8 @@ (set! (-> s2-8 prim-core offense) 4) (set! (-> s2-8 transform-index) 57) (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 81920.0) + (append-prim s3-0 s2-8) ) - (dummy-28 s3-0) (let ((s2-9 (new @@ -5825,8 +5831,8 @@ (set! (-> s2-9 prim-core offense) 4) (set! (-> s2-9 transform-index) 68) (set-vector! (-> s2-9 local-sphere) 0.0 0.0 0.0 49152.0) + (append-prim s3-0 s2-9) ) - (dummy-28 s3-0) (let ((s2-10 (new @@ -5844,8 +5850,8 @@ (set! (-> s2-10 prim-core offense) 4) (set! (-> s2-10 transform-index) 4) (set-vector! (-> s2-10 local-sphere) 0.0 24576.0 0.0 102400.0) + (append-prim s3-0 s2-10) ) - (dummy-28 s3-0) (let ((s2-11 (new @@ -5863,8 +5869,8 @@ (set! (-> s2-11 prim-core offense) 4) (set! (-> s2-11 transform-index) 77) (set-vector! (-> s2-11 local-sphere) 0.0 0.0 0.0 73728.0) + (append-prim s3-0 s2-11) ) - (dummy-28 s3-0) (let ((s2-12 (new @@ -5882,8 +5888,8 @@ (set! (-> s2-12 prim-core offense) 4) (set! (-> s2-12 transform-index) 75) (set-vector! (-> s2-12 local-sphere) 0.0 24576.0 0.0 81920.0) + (append-prim s3-0 s2-12) ) - (dummy-28 s3-0) (let ((s2-13 (new @@ -5901,8 +5907,8 @@ (set! (-> s2-13 prim-core offense) 4) (set! (-> s2-13 transform-index) 74) (set-vector! (-> s2-13 local-sphere) 0.0 40960.0 0.0 73728.0) + (append-prim s3-0 s2-13) ) - (dummy-28 s3-0) (let ((s2-14 (new @@ -5920,8 +5926,8 @@ (set! (-> s2-14 prim-core offense) 4) (set! (-> s2-14 transform-index) 73) (set-vector! (-> s2-14 local-sphere) 0.0 32768.0 0.0 61440.0) + (append-prim s3-0 s2-14) ) - (dummy-28 s3-0) (let ((s2-15 (new @@ -5939,8 +5945,8 @@ (set! (-> s2-15 prim-core offense) 4) (set! (-> s2-15 transform-index) 84) (set-vector! (-> s2-15 local-sphere) 0.0 40960.0 -8192.0 98304.0) + (append-prim s3-0 s2-15) ) - (dummy-28 s3-0) (let ((s2-16 (new @@ -5958,8 +5964,8 @@ (set! (-> s2-16 prim-core offense) 4) (set! (-> s2-16 transform-index) 83) (set-vector! (-> s2-16 local-sphere) 0.0 65536.0 0.0 73728.0) + (append-prim s3-0 s2-16) ) - (dummy-28 s3-0) (let ((s2-17 (new @@ -5977,8 +5983,8 @@ (set! (-> s2-17 prim-core offense) 4) (set! (-> s2-17 transform-index) 82) (set-vector! (-> s2-17 local-sphere) 0.0 32768.0 0.0 61440.0) + (append-prim s3-0 s2-17) ) - (dummy-28 s3-0) (let ((s2-18 (new @@ -5996,11 +6002,11 @@ (set! (-> s2-18 prim-core offense) 4) (set! (-> s2-18 transform-index) 3) (set-vector! (-> s2-18 local-sphere) 0.0 0.0 0.0 61440.0) + (append-prim s3-0 s2-18) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) 4096.0) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/firecanyon/firecanyon-obs.gc b/goal_src/levels/firecanyon/firecanyon-obs.gc index df54c89dfd..629eda0935 100644 --- a/goal_src/levels/firecanyon/firecanyon-obs.gc +++ b/goal_src/levels/firecanyon/firecanyon-obs.gc @@ -129,7 +129,7 @@ :code (behavior () (ja-channel-set! 0) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (ja-post) (sound-play-by-name (static-sound-name "cool-balloon") @@ -246,10 +246,10 @@ (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core offense) 4) (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 8192.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -508,7 +508,7 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 24576.0 0.0 40960.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) (set! (-> s2-0 collide-with) (the-as uint 16)) @@ -516,8 +516,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 8192.0 0.0 16384.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) (set! (-> s2-1 collide-with) (the-as uint 16)) @@ -525,8 +525,8 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 0.0 20480.0 0.0 16384.0) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) (set! (-> s2-2 collide-with) (the-as uint 16)) @@ -534,8 +534,8 @@ (set! (-> s2-2 prim-core offense) 4) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) 0.0 32768.0 0.0 16384.0) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) (set! (-> s2-3 collide-with) (the-as uint 16)) @@ -543,11 +543,11 @@ (set! (-> s2-3 prim-core offense) 4) (set! (-> s2-3 transform-index) 3) (set-vector! (-> s2-3 local-sphere) 0.0 45056.0 0.0 16384.0) + (append-prim s3-0 s2-3) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -817,7 +817,7 @@ :code (behavior () (ja-channel-set! 0) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (ja-post) (sound-play-by-name (static-sound-name "dcrate-break") @@ -915,10 +915,10 @@ (set! (-> s3-0 prim-core offense) 1) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 6553.6 0.0 13516.8) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/flut_common/flutflut.gc b/goal_src/levels/flut_common/flutflut.gc index 681fbd8934..a285b222ce 100644 --- a/goal_src/levels/flut_common/flutflut.gc +++ b/goal_src/levels/flut_common/flutflut.gc @@ -198,7 +198,7 @@ (-> self root-override trans) (new 'static 'vector :y 8192.0 :w 1.0) ) - 6 + (pickup-type fuel-cell) (the float (-> self entity extra perm task)) #f self @@ -487,15 +487,21 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set-vector! (-> s3-0 local-sphere) 0.0 6144.0 0.0 6144.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/jungle/bouncer.gc b/goal_src/levels/jungle/bouncer.gc index 7b02d50063..2b5a10b303 100644 --- a/goal_src/levels/jungle/bouncer.gc +++ b/goal_src/levels/jungle/bouncer.gc @@ -231,7 +231,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new @@ -249,10 +255,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 3072.0 0.0 6963.2) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/jungle/fisher-JUN.gc b/goal_src/levels/jungle/fisher-JUN.gc index aee36b2cfb..c7dfe54b96 100644 --- a/goal_src/levels/jungle/fisher-JUN.gc +++ b/goal_src/levels/jungle/fisher-JUN.gc @@ -2153,7 +2153,7 @@ (set-setting! *setting-control* self 'ambient-volume 'rel 50.0 0) (send-event *target* 'reset-pickup 'eco) (ja-channel-set! 0) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (let ((gp-0 (get-process *default-dead-pool* process #x4000))) (when gp-0 (let ((t9-5 (method-of-type process activate))) @@ -2206,7 +2206,7 @@ (set! (-> *camera-other-fov* data) (-> *camera-combiner* fov)) (set! (-> *camera-other-trans* quad) (-> *camera-combiner* trans quad)) (set! (-> *camera-other-root* quad) (-> self root-override trans quad)) - (dummy-49 (-> self root-override)) + (restore-collide-with-as (-> self root-override)) (send-event *camera* 'blend-from-as-fixed) (send-event *camera* 'change-state *camera-base-mode* 0) (send-event *camera* 'clear-entity) @@ -2777,7 +2777,7 @@ (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 4) (set-vector! (-> s4-0 local-sphere) 6144.0 0.0 4096.0 14336.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) (set! (-> s2-0 collide-with) (the-as uint 16)) @@ -2785,8 +2785,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) arg0) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 6553.6) + (append-prim s4-0 s2-0) ) - (dummy-28 s4-0) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) (set! (-> s3-1 collide-with) (the-as uint 16)) @@ -2794,11 +2794,11 @@ (set! (-> s3-1 prim-core offense) 4) (set! (-> s3-1 transform-index) 57) (set-vector! (-> s3-1 local-sphere) 0.0 4096.0 0.0 4096.0) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/goal_src/levels/jungle/hopper.gc b/goal_src/levels/jungle/hopper.gc index d2f991ae61..8ff2aed96f 100644 --- a/goal_src/levels/jungle/hopper.gc +++ b/goal_src/levels/jungle/hopper.gc @@ -647,32 +647,38 @@ nav-enemy-default-event-handler ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set-vector! (-> s4-0 local-sphere) 0.0 4096.0 0.0 10240.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 1) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 4096.0) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) (set! (-> s3-1 collide-with) (the-as uint 16)) (set! (-> s3-1 prim-core action) (the-as uint 1)) (set! (-> s3-1 prim-core offense) 1) (set-vector! (-> s3-1 local-sphere) 0.0 6963.2 0.0 4096.0) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) 6144.0) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) (set! (-> obj collide-info) s5-0) ) diff --git a/goal_src/levels/jungle/jungle-elevator.gc b/goal_src/levels/jungle/jungle-elevator.gc index f72f744fb1..f4b996fefa 100644 --- a/goal_src/levels/jungle/jungle-elevator.gc +++ b/goal_src/levels/jungle/jungle-elevator.gc @@ -72,10 +72,10 @@ ) ) (vector-! gp-0 (-> self root-override trans) s5-0) - ) - (when (< (-> self path-pos) 0.9) - (TODO-RENAME-28 (-> *target* control)) - (send-event *target* 'reset-height) + (when (< (-> self path-pos) 0.9) + (TODO-RENAME-28 (-> *target* control) gp-0) + (send-event *target* 'reset-height) + ) ) (if (and diff --git a/goal_src/levels/jungle/jungle-obs.gc b/goal_src/levels/jungle/jungle-obs.gc index 8ae05ed6f7..3e2a1736c3 100644 --- a/goal_src/levels/jungle/jungle-obs.gc +++ b/goal_src/levels/jungle/jungle-obs.gc @@ -169,7 +169,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new @@ -185,10 +191,10 @@ (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 transform-index) 6) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 19251.2) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -395,7 +401,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0))) (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) @@ -403,7 +415,7 @@ (set! (-> s3-0 prim-core action) (the-as uint 3)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 36044.8 0.0 47104.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new @@ -421,11 +433,11 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 39321.6 0.0 0.0 43417.6) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -555,14 +567,20 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 3)) (set-vector! (-> s3-0 local-sphere) 0.0 40960.0 0.0 49152.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new @@ -580,8 +598,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 36864.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new @@ -599,8 +617,8 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 40960.0 0.0 0.0 24576.0) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new @@ -618,11 +636,11 @@ (set! (-> s2-2 prim-core offense) 4) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) 40960.0 0.0 0.0 24576.0) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -762,7 +780,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -781,10 +805,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 24576.0 0.0 0.0 20480.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -1221,12 +1245,12 @@ (a0-2 (-> (the-as touching-shapes-entry gp-0) head)) (s5-0 (-> self root-override)) ) - (touched-prim + (get-touched-prim a0-2 s5-0 - (the-as touching-shapes-entry gp-0) + (the-as touching-prims-entry gp-0) ) - ((method-of-type touching-shapes-entry touched-shape) + ((method-of-type touching-shapes-entry get-touched-shape) (the-as touching-shapes-entry gp-0) s5-0 ) @@ -1336,7 +1360,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 16) 0))) @@ -1345,7 +1375,7 @@ (set! (-> s3-0 prim-core action) (the-as uint 3)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 81920.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new @@ -1363,8 +1393,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 5) (set-vector! (-> s2-0 local-sphere) -6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new @@ -1382,8 +1412,8 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 7) (set-vector! (-> s2-1 local-sphere) 6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new @@ -1401,8 +1431,8 @@ (set! (-> s2-2 prim-core offense) 4) (set! (-> s2-2 transform-index) 9) (set-vector! (-> s2-2 local-sphere) -6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) (let ((s2-3 (new @@ -1420,8 +1450,8 @@ (set! (-> s2-3 prim-core offense) 4) (set! (-> s2-3 transform-index) 11) (set-vector! (-> s2-3 local-sphere) 6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-3) ) - (dummy-28 s3-0) (let ((s2-4 (new @@ -1439,8 +1469,8 @@ (set! (-> s2-4 prim-core offense) 4) (set! (-> s2-4 transform-index) 13) (set-vector! (-> s2-4 local-sphere) -6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-4) ) - (dummy-28 s3-0) (let ((s2-5 (new @@ -1458,8 +1488,8 @@ (set! (-> s2-5 prim-core offense) 4) (set! (-> s2-5 transform-index) 15) (set-vector! (-> s2-5 local-sphere) 6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-5) ) - (dummy-28 s3-0) (let ((s2-6 (new @@ -1477,8 +1507,8 @@ (set! (-> s2-6 prim-core offense) 4) (set! (-> s2-6 transform-index) 17) (set-vector! (-> s2-6 local-sphere) -6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-6) ) - (dummy-28 s3-0) (let ((s2-7 (new @@ -1496,8 +1526,8 @@ (set! (-> s2-7 prim-core offense) 4) (set! (-> s2-7 transform-index) 19) (set-vector! (-> s2-7 local-sphere) 6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-7) ) - (dummy-28 s3-0) (let ((s2-8 (new @@ -1515,8 +1545,8 @@ (set! (-> s2-8 prim-core offense) 4) (set! (-> s2-8 transform-index) 4) (set-vector! (-> s2-8 local-sphere) -4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-8) ) - (dummy-28 s3-0) (let ((s2-9 (new @@ -1534,8 +1564,8 @@ (set! (-> s2-9 prim-core offense) 4) (set! (-> s2-9 transform-index) 6) (set-vector! (-> s2-9 local-sphere) 4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-9) ) - (dummy-28 s3-0) (let ((s2-10 (new @@ -1553,8 +1583,8 @@ (set! (-> s2-10 prim-core offense) 4) (set! (-> s2-10 transform-index) 8) (set-vector! (-> s2-10 local-sphere) -4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-10) ) - (dummy-28 s3-0) (let ((s2-11 (new @@ -1572,8 +1602,8 @@ (set! (-> s2-11 prim-core offense) 4) (set! (-> s2-11 transform-index) 10) (set-vector! (-> s2-11 local-sphere) 4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-11) ) - (dummy-28 s3-0) (let ((s2-12 (new @@ -1591,8 +1621,8 @@ (set! (-> s2-12 prim-core offense) 4) (set! (-> s2-12 transform-index) 12) (set-vector! (-> s2-12 local-sphere) -4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-12) ) - (dummy-28 s3-0) (let ((s2-13 (new @@ -1610,8 +1640,8 @@ (set! (-> s2-13 prim-core offense) 4) (set! (-> s2-13 transform-index) 14) (set-vector! (-> s2-13 local-sphere) 4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-13) ) - (dummy-28 s3-0) (let ((s2-14 (new @@ -1629,8 +1659,8 @@ (set! (-> s2-14 prim-core offense) 4) (set! (-> s2-14 transform-index) 16) (set-vector! (-> s2-14 local-sphere) -4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-14) ) - (dummy-28 s3-0) (let ((s2-15 (new @@ -1648,11 +1678,11 @@ (set! (-> s2-15 prim-core offense) 4) (set! (-> s2-15 transform-index) 18) (set-vector! (-> s2-15 local-sphere) 4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-15) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -1852,10 +1882,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -1925,10 +1955,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 2) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 14336.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 @@ -2025,14 +2055,20 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 3)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) -32768.0 -8192.0 0.0 32768.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new @@ -2050,8 +2086,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 8192.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new @@ -2069,12 +2105,12 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 36864.0 0.0 0.0 20480.0) - (dummy-28 s3-0) + (append-prim s3-0 s2-1) (set! (-> obj back-prim) s2-1) ) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/jungle/junglefish.gc b/goal_src/levels/jungle/junglefish.gc index edf4d4a65f..c6557b3b2d 100644 --- a/goal_src/levels/jungle/junglefish.gc +++ b/goal_src/levels/jungle/junglefish.gc @@ -597,17 +597,23 @@ nav-enemy-default-event-handler ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 1) (set-vector! (-> s3-0 local-sphere) 0.0 3276.8 0.0 2457.6) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj collide-info) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/jungle/junglesnake.gc b/goal_src/levels/jungle/junglesnake.gc index b1c8a05461..d97fb30eea 100644 --- a/goal_src/levels/jungle/junglesnake.gc +++ b/goal_src/levels/jungle/junglesnake.gc @@ -946,7 +946,7 @@ junglesnake-default-event-handler :code (behavior () (logclear! (-> self mask) (process-mask actor-pause)) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (ja-channel-push! 1 45) (let ((a0-3 (-> self skel root-channel 0))) (set! @@ -1114,7 +1114,7 @@ junglesnake-default-event-handler (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set-vector! (-> s3-0 local-sphere) 0.0 16384.0 0.0 30720.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) (set! (-> s2-0 collide-with) (the-as uint 16)) @@ -1122,8 +1122,8 @@ junglesnake-default-event-handler (set! (-> s2-0 prim-core offense) 1) (set! (-> s2-0 transform-index) 25) (set-vector! (-> s2-0 local-sphere) 0.0 2048.0 0.0 4096.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) (set! (-> s2-1 collide-with) (the-as uint 16)) @@ -1131,8 +1131,8 @@ junglesnake-default-event-handler (set! (-> s2-1 prim-core offense) 1) (set! (-> s2-1 transform-index) 21) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) (set! (-> s2-2 collide-with) (the-as uint 16)) @@ -1140,8 +1140,8 @@ junglesnake-default-event-handler (set! (-> s2-2 prim-core offense) 1) (set! (-> s2-2 transform-index) 20) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) (set! (-> s2-3 collide-with) (the-as uint 16)) @@ -1149,8 +1149,8 @@ junglesnake-default-event-handler (set! (-> s2-3 prim-core offense) 1) (set! (-> s2-3 transform-index) 19) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-3) ) - (dummy-28 s3-0) (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-4 prim-core collide-as) (the-as uint 256)) (set! (-> s2-4 collide-with) (the-as uint 16)) @@ -1158,8 +1158,8 @@ junglesnake-default-event-handler (set! (-> s2-4 prim-core offense) 1) (set! (-> s2-4 transform-index) 18) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-4) ) - (dummy-28 s3-0) (let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-5 prim-core collide-as) (the-as uint 256)) (set! (-> s2-5 collide-with) (the-as uint 16)) @@ -1167,8 +1167,8 @@ junglesnake-default-event-handler (set! (-> s2-5 prim-core offense) 1) (set! (-> s2-5 transform-index) 17) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-5) ) - (dummy-28 s3-0) (let ((s2-6 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-6 prim-core collide-as) (the-as uint 256)) (set! (-> s2-6 collide-with) (the-as uint 16)) @@ -1176,8 +1176,8 @@ junglesnake-default-event-handler (set! (-> s2-6 prim-core offense) 1) (set! (-> s2-6 transform-index) 16) (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-6) ) - (dummy-28 s3-0) (let ((s2-7 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-7 prim-core collide-as) (the-as uint 256)) (set! (-> s2-7 collide-with) (the-as uint 16)) @@ -1185,8 +1185,8 @@ junglesnake-default-event-handler (set! (-> s2-7 prim-core offense) 1) (set! (-> s2-7 transform-index) 15) (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-7) ) - (dummy-28 s3-0) (let ((s2-8 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-8 prim-core collide-as) (the-as uint 256)) (set! (-> s2-8 collide-with) (the-as uint 16)) @@ -1194,11 +1194,11 @@ junglesnake-default-event-handler (set! (-> s2-8 prim-core offense) 1) (set! (-> s2-8 transform-index) 14) (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-8) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/jungleb/aphid.gc b/goal_src/levels/jungleb/aphid.gc index 52b7d7d01d..527cf2828e 100644 --- a/goal_src/levels/jungleb/aphid.gc +++ b/goal_src/levels/jungleb/aphid.gc @@ -588,17 +588,23 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 1) (set-vector! (-> s4-0 local-sphere) 0.0 4096.0 0.0 4096.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) 6144.0) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) (set! (-> obj collide-info) s5-0) ) diff --git a/goal_src/levels/jungleb/jungleb-obs.gc b/goal_src/levels/jungleb/jungleb-obs.gc index 0197e6f6d0..9c6177641d 100644 --- a/goal_src/levels/jungleb/jungleb-obs.gc +++ b/goal_src/levels/jungleb/jungleb-obs.gc @@ -630,7 +630,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -649,10 +655,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 -7372.8 16384.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -675,7 +681,7 @@ (-> obj root-override trans) (new 'static 'vector :y 6144.0 :w 1.0) ) - 6 + (pickup-type fuel-cell) (the float (-> obj entity extra perm task)) #f obj @@ -724,10 +730,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/goal_src/levels/jungleb/plat-flip.gc b/goal_src/levels/jungleb/plat-flip.gc index e532ec36b0..eb484e04a5 100644 --- a/goal_src/levels/jungleb/plat-flip.gc +++ b/goal_src/levels/jungleb/plat-flip.gc @@ -213,7 +213,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -232,10 +238,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 11468.8) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/maincave/baby-spider.gc b/goal_src/levels/maincave/baby-spider.gc index 167d5891c8..0fd521405e 100644 --- a/goal_src/levels/maincave/baby-spider.gc +++ b/goal_src/levels/maincave/baby-spider.gc @@ -232,7 +232,7 @@ ) ) -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 7] (defbehavior baby-spider-default-event-handler baby-spider ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) @@ -1076,17 +1076,23 @@ baby-spider-default-event-handler ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 2) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 4096.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) 4096.0) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj collide-info) s5-0) ) 0 diff --git a/goal_src/levels/maincave/mother-spider-proj.gc b/goal_src/levels/maincave/mother-spider-proj.gc index 84ebc93778..3f0295cdb0 100644 --- a/goal_src/levels/maincave/mother-spider-proj.gc +++ b/goal_src/levels/maincave/mother-spider-proj.gc @@ -410,17 +410,23 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) projectile-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (the-as uint 1024)) (set! (-> s4-0 collide-with) (the-as uint 2973)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 1228.8) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) (set! (-> s5-0 event-self) 'touched) (set! (-> obj root-override) s5-0) diff --git a/goal_src/levels/maincave/spiderwebs.gc b/goal_src/levels/maincave/spiderwebs.gc index 80f44f2d1a..60f1aab3ca 100644 --- a/goal_src/levels/maincave/spiderwebs.gc +++ b/goal_src/levels/maincave/spiderwebs.gc @@ -242,7 +242,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new @@ -260,10 +266,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 14336.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) 13926.4) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/misty/bonelurker.gc b/goal_src/levels/misty/bonelurker.gc index 3a9d5813f7..1890780c18 100644 --- a/goal_src/levels/misty/bonelurker.gc +++ b/goal_src/levels/misty/bonelurker.gc @@ -1132,40 +1132,46 @@ nav-enemy-default-event-handler ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 3) 0))) (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set-vector! (-> s4-0 local-sphere) 0.0 10240.0 0.0 24576.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 1) (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 4096.0) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) (set! (-> s3-1 collide-with) (the-as uint 16)) (set! (-> s3-1 prim-core action) (the-as uint 1)) (set! (-> s3-1 prim-core offense) 1) (set-vector! (-> s3-1 local-sphere) 0.0 11468.8 0.0 4096.0) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) (set! (-> s3-2 collide-with) (the-as uint 16)) (set! (-> s3-2 prim-core offense) 2) (set! (-> s3-2 transform-index) 29) (set-vector! (-> s3-2 local-sphere) 0.0 4915.2 0.0 4915.2) + (append-prim s4-0 s3-2) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) 8192.0) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 1)) (set! (-> obj collide-info) s5-0) ) diff --git a/goal_src/levels/misty/misty-conveyor.gc b/goal_src/levels/misty/misty-conveyor.gc index 8624120c31..b6e6c1cf05 100644 --- a/goal_src/levels/misty/misty-conveyor.gc +++ b/goal_src/levels/misty/misty-conveyor.gc @@ -574,7 +574,7 @@ (logior! (-> v1-10 settings flags) 32) ) 0 - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (vector-normalize! gp-0 1.0) (set! (-> self state-time) (-> *display* base-frame-counter)) (while #t @@ -629,7 +629,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new @@ -646,10 +652,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 16384.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> self root-override) s4-0) ) (set! (-> self root-override trans quad) (-> arg0 root-override trans quad)) @@ -877,7 +883,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new @@ -895,10 +907,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> self root-override) s5-0) ) (set! (-> self path) (new 'process 'curve-control self 'path -1000000000.0)) diff --git a/goal_src/levels/misty/misty-teetertotter.gc b/goal_src/levels/misty/misty-teetertotter.gc index 8343b083d0..4464b4e837 100644 --- a/goal_src/levels/misty/misty-teetertotter.gc +++ b/goal_src/levels/misty/misty-teetertotter.gc @@ -287,14 +287,20 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 5) 0))) (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set-vector! (-> s3-0 local-sphere) 0.0 12288.0 0.0 36864.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) (set! (-> s2-0 collide-with) (the-as uint 16)) @@ -302,8 +308,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 5) (set-vector! (-> s2-0 local-sphere) -4096.0 2048.0 0.0 5120.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new @@ -321,8 +327,8 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 7) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 32768.0) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new @@ -340,8 +346,8 @@ (set! (-> s2-2 prim-core offense) 4) (set! (-> s2-2 transform-index) 4) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 32768.0) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) (let ((s2-3 (new @@ -359,8 +365,8 @@ (set! (-> s2-3 prim-core offense) 4) (set! (-> s2-3 transform-index) 3) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 32768.0) + (append-prim s3-0 s2-3) ) - (dummy-28 s3-0) (let ((s2-4 (new @@ -378,11 +384,11 @@ (set! (-> s2-4 prim-core offense) 4) (set! (-> s2-4 transform-index) 3) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 32768.0) + (append-prim s3-0 s2-4) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/misty/misty-warehouse.gc b/goal_src/levels/misty/misty-warehouse.gc index 8382d8ebf8..851ed02f9a 100644 --- a/goal_src/levels/misty/misty-warehouse.gc +++ b/goal_src/levels/misty/misty-warehouse.gc @@ -207,7 +207,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -226,10 +232,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 18432.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -296,10 +302,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) -12288.0 0.0 0.0 40960.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/goal_src/levels/misty/muse.gc b/goal_src/levels/misty/muse.gc index aae52ca3ae..fd78564a4b 100644 --- a/goal_src/levels/misty/muse.gc +++ b/goal_src/levels/misty/muse.gc @@ -760,14 +760,14 @@ nav-enemy-default-event-handler (set-blackout-frames 0) (ja-channel-set! 0) (ja-post) - (dummy-48 (-> self collide-info)) + (clear-collide-with-as (-> self collide-info)) (send-event *target* 'trans 'reset) (let ((gp-4 (ppointer->handle (birth-pickup-at-point (target-pos 0) - 6 + (pickup-type fuel-cell) (the float (-> self entity extra perm task)) #f self @@ -869,17 +869,23 @@ nav-enemy-default-event-handler ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 4) (set-vector! (-> s3-0 local-sphere) 0.0 2457.6 0.0 2457.6) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj collide-info) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/ogre/flying-lurker.gc b/goal_src/levels/ogre/flying-lurker.gc index ac61aca743..b95b820177 100644 --- a/goal_src/levels/ogre/flying-lurker.gc +++ b/goal_src/levels/ogre/flying-lurker.gc @@ -578,10 +578,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 -16384.0 40960.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/ogre/ogre-obs.gc b/goal_src/levels/ogre/ogre-obs.gc index 571f23baf5..8ceb8e44fe 100644 --- a/goal_src/levels/ogre/ogre-obs.gc +++ b/goal_src/levels/ogre/ogre-obs.gc @@ -473,7 +473,7 @@ :code (behavior ((arg0 symbol)) (ja-channel-set! 0) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (ja-post) (sound-play-by-name (static-sound-name "dcrate-break") @@ -603,10 +603,10 @@ (set! (-> s3-0 prim-core offense) 1) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 9216.0 0.0 14336.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -844,7 +844,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -863,10 +869,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 32768.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-overlay) s5-0) ) 0 @@ -1531,7 +1537,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 17) 0))) @@ -1540,7 +1552,7 @@ (set! (-> s3-0 prim-core action) (the-as uint 3)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 143360.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new @@ -1558,8 +1570,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new @@ -1577,8 +1589,8 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 5) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new @@ -1596,8 +1608,8 @@ (set! (-> s2-2 prim-core offense) 4) (set! (-> s2-2 transform-index) 6) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) (let ((s2-3 (new @@ -1615,8 +1627,8 @@ (set! (-> s2-3 prim-core offense) 4) (set! (-> s2-3 transform-index) 7) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-3) ) - (dummy-28 s3-0) (let ((s2-4 (new @@ -1634,8 +1646,8 @@ (set! (-> s2-4 prim-core offense) 4) (set! (-> s2-4 transform-index) 8) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-4) ) - (dummy-28 s3-0) (let ((s2-5 (new @@ -1653,8 +1665,8 @@ (set! (-> s2-5 prim-core offense) 4) (set! (-> s2-5 transform-index) 9) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-5) ) - (dummy-28 s3-0) (let ((s2-6 (new @@ -1672,8 +1684,8 @@ (set! (-> s2-6 prim-core offense) 4) (set! (-> s2-6 transform-index) 10) (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-6) ) - (dummy-28 s3-0) (let ((s2-7 (new @@ -1691,8 +1703,8 @@ (set! (-> s2-7 prim-core offense) 4) (set! (-> s2-7 transform-index) 11) (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-7) ) - (dummy-28 s3-0) (let ((s2-8 (new @@ -1710,8 +1722,8 @@ (set! (-> s2-8 prim-core offense) 4) (set! (-> s2-8 transform-index) 12) (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-8) ) - (dummy-28 s3-0) (let ((s2-9 (new @@ -1729,8 +1741,8 @@ (set! (-> s2-9 prim-core offense) 4) (set! (-> s2-9 transform-index) 13) (set-vector! (-> s2-9 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-9) ) - (dummy-28 s3-0) (let ((s2-10 (new @@ -1748,8 +1760,8 @@ (set! (-> s2-10 prim-core offense) 4) (set! (-> s2-10 transform-index) 14) (set-vector! (-> s2-10 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-10) ) - (dummy-28 s3-0) (let ((s2-11 (new @@ -1767,8 +1779,8 @@ (set! (-> s2-11 prim-core offense) 4) (set! (-> s2-11 transform-index) 15) (set-vector! (-> s2-11 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-11) ) - (dummy-28 s3-0) (let ((s2-12 (new @@ -1786,8 +1798,8 @@ (set! (-> s2-12 prim-core offense) 4) (set! (-> s2-12 transform-index) 16) (set-vector! (-> s2-12 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-12) ) - (dummy-28 s3-0) (let ((s2-13 (new @@ -1805,8 +1817,8 @@ (set! (-> s2-13 prim-core offense) 4) (set! (-> s2-13 transform-index) 17) (set-vector! (-> s2-13 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-13) ) - (dummy-28 s3-0) (let ((s2-14 (new @@ -1824,8 +1836,8 @@ (set! (-> s2-14 prim-core offense) 4) (set! (-> s2-14 transform-index) 18) (set-vector! (-> s2-14 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-14) ) - (dummy-28 s3-0) (let ((s2-15 (new @@ -1843,8 +1855,8 @@ (set! (-> s2-15 prim-core offense) 4) (set! (-> s2-15 transform-index) 19) (set-vector! (-> s2-15 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-15) ) - (dummy-28 s3-0) (let ((s2-16 (new @@ -1862,11 +1874,11 @@ (set! (-> s2-16 prim-core offense) 4) (set! (-> s2-16 transform-index) 20) (set-vector! (-> s2-16 local-sphere) 0.0 0.0 0.0 45056.0) + (append-prim s3-0 s2-16) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -1960,10 +1972,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 12288.0 32768.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -2397,10 +2409,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 22528.0 0.0 30720.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL.gc b/goal_src/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL.gc index aa07a844c7..57746dd39d 100644 --- a/goal_src/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL.gc +++ b/goal_src/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL.gc @@ -276,7 +276,13 @@ ) ) (set! (-> self control surf) *race-track-surface*) - (set! (-> self control reaction) racer-collision-reaction) + (set! + (-> self control reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + racer-collision-reaction + ) + ) (vector-reset! (-> self racer rot)) (set! (-> self racer rot y) (y-angle (-> self control))) (target-collide-set! 'racer 0.0) @@ -539,7 +545,7 @@ ) (or (< - (- (-> *display* base-frame-counter) (-> self control unknown-dword10)) + (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) 30 ) (< @@ -575,7 +581,7 @@ (zero? (logand (-> self control status) 1)) (or (>= - (- (-> *display* base-frame-counter) (-> self control unknown-dword10)) + (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (the-as int (* (-> *TARGET-bank* ground-timeout) 2)) ) (< 75 v1-28) @@ -1289,7 +1295,7 @@ ) (or (< - (- (-> *display* base-frame-counter) (-> self control unknown-dword10)) + (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) 60 ) (< @@ -1740,7 +1746,7 @@ (-> self control pat-ignore-mask) (new 'static 'pat-surface :skip #x1 :noentity #x1) ) - (dummy-49 (-> self control)) + (restore-collide-with-as (-> self control)) ((-> target-racing-start exit)) (target-exit) (set! (-> self racer stick-off) #f) @@ -2083,7 +2089,7 @@ (-> gp-5 ppointer) ) ) - (dummy-48 (-> self control)) + (clear-collide-with-as (-> self control)) (set! (-> self post-hook) target-no-ja-move-post) (ja-channel-set! 0) (ja-post) diff --git a/goal_src/levels/snow/snow-flutflut-obs.gc b/goal_src/levels/snow/snow-flutflut-obs.gc index 6293030d2d..ad5076e8f8 100644 --- a/goal_src/levels/snow/snow-flutflut-obs.gc +++ b/goal_src/levels/snow/snow-flutflut-obs.gc @@ -541,22 +541,28 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 3)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 17612.8) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) (set! (-> s2-0 collide-with) (the-as uint 16)) (set! (-> s2-0 prim-core offense) 0) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 10649.6) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new @@ -574,8 +580,8 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 2048.0 0.0 11468.8) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new @@ -593,11 +599,11 @@ (set! (-> s2-2 prim-core offense) 4) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 17612.8) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -667,7 +673,7 @@ (eval-path-curve! (-> obj path) (-> obj appear-trans-top) - (if (logtest? (-> obj fact options) 8) + (if (logtest? (-> obj fact options) (fact-options fop3)) (get-current-phase (-> obj sync)) (get-current-phase-with-mirror (-> obj sync)) ) @@ -794,7 +800,7 @@ :code (behavior () (logior! (-> self draw status) 2) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (set! (-> self root-override trans quad) (-> self appear-trans-top quad)) (transform-post) (logior! (-> self mask) (process-mask sleep-code)) @@ -819,7 +825,7 @@ (set! (-> self state-time) (-> *display* base-frame-counter)) (logclear! (-> self mask) (process-mask actor-pause)) (set! (-> self draw status) (logand -3 (-> self draw status))) - (dummy-49 (-> self root-override)) + (restore-collide-with-as (-> self root-override)) (set! (-> self basetrans quad) (-> self appear-trans-bottom quad)) (let ((s5-0 (new 'stack-no-clear 'vector)) (gp-0 (new 'stack-no-clear 'quaternion)) @@ -1369,7 +1375,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -1388,10 +1400,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -2048.0 0.0 16384.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 @@ -1417,7 +1429,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -1436,10 +1454,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -4096.0 0.0 27648.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 @@ -1491,7 +1509,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -1510,10 +1534,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 36864.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/goal_src/levels/snow/target-snowball.gc b/goal_src/levels/snow/target-snowball.gc index 9fe922c4a2..83463f174c 100644 --- a/goal_src/levels/snow/target-snowball.gc +++ b/goal_src/levels/snow/target-snowball.gc @@ -116,12 +116,7 @@ (reset-target-state #t) (set! (-> self control transv quad) (the-as uint128 0)) (set! (-> self control unknown-float01) 0.0) - (let* ((a0-6 (-> self control)) - (t9-3 (method-of-object a0-6 TODO-RENAME-28)) - ) - (new 'static 'vector :y 4096.0 :w 1.0) - (t9-3 a0-6) - ) + (TODO-RENAME-28 (-> self control) (new 'static 'vector :y 4096.0 :w 1.0)) (logior! (-> self control root-prim prim-core action) 4096) (ja-channel-set! 1) (let ((gp-1 (-> self skel root-channel 0))) diff --git a/goal_src/levels/snow/yeti.gc b/goal_src/levels/snow/yeti.gc index 82ac032839..4af840b4e6 100644 --- a/goal_src/levels/snow/yeti.gc +++ b/goal_src/levels/snow/yeti.gc @@ -1112,40 +1112,46 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 3) 0))) (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 12288.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 1) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 3072.0) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) (set! (-> s3-1 collide-with) (the-as uint 16)) (set! (-> s3-1 prim-core action) (the-as uint 1)) (set! (-> s3-1 prim-core offense) 1) (set-vector! (-> s3-1 local-sphere) 0.0 9830.4 0.0 3072.0) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) (set! (-> s3-2 collide-with) (the-as uint 16)) (set! (-> s3-2 prim-core offense) 2) (set! (-> s3-2 transform-index) 6) (set-vector! (-> s3-2 local-sphere) 0.0 0.0 0.0 2048.0) + (append-prim s4-0 s3-2) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) 6144.0) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) (set! (-> obj collide-info) s5-0) ) diff --git a/goal_src/levels/sunken/floating-launcher.gc b/goal_src/levels/sunken/floating-launcher.gc index 7b9e14a532..e2b15ca304 100644 --- a/goal_src/levels/sunken/floating-launcher.gc +++ b/goal_src/levels/sunken/floating-launcher.gc @@ -139,7 +139,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -158,10 +164,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 11468.8) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/sunken/qbert-plat.gc b/goal_src/levels/sunken/qbert-plat.gc index 55ea5e05ef..900b64aa7e 100644 --- a/goal_src/levels/sunken/qbert-plat.gc +++ b/goal_src/levels/sunken/qbert-plat.gc @@ -390,7 +390,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -409,10 +415,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -8192.0 0.0 18432.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-overlay) s5-0) ) 0 diff --git a/goal_src/levels/sunken/shover.gc b/goal_src/levels/sunken/shover.gc index 1e1c9ba191..a7cc089045 100644 --- a/goal_src/levels/sunken/shover.gc +++ b/goal_src/levels/sunken/shover.gc @@ -39,11 +39,11 @@ (('touch 'attack) (when (= (-> arg0 type) target) (when - ((method-of-type touching-shapes-entry dummy-13) + ((method-of-type touching-shapes-entry prims-touching-action?) (the-as touching-shapes-entry (-> arg3 param 0)) (-> *target* control) - 1 - 0 + (the-as uint 1) + (the-as uint 0) ) (let ((s4-0 (new 'stack 'attack-info))) (dummy-41 (-> self root-override) s4-0 (-> self shove-up)) @@ -59,7 +59,7 @@ (= (-> *target* control unknown-surface00 mode) 'air) (>= (+ (-> *display* base-frame-counter) -60) - (-> *target* control unknown-dword10) + (-> *target* control unknown-dword11) ) (< 0.75 (-> *target* control poly-normal y)) ) @@ -133,10 +133,10 @@ (set! (-> s3-1 prim-core offense) 4) (set! (-> s3-1 transform-index) 0) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 53248.0) + (set-root-prim! s4-0 s3-1) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/sunken/square-platform.gc b/goal_src/levels/sunken/square-platform.gc index 0f626e154b..10746deb4e 100644 --- a/goal_src/levels/sunken/square-platform.gc +++ b/goal_src/levels/sunken/square-platform.gc @@ -572,7 +572,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -591,10 +597,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 -24576.0 0.0 32768.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/sunken/steam-cap.gc b/goal_src/levels/sunken/steam-cap.gc index 50621b7485..d345caa0a1 100644 --- a/goal_src/levels/sunken/steam-cap.gc +++ b/goal_src/levels/sunken/steam-cap.gc @@ -884,7 +884,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -903,10 +909,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (set! (-> obj do-burst?) #f) diff --git a/goal_src/levels/sunken/sun-iris-door.gc b/goal_src/levels/sunken/sun-iris-door.gc index cdb45db5da..c0e6c65307 100644 --- a/goal_src/levels/sunken/sun-iris-door.gc +++ b/goal_src/levels/sunken/sun-iris-door.gc @@ -311,13 +311,13 @@ :enter (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (logior! (-> self draw status) 2) (none) ) :exit (behavior () - (dummy-49 (-> self root-override)) + (restore-collide-with-as (-> self root-override)) (set! (-> self draw status) (logand -3 (-> self draw status))) (none) ) @@ -458,10 +458,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -543,10 +543,10 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 0) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 24576.0) + (set-root-prim! s3-0 s2-0) ) - (dummy-46 s3-0) (set! (-> s3-0 nav-radius) (* 0.75 (-> s3-0 root-prim local-sphere w))) - (dummy-50 s3-0) + (backup-collide-with-as s3-0) (set! (-> self root-override) s3-0) ) (set! (-> self root-override trans quad) (-> arg0 quad)) diff --git a/goal_src/levels/sunken/sunken-obs.gc b/goal_src/levels/sunken/sunken-obs.gc index ccad3c9e14..30d4791c15 100644 --- a/goal_src/levels/sunken/sunken-obs.gc +++ b/goal_src/levels/sunken/sunken-obs.gc @@ -121,7 +121,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -140,10 +146,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 57344.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/goal_src/levels/sunken/wall-plat.gc b/goal_src/levels/sunken/wall-plat.gc index c56f032e75..b13764ad9c 100644 --- a/goal_src/levels/sunken/wall-plat.gc +++ b/goal_src/levels/sunken/wall-plat.gc @@ -51,7 +51,7 @@ (set! (-> self extended-amount) 0.0) (TODO-RENAME-30 (-> self root-override) (-> self in-trans)) (transform-post) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (while #t (logior! (-> self mask) (process-mask sleep-code)) (suspend) @@ -88,7 +88,7 @@ (the-as (function none :behavior wall-plat) rider-trans) :code (behavior () - (dummy-49 (-> self root-override)) + (restore-collide-with-as (-> self root-override)) (set! (-> self state-time) (-> *display* base-frame-counter)) (while #t (set! @@ -234,11 +234,11 @@ (cond ((= f30-0 0.0) (set! gp-0 #f) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) ) ((= f30-0 1.0) (set! gp-0 #f) - (dummy-49 (-> self root-override)) + (restore-collide-with-as (-> self root-override)) ) (else (when (not gp-0) @@ -253,7 +253,7 @@ ) (set! gp-0 #t) ) - (dummy-49 (-> self root-override)) + (restore-collide-with-as (-> self root-override)) ) ) ) @@ -276,7 +276,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -295,10 +301,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 2) (set-vector! (-> s3-0 local-sphere) 0.0 -6144.0 -12288.0 19456.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/sunken/wedge-plats.gc b/goal_src/levels/sunken/wedge-plats.gc index 8d3e13a189..8aeecc206e 100644 --- a/goal_src/levels/sunken/wedge-plats.gc +++ b/goal_src/levels/sunken/wedge-plats.gc @@ -319,7 +319,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -338,10 +344,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -583,7 +589,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -602,10 +614,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 32768.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/sunken/whirlpool.gc b/goal_src/levels/sunken/whirlpool.gc index 2b3879b905..f56be292c1 100644 --- a/goal_src/levels/sunken/whirlpool.gc +++ b/goal_src/levels/sunken/whirlpool.gc @@ -439,10 +439,10 @@ (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 4) (set-vector! (-> s3-0 local-sphere) 0.0 -819.2 0.0 11468.8) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/swamp/billy.gc b/goal_src/levels/swamp/billy.gc index cd0ddfb63b..fa3b113a2e 100644 --- a/goal_src/levels/swamp/billy.gc +++ b/goal_src/levels/swamp/billy.gc @@ -5,10 +5,6 @@ ;; name in dgo: billy ;; dgos: L1, SWA -(define-extern *billy-sg* skeleton-group) -(define-extern *billy-sidekick-sg* skeleton-group) -(define-extern *farthy-snack-sg* skeleton-group) - (declare-type billy-snack process-drawable) ;; DECOMP BEGINS @@ -1599,7 +1595,7 @@ (behavior () (push-setting! *setting-control* self 'music 'danger 0.0 0) (ja-channel-set! 0) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (init! (-> self query) (the-as string #f) @@ -1717,7 +1713,7 @@ ) :exit (behavior () - (dummy-49 (-> self root-override)) + (restore-collide-with-as (-> self root-override)) (restore-load-state-and-cleanup *load-state*) (set! (-> *ACTOR-bank* birth-max) 1000) (clear-pending-settings-from-process *setting-control* self 'music) diff --git a/goal_src/levels/swamp/swamp-bat.gc b/goal_src/levels/swamp/swamp-bat.gc index e416e62bd2..9a5b8782ae 100644 --- a/goal_src/levels/swamp/swamp-bat.gc +++ b/goal_src/levels/swamp/swamp-bat.gc @@ -641,13 +641,19 @@ swamp-bat-slave-event-handler ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 6144.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) (set! (-> s2-0 collide-with) (the-as uint 16)) @@ -655,11 +661,11 @@ swamp-bat-slave-event-handler (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4096.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> self root-override) s4-0) ) (set! (-> self root-override trans quad) (-> arg0 root-override trans quad)) @@ -887,19 +893,12 @@ swamp-bat-slave-event-handler (defmethod init-from-entity! swamp-bat ((obj swamp-bat) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) - (set-vector! - (-> - (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)) - local-sphere - ) - 0.0 - 0.0 - 0.0 - 0.0 + (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 0.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/swamp/swamp-obs.gc b/goal_src/levels/swamp/swamp-obs.gc index fecb87ad5a..a701b68d5d 100644 --- a/goal_src/levels/swamp/swamp-obs.gc +++ b/goal_src/levels/swamp/swamp-obs.gc @@ -634,7 +634,7 @@ (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set-vector! (-> s4-0 local-sphere) 0.0 20480.0 0.0 24576.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new @@ -652,8 +652,8 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 24576.0) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) (let ((s3-1 (new @@ -671,11 +671,11 @@ (set! (-> s3-1 prim-core offense) 4) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 20480.0 0.0 24576.0) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) (process-drawable-from-entity! obj (the-as entity-actor (-> obj entity))) @@ -847,7 +847,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -866,10 +872,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 40960.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -1114,10 +1120,10 @@ 0.0 (* 4096.0 (* 3.0 f30-0)) ) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -1147,7 +1153,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -1166,10 +1178,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> self root) s5-0) ) (set! (-> self root trans quad) (-> arg0 quad)) @@ -1352,7 +1364,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -1371,10 +1389,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-overlay) s5-0) ) 0 diff --git a/goal_src/levels/swamp/swamp-rat-nest.gc b/goal_src/levels/swamp/swamp-rat-nest.gc index b17e368984..999d90be17 100644 --- a/goal_src/levels/swamp/swamp-rat-nest.gc +++ b/goal_src/levels/swamp/swamp-rat-nest.gc @@ -1567,7 +1567,7 @@ swamp-rat-nest-default-event-handler (behavior () (process-entity-status! self (entity-perm-status complete) #t) (process-entity-status! self (entity-perm-status dead) #t) - (TODO-RENAME-9 + (drop-pickup (-> self fact-override) #t *entity-pool* @@ -1688,10 +1688,10 @@ swamp-rat-nest-default-event-handler (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 12288.0 0.0 20480.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) (initialize-skeleton obj *swamp-rat-nest-dummy-a-sg* '()) @@ -1718,10 +1718,10 @@ swamp-rat-nest-default-event-handler (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 12288.0 0.0 16384.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) (initialize-skeleton obj *swamp-rat-nest-dummy-b-sg* '()) @@ -1748,10 +1748,10 @@ swamp-rat-nest-default-event-handler (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 12288.0 0.0 12288.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) (initialize-skeleton obj *swamp-rat-nest-dummy-c-sg* '()) diff --git a/goal_src/levels/swamp/swamp-rat.gc b/goal_src/levels/swamp/swamp-rat.gc index da12392145..03344fea64 100644 --- a/goal_src/levels/swamp/swamp-rat.gc +++ b/goal_src/levels/swamp/swamp-rat.gc @@ -69,7 +69,7 @@ ) ) -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 7] (defbehavior swamp-rat-default-event-handler swamp-rat ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) @@ -818,17 +818,23 @@ swamp-rat-default-event-handler ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 2) (set-vector! (-> s4-0 local-sphere) 0.0 3686.4001 0.0 3686.4001) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj collide-info) s5-0) ) 0 diff --git a/goal_src/levels/village1/farmer.gc b/goal_src/levels/village1/farmer.gc index 5b35928b48..937b2eb1d1 100644 --- a/goal_src/levels/village1/farmer.gc +++ b/goal_src/levels/village1/farmer.gc @@ -152,26 +152,26 @@ (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 4) (set-vector! (-> s4-0 local-sphere) 4096.0 8192.0 -4096.0 12288.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 4) (set-vector! (-> s3-0 local-sphere) 4096.0 6144.0 -4096.0 8192.0) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) (set! (-> s3-1 collide-with) (the-as uint 16)) (set! (-> s3-1 prim-core action) (the-as uint 1)) (set! (-> s3-1 prim-core offense) 4) (set-vector! (-> s3-1 local-sphere) 4096.0 10240.0 -4096.0 8192.0) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/goal_src/levels/village1/fishermans-boat.gc b/goal_src/levels/village1/fishermans-boat.gc index f9e85e8a90..93d3e3338b 100644 --- a/goal_src/levels/village1/fishermans-boat.gc +++ b/goal_src/levels/village1/fishermans-boat.gc @@ -1841,7 +1841,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 1) 0))) (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) @@ -1849,7 +1855,7 @@ (set! (-> s4-0 prim-core action) (the-as uint 3)) (set! (-> s4-0 prim-core offense) 4) (set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 61440.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new @@ -1867,11 +1873,11 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 61440.0) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-overlay) s5-0) ) 0 diff --git a/goal_src/levels/village1/sage.gc b/goal_src/levels/village1/sage.gc index 0a98fed146..83048104fd 100644 --- a/goal_src/levels/village1/sage.gc +++ b/goal_src/levels/village1/sage.gc @@ -1339,7 +1339,7 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) arg0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 10240.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) (set! (-> s2-0 collide-with) (the-as uint 16)) @@ -1347,8 +1347,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) arg0) (set-vector! (-> s2-0 local-sphere) 0.0 -2048.0 0.0 5324.8) + (append-prim s4-0 s2-0) ) - (dummy-28 s4-0) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) (set! (-> s2-1 collide-with) (the-as uint 16)) @@ -1356,11 +1356,11 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) arg0) (set-vector! (-> s2-1 local-sphere) 0.0 2048.0 0.0 5324.8) + (append-prim s4-0 s2-1) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/goal_src/levels/village1/village-obs-VI1.gc b/goal_src/levels/village1/village-obs-VI1.gc index d19ad50406..0d9d020f1f 100644 --- a/goal_src/levels/village1/village-obs-VI1.gc +++ b/goal_src/levels/village1/village-obs-VI1.gc @@ -980,14 +980,20 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core offense) 2) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 2457.6) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj collide-info) s5-0) ) 0 diff --git a/goal_src/levels/village1/yakow.gc b/goal_src/levels/village1/yakow.gc index e2a94baddb..631ce735d7 100644 --- a/goal_src/levels/village1/yakow.gc +++ b/goal_src/levels/village1/yakow.gc @@ -159,8 +159,8 @@ :shadow 3 ) -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 52] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 54] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 52] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 54] (defbehavior yakow-default-event-handler yakow ((arg0 process-drawable) (arg1 int) (arg2 symbol) (arg3 event-message-block)) @@ -193,7 +193,7 @@ (dummy-55 (-> self root-override) arg0 - (-> arg3 param 0) + (the-as touching-shapes-entry (-> arg3 param 0)) 0.7 6144.0 16384.0 @@ -1365,7 +1365,7 @@ yakow-default-event-handler (set! (-> v1-1 prim-core collide-as) (the-as uint 0)) ) 0 - (TODO-RENAME-9 + (drop-pickup (-> self fact-override) #t *entity-pool* @@ -1386,17 +1386,23 @@ yakow-default-event-handler ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 3073)) (set! (-> s3-0 prim-core offense) 4) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 10240.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/village2/sunken-elevator.gc b/goal_src/levels/village2/sunken-elevator.gc index d72d5c5293..d69baf7ebf 100644 --- a/goal_src/levels/village2/sunken-elevator.gc +++ b/goal_src/levels/village2/sunken-elevator.gc @@ -206,10 +206,10 @@ ) ) (vector-! gp-0 (-> self root-override trans) s5-0) - ) - (when (< (-> self path-pos) 0.9) - (TODO-RENAME-28 (-> *target* control)) - (send-event *target* 'reset-height) + (when (< (-> self path-pos) 0.9) + (TODO-RENAME-28 (-> *target* control) gp-0) + (send-event *target* 'reset-height) + ) ) (none) ) diff --git a/goal_src/levels/village2/village2-obs.gc b/goal_src/levels/village2/village2-obs.gc index 2aacc0954f..3b163e562f 100644 --- a/goal_src/levels/village2/village2-obs.gc +++ b/goal_src/levels/village2/village2-obs.gc @@ -218,13 +218,13 @@ :enter (behavior () (logior! (-> self draw status) 2) - (dummy-48 (-> self root-overlay)) + (clear-collide-with-as (-> self root-overlay)) (none) ) :exit (behavior () (set! (-> self draw status) (logand -3 (-> self draw status))) - (dummy-49 (-> self root-overlay)) + (restore-collide-with-as (-> self root-overlay)) (none) ) :trans @@ -436,7 +436,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -455,10 +461,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 18432.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-overlay) s5-0) ) 0 @@ -508,7 +514,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -527,10 +539,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 25395.2) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-overlay) s5-0) ) 0 @@ -1149,7 +1161,7 @@ (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 4) (set-vector! (-> s3-0 local-sphere) -24576.0 18432.0 0.0 49152.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new @@ -1167,8 +1179,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 24576.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new @@ -1186,11 +1198,11 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 -24576.0 49152.0) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -1370,7 +1382,16 @@ (set! (-> a0-3 quad) (-> self root trans quad)) (set! (-> a0-3 y) (+ 67584.0 (-> a0-3 y))) (let - ((v1-12 (birth-pickup-at-point a0-3 6 47.0 #f self (the-as fact-info #f))) + ((v1-12 + (birth-pickup-at-point + a0-3 + (pickup-type fuel-cell) + 47.0 + #f + self + (the-as fact-info #f) + ) + ) ) (set! (-> self fcell-handle) (ppointer->handle v1-12)) (send-event (ppointer->process v1-12) 'collide-shape #f) @@ -2577,18 +2598,18 @@ (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set-vector! (-> s3-0 local-sphere) 0.0 40960.0 0.0 40960.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) (set! (-> s2-0 collide-with) (the-as uint 16)) (set! (-> s2-0 prim-core action) (the-as uint 1)) (set! (-> s2-0 prim-core offense) 1) (set-vector! (-> s2-0 local-sphere) 0.0 34816.0 0.0 14336.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/village2/warrior.gc b/goal_src/levels/village2/warrior.gc index 67068a0263..cf7342b6e2 100644 --- a/goal_src/levels/village2/warrior.gc +++ b/goal_src/levels/village2/warrior.gc @@ -250,26 +250,26 @@ (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 4) (set-vector! (-> s4-0 local-sphere) -3072.0 8192.0 0.0 11264.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 4) (set-vector! (-> s3-0 local-sphere) -2048.0 9216.0 0.0 8192.0) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) (set! (-> s3-1 collide-with) (the-as uint 16)) (set! (-> s3-1 prim-core action) (the-as uint 1)) (set! (-> s3-1 prim-core offense) 4) (set-vector! (-> s3-1 local-sphere) 0.0 2048.0 0.0 4096.0) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/goalc/compiler/Compiler.h b/goalc/compiler/Compiler.h index c42f14f9b1..21fb5fa658 100644 --- a/goalc/compiler/Compiler.h +++ b/goalc/compiler/Compiler.h @@ -396,6 +396,15 @@ class Compiler { } } + void compile_state_handler_set(StructureType* state_type_info, + RegVal* state_object, + const std::string& name, + goos::Arguments& args, + const goos::Object& form, + Env* env, + Val*& code_val, + Val*& enter_val); + public: // Asm Val* compile_rlet(const goos::Object& form, const goos::Object& rest, Env* env); diff --git a/goalc/compiler/compilation/State.cpp b/goalc/compiler/compilation/State.cpp index 2bdfd95a2d..f68f7fba6b 100644 --- a/goalc/compiler/compilation/State.cpp +++ b/goalc/compiler/compilation/State.cpp @@ -1,6 +1,33 @@ #include "goalc/compiler/Compiler.h" #include "common/type_system/state.h" +/*! + * Helper func for compiling the set!'s within defstates + */ +void Compiler::compile_state_handler_set(StructureType* state_type_info, + RegVal* state_object, + const std::string& name, + goos::Arguments& args, + const goos::Object& form, + Env* env, + Val*& code_val, + Val*& enter_val) { + // do not set state handler field if handler is #f, that's already the value in the static data + // but what if it's ACTUALLY setting it to #f??? see crate-buzzer wait + auto& arg = args.named.at(name); + if (!(arg.is_symbol() && arg.as_symbol()->name == "*no-state*")) { + auto field = get_field_of_structure(state_type_info, state_object, name, env); + auto value = compile_error_guard(arg, env); + // we need to save these for typechecking later + if (name == "code") { + code_val = value; + } else if (name == "enter") { + enter_val = value; + } + do_set(form, field, value->to_gpr(form, env), value, env); + } +} + /*! * The define-state-hook compiler form is used from a macro in gstate.gc. * Args: @@ -27,8 +54,11 @@ Val* Compiler::compile_define_state_hook(const goos::Object& form, {"code", {true, {}}}, }); + Val* code_value = NULL; + Val* enter_value = NULL; + // check parent - auto state_parent = args.unnamed.at(1).as_symbol()->name; + auto& state_parent = args.unnamed.at(1).as_symbol()->name; auto state_parent_type = m_ts.make_typespec(state_parent); if (!m_ts.tc(TypeSpec("process"), state_parent_type)) { throw_compiler_error(form, "define-state got a type {} which is not a child of process", @@ -46,24 +76,26 @@ Val* Compiler::compile_define_state_hook(const goos::Object& form, // set the easy ones for (auto name : {"exit", "trans", "post", "event"}) { - auto field = get_field_of_structure(state_type_info, state_object, name, env); - auto value = compile_error_guard(args.named.at(name), env); - do_set(form, field, value->to_gpr(form, env), value, env); + compile_state_handler_set(state_type_info, state_object, name, args, form, env, code_value, + enter_value); } - auto enter_field = get_field_of_structure(state_type_info, state_object, "enter", env); - auto enter_value = compile_error_guard(args.named.at("enter"), env); - do_set(form, enter_field, enter_value->to_gpr(form, env), enter_value, env); + compile_state_handler_set(state_type_info, state_object, "enter", args, form, env, code_value, + enter_value); + compile_state_handler_set(state_type_info, state_object, "code", args, form, env, code_value, + enter_value); - auto code_field = get_field_of_structure(state_type_info, state_object, "code", env); - auto code_value = compile_error_guard(args.named.at("code"), env); - do_set(form, code_field, code_value->to_gpr(form, env), code_value, env); + // typecheck state + std::optional state_type; + if (code_value && enter_value) { + state_type = get_state_type_from_enter_and_code(enter_value->type(), code_value->type(), + state_parent_type, m_ts); + } else if (code_value || enter_value) { + state_type = get_state_type_from_func(code_value ? code_value->type() : enter_value->type(), + state_parent_type); + } - // state name - auto state_type = get_state_type_from_enter_and_code(enter_value->type(), code_value->type(), - state_parent_type, m_ts); - - auto state_name = args.unnamed.at(0).as_symbol()->name; + auto& state_name = args.unnamed.at(0).as_symbol()->name; auto existing_var = m_symbol_types.find(state_name); TypeSpec type_to_use; @@ -118,8 +150,11 @@ Val* Compiler::compile_define_virtual_state_hook(const goos::Object& form, {"code", {true, {}}}, }); + Val* code_value = NULL; + Val* enter_value = NULL; + // check parent - auto state_parent = args.unnamed.at(1).as_symbol()->name; + auto& state_parent = args.unnamed.at(1).as_symbol()->name; auto state_parent_type = m_ts.make_typespec(state_parent); if (!m_ts.tc(TypeSpec("process"), state_parent_type)) { throw_compiler_error(form, "define-state got a type {} which is not a child of process", @@ -133,27 +168,7 @@ Val* Compiler::compile_define_virtual_state_hook(const goos::Object& form, state_object->type().print()); } - auto state_type_info = m_ts.get_type_of_type("state"); - - // set the easy ones - for (auto name : {"exit", "trans", "post", "event"}) { - auto field = get_field_of_structure(state_type_info, state_object, name, env); - auto value = compile_error_guard(args.named.at(name), env); - do_set(form, field, value->to_gpr(form, env), value, env); - } - - auto enter_field = get_field_of_structure(state_type_info, state_object, "enter", env); - auto enter_value = compile_error_guard(args.named.at("enter"), env); - do_set(form, enter_field, enter_value->to_gpr(form, env), enter_value, env); - - auto code_field = get_field_of_structure(state_type_info, state_object, "code", env); - auto code_value = compile_error_guard(args.named.at("code"), env); - do_set(form, code_field, code_value->to_gpr(form, env), code_value, env); - - auto state_type = get_state_type_from_enter_and_code(enter_value->type(), code_value->type(), - state_parent_type, m_ts); - - auto state_name = args.unnamed.at(0).as_symbol()->name; + auto& state_name = args.unnamed.at(0).as_symbol()->name; MethodInfo child_method_info; if (!m_ts.try_lookup_method(state_parent, state_name, &child_method_info)) { @@ -162,16 +177,6 @@ Val* Compiler::compile_define_virtual_state_hook(const goos::Object& form, state_name, state_parent); } - if (state_type) { - if (state_type != - child_method_info.type.substitute_for_method_call(state_parent_type.base_type())) { - throw_compiler_error( - form, "Virtual state {} of {} was declared as {}, but got {}. First declared in type {}.", - state_name, state_parent, child_method_info.type.print(), state_type->print(), - child_method_info.defined_in_type); - } - } - MethodInfo parent_method_info; auto parent_of_parent_type = m_ts.lookup_type(state_parent)->get_parent(); if (m_ts.try_lookup_method(parent_of_parent_type, state_name, &parent_method_info)) { @@ -191,6 +196,39 @@ Val* Compiler::compile_define_virtual_state_hook(const goos::Object& form, auto method_id = compile_integer(child_method_info.id, env)->to_gpr(form, env); compile_real_function_call(form, method_set_func, {type_obj, method_id, state_object}, env); + auto state_type_info = m_ts.get_type_of_type("state"); + + // set the easy ones + for (auto name : {"exit", "trans", "post", "event"}) { + compile_state_handler_set(state_type_info, state_object, name, args, form, env, code_value, + enter_value); + } + + compile_state_handler_set(state_type_info, state_object, "enter", args, form, env, code_value, + enter_value); + compile_state_handler_set(state_type_info, state_object, "code", args, form, env, code_value, + enter_value); + + // typecheck state + std::optional state_type; + if (code_value && enter_value) { + state_type = get_state_type_from_enter_and_code(enter_value->type(), code_value->type(), + state_parent_type, m_ts); + } else if (code_value || enter_value) { + state_type = get_state_type_from_func(code_value ? code_value->type() : enter_value->type(), + state_parent_type); + } + + if (state_type) { + if (state_type != + child_method_info.type.substitute_for_method_call(state_parent_type.base_type())) { + throw_compiler_error( + form, "Virtual state {} of {} was declared as {}, but got {}. First declared in type {}.", + state_name, state_parent, child_method_info.type.print(), state_type->print(), + child_method_info.defined_in_type); + } + } + return get_none(); } @@ -254,4 +292,4 @@ Val* Compiler::compile_go_hook(const goos::Object& form, const goos::Object& res // typechecking here will make sure the go is possible. return compile_real_function_call(form, enter_state_func->to_gpr(form, env), function_arguments, env); -} \ No newline at end of file +} diff --git a/goalc/compiler/compilation/Type.cpp b/goalc/compiler/compilation/Type.cpp index 8e477febb5..5cc342620c 100644 --- a/goalc/compiler/compilation/Type.cpp +++ b/goalc/compiler/compilation/Type.cpp @@ -407,13 +407,15 @@ Val* Compiler::compile_deftype(const goos::Object& form, const goos::Object& res } // Auto-generate (inspect) method - auto as_structure_type = dynamic_cast(result.type_info); - if (as_structure_type) { // generate the inspect method - generate_inspector_for_structure_type(form, env, as_structure_type); - } else { - auto as_bitfield_type = dynamic_cast(result.type_info); - if (as_bitfield_type && as_bitfield_type->get_load_size() <= 8) { // Avoid 128-bit bitfields - generate_inspector_for_bitfield_type(form, env, as_bitfield_type); + if (result.type_info->gen_inspect()) { + auto as_structure_type = dynamic_cast(result.type_info); + if (as_structure_type) { // generate the inspect method + generate_inspector_for_structure_type(form, env, as_structure_type); + } else { + auto as_bitfield_type = dynamic_cast(result.type_info); + if (as_bitfield_type && as_bitfield_type->get_load_size() <= 8) { // Avoid 128-bit bitfields + generate_inspector_for_bitfield_type(form, env, as_bitfield_type); + } } } @@ -757,7 +759,7 @@ Val* Compiler::compile_deref(const goos::Object& form, const goos::Object& _rest if (!has_constant_idx) { index_value = compile_error_guard(field_obj, env)->to_gpr(form, env); if (!is_integer(index_value->type())) { - throw_compiler_error(form, "Cannot use -> with {}.", field_obj.print()); + throw_compiler_error(form, "Cannot use -> with field {}.", field_obj.print()); } } diff --git a/goalc/debugger/Debugger.cpp b/goalc/debugger/Debugger.cpp index 0b9686a51d..111ae5e039 100644 --- a/goalc/debugger/Debugger.cpp +++ b/goalc/debugger/Debugger.cpp @@ -223,7 +223,7 @@ std::vector Debugger::get_backtrace(u64 rip, u64 rsp) { if (frame.rip_info.knows_function && frame.rip_info.func_debug && frame.rip_info.func_debug->stack_usage) { - fmt::print("<<<==================== CALL STACK ====================>>>\n"); + fmt::print("<====================== CALL STACK ======================>\n"); fmt::print("{} from {}\n", frame.rip_info.function_name, frame.rip_info.func_debug->obj_name); // we're good! auto disasm = disassemble_at_rip(frame.rip_info); diff --git a/test/decompiler/reference/decompiler-macros.gc b/test/decompiler/reference/decompiler-macros.gc index 5af2ee1765..c4c2f54e90 100644 --- a/test/decompiler/reference/decompiler-macros.gc +++ b/test/decompiler/reference/decompiler-macros.gc @@ -94,7 +94,7 @@ (defmacro handle->process (handle) ;; the actual implementation is more clever than this. ;; Checks PID. - `(let ((the-handle ,handle)) + `(let ((the-handle (the-as handle ,handle))) (if (-> the-handle process) (let ((proc (-> (-> the-handle process)))) (if (= (-> the-handle pid) (-> proc pid)) @@ -408,12 +408,12 @@ ) (defmacro defstate (state-name parents &key (virtual #f) - &key (event #f) - &key (enter #f) - &key (trans #f) - &key (exit #f) - &key (code #f) - &key (post #f) + &key (event *no-state*) + &key (enter *no-state*) + &key (trans *no-state*) + &key (exit *no-state*) + &key (code *no-state*) + &key (post *no-state*) ) "Define a new state!" diff --git a/test/decompiler/reference/engine/camera/cam-master_REF.gc b/test/decompiler/reference/engine/camera/cam-master_REF.gc index 8cb10c11f0..62b3af4a81 100644 --- a/test/decompiler/reference/engine/camera/cam-master_REF.gc +++ b/test/decompiler/reference/engine/camera/cam-master_REF.gc @@ -993,10 +993,10 @@ ) ;; definition for function master-switch-to-entity -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 166] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 176] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 196] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 220] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 166] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 176] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 196] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 220] ;; Used lq/sq (defbehavior master-switch-to-entity camera-master ((arg0 entity)) (local-vars diff --git a/test/decompiler/reference/engine/camera/camera_REF.gc b/test/decompiler/reference/engine/camera/camera_REF.gc index a44b22f0c2..6313317a0c 100644 --- a/test/decompiler/reference/engine/camera/camera_REF.gc +++ b/test/decompiler/reference/engine/camera/camera_REF.gc @@ -1275,10 +1275,10 @@ ;; definition for function cam-standard-event-handler ;; INFO: Return type mismatch none vs object. -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 7] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 31] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 45] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 50] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 7] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 31] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 45] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 50] ;; Used lq/sq (defbehavior cam-standard-event-handler camera-slave diff --git a/test/decompiler/reference/engine/collide/collide-cache-h_REF.gc b/test/decompiler/reference/engine/collide/collide-cache-h_REF.gc index b3e0be7640..311ff3647f 100644 --- a/test/decompiler/reference/engine/collide/collide-cache-h_REF.gc +++ b/test/decompiler/reference/engine/collide/collide-cache-h_REF.gc @@ -3,12 +3,12 @@ ;; definition of type collide-using-spheres-params (deftype collide-using-spheres-params (structure) - ((spheres uint32 :offset-assert 0) - (num-spheres uint32 :offset-assert 4) - (collide-with uint64 :offset-assert 8) - (proc basic :offset-assert 16) - (ignore-pat uint32 :offset-assert 20) - (solid-only basic :offset-assert 24) + ((spheres (pointer sphere) :offset-assert 0) + (num-spheres uint32 :offset-assert 4) + (collide-with uint64 :offset-assert 8) + (proc process-drawable :offset-assert 16) + (ignore-pat uint32 :offset-assert 20) + (solid-only basic :offset-assert 24) ) :method-count-assert 9 :size-assert #x1c @@ -131,24 +131,24 @@ ;; definition of type collide-cache-prim (deftype collide-cache-prim (structure) - ((prim-core collide-prim-core :inline :offset-assert 0) - (ccache collide-cache :offset-assert 32) - (prim collide-shape-prim :offset-assert 36) - (first-tri uint16 :offset-assert 40) - (num-tris uint16 :offset-assert 42) - (unused uint8 4 :offset-assert 44) - (world-sphere vector :inline :offset 0) - (collide-as uint64 :offset 16) - (action uint32 :offset 24) - (offense int8 :offset 28) - (prim-type int8 :offset 29) + ((prim-core collide-prim-core :inline :offset-assert 0) + (ccache collide-cache :offset-assert 32) + (prim (pointer collide-shape-prim) :offset-assert 36) + (first-tri uint16 :offset-assert 40) + (num-tris uint16 :offset-assert 42) + (unused uint8 4 :offset-assert 44) + (world-sphere vector :inline :offset 0) + (collide-as uint64 :offset 16) + (action uint32 :offset 24) + (offense int8 :offset 28) + (prim-type int8 :offset 29) ) :method-count-assert 11 :size-assert #x30 :flag-assert #xb00000030 (:methods - (dummy-9 (_type_ float pointer (pointer collide-cache) float int) float 9) - (dummy-10 (_type_ float pointer (pointer collide-cache) float int) float 10) + (dummy-9 (_type_ collide-mesh-cache-tri collide-prim-core vector float int) float 9) + (dummy-10 (_type_ collide-mesh-cache-tri collide-prim-core vector float int) float 10) ) ) @@ -190,25 +190,25 @@ (dummy-10 (_type_ vector vector float int process collide-mesh-cache-tri int) float 10) (dummy-11 (_type_ collide-using-spheres-params) none 11) (fill-and-probe-using-y-probe (_type_ vector float uint process collide-tri-result uint) float 12) - (dummy-13 (_type_ int uint process-drawable uint) none 13) + (dummy-13 (_type_ bounding-box uint process-drawable uint) none 13) (dummy-14 (_type_ vector vector float int process int) none 14) - (dummy-15 (_type_ int) none 15) - (dummy-16 (_type_ vector float uint process uint) none 16) + (dummy-15 (_type_ collide-using-spheres-params) none 15) + (dummy-16 (_type_ vector float uint process-drawable uint) none 16) (initialize (_type_) none 17) (dummy-18 (_type_ vector vector float int collide-mesh-cache-tri int) float 18) (probe-using-spheres (_type_) none 19) (dummy-20 (_type_ vector float uint collide-tri-result uint) float 20) - (dummy-21 (_type_) none 21) + (dummy-21 (_type_ (function bsp-header int collide-list none) (function collide-cache none)) none 21) (dummy-22 (_type_) none 22) (dummy-23 (_type_) none 23) (dummy-24 (_type_) none 24) - (dummy-25 (_type_) none 25) + (dummy-25 (_type_ water-control) none 25) (dummy-26 (_type_) none 26) (dummy-27 (_type_) none 27) (dummy-28 (_type_) none 28) - (dummy-29 (_type_) none 29) + (dummy-29 (_type_ collide-frag-mesh) none 29) (dummy-30 (_type_) none 30) - (dummy-31 (_type_) none 31) + (dummy-31 (_type_ collide-puyp-work collide-cache-prim) vector 31) (dummy-32 (_type_) none 32) ) ) diff --git a/test/decompiler/reference/engine/collide/collide-edge-grab-h_REF.gc b/test/decompiler/reference/engine/collide/collide-edge-grab-h_REF.gc index bca98d25c5..22646fd4c5 100644 --- a/test/decompiler/reference/engine/collide/collide-edge-grab-h_REF.gc +++ b/test/decompiler/reference/engine/collide/collide-edge-grab-h_REF.gc @@ -6,7 +6,7 @@ ((world-vertex vector 6 :inline :offset-assert 0) (local-vertex vector 6 :inline :offset-assert 96) (actor-cshape-prim-offset int32 :offset-assert 192) - (actor-handle uint64 :offset-assert 200) + (actor-handle handle :offset-assert 200) (hanging-matrix matrix :inline :offset-assert 208) (edge-vertex vector 2 :inline :offset 0) (center-hold vector :inline :offset 32) @@ -67,11 +67,11 @@ ;; definition of type collide-edge-edge (deftype collide-edge-edge (structure) - ((ignore basic :offset-assert 0) - (etri collide-edge-tri :offset-assert 4) - (vertex-ptr vector 2 :offset-assert 8) - (outward vector :inline :offset-assert 16) - (edge-vec-norm vector :inline :offset-assert 32) + ((ignore basic :offset-assert 0) + (etri collide-edge-tri :offset-assert 4) + (vertex-ptr (inline-array vector) 2 :offset-assert 8) + (outward vector :inline :offset-assert 16) + (edge-vec-norm vector :inline :offset-assert 32) ) :method-count-assert 9 :size-assert #x30 @@ -127,7 +127,7 @@ :size-assert #x810 :flag-assert #xb00000810 (:methods - (dummy-9 () none 9) + (debug-draw (_type_) object 9) (dummy-10 () none 10) ) ) @@ -145,8 +145,8 @@ ;; definition of type collide-edge-work (deftype collide-edge-work (structure) - ((ccache basic :offset-assert 0) - (cshape basic :offset-assert 4) + ((ccache collide-cache :offset-assert 0) + (cshape collide-shape :offset-assert 4) (num-verts uint32 :offset-assert 8) (num-edges uint32 :offset-assert 12) (num-tris uint32 :offset-assert 16) @@ -176,17 +176,17 @@ :size-assert #x2690 :flag-assert #x1400002690 (:methods - (dummy-9 () none 9) - (dummy-10 () none 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-16 () none 16) - (dummy-17 () none 17) - (dummy-18 () none 18) - (dummy-19 () none 19) + (dummy-9 (_type_ collide-edge-hold-list) symbol 9) + (debug-draw-edges (_type_) object 10) + (dummy-11 (_type_) none 11) + (debug-draw-sphere (_type_) symbol 12) + (dummy-13 (_type_) none 13) + (dummy-14 (_type_ vector vector int) float 14) + (dummy-15 (_type_) none 15) + (dummy-16 (_type_) none 16) + (dummy-17 (_type_) none 17) + (dummy-18 (_type_) none 18) + (dummy-19 (_type_ collide-edge-hold-item edge-grab-info) symbol 19) ) ) diff --git a/test/decompiler/reference/engine/collide/collide-mesh-h_REF.gc b/test/decompiler/reference/engine/collide/collide-mesh-h_REF.gc index b7ec11e73f..4da2573952 100644 --- a/test/decompiler/reference/engine/collide/collide-mesh-h_REF.gc +++ b/test/decompiler/reference/engine/collide/collide-mesh-h_REF.gc @@ -56,13 +56,13 @@ :size-assert #x28 :flag-assert #x1000000028 (:methods - (dummy-9 () none 9) - (dummy-10 () none 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) + (debug-draw-tris (_type_ process-drawable int) none 9) + (dummy-10 (_type_ object vector) none 10) + (dummy-11 (_type_) none 11) + (dummy-12 (_type_ collide-mesh-cache-tri collide-tri-result vector float) float 12) + (dummy-13 (_type_) none 13) + (dummy-14 (_type_) none 14) + (dummy-15 (_type_) none 15) ) ) @@ -88,7 +88,7 @@ :size-assert #xa020 :flag-assert #xc0000a020 (:methods - (dummy-9 () none 9) + (dummy-9 (_type_) none 9) (is-id? (_type_ int) symbol 10) (next-id! (_type_) uint 11) ) diff --git a/test/decompiler/reference/engine/collide/collide-shape-h_REF.gc b/test/decompiler/reference/engine/collide/collide-shape-h_REF.gc index 79353890cb..6dcd12f761 100644 --- a/test/decompiler/reference/engine/collide/collide-shape-h_REF.gc +++ b/test/decompiler/reference/engine/collide/collide-shape-h_REF.gc @@ -3,10 +3,10 @@ ;; definition of type collide-sticky-rider (deftype collide-sticky-rider (structure) - ((rider-handle handle :offset-assert 0) - (sticky-prim basic :offset-assert 8) - (prim-ry float :offset-assert 12) - (rider-local-pos vector :inline :offset-assert 16) + ((rider-handle handle :offset-assert 0) + (sticky-prim collide-shape-prim :offset-assert 8) + (prim-ry float :offset-assert 12) + (rider-local-pos vector :inline :offset-assert 16) ) :method-count-assert 10 :size-assert #x20 @@ -47,7 +47,7 @@ :flag-assert #xb00000030 (:methods (new (symbol type int) _type_ 0) - (dummy-9 () none 9) + (add-rider! (_type_ process-drawable) collide-sticky-rider 9) (reset! (_type_) int 10) ) ) @@ -70,7 +70,7 @@ ;; definition of type pull-rider-info (deftype pull-rider-info (structure) ((rider collide-sticky-rider :offset-assert 0) - (rider-cshape basic :offset-assert 4) + (rider-cshape collide-shape-prim :offset-assert 4) (rider-delta-ry float :offset-assert 8) (rider-dest vector :inline :offset-assert 16) ) @@ -101,7 +101,7 @@ :size-assert #x8c :flag-assert #xa0000008c (:methods - (dummy-9 () none 9) + (init! (_type_ vector) symbol 9) ) ) @@ -223,7 +223,7 @@ ;; definition of type collide-shape-prim (deftype collide-shape-prim (basic) - ((cshape basic :offset-assert 4) + ((cshape collide-shape :offset-assert 4) (prim-id uint32 :offset-assert 8) (transform-index int8 :offset-assert 12) (prim-core collide-prim-core :inline :offset-assert 16) @@ -240,26 +240,26 @@ :size-assert #x48 :flag-assert #x1c00000048 (:methods - (new (symbol type basic uint int) _type_ 0) - (dummy-9 () none 9) + (new (symbol type collide-shape uint int) _type_ 0) + (dummy-9 (_type_ vector) object 9) (dummy-10 (_type_ uint) collide-shape-prim 10) - (dummy-11 () none 11) - (add-fg-prim-using-box (_type_) none 12) - (add-fg-prim-using-line-sphere (_type_) none 13) - (add-fg-prim-using-y-probe (_type_) none 14) - (dummy-15 () none 15) + (debug-draw-world-sphere (_type_) symbol 11) + (add-fg-prim-using-box (_type_ process-drawable) none 12) + (add-fg-prim-using-line-sphere (_type_ process-drawable) none 13) + (add-fg-prim-using-y-probe (_type_ process-drawable) none 14) + (overlaps-others-test (_type_) symbol 15) (dummy-16 () none 16) (dummy-17 () none 17) - (dummy-18 () none 18) - (dummy-19 () none 19) - (dummy-20 () none 20) - (dummy-21 () none 21) - (dummy-22 () none 22) - (dummy-23 () none 23) + (collide-with-collide-cache-prim-mesh (_type_ collide-shape-intersect collide-cache-prim) none 18) + (collide-with-collide-cache-prim-sphere (_type_ collide-shape-intersect collide-cache-prim) none 19) + (dummy-20 (_type_ uint) symbol 20) + (num-mesh (_type_ collide-shape-prim) int 21) + (on-platform-test (_type_ _type_ collide-overlap-result float) pat-surface 22) + (should-push-away-test () none 23) (dummy-24 () none 24) - (dummy-25 () none 25) - (dummy-26 () none 26) - (dummy-27 () none 27) + (dummy-25 (_type_ process-drawable) symbol 25) + (set-collide-as! (_type_ handle) none 26) + (set-collide-with! (_type_ handle) none 27) ) ) @@ -289,7 +289,7 @@ :size-assert #x4c :flag-assert #x1c0000004c (:methods - (new (symbol type basic uint) _type_ 0) + (new (symbol type collide-shape uint) _type_ 0) ) ) @@ -323,8 +323,8 @@ :size-assert #x5c :flag-assert #x1d0000005c (:methods - (new (symbol type basic uint uint) _type_ 0) - (dummy-28 (_type_ int) none 28) + (new (symbol type collide-shape uint uint) _type_ 0) + (change-mesh (_type_ int) none 28) ) ) @@ -361,9 +361,9 @@ :size-assert #x54 :flag-assert #x1e00000054 (:methods - (new (symbol type basic uint int) _type_ 0) - (dummy-28 (_type_) none 28) - (dummy-29 () none 29) + (new (symbol type collide-shape uint int) _type_ 0) + (append-prim (_type_ collide-shape-prim) none 28) + (dummy-29 (_type_ uint) none 29) ) ) @@ -390,7 +390,7 @@ ;; definition of type collide-shape (deftype collide-shape (trsqv) - ((process process :offset-assert 140) + ((process process-drawable :offset-assert 140) (max-iteration-count uint8 :offset-assert 144) (nav-flags uint8 :offset-assert 145) (pad-byte uint8 2 :offset-assert 146) @@ -406,35 +406,35 @@ :size-assert #xb8 :flag-assert #x38000000b8 (:methods - (new (symbol type process collide-list-enum) _type_ 0) - (TODO-RENAME-28 (_type_) none 28) + (new (symbol type process-drawable collide-list-enum) _type_ 0) + (TODO-RENAME-28 (_type_ vector) none 28) (dummy-29 (_type_ int) none 29) (TODO-RENAME-30 (_type_ vector) none 30) - (dummy-31 () none 31) - (dummy-32 (_type_ float uint) none 32) + (dummy-31 (_type_) none 31) + (dummy-32 (_type_ object uint) none 32) (dummy-33 (_type_ vector uint) none 33) (dummy-34 (_type_ uint) collide-shape-prim 34) - (dummy-35 (_type_) none 35) - (dummy-36 () none 36) + (dummy-35 (_type_) symbol 35) + (dummy-36 (_type_ bounding-box float uint) symbol 36) (dummy-37 (_type_ vector) none 37) - (dummy-38 () none 38) - (dummy-39 () none 39) + (find-collision-meshes (_type_) symbol 38) + (dummy-39 (_type_ collide-shape collide-overlap-result) symbol 39) (dummy-40 (_type_ structure) none 40) - (dummy-41 (_type_ attack-info float) none 41) - (dummy-42 () none 42) - (dummy-43 () none 43) - (dummy-44 (_type_) none 44) - (dummy-45 (_type_) none 45) - (dummy-46 (_type_) none 46) - (dummy-47 (_type_) none 47) - (dummy-48 (_type_) none 48) - (dummy-49 (_type_) none 49) - (dummy-50 (_type_) none 50) - (dummy-51 () none 51) - (dummy-52 () none 52) + (dummy-41 (_type_ attack-info float) vector 41) + (dummy-42 (_type_ collide-shape collide-work) none 42) + (dummy-43 (_type_ pull-rider-info) none 43) + (dummy-44 (_type_) symbol 44) + (dummy-45 (_type_) symbol 45) + (set-root-prim! (_type_ collide-shape-prim) collide-shape-prim 46) + (dummy-47 (_type_) symbol 47) + (clear-collide-with-as (_type_) none 48) + (restore-collide-with-as (_type_) none 49) + (backup-collide-with-as (_type_) none 50) + (set-root-prim-collide-with! (_type_ handle) none 51) + (set-root-prim-collide-as! (_type_ handle) none 52) (dummy-53 (_type_ int int int) none 53) (dummy-54 (_type_ int int) none 54) - (dummy-55 (_type_ process uint float float float) none 55) + (dummy-55 (_type_ process touching-shapes-entry float float float) none 55) ) ) @@ -473,31 +473,31 @@ ;; definition of type collide-shape-moving (deftype collide-shape-moving (collide-shape) - ((rider-time uint64 :offset-assert 184) - (rider-last-move vector :inline :offset-assert 192) - (trans-old vector 3 :inline :offset-assert 208) - (poly-pat pat-surface :offset-assert 256) - (cur-pat pat-surface :offset-assert 260) - (ground-pat pat-surface :offset-assert 264) - (status uint64 :offset-assert 272) - (old-status uint64 :offset-assert 280) - (prev-status uint64 :offset-assert 288) - (reaction-flag uint32 :offset-assert 296) - (reaction function :offset-assert 300) - (no-reaction function :offset-assert 304) - (local-normal vector :inline :offset-assert 320) - (surface-normal vector :inline :offset-assert 336) - (poly-normal vector :inline :offset-assert 352) - (ground-poly-normal vector :inline :offset-assert 368) - (ground-touch-point vector :inline :offset-assert 384) - (shadow-pos vector :inline :offset-assert 400) - (ground-impact-vel meters :offset-assert 416) - (surface-angle float :offset-assert 420) - (poly-angle float :offset-assert 424) - (touch-angle float :offset-assert 428) - (coverage float :offset-assert 432) - (dynam dynamics :offset-assert 436) - (surf surface :offset-assert 440) + ((rider-time uint64 :offset-assert 184) + (rider-last-move vector :inline :offset-assert 192) + (trans-old vector 3 :inline :offset-assert 208) + (poly-pat pat-surface :offset-assert 256) + (cur-pat pat-surface :offset-assert 260) + (ground-pat pat-surface :offset-assert 264) + (status uint64 :offset-assert 272) + (old-status uint64 :offset-assert 280) + (prev-status uint64 :offset-assert 288) + (reaction-flag uint32 :offset-assert 296) + (reaction (function collide-shape-moving collide-shape-intersect vector vector none) :offset-assert 300) + (no-reaction (function collide-shape-moving collide-shape-intersect vector vector none) :offset-assert 304) + (local-normal vector :inline :offset-assert 320) + (surface-normal vector :inline :offset-assert 336) + (poly-normal vector :inline :offset-assert 352) + (ground-poly-normal vector :inline :offset-assert 368) + (ground-touch-point vector :inline :offset-assert 384) + (shadow-pos vector :inline :offset-assert 400) + (ground-impact-vel meters :offset-assert 416) + (surface-angle float :offset-assert 420) + (poly-angle float :offset-assert 424) + (touch-angle float :offset-assert 428) + (coverage float :offset-assert 432) + (dynam dynamics :offset-assert 436) + (surf surface :offset-assert 440) ) :method-count-assert 65 :size-assert #x1bc @@ -505,13 +505,13 @@ (:methods (dummy-56 (_type_ pat-surface) none 56) (dummy-57 (_type_ vector) none 57) - (dummy-58 (_type_ vector) none 58) + (dummy-58 (_type_ vector) symbol 58) (dummy-59 (_type_ vector uint float symbol symbol symbol) none 59) - (dummy-60 (_type_ float float symbol uint) none 60) + (dummy-60 (_type_ float float symbol uint) symbol 60) (TODO-RENAME-61 (_type_ vector vector vector) none 61) (dummy-62 (_type_ vector float) vector 62) - (dummy-63 () none 63) - (dummy-64 () none 64) + (dummy-63 (_type_ vector vector float) float 63) + (dummy-64 (_type_ collide-tri-result vector) none 64) ) ) @@ -579,7 +579,7 @@ collide-shape-prim ((allocation symbol) (type-to-make type) - (cshape basic) + (cshape collide-shape) (prim-id uint) (size-bytes int) ) @@ -601,7 +601,11 @@ (defmethod new collide-shape-prim-sphere - ((allocation symbol) (type-to-make type) (cshape basic) (prim-id uint)) + ((allocation symbol) + (type-to-make type) + (cshape collide-shape) + (prim-id uint) + ) (let ((obj (the-as @@ -629,7 +633,7 @@ collide-shape-prim-mesh ((allocation symbol) (type-to-make type) - (cshape basic) + (cshape collide-shape) (mesh-id uint) (prim-id uint) ) @@ -662,7 +666,7 @@ collide-shape-prim-group ((allocation symbol) (type-to-make type) - (cshape basic) + (cshape collide-shape) (elt-count uint) (prim-id int) ) @@ -709,7 +713,7 @@ collide-shape ((allocation symbol) (type-to-make type) - (proc process) + (proc process-drawable) (collide-list-kind collide-list-enum) ) (let diff --git a/test/decompiler/reference/engine/collide/collide-target-h_REF.gc b/test/decompiler/reference/engine/collide/collide-target-h_REF.gc index 084a8799aa..7a19314b4f 100644 --- a/test/decompiler/reference/engine/collide/collide-target-h_REF.gc +++ b/test/decompiler/reference/engine/collide/collide-target-h_REF.gc @@ -51,7 +51,10 @@ (unknown-vector10 vector :inline :offset 544) (unknown-vector11 vector :inline :offset 560) (unknown-vector12 vector :inline :offset 576) - (unknown-vector13 vector :inline :offset 608) + (unknown-vector13 vector :inline :offset 592) + (unknown-vector14 vector :inline :offset 608) + (unknown-vector15 vector :inline :offset 624) + (unknown-vector16 vector :inline :offset 640) (unknown-dynamics00 dynamics :offset 656) (unknown-surface00 surface :offset 660) (unknown-surface01 surface :offset 664) @@ -85,7 +88,8 @@ (unknown-vector53 vector :inline :offset 1232) (unknown-vector54 vector :inline :offset 1248) (unknown-vector55 vector :inline :offset 1264) - (unknown-dword10 int64 :offset 1288) + (unknown-dword10 int64 :offset 1280) + (unknown-dword11 int64 :offset 1288) (unknown-float60 float :offset 1300) (unknown-float61 float :offset 1304) (unknown-float62 float :offset 1308) @@ -96,8 +100,10 @@ (unknown-vector60 vector :inline :offset 1456) (unknown-vector61 vector :inline :offset 1504) (unknown-float70 float :offset 1520) + (unknown-float71 float :offset 1524) (unknown-vector70 vector :inline :offset 1536) (unknown-vector71 vector :inline :offset 1552) + (unknown-vector72 vector :inline :offset 1584) (unknown-handle00 handle :offset 1600) (unknown-sphere-array00 collide-shape-prim-sphere 3 :offset 1608) (unknown-sphere00 collide-shape-prim-sphere :offset 1632) @@ -147,11 +153,13 @@ (unknown-halfword00 int16 :offset 2488) (history-length int16 :offset 2490) (history-data collide-history 128 :inline :offset-assert 2496) + (unknown-float140 float :offset 18944) (unknown-dword60 int64 :offset 18952) (unknown-int40 int32 :offset 18880) (unknown-dword70 int64 :offset 18888) (unknown-dword71 int64 :offset 18896) (unknown-dword72 int64 :offset 18912) + (unknown-vector120 vector :offset 18928) (unknown-int50 uint32 :offset 18976) (unknown-soundid00 sound-id :offset 18980) (unknown-float130 float :offset 18984) @@ -159,6 +167,7 @@ :method-count-assert 65 :size-assert #x4a2c :flag-assert #x4100004a2c + :no-inspect ) ;; definition for method 9 of type collide-history diff --git a/test/decompiler/reference/engine/collide/collide-touch-h_REF.gc b/test/decompiler/reference/engine/collide/collide-touch-h_REF.gc index f4793bc83c..9434e78f4f 100644 --- a/test/decompiler/reference/engine/collide/collide-touch-h_REF.gc +++ b/test/decompiler/reference/engine/collide/collide-touch-h_REF.gc @@ -34,10 +34,10 @@ :size-assert #xe4 :flag-assert #xd000000e4 (:methods - (touched-prim (_type_ collide-shape-moving touching-shapes-entry) collide-shape-prim 9) + (get-touched-prim (_type_ trsqv touching-prims-entry) collide-shape-prim 9) (dummy-10 () none 10) (dummy-11 (_type_ vector) vector 11) - (dummy-12 () none 12) + (get-touched-tri (_type_ touching-prims-entry touching-prims-entry) collide-tri-result 12) ) ) @@ -63,10 +63,10 @@ :flag-assert #xd00003c10 (:methods (new (symbol type) _type_ 0) - (dummy-9 () none 9) - (dummy-10 () none 10) + (alloc-node (_type_) touching-prims-entry 9) + (get-size (_type_) int 10) (init-list! (_type_) none 11) - (dummy-12 () none 12) + (free-node (_type_ touching-prims-entry) touching-prims-entry 12) ) ) @@ -129,13 +129,13 @@ :size-assert #x10 :flag-assert #x1200000010 (:methods - (dummy-9 () none 9) - (touched-shape (_type_ collide-shape-moving) collide-shape 10) + (dummy-9 (_type_) none 9) + (get-touched-shape (_type_ collide-shape) collide-shape 10) (dummy-11 () none 11) (prims-touching? (_type_ collide-shape-moving uint) touching-prims-entry 12) - (dummy-13 (_type_ control-info int int) none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) + (prims-touching-action? (_type_ collide-shape uint uint) touching-prims-entry 13) + (free-list () none 14) + (free-entry-list (_type_) symbol 15) (get-head (_type_) touching-prims-entry 16) (unknown1 (_type_ (pointer uint32)) uint 17) ) @@ -162,11 +162,11 @@ :flag-assert #xf00000208 (:methods (new (symbol type) _type_ 0) - (dummy-9 () none 9) + (dummy-9 (_type_ collide-shape-prim collide-shape-prim float collide-shape collide-mesh-cache-tri) none 9) (dummy-10 () none 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) + (dummy-11 (_type_ float) none 11) + (dummy-12 (_type_) none 12) + (get-shapes-entry (_type_ collide-shape collide-shape) touching-shapes-entry 13) (dummy-14 (_type_) none 14) ) ) diff --git a/test/decompiler/reference/engine/collide/collide-touch_REF.gc b/test/decompiler/reference/engine/collide/collide-touch_REF.gc new file mode 100644 index 0000000000..b583c0fd6b --- /dev/null +++ b/test/decompiler/reference/engine/collide/collide-touch_REF.gc @@ -0,0 +1,591 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for method 10 of type touching-prims-entry-pool +(defmethod get-size touching-prims-entry-pool ((obj touching-prims-entry-pool)) + (let ((v0-0 0)) + (let ((v1-0 (-> obj head))) + (while v1-0 + (+! v0-0 1) + (set! v1-0 (-> v1-0 next)) + (nop!) + (nop!) + (nop!) + ) + ) + v0-0 + ) + ) + +;; definition for method 9 of type touching-prims-entry-pool +(defmethod alloc-node touching-prims-entry-pool ((obj touching-prims-entry-pool)) + (let ((gp-0 (-> obj head))) + (cond + (gp-0 + (let ((v1-0 (-> gp-0 next))) + (set! (-> obj head) v1-0) + (if v1-0 + (set! (-> v1-0 prev) #f) + ) + ) + (set! (-> gp-0 allocated?) #t) + (set! (-> gp-0 next) #f) + (set! (-> gp-0 prev) #f) + ) + (else + (format 0 "ERROR: touching-prims-entry-pool::alloc-node() failed!~%") + ) + ) + gp-0 + ) + ) + +;; definition for method 12 of type touching-prims-entry-pool +(defmethod + free-node + touching-prims-entry-pool + ((obj touching-prims-entry-pool) (arg0 touching-prims-entry)) + (when (-> arg0 allocated?) + (set! (-> arg0 allocated?) #f) + (let ((v1-1 (-> obj head))) + (set! (-> arg0 next) v1-1) + (set! (-> arg0 prev) #f) + (set! (-> obj head) arg0) + (when v1-1 + (set! (-> v1-1 prev) arg0) + arg0 + ) + ) + ) + ) + +;; definition for method 15 of type touching-shapes-entry +(defmethod free-entry-list touching-shapes-entry ((obj touching-shapes-entry)) + (when (-> obj cshape1) + (set! (-> obj cshape1) #f) + (let ((gp-0 (-> obj head))) + (when gp-0 + (set! (-> obj head) #f) + (let ((s5-0 *touching-prims-entry-pool*)) + (while gp-0 + (let ((a1-0 gp-0)) + (set! gp-0 (-> a1-0 next)) + (free-node s5-0 a1-0) + ) + ) + ) + #f + ) + ) + ) + ) + +;; definition for method 14 of type touching-list +;; INFO: Return type mismatch int vs none. +(defmethod dummy-14 touching-list ((obj touching-list)) + (let ((s5-0 (the-as object (-> obj touching-shapes)))) + (countdown (s4-0 (-> obj num-touching-shapes)) + (free-entry-list (the-as touching-shapes-entry s5-0)) + (set! s5-0 (&+ (the-as touching-shapes-entry s5-0) 16)) + ) + ) + (set! (-> obj num-touching-shapes) 0) + (set! (-> obj resolve-u) 0) + 0 + (none) + ) + +;; definition for method 13 of type touching-list +;; INFO: Return type mismatch object vs touching-shapes-entry. +(defmethod + get-shapes-entry + touching-list + ((obj touching-list) (arg0 collide-shape) (arg1 collide-shape)) + (let ((v0-0 (the-as object (-> obj touching-shapes)))) + (let ((v1-0 (the-as object #f))) + (countdown (a3-0 (-> obj num-touching-shapes)) + (let ((t0-0 (-> (the-as touching-shapes-entry v0-0) cshape1))) + (set! v1-0 (cond + (t0-0 + (if + (or + (and + (= t0-0 arg0) + (= (-> (the-as touching-shapes-entry v0-0) cshape2) arg1) + ) + (and + (= t0-0 arg1) + (= (-> (the-as touching-shapes-entry v0-0) cshape2) arg0) + ) + ) + (return (the-as touching-shapes-entry v0-0)) + ) + v1-0 + ) + (else + v0-0 + ) + ) + ) + ) + (set! v0-0 (&+ (the-as touching-shapes-entry v0-0) 16)) + ) + (cond + (v1-0 + (set! v0-0 v1-0) + ) + (else + (when (>= (-> obj num-touching-shapes) 32) + (format 0 "ERROR: touching-list::get-shapes-entry() failed!~%") + (return (the-as touching-shapes-entry #f)) + ) + (+! (-> obj num-touching-shapes) 1) + ) + ) + ) + (set! (-> (the-as touching-shapes-entry v0-0) cshape1) arg0) + (set! (-> (the-as touching-shapes-entry v0-0) cshape2) arg1) + (set! (-> (the-as touching-shapes-entry v0-0) head) #f) + (set! (-> (the-as touching-shapes-entry v0-0) resolve-u) 1) + (set! (-> obj resolve-u) 1) + (the-as touching-shapes-entry v0-0) + ) + ) + +;; definition of type add-prims-touching-work +(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 + ) + +;; definition for method 3 of type add-prims-touching-work +(defmethod inspect add-prims-touching-work ((obj add-prims-touching-work)) + (format #t "[~8x] ~A~%" obj 'add-prims-touching-work) + (format #t "~Ttri1: #~%" (-> obj tri1)) + (format #t "~Ttri2: #~%" (-> obj tri2)) + obj + ) + +;; definition for method 9 of type touching-list +;; INFO: Return type mismatch int vs none. +;; WARN: Expression building failed: Function (method 9 touching-list) has a return type of none, but the expression builder found a return statement. +(defmethod + dummy-9 + touching-list + ((obj touching-list) + (arg0 collide-shape-prim) + (arg1 collide-shape-prim) + (arg2 float) + (arg3 collide-shape) + (arg4 collide-mesh-cache-tri) + ) + (let ((gp-0 (new 'stack-no-clear 'touching-shapes-entry))) + (set! (-> gp-0 cshape1) arg3) + (set! (-> gp-0 cshape2) (the-as collide-shape arg4)) + (let ((s2-0 (get-shapes-entry obj (-> arg0 cshape) (-> arg1 cshape)))) + (when s2-0 + (when (= (-> s2-0 cshape1) (-> arg1 cshape)) + (let ((v1-4 arg0)) + (set! arg0 arg1) + (set! arg1 v1-4) + ) + ) + (let ((s0-0 (-> s2-0 head))) + (while s0-0 + (when (and (= (-> s0-0 prim1 cprim) arg0) (= (-> s0-0 prim2 cprim) arg1)) + (when (< arg2 (-> s0-0 u)) + (-> s0-0 u) + (let ((v1-12 (-> s0-0 prim1)) + (a1-2 (-> gp-0 cshape1)) + ) + (cond + (a1-2 + (set! (-> v1-12 has-tri?) #t) + (mem-copy! (the-as pointer (-> v1-12 tri)) (the-as pointer a1-2) 84) + ) + (else + (set! (-> v1-12 has-tri?) #f) + ) + ) + ) + (let ((v1-15 (-> s0-0 prim2)) + (a1-3 (-> gp-0 cshape2)) + ) + (cond + (a1-3 + (set! (-> v1-15 has-tri?) #t) + (mem-copy! (the-as pointer (-> v1-15 tri)) (the-as pointer a1-3) 84) + ) + (else + (set! (-> v1-15 has-tri?) #f) + ) + ) + ) + ) + (return 0) + ) + (set! s0-0 (-> s0-0 next)) + ) + ) + (let ((s0-1 (alloc-node *touching-prims-entry-pool*))) + (when s0-1 + (let ((v1-22 (-> s2-0 head))) + (set! (-> s0-1 next) v1-22) + (set! (-> s0-1 prev) #f) + (set! (-> s2-0 head) s0-1) + (if v1-22 + (set! (-> v1-22 prev) s0-1) + ) + ) + (set! (-> s0-1 u) arg2) + (when (>= arg2 0.0) + (set! (-> s2-0 resolve-u) 1) + (set! (-> obj resolve-u) 1) + ) + (let ((v1-26 (-> s0-1 prim1)) + (a1-4 (-> gp-0 cshape1)) + ) + (set! (-> v1-26 cprim) arg0) + (cond + (a1-4 + (set! (-> v1-26 has-tri?) #t) + (mem-copy! (the-as pointer (-> v1-26 tri)) (the-as pointer a1-4) 84) + ) + (else + (set! (-> v1-26 has-tri?) #f) + ) + ) + ) + (let ((v1-29 (-> s0-1 prim2)) + (a1-5 (-> gp-0 cshape2)) + ) + (set! (-> v1-29 cprim) arg1) + (cond + (a1-5 + (set! (-> v1-29 has-tri?) #t) + (mem-copy! (the-as pointer (-> v1-29 tri)) (the-as pointer a1-5) 84) + ) + (else + (set! (-> v1-29 has-tri?) #f) + ) + ) + ) + ) + ) + ) + ) + ) + 0 + (none) + ) + +;; definition for method 11 of type touching-list +;; INFO: Return type mismatch int vs none. +(defmethod dummy-11 touching-list ((obj touching-list) (arg0 float)) + (when (nonzero? (-> obj resolve-u)) + (set! (-> obj resolve-u) 0) + (let ((s5-0 (the-as object (-> obj touching-shapes)))) + (countdown (s4-0 (-> obj num-touching-shapes)) + (when (nonzero? (-> (the-as touching-shapes-entry s5-0) resolve-u)) + (set! (-> (the-as touching-shapes-entry s5-0) resolve-u) 0) + (when (-> (the-as touching-shapes-entry s5-0) cshape1) + (let ((s3-0 (-> (the-as touching-shapes-entry s5-0) head))) + (while s3-0 + (let ((f0-0 (-> s3-0 u))) + (set! s3-0 (cond + ((>= f0-0 0.0) + (cond + ((>= arg0 f0-0) + (set! (-> s3-0 u) -1.0) + (set! s3-0 (-> s3-0 next)) + ) + (else + (let ((a1-1 s3-0)) + (let ((v1-7 (-> s3-0 next))) + (let ((a0-1 (-> s3-0 prev))) + (if a0-1 + (set! (-> a0-1 next) v1-7) + (set! + (-> (the-as touching-shapes-entry s5-0) head) + v1-7 + ) + ) + (if v1-7 + (set! (-> v1-7 prev) a0-1) + ) + ) + (set! s3-0 v1-7) + ) + (free-node *touching-prims-entry-pool* a1-1) + ) + ) + ) + s3-0 + ) + (else + (-> s3-0 next) + ) + ) + ) + ) + ) + ) + (if (not (-> (the-as touching-shapes-entry s5-0) head)) + (set! (-> (the-as touching-shapes-entry s5-0) cshape1) #f) + ) + ) + ) + (set! s5-0 (&+ (the-as touching-shapes-entry s5-0) 16)) + ) + ) + ) + 0 + (none) + ) + +;; definition for method 12 of type touching-list +;; INFO: Return type mismatch int vs none. +(defmethod dummy-12 touching-list ((obj touching-list)) + (let ((gp-0 (the-as object (-> obj touching-shapes)))) + (countdown (s5-0 (-> obj num-touching-shapes)) + (let ((s4-0 (-> (the-as touching-shapes-entry gp-0) cshape1))) + (when s4-0 + (let ((s3-0 (-> (the-as touching-shapes-entry gp-0) cshape2))) + (when (= (-> s3-0 process type) target) + (let ((v1-2 s4-0)) + (set! s4-0 s3-0) + (set! s3-0 v1-2) + ) + ) + (let ((v1-4 (-> s4-0 event-self))) + (when v1-4 + (let ((a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 from) (-> s3-0 process)) + (set! (-> a1-0 num-params) 1) + (set! (-> a1-0 message) (the-as symbol v1-4)) + (set! (-> a1-0 param 0) (the-as uint gp-0)) + (send-event-function (-> s4-0 process) a1-0) + ) + ) + ) + (let ((v1-5 (-> s4-0 event-other))) + (when v1-5 + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) (-> s4-0 process)) + (set! (-> a1-1 num-params) 1) + (set! (-> a1-1 message) (the-as symbol v1-5)) + (set! (-> a1-1 param 0) (the-as uint gp-0)) + (send-event-function (-> s3-0 process) a1-1) + ) + ) + ) + (let ((v1-6 (-> s3-0 event-self))) + (when v1-6 + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) (-> s4-0 process)) + (set! (-> a1-2 num-params) 1) + (set! (-> a1-2 message) (the-as symbol v1-6)) + (set! (-> a1-2 param 0) (the-as uint gp-0)) + (send-event-function (-> s3-0 process) a1-2) + ) + ) + ) + (let ((v1-7 (-> s3-0 event-other))) + (when v1-7 + (let ((a1-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-3 from) (-> s3-0 process)) + (set! (-> a1-3 num-params) 1) + (set! (-> a1-3 message) (the-as symbol v1-7)) + (set! (-> a1-3 param 0) (the-as uint gp-0)) + (send-event-function (-> s4-0 process) a1-3) + ) + ) + ) + ) + ) + ) + (set! gp-0 (&+ (the-as touching-shapes-entry gp-0) 16)) + ) + ) + 0 + (none) + ) + +;; definition for method 12 of type touching-shapes-entry +(defmethod + prims-touching? + touching-shapes-entry + ((obj touching-shapes-entry) (arg0 collide-shape-moving) (arg1 uint)) + (cond + ((= (-> obj cshape1) arg0) + (let ((v1-1 (-> obj head))) + (while v1-1 + (if (logtest? (-> v1-1 prim1 cprim prim-id) arg1) + (return v1-1) + ) + (set! v1-1 (-> v1-1 next)) + ) + ) + ) + ((= (-> obj cshape2) arg0) + (let ((v1-4 (-> obj head))) + (while v1-4 + (if (logtest? (-> v1-4 prim2 cprim prim-id) arg1) + (return v1-4) + ) + (set! v1-4 (-> v1-4 next)) + ) + ) + ) + (else + (format + 0 + "ERROR: touching-shapes-entry::prims-touching? : Bogus cshape value!~%" + ) + ) + ) + (the-as touching-prims-entry #f) + ) + +;; definition for method 13 of type touching-shapes-entry +(defmethod + prims-touching-action? + touching-shapes-entry + ((obj touching-shapes-entry) (arg0 collide-shape) (arg1 uint) (arg2 uint)) + (cond + ((= (-> obj cshape1) arg0) + (let ((v1-1 (-> obj head))) + (while v1-1 + (let ((a0-1 (-> v1-1 prim1 cprim))) + (if + (and + (logtest? arg1 (-> a0-1 prim-core action)) + (zero? (logand arg2 (-> a0-1 prim-core action))) + ) + (return v1-1) + ) + ) + (set! v1-1 (-> v1-1 next)) + ) + ) + ) + ((= (-> obj cshape2) arg0) + (let ((v1-4 (-> obj head))) + (while v1-4 + (let ((a0-5 (-> v1-4 prim2 cprim))) + (if + (and + (logtest? arg1 (-> a0-5 prim-core action)) + (zero? (logand arg2 (-> a0-5 prim-core action))) + ) + (return v1-4) + ) + ) + (set! v1-4 (-> v1-4 next)) + ) + ) + ) + (else + (format + 0 + "ERROR: touching-shapes-entry::prims-touching-action? : Bogus cshape value!~%" + ) + ) + ) + (the-as touching-prims-entry #f) + ) + +;; definition for method 10 of type touching-shapes-entry +(defmethod + get-touched-shape + touching-shapes-entry + ((obj touching-shapes-entry) (arg0 collide-shape)) + (cond + ((= (-> obj cshape1) arg0) + (return (-> obj cshape2)) + ) + ((= (-> obj cshape2) arg0) + (return (-> obj cshape1)) + ) + ) + (the-as collide-shape #f) + ) + +;; definition for method 9 of type touching-prims-entry +(defmethod + get-touched-prim + touching-prims-entry + ((obj touching-prims-entry) (arg0 trsqv) (arg1 touching-prims-entry)) + (cond + ((= (-> arg1 next) arg0) + (return (-> obj prim1 cprim)) + ) + ((= (-> arg1 prev) arg0) + (return (-> obj prim2 cprim)) + ) + ) + (the-as collide-shape-prim #f) + ) + +;; definition for method 12 of type touching-prims-entry +(defmethod + get-touched-tri + touching-prims-entry + ((obj touching-prims-entry) + (arg0 touching-prims-entry) + (arg1 touching-prims-entry) + ) + (let ((v0-0 (the-as collide-tri-result #f))) + (cond + ((= (-> arg1 next) arg0) + (let ((v1-2 (-> obj prim1))) + (if (-> v1-2 has-tri?) + (set! v0-0 (-> v1-2 tri)) + ) + ) + ) + ((= (-> arg1 prev) arg0) + (let ((v1-5 (-> obj prim2))) + (if (-> v1-5 has-tri?) + (set! v0-0 (-> v1-5 tri)) + ) + ) + ) + ) + v0-0 + ) + ) + +;; definition for method 11 of type touching-prims-entry +(defmethod + dummy-11 + touching-prims-entry + ((obj touching-prims-entry) (arg0 vector)) + (let* ((s4-0 (-> obj prim1 cprim)) + (s3-0 (-> obj prim2 cprim)) + (gp-1 + (vector-! + (new 'stack-no-clear 'vector) + (the-as vector (-> s3-0 prim-core)) + (the-as vector (-> s4-0 prim-core)) + ) + ) + ) + (let + ((f1-2 + (- + (- (vector-length gp-1) (-> s3-0 prim-core world-sphere w)) + (-> s4-0 prim-core world-sphere w) + ) + ) + ) + (vector-normalize! gp-1 (+ (-> s4-0 prim-core world-sphere w) (* 0.5 f1-2))) + ) + (vector+! arg0 gp-1 (the-as vector (-> s4-0 prim-core))) + ) + arg0 + ) diff --git a/test/decompiler/reference/engine/debug/anim-tester_REF.gc b/test/decompiler/reference/engine/debug/anim-tester_REF.gc index d5e99ab17e..a54fd1e1db 100644 --- a/test/decompiler/reference/engine/debug/anim-tester_REF.gc +++ b/test/decompiler/reference/engine/debug/anim-tester_REF.gc @@ -1967,9 +1967,9 @@ ) ;; definition for function anim-test-edit-sequence-list-handler -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 893] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 938] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 1045] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 893] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 938] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 1045] ;; Used lq/sq (defun anim-test-edit-sequence-list-handler ((arg0 int) (arg1 list-control)) (local-vars diff --git a/test/decompiler/reference/engine/debug/default-menu_REF.gc b/test/decompiler/reference/engine/debug/default-menu_REF.gc index ffcddaf7fc..efa99c2f55 100644 --- a/test/decompiler/reference/engine/debug/default-menu_REF.gc +++ b/test/decompiler/reference/engine/debug/default-menu_REF.gc @@ -507,9 +507,9 @@ (let ((v1-0 (find-instance-by-name *edit-instance*))) (when v1-0 (if (= arg1 4) - (set! (-> v1-0 unknown) (logxor (-> v1-0 unknown) (the-as uint arg0))) + (set! (-> v1-0 flags) (logxor (-> v1-0 flags) (the-as uint arg0))) ) - (logtest? (-> v1-0 unknown) arg0) + (logtest? (-> v1-0 flags) arg0) ) ) ) @@ -630,9 +630,9 @@ (cond (v1-0 (if (= arg1 4) - (set! (-> v1-0 unknown) (logxor (-> v1-0 unknown) 1)) + (set! (-> v1-0 flags) (logxor (-> v1-0 flags) 1)) ) - (zero? (logand (-> v1-0 unknown) 1)) + (zero? (logand (-> v1-0 flags) 1)) ) (else #f @@ -3011,10 +3011,12 @@ (the-as object (cond (gp-0 (when (= arg1 4) - (set! (-> gp-0 unknown-vector x) (* 4096.0 arg2)) - (prototype-bucket-recalc-fields gp-0) + (set! (-> gp-0 dists x) (* 4096.0 arg2)) + (prototype-bucket-recalc-fields + (the-as instance gp-0) + ) ) - (* 0.00024414062 (-> gp-0 unknown-vector x)) + (* 0.00024414062 (-> gp-0 dists x)) ) (else (empty) @@ -3047,10 +3049,12 @@ (the-as object (cond (gp-0 (when (= arg1 4) - (set! (-> gp-0 unknown-vector w) (* 4096.0 arg2)) - (prototype-bucket-recalc-fields gp-0) + (set! (-> gp-0 dists w) (* 4096.0 arg2)) + (prototype-bucket-recalc-fields + (the-as instance gp-0) + ) ) - (* 0.00024414062 (-> gp-0 unknown-vector w)) + (* 0.00024414062 (-> gp-0 dists w)) ) (else (empty) diff --git a/test/decompiler/reference/engine/draw/drawable-h_REF.gc b/test/decompiler/reference/engine/draw/drawable-h_REF.gc index 60a1d710de..50378bbd99 100644 --- a/test/decompiler/reference/engine/draw/drawable-h_REF.gc +++ b/test/decompiler/reference/engine/draw/drawable-h_REF.gc @@ -32,7 +32,7 @@ ;; definition of type drawable-error (deftype drawable-error (drawable) - ((name basic :offset-assert 32) + ((name string :offset-assert 32) ) :method-count-assert 18 :size-assert #x24 diff --git a/test/decompiler/reference/engine/draw/process-drawable_REF.gc b/test/decompiler/reference/engine/draw/process-drawable_REF.gc index f9d5766251..4194804026 100644 --- a/test/decompiler/reference/engine/draw/process-drawable_REF.gc +++ b/test/decompiler/reference/engine/draw/process-drawable_REF.gc @@ -462,7 +462,7 @@ ;; INFO: Return type mismatch int vs none. (defmethod dummy-18 process-drawable ((obj process-drawable)) (if (type-type? (-> obj root type) collide-shape) - (dummy-48 (the-as collide-shape (-> obj root))) + (clear-collide-with-as (the-as collide-shape (-> obj root))) ) (if (nonzero? (-> obj skel)) (ja-channel-set! 0) @@ -753,7 +753,7 @@ (let ((gp-1 (the-as collide-shape (-> (the-as collide-shape obj) dir-targ x)))) (if (and gp-1 (nonzero? gp-1) (type-type? (-> gp-1 type) collide-shape)) - ((method-of-object gp-1 dummy-38)) + (find-collision-meshes gp-1) ) ) (label cfg-59) @@ -1360,13 +1360,20 @@ (let ((s5-0 (-> v1-0 extra perm task)) (s4-0 (new 'static 'fact-info)) ) - (set! (-> s4-0 options) (the-as uint 0)) + (set! (-> s4-0 options) (fact-options)) (if arg2 - (set! (-> s4-0 options) (the-as uint 64)) + (set! (-> s4-0 options) (fact-options fop6)) ) (when (and (nonzero? s5-0) (not (task-complete? *game-info* s5-0))) (label cfg-12) - (birth-pickup-at-point gp-0 6 (the float s5-0) #f self s4-0) + (birth-pickup-at-point + gp-0 + (pickup-type fuel-cell) + (the float s5-0) + #f + self + s4-0 + ) (when (not (-> self child)) (suspend) (goto cfg-12) diff --git a/test/decompiler/reference/engine/game/effect-control_REF.gc b/test/decompiler/reference/engine/game/effect-control_REF.gc index 3481014b94..d3374217b7 100644 --- a/test/decompiler/reference/engine/game/effect-control_REF.gc +++ b/test/decompiler/reference/engine/game/effect-control_REF.gc @@ -290,13 +290,13 @@ ;; definition for method 10 of type effect-control ;; INFO: Return type mismatch int vs object. -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 205] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 217] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 237] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 343] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 364] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 450] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 469] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 205] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 217] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 237] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 343] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 364] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 450] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 469] ;; Used lq/sq (defmethod dummy-10 diff --git a/test/decompiler/reference/engine/game/fact-h_REF.gc b/test/decompiler/reference/engine/game/fact-h_REF.gc index 181947c991..5c2f5b3cc5 100644 --- a/test/decompiler/reference/engine/game/fact-h_REF.gc +++ b/test/decompiler/reference/engine/game/fact-h_REF.gc @@ -111,15 +111,15 @@ (pickup-type pickup-type :offset-assert 8) (pickup-amount float :offset-assert 12) (pickup-spawn-amount float :offset-assert 16) - (options uint64 :offset-assert 24) - (fade-time uint64 :offset-assert 32) + (options fact-options :offset-assert 24) + (fade-time int64 :offset-assert 32) ) :method-count-assert 12 :size-assert #x28 :flag-assert #xc00000028 (:methods (new (symbol type process-drawable pickup-type float) _type_ 0) - (TODO-RENAME-9 (_type_ symbol process-tree fact-info int) uint 9) + (drop-pickup (_type_ symbol process-tree fact-info int) none 9) (reset! (_type_ symbol) none 10) (pickup-collectable! (_type_ pickup-type float handle) float 11) ) @@ -284,12 +284,9 @@ ) ) ) - (set! (-> obj options) (res-lump-value ent 'options uint)) - (if (logtest? #x80200 (-> obj options)) - (set! - (-> obj fade-time) - (the-as uint (the int (* 300.0 (res-lump-float ent 'timeout)))) - ) + (set! (-> obj options) (res-lump-value ent 'options fact-options)) + (if (logtest? (fact-options fade respawn) (-> obj options)) + (set! (-> obj fade-time) (the int (* 300.0 (res-lump-float ent 'timeout)))) ) ) (label cfg-10) diff --git a/test/decompiler/reference/engine/game/game-info_REF.gc b/test/decompiler/reference/engine/game/game-info_REF.gc index f1506571c2..baba74a198 100644 --- a/test/decompiler/reference/engine/game/game-info_REF.gc +++ b/test/decompiler/reference/engine/game/game-info_REF.gc @@ -162,7 +162,7 @@ ) ;; definition for method 9 of type game-info -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 191] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 191] ;; Used lq/sq (defmethod initialize! diff --git a/test/decompiler/reference/engine/game/generic-obs_REF.gc b/test/decompiler/reference/engine/game/generic-obs_REF.gc index ec69e07ef1..6ce1dc1b81 100644 --- a/test/decompiler/reference/engine/game/generic-obs_REF.gc +++ b/test/decompiler/reference/engine/game/generic-obs_REF.gc @@ -118,13 +118,13 @@ (< (vector-vector-distance (-> self root trans) - (the-as vector (&-> (-> *target* control) unknown-cspace00 bone)) + (-> *target* control unknown-vector90) ) (-> self range) ) (logtest? (-> *target* control root-prim prim-core action) 64) (< - (the-as float (-> *target* control unknown-cspace00 param0)) + (-> *target* control unknown-vector90 y) (+ (-> self root trans y) (* 0.5 (-> self range))) ) ) @@ -610,23 +610,15 @@ (let ((v1-20 (handle->process (-> self cur-grab-handle)))) (when v1-20 (let ((gp-1 (-> (the-as process-drawable v1-20) root trans))) - (cond - ((type-type? (-> self root type) collide-shape) - (let* ((a0-13 (-> self root)) - (t9-3 - (method-of-object (the-as collide-shape a0-13) TODO-RENAME-28) - ) - ) - (vector-! (new 'stack-no-clear 'vector) gp-1 (-> self old-grab-pos)) - (t9-3 (the-as collide-shape a0-13)) - ) + (if (type-type? (-> self root type) collide-shape) + (TODO-RENAME-28 + (the-as collide-shape (-> self root)) + (vector-! (new 'stack-no-clear 'vector) gp-1 (-> self old-grab-pos)) ) - (else - (vector+! - (-> self root trans) - (-> self root trans) - (vector-! (new 'stack-no-clear 'vector) gp-1 (-> self old-grab-pos)) - ) + (vector+! + (-> self root trans) + (-> self root trans) + (vector-! (new 'stack-no-clear 'vector) gp-1 (-> self old-grab-pos)) ) ) (set! (-> self old-grab-pos quad) (-> gp-1 quad)) @@ -661,20 +653,20 @@ ) (set! (-> s4-1 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-1 reaction) default-collision-reaction) - (set! (-> s4-1 no-reaction) nothing) - (set-vector! - (-> - (new 'process 'collide-shape-prim-sphere s4-1 (the-as uint 0)) - local-sphere + (set! + (-> s4-1 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing ) - 0.0 - 0.0 - 0.0 - 4096.0 ) - (dummy-46 s4-1) + (let + ((s3-1 (new 'process 'collide-shape-prim-sphere s4-1 (the-as uint 0)))) + (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 4096.0) + (set-root-prim! s4-1 s3-1) + ) (set! (-> s4-1 nav-radius) (* 0.75 (-> s4-1 root-prim local-sphere w))) - (dummy-50 s4-1) + (backup-collide-with-as s4-1) (set! (-> self root) s4-1) ) ) @@ -695,10 +687,10 @@ (-> arg3 z) (-> arg3 w) ) + (set-root-prim! s4-2 s2-0) ) - (dummy-46 s4-2) (set! (-> s4-2 nav-radius) (* 0.75 (-> s4-2 root-prim local-sphere w))) - (dummy-50 s4-2) + (backup-collide-with-as s4-2) (set! (-> self root) s4-2) ) ) @@ -2567,19 +2559,13 @@ (defstate launcher-idle (launcher) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) - (the-as object (cond - ((= v1-0 'instant-death) - (go launcher-deactivated) - ) - ((= v1-0 'trans) - (TODO-RENAME-30 - (-> self root-override) - (the-as vector (-> arg3 param 0)) - ) - (dummy-47 (-> self root-override)) - ) - ) + (case arg2 + (('instant-death) + (go launcher-deactivated) + ) + (('trans) + (TODO-RENAME-30 (-> self root-override) (the-as vector (-> arg3 param 0))) + (dummy-47 (-> self root-override)) ) ) ) @@ -2672,18 +2658,14 @@ (-> self seek-time) ) ) - (the-as object (cond - ((= arg2 'instant-death) - (go launcher-deactivated) - ) - ((= arg2 'trans) - (TODO-RENAME-30 - (-> self root-override) - (the-as vector (-> arg3 param 0)) - ) - (dummy-47 (-> self root-override)) - ) - ) + (cond + ((= arg2 'instant-death) + (go launcher-deactivated) + ) + ((= arg2 'trans) + (TODO-RENAME-30 (-> self root-override) (the-as vector (-> arg3 param 0))) + (dummy-47 (-> self root-override)) + ) ) ) :exit @@ -2791,10 +2773,10 @@ (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) 13926.4) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -2860,10 +2842,10 @@ (set! (-> s1-0 prim-core collide-as) (the-as uint 256)) (set! (-> s1-0 collide-with) (the-as uint 16)) (set-vector! (-> s1-0 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s2-0 s1-0) ) - (dummy-46 s2-0) (set! (-> s2-0 nav-radius) (* 0.75 (-> s2-0 root-prim local-sphere w))) - (dummy-50 s2-0) + (backup-collide-with-as s2-0) (set! (-> self root-override) s2-0) ) (set! (-> self root-override trans quad) (-> arg0 quad)) @@ -3092,7 +3074,7 @@ ) (suspend) ) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (suspend) 0 (none) @@ -3112,16 +3094,22 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 272)) (set! (-> s2-0 collide-with) (the-as uint 3022)) (set! (-> s2-0 prim-core offense) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 arg1) + (set-root-prim! s4-0 s2-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> s4-0 event-self) 'touched) (set! (-> self root-override) s4-0) ) diff --git a/test/decompiler/reference/engine/game/projectiles_REF.gc b/test/decompiler/reference/engine/game/projectiles_REF.gc index ac7a5c4093..304b2748bd 100644 --- a/test/decompiler/reference/engine/game/projectiles_REF.gc +++ b/test/decompiler/reference/engine/game/projectiles_REF.gc @@ -232,12 +232,10 @@ (set! sv-72 (new 'stack-no-clear 'matrix)) (set! sv-80 0) (set! (-> sv-72 vector 0 quad) (-> arg3 quad)) - (vector-float*! - (new 'stack-no-clear 'vector) - (-> arg1 move-vec) - (-> arg1 best-u) + (let ((a1-1 (new 'stack-no-clear 'vector))) + (vector-float*! a1-1 (-> arg1 move-vec) (-> arg1 best-u)) + (TODO-RENAME-28 arg0 a1-1) ) - (TODO-RENAME-28 arg0) (dummy-56 arg0 (-> arg1 best-tri pat)) (case (-> arg1 best-tri pat material) (((pat-material stopproj)) @@ -256,8 +254,9 @@ (set! (-> sv-68 quad) v1-22) ) (when (= (-> arg1 best-u) 0.0) - (vector-float*! (new 'stack-no-clear 'vector) sv-68 32.0) - (TODO-RENAME-28 arg0) + (let ((a1-7 (vector-float*! (new 'stack-no-clear 'vector) sv-68 32.0))) + (TODO-RENAME-28 arg0 a1-7) + ) ) (set! (-> arg0 surface-normal quad) (-> sv-68 quad)) (set! (-> arg0 poly-normal quad) (-> arg1 best-tri normal quad)) @@ -1240,17 +1239,23 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) projectile-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (the-as uint 1024)) (set! (-> s4-0 collide-with) (the-as uint 2957)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 3) (set-vector! (-> s4-0 local-sphere) 0.0 5324.8 0.0 5324.8) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) (set! (-> s5-0 event-self) 'touched) (set! (-> obj root-override) s5-0) @@ -1756,17 +1761,23 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) projectile-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (the-as uint 1024)) (set! (-> s4-0 collide-with) (the-as uint 1)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 3) (set-vector! (-> s4-0 local-sphere) 0.0 5324.8 0.0 5324.8) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) (set! (-> s5-0 event-self) 'touched) (set! (-> obj root-override) s5-0) diff --git a/test/decompiler/reference/engine/game/task/process-taskable_REF.gc b/test/decompiler/reference/engine/game/task/process-taskable_REF.gc index 820dce20fb..19938226df 100644 --- a/test/decompiler/reference/engine/game/task/process-taskable_REF.gc +++ b/test/decompiler/reference/engine/game/task/process-taskable_REF.gc @@ -975,7 +975,7 @@ ) 0 (process-taskable-clean-up-after-talking) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (ja-channel-set! 0) (the-as int (ja-post)) ) @@ -992,7 +992,7 @@ (let ((gp-0 (-> self skel root-channel 0))) (set! (-> gp-0 frame-group) (the-as art-joint-anim (get-art-elem self))) ) - (dummy-49 (-> self root-override)) + (restore-collide-with-as (-> self root-override)) (process-entity-status! self (entity-perm-status bit-3) #t) (let ((v1-7 (-> self draw shadow-ctrl))) (set! (-> v1-7 settings flags) (logand -33 (-> v1-7 settings flags))) @@ -1245,7 +1245,7 @@ (dummy-55 (-> self root-override) arg0 - (-> arg3 param 0) + (the-as touching-shapes-entry (-> arg3 param 0)) 0.7 6144.0 16384.0 @@ -1489,10 +1489,10 @@ (-> arg1 z) (-> arg1 w) ) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/test/decompiler/reference/engine/gfx/generic/generic-vu1-h_REF.gc b/test/decompiler/reference/engine/gfx/generic/generic-vu1-h_REF.gc index 17205a6e39..7ddc504a74 100644 --- a/test/decompiler/reference/engine/gfx/generic/generic-vu1-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/generic/generic-vu1-h_REF.gc @@ -17,9 +17,9 @@ ;; definition for method 3 of type pris-mtx (defmethod inspect pris-mtx ((obj pris-mtx)) (format #t "[~8x] ~A~%" obj 'pris-mtx) - (format #t "~Tdata[32] @ #x~X~%" (-> obj data)) - (format #t "~Tvector[8] @ #x~X~%" (-> obj data)) - (format #t "~Tt-mtx: #~%" (-> obj data)) + (format #t "~Tdata[32] @ #x~X~%" (-> obj t-mtx)) + (format #t "~Tvector[8] @ #x~X~%" (-> obj t-mtx)) + (format #t "~Tt-mtx: #~%" (-> obj t-mtx)) (format #t "~Tn-mtx: #~%" (-> obj n-mtx)) (format #t "~Tscale: #~%" (-> obj scale)) obj diff --git a/test/decompiler/reference/engine/gfx/shrub/shrubbery-h_REF.gc b/test/decompiler/reference/engine/gfx/shrub/shrubbery-h_REF.gc index 5b0e9da28a..f9ff4401fa 100644 --- a/test/decompiler/reference/engine/gfx/shrub/shrubbery-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/shrub/shrubbery-h_REF.gc @@ -114,7 +114,7 @@ (format #t "~Twind-index: ~D~%" (-> obj wind-index)) (format #t "~Tflat-normal: #~%" (-> obj flat-normal)) (format #t "~Tflat-hwidth: ~f~%" (-> obj flat-normal w)) - (format #t "~Tcolor: ~D~%" (-> obj unknown)) + (format #t "~Tcolor: ~D~%" (-> obj error)) obj ) diff --git a/test/decompiler/reference/engine/gfx/tie/prototype-h_REF.gc b/test/decompiler/reference/engine/gfx/tie/prototype-h_REF.gc index b5db0b136d..8bbaf817ca 100644 --- a/test/decompiler/reference/engine/gfx/tie/prototype-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/tie/prototype-h_REF.gc @@ -142,20 +142,20 @@ ;; definition of type prototype-bucket-tie (deftype prototype-bucket-tie (prototype-bucket) - ((generic-count uint16 4 :offset-assert 88) - (generic-next uint32 4 :offset-assert 96) - (frag-count uint8 4 :offset-assert 112) - (index-start uint8 4 :offset-assert 116) - (base-qw uint16 4 :offset-assert 120) - (envmap-rfade float :offset-assert 128) - (envmap-fade-far float :offset-assert 132) - (envmap-shader adgif-shader :offset-assert 136) - (collide-frag basic :offset-assert 140) - (tie-colors basic :offset-assert 144) - (data uint32 :dynamic :offset-assert 148) - (color-index-qwc uint32 :dynamic :offset-assert 148) - (generic-next-clear uint128 :offset 96) - (generic-count-clear uint128 :offset 80) + ((generic-count uint16 4 :offset-assert 88) + (generic-next uint32 4 :offset-assert 96) + (frag-count uint8 4 :offset-assert 112) + (index-start uint8 4 :offset-assert 116) + (base-qw uint16 4 :offset-assert 120) + (envmap-rfade float :offset-assert 128) + (envmap-fade-far float :offset-assert 132) + (envmap-shader adgif-shader :offset-assert 136) + (collide-frag drawable-inline-array-collide-fragment :offset-assert 140) + (tie-colors time-of-day-palette :offset-assert 144) + (data uint32 :dynamic :offset-assert 148) + (color-index-qwc uint32 :dynamic :offset-assert 148) + (generic-next-clear uint128 :offset 96) + (generic-count-clear uint128 :offset 80) ) :method-count-assert 9 :size-assert #x94 @@ -244,11 +244,11 @@ ;; definition of type instance (deftype instance (drawable) - ((bucket-index uint16 :offset 6) - (unknown uint32 :offset 8) - (origin matrix4h :inline :offset-assert 32) - (unknown-vector vector :inline :offset 32) - (wind-index uint16 :offset 62) + ((bucket-index uint16 :offset 6) + (error (pointer drawable-error) :offset 8) + (origin matrix4h :inline :offset-assert 32) + (unknown-vector vector :inline :offset 32) + (wind-index uint16 :offset 62) ) :method-count-assert 18 :size-assert #x40 diff --git a/test/decompiler/reference/engine/gfx/tie/tie-h_REF.gc b/test/decompiler/reference/engine/gfx/tie/tie-h_REF.gc index 0a2c01c763..255c164819 100644 --- a/test/decompiler/reference/engine/gfx/tie/tie-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/tie/tie-h_REF.gc @@ -49,10 +49,10 @@ ;; definition of type instance-tie (deftype instance-tie (instance) - ((color-indices uint32 :offset 8) - (bucket-ptr basic :offset 12) - (max-scale uint16 :offset 38) - (flags uint16 :offset 46) + ((color-indices uint32 :offset 8) + (bucket-ptr prototype-bucket-tie :offset 12) + (max-scale uint16 :offset 38) + (flags uint16 :offset 46) ) :method-count-assert 18 :size-assert #x40 @@ -67,7 +67,7 @@ (format #t "~Tbucket-index: ~D~%" (-> obj bucket-index)) (format #t "~Torigin: #~%" (-> obj origin)) (format #t "~Twind-index: ~D~%" (-> obj wind-index)) - (format #t "~Tcolor-indices: #x~X~%" (-> obj unknown)) + (format #t "~Tcolor-indices: #x~X~%" (-> obj error)) (format #t "~Tbucket-ptr: ~A~%" (-> obj bucket-ptr)) (format #t "~Tmax-scale: ~D~%" (-> obj max-scale)) (format #t "~Tflags: ~D~%" (-> obj flags)) diff --git a/test/decompiler/reference/engine/math/vector-h_REF.gc b/test/decompiler/reference/engine/math/vector-h_REF.gc index 9d0d6fd3b1..564ab352ed 100644 --- a/test/decompiler/reference/engine/math/vector-h_REF.gc +++ b/test/decompiler/reference/engine/math/vector-h_REF.gc @@ -250,7 +250,7 @@ ;; definition of type vector4w (deftype vector4w (structure) - ((data int32 4 :offset-assert 0) + ((data uint32 4 :offset-assert 0) (x int32 :offset 0) (y int32 :offset 4) (z int32 :offset 8) diff --git a/test/decompiler/reference/engine/target/logic-target_REF.gc b/test/decompiler/reference/engine/target/logic-target_REF.gc index 5b8a5de412..55ee3eed2c 100644 --- a/test/decompiler/reference/engine/target/logic-target_REF.gc +++ b/test/decompiler/reference/engine/target/logic-target_REF.gc @@ -561,7 +561,7 @@ arg1 "~0ky:~,,2M t:~d cy: ~,,2M my: ~,,2M impv:~,,2M " (-> arg0 control unknown-vector52 y) - (- (-> *display* base-frame-counter) (-> arg0 control unknown-dword10)) + (- (-> *display* base-frame-counter) (-> arg0 control unknown-dword11)) (- (-> arg0 control trans y) (-> arg0 control unknown-vector52 y)) (- (-> arg0 control unknown-vector111 y) @@ -1382,7 +1382,7 @@ ((-> self control unknown-surface01 active-hook)) (cond ((logtest? (-> self control status) 1) - (set! (-> self control unknown-dword10) (-> *display* base-frame-counter)) + (set! (-> self control unknown-dword11) (-> *display* base-frame-counter)) (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) (if (and @@ -1603,7 +1603,7 @@ (when (and (>= - (- (-> *display* base-frame-counter) (-> self control unknown-dword10)) + (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) 600 ) (and @@ -1801,7 +1801,7 @@ (vector-! (new-stack-vector0) (-> s5-0 center-hold) - (the-as vector (&-> (-> self control) unknown-cspace00 bone)) + (-> self control unknown-vector90) ) ) ) @@ -1815,7 +1815,7 @@ ) ) (vector-normalize! s4-1 1228.8) - (TODO-RENAME-28 (-> self control)) + (TODO-RENAME-28 (-> self control) s4-1) (vector-float*! (-> self control rider-last-move) s4-1 @@ -1920,19 +1920,20 @@ a1-7 (-> *display* frames-per-second) ) + (set! + (-> self control rider-time) + (the-as uint (-> *display* base-frame-counter)) + ) + (TODO-RENAME-28 (-> self control) a1-7) ) ) - (set! - (-> self control rider-time) - (the-as uint (-> *display* base-frame-counter)) - ) - (TODO-RENAME-28 (-> self control)) (set! (-> self control unknown-float110) 0.0) (dummy-17 self) (none) ) ;; definition for function target-compute-pole +;; INFO: Return type mismatch symbol vs none. ;; Used lq/sq (defbehavior target-compute-pole target () (let* ((s4-0 (handle->process (-> self control unknown-handle10))) @@ -1965,7 +1966,7 @@ (send-event *camera* 'ease-in 0.5 v1-8) ) (vector-segment-distance-point! - (the-as vector (&-> (-> self control) unknown-cspace00 bone)) + (-> self control unknown-vector90) s3-0 s2-0 s5-0 @@ -1989,7 +1990,7 @@ (add-debug-sphere #t (bucket-id debug-draw0) - (the-as vector (&-> (-> self control) unknown-cspace00 bone)) + (-> self control unknown-vector90) 819.2 (new 'static 'rgba :r #xff :a #x80) ) @@ -2018,11 +2019,7 @@ ) (let ((s4-2 - (vector-! - (new-stack-vector0) - s5-0 - (the-as vector (&-> (-> self control) unknown-cspace00 bone)) - ) + (vector-! (new-stack-vector0) s5-0 (-> self control unknown-vector90)) ) ) (cond @@ -2030,12 +2027,7 @@ (< 2457.6 (vector-length s4-2)) (not (-> self control unknown-int20)) ) - (let* ((s5-1 (-> self control)) - (s3-1 (method-of-object s5-1 TODO-RENAME-28)) - ) - (vector-normalize! s4-2 2457.6) - (s3-1 s5-1) - ) + (TODO-RENAME-28 (-> self control) (vector-normalize! s4-2 2457.6)) ) (else (set! (-> self control unknown-int20) (the-as int #t)) @@ -2257,15 +2249,11 @@ s5-0 (the-as cspace (-> self control unknown-cspace00 joint)) ) - (vector-average! - (the-as vector (&-> (-> self control) unknown-cspace00 bone)) - gp-0 - s5-0 - ) + (vector-average! (-> self control unknown-vector90) gp-0 s5-0) ) (vector-! (-> self control unknown-vector91) - (the-as vector (&-> (-> self control) unknown-cspace00 bone)) + (-> self control unknown-vector90) (-> self control trans) ) (cond @@ -2552,7 +2540,7 @@ (vector-! (-> self control unknown-vector12) (-> self control unknown-vector11) - (-> self control unknown-vector13) + (-> self control unknown-vector14) ) (let ((a1-3 (new 'stack-no-clear 'collide-edge-hold-list))) (set! (-> a1-3 num-allocs) (the-as uint 1)) @@ -2679,7 +2667,7 @@ (vector-! (-> self control unknown-vector12) (-> self control unknown-vector11) - (-> self control unknown-vector13) + (-> self control unknown-vector14) ) (let ((a1-2 (new 'stack-no-clear 'collide-edge-hold-list))) (set! (-> a1-2 num-allocs) (the-as uint 1)) @@ -2717,7 +2705,7 @@ ) (quaternion-identity! (-> self control unknown-quaternion01)) (set! (-> self control unknown-float00) 0.0) - (set! (-> self control unknown-dword10) (-> *display* base-frame-counter)) + (set! (-> self control unknown-dword11) (-> *display* base-frame-counter)) (set! (-> self control unknown-float80) 0.0) (set! (-> self control unknown-float82) 32.0) (set! (-> self cam-user-mode) 'normal) @@ -2754,13 +2742,13 @@ (set! (-> s4-0 collide-with) (the-as uint #x2bef)) (set! (-> s4-0 prim-core offense) 1) (set! (-> s4-0 prim-core action) (the-as uint 5)) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 6)))) (set! (-> s3-0 prim-core action) (the-as uint 5)) (set! (-> s3-0 prim-core collide-as) (the-as uint 16)) (set! (-> s3-0 collide-with) (the-as uint #x2bef)) (set! (-> s3-0 prim-core offense) 1) - (dummy-28 s4-0) + (append-prim s4-0 s3-0) (set! (-> s5-0 unknown-sphere-array00 0) s3-0) ) (let @@ -2769,7 +2757,7 @@ (set! (-> s3-1 prim-core collide-as) (the-as uint 16)) (set! (-> s3-1 collide-with) (the-as uint #x2bef)) (set! (-> s3-1 prim-core offense) 1) - (dummy-28 s4-0) + (append-prim s4-0 s3-1) (set! (-> s5-0 unknown-sphere-array00 1) s3-1) ) (let @@ -2778,28 +2766,28 @@ (set! (-> s3-2 prim-core collide-as) (the-as uint 16)) (set! (-> s3-2 collide-with) (the-as uint #x2bef)) (set! (-> s3-2 prim-core offense) 1) - (dummy-28 s4-0) + (append-prim s4-0 s3-2) (set! (-> s5-0 unknown-sphere-array00 2) s3-2) ) (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 32)))) - (dummy-28 s4-0) + (append-prim s4-0 s3-3) (set! (-> s5-0 unknown-sphere00) s3-3) ) (let ((s3-4 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 64)))) - (dummy-28 s4-0) + (append-prim s4-0 s3-4) (set! (-> s5-0 unknown-sphere01) s3-4) ) (let ((s3-5 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 128)))) - (dummy-28 s4-0) + (append-prim s4-0 s3-5) (set! (-> s5-0 unknown-sphere02) s3-5) ) ) ) (target-collide-set! 'normal 0.0) - (dummy-50 (-> self control)) + (backup-collide-with-as (-> self control)) (set! (-> self game) *game-info*) (TODO-RENAME-30 (-> self control) (-> arg0 trans)) (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> arg0 trans quad)) diff --git a/test/decompiler/reference/engine/target/target-h_REF.gc b/test/decompiler/reference/engine/target/target-h_REF.gc index 7dc48ae00d..3b8796a7f0 100644 --- a/test/decompiler/reference/engine/target/target-h_REF.gc +++ b/test/decompiler/reference/engine/target/target-h_REF.gc @@ -34,7 +34,7 @@ :size-assert #x248 :flag-assert #x1501e00248 (:methods - (dummy-20 (_type_ collide-cache) none 20) + (dummy-20 (_type_ collide-cache) object 20) ) (:states target-clone-anim diff --git a/test/decompiler/reference/engine/target/target-util_REF.gc b/test/decompiler/reference/engine/target/target-util_REF.gc index a116115576..48ae0beb97 100644 --- a/test/decompiler/reference/engine/target/target-util_REF.gc +++ b/test/decompiler/reference/engine/target/target-util_REF.gc @@ -1051,7 +1051,7 @@ (or (logtest? (-> self control status) 1) (< - (- (-> *display* base-frame-counter) (-> self control unknown-dword10)) + (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (the-as int (-> *TARGET-bank* ground-timeout)) ) (and @@ -1098,7 +1098,7 @@ (and (zero? (logand (-> self control status) 1)) (>= - (- (-> *display* base-frame-counter) (-> self control unknown-dword10)) + (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (the-as int (-> *TARGET-bank* ground-timeout)) ) (>= @@ -1149,7 +1149,7 @@ (and (zero? (logand (-> self control status) 129)) (>= - (- (-> *display* base-frame-counter) (-> self control unknown-dword10)) + (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (the-as int (-> *TARGET-bank* ground-timeout)) ) (logtest? (-> self control status) 4) @@ -1222,7 +1222,7 @@ (set! (-> s5-0 1 quad) (-> self control trans quad)) (set! (-> s5-0 1 y) (+ 2867.2 (-> *TARGET-bank* body-radius) (-> s5-0 1 y))) (set! (-> s5-0 1 w) (-> *TARGET-bank* body-radius)) - (set! (-> gp-0 spheres) (the-as uint s5-0)) + (set! (-> gp-0 spheres) (the-as (pointer sphere) s5-0)) ) (set! (-> gp-0 num-spheres) (the-as uint 2)) (set! (-> gp-0 collide-with) (-> self control root-prim collide-with)) @@ -1275,7 +1275,7 @@ (not arg0) (and (< - (- (-> *display* base-frame-counter) (-> self control unknown-dword10)) + (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (the-as int (-> *TARGET-bank* ground-timeout)) ) (< (-> self control unknown-float61) 0.7) diff --git a/test/decompiler/reference/kernel/gstate_REF.gc b/test/decompiler/reference/kernel/gstate_REF.gc index 630aebc588..594196b681 100644 --- a/test/decompiler/reference/kernel/gstate_REF.gc +++ b/test/decompiler/reference/kernel/gstate_REF.gc @@ -177,7 +177,7 @@ ;; definition for function looping-code ;; INFO: Return type mismatch none vs symbol. -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 2] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 2] (defun looping-code () (while #t (suspend) diff --git a/test/decompiler/reference/levels/beach/beach-rocks_REF.gc b/test/decompiler/reference/levels/beach/beach-rocks_REF.gc index cf4027432b..7ed732bedc 100644 --- a/test/decompiler/reference/levels/beach/beach-rocks_REF.gc +++ b/test/decompiler/reference/levels/beach/beach-rocks_REF.gc @@ -653,7 +653,7 @@ (vector<-cspace! s5-0 (-> obj node-list data 8)) (birth-pickup-at-point s5-0 - 6 + (pickup-type fuel-cell) (the float (the-as int (-> obj entity extra perm task))) #f obj @@ -696,7 +696,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new @@ -714,10 +720,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/beach/lurkercrab_REF.gc b/test/decompiler/reference/levels/beach/lurkercrab_REF.gc index 4ec724ec90..183f5aaa86 100644 --- a/test/decompiler/reference/levels/beach/lurkercrab_REF.gc +++ b/test/decompiler/reference/levels/beach/lurkercrab_REF.gc @@ -105,7 +105,7 @@ ) ;; definition for method 44 of type lurkercrab -;; INFO: Return type mismatch none vs object. +;; INFO: Return type mismatch symbol vs object. (defmethod dummy-44 lurkercrab @@ -125,7 +125,14 @@ 'generic ) ) - (dummy-55 (-> obj collide-info) arg0 (-> arg1 param 0) 0.7 6144.0 16384.0) + (dummy-55 + (-> obj collide-info) + arg0 + (the-as touching-shapes-entry (-> arg1 param 0)) + 0.7 + 6144.0 + 16384.0 + ) (the-as object (if (zero? (logand (-> obj nav-enemy-flags) 256)) (dummy-45 (-> obj collide-info)) ) @@ -1161,40 +1168,46 @@ nav-enemy-default-event-handler ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set-vector! (-> s3-0 local-sphere) 0.0 10240.0 0.0 12288.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) (set! (-> s2-0 collide-with) (the-as uint 16)) (set! (-> s2-0 prim-core action) (the-as uint 1)) (set! (-> s2-0 prim-core offense) 4) (set-vector! (-> s2-0 local-sphere) 0.0 4915.2 0.0 4096.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) (set! (-> s2-1 collide-with) (the-as uint 16)) (set! (-> s2-1 prim-core offense) 2) (set! (-> s2-1 transform-index) 16) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 1638.4) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) (set! (-> s2-2 collide-with) (the-as uint 16)) (set! (-> s2-2 prim-core offense) 2) (set! (-> s2-2 transform-index) 21) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 1638.4) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) 4096.0) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj collide-info) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/beach/lurkerpuppy_REF.gc b/test/decompiler/reference/levels/beach/lurkerpuppy_REF.gc index cac60d4d65..bd9e7fea25 100644 --- a/test/decompiler/reference/levels/beach/lurkerpuppy_REF.gc +++ b/test/decompiler/reference/levels/beach/lurkerpuppy_REF.gc @@ -603,17 +603,23 @@ nav-enemy-default-event-handler ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 2) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 4915.2) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) 2048.0) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj collide-info) s5-0) ) 0 diff --git a/test/decompiler/reference/levels/beach/lurkerworm_REF.gc b/test/decompiler/reference/levels/beach/lurkerworm_REF.gc index cc9e84d44c..ef12ed1588 100644 --- a/test/decompiler/reference/levels/beach/lurkerworm_REF.gc +++ b/test/decompiler/reference/levels/beach/lurkerworm_REF.gc @@ -910,13 +910,19 @@ lurkerworm-default-post-behavior ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 6) 0))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set-vector! (-> s3-0 local-sphere) 0.0 10240.0 0.0 24576.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) (set! (-> s2-0 collide-with) (the-as uint 16)) @@ -924,8 +930,8 @@ lurkerworm-default-post-behavior (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4096.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) (set! (-> s2-1 collide-with) (the-as uint 16)) @@ -933,8 +939,8 @@ lurkerworm-default-post-behavior (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 5) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 4096.0) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) (set! (-> s2-2 collide-with) (the-as uint 16)) @@ -942,8 +948,8 @@ lurkerworm-default-post-behavior (set! (-> s2-2 prim-core offense) 4) (set! (-> s2-2 transform-index) 6) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 4096.0) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) (set! (-> s2-3 collide-with) (the-as uint 16)) @@ -951,8 +957,8 @@ lurkerworm-default-post-behavior (set! (-> s2-3 prim-core offense) 4) (set! (-> s2-3 transform-index) 7) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 4096.0) + (append-prim s3-0 s2-3) ) - (dummy-28 s3-0) (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-4 prim-core collide-as) (the-as uint 256)) (set! (-> s2-4 collide-with) (the-as uint 16)) @@ -960,19 +966,19 @@ lurkerworm-default-post-behavior (set! (-> s2-4 prim-core offense) 4) (set! (-> s2-4 transform-index) 8) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 4096.0) + (append-prim s3-0 s2-4) ) - (dummy-28 s3-0) (let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-5 prim-core collide-as) (the-as uint 256)) (set! (-> s2-5 collide-with) (the-as uint 16)) (set! (-> s2-5 prim-core offense) 2) (set! (-> s2-5 transform-index) 11) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 6144.0) + (append-prim s3-0 s2-5) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/citadel/citadel-obs_REF.gc b/test/decompiler/reference/levels/citadel/citadel-obs_REF.gc index 0a4297ff02..5a99acb5fb 100644 --- a/test/decompiler/reference/levels/citadel/citadel-obs_REF.gc +++ b/test/decompiler/reference/levels/citadel/citadel-obs_REF.gc @@ -199,8 +199,8 @@ :post (behavior () (if (logtest? (-> self draw status) 2) - (dummy-48 (-> self root-override)) - (dummy-49 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) + (restore-collide-with-as (-> self root-override)) ) (rider-post) (none) @@ -217,7 +217,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -236,10 +242,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 40960.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 @@ -561,7 +567,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -580,10 +592,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 49152.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 @@ -785,10 +797,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 @@ -844,7 +856,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new @@ -862,10 +880,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) (the-as collide-shape-moving 0) @@ -1493,10 +1511,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 81920.0 0.0 143360.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -2403,10 +2421,10 @@ (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 4) (set-vector! (-> s4-0 local-sphere) 0.0 4096.0 0.0 4096.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/test/decompiler/reference/levels/citadel/citadel-sages_REF.gc b/test/decompiler/reference/levels/citadel/citadel-sages_REF.gc index 146fe04fda..9bdd8555ca 100644 --- a/test/decompiler/reference/levels/citadel/citadel-sages_REF.gc +++ b/test/decompiler/reference/levels/citadel/citadel-sages_REF.gc @@ -97,7 +97,7 @@ ;; definition for function citb-sagecage-update-collision ;; INFO: Return type mismatch int vs none. (defbehavior citb-sagecage-update-collision citb-sagecage () - (dummy-28 + (change-mesh (the-as collide-shape-prim-mesh (-> self root-override root-prim)) (if (-> self bars-on) 0 @@ -207,7 +207,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -226,10 +232,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 20480.0 0.0 28672.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/test/decompiler/reference/levels/citadel/citb-drop-plat-CIT_REF.gc b/test/decompiler/reference/levels/citadel/citb-drop-plat-CIT_REF.gc index f3ccb3b2db..66cb6ad088 100644 --- a/test/decompiler/reference/levels/citadel/citb-drop-plat-CIT_REF.gc +++ b/test/decompiler/reference/levels/citadel/citb-drop-plat-CIT_REF.gc @@ -378,7 +378,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -397,10 +403,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/test/decompiler/reference/levels/common/babak-with-cannon_REF.gc b/test/decompiler/reference/levels/common/babak-with-cannon_REF.gc index 48970e03db..35f4ec72ec 100644 --- a/test/decompiler/reference/levels/common/babak-with-cannon_REF.gc +++ b/test/decompiler/reference/levels/common/babak-with-cannon_REF.gc @@ -628,7 +628,7 @@ nav-enemy-default-event-handler :code (behavior () (ja-channel-set! 0) - (dummy-48 (-> self collide-info)) + (clear-collide-with-as (-> self collide-info)) (ja-post) (when (not (task-complete? *game-info* (-> self entity extra perm task))) (when @@ -652,7 +652,7 @@ nav-enemy-default-event-handler (if (not (-> self child)) (birth-pickup-at-point (-> self collide-info trans) - 6 + (pickup-type fuel-cell) (the float (-> self entity extra perm task)) #f self @@ -702,7 +702,7 @@ nav-enemy-default-event-handler (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) ) ) - (zero? (logand (-> obj enemy-info options) 2)) + (zero? (logand (-> obj enemy-info options) (fact-options fop1))) ) (go (method-of-object obj nav-enemy-idle)) ) diff --git a/test/decompiler/reference/levels/common/babak_REF.gc b/test/decompiler/reference/levels/common/babak_REF.gc index 47aa4daab1..3b1eed95ff 100644 --- a/test/decompiler/reference/levels/common/babak_REF.gc +++ b/test/decompiler/reference/levels/common/babak_REF.gc @@ -624,40 +624,46 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 3) 0))) (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 12288.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 1) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 3072.0) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) (set! (-> s3-1 collide-with) (the-as uint 16)) (set! (-> s3-1 prim-core action) (the-as uint 1)) (set! (-> s3-1 prim-core offense) 1) (set-vector! (-> s3-1 local-sphere) 0.0 9830.4 0.0 3072.0) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) (set! (-> s3-2 collide-with) (the-as uint 16)) (set! (-> s3-2 prim-core offense) 2) (set! (-> s3-2 transform-index) 6) (set-vector! (-> s3-2 local-sphere) 0.0 0.0 0.0 2048.0) + (append-prim s4-0 s3-2) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) 6144.0) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) (set! (-> obj collide-info) s5-0) ) @@ -686,11 +692,11 @@ (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) ) - (logtest? (-> obj enemy-info options) 2) + (logtest? (-> obj enemy-info options) (fact-options fop1)) ) (go (method-of-object obj nav-enemy-fuel-cell)) ) - ((logtest? (-> obj enemy-info options) 32) + ((logtest? (-> obj enemy-info options) (fact-options fop5)) (go (method-of-object obj nav-enemy-wait-for-cue)) ) (else diff --git a/test/decompiler/reference/levels/common/basebutton_REF.gc b/test/decompiler/reference/levels/common/basebutton_REF.gc index 9c1bfce14c..4f2aaa5c74 100644 --- a/test/decompiler/reference/levels/common/basebutton_REF.gc +++ b/test/decompiler/reference/levels/common/basebutton_REF.gc @@ -532,14 +532,20 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 3)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new @@ -557,8 +563,8 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) (let ((s3-1 (new @@ -576,11 +582,11 @@ (set! (-> s3-1 prim-core offense) 4) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 12288.0) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) s5-0 ) @@ -924,7 +930,7 @@ ) ) ) - (dummy-48 (-> self control)) + (clear-collide-with-as (-> self control)) (set! (-> self state-time) (-> *display* base-frame-counter)) (set! (-> self trans-hook) diff --git a/test/decompiler/reference/levels/common/baseplat_REF.gc b/test/decompiler/reference/levels/common/baseplat_REF.gc index 792a4743ff..71b6df5c4b 100644 --- a/test/decompiler/reference/levels/common/baseplat_REF.gc +++ b/test/decompiler/reference/levels/common/baseplat_REF.gc @@ -329,7 +329,7 @@ eco-door-event-handler ) ) (sound-play-by-name (-> self open-sound) (new-sound-id) 1024 0 0 1 #t) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (until (ja-done? 0) (let ((a0-9 (-> self skel root-channel 0))) (set! @@ -365,7 +365,7 @@ eco-door-event-handler (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (process-entity-status! self (entity-perm-status complete) #t) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (let ((v1-6 (-> self skel root-channel 0))) (set! (-> v1-6 num-func) num-func-identity) (set! @@ -413,7 +413,7 @@ eco-door-event-handler eco-door-event-handler :code (behavior () - (dummy-49 (-> self root-override)) + (restore-collide-with-as (-> self root-override)) (set! (-> self draw status) (logand -3 (-> self draw status))) (let ((gp-0 (new 'stack 'overlaps-others-params))) (set! (-> gp-0 options) (the-as uint 1)) @@ -492,10 +492,10 @@ eco-door-event-handler (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/test/decompiler/reference/levels/common/battlecontroller_REF.gc b/test/decompiler/reference/levels/common/battlecontroller_REF.gc index a75e08ecb3..d397ed0c4f 100644 --- a/test/decompiler/reference/levels/common/battlecontroller_REF.gc +++ b/test/decompiler/reference/levels/common/battlecontroller_REF.gc @@ -339,11 +339,11 @@ battlecontroller-default-event-handler (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info pickup-spawn-amount) 0.0 ) - (logior! (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info options) 512) - (set! - (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info fade-time) - (the-as uint 1200) + (logior! + (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info options) + (fact-options fade) ) + (set! (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info fade-time) 1200) ) ) ) @@ -786,7 +786,7 @@ battlecontroller-default-event-handler (label cfg-15) (birth-pickup-at-point (-> self final-pickup-spawn-point) - (the-as int (-> self final-pickup-type)) + (-> self final-pickup-type) (the float (-> self entity extra perm task)) #f self diff --git a/test/decompiler/reference/levels/common/blocking-plane_REF.gc b/test/decompiler/reference/levels/common/blocking-plane_REF.gc index fd3e5af85c..1eb2491e9d 100644 --- a/test/decompiler/reference/levels/common/blocking-plane_REF.gc +++ b/test/decompiler/reference/levels/common/blocking-plane_REF.gc @@ -82,10 +82,10 @@ (set! (-> s3-1 prim-core offense) 4) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 (fmax 122880.0 f30-1)) + (set-root-prim! s4-1 s3-1) ) - (dummy-46 s4-1) (set! (-> s4-1 nav-radius) (* 0.75 (-> s4-1 root-prim local-sphere w))) - (dummy-50 s4-1) + (backup-collide-with-as s4-1) (set! (-> self root) s4-1) ) (let ((s4-2 (new-stack-matrix0))) diff --git a/test/decompiler/reference/levels/common/nav-enemy_REF.gc b/test/decompiler/reference/levels/common/nav-enemy_REF.gc index 55710dfe59..3f506df011 100644 --- a/test/decompiler/reference/levels/common/nav-enemy_REF.gc +++ b/test/decompiler/reference/levels/common/nav-enemy_REF.gc @@ -322,15 +322,13 @@ ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('death-start) - (TODO-RENAME-9 (-> self fact) #t *entity-pool* (-> self fact) 0) + (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) ) (('death-end) - (let ((v0-0 (logior (-> self draw status) 2))) - (set! (-> self draw status) v0-0) - v0-0 - ) + (logior! (-> self draw status) 2) ) ) + (none) ) ;; failed to figure out what this is: @@ -2278,7 +2276,7 @@ nav-enemy-default-event-handler :code (behavior () (ja-channel-push! 1 22) - (dummy-48 (-> self collide-info)) + (clear-collide-with-as (-> self collide-info)) (nav-enemy-fall-and-play-death-anim (the-as art-joint-anim @@ -2290,7 +2288,7 @@ nav-enemy-default-event-handler 600 ) (send-event self 'death-end) - (if (logtest? (-> self enemy-info options) 2) + (if (logtest? (-> self enemy-info options) (fact-options fop1)) (go-virtual nav-enemy-fuel-cell) ) (while (-> self child) @@ -2314,14 +2312,14 @@ nav-enemy-default-event-handler :code (behavior () (ja-channel-set! 0) - (dummy-48 (-> self collide-info)) + (clear-collide-with-as (-> self collide-info)) (ja-post) (process-entity-status! self (entity-perm-status complete) #t) (when (not (task-complete? *game-info* (-> self entity extra perm task))) (label cfg-1) (birth-pickup-at-point (-> self collide-info trans) - 6 + (pickup-type fuel-cell) (the float (the-as int (-> self entity extra perm task))) #f self diff --git a/test/decompiler/reference/levels/common/orb-cache_REF.gc b/test/decompiler/reference/levels/common/orb-cache_REF.gc index 1954121467..86afd3a29d 100644 --- a/test/decompiler/reference/levels/common/orb-cache_REF.gc +++ b/test/decompiler/reference/levels/common/orb-cache_REF.gc @@ -491,7 +491,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -510,10 +516,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 11468.8) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/common/plat-button_REF.gc b/test/decompiler/reference/levels/common/plat-button_REF.gc index 1a6c97ec01..d7759ff9f1 100644 --- a/test/decompiler/reference/levels/common/plat-button_REF.gc +++ b/test/decompiler/reference/levels/common/plat-button_REF.gc @@ -572,7 +572,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) @@ -580,7 +586,7 @@ (set! (-> s4-0 prim-core action) (the-as uint 3)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -4096.0 0.0 27033.6) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new @@ -598,8 +604,8 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 -3072.0 0.0 7372.8) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) (let ((s3-1 (new @@ -617,11 +623,11 @@ (set! (-> s3-1 prim-core offense) 4) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 -4096.0 0.0 27033.6) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) s5-0 ) @@ -634,6 +640,7 @@ ) ;; definition for method 27 of type plat-button +;; INFO: Return type mismatch symbol vs none. (defmethod TODO-RENAME-27 plat-button ((obj plat-button)) (ja-channel-set! 1) (cond diff --git a/test/decompiler/reference/levels/common/plat_REF.gc b/test/decompiler/reference/levels/common/plat_REF.gc index 917493cf3a..e5f7efa9f7 100644 --- a/test/decompiler/reference/levels/common/plat_REF.gc +++ b/test/decompiler/reference/levels/common/plat_REF.gc @@ -178,7 +178,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -197,10 +203,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 13107.2) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 @@ -311,10 +317,12 @@ ) :trans (behavior () - (set! (-> self path-pos) (if (logtest? (-> self fact options) 8) - (get-current-phase (-> self sync)) - (get-current-phase-with-mirror (-> self sync)) - ) + (set! + (-> self path-pos) + (if (logtest? (-> self fact options) (fact-options fop3)) + (get-current-phase (-> self sync)) + (get-current-phase-with-mirror (-> self sync)) + ) ) (eval-path-curve! (-> self path) @@ -383,10 +391,12 @@ ) ) ((> (-> obj sync period) 0) - (set! (-> obj path-pos) (if (logtest? (-> obj fact options) 8) - (get-current-phase (-> obj sync)) - (get-current-phase-with-mirror (-> obj sync)) - ) + (set! + (-> obj path-pos) + (if (logtest? (-> obj fact options) (fact-options fop3)) + (get-current-phase (-> obj sync)) + (get-current-phase-with-mirror (-> obj sync)) + ) ) (eval-path-curve! (-> obj path) diff --git a/test/decompiler/reference/levels/common/rigid-body_REF.gc b/test/decompiler/reference/levels/common/rigid-body_REF.gc index 09b37d132a..502ef872c5 100644 --- a/test/decompiler/reference/levels/common/rigid-body_REF.gc +++ b/test/decompiler/reference/levels/common/rigid-body_REF.gc @@ -1081,7 +1081,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -1100,10 +1106,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-overlay) s5-0) ) 0 diff --git a/test/decompiler/reference/levels/common/sharkey_REF.gc b/test/decompiler/reference/levels/common/sharkey_REF.gc index e4467dbcd9..b09161d6de 100644 --- a/test/decompiler/reference/levels/common/sharkey_REF.gc +++ b/test/decompiler/reference/levels/common/sharkey_REF.gc @@ -1222,16 +1222,22 @@ nav-enemy-default-event-handler ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core offense) 2) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 (* 6144.0 (-> obj scale))) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj collide-info) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/darkcave/darkcave-obs_REF.gc b/test/decompiler/reference/levels/darkcave/darkcave-obs_REF.gc index b63ffcd140..4ad3c5e06e 100644 --- a/test/decompiler/reference/levels/darkcave/darkcave-obs_REF.gc +++ b/test/decompiler/reference/levels/darkcave/darkcave-obs_REF.gc @@ -330,10 +330,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 19251.2 0.0 22118.4) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) 4915.2) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (set! (-> obj link) (new 'process 'actor-link-info obj)) diff --git a/test/decompiler/reference/levels/finalboss/final-door_REF.gc b/test/decompiler/reference/levels/finalboss/final-door_REF.gc index 824a7b26d2..c1f7f7a6ce 100644 --- a/test/decompiler/reference/levels/finalboss/final-door_REF.gc +++ b/test/decompiler/reference/levels/finalboss/final-door_REF.gc @@ -249,7 +249,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new @@ -267,10 +273,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 45056.0 0.0 49152.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -544,15 +550,21 @@ ) (set! (-> s3-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s3-0 reaction) default-collision-reaction) - (set! (-> s3-0 no-reaction) nothing) + (set! + (-> s3-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 0)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 64)) (set! (-> s2-0 collide-with) (the-as uint 16)) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4915.2) + (set-root-prim! s3-0 s2-0) ) - (dummy-46 s3-0) (set! (-> s3-0 nav-radius) (* 0.75 (-> s3-0 root-prim local-sphere w))) - (dummy-50 s3-0) + (backup-collide-with-as s3-0) (set! (-> self root-override) s3-0) ) (set! (-> self root-override trans quad) (-> arg1 quad)) diff --git a/test/decompiler/reference/levels/finalboss/green-eco-lurker_REF.gc b/test/decompiler/reference/levels/finalboss/green-eco-lurker_REF.gc index 9beb68da43..81b646ea3d 100644 --- a/test/decompiler/reference/levels/finalboss/green-eco-lurker_REF.gc +++ b/test/decompiler/reference/levels/finalboss/green-eco-lurker_REF.gc @@ -537,13 +537,13 @@ :enter (behavior () (logior! (-> self draw status) 2) - (dummy-48 (-> self collide-info)) + (clear-collide-with-as (-> self collide-info)) (none) ) :exit (behavior () (set! (-> self draw status) (logand -3 (-> self draw status))) - (dummy-49 (-> self collide-info)) + (restore-collide-with-as (-> self collide-info)) (none) ) :trans @@ -1160,73 +1160,79 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 7) 0))) (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 transform-index) 4) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 -4096.0 20480.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 1) (set-vector! (-> s3-0 local-sphere) 0.0 2785.28 0.0 3276.8) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) (set! (-> s3-1 collide-with) (the-as uint 16)) (set! (-> s3-1 prim-core action) (the-as uint 1)) (set! (-> s3-1 prim-core offense) 1) (set-vector! (-> s3-1 local-sphere) 0.0 6615.04 0.0 3276.8) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) (set! (-> s3-2 collide-with) (the-as uint 16)) (set! (-> s3-2 prim-core action) (the-as uint 1)) (set! (-> s3-2 prim-core offense) 1) (set-vector! (-> s3-2 local-sphere) 0.0 10444.8 0.0 3276.8) + (append-prim s4-0 s3-2) ) - (dummy-28 s4-0) (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-3 prim-core collide-as) (the-as uint 256)) (set! (-> s3-3 collide-with) (the-as uint 16)) (set! (-> s3-3 prim-core offense) 2) (set! (-> s3-3 transform-index) 6) (set-vector! (-> s3-3 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s4-0 s3-3) ) - (dummy-28 s4-0) (let ((s3-4 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-4 prim-core collide-as) (the-as uint 256)) (set! (-> s3-4 collide-with) (the-as uint 16)) (set! (-> s3-4 prim-core offense) 2) (set! (-> s3-4 transform-index) 4) (set-vector! (-> s3-4 local-sphere) 0.0 -3276.8 -2048.0 5734.4) + (append-prim s4-0 s3-4) ) - (dummy-28 s4-0) (let ((s3-5 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-5 prim-core collide-as) (the-as uint 256)) (set! (-> s3-5 collide-with) (the-as uint 16)) (set! (-> s3-5 prim-core offense) 2) (set! (-> s3-5 transform-index) 12) (set-vector! (-> s3-5 local-sphere) 0.0 0.0 0.0 2457.6) + (append-prim s4-0 s3-5) ) - (dummy-28 s4-0) (let ((s3-6 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-6 prim-core collide-as) (the-as uint 256)) (set! (-> s3-6 collide-with) (the-as uint 16)) (set! (-> s3-6 prim-core offense) 2) (set! (-> s3-6 transform-index) 16) (set-vector! (-> s3-6 local-sphere) 0.0 0.0 0.0 2457.6) + (append-prim s4-0 s3-6) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) 8192.0) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) (set! (-> obj collide-info) s5-0) ) diff --git a/test/decompiler/reference/levels/finalboss/light-eco_REF.gc b/test/decompiler/reference/levels/finalboss/light-eco_REF.gc index 55fc7d09bb..8b87b95bfb 100644 --- a/test/decompiler/reference/levels/finalboss/light-eco_REF.gc +++ b/test/decompiler/reference/levels/finalboss/light-eco_REF.gc @@ -787,7 +787,7 @@ 'untrigger (-> self angle-bit) ) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (logior! (-> self draw status) 2) (set! (-> self state-time) (-> *display* base-frame-counter)) (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30) @@ -838,10 +838,10 @@ (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core offense) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 4096.0) + (set-root-prim! s4-2 s3-0) ) - (dummy-46 s4-2) (set! (-> s4-2 nav-radius) (* 0.75 (-> s4-2 root-prim local-sphere w))) - (dummy-50 s4-2) + (backup-collide-with-as s4-2) (set! (-> self root-override) s4-2) ) (set! (-> self root-override trans quad) (-> arg1 quad)) diff --git a/test/decompiler/reference/levels/finalboss/robotboss-misc_REF.gc b/test/decompiler/reference/levels/finalboss/robotboss-misc_REF.gc index 4a1aa3f7eb..e6560c3e91 100644 --- a/test/decompiler/reference/levels/finalboss/robotboss-misc_REF.gc +++ b/test/decompiler/reference/levels/finalboss/robotboss-misc_REF.gc @@ -186,8 +186,8 @@ ;; definition for function ecoclaw-handler ;; INFO: Return type mismatch none vs object. -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 28] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 79] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 28] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 79] ;; Used lq/sq (defbehavior ecoclaw-handler ecoclaw @@ -610,7 +610,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 4) 0))) (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) @@ -618,7 +624,7 @@ (set! (-> s3-0 prim-core action) (the-as uint 3)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 102400.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new @@ -636,8 +642,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 5) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 102400.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new @@ -655,8 +661,8 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 102400.0) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new @@ -674,8 +680,8 @@ (set! (-> s2-2 prim-core offense) 4) (set! (-> s2-2 transform-index) 7) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 102400.0) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) (let ((s2-3 (new @@ -693,11 +699,11 @@ (set! (-> s2-3 prim-core offense) 4) (set! (-> s2-3 transform-index) 6) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 102400.0) + (append-prim s3-0 s2-3) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/finalboss/robotboss-weapon_REF.gc b/test/decompiler/reference/levels/finalboss/robotboss-weapon_REF.gc index caf21d5177..7383b34263 100644 --- a/test/decompiler/reference/levels/finalboss/robotboss-weapon_REF.gc +++ b/test/decompiler/reference/levels/finalboss/robotboss-weapon_REF.gc @@ -839,7 +839,13 @@ ) (set! (-> s1-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s1-0 reaction) default-collision-reaction) - (set! (-> s1-0 no-reaction) nothing) + (set! + (-> s1-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s0-0 (new 'process 'collide-shape-prim-sphere s1-0 (the-as uint 0)))) (set! (-> s0-0 prim-core collide-as) (the-as uint 512)) (set! (-> s0-0 collide-with) (the-as uint 16)) @@ -847,10 +853,10 @@ (set! (-> s0-0 prim-core offense) 4) (set! (-> s0-0 transform-index) 3) (set-vector! (-> s0-0 local-sphere) 0.0 0.0 0.0 16384.0) + (set-root-prim! s1-0 s0-0) ) - (dummy-46 s1-0) (set! (-> s1-0 nav-radius) (* 0.75 (-> s1-0 root-prim local-sphere w))) - (dummy-50 s1-0) + (backup-collide-with-as s1-0) (set! (-> self root) s1-0) ) (set! (-> self root trans quad) (-> arg0 quad)) @@ -1012,16 +1018,22 @@ ) (set! (-> s2-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s2-0 reaction) default-collision-reaction) - (set! (-> s2-0 no-reaction) nothing) + (set! + (-> s2-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s1-0 (new 'process 'collide-shape-prim-sphere s2-0 (the-as uint 0)))) (set! (-> s1-0 prim-core collide-as) (the-as uint 256)) (set! (-> s1-0 collide-with) (the-as uint 16)) (set! (-> s1-0 prim-core offense) 4) (set-vector! (-> s1-0 local-sphere) 0.0 8192.0 0.0 8192.0) + (set-root-prim! s2-0 s1-0) ) - (dummy-46 s2-0) (set! (-> s2-0 nav-radius) (* 0.75 (-> s2-0 root-prim local-sphere w))) - (dummy-50 s2-0) + (backup-collide-with-as s2-0) (set! (-> self root) s2-0) ) (set! (-> self root trans quad) (-> arg0 quad)) @@ -1371,7 +1383,13 @@ ) (set! (-> s0-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s0-0 reaction) default-collision-reaction) - (set! (-> s0-0 no-reaction) nothing) + (set! + (-> s0-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (set! sv-16 (new 'process 'collide-shape-prim-sphere s0-0 (the-as uint 0))) (set! (-> sv-16 prim-core collide-as) (the-as uint 512)) (set! (-> sv-16 collide-with) (the-as uint 16)) @@ -1379,14 +1397,9 @@ (set! (-> sv-16 prim-core offense) 4) (set! (-> sv-16 transform-index) 4) (set-vector! (-> sv-16 local-sphere) 0.0 0.0 0.0 12288.0) - (let* ((a0-9 s0-0) - (t9-3 (method-of-object a0-9 dummy-46)) - ) - sv-16 - (t9-3 a0-9) - ) + (set-root-prim! s0-0 sv-16) (set! (-> s0-0 nav-radius) (* 0.75 (-> s0-0 root-prim local-sphere w))) - (dummy-50 s0-0) + (backup-collide-with-as s0-0) (set! (-> self root) s0-0) ) (set! (-> self root trans quad) (-> arg0 quad)) @@ -1525,17 +1538,23 @@ ) (set! (-> s2-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s2-0 reaction) default-collision-reaction) - (set! (-> s2-0 no-reaction) nothing) + (set! + (-> s2-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s1-0 (new 'process 'collide-shape-prim-sphere s2-0 (the-as uint 0)))) (set! (-> s1-0 prim-core collide-as) (the-as uint 512)) (set! (-> s1-0 collide-with) (the-as uint 16)) (set! (-> s1-0 prim-core action) (the-as uint 1)) (set! (-> s1-0 prim-core offense) 4) (set-vector! (-> s1-0 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s2-0 s1-0) ) - (dummy-46 s2-0) (set! (-> s2-0 nav-radius) (* 0.75 (-> s2-0 root-prim local-sphere w))) - (dummy-50 s2-0) + (backup-collide-with-as s2-0) (set! (-> self root) s2-0) ) (set! (-> self root trans quad) (-> arg0 quad)) diff --git a/test/decompiler/reference/levels/finalboss/robotboss_REF.gc b/test/decompiler/reference/levels/finalboss/robotboss_REF.gc index 3534372a76..b44fef5c0e 100644 --- a/test/decompiler/reference/levels/finalboss/robotboss_REF.gc +++ b/test/decompiler/reference/levels/finalboss/robotboss_REF.gc @@ -5698,7 +5698,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 19) 0))) (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) @@ -5706,7 +5712,7 @@ (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 368640.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new @@ -5724,8 +5730,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 7) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 32768.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new @@ -5743,8 +5749,8 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 6) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 57344.0) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new @@ -5762,8 +5768,8 @@ (set! (-> s2-2 prim-core offense) 4) (set! (-> s2-2 transform-index) 6) (set-vector! (-> s2-2 local-sphere) 0.0 -57344.0 61440.0 73728.0) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) (let ((s2-3 (new @@ -5781,8 +5787,8 @@ (set! (-> s2-3 prim-core offense) 4) (set! (-> s2-3 transform-index) 16) (set-vector! (-> s2-3 local-sphere) 0.0 -20480.0 69632.0 237568.0) + (append-prim s3-0 s2-3) ) - (dummy-28 s3-0) (let ((s2-4 (new @@ -5800,8 +5806,8 @@ (set! (-> s2-4 prim-core offense) 4) (set! (-> s2-4 transform-index) 14) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 81920.0) + (append-prim s3-0 s2-4) ) - (dummy-28 s3-0) (let ((s2-5 (new @@ -5819,8 +5825,8 @@ (set! (-> s2-5 prim-core offense) 4) (set! (-> s2-5 transform-index) 39) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 69632.0) + (append-prim s3-0 s2-5) ) - (dummy-28 s3-0) (let ((s2-6 (new @@ -5838,8 +5844,8 @@ (set! (-> s2-6 prim-core offense) 4) (set! (-> s2-6 transform-index) 31) (set-vector! (-> s2-6 local-sphere) 0.0 -57344.0 0.0 90112.0) + (append-prim s3-0 s2-6) ) - (dummy-28 s3-0) (let ((s2-7 (new @@ -5857,8 +5863,8 @@ (set! (-> s2-7 prim-core offense) 4) (set! (-> s2-7 transform-index) 30) (set-vector! (-> s2-7 local-sphere) 0.0 24576.0 0.0 81920.0) + (append-prim s3-0 s2-7) ) - (dummy-28 s3-0) (let ((s2-8 (new @@ -5876,8 +5882,8 @@ (set! (-> s2-8 prim-core offense) 4) (set! (-> s2-8 transform-index) 57) (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 81920.0) + (append-prim s3-0 s2-8) ) - (dummy-28 s3-0) (let ((s2-9 (new @@ -5895,8 +5901,8 @@ (set! (-> s2-9 prim-core offense) 4) (set! (-> s2-9 transform-index) 68) (set-vector! (-> s2-9 local-sphere) 0.0 0.0 0.0 49152.0) + (append-prim s3-0 s2-9) ) - (dummy-28 s3-0) (let ((s2-10 (new @@ -5914,8 +5920,8 @@ (set! (-> s2-10 prim-core offense) 4) (set! (-> s2-10 transform-index) 4) (set-vector! (-> s2-10 local-sphere) 0.0 24576.0 0.0 102400.0) + (append-prim s3-0 s2-10) ) - (dummy-28 s3-0) (let ((s2-11 (new @@ -5933,8 +5939,8 @@ (set! (-> s2-11 prim-core offense) 4) (set! (-> s2-11 transform-index) 77) (set-vector! (-> s2-11 local-sphere) 0.0 0.0 0.0 73728.0) + (append-prim s3-0 s2-11) ) - (dummy-28 s3-0) (let ((s2-12 (new @@ -5952,8 +5958,8 @@ (set! (-> s2-12 prim-core offense) 4) (set! (-> s2-12 transform-index) 75) (set-vector! (-> s2-12 local-sphere) 0.0 24576.0 0.0 81920.0) + (append-prim s3-0 s2-12) ) - (dummy-28 s3-0) (let ((s2-13 (new @@ -5971,8 +5977,8 @@ (set! (-> s2-13 prim-core offense) 4) (set! (-> s2-13 transform-index) 74) (set-vector! (-> s2-13 local-sphere) 0.0 40960.0 0.0 73728.0) + (append-prim s3-0 s2-13) ) - (dummy-28 s3-0) (let ((s2-14 (new @@ -5990,8 +5996,8 @@ (set! (-> s2-14 prim-core offense) 4) (set! (-> s2-14 transform-index) 73) (set-vector! (-> s2-14 local-sphere) 0.0 32768.0 0.0 61440.0) + (append-prim s3-0 s2-14) ) - (dummy-28 s3-0) (let ((s2-15 (new @@ -6009,8 +6015,8 @@ (set! (-> s2-15 prim-core offense) 4) (set! (-> s2-15 transform-index) 84) (set-vector! (-> s2-15 local-sphere) 0.0 40960.0 -8192.0 98304.0) + (append-prim s3-0 s2-15) ) - (dummy-28 s3-0) (let ((s2-16 (new @@ -6028,8 +6034,8 @@ (set! (-> s2-16 prim-core offense) 4) (set! (-> s2-16 transform-index) 83) (set-vector! (-> s2-16 local-sphere) 0.0 65536.0 0.0 73728.0) + (append-prim s3-0 s2-16) ) - (dummy-28 s3-0) (let ((s2-17 (new @@ -6047,8 +6053,8 @@ (set! (-> s2-17 prim-core offense) 4) (set! (-> s2-17 transform-index) 82) (set-vector! (-> s2-17 local-sphere) 0.0 32768.0 0.0 61440.0) + (append-prim s3-0 s2-17) ) - (dummy-28 s3-0) (let ((s2-18 (new @@ -6066,11 +6072,11 @@ (set! (-> s2-18 prim-core offense) 4) (set! (-> s2-18 transform-index) 3) (set-vector! (-> s2-18 local-sphere) 0.0 0.0 0.0 61440.0) + (append-prim s3-0 s2-18) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) 4096.0) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/firecanyon/firecanyon-obs_REF.gc b/test/decompiler/reference/levels/firecanyon/firecanyon-obs_REF.gc index 9f9a68b38a..af0f7974ca 100644 --- a/test/decompiler/reference/levels/firecanyon/firecanyon-obs_REF.gc +++ b/test/decompiler/reference/levels/firecanyon/firecanyon-obs_REF.gc @@ -123,7 +123,7 @@ :code (behavior () (ja-channel-set! 0) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (ja-post) (sound-play-by-name (static-sound-name "cool-balloon") @@ -243,10 +243,10 @@ (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core offense) 4) (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 8192.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -520,7 +520,7 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 24576.0 0.0 40960.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) (set! (-> s2-0 collide-with) (the-as uint 16)) @@ -528,8 +528,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 8192.0 0.0 16384.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) (set! (-> s2-1 collide-with) (the-as uint 16)) @@ -537,8 +537,8 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 0.0 20480.0 0.0 16384.0) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) (set! (-> s2-2 collide-with) (the-as uint 16)) @@ -546,8 +546,8 @@ (set! (-> s2-2 prim-core offense) 4) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) 0.0 32768.0 0.0 16384.0) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) (set! (-> s2-3 collide-with) (the-as uint 16)) @@ -555,11 +555,11 @@ (set! (-> s2-3 prim-core offense) 4) (set! (-> s2-3 transform-index) 3) (set-vector! (-> s2-3 local-sphere) 0.0 45056.0 0.0 16384.0) + (append-prim s3-0 s2-3) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -846,7 +846,7 @@ :code (behavior () (ja-channel-set! 0) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (ja-post) (sound-play-by-name (static-sound-name "dcrate-break") @@ -947,10 +947,10 @@ (set! (-> s3-0 prim-core offense) 1) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 6553.6 0.0 13516.8) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/flut_common/flutflut_REF.gc b/test/decompiler/reference/levels/flut_common/flutflut_REF.gc index 6f7c806a63..08bcfdefe4 100644 --- a/test/decompiler/reference/levels/flut_common/flutflut_REF.gc +++ b/test/decompiler/reference/levels/flut_common/flutflut_REF.gc @@ -216,7 +216,7 @@ (-> self root-override trans) (new 'static 'vector :y 8192.0 :w 1.0) ) - 6 + (pickup-type fuel-cell) (the float (-> self entity extra perm task)) #f self @@ -510,15 +510,21 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set-vector! (-> s3-0 local-sphere) 0.0 6144.0 0.0 6144.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/jungle/bouncer_REF.gc b/test/decompiler/reference/levels/jungle/bouncer_REF.gc index 3b04ba093d..39c2754106 100644 --- a/test/decompiler/reference/levels/jungle/bouncer_REF.gc +++ b/test/decompiler/reference/levels/jungle/bouncer_REF.gc @@ -237,7 +237,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new @@ -255,10 +261,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 3072.0 0.0 6963.2) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/jungle/fisher-JUN_REF.gc b/test/decompiler/reference/levels/jungle/fisher-JUN_REF.gc index 80ed3b30b5..aaae9375df 100644 --- a/test/decompiler/reference/levels/jungle/fisher-JUN_REF.gc +++ b/test/decompiler/reference/levels/jungle/fisher-JUN_REF.gc @@ -2256,7 +2256,7 @@ (set-setting! *setting-control* self 'ambient-volume 'rel 50.0 0) (send-event *target* 'reset-pickup 'eco) (ja-channel-set! 0) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (let ((gp-0 (get-process *default-dead-pool* process #x4000))) (when gp-0 (let ((t9-5 (method-of-type process activate))) @@ -2309,7 +2309,7 @@ (set! (-> *camera-other-fov* data) (-> *camera-combiner* fov)) (set! (-> *camera-other-trans* quad) (-> *camera-combiner* trans quad)) (set! (-> *camera-other-root* quad) (-> self root-override trans quad)) - (dummy-49 (-> self root-override)) + (restore-collide-with-as (-> self root-override)) (send-event *camera* 'blend-from-as-fixed) (send-event *camera* 'change-state *camera-base-mode* 0) (send-event *camera* 'clear-entity) @@ -2887,7 +2887,7 @@ (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 4) (set-vector! (-> s4-0 local-sphere) 6144.0 0.0 4096.0 14336.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) (set! (-> s2-0 collide-with) (the-as uint 16)) @@ -2895,8 +2895,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) arg0) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 6553.6) + (append-prim s4-0 s2-0) ) - (dummy-28 s4-0) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) (set! (-> s3-1 collide-with) (the-as uint 16)) @@ -2904,11 +2904,11 @@ (set! (-> s3-1 prim-core offense) 4) (set! (-> s3-1 transform-index) 57) (set-vector! (-> s3-1 local-sphere) 0.0 4096.0 0.0 4096.0) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/test/decompiler/reference/levels/jungle/hopper_REF.gc b/test/decompiler/reference/levels/jungle/hopper_REF.gc index 50a37584e2..662bb390da 100644 --- a/test/decompiler/reference/levels/jungle/hopper_REF.gc +++ b/test/decompiler/reference/levels/jungle/hopper_REF.gc @@ -671,32 +671,38 @@ nav-enemy-default-event-handler ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set-vector! (-> s4-0 local-sphere) 0.0 4096.0 0.0 10240.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 1) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 4096.0) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) (set! (-> s3-1 collide-with) (the-as uint 16)) (set! (-> s3-1 prim-core action) (the-as uint 1)) (set! (-> s3-1 prim-core offense) 1) (set-vector! (-> s3-1 local-sphere) 0.0 6963.2 0.0 4096.0) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) 6144.0) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) (set! (-> obj collide-info) s5-0) ) diff --git a/test/decompiler/reference/levels/jungle/jungle-elevator_REF.gc b/test/decompiler/reference/levels/jungle/jungle-elevator_REF.gc index 21550b8653..68c128273b 100644 --- a/test/decompiler/reference/levels/jungle/jungle-elevator_REF.gc +++ b/test/decompiler/reference/levels/jungle/jungle-elevator_REF.gc @@ -79,10 +79,10 @@ ) ) (vector-! gp-0 (-> self root-override trans) s5-0) - ) - (when (< (-> self path-pos) 0.9) - (TODO-RENAME-28 (-> *target* control)) - (send-event *target* 'reset-height) + (when (< (-> self path-pos) 0.9) + (TODO-RENAME-28 (-> *target* control) gp-0) + (send-event *target* 'reset-height) + ) ) (if (and diff --git a/test/decompiler/reference/levels/jungle/jungle-obs_REF.gc b/test/decompiler/reference/levels/jungle/jungle-obs_REF.gc index bead652fbd..2161ce0dc3 100644 --- a/test/decompiler/reference/levels/jungle/jungle-obs_REF.gc +++ b/test/decompiler/reference/levels/jungle/jungle-obs_REF.gc @@ -141,7 +141,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new @@ -157,10 +163,10 @@ (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 transform-index) 6) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 19251.2) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -393,7 +399,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0))) (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) @@ -401,7 +413,7 @@ (set! (-> s3-0 prim-core action) (the-as uint 3)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 36044.8 0.0 47104.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new @@ -419,11 +431,11 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 39321.6 0.0 0.0 43417.6) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -567,14 +579,20 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 3)) (set-vector! (-> s3-0 local-sphere) 0.0 40960.0 0.0 49152.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new @@ -592,8 +610,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 36864.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new @@ -611,8 +629,8 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 40960.0 0.0 0.0 24576.0) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new @@ -630,11 +648,11 @@ (set! (-> s2-2 prim-core offense) 4) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) 40960.0 0.0 0.0 24576.0) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -792,7 +810,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -811,10 +835,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 24576.0 0.0 0.0 20480.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -1333,12 +1357,12 @@ (a0-2 (-> (the-as touching-shapes-entry gp-0) head)) (s5-0 (-> self root-override)) ) - (touched-prim + (get-touched-prim a0-2 s5-0 - (the-as touching-shapes-entry gp-0) + (the-as touching-prims-entry gp-0) ) - ((method-of-type touching-shapes-entry touched-shape) + ((method-of-type touching-shapes-entry get-touched-shape) (the-as touching-shapes-entry gp-0) s5-0 ) @@ -1451,7 +1475,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 16) 0))) @@ -1460,7 +1490,7 @@ (set! (-> s3-0 prim-core action) (the-as uint 3)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 81920.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new @@ -1478,8 +1508,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 5) (set-vector! (-> s2-0 local-sphere) -6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new @@ -1497,8 +1527,8 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 7) (set-vector! (-> s2-1 local-sphere) 6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new @@ -1516,8 +1546,8 @@ (set! (-> s2-2 prim-core offense) 4) (set! (-> s2-2 transform-index) 9) (set-vector! (-> s2-2 local-sphere) -6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) (let ((s2-3 (new @@ -1535,8 +1565,8 @@ (set! (-> s2-3 prim-core offense) 4) (set! (-> s2-3 transform-index) 11) (set-vector! (-> s2-3 local-sphere) 6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-3) ) - (dummy-28 s3-0) (let ((s2-4 (new @@ -1554,8 +1584,8 @@ (set! (-> s2-4 prim-core offense) 4) (set! (-> s2-4 transform-index) 13) (set-vector! (-> s2-4 local-sphere) -6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-4) ) - (dummy-28 s3-0) (let ((s2-5 (new @@ -1573,8 +1603,8 @@ (set! (-> s2-5 prim-core offense) 4) (set! (-> s2-5 transform-index) 15) (set-vector! (-> s2-5 local-sphere) 6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-5) ) - (dummy-28 s3-0) (let ((s2-6 (new @@ -1592,8 +1622,8 @@ (set! (-> s2-6 prim-core offense) 4) (set! (-> s2-6 transform-index) 17) (set-vector! (-> s2-6 local-sphere) -6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-6) ) - (dummy-28 s3-0) (let ((s2-7 (new @@ -1611,8 +1641,8 @@ (set! (-> s2-7 prim-core offense) 4) (set! (-> s2-7 transform-index) 19) (set-vector! (-> s2-7 local-sphere) 6144.0 0.0 0.0 17203.2) + (append-prim s3-0 s2-7) ) - (dummy-28 s3-0) (let ((s2-8 (new @@ -1630,8 +1660,8 @@ (set! (-> s2-8 prim-core offense) 4) (set! (-> s2-8 transform-index) 4) (set-vector! (-> s2-8 local-sphere) -4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-8) ) - (dummy-28 s3-0) (let ((s2-9 (new @@ -1649,8 +1679,8 @@ (set! (-> s2-9 prim-core offense) 4) (set! (-> s2-9 transform-index) 6) (set-vector! (-> s2-9 local-sphere) 4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-9) ) - (dummy-28 s3-0) (let ((s2-10 (new @@ -1668,8 +1698,8 @@ (set! (-> s2-10 prim-core offense) 4) (set! (-> s2-10 transform-index) 8) (set-vector! (-> s2-10 local-sphere) -4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-10) ) - (dummy-28 s3-0) (let ((s2-11 (new @@ -1687,8 +1717,8 @@ (set! (-> s2-11 prim-core offense) 4) (set! (-> s2-11 transform-index) 10) (set-vector! (-> s2-11 local-sphere) 4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-11) ) - (dummy-28 s3-0) (let ((s2-12 (new @@ -1706,8 +1736,8 @@ (set! (-> s2-12 prim-core offense) 4) (set! (-> s2-12 transform-index) 12) (set-vector! (-> s2-12 local-sphere) -4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-12) ) - (dummy-28 s3-0) (let ((s2-13 (new @@ -1725,8 +1755,8 @@ (set! (-> s2-13 prim-core offense) 4) (set! (-> s2-13 transform-index) 14) (set-vector! (-> s2-13 local-sphere) 4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-13) ) - (dummy-28 s3-0) (let ((s2-14 (new @@ -1744,8 +1774,8 @@ (set! (-> s2-14 prim-core offense) 4) (set! (-> s2-14 transform-index) 16) (set-vector! (-> s2-14 local-sphere) -4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-14) ) - (dummy-28 s3-0) (let ((s2-15 (new @@ -1763,11 +1793,11 @@ (set! (-> s2-15 prim-core offense) 4) (set! (-> s2-15 transform-index) 18) (set-vector! (-> s2-15 local-sphere) 4096.0 0.0 0.0 9011.2) + (append-prim s3-0 s2-15) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -1981,10 +2011,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -2065,10 +2095,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 2) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 14336.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 @@ -2183,14 +2213,20 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 3)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) -32768.0 -8192.0 0.0 32768.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new @@ -2208,8 +2244,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 8192.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new @@ -2227,12 +2263,12 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 36864.0 0.0 0.0 20480.0) - (dummy-28 s3-0) + (append-prim s3-0 s2-1) (set! (-> obj back-prim) s2-1) ) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/jungle/junglefish_REF.gc b/test/decompiler/reference/levels/jungle/junglefish_REF.gc index 8b518e330d..42b5883628 100644 --- a/test/decompiler/reference/levels/jungle/junglefish_REF.gc +++ b/test/decompiler/reference/levels/jungle/junglefish_REF.gc @@ -614,17 +614,23 @@ nav-enemy-default-event-handler ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 1) (set-vector! (-> s3-0 local-sphere) 0.0 3276.8 0.0 2457.6) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj collide-info) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/jungle/junglesnake_REF.gc b/test/decompiler/reference/levels/jungle/junglesnake_REF.gc index dd8b99fff9..f5b5f005af 100644 --- a/test/decompiler/reference/levels/jungle/junglesnake_REF.gc +++ b/test/decompiler/reference/levels/jungle/junglesnake_REF.gc @@ -992,7 +992,7 @@ junglesnake-default-event-handler :code (behavior () (logclear! (-> self mask) (process-mask actor-pause)) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (ja-channel-push! 1 45) (let ((a0-3 (-> self skel root-channel 0))) (set! @@ -1169,7 +1169,7 @@ junglesnake-default-event-handler (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set-vector! (-> s3-0 local-sphere) 0.0 16384.0 0.0 30720.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) (set! (-> s2-0 collide-with) (the-as uint 16)) @@ -1177,8 +1177,8 @@ junglesnake-default-event-handler (set! (-> s2-0 prim-core offense) 1) (set! (-> s2-0 transform-index) 25) (set-vector! (-> s2-0 local-sphere) 0.0 2048.0 0.0 4096.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) (set! (-> s2-1 collide-with) (the-as uint 16)) @@ -1186,8 +1186,8 @@ junglesnake-default-event-handler (set! (-> s2-1 prim-core offense) 1) (set! (-> s2-1 transform-index) 21) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) (set! (-> s2-2 collide-with) (the-as uint 16)) @@ -1195,8 +1195,8 @@ junglesnake-default-event-handler (set! (-> s2-2 prim-core offense) 1) (set! (-> s2-2 transform-index) 20) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) (set! (-> s2-3 collide-with) (the-as uint 16)) @@ -1204,8 +1204,8 @@ junglesnake-default-event-handler (set! (-> s2-3 prim-core offense) 1) (set! (-> s2-3 transform-index) 19) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-3) ) - (dummy-28 s3-0) (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-4 prim-core collide-as) (the-as uint 256)) (set! (-> s2-4 collide-with) (the-as uint 16)) @@ -1213,8 +1213,8 @@ junglesnake-default-event-handler (set! (-> s2-4 prim-core offense) 1) (set! (-> s2-4 transform-index) 18) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-4) ) - (dummy-28 s3-0) (let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-5 prim-core collide-as) (the-as uint 256)) (set! (-> s2-5 collide-with) (the-as uint 16)) @@ -1222,8 +1222,8 @@ junglesnake-default-event-handler (set! (-> s2-5 prim-core offense) 1) (set! (-> s2-5 transform-index) 17) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-5) ) - (dummy-28 s3-0) (let ((s2-6 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-6 prim-core collide-as) (the-as uint 256)) (set! (-> s2-6 collide-with) (the-as uint 16)) @@ -1231,8 +1231,8 @@ junglesnake-default-event-handler (set! (-> s2-6 prim-core offense) 1) (set! (-> s2-6 transform-index) 16) (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-6) ) - (dummy-28 s3-0) (let ((s2-7 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-7 prim-core collide-as) (the-as uint 256)) (set! (-> s2-7 collide-with) (the-as uint 16)) @@ -1240,8 +1240,8 @@ junglesnake-default-event-handler (set! (-> s2-7 prim-core offense) 1) (set! (-> s2-7 transform-index) 15) (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-7) ) - (dummy-28 s3-0) (let ((s2-8 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-8 prim-core collide-as) (the-as uint 256)) (set! (-> s2-8 collide-with) (the-as uint 16)) @@ -1249,11 +1249,11 @@ junglesnake-default-event-handler (set! (-> s2-8 prim-core offense) 1) (set! (-> s2-8 transform-index) 14) (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 3276.8) + (append-prim s3-0 s2-8) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/jungleb/aphid_REF.gc b/test/decompiler/reference/levels/jungleb/aphid_REF.gc index 89b2581da9..d09f31f4f5 100644 --- a/test/decompiler/reference/levels/jungleb/aphid_REF.gc +++ b/test/decompiler/reference/levels/jungleb/aphid_REF.gc @@ -601,17 +601,23 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 1) (set-vector! (-> s4-0 local-sphere) 0.0 4096.0 0.0 4096.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) 6144.0) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) (set! (-> obj collide-info) s5-0) ) diff --git a/test/decompiler/reference/levels/jungleb/jungleb-obs_REF.gc b/test/decompiler/reference/levels/jungleb/jungleb-obs_REF.gc index db17c1f2ee..e302942505 100644 --- a/test/decompiler/reference/levels/jungleb/jungleb-obs_REF.gc +++ b/test/decompiler/reference/levels/jungleb/jungleb-obs_REF.gc @@ -642,7 +642,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -661,10 +667,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 -7372.8 16384.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -687,7 +693,7 @@ (-> obj root-override trans) (new 'static 'vector :y 6144.0 :w 1.0) ) - 6 + (pickup-type fuel-cell) (the float (-> obj entity extra perm task)) #f obj @@ -747,10 +753,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/test/decompiler/reference/levels/jungleb/plat-flip_REF.gc b/test/decompiler/reference/levels/jungleb/plat-flip_REF.gc index 4f3889bdd2..a344ad4bac 100644 --- a/test/decompiler/reference/levels/jungleb/plat-flip_REF.gc +++ b/test/decompiler/reference/levels/jungleb/plat-flip_REF.gc @@ -229,7 +229,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -248,10 +254,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 11468.8) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/maincave/baby-spider_REF.gc b/test/decompiler/reference/levels/maincave/baby-spider_REF.gc index e70b5b09c1..8a4f106910 100644 --- a/test/decompiler/reference/levels/maincave/baby-spider_REF.gc +++ b/test/decompiler/reference/levels/maincave/baby-spider_REF.gc @@ -281,7 +281,7 @@ ;; definition for function baby-spider-default-event-handler ;; INFO: Return type mismatch none vs object. -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 7] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 7] (defbehavior baby-spider-default-event-handler baby-spider ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) @@ -1150,17 +1150,23 @@ baby-spider-default-event-handler ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 2) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 4096.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) 4096.0) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj collide-info) s5-0) ) 0 diff --git a/test/decompiler/reference/levels/maincave/mother-spider-proj_REF.gc b/test/decompiler/reference/levels/maincave/mother-spider-proj_REF.gc index 25e3c8bd9f..19a7d56636 100644 --- a/test/decompiler/reference/levels/maincave/mother-spider-proj_REF.gc +++ b/test/decompiler/reference/levels/maincave/mother-spider-proj_REF.gc @@ -428,17 +428,23 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) projectile-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (the-as uint 1024)) (set! (-> s4-0 collide-with) (the-as uint 2973)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 1228.8) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) (set! (-> s5-0 event-self) 'touched) (set! (-> obj root-override) s5-0) diff --git a/test/decompiler/reference/levels/maincave/spiderwebs_REF.gc b/test/decompiler/reference/levels/maincave/spiderwebs_REF.gc index 8555bdcebe..ff066f34a2 100644 --- a/test/decompiler/reference/levels/maincave/spiderwebs_REF.gc +++ b/test/decompiler/reference/levels/maincave/spiderwebs_REF.gc @@ -252,7 +252,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new @@ -270,10 +276,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 14336.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) 13926.4) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/misty/bonelurker_REF.gc b/test/decompiler/reference/levels/misty/bonelurker_REF.gc index 69fd9c50a8..28ae868038 100644 --- a/test/decompiler/reference/levels/misty/bonelurker_REF.gc +++ b/test/decompiler/reference/levels/misty/bonelurker_REF.gc @@ -1158,40 +1158,46 @@ nav-enemy-default-event-handler ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 3) 0))) (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set-vector! (-> s4-0 local-sphere) 0.0 10240.0 0.0 24576.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 1) (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 4096.0) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) (set! (-> s3-1 collide-with) (the-as uint 16)) (set! (-> s3-1 prim-core action) (the-as uint 1)) (set! (-> s3-1 prim-core offense) 1) (set-vector! (-> s3-1 local-sphere) 0.0 11468.8 0.0 4096.0) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) (set! (-> s3-2 collide-with) (the-as uint 16)) (set! (-> s3-2 prim-core offense) 2) (set! (-> s3-2 transform-index) 29) (set-vector! (-> s3-2 local-sphere) 0.0 4915.2 0.0 4915.2) + (append-prim s4-0 s3-2) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) 8192.0) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 1)) (set! (-> obj collide-info) s5-0) ) diff --git a/test/decompiler/reference/levels/misty/misty-conveyor_REF.gc b/test/decompiler/reference/levels/misty/misty-conveyor_REF.gc index f8d48f36a3..113b2388e3 100644 --- a/test/decompiler/reference/levels/misty/misty-conveyor_REF.gc +++ b/test/decompiler/reference/levels/misty/misty-conveyor_REF.gc @@ -610,7 +610,7 @@ (logior! (-> v1-10 settings flags) 32) ) 0 - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (vector-normalize! gp-0 1.0) (set! (-> self state-time) (-> *display* base-frame-counter)) (while #t @@ -669,7 +669,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new @@ -686,10 +692,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 16384.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> self root-override) s4-0) ) (set! (-> self root-override trans quad) (-> arg0 root-override trans quad)) @@ -925,7 +931,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new @@ -943,10 +955,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> self root-override) s5-0) ) (set! (-> self path) (new 'process 'curve-control self 'path -1000000000.0)) diff --git a/test/decompiler/reference/levels/misty/misty-teetertotter_REF.gc b/test/decompiler/reference/levels/misty/misty-teetertotter_REF.gc index d5a6ac6161..d73caeb1be 100644 --- a/test/decompiler/reference/levels/misty/misty-teetertotter_REF.gc +++ b/test/decompiler/reference/levels/misty/misty-teetertotter_REF.gc @@ -295,14 +295,20 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 5) 0))) (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set-vector! (-> s3-0 local-sphere) 0.0 12288.0 0.0 36864.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) (set! (-> s2-0 collide-with) (the-as uint 16)) @@ -310,8 +316,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 5) (set-vector! (-> s2-0 local-sphere) -4096.0 2048.0 0.0 5120.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new @@ -329,8 +335,8 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 7) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 32768.0) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new @@ -348,8 +354,8 @@ (set! (-> s2-2 prim-core offense) 4) (set! (-> s2-2 transform-index) 4) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 32768.0) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) (let ((s2-3 (new @@ -367,8 +373,8 @@ (set! (-> s2-3 prim-core offense) 4) (set! (-> s2-3 transform-index) 3) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 32768.0) + (append-prim s3-0 s2-3) ) - (dummy-28 s3-0) (let ((s2-4 (new @@ -386,11 +392,11 @@ (set! (-> s2-4 prim-core offense) 4) (set! (-> s2-4 transform-index) 3) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 32768.0) + (append-prim s3-0 s2-4) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/misty/misty-warehouse_REF.gc b/test/decompiler/reference/levels/misty/misty-warehouse_REF.gc index 4d63e60afd..6129735b36 100644 --- a/test/decompiler/reference/levels/misty/misty-warehouse_REF.gc +++ b/test/decompiler/reference/levels/misty/misty-warehouse_REF.gc @@ -214,7 +214,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -233,10 +239,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 18432.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -314,10 +320,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) -12288.0 0.0 0.0 40960.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/test/decompiler/reference/levels/misty/muse_REF.gc b/test/decompiler/reference/levels/misty/muse_REF.gc index 5d7df612e9..1787ff2b97 100644 --- a/test/decompiler/reference/levels/misty/muse_REF.gc +++ b/test/decompiler/reference/levels/misty/muse_REF.gc @@ -805,14 +805,14 @@ nav-enemy-default-event-handler (set-blackout-frames 0) (ja-channel-set! 0) (ja-post) - (dummy-48 (-> self collide-info)) + (clear-collide-with-as (-> self collide-info)) (send-event *target* 'trans 'reset) (let ((gp-4 (ppointer->handle (birth-pickup-at-point (target-pos 0) - 6 + (pickup-type fuel-cell) (the float (-> self entity extra perm task)) #f self @@ -918,17 +918,23 @@ nav-enemy-default-event-handler ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 4) (set-vector! (-> s3-0 local-sphere) 0.0 2457.6 0.0 2457.6) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj collide-info) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc b/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc index f51324d3c5..c1082fb0ae 100644 --- a/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc +++ b/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc @@ -587,10 +587,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 -16384.0 40960.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/ogre/ogre-obs_REF.gc b/test/decompiler/reference/levels/ogre/ogre-obs_REF.gc index 2e16da920c..36870be874 100644 --- a/test/decompiler/reference/levels/ogre/ogre-obs_REF.gc +++ b/test/decompiler/reference/levels/ogre/ogre-obs_REF.gc @@ -471,7 +471,7 @@ :code (behavior ((arg0 symbol)) (ja-channel-set! 0) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (ja-post) (sound-play-by-name (static-sound-name "dcrate-break") @@ -604,10 +604,10 @@ (set! (-> s3-0 prim-core offense) 1) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 9216.0 0.0 14336.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -872,7 +872,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -891,10 +897,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 32768.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-overlay) s5-0) ) 0 @@ -1678,7 +1684,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 17) 0))) @@ -1687,7 +1699,7 @@ (set! (-> s3-0 prim-core action) (the-as uint 3)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 143360.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new @@ -1705,8 +1717,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new @@ -1724,8 +1736,8 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 5) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new @@ -1743,8 +1755,8 @@ (set! (-> s2-2 prim-core offense) 4) (set! (-> s2-2 transform-index) 6) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) (let ((s2-3 (new @@ -1762,8 +1774,8 @@ (set! (-> s2-3 prim-core offense) 4) (set! (-> s2-3 transform-index) 7) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-3) ) - (dummy-28 s3-0) (let ((s2-4 (new @@ -1781,8 +1793,8 @@ (set! (-> s2-4 prim-core offense) 4) (set! (-> s2-4 transform-index) 8) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-4) ) - (dummy-28 s3-0) (let ((s2-5 (new @@ -1800,8 +1812,8 @@ (set! (-> s2-5 prim-core offense) 4) (set! (-> s2-5 transform-index) 9) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-5) ) - (dummy-28 s3-0) (let ((s2-6 (new @@ -1819,8 +1831,8 @@ (set! (-> s2-6 prim-core offense) 4) (set! (-> s2-6 transform-index) 10) (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-6) ) - (dummy-28 s3-0) (let ((s2-7 (new @@ -1838,8 +1850,8 @@ (set! (-> s2-7 prim-core offense) 4) (set! (-> s2-7 transform-index) 11) (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-7) ) - (dummy-28 s3-0) (let ((s2-8 (new @@ -1857,8 +1869,8 @@ (set! (-> s2-8 prim-core offense) 4) (set! (-> s2-8 transform-index) 12) (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-8) ) - (dummy-28 s3-0) (let ((s2-9 (new @@ -1876,8 +1888,8 @@ (set! (-> s2-9 prim-core offense) 4) (set! (-> s2-9 transform-index) 13) (set-vector! (-> s2-9 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-9) ) - (dummy-28 s3-0) (let ((s2-10 (new @@ -1895,8 +1907,8 @@ (set! (-> s2-10 prim-core offense) 4) (set! (-> s2-10 transform-index) 14) (set-vector! (-> s2-10 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-10) ) - (dummy-28 s3-0) (let ((s2-11 (new @@ -1914,8 +1926,8 @@ (set! (-> s2-11 prim-core offense) 4) (set! (-> s2-11 transform-index) 15) (set-vector! (-> s2-11 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-11) ) - (dummy-28 s3-0) (let ((s2-12 (new @@ -1933,8 +1945,8 @@ (set! (-> s2-12 prim-core offense) 4) (set! (-> s2-12 transform-index) 16) (set-vector! (-> s2-12 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-12) ) - (dummy-28 s3-0) (let ((s2-13 (new @@ -1952,8 +1964,8 @@ (set! (-> s2-13 prim-core offense) 4) (set! (-> s2-13 transform-index) 17) (set-vector! (-> s2-13 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-13) ) - (dummy-28 s3-0) (let ((s2-14 (new @@ -1971,8 +1983,8 @@ (set! (-> s2-14 prim-core offense) 4) (set! (-> s2-14 transform-index) 18) (set-vector! (-> s2-14 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-14) ) - (dummy-28 s3-0) (let ((s2-15 (new @@ -1990,8 +2002,8 @@ (set! (-> s2-15 prim-core offense) 4) (set! (-> s2-15 transform-index) 19) (set-vector! (-> s2-15 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-15) ) - (dummy-28 s3-0) (let ((s2-16 (new @@ -2009,11 +2021,11 @@ (set! (-> s2-16 prim-core offense) 4) (set! (-> s2-16 transform-index) 20) (set-vector! (-> s2-16 local-sphere) 0.0 0.0 0.0 45056.0) + (append-prim s3-0 s2-16) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -2119,10 +2131,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 12288.0 32768.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -2591,10 +2603,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 22528.0 0.0 30720.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL_REF.gc b/test/decompiler/reference/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL_REF.gc index a778c7d0a2..2f05671116 100644 --- a/test/decompiler/reference/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL_REF.gc +++ b/test/decompiler/reference/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL_REF.gc @@ -269,7 +269,13 @@ ) ) (set! (-> self control surf) *race-track-surface*) - (set! (-> self control reaction) racer-collision-reaction) + (set! + (-> self control reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + racer-collision-reaction + ) + ) (vector-reset! (-> self racer rot)) (set! (-> self racer rot y) (y-angle (-> self control))) (target-collide-set! 'racer 0.0) @@ -536,7 +542,7 @@ ) (or (< - (- (-> *display* base-frame-counter) (-> self control unknown-dword10)) + (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) 30 ) (< @@ -572,7 +578,7 @@ (zero? (logand (-> self control status) 1)) (or (>= - (- (-> *display* base-frame-counter) (-> self control unknown-dword10)) + (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (the-as int (* (-> *TARGET-bank* ground-timeout) 2)) ) (< 75 v1-28) @@ -1288,7 +1294,7 @@ ) (or (< - (- (-> *display* base-frame-counter) (-> self control unknown-dword10)) + (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) 60 ) (< @@ -1743,7 +1749,7 @@ (-> self control pat-ignore-mask) (new 'static 'pat-surface :skip #x1 :noentity #x1) ) - (dummy-49 (-> self control)) + (restore-collide-with-as (-> self control)) ((-> target-racing-start exit)) (target-exit) (set! (-> self racer stick-off) #f) @@ -2086,7 +2092,7 @@ (-> gp-5 ppointer) ) ) - (dummy-48 (-> self control)) + (clear-collide-with-as (-> self control)) (set! (-> self post-hook) target-no-ja-move-post) (ja-channel-set! 0) (ja-post) diff --git a/test/decompiler/reference/levels/snow/snow-flutflut-obs_REF.gc b/test/decompiler/reference/levels/snow/snow-flutflut-obs_REF.gc index 8d6a4747f9..9b06cb2bf7 100644 --- a/test/decompiler/reference/levels/snow/snow-flutflut-obs_REF.gc +++ b/test/decompiler/reference/levels/snow/snow-flutflut-obs_REF.gc @@ -583,22 +583,28 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 3)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 17612.8) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) (set! (-> s2-0 collide-with) (the-as uint 16)) (set! (-> s2-0 prim-core offense) 0) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 10649.6) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new @@ -616,8 +622,8 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 2048.0 0.0 11468.8) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) (let ((s2-2 (new @@ -635,11 +641,11 @@ (set! (-> s2-2 prim-core offense) 4) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 17612.8) + (append-prim s3-0 s2-2) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -712,7 +718,7 @@ (eval-path-curve! (-> obj path) (-> obj appear-trans-top) - (if (logtest? (-> obj fact options) 8) + (if (logtest? (-> obj fact options) (fact-options fop3)) (get-current-phase (-> obj sync)) (get-current-phase-with-mirror (-> obj sync)) ) @@ -843,7 +849,7 @@ :code (behavior () (logior! (-> self draw status) 2) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (set! (-> self root-override trans quad) (-> self appear-trans-top quad)) (transform-post) (logior! (-> self mask) (process-mask sleep-code)) @@ -869,7 +875,7 @@ (set! (-> self state-time) (-> *display* base-frame-counter)) (logclear! (-> self mask) (process-mask actor-pause)) (set! (-> self draw status) (logand -3 (-> self draw status))) - (dummy-49 (-> self root-override)) + (restore-collide-with-as (-> self root-override)) (set! (-> self basetrans quad) (-> self appear-trans-bottom quad)) (let ((s5-0 (new 'stack-no-clear 'vector)) (gp-0 (new 'stack-no-clear 'quaternion)) @@ -1459,7 +1465,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -1478,10 +1490,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -2048.0 0.0 16384.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 @@ -1512,7 +1524,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -1531,10 +1549,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -4096.0 0.0 27648.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 @@ -1595,7 +1613,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -1614,10 +1638,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 36864.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/test/decompiler/reference/levels/snow/target-snowball_REF.gc b/test/decompiler/reference/levels/snow/target-snowball_REF.gc index 8d4e3eec89..3683e096a9 100644 --- a/test/decompiler/reference/levels/snow/target-snowball_REF.gc +++ b/test/decompiler/reference/levels/snow/target-snowball_REF.gc @@ -125,12 +125,7 @@ (reset-target-state #t) (set! (-> self control transv quad) (the-as uint128 0)) (set! (-> self control unknown-float01) 0.0) - (let* ((a0-6 (-> self control)) - (t9-3 (method-of-object a0-6 TODO-RENAME-28)) - ) - (new 'static 'vector :y 4096.0 :w 1.0) - (t9-3 a0-6) - ) + (TODO-RENAME-28 (-> self control) (new 'static 'vector :y 4096.0 :w 1.0)) (logior! (-> self control root-prim prim-core action) 4096) (ja-channel-set! 1) (let ((gp-1 (-> self skel root-channel 0))) diff --git a/test/decompiler/reference/levels/snow/yeti_REF.gc b/test/decompiler/reference/levels/snow/yeti_REF.gc index 6ce847dff8..627e4a1aeb 100644 --- a/test/decompiler/reference/levels/snow/yeti_REF.gc +++ b/test/decompiler/reference/levels/snow/yeti_REF.gc @@ -1137,40 +1137,46 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 3) 0))) (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 12288.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 1) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 3072.0) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) (set! (-> s3-1 collide-with) (the-as uint 16)) (set! (-> s3-1 prim-core action) (the-as uint 1)) (set! (-> s3-1 prim-core offense) 1) (set-vector! (-> s3-1 local-sphere) 0.0 9830.4 0.0 3072.0) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) (set! (-> s3-2 collide-with) (the-as uint 16)) (set! (-> s3-2 prim-core offense) 2) (set! (-> s3-2 transform-index) 6) (set-vector! (-> s3-2 local-sphere) 0.0 0.0 0.0 2048.0) + (append-prim s4-0 s3-2) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) 6144.0) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) (set! (-> obj collide-info) s5-0) ) diff --git a/test/decompiler/reference/levels/sunken/floating-launcher_REF.gc b/test/decompiler/reference/levels/sunken/floating-launcher_REF.gc index 3da40bbe6e..603b1851b1 100644 --- a/test/decompiler/reference/levels/sunken/floating-launcher_REF.gc +++ b/test/decompiler/reference/levels/sunken/floating-launcher_REF.gc @@ -149,7 +149,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -168,10 +174,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 11468.8) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/sunken/qbert-plat_REF.gc b/test/decompiler/reference/levels/sunken/qbert-plat_REF.gc index f5a35b779b..bab042bc38 100644 --- a/test/decompiler/reference/levels/sunken/qbert-plat_REF.gc +++ b/test/decompiler/reference/levels/sunken/qbert-plat_REF.gc @@ -438,7 +438,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -457,10 +463,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -8192.0 0.0 18432.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-overlay) s5-0) ) 0 diff --git a/test/decompiler/reference/levels/sunken/shover_REF.gc b/test/decompiler/reference/levels/sunken/shover_REF.gc index 4781266585..0ec04b64f7 100644 --- a/test/decompiler/reference/levels/sunken/shover_REF.gc +++ b/test/decompiler/reference/levels/sunken/shover_REF.gc @@ -41,11 +41,11 @@ (('touch 'attack) (when (= (-> arg0 type) target) (when - ((method-of-type touching-shapes-entry dummy-13) + ((method-of-type touching-shapes-entry prims-touching-action?) (the-as touching-shapes-entry (-> arg3 param 0)) (-> *target* control) - 1 - 0 + (the-as uint 1) + (the-as uint 0) ) (let ((s4-0 (new 'stack 'attack-info))) (dummy-41 (-> self root-override) s4-0 (-> self shove-up)) @@ -61,7 +61,7 @@ (= (-> *target* control unknown-surface00 mode) 'air) (>= (+ (-> *display* base-frame-counter) -60) - (-> *target* control unknown-dword10) + (-> *target* control unknown-dword11) ) (< 0.75 (-> *target* control poly-normal y)) ) @@ -138,10 +138,10 @@ (set! (-> s3-1 prim-core offense) 4) (set! (-> s3-1 transform-index) 0) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 53248.0) + (set-root-prim! s4-0 s3-1) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/sunken/square-platform_REF.gc b/test/decompiler/reference/levels/sunken/square-platform_REF.gc index 6640f28669..ef4ae7415b 100644 --- a/test/decompiler/reference/levels/sunken/square-platform_REF.gc +++ b/test/decompiler/reference/levels/sunken/square-platform_REF.gc @@ -626,7 +626,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -645,10 +651,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 -24576.0 0.0 32768.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/sunken/steam-cap_REF.gc b/test/decompiler/reference/levels/sunken/steam-cap_REF.gc index 0aa807fd8b..5967f1e9cc 100644 --- a/test/decompiler/reference/levels/sunken/steam-cap_REF.gc +++ b/test/decompiler/reference/levels/sunken/steam-cap_REF.gc @@ -936,7 +936,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -955,10 +961,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (set! (-> obj do-burst?) #f) diff --git a/test/decompiler/reference/levels/sunken/sun-iris-door_REF.gc b/test/decompiler/reference/levels/sunken/sun-iris-door_REF.gc index 8e05c187c3..e6655f48b6 100644 --- a/test/decompiler/reference/levels/sunken/sun-iris-door_REF.gc +++ b/test/decompiler/reference/levels/sunken/sun-iris-door_REF.gc @@ -329,13 +329,13 @@ :enter (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (logior! (-> self draw status) 2) (none) ) :exit (behavior () - (dummy-49 (-> self root-override)) + (restore-collide-with-as (-> self root-override)) (set! (-> self draw status) (logand -3 (-> self draw status))) (none) ) @@ -480,10 +480,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -568,10 +568,10 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 0) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 24576.0) + (set-root-prim! s3-0 s2-0) ) - (dummy-46 s3-0) (set! (-> s3-0 nav-radius) (* 0.75 (-> s3-0 root-prim local-sphere w))) - (dummy-50 s3-0) + (backup-collide-with-as s3-0) (set! (-> self root-override) s3-0) ) (set! (-> self root-override trans quad) (-> arg0 quad)) diff --git a/test/decompiler/reference/levels/sunken/sunken-obs_REF.gc b/test/decompiler/reference/levels/sunken/sunken-obs_REF.gc index 86bd24452b..4fe45950df 100644 --- a/test/decompiler/reference/levels/sunken/sunken-obs_REF.gc +++ b/test/decompiler/reference/levels/sunken/sunken-obs_REF.gc @@ -159,7 +159,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -178,10 +184,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 57344.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/test/decompiler/reference/levels/sunken/wall-plat_REF.gc b/test/decompiler/reference/levels/sunken/wall-plat_REF.gc index 0e759673c6..cc76f9a3c5 100644 --- a/test/decompiler/reference/levels/sunken/wall-plat_REF.gc +++ b/test/decompiler/reference/levels/sunken/wall-plat_REF.gc @@ -53,7 +53,7 @@ (set! (-> self extended-amount) 0.0) (TODO-RENAME-30 (-> self root-override) (-> self in-trans)) (transform-post) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (while #t (logior! (-> self mask) (process-mask sleep-code)) (suspend) @@ -91,7 +91,7 @@ (the-as (function none :behavior wall-plat) rider-trans) :code (behavior () - (dummy-49 (-> self root-override)) + (restore-collide-with-as (-> self root-override)) (set! (-> self state-time) (-> *display* base-frame-counter)) (while #t (set! @@ -240,11 +240,11 @@ (cond ((= f30-0 0.0) (set! gp-0 #f) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) ) ((= f30-0 1.0) (set! gp-0 #f) - (dummy-49 (-> self root-override)) + (restore-collide-with-as (-> self root-override)) ) (else (when (not gp-0) @@ -259,7 +259,7 @@ ) (set! gp-0 #t) ) - (dummy-49 (-> self root-override)) + (restore-collide-with-as (-> self root-override)) ) ) ) @@ -284,7 +284,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -303,10 +309,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 2) (set-vector! (-> s3-0 local-sphere) 0.0 -6144.0 -12288.0 19456.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/sunken/wedge-plats_REF.gc b/test/decompiler/reference/levels/sunken/wedge-plats_REF.gc index 5f2c90fdef..e951464975 100644 --- a/test/decompiler/reference/levels/sunken/wedge-plats_REF.gc +++ b/test/decompiler/reference/levels/sunken/wedge-plats_REF.gc @@ -337,7 +337,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -356,10 +362,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -615,7 +621,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -634,10 +646,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 32768.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/sunken/whirlpool_REF.gc b/test/decompiler/reference/levels/sunken/whirlpool_REF.gc index f98ddd8a87..443aeaed17 100644 --- a/test/decompiler/reference/levels/sunken/whirlpool_REF.gc +++ b/test/decompiler/reference/levels/sunken/whirlpool_REF.gc @@ -457,10 +457,10 @@ (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 4) (set-vector! (-> s3-0 local-sphere) 0.0 -819.2 0.0 11468.8) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/swamp/billy_REF.gc b/test/decompiler/reference/levels/swamp/billy_REF.gc index 604192dbaa..beee1cb58c 100644 --- a/test/decompiler/reference/levels/swamp/billy_REF.gc +++ b/test/decompiler/reference/levels/swamp/billy_REF.gc @@ -1663,7 +1663,7 @@ (behavior () (push-setting! *setting-control* self 'music 'danger 0.0 0) (ja-channel-set! 0) - (dummy-48 (-> self root-override)) + (clear-collide-with-as (-> self root-override)) (init! (-> self query) (the-as string #f) @@ -1781,7 +1781,7 @@ ) :exit (behavior () - (dummy-49 (-> self root-override)) + (restore-collide-with-as (-> self root-override)) (restore-load-state-and-cleanup *load-state*) (set! (-> *ACTOR-bank* birth-max) 1000) (clear-pending-settings-from-process *setting-control* self 'music) diff --git a/test/decompiler/reference/levels/swamp/swamp-bat_REF.gc b/test/decompiler/reference/levels/swamp/swamp-bat_REF.gc index c55b753c6a..c57d3db331 100644 --- a/test/decompiler/reference/levels/swamp/swamp-bat_REF.gc +++ b/test/decompiler/reference/levels/swamp/swamp-bat_REF.gc @@ -692,13 +692,19 @@ swamp-bat-slave-event-handler ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 6144.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) (set! (-> s2-0 collide-with) (the-as uint 16)) @@ -706,11 +712,11 @@ swamp-bat-slave-event-handler (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4096.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> self root-override) s4-0) ) (set! (-> self root-override trans quad) (-> arg0 root-override trans quad)) @@ -950,19 +956,12 @@ swamp-bat-slave-event-handler (defmethod init-from-entity! swamp-bat ((obj swamp-bat) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) - (set-vector! - (-> - (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)) - local-sphere - ) - 0.0 - 0.0 - 0.0 - 0.0 + (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 0.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/swamp/swamp-obs_REF.gc b/test/decompiler/reference/levels/swamp/swamp-obs_REF.gc index ebaaec54b3..feeefabe1e 100644 --- a/test/decompiler/reference/levels/swamp/swamp-obs_REF.gc +++ b/test/decompiler/reference/levels/swamp/swamp-obs_REF.gc @@ -225,6 +225,7 @@ ) ;; definition for function swamp-spike-post +;; INFO: Return type mismatch symbol vs none. (defbehavior swamp-spike-post swamp-spike () (transform-post) (let ((a1-0 (new 'stack-no-clear 'event-message-block))) @@ -636,7 +637,7 @@ (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set-vector! (-> s4-0 local-sphere) 0.0 20480.0 0.0 24576.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new @@ -654,8 +655,8 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 24576.0) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) (let ((s3-1 (new @@ -673,11 +674,11 @@ (set! (-> s3-1 prim-core offense) 4) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 20480.0 0.0 24576.0) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) (process-drawable-from-entity! obj (the-as entity-actor (-> obj entity))) @@ -879,7 +880,13 @@ ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s4-0 1) (let ((s3-0 @@ -898,10 +905,10 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 40960.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -1164,10 +1171,10 @@ 0.0 (* 4096.0 (* 3.0 f30-0)) ) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -1200,7 +1207,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -1219,10 +1232,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> self root) s5-0) ) (set! (-> self root trans quad) (-> arg0 quad)) @@ -1424,7 +1437,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -1443,10 +1462,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-overlay) s5-0) ) 0 diff --git a/test/decompiler/reference/levels/swamp/swamp-rat-nest_REF.gc b/test/decompiler/reference/levels/swamp/swamp-rat-nest_REF.gc index 42cd92c8dc..6d9252d40e 100644 --- a/test/decompiler/reference/levels/swamp/swamp-rat-nest_REF.gc +++ b/test/decompiler/reference/levels/swamp/swamp-rat-nest_REF.gc @@ -1654,7 +1654,7 @@ swamp-rat-nest-default-event-handler (behavior () (process-entity-status! self (entity-perm-status complete) #t) (process-entity-status! self (entity-perm-status dead) #t) - (TODO-RENAME-9 + (drop-pickup (-> self fact-override) #t *entity-pool* @@ -1781,10 +1781,10 @@ swamp-rat-nest-default-event-handler (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 12288.0 0.0 20480.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) (initialize-skeleton obj *swamp-rat-nest-dummy-a-sg* '()) @@ -1812,10 +1812,10 @@ swamp-rat-nest-default-event-handler (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 12288.0 0.0 16384.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) (initialize-skeleton obj *swamp-rat-nest-dummy-b-sg* '()) @@ -1843,10 +1843,10 @@ swamp-rat-nest-default-event-handler (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 12288.0 0.0 12288.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) (initialize-skeleton obj *swamp-rat-nest-dummy-c-sg* '()) diff --git a/test/decompiler/reference/levels/swamp/swamp-rat_REF.gc b/test/decompiler/reference/levels/swamp/swamp-rat_REF.gc index b3700f22d7..830c90fab0 100644 --- a/test/decompiler/reference/levels/swamp/swamp-rat_REF.gc +++ b/test/decompiler/reference/levels/swamp/swamp-rat_REF.gc @@ -83,7 +83,7 @@ ;; definition for function swamp-rat-default-event-handler ;; INFO: Return type mismatch none vs object. -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 7] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 7] (defbehavior swamp-rat-default-event-handler swamp-rat ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) @@ -854,17 +854,23 @@ swamp-rat-default-event-handler ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) (set! (-> s4-0 collide-with) (the-as uint 16)) (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 2) (set-vector! (-> s4-0 local-sphere) 0.0 3686.4001 0.0 3686.4001) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj collide-info) s5-0) ) 0 diff --git a/test/decompiler/reference/levels/village1/farmer_REF.gc b/test/decompiler/reference/levels/village1/farmer_REF.gc index 737d9f3dfd..a539d60b82 100644 --- a/test/decompiler/reference/levels/village1/farmer_REF.gc +++ b/test/decompiler/reference/levels/village1/farmer_REF.gc @@ -160,26 +160,26 @@ (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 4) (set-vector! (-> s4-0 local-sphere) 4096.0 8192.0 -4096.0 12288.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 4) (set-vector! (-> s3-0 local-sphere) 4096.0 6144.0 -4096.0 8192.0) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) (set! (-> s3-1 collide-with) (the-as uint 16)) (set! (-> s3-1 prim-core action) (the-as uint 1)) (set! (-> s3-1 prim-core offense) 4) (set-vector! (-> s3-1 local-sphere) 4096.0 10240.0 -4096.0 8192.0) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/test/decompiler/reference/levels/village1/fishermans-boat_REF.gc b/test/decompiler/reference/levels/village1/fishermans-boat_REF.gc index 0c5a076681..904a724d37 100644 --- a/test/decompiler/reference/levels/village1/fishermans-boat_REF.gc +++ b/test/decompiler/reference/levels/village1/fishermans-boat_REF.gc @@ -1986,7 +1986,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 1) 0))) (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) @@ -1994,7 +2000,7 @@ (set! (-> s4-0 prim-core action) (the-as uint 3)) (set! (-> s4-0 prim-core offense) 4) (set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 61440.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new @@ -2012,11 +2018,11 @@ (set! (-> s3-0 prim-core offense) 4) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 61440.0) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-overlay) s5-0) ) 0 diff --git a/test/decompiler/reference/levels/village1/sage_REF.gc b/test/decompiler/reference/levels/village1/sage_REF.gc index cdb9d3a927..2021f13cac 100644 --- a/test/decompiler/reference/levels/village1/sage_REF.gc +++ b/test/decompiler/reference/levels/village1/sage_REF.gc @@ -1354,7 +1354,7 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) arg0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 10240.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) (set! (-> s2-0 collide-with) (the-as uint 16)) @@ -1362,8 +1362,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) arg0) (set-vector! (-> s2-0 local-sphere) 0.0 -2048.0 0.0 5324.8) + (append-prim s4-0 s2-0) ) - (dummy-28 s4-0) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) (set! (-> s2-1 collide-with) (the-as uint 16)) @@ -1371,11 +1371,11 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) arg0) (set-vector! (-> s2-1 local-sphere) 0.0 2048.0 0.0 5324.8) + (append-prim s4-0 s2-1) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/test/decompiler/reference/levels/village1/village-obs-VI1_REF.gc b/test/decompiler/reference/levels/village1/village-obs-VI1_REF.gc index c0f94638ea..0e8fda3329 100644 --- a/test/decompiler/reference/levels/village1/village-obs-VI1_REF.gc +++ b/test/decompiler/reference/levels/village1/village-obs-VI1_REF.gc @@ -1064,14 +1064,20 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core offense) 2) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 2457.6) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj collide-info) s5-0) ) 0 diff --git a/test/decompiler/reference/levels/village1/yakow_REF.gc b/test/decompiler/reference/levels/village1/yakow_REF.gc index 553e0fed3e..3e375aa526 100644 --- a/test/decompiler/reference/levels/village1/yakow_REF.gc +++ b/test/decompiler/reference/levels/village1/yakow_REF.gc @@ -214,8 +214,8 @@ ;; definition for function yakow-default-event-handler ;; INFO: Return type mismatch none vs object. -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 52] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?. [OP: 54] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 52] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 54] (defbehavior yakow-default-event-handler yakow ((arg0 process-drawable) (arg1 int) (arg2 symbol) (arg3 event-message-block)) @@ -248,7 +248,7 @@ (dummy-55 (-> self root-override) arg0 - (-> arg3 param 0) + (the-as touching-shapes-entry (-> arg3 param 0)) 0.7 6144.0 16384.0 @@ -356,6 +356,7 @@ yakow-default-event-handler ) ;; definition for function yakow-simple-post +;; INFO: Return type mismatch symbol vs none. (defbehavior yakow-simple-post yakow () (yakow-common-post) (dummy-47 (-> self root-override)) @@ -1442,7 +1443,7 @@ yakow-default-event-handler (set! (-> v1-1 prim-core collide-as) (the-as uint 0)) ) 0 - (TODO-RENAME-9 + (drop-pickup (-> self fact-override) #t *entity-pool* @@ -1466,17 +1467,23 @@ yakow-default-event-handler ) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) + (set! + (-> s4-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 3073)) (set! (-> s3-0 prim-core offense) 4) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 10240.0) + (set-root-prim! s4-0 s3-0) ) - (dummy-46 s4-0) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/village2/sunken-elevator_REF.gc b/test/decompiler/reference/levels/village2/sunken-elevator_REF.gc index 49e9d7c9db..20d13de8d8 100644 --- a/test/decompiler/reference/levels/village2/sunken-elevator_REF.gc +++ b/test/decompiler/reference/levels/village2/sunken-elevator_REF.gc @@ -220,10 +220,10 @@ ) ) (vector-! gp-0 (-> self root-override trans) s5-0) - ) - (when (< (-> self path-pos) 0.9) - (TODO-RENAME-28 (-> *target* control)) - (send-event *target* 'reset-height) + (when (< (-> self path-pos) 0.9) + (TODO-RENAME-28 (-> *target* control) gp-0) + (send-event *target* 'reset-height) + ) ) (none) ) @@ -245,6 +245,7 @@ ) ;; definition for method 27 of type sunken-elevator +;; INFO: Return type mismatch symbol vs none. (defmethod TODO-RENAME-27 sunken-elevator ((obj sunken-elevator)) (ja-channel-set! 1) (cond diff --git a/test/decompiler/reference/levels/village2/village2-obs_REF.gc b/test/decompiler/reference/levels/village2/village2-obs_REF.gc index d4e4e713b3..c5d2267da5 100644 --- a/test/decompiler/reference/levels/village2/village2-obs_REF.gc +++ b/test/decompiler/reference/levels/village2/village2-obs_REF.gc @@ -205,13 +205,13 @@ :enter (behavior () (logior! (-> self draw status) 2) - (dummy-48 (-> self root-overlay)) + (clear-collide-with-as (-> self root-overlay)) (none) ) :exit (behavior () (set! (-> self draw status) (logand -3 (-> self draw status))) - (dummy-49 (-> self root-overlay)) + (restore-collide-with-as (-> self root-overlay)) (none) ) :trans @@ -452,7 +452,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -471,10 +477,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 18432.0) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-overlay) s5-0) ) 0 @@ -529,7 +535,13 @@ ) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) nothing) + (set! + (-> s5-0 no-reaction) + (the-as + (function collide-shape-moving collide-shape-intersect vector vector none) + nothing + ) + ) (dummy-29 s5-0 1) (let ((s4-0 @@ -548,10 +560,10 @@ (set! (-> s4-0 prim-core offense) 4) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 25395.2) + (set-root-prim! s5-0 s4-0) ) - (dummy-46 s5-0) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-overlay) s5-0) ) 0 @@ -1211,7 +1223,7 @@ (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 4) (set-vector! (-> s3-0 local-sphere) -24576.0 18432.0 0.0 49152.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new @@ -1229,8 +1241,8 @@ (set! (-> s2-0 prim-core offense) 4) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 24576.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) (let ((s2-1 (new @@ -1248,11 +1260,11 @@ (set! (-> s2-1 prim-core offense) 4) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 -24576.0 49152.0) + (append-prim s3-0 s2-1) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root-override) s4-0) ) (process-drawable-from-entity! obj arg0) @@ -1457,7 +1469,16 @@ (set! (-> a0-3 quad) (-> self root trans quad)) (set! (-> a0-3 y) (+ 67584.0 (-> a0-3 y))) (let - ((v1-12 (birth-pickup-at-point a0-3 6 47.0 #f self (the-as fact-info #f))) + ((v1-12 + (birth-pickup-at-point + a0-3 + (pickup-type fuel-cell) + 47.0 + #f + self + (the-as fact-info #f) + ) + ) ) (set! (-> self fcell-handle) (ppointer->handle v1-12)) (send-event (ppointer->process v1-12) 'collide-shape #f) @@ -2717,18 +2738,18 @@ (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set-vector! (-> s3-0 local-sphere) 0.0 40960.0 0.0 40960.0) - (dummy-46 s4-0) + (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) (set! (-> s2-0 collide-with) (the-as uint 16)) (set! (-> s2-0 prim-core action) (the-as uint 1)) (set! (-> s2-0 prim-core offense) 1) (set-vector! (-> s2-0 local-sphere) 0.0 34816.0 0.0 14336.0) + (append-prim s3-0 s2-0) ) - (dummy-28 s3-0) ) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) + (backup-collide-with-as s4-0) (set! (-> obj root) s4-0) ) (process-drawable-from-entity! obj arg0) diff --git a/test/decompiler/reference/levels/village2/warrior_REF.gc b/test/decompiler/reference/levels/village2/warrior_REF.gc index 0dab6de26f..5dc796a258 100644 --- a/test/decompiler/reference/levels/village2/warrior_REF.gc +++ b/test/decompiler/reference/levels/village2/warrior_REF.gc @@ -262,26 +262,26 @@ (set! (-> s4-0 prim-core action) (the-as uint 1)) (set! (-> s4-0 prim-core offense) 4) (set-vector! (-> s4-0 local-sphere) -3072.0 8192.0 0.0 11264.0) - (dummy-46 s5-0) + (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) (set! (-> s3-0 collide-with) (the-as uint 16)) (set! (-> s3-0 prim-core action) (the-as uint 1)) (set! (-> s3-0 prim-core offense) 4) (set-vector! (-> s3-0 local-sphere) -2048.0 9216.0 0.0 8192.0) + (append-prim s4-0 s3-0) ) - (dummy-28 s4-0) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) (set! (-> s3-1 collide-with) (the-as uint 16)) (set! (-> s3-1 prim-core action) (the-as uint 1)) (set! (-> s3-1 prim-core offense) 4) (set-vector! (-> s3-1 local-sphere) 0.0 2048.0 0.0 4096.0) + (append-prim s4-0 s3-1) ) - (dummy-28 s4-0) ) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (dummy-50 s5-0) + (backup-collide-with-as s5-0) (set! (-> obj root-override) s5-0) ) 0 diff --git a/test/goalc/source_templates/with_game/test-pw-shifts.gc b/test/goalc/source_templates/with_game/test-pw-shifts.gc index 93c659a04b..2b7ccf0a59 100644 --- a/test/goalc/source_templates/with_game/test-pw-shifts.gc +++ b/test/goalc/source_templates/with_game/test-pw-shifts.gc @@ -1,7 +1,7 @@ (defmacro print-vf-hex (vf) `(let ((temp (new 'stack 'vector4w))) (.svf temp ,vf) - (format #t "~X ~X ~X ~X~%" (-> temp data 0) (-> temp data 1) (-> temp data 2) (-> temp data 3)) + (format #t "~X ~X ~X ~X~%" (-> temp x) (-> temp y) (-> temp z) (-> temp w)) ) ) diff --git a/test/goalc/source_templates/with_game/test-vector-int-float-conversions.gc b/test/goalc/source_templates/with_game/test-vector-int-float-conversions.gc index bfac379044..4c00c1c73b 100644 --- a/test/goalc/source_templates/with_game/test-vector-int-float-conversions.gc +++ b/test/goalc/source_templates/with_game/test-vector-int-float-conversions.gc @@ -8,7 +8,7 @@ (defmacro print-vf-hex (vf) `(let ((temp (new 'stack 'vector4w))) (.svf temp ,vf) - (format #t "~d ~d ~d ~d~%" (-> temp data 0) (-> temp data 1) (-> temp data 2) (-> temp data 3)) + (format #t "~d ~d ~d ~d~%" (-> temp x) (-> temp y) (-> temp z) (-> temp w)) ) )