From be1e40a041267ac7bc263c7cda278d34812fb942 Mon Sep 17 00:00:00 2001 From: Tyler Wilding Date: Sat, 8 Oct 2022 12:42:52 -0400 Subject: [PATCH] d/jak2: decompile `conveyor` | `elevator` | `plat` | `bouncer` | `basebutton` | `base-plat` | most of `sampler` | `simple-nav-sphere` | `simple-focus` | `elec-gate` and `blocking-plane` (#1942) Most of these have been atleast partially documented / named / cleaned up as well. Co-authored-by: water --- common/type_system/state.cpp | 16 + common/type_system/state.h | 1 + decompiler/IR2/Env.cpp | 20 +- decompiler/IR2/Env.h | 2 +- decompiler/IR2/FormExpressionAnalysis.cpp | 7 +- decompiler/analysis/expression_build.cpp | 2 +- decompiler/config/jak2/all-types.gc | 620 +++++---- decompiler/config/jak2/hacks.jsonc | 68 +- decompiler/config/jak2/inputs.jsonc | 2 +- decompiler/config/jak2/label_types.jsonc | 4 +- decompiler/config/jak2/stack_structures.jsonc | 10 + decompiler/config/jak2/type_casts.jsonc | 82 +- decompiler/config/jak2/var_names.jsonc | 401 +++++- .../jak2/engine/collide/collide-shape-h.gc | 11 +- .../jak2/engine/collide/collide-touch-h.gc | 15 +- goal_src/jak2/engine/common_objs/base-plat.gc | 408 ++++++ .../jak2/engine/common_objs/basebutton.gc | 497 +++++++ .../jak2/engine/common_objs/blocking-plane.gc | 234 ++++ goal_src/jak2/engine/common_objs/conveyor.gc | 489 +++++++ goal_src/jak2/engine/common_objs/elevator.gc | 880 ++++++++++++ goal_src/jak2/engine/common_objs/plat.gc | 355 +++++ goal_src/jak2/engine/debug/sampler.gc | 44 + goal_src/jak2/engine/engine/connect.gc | 4 +- goal_src/jak2/engine/entity/entity-h.gc | 6 +- goal_src/jak2/engine/entity/entity.gc | 56 +- goal_src/jak2/engine/entity/relocate.gc | 14 +- goal_src/jak2/engine/gfx/lightning-h.gc | 23 +- goal_src/jak2/engine/nav/nav-mesh-h.gc | 3 + goal_src/jak2/engine/physics/trajectory.gc | 44 +- .../process-drawable/process-drawable-h.gc | 5 + .../engine/process-drawable/simple-focus.gc | 55 + .../process-drawable/simple-nav-sphere.gc | 139 ++ .../jak2/engine/spatial-hash/actor-hash-h.gc | 4 +- .../engine/spatial-hash/spatial-hash-h.gc | 9 +- .../jak2/engine/target/board/target-board.gc | 88 +- goal_src/jak2/engine/target/logic-target.gc | 46 +- goal_src/jak2/engine/util/sync-info-h.gc | 11 + goal_src/jak2/levels/common/airlock.gc | 32 +- goal_src/jak2/levels/common/elec-gate.gc | 1034 ++++++++++++++ goal_src/jak2/levels/common/enemy/bouncer.gc | 248 ++++ goalc/make/MakeSystem.cpp | 3 +- scripts/gsrc/utils.py | 2 +- .../jak1/engine/ambient/ambient_REF.gc | 8 +- .../jak1/engine/camera/cam-combiner_REF.gc | 26 +- .../jak1/engine/camera/cam-states-dbg_REF.gc | 18 +- .../jak1/engine/camera/cam-states_REF.gc | 80 +- .../jak1/engine/camera/pov-camera_REF.gc | 4 +- .../jak1/engine/game/collectables_REF.gc | 118 +- .../reference/jak1/engine/game/crates_REF.gc | 18 +- .../jak1/engine/game/game-save_REF.gc | 4 +- .../jak1/engine/game/generic-obs_REF.gc | 149 +- .../jak1/engine/game/projectiles_REF.gc | 14 +- .../engine/game/task/process-taskable_REF.gc | 46 +- .../jak1/engine/game/voicebox_REF.gc | 4 +- .../jak1/engine/gfx/water/water_REF.gc | 4 +- .../jak1/engine/target/sidekick_REF.gc | 10 +- .../jak1/engine/target/target2_REF.gc | 96 +- .../jak1/engine/target/target_REF.gc | 46 +- .../reference/jak1/engine/ui/hud_REF.gc | 8 +- .../jak1/engine/ui/progress/progress_REF.gc | 20 +- .../jak1/levels/beach/beach-obs_REF.gc | 46 +- .../jak1/levels/beach/beach-rocks_REF.gc | 4 +- .../jak1/levels/beach/pelican_REF.gc | 22 +- .../jak1/levels/citadel/citadel-obs_REF.gc | 32 +- .../jak1/levels/citadel/citadel-sages_REF.gc | 22 +- .../jak1/levels/citadel/citb-drop-plat_REF.gc | 22 +- .../jak1/levels/citadel/citb-plat_REF.gc | 16 +- .../jak1/levels/common/basebutton_REF.gc | 32 +- .../jak1/levels/common/orb-cache_REF.gc | 6 +- .../jak1/levels/common/plat-button_REF.gc | 14 +- .../jak1/levels/common/plat-eco_REF.gc | 10 +- .../jak1/levels/common/ropebridge_REF.gc | 14 +- .../jak1/levels/common/water-anim_REF.gc | 6 +- .../jak1/levels/darkcave/darkcave-obs_REF.gc | 10 +- .../jak1/levels/finalboss/final-door_REF.gc | 16 +- .../levels/finalboss/green-eco-lurker_REF.gc | 4 +- .../levels/finalboss/robotboss-misc_REF.gc | 14 +- .../levels/finalboss/robotboss-weapon_REF.gc | 8 +- .../jak1/levels/finalboss/robotboss_REF.gc | 24 +- .../levels/finalboss/sage-finalboss_REF.gc | 16 +- .../levels/firecanyon/firecanyon-obs_REF.gc | 20 +- .../jak1/levels/flut_common/flutflut_REF.gc | 20 +- .../levels/flut_common/target-flut_REF.gc | 66 +- .../jak1/levels/jungle/bouncer_REF.gc | 14 +- .../jak1/levels/jungle/fisher_REF.gc | 24 +- .../jak1/levels/jungle/jungle-mirrors_REF.gc | 14 +- .../jak1/levels/jungle/jungle-obs_REF.gc | 32 +- .../jak1/levels/jungleb/jungleb-obs_REF.gc | 8 +- .../jak1/levels/jungleb/plant-boss_REF.gc | 104 +- .../jak1/levels/jungleb/plat-flip_REF.gc | 6 +- .../levels/lavatube/lavatube-energy_REF.gc | 26 +- .../jak1/levels/lavatube/lavatube-obs_REF.gc | 28 +- .../jak1/levels/maincave/dark-crystal_REF.gc | 6 +- .../jak1/levels/maincave/gnawer_REF.gc | 54 +- .../jak1/levels/maincave/maincave-obs_REF.gc | 54 +- .../levels/maincave/mother-spider-egg_REF.gc | 12 +- .../jak1/levels/misty/balloonlurker_REF.gc | 4 +- .../jak1/levels/misty/misty-conveyor_REF.gc | 4 +- .../jak1/levels/misty/misty-obs_REF.gc | 10 +- .../levels/misty/misty-teetertotter_REF.gc | 18 +- .../jak1/levels/misty/misty-warehouse_REF.gc | 4 +- .../jak1/levels/misty/mistycannon_REF.gc | 34 +- .../jak1/levels/misty/quicksandlurker_REF.gc | 12 +- .../jak1/levels/misty/sidekick-human_REF.gc | 4 +- .../jak1/levels/ogre/flying-lurker_REF.gc | 162 +-- .../jak1/levels/ogre/ogre-obs_REF.gc | 36 +- .../jak1/levels/ogre/ogreboss_REF.gc | 28 +- .../levels/racer_common/racer-states_REF.gc | 54 +- .../jak1/levels/racer_common/racer_REF.gc | 30 +- .../jak1/levels/robocave/cave-trap_REF.gc | 4 +- .../jak1/levels/robocave/spider-egg_REF.gc | 16 +- .../rolling/rolling-lightning-mole_REF.gc | 12 +- .../jak1/levels/rolling/rolling-obs_REF.gc | 12 +- .../levels/rolling/rolling-race-ring_REF.gc | 10 +- .../jak1/levels/snow/snow-ball_REF.gc | 6 +- .../jak1/levels/snow/snow-bumper_REF.gc | 8 +- .../jak1/levels/snow/snow-flutflut-obs_REF.gc | 54 +- .../jak1/levels/snow/snow-obs_REF.gc | 44 +- .../jak1/levels/snow/snow-ram-boss_REF.gc | 18 +- .../jak1/levels/snow/snow-ram_REF.gc | 22 +- .../jak1/levels/snow/target-snowball_REF.gc | 8 +- .../jak1/levels/sunken/double-lurker_REF.gc | 18 +- .../jak1/levels/sunken/helix-water_REF.gc | 24 +- .../jak1/levels/sunken/orbit-plat_REF.gc | 16 +- .../jak1/levels/sunken/puffer_REF.gc | 4 +- .../jak1/levels/sunken/qbert-plat_REF.gc | 12 +- .../jak1/levels/sunken/shover_REF.gc | 16 +- .../jak1/levels/sunken/square-platform_REF.gc | 30 +- .../levels/sunken/sun-exit-chamber_REF.gc | 22 +- .../jak1/levels/sunken/sun-iris-door_REF.gc | 32 +- .../jak1/levels/sunken/sunken-pipegame_REF.gc | 14 +- .../jak1/levels/sunken/sunken-water_REF.gc | 8 +- .../jak1/levels/sunken/target-tube_REF.gc | 30 +- .../jak1/levels/sunken/wall-plat_REF.gc | 26 +- .../jak1/levels/sunken/wedge-plats_REF.gc | 20 +- .../reference/jak1/levels/swamp/billy_REF.gc | 16 +- .../reference/jak1/levels/swamp/kermit_REF.gc | 6 +- .../jak1/levels/swamp/swamp-obs_REF.gc | 14 +- .../jak1/levels/swamp/swamp-rat-nest_REF.gc | 4 +- .../jak1/levels/title/title-obs_REF.gc | 28 +- .../jak1/levels/training/training-obs_REF.gc | 26 +- .../levels/village1/fishermans-boat_REF.gc | 4 +- .../village1/sequence-a-village1_REF.gc | 4 +- .../jak1/levels/village2/swamp-blimp_REF.gc | 16 +- .../jak1/levels/village2/village2-obs_REF.gc | 30 +- .../jak1/levels/village3/minecart_REF.gc | 8 +- .../jak1/levels/village3/village3-obs_REF.gc | 10 +- .../levels/village_common/villagep-obs_REF.gc | 20 +- .../jak2/engine/camera/cam-combiner_REF.gc | 22 +- .../jak2/engine/camera/cam-states-dbg_REF.gc | 12 +- .../jak2/engine/camera/cam-states_REF.gc | 88 +- .../engine/collide/collide-shape-h_REF.gc | 8 +- .../engine/collide/collide-touch-h_REF.gc | 2 +- .../jak2/engine/common_objs/base-plat_REF.gc | 472 +++++++ .../jak2/engine/common_objs/basebutton_REF.gc | 541 ++++++++ .../engine/common_objs/blocking-plane_REF.gc | 263 ++++ .../jak2/engine/common_objs/conveyor_REF.gc | 590 ++++++++ .../jak2/engine/common_objs/elevator_REF.gc | 953 +++++++++++++ .../jak2/engine/common_objs/plat_REF.gc | 407 ++++++ .../jak2/engine/debug/editable-player_REF.gc | 42 +- .../jak2/engine/debug/sampler_REF.gc | 61 + .../jak2/engine/entity/entity_REF.gc | 30 +- .../jak2/engine/entity/relocate_REF.gc | 6 +- .../jak2/engine/game/task/task-control_REF.gc | 12 +- .../jak2/engine/gfx/lightning-h_REF.gc | 4 +- .../particles/sparticle-launcher_REF.gc | 2 +- .../jak2/engine/physics/trajectory_REF.gc | 12 +- .../process-drawable/process-focusable_REF.gc | 1 + .../process-drawable/simple-focus_REF.gc | 76 ++ .../process-drawable/simple-nav-sphere_REF.gc | 163 +++ .../actor-hash-h_REF.gc | 8 +- .../collide-hash-h_REF.gc | 0 .../spatial-hash-h_REF.gc | 2 +- .../engine/target/board/board-states_REF.gc | 82 +- .../engine/target/board/board-util_REF.gc | 8 +- .../engine/target/board/target-board_REF.gc | 7 +- .../jak2/engine/target/logic-target_REF.gc | 18 +- .../jak2/engine/target/target_REF.gc | 92 +- .../jak2/engine/util/sync-info-h_REF.gc | 1 + .../jak2/levels/common/airlock_REF.gc | 32 +- .../jak2/levels/common/elec-gate_REF.gc | 1215 +++++++++++++++++ .../jak2/levels/common/enemy/bouncer_REF.gc | 277 ++++ test/offline/config/jak2/config.jsonc | 2 + 183 files changed, 12021 insertions(+), 2055 deletions(-) create mode 100644 test/decompiler/reference/jak2/engine/common_objs/base-plat_REF.gc create mode 100644 test/decompiler/reference/jak2/engine/common_objs/basebutton_REF.gc create mode 100644 test/decompiler/reference/jak2/engine/common_objs/blocking-plane_REF.gc create mode 100644 test/decompiler/reference/jak2/engine/common_objs/conveyor_REF.gc create mode 100644 test/decompiler/reference/jak2/engine/common_objs/elevator_REF.gc create mode 100644 test/decompiler/reference/jak2/engine/common_objs/plat_REF.gc create mode 100644 test/decompiler/reference/jak2/engine/debug/sampler_REF.gc create mode 100644 test/decompiler/reference/jak2/engine/process-drawable/simple-focus_REF.gc create mode 100644 test/decompiler/reference/jak2/engine/process-drawable/simple-nav-sphere_REF.gc rename test/decompiler/reference/jak2/engine/{spatial_hash => spatial-hash}/actor-hash-h_REF.gc (52%) rename test/decompiler/reference/jak2/engine/{spatial_hash => spatial-hash}/collide-hash-h_REF.gc (100%) rename test/decompiler/reference/jak2/engine/{spatial_hash => spatial-hash}/spatial-hash-h_REF.gc (99%) create mode 100644 test/decompiler/reference/jak2/levels/common/elec-gate_REF.gc create mode 100644 test/decompiler/reference/jak2/levels/common/enemy/bouncer_REF.gc diff --git a/common/type_system/state.cpp b/common/type_system/state.cpp index aa2cc38b73..a10f0c31a3 100644 --- a/common/type_system/state.cpp +++ b/common/type_system/state.cpp @@ -87,6 +87,22 @@ TypeSpec get_state_handler_type(StateHandler kind, const TypeSpec& state_type) { return result; } +std::vector get_state_handler_arg_names(StateHandler kind) { + switch (kind) { + case StateHandler::CODE: + // can have args, but are arbitrary + case StateHandler::ENTER: + case StateHandler::TRANS: + case StateHandler::POST: + case StateHandler::EXIT: + return {}; + case StateHandler::EVENT: + return {"proc", "arg1", "event-type", "event"}; + default: + ASSERT(false); + } +} + namespace { TypeSpec func_to_state_type(const TypeSpec& func_type, const TypeSpec& proc_type) { TypeSpec result("state"); diff --git a/common/type_system/state.h b/common/type_system/state.h index cf992455a1..4dd53c606b 100644 --- a/common/type_system/state.h +++ b/common/type_system/state.h @@ -17,6 +17,7 @@ StateHandler handler_name_to_kind(const std::string& name); std::string handler_kind_to_name(StateHandler kind); TypeSpec get_state_handler_type(const std::string& handler_name, const TypeSpec& state_type); TypeSpec get_state_handler_type(StateHandler kind, const TypeSpec& state_type); +std::vector get_state_handler_arg_names(StateHandler kind); std::optional get_state_type_from_enter_and_code(const TypeSpec& enter_func_type, const TypeSpec& code_func_type, diff --git a/decompiler/IR2/Env.cpp b/decompiler/IR2/Env.cpp index 858ea36405..08b8c565dc 100644 --- a/decompiler/IR2/Env.cpp +++ b/decompiler/IR2/Env.cpp @@ -10,6 +10,7 @@ #include "common/log/log.h" #include "common/util/math_util.h" +#include "decompiler/Function/Function.h" #include "decompiler/analysis/atomic_op_builder.h" #include "decompiler/util/DecompilerTypeSystem.h" @@ -26,12 +27,21 @@ const char* get_reg_name(int idx) { } } -void Env::set_remap_for_function(const TypeSpec& ts) { - int nargs = ts.arg_count() - 1; - for (int i = 0; i < nargs; i++) { - m_var_remap[get_reg_name(i)] = ("arg" + std::to_string(i)); +void Env::set_remap_for_function(const Function& func) { + std::vector default_arg_names = {}; + if (func.guessed_name.kind == FunctionName::FunctionKind::V_STATE || + func.guessed_name.kind == FunctionName::FunctionKind::NV_STATE) { + default_arg_names = get_state_handler_arg_names(func.guessed_name.handler_kind); } - if (ts.try_get_tag("behavior")) { + int nargs = func.type.arg_count() - 1; + for (int i = 0; i < nargs; i++) { + if (default_arg_names.size() > i) { + m_var_remap[get_reg_name(i)] = default_arg_names.at(i); + } else { + m_var_remap[get_reg_name(i)] = ("arg" + std::to_string(i)); + } + } + if (func.type.try_get_tag("behavior")) { m_var_remap["s6-0"] = "self"; m_pp_mapped_by_behavior = true; } else { diff --git a/decompiler/IR2/Env.h b/decompiler/IR2/Env.h index 6c5a6ef894..e2e2f92865 100644 --- a/decompiler/IR2/Env.h +++ b/decompiler/IR2/Env.h @@ -157,7 +157,7 @@ class Env { const std::string& art_group() const { return m_art_group; } std::optional get_art_elt_name(int idx) const; - void set_remap_for_function(const TypeSpec& ts); + void set_remap_for_function(const Function& func); void set_remap_for_method(const TypeSpec& ts); void set_remap_for_new_method(const TypeSpec& ts); void map_args_from_config(const std::vector& args_names, diff --git a/decompiler/IR2/FormExpressionAnalysis.cpp b/decompiler/IR2/FormExpressionAnalysis.cpp index 39e011fb15..49dc5980b1 100644 --- a/decompiler/IR2/FormExpressionAnalysis.cpp +++ b/decompiler/IR2/FormExpressionAnalysis.cpp @@ -3226,14 +3226,15 @@ void FunctionCallElement::update_from_stack(const Env& env, "type."); } - bool is_res_lump = tp_type.method_from_type().base_type() == "res-lump"; + bool is_res_lump = tp_type.method_from_type().base_type() == "res-lump" || + tp_type.method_from_type().base_type() == "entity-actor"; bool should_use_virtual = env.dts->ts.should_use_virtual_methods(tp_type.method_from_type(), tp_type.method_id()); if (!should_use_virtual && !is_res_lump) { throw std::runtime_error( - fmt::format("Method call on {} id {} used a virtual call unexpectedly.", - tp_type.method_from_type().print(), tp_type.method_id())); + fmt::format("Method call on {} id {} at {} used a virtual call unexpectedly.", + tp_type.method_from_type().print(), tp_type.method_id(), "ya")); } if (should_use_virtual) { diff --git a/decompiler/analysis/expression_build.cpp b/decompiler/analysis/expression_build.cpp index dc5ee3fddd..0a967db763 100644 --- a/decompiler/analysis/expression_build.cpp +++ b/decompiler/analysis/expression_build.cpp @@ -26,7 +26,7 @@ bool convert_to_expressions( f.guessed_name.kind == FunctionName::FunctionKind::UNIDENTIFIED || f.guessed_name.kind == FunctionName::FunctionKind::NV_STATE || f.guessed_name.kind == FunctionName::FunctionKind::V_STATE) { - f.ir2.env.set_remap_for_function(f.type); + f.ir2.env.set_remap_for_function(f); } else if (f.guessed_name.kind == FunctionName::FunctionKind::METHOD) { auto method_type = dts.ts.lookup_method(f.guessed_name.type_name, f.guessed_name.method_id).type; diff --git a/decompiler/config/jak2/all-types.gc b/decompiler/config/jak2/all-types.gc index 54b9b9210b..0b255a68bb 100644 --- a/decompiler/config/jak2/all-types.gc +++ b/decompiler/config/jak2/all-types.gc @@ -6693,7 +6693,7 @@ (deftype connection (connectable) ((param0 basic :offset-assert 16) - (param1 int32 :offset-assert 20) ;; guessed by decompiler + (param1 basic :offset-assert 20) ;; guessed by decompiler (param2 int32 :offset-assert 24) ;; guessed by decompiler (param3 int32 :offset-assert 28) ;; guessed by decompiler (quad uint128 2 :offset 0) ;; guessed by decompiler @@ -13617,6 +13617,7 @@ ;; lightning-h ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +++lightning-h:lightning-spec-flags (defenum lightning-spec-flags :type uint16 :bitfield #t @@ -13626,6 +13627,7 @@ (lsf3 3) (size-from-adjust-dist 4) ) +;; ---lightning-h:lightning-spec-flags (deftype lightning-spec (basic) ((name string :offset-assert 4) @@ -13655,13 +13657,16 @@ :flag-assert #x900000050 ) +;; +++lightning-h:lightning-mode (defenum lightning-mode :type uint8 + (lm-1 -1) (lm0 0) (lm1 1) (lm2 2) (lm3 3) ) +;; ---lightning-h:lightning-mode (deftype lightning-state (structure) ((mode lightning-mode :offset-assert 0) @@ -13692,7 +13697,7 @@ (new (symbol type lightning-spec process float) _type_) (change-mode (_type_ lightning-mode) lightning-mode 9) (get-mode (_type_) lightning-mode 10) - (set-point (_type_ int vector) none 11) + (set-point! (_type_ int vector) none 11) (set-first-meet-point (_type_ vector) none 12) (set-last-meet-point (_type_ vector) none 13) ) @@ -15007,6 +15012,7 @@ (pause-in float :offset-assert 36) (pause-out float :offset-assert 40) ) + :pack-me :method-count-assert 16 :size-assert #x2c :flag-assert #x100000002c @@ -15919,7 +15925,7 @@ (penetrate-using penetrate) (penetrated-by penetrate) (backup-collide-as collide-spec) - (backup-collde-with collide-spec) + (backup-collide-with collide-spec) (event-priority uint8) (rider-max-momentum float) ) @@ -15929,7 +15935,7 @@ ;; Failed to read fields. (:methods (new (symbol type process-drawable collide-list-enum) _type_ 0) - (collide-shape-method-28 () none 28) ;; (move-by-vector! (_type_ vector) none 28) + (move-by-vector! (_type_ vector) none 28) ;; (move-by-vector! (_type_ vector) none 28) (collide-shape-method-29 (_type_ vector) none 29) ;; (alloc-riders (_type_ int) none 29) (collide-shape-method-30 () none 30) ;; (move-to-point! (_type_ vector) none 30) (collide-shape-method-31 () none 31) ;; (debug-draw (_type_) none 31) @@ -16693,7 +16699,7 @@ (get-next (_type_ touching-shapes-entry) touching-prims-entry 10) ;; (get-touched-shape (_type_ collide-shape) collide-shape 10) (touching-shapes-entry-method-11 () none 11) ;; (dummy-11 () none 11) (touching-shapes-entry-method-12 (_type_ collide-shape uint) touching-prims-entry 12) ;; (prims-touching? (_type_ collide-shape-moving uint) touching-prims-entry 12) - (touching-shapes-entry-method-13 () none 13) ;; (prims-touching-action? (_type_ collide-shape collide-action collide-action) touching-prims-entry 13) + (touching-shapes-entry-method-13 (_type_ collide-shape uint uint) basic 13) ;; (prims-touching-action? (_type_ collide-shape collide-action collide-action) touching-prims-entry 13) (touching-shapes-entry-method-14 () none 14) ;; (dummy-14 () none 14) ) ) @@ -16951,7 +16957,9 @@ :size-assert #xcc :flag-assert #x1b005000cc (:methods - (get-trans (_type_ int) vector 20) + (get-trans + "@returns the `trans` [[vector]] from the process's `root` (typically either a [[trsqv]] or a [[collide-shape]]" + (_type_ int) vector 20) (get-quat (_type_) quaternion 21) (get-transv (_type_) vector 22) (process-focusable-method-23 (_type_) none 23) @@ -22172,7 +22180,7 @@ (:methods (spatial-hash-method-34 () none 34) (spatial-hash-method-35 () none 35) - (spatial-hash-method-36 () none 36) + (spatial-hash-method-36 (_type_ sphere (pointer collide-shape) int) int 36) (spatial-hash-method-37 () none 37) (spatial-hash-method-38 () none 38) (spatial-hash-method-39 () none 39) @@ -22185,7 +22193,7 @@ ;; actor-hash-h ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(define-extern *actor-list* pointer) ;; some array of something. +(define-extern *actor-list* (pointer collide-shape)) ;; some array of something. (define-extern *actor-list-length* int) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -27015,8 +27023,8 @@ ;; (define-extern transform-and-sleep function) ;; (define-extern transform-and-sleep-code function) (define-extern transform-post (function int :behavior process-drawable)) ;; -;; (define-extern rider-trans function) ;; (function int :behavior process-drawable) -;; (define-extern rider-post function) ;; (function int :behavior process-drawable) +(define-extern rider-trans (function none :behavior process-drawable)) ;; +(define-extern rider-post (function none :behavior process-drawable)) ;; ;; (define-extern pusher-post function) ;; (function int :behavior process-drawable) ;; (define-extern process-drawable-delay-player function) ;; (function time-frame int :behavior process-drawable) ;; (define-extern process-drawable-fuel-cell-handler function) ;; (function process int symbol event-message-block none :behavior process-drawable) @@ -29160,7 +29168,7 @@ (define-extern entity-birth-no-kill (function entity process)) (define-extern entity-task-complete-on (function entity none)) (define-extern entity-task-complete-off (function entity none)) -(define-extern process-entity-status! (function process entity-perm-status symbol int)) ;; +(define-extern process-entity-status! (function process entity-perm-status symbol entity-perm-status)) ;; (define-extern find-nearest-entity (function vector type entity)) (define-extern entity-speed-test (function string entity)) (define-extern dump-entity-remap (function object object none)) @@ -31239,12 +31247,23 @@ ;; sampler ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *sampler-mem* object) -;; (define-extern *sampler-compare* object) -;; (define-extern *sampler-count* object) -;; (define-extern timer0-handler function) -;; (define-extern sampler-start function) -;; (define-extern sampler-stop function) +(define-extern *sampler-mem* "A pointer to where the sampled data should be stored" pointer) +(define-extern *sampler-compare* + "The value used to set the EE register's `Timer 0 Compare Value`. Always `1`" + uint) +(define-extern *sampler-count* + "Incremented everytime a metric is sampled + @see [[timer0-handler]]" + int) +(define-extern timer0-handler (function none)) +(define-extern sampler-start + "Reset the [[timer-bank]] EE registers. + - If [[*sampler-mem*]] is undefined, allocate 16.7MB in the debug segment + - and when [[*sampler-mem*]] is defined, initialize the [[timer-bank]] fully. Reset [[*sampler-count*]] to 0 as well" + (function none)) +(define-extern sampler-stop + "Sets the [[timer-bank]] mode EE register to 0" + (function none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; default-menu ;; @@ -31617,22 +31636,24 @@ ;; blocking-plane ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype blocking-plane (process-drawable) - () + ((root-override collide-shape :offset 128 :score 999)) :method-count-assert 22 :size-assert #xc8 :flag-assert #x16005000c8 (:methods (idle () _type_ :state 20) - (blocking-plane-method-21 () none 21) + (init! + "TODO - but sets up the plane given 2 vectors and a height" + (_type_ (inline-array vector) float) none 21) ) ) -|# -;; (define-extern blocking-plane-init-by-other function) ;; (function curve-control int none :behavior blocking-plane) -;; (define-extern blocking-plane-spawn function) ;; (function curve-control none :behavior process) -;; (define-extern blocking-plane-destroy function) ;; (function none) +(define-extern blocking-plane-init-by-other + "Calls [[blocking-plane::21]] with the given args" + (function (inline-array vector) float none :behavior blocking-plane)) +(define-extern blocking-plane-spawn (function curve-control (inline-array vector) float none :behavior process)) +(define-extern blocking-plane-destroy (function none :behavior blocking-plane)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; idle-control ;; @@ -32507,73 +32528,115 @@ ;; base-plat ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype base-plat (process-focusable) - ((smush smush-control :inline :offset-assert 204) - (basetrans vector :inline :offset-assert 236) - (bounce-time time-frame :offset-assert 252) - (bouncing basic :offset-assert 260) - (bounce-scale meters :offset-assert 264) + ((root-override collide-shape-moving :offset 128 :score 100) + (smush smush-control :inline :offset-assert 208) + (basetrans vector :inline :offset-assert 240) + (bounce-time time-frame :offset-assert 256) + (bouncing symbol :offset-assert 264) + (bounce-scale meters :offset-assert 268) ) :method-count-assert 34 :size-assert #x110 :flag-assert #x2200900110 (:methods - (base-plat-method-27 () none 27) - (base-plat-method-28 () none 28) - (base-plat-method-29 () none 29) - (base-plat-method-30 () none 30) - (base-plat-method-31 () none 31) - (base-plat-method-32 () none 32) - (base-plat-method-33 () none 33) + (execute-effects + "Executes various ancillary tasks with the platform, such as spawning particles or playing the associated sound" + (_type_) none 27) + (stop-bouncing! + "Sets `bouncing` to false and resets related settings to their defaults" + (_type_) none 28) + (start-bouncing! + "Sets `bouncing` to [[#t]] and sets up the clock to periodically bounce + and translate the platform via the `smush` + @see [[smush-control]]" + (_type_) none :behavior base-plat 29) + (get-art-group + "@returns The associated [[art-group]]" + (_type_) art-group 30) + (base-plat-method-31 "TODO - collision stuff" (_type_) none 31) + (base-plat-method-32 (_type_) none 32) + (base-plat-method-33 (_type_) none 33) ) ) -|# -#| +;; +++base-plat:eco-door-flags +(defenum eco-door-flags + :bitfield #t + :type int32 + (ecdf00) + (ecdf01) + (auto-close) + (one-way) + ) +;; ---base-plat:eco-door-flags + + (deftype eco-door (process-drawable) - ((speed float :offset-assert 196) - (open-distance float :offset-assert 200) - (close-distance float :offset-assert 204) - (out-dir vector :inline :offset-assert 220) - (open-sound uint128 :offset-assert 236) ;; sound-name - (close-sound uint128 :offset-assert 252) ;; sound-name - (state-actor entity-actor :offset-assert 268) ;; guessed by decompiler - (flags int32 :offset-assert 272) ;; eco-door-flags - (locked symbol :offset-assert 276) ;; guessed by decompiler - (auto-close symbol :offset-assert 280) ;; guessed by decompiler - (one-way symbol :offset-assert 284) ;; guessed by decompiler + "@unused - Likely a left-over from Jak 1" + ((root-override collide-shape :offset 128 :score 100) + (speed float :offset-assert 200) + (open-distance float :offset-assert 204) + (close-distance float :offset-assert 208) + (out-dir vector :inline :offset-assert 224) + (open-sound sound-name :offset-assert 240) ;; sound-name + (close-sound sound-name :offset-assert 256) ;; sound-name + (state-actor entity-actor :offset-assert 272) ;; guessed by decompiler + (flags eco-door-flags :offset-assert 276) ;; eco-door-flags + (locked symbol :offset-assert 280) ;; guessed by decompiler + (auto-close symbol :offset-assert 284) ;; guessed by decompiler + (one-way symbol :offset-assert 288) ;; guessed by decompiler ) :method-count-assert 27 :size-assert #x124 :flag-assert #x1b00b00124 (:methods - (door-closed () _type_ :state 20) ;; (door-closed () _type_ :state 20) - (door-opening () _type_ :state 21) ;; (door-opening () _type_ :state 21) - (door-open () _type_ :state 22) ;; (door-open () _type_ :state 22) - (door-closing () _type_ :state 23) ;; (door-closing () _type_ :state 23) - (eco-door-method-24 () none 24) ;; (TODO-RENAME-24 (_type_) none 24) - (eco-door-method-25 () none 25) ;; (TODO-RENAME-25 (_type_) none 25) - (eco-door-method-26 () none 26) ;; (dummy-26 (_type_) none 26) + (door-closed () _type_ :state 20) + (door-opening () _type_ :state 21) + (door-open () _type_ :state 22) + (door-closing () _type_ :state 23) + (lock-according-to-task! + "If the associated subtask is completed, lock the door if [[eco-door-flags:0]] is set + otherwise, lock it if [[eco-door-flags:0]] is set" + (_type_) none 24) + (eco-door-method-25 (_type_) none 25) ;; (TODO-RENAME-25 (_type_) none 25) + (stub + "@unused - Stub with no overrides" + (_type_) none 26) ) ) -|# -;; (define-extern plat-code function) ;; (function none :behavior baseplat) -;; (define-extern plat-trans function) ;; (function none :behavior baseplat) -;; (define-extern plat-post function) ;; (function none :behavior baseplat) -;; (define-extern plat-event function) ;; (function process int symbol event-message-block object :behavior baseplat) -;; (define-extern eco-door-event-handler function) ;; (function process int symbol event-message-block object :behavior eco-door) +(define-extern plat-code + "After calling [[transform-post]] for 2 consecutive frames, put the process to sleep if it's not bouncing + otherwise, continue bouncing...forever! + @see [[transform-post]]" + (function none :behavior base-plat)) +(define-extern plat-trans + "If the platform is `bouncing`, move the platform accordingly with the [[smush-control]] + - If the amplitude of the `smush` has hit `0.0` then stop bouncing + + If we aren't bouncing however, TODO - CSHAPE" + (function none :behavior base-plat)) +(define-extern plat-post (function none :behavior base-plat)) +(define-extern plat-event + "Handles platform related events. Presently all this does is: + - if `event-type` is [['bonk]], then call [[base-plat:29]]" + (function process int symbol event-message-block object :behavior base-plat)) +(define-extern eco-door-event-handler + "If the `event-type` is `'trigger`, flip the `locked` flag on the door + and play the respective sound + + @unused - likely a leftover from Jak 1" + (function process int symbol event-message-block object :behavior eco-door)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; plat ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype plat (base-plat) - ((path-pos float :offset-assert 268) - (sound-id sound-id :offset-assert 272) ;; guessed by decompiler - (sync sync-eased :inline :offset-assert 276) ;; sync-info-eased :inline + ((path-pos float :offset-assert 272) + (sound-id sound-id :offset-assert 276) ;; guessed by decompiler + (sync sync-eased :inline :offset-assert 280) ;; sync-info-eased :inline ) :method-count-assert 37 :size-assert #x144 @@ -32581,69 +32644,101 @@ (:methods (plat-idle () _type_ :state 34) (plat-path-active () _type_ :state 35) - (plat-method-36 () none 36) + (plat-path-sync + "If the `sync` period is greater than `0` then transition the state to [[plat::35]] + otherwise, [[plat::34]] + + @see [[sync-eased]]" + (_type_) object 36) ) ) -|# -#| (deftype drop-plat (base-plat) - ((art-name basic :offset-assert 268) - (anim basic :offset-assert 272) - (break-anim-name basic :offset-assert 276) - (safe-time time-frame :offset-assert 284) - (hit-point vector :inline :offset-assert 300) + ((art-name string :offset-assert 272) + (anim spool-anim :offset-assert 276) + (break-anim-name string :offset-assert 280) + (safe-time time-frame :offset-assert 288) + (hit-point vector :inline :offset-assert 304) ) :method-count-assert 36 :size-assert #x140 :flag-assert #x2400c00140 (:methods (idle () _type_ :state 34) - (fall () _type_ :state 35) + (fall (symbol) _type_ :state 35) ) ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; basebutton ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| +;; +++basebutton:button-status +(defenum button-status + :type uint16 + :bitfield #t + (pressed) + (button-status-1) + (button-status-2) + (button-status-3) + (button-status-4)) +;; ---basebutton:button-status + (deftype basebutton (process-focusable) - () + ( + (button-status button-status :offset-assert 204) + (notify-actor entity :offset-assert 208) + (actor-group (pointer actor-group) :offset-assert 212) + (actor-group-count int32 :offset-assert 216) + (timeout float :offset-assert 220) + (button-id int32 :offset-assert 224) + (event-going-down symbol :offset-assert 228) + (event-down symbol :offset-assert 232) + (event-going-up symbol :offset-assert 236) + (event-up symbol :offset-assert 240) + (anim-speed float :offset-assert 244) + (move-to-pos vector :inline :offset-assert 256) + (move-to-quat quaternion :inline :offset-assert 272) + ) :method-count-assert 39 :size-assert #x120 :flag-assert #x2700a00120 - ;; Failed to read fields. (:methods (down-idle () _type_ :state 27) ;; (TODO-RENAME-27 (_type_) collide-shape-moving 27) (going-down () _type_ :state 28) ;; (arm-trigger-event! (_type_) symbol 28) (going-up () _type_ :state 29) ;; (TODO-RENAME-29 (_type_ symbol entity) none 29) (up-idle () _type_ :state 30) ;; (move-to-vec-or-quat! (_type_ vector quaternion) quaternion 30) - (basebutton-method-31 () none 31) ;; (press! (_type_ symbol) int 31) - (basebutton-method-32 () none 32) - (basebutton-method-33 () none 33) - (basebutton-method-34 () none 34) - (basebutton-method-35 () none 35) - (basebutton-method-36 () none 36) - (basebutton-method-37 () none 37) - (basebutton-method-38 () none 38) + (reset! (_type_) none 31) ;; (press! (_type_ symbol) int 31) + (idle-state-transition + "If `button-status` has [[button-status:0]] set, transition to [[basebutton::27]] otherwise, [[basebutton::30]]" + (_type_) object 32) + (basebutton-method-33 "TODO - joint stuff" (_type_) none 33) + (basebutton-method-34 "TODO - collision stuff" (_type_) none 34) + (prepare-trigger-event! + "Sets `event-going-down` to `'trigger`" + (_type_) none 35) + (send-event! + "Prepares an [[event-message-block]] using the provided type to send an event to: + - the `notify-actor` + - every [[entity-actor]] in the `actor-group` array + @see [[entity-actor]]" + (_type_ symbol) none :behavior basebutton 36) + (move-to! (_type_ vector quaternion) none 37) + (press! (_type_ symbol) entity-perm-status 38) ) ) -|# -;; (define-extern basebutton-init-by-other function) ;; (function entity-actor vector quaternion entity-actor symbol float none :behavior basebutton) +(define-extern basebutton-init-by-other (function entity-actor vector quaternion entity-actor symbol float none :behavior basebutton)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; bouncer ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype bouncer (process-drawable) - ((spring-height meters :offset-assert 196) - (smush float :offset-assert 200) - (mods basic :offset-assert 204) + ((spring-height meters :offset-assert 200) + (smush float :offset-assert 204) + (mods basic :offset-assert 208) ) :method-count-assert 25 :size-assert #xd4 @@ -32652,18 +32747,15 @@ (idle () _type_ :state 20) (fire () _type_ :state 21) (smush () _type_ :state 22) - (bouncer-method-23 () none 23) - (bouncer-method-24 () none 24) + (init-skeleton! (_type_) none 23) + (bouncer-method-24 "TODO - collision stuff" (_type_) none 24) ) ) -|# - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; conveyor ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype conveyor-section (structure) ((start vector :inline :offset-assert 0) (trailing plane :inline :offset-assert 16) @@ -32674,48 +32766,54 @@ :size-assert #x40 :flag-assert #x900000040 ) -|# -#| (deftype conveyor-section-array (inline-array-class) - ((length int32 :offset-assert 4) - (allocated-length int32 :offset-assert 8) - (data UNKNOWN :dynamic :offset-assert 16) - ) + ((data conveyor-section :dynamic :inline :offset-assert 16)) :method-count-assert 9 :size-assert #x10 :flag-assert #x900000010 ) -|# -#| (deftype conveyor (process-drawable) - ((speed float :offset-assert 196) - (belt-radius float :offset-assert 200) - (pull-y-threshold float :offset-assert 204) - (speed-mult-array uint32 :offset-assert 208) - (speed-mult-array-len int8 :offset-assert 212) - (sections basic :offset-assert 216) - (leading plane :inline :offset-assert 220) - (collide-bounds sphere :inline :offset-assert 236) + ((speed float :offset-assert 200) + (belt-radius float :offset-assert 204) + (pull-y-threshold float :offset-assert 208) + (speed-mult-array (array float) :offset-assert 212) + (speed-mult-array-len int8 :offset-assert 216) + (sections conveyor-section-array :offset-assert 220) + (leading plane :inline :offset-assert 224) + (collide-bounds sphere :inline :offset-assert 240) ) :method-count-assert 28 :size-assert #x100 :flag-assert #x1c00800100 (:methods (idle () _type_ :state 20) - (conveyor-method-21 () none 21) - (conveyor-method-22 () none 22) - (conveyor-method-23 () none 23) - (conveyor-method-24 () none 24) - (conveyor-method-25 () none 25) - (conveyor-method-26 () none 26) - (conveyor-method-27 () none 27) + (conveyor-method-21 + "TODO - quite dense, has to do with the conveyor sections and the path they are associated with" + (_type_) float 21) + (get-art-group + "@returns The respective [[art-group]] for the [[conveyor]]" + (_type_) art-group 22) + (reset-root! + "Re-initializes the `root` [[trsqv]]" + (_type_) none 23) + (init! + "Initializes defaults for things like the `speed` and `belt-radius`" + (_type_) none 24) + (set-and-get-ambient-sound! + "So long as [[actor-option::16]] is not set, fetch the [[ambient-sound]] for the [[conveyor]] + and return it as well. Otherwise, set it to `0`" + (_type_) ambient-sound 25) + (conveyor-method-26 + "TODO - conveyor section related, perhaps related to moving the process along the belt?" + (_type_ process-focusable) symbol :behavior conveyor 26) + (conveyor-method-27 + "TODO - collision related, has some dead code as well (previous iteration?)" + (_type_) symbol 27) ) ) -|# -#| (deftype strip-conveyor (conveyor) () :method-count-assert 28 @@ -32724,9 +32822,7 @@ (:methods ) ) -|# -#| (deftype lgconveyor (conveyor) () :method-count-assert 28 @@ -32735,28 +32831,39 @@ (:methods ) ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; elevator ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| +;; +++elevator-flags +(defenum elevator-flags + :type uint64 + :bitfield #t + (elevator-flags-0) + (elevator-flags-1) + (elevator-flags-2) + (elevator-flags-3) + (elevator-flags-4) + (prevent-jump) + (elevator-flags-6) + (elevator-flags-7) + ) +;; ---elevator-flags + (deftype elevator-params (structure) ((xz-threshold float :offset-assert 0) (y-threshold float :offset-assert 4) (start-pos float :offset-assert 8) (move-rate float :offset-assert 12) - (flags uint64 :offset-assert 16) + (flags elevator-flags :offset-assert 16) ) :method-count-assert 9 :size-assert #x18 :flag-assert #x900000018 ) -|# -#| (deftype path-step (structure) ((next-pos float :offset-assert 0) (dist float :offset-assert 4) @@ -32765,63 +32872,99 @@ :size-assert #x8 :flag-assert #x900000008 ) -|# -#| (deftype path-step-inline-array (inline-array-class) - ((length int32 :offset-assert 4) - (allocated-length int32 :offset-assert 8) - (data UNKNOWN :dynamic :offset-assert 16) - ) + ((data path-step :dynamic :inline :offset-assert 16)) :method-count-assert 9 :size-assert #x10 :flag-assert #x900000010 ) -|# -#| +;; +++elevator:elevator-status +(defenum elevator-status + :type uint64 + :bitfield #t + (elevator-status-0) + (elevator-status-1) + (moving) + ) +;; ---elevator:elevator-status + (deftype elevator (base-plat) - ((params elevator-params :inline :offset-assert 268) - (path-seq basic :offset-assert 292) - (path-dest float :offset-assert 296) - (bottom-top UNKNOWN 2 :offset-assert 300) - (move-pos UNKNOWN 2 :offset-assert 308) - (move-dist float :offset-assert 316) - (path-pos float :offset-assert 320) - (path-eased-pos float :offset-assert 324) - (ride-timer uint64 :offset-assert 332) - (sticky-player-last-ride-time time-frame :offset-assert 340) - (elevator-status uint64 :offset-assert 348) - (on-activate basic :offset-assert 356) - (on-deactivate basic :offset-assert 360) + ((params elevator-params :inline :offset-assert 272) + (path-seq path-step-inline-array :offset-assert 296) + (path-dest float :offset-assert 300) + (bottom-top float 2 :offset-assert 304) + (move-pos float 2 :offset-assert 312) + (move-dist float :offset-assert 320) + (path-pos float :offset-assert 324) + (path-eased-pos float :offset-assert 328) + (ride-timer uint64 :offset-assert 336) + (sticky-player-last-ride-time time-frame :offset-assert 344) + (elevator-status elevator-status :offset-assert 352) + (on-activate basic :offset-assert 360) + (on-deactivate basic :offset-assert 364) ) :method-count-assert 49 :size-assert #x170 :flag-assert #x3100f00170 - ;; field on-activate uses ~A with a signed load field on-deactivate uses ~A with a signed load (:methods (dormant () _type_ :state 34) (waiting () _type_ :state 35) (running () _type_ :state 36) (arrived () _type_ :state 37) - (elevator-method-38 () none 38) - (elevator-method-39 () none 39) - (elevator-method-40 () none 40) - (elevator-method-41 () none 41) - (elevator-method-42 () none 42) - (elevator-method-43 () none 43) - (elevator-method-44 () none 44) - (elevator-method-45 () none 45) - (elevator-method-46 () none 46) - (elevator-method-47 () none 47) - (elevator-method-48 () none 48) + (elevator-method-38 (_type_) none 38) + (calc-dist-between-points! + "Calculates the distance between two points in the elevator's path. + + @param path-point-x The index of the first point in the distance calculation, and where `next-pos` and `dist` are stored in the `path-seq` array + @param path-point-y The second point in the distance calculation" + (_type_ int int) none 39) + (elevator-method-40 + "TODO - need to figure out some flags to be confident about this" + (_type_) object 40) + (init-defaults! + "Initializes default settings related to the [[elevator]]: + - `elevator-xz-threshold` + - `elevator-y-threshold` + - `elevator-start-pos` + - `elevator-move-rate` + - `elevator-flags`" + (_type_) none 41) + (clear-ambient-sound! + "Might be a virtual function, but clears the object's [[ambient-sound]]" + (_type_) none 42) + (elevator-method-43 (_type_ vector float float) symbol 43) + (elevator-method-44 (_type_) symbol 44) + (elevator-method-45 + "@returns Stub, or always returns [[#t]]" + (_type_) symbol 45) + (move-to-next-point! + "If the [[*target*]] is in a valid state and there is a point to transition to in the elevator's path + do so. + @see [[elevator::47]]" + (_type_) none 46) + (find-closest-point-in-path! + "Finds and sets the provided [[path-step]]'s `next-pos` field to the vertex index in the path which is closest to + the provided [[vector]] + + @param vec The point at which distance calculations are based off + @param! next-step If a point is found, `next-pos` will be set to the correct point + @param arg2 TODO + @param arg3 TODO + @returns [[#t]] if a point in the path was found" + (_type_ vector path-step symbol symbol) symbol 47) + (elevator-method-48 "TODO - collision related" (_type_) none 48) ) ) -|# -;; (define-extern ease-value-in-out function) -;; (define-extern elevator-event function) -;; (define-extern move-post function) +(define-extern ease-value-in-out + "TODO - the math in this function is full of duplication and isn't totally clear + but if the name is to be believed, it's to slow a values grow at the beginning and end of it's range + which is obviously useful for an elevator." + (function float float float)) +(define-extern elevator-event (function process int symbol event-message-block object :behavior elevator)) +(define-extern move-post (function none :behavior elevator)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; rigid-body ;; @@ -33063,9 +33206,8 @@ ;; simple-focus ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype simple-focus (process-focusable) - ((first-time? basic :offset-assert 200) + ((first-time? symbol :offset-assert 204) ) :method-count-assert 28 :size-assert #xd0 @@ -33074,18 +33216,19 @@ (idle () _type_ :state 27) ) ) -|# -;; (define-extern simple-focus-init-by-other function) +(define-extern simple-focus-init-by-other + "Initializes the new [[simple-focus]]. `first-time?` will be set to [[#t]]" + (function none :behavior simple-focus)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; simple-nav-sphere ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype simple-nav-sphere (process-drawable) - ((first-time? basic :offset-assert 196) - (track-joint int32 :offset-assert 200) + ((root-override collide-shape :offset 128 :score 999) + (first-time? symbol :offset-assert 200) + (track-joint int32 :offset-assert 204) ) :method-count-assert 22 :size-assert #xd0 @@ -33095,10 +33238,9 @@ (active () _type_ :state 21) ) ) -|# -;; (define-extern simple-nav-sphere-event-handler function) -;; (define-extern simple-nav-sphere-init-by-other function) +(define-extern simple-nav-sphere-event-handler (function process int symbol event-message-block none :behavior simple-nav-sphere)) +(define-extern simple-nav-sphere-init-by-other (function float vector nav-mesh int none :behavior simple-nav-sphere)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; process-taskable ;; @@ -33702,10 +33844,9 @@ ;; elec-gate ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype elec-gate-params (structure) - ((bolt-spec basic :offset-assert 0) - (ring-spec basic :offset-assert 4) + ((bolt-spec lightning-spec :offset-assert 0) + (ring-spec lightning-spec :offset-assert 4) (ring-radius-min float :offset-assert 8) (ring-radius-max float :offset-assert 12) (speed-mult float :offset-assert 16) @@ -33714,12 +33855,10 @@ :size-assert #x14 :flag-assert #x900000014 ) -|# -#| (deftype elec-gate-bolt (structure) - ((ring UNKNOWN 2 :offset-assert 0) - (bolt basic :offset-assert 8) + ((ring lightning-control 2 :offset-assert 0) ;; guess + (bolt lightning-control :offset-assert 8) (ring-radius float :offset-assert 12) (pos float :offset-assert 16) ) @@ -33727,9 +33866,7 @@ :size-assert #x14 :flag-assert #x900000014 ) -|# -#| (deftype elec-wall (structure) ((pos vector :inline :offset-assert 0) (dir vector :inline :offset-assert 16) @@ -33738,49 +33875,61 @@ :size-assert #x20 :flag-assert #x900000020 ) -|# -#| (deftype elec-gate (process-drawable) - ((params elec-gate-params :offset-assert 196) - (path-l basic :offset-assert 148) - (path-r basic :offset-assert 200) - (l-bolt UNKNOWN 5 :offset-assert 204) - (part-on basic :offset-assert 164) - (part-off basic :offset-assert 364) - (part-spawner-left basic :offset-assert 368) - (part-spawner-right basic :offset-assert 372) - (on-start basic :offset-assert 376) - (on-stop basic :offset-assert 380) - (dividing-wall elec-wall :inline :offset-assert 396) - (plane UNKNOWN 2 :offset-assert 428) - (wall-y float :offset-assert 492) - (wall-xz float :offset-assert 496) - (lightning-quality float :offset-assert 500) - (quality-enabled? basic :offset-assert 504) + ((params elec-gate-params :offset-assert 200) + (path-l path-control :offset 152) + (path-r path-control :offset-assert 204) + (l-bolt elec-gate-bolt 5 :inline :offset-assert 208) + (part-on sparticle-launch-control :offset 168) + (part-off sparticle-launch-control :offset-assert 368) + (part-spawner-left part-spawner :offset-assert 372) + (part-spawner-right part-spawner :offset-assert 376) + (on-start basic :offset-assert 380) + (on-stop basic :offset-assert 384) + (dividing-wall elec-wall :inline :offset-assert 400) + (plane elec-wall 2 :inline :offset-assert 432) + (wall-y float :offset-assert 496) + (wall-xz float :offset-assert 500) + (lightning-quality float :offset-assert 504) + (quality-enabled? symbol :offset-assert 508) ) :method-count-assert 30 :size-assert #x200 :flag-assert #x1e01800200 - ;; field on-start uses ~A with a signed load field on-stop uses ~A with a signed load (:methods (idle () _type_ :state 20) (active () _type_ :state 21) (shutdown () _type_ :state 22) - (elec-gate-method-23 () none 23) - (elec-gate-method-24 () none 24) - (elec-gate-method-25 () none 25) - (elec-gate-method-26 () none 26) - (elec-gate-method-27 () none 27) - (elec-gate-method-28 () none 28) - (elec-gate-method-29 () none 29) + (get-params + "@returns [[*default-elec-gate-params*]] by default" + (_type_) elec-gate-params 23) + (elec-gate-method-24 "virtual" (_type_) none 24) + (set-palette! + "Sets the [[elec-gate]]'s `palette-id` appropriately" + (_type_) none 25) + (set-state! + "If either [[actor-option::17]] is set on the [[elec-gate]] or the related subtask is completed + make the gate `idle`. + + Otherwise, the gate will be `active`." + (_type_) none 26) + (spawn-particles + "TODO - Calls [[sparticle-launch-control::11]] on `part-spawner-left` and `part-spawner-right` if they are defined" + (_type_ sparticle-launch-control) none 27) + (set-elec-scale-if-close! + "If [[target]]'s position is within `80` [[meters]], set the scale to the value provided + @see [[elec-gate::29]]" (_type_ float) none 28) + (set-elec-scale! + "Calls associated mood functions to set the scale with the value provided + @see mood-funcs + @see mood-funcs2" + (_type_ float) none 29) ) ) -|# -#| (deftype fort-elec-gate (elec-gate) - ((palette-id int32 :offset-assert 508) + ((palette-id int32 :offset-assert 512) ) :method-count-assert 30 :size-assert #x204 @@ -33788,57 +33937,40 @@ (:methods ) ) -|# -#| (deftype drill-elec-gate (elec-gate) - ((palette-id int32 :offset-assert 508) + ((palette-id int32 :offset-assert 512) ) :method-count-assert 30 :size-assert #x204 :flag-assert #x1e01900204 - (:methods - ) - ) -|# + (:methods)) -#| (deftype caspad-elec-gate (elec-gate) () :method-count-assert 30 :size-assert #x200 :flag-assert #x1e01800200 - (:methods - ) - ) -|# + (:methods)) -#| (deftype castle-elec-gate (elec-gate) () :method-count-assert 30 :size-assert #x200 :flag-assert #x1e01800200 - (:methods - ) - ) -|# + (:methods)) -#| (deftype palroof-elec-gate (elec-gate) - ((palette-id int32 :offset-assert 508) + ((palette-id int32 :offset-assert 512) ) :method-count-assert 30 :size-assert #x204 :flag-assert #x1e01900204 - (:methods - ) - ) -|# + (:methods)) -;; (define-extern *default-elec-gate-params* object) -;; (define-extern elec-gate-post function) -;; (define-extern *caspad-elec-gate-params* object) +(define-extern *default-elec-gate-params* elec-gate-params) +(define-extern elec-gate-post (function none :behavior elec-gate)) +(define-extern *caspad-elec-gate-params* elec-gate-params) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; cty-guard-turret-button ;; @@ -41010,9 +41142,8 @@ ;; sewer-obs2 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype sew-elevator (elevator) - ((sound-id uint32 :offset-assert 364) + ((sound-id sound-id :offset-assert 368) ) :method-count-assert 50 :size-assert #x174 @@ -41021,7 +41152,6 @@ (sew-elevator-method-49 () none 49) ) ) -|# #| (deftype sew-valve (process-drawable) diff --git a/decompiler/config/jak2/hacks.jsonc b/decompiler/config/jak2/hacks.jsonc index 63a8122cfc..2fae9b2c3c 100644 --- a/decompiler/config/jak2/hacks.jsonc +++ b/decompiler/config/jak2/hacks.jsonc @@ -298,43 +298,41 @@ "draw-drawable-tree-instance-tie": [21, 23, 31, 33], "command-get-process": [43], "unpack-comp-rle": [1, 3, 5, 6], - "(method 16 level)": [ - 0, 1, 5, 13, 14, 15 - - ], + "(method 16 level)": [0, 1, 5, 13, 14, 15], "unpack-comp-huf": [2, 4, 5, 6, 7, 8, 9], "unpack-comp-lzo": [ - 0, -1, -4, -5, -6, -7, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32, -33, -34, -35, // branch fwd 39 -39, // branch fwd no delay -43, // goto 18 -45 // goto 6 -], + 0, + 1, + 4, + 5, + 6, + 7, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, // branch fwd 39 + 39, // branch fwd no delay + 43, // goto 18 + 45 // goto 6 + ], + "(method 27 conveyor)": [5, 14, 22], "(method 44 nav-graph)": [1, 3, 6, 13, 17] }, diff --git a/decompiler/config/jak2/inputs.jsonc b/decompiler/config/jak2/inputs.jsonc index ed9cbe3f07..7bb4c35e26 100644 --- a/decompiler/config/jak2/inputs.jsonc +++ b/decompiler/config/jak2/inputs.jsonc @@ -97,7 +97,7 @@ // "DGO/TITLE.DGO", // "DGO/FORDUMPD.DGO", // "DGO/D3A.DGO", - // "DGO/DRILLMTN.DGO", + "DGO/DRILLMTN.DGO", // "DGO/PAC.DGO", // "DGO/LTENTOB.DGO", // "DGO/LRACEBF.DGO", diff --git a/decompiler/config/jak2/label_types.jsonc b/decompiler/config/jak2/label_types.jsonc index 677bad06f4..d9bad29b80 100644 --- a/decompiler/config/jak2/label_types.jsonc +++ b/decompiler/config/jak2/label_types.jsonc @@ -210,7 +210,6 @@ ], "task-control": [["L518", "attack-info"]], "tfrag-methods": [["L119", "(inline-array tfrag-init-data)", 6]], - "nav-mesh": [["L347", "(inline-array vector)", 2]], "progress": [ ["L879", "uint64", true], ["L880", "uint64", true], @@ -272,5 +271,6 @@ ], "target-gun": [["L595", "uint64", true]], "tie-methods": [["L328", "(inline-array tie-init-data)", 6]], - "nav-mesh": [["L347", "(inline-array vector)", 2]] + "blocking-plane": [["L43", "vector"]], + "elec-gate": [["L141", "attack-info"]] } diff --git a/decompiler/config/jak2/stack_structures.jsonc b/decompiler/config/jak2/stack_structures.jsonc index 95148fc835..0793a7e9b9 100644 --- a/decompiler/config/jak2/stack_structures.jsonc +++ b/decompiler/config/jak2/stack_structures.jsonc @@ -909,6 +909,16 @@ [48, "vector"] ], "target-board-pre-move": [[112, "vector"]], + // stack guesser can't handle inline arrays + "(method 11 blocking-plane)": [[16, ["inline-array", "vector", 2]]], + // stack guesser can't handle inline arrays + "blocking-plane-spawn": [[16, ["inline-array", "vector", 2]]], + // stack guesser can't handle inline arrays + "(enter active elec-gate)": [[176, ["inline-array", "vector", 2]]], + "(method 46 elevator)": [ + // bad stack guess (method type was a path-step) + [16, "path-step"] + ], "(method 10 nav-node)": [[16, "vector"]], "(method 9 nav-graph)": [[16, "matrix"]], "(method 10 xz-height-map)": [[16, "matrix"]], diff --git a/decompiler/config/jak2/type_casts.jsonc b/decompiler/config/jak2/type_casts.jsonc index 0a7f9cc741..89de75f00d 100644 --- a/decompiler/config/jak2/type_casts.jsonc +++ b/decompiler/config/jak2/type_casts.jsonc @@ -2761,24 +2761,92 @@ [[29, 45], "v1", "(pointer float)"] ], - "unpack-comp-rle": [ - [[10, 26], "a0", "(pointer int8)"] - ], + "unpack-comp-rle": [[[10, 26], "a0", "(pointer int8)"]], "(method 16 level)": [ [222, "v1", "(pointer uint128)"], [223, "a1", "(pointer uint128)"], [225, "a0", "(pointer uint128)"], - [[71,168], "s1", "(pointer int8)"], + [[71, 168], "s1", "(pointer int8)"], [72, "v1", "(pointer int8)"], - [[74,169], "s0", "(pointer int8)"], + [[74, 169], "s0", "(pointer int8)"], [[170, 193], "s1", "(pointer uint8)"], [[171, 193], "s2", "(pointer uint8)"], [227, "v1", "(pointer uint8)"] ], - "unpack-comp-huf": [ - [[21,23], "t3", "(pointer uint16)"] + "unpack-comp-huf": [[[21, 23], "t3", "(pointer uint16)"]], + "(method 10 elec-gate)": [[13, "t9", "(function process-drawable none)"]], + "(method 11 elec-gate)": [ + [180, "a0", "vector"], + [193, "a0", "vector"] ], + "(event idle simple-focus)": [[6, "v1", "vector"]], + "(trans active simple-nav-sphere)": [[10, "v1", "process-drawable"]], + "simple-nav-sphere-event-handler": [[21, "v1", "float"]], + "sampler-start": [ + [1, "v1", "timer-bank"], + [3, "v1", "timer-bank"], + [6, "a0", "timer-bank"], + [24, "a0", "timer-bank"] + ], + "(top-level-login sampler)": [[14, "v1", "timer-bank"]], + "sampler-stop": [[1, "v1", "timer-bank"]], + "(event up-idle basebutton)": [[[3, 38], "v1", "attack-info"]], + "(method 33 basebutton)": [[35, "v1", "art-joint-anim"]], + "(event idle drop-plat)": [ + [19, "s5", "process-focusable"], + [53, "gp", "process-focusable"] + ], + "(event idle bouncer)": [[[120, 127], "v1", "attack-info"]], + "(method 7 conveyor)": [ + [12, "t9", "(function process-drawable int process-drawable)"] + ], + "(method 27 conveyor)": [ + [23, "a0", "connection"], + [24, "a0", "collide-shape"], + [71, "a0", "connection"], + [72, "a0", "collide-shape"], + [143, "s4", "process-focusable"] + ], + "(method 21 conveyor)": [ + [104, "v1", "vector"], + [102, "v1", "vector"], + [106, "a0", "vector"], + [112, "v1", "vector"], + [118, "v1", "vector"] + ], + "(code idle lgconveyor)": [[10, "v1", "art-joint-anim"]], + "(post idle lgconveyor)": [[4, "t9", "(function none)"]], + "(method 7 elevator)": [[14, "t9", "(function base-plat int base-plat)"]], + "elevator-event": [ + [23, "v1", "focus"], + [88, "gp", "float"], + [132, "gp", "float"] + ], + "(method 46 elevator)": [[11, "f0", "float"]], + "(method 11 elevator)": [[156, "f0", "float"]], + "(enter idle elec-gate)": [ + [[33, 53], "a1", "lightning-mode"], + [[10, 30], "a1", "lightning-mode"], + [[56, 76], "a1", "lightning-mode"] + ], + "(enter active elec-gate)": [ + [[29, 49], "a1", "lightning-mode"], + [[75, 95], "a1", "lightning-mode"], + [[52, 72], "a1", "lightning-mode"] + ], + "(trans active elec-gate)": [ + [[284, 304], "a0", "lightning-mode"], + [[257, 416], "s4", "lightning-mode"] + ], + "(trans shutdown elec-gate)": [ + [[36, 56], "a0", "lightning-mode"], + [[82, 102], "a0", "lightning-mode"], + [[59, 79], "a0", "lightning-mode"] + ], + "(method 11 basebutton)": [["_stack_", 16, "res-tag"]], + "(method 24 conveyor)": [["_stack_", 16, "res-tag"]], + "(method 25 conveyor)": [[11, "v0", "actor-option"]], "(method 24 scene-player)": [[38, "gp", "scene"]], "process-drawable-draw-subtitles": [[26, "v0", "(pointer vector)"]], "(post play-anim scene-player)": [ diff --git a/decompiler/config/jak2/var_names.jsonc b/decompiler/config/jak2/var_names.jsonc index 3a81d37957..fe316a701a 100644 --- a/decompiler/config/jak2/var_names.jsonc +++ b/decompiler/config/jak2/var_names.jsonc @@ -1541,29 +1541,384 @@ "(method 16 level)": { "args": ["obj", "vis-info", "unused", "in-bsp-vis-string"], "vars": { - "a0-1":"cam-leaf-idx", - "v1-1":"curr-vis-string-offset", - "s3-0":"desired-vis-string-offset", - "s3-1":"vis-buf", - "s2-0":"lower-flag-bits", - "s1-0":"spad-start", - "s0-0":"spad-end", - "s4-1":"list-len", - "v1-30":"qwc", - "v1-33":"comp-mode", - "v1-35":"qwc2", - "sv-16":"extra-vis-length", - "sv-32":"extra-vis-dest", - "v1-45":"extra-vis-in", - "a0-25":"extra-vis-idx", - "a1-9":"vis-byte", - "s2-1":"vis-ptr", - "s1-1":"all-vis-ptr", - "v1-51":"vis-error", - "v1-55":"unpacked-vis-ptr", - "a0-42":"final-vis-ptr", - "a1-22":"all-vis", - "a2-11":"vis-qwc" + "a0-1": "cam-leaf-idx", + "v1-1": "curr-vis-string-offset", + "s3-0": "desired-vis-string-offset", + "s3-1": "vis-buf", + "s2-0": "lower-flag-bits", + "s1-0": "spad-start", + "s0-0": "spad-end", + "s4-1": "list-len", + "v1-30": "qwc", + "v1-33": "comp-mode", + "v1-35": "qwc2", + "sv-16": "extra-vis-length", + "sv-32": "extra-vis-dest", + "v1-45": "extra-vis-in", + "a0-25": "extra-vis-idx", + "a1-9": "vis-byte", + "s2-1": "vis-ptr", + "s1-1": "all-vis-ptr", + "v1-51": "vis-error", + "v1-55": "unpacked-vis-ptr", + "a0-42": "final-vis-ptr", + "a1-22": "all-vis", + "a2-11": "vis-qwc" + } + }, + "elec-gate-post": { + "vars": { + "s5-0": "bolt-idx", + "sv-96": "curr-bolt", + "gp-0": "num-points", + "sv-112": "curr-point" + } + }, + "(enter idle elec-gate)": { + "vars": { + "v1-0": "bolt-idx", + "a0-3": "bolt", + "a0-6": "first-ring", + "a0-9": "second-ring", + "a1-1": "mode", + "a1-2": "mode", + "a1-3": "mode", + "a2-2": "mode-diff?", + "a2-12": "mode-diff?", + "a2-22": "mode-diff?" + } + }, + "(enter active elec-gate)": { + "vars": { + "v1-7": "bolt-idx", + "a0-5": "curr-bolt", + "a1-3": "mode", + "a2-3": "mode-diff?", + "a0-8": "first-ring", + "a1-4": "mode", + "a0-11": "second-ring", + "a1-5": "mode", + "a2-23": "mode-diff?", + "a2-13": "mode-diff?", + "v1-10": "vec-idx", + "gp-0": "vec-pair" + } + }, + "(trans active elec-gate)": { + "vars": { + "s5-0": "proc-focus", + "gp-0": "target", + "gp-1": "focus-trans", + "a1-4": "evt", + "v1-20": "attack", + "a0-8": "game-info", + "a2-2": "attack-id", + "s5-2": "bolt-idx" + } + }, + "(trans shutdown elec-gate)": { + "vars": { + "s5-0": "bolt-idx", + "gp-0": "go-idle?", + "s4-0": "left-bolt-0", + "v1-9": "left-bolt-1", + "a0-1": "mode", + "a1-2": "mode-diff?", + "v1-12": "left-bolt-first-ring", + "v1-15": "left-bolt-second-ring", + "a0-2": "mode", + "a0-3": "mode", + "a1-12": "mode-diff?", + "a1-22": "mode-diff?" + } + }, + "(method 27 elec-gate)": { + "args": ["obj", "sparticle-lc"] + }, + "(method 7 elec-gate)": { + "vars": { + "v1-0": "bolt-idx", + "a2-2": "left-bolt" + }, + "args": ["obj", "new-addr"] + }, + "(method 11 elec-gate)": { + "vars": { + "s4-0": "bolt-idx", + "s5-1": "params", + "s3-0": "left-bolt" + } + }, + "(method 29 fort-elec-gate)": { + "args": ["obj", "scale"] + }, + "(event idle blocking-plane)": { + "vars": { + "v1-0": "evt-type", + "v1-3": "prim", + "gp-0": "proc-child-ptr-0", + "s5-0": "proc-child-0", + "gp-1": "proc-child-ptr-1", + "s5-1": "proc-child-1" + } + }, + "(method 21 blocking-plane)": { + "args": ["obj", "vec-pair", "height"] + }, + "blocking-plane-init-by-other": { + "args": ["vec-pair", "height"] + }, + "blocking-plane-destroy": { + "vars": { + "gp-0": "child-proc-ptr", + "s5-0": "child-proc" + } + }, + "simple-focus-init-by-other": { + "vars": { + "gp-0": "root" + } + }, + "simple-nav-sphere-event-handler": { + "args": ["proc", "arg1", "event-type", "event"], + "vars": { + "f0-0": "radius", + "a0-7": "collide-shape" + } + }, + "plat-trans": { + "vars": { + "gp-0": "trans" + } + }, + "plat-event": { + "args": ["proc", "arg1", "event-type", "event"], + "vars": { + "v1-0": "evt-type" + } + }, + "eco-door-event-handler": { + "args": ["proc", "arg1", "event-type", "event"], + "vars": { + "v1-0": "evt-type" + } + }, + "(code door-opening eco-door)": { + "vars": { + "v1-14": "prim" + } + }, + "(code door-open eco-door)": { + "vars": { + "v1-3": "prim", + "f30-0": "dist-from-target", + "f28-0": "dist-from-camera" + } + }, + "(code door-closing eco-door)": { + "vars": { + "gp-0": "params" + } + }, + "(method 25 eco-door)": { + "vars": { + "s5-0": "collision-shape", + "v1-2": "collision-mesh", + "v1-5": "prim" + } + }, + "(method 11 eco-door)": { + "vars": { + "f0-0": "door-scale", + "v1-8": "state-actor" + } + }, + "(method 37 basebutton)": { + "args": ["obj", "vec", "quat"] + }, + "(event up-idle basebutton)": { + "vars": { + "v1-1": "attack" + } + }, + "(event going-down basebutton)": { + "vars": { + "v1-0": "evt-type" + } + }, + "(code going-down basebutton)": { + "vars": { + "gp-0": "activation-script" + } + }, + "(event down-idle basebutton)": { + "vars": { + "v1-0": "evt-type" + } + }, + "(method 38 basebutton)": { + "args": ["obj", "pressed?"] + }, + "(method 33 basebutton)": { + "vars": { + "s5-1": "channel-0", + "s5-2": "channel-1" + } + }, + "(method 34 basebutton)": { + "vars": { + "s5-0": "collision-shape", + "s4-0": "collision-mesh", + "v1-12": "prim" + } + }, + "basebutton-init-by-other": { + "args": [ + "process-actor", + "vec", + "quat", + "notify-actor", + "pressed?", + "timeout" + ] + }, + "(method 36 basebutton)": { + "args": ["obj", "event-type"], + "vars": { + "a1-1": "event", + "a1-2": "event", + "s4-0": "actor-group-idx", + "s3-0": "actor-group", + "s2-0": "actor-idx", + "v1-10": "actor", + "t9-1": "func", + "t9-0": "func", + "v1-2": "actor" + } + }, + "(method 31 plat)": { + "vars": { + "s5-0": "collision-shape", + "s4-0": "collision-mesh", + "v1-11": "prim" + } + }, + "(method 11 plat)": { + "vars": { + "a1-4": "params" + }, + "args": ["obj", "entity"] + }, + "(event idle drop-plat)": { + "vars": { + "a0-5": "proc-focus", + "s5-0": "proc-temp", + "a0-13": "proc-focus" + } + }, + "(event idle bouncer)": { + "vars": { + "v1-0": "evt-type" + } + }, + "(method 24 bouncer)": { + "vars": { + "s5-0": "collision-shape", + "v1-2": "collision-mesh", + "v1-5": "prim" + } + }, + "(method 7 conveyor)": { + "args": ["obj", "new-addr"] + }, + "(method 24 conveyor)": { + "vars": { + "v1-4": "scale-factor", + "a0-1": "entity", + "sv-16": "tag" + } + }, + "(method 25 conveyor)": { + "vars": { + "v0-1": "sound", + "v1-1": "actor-options" + } + }, + "(method 26 conveyor)": { + "vars": { + "s4-0": "vec", + "a1-2": "sections", + "a2-0": "section-count", + "a0-3": "section-idx", + "v1-8": "section", + "a1-3": "vec-temp" + }, + "args": ["obj", "proc-focus"] + }, + "(method 48 elevator)": { + "vars": { + "gp-0": "target", + "v1-6": "collide-query" + } + }, + "(method 41 elevator)": { + "vars": { + "a0-1": "entity", + "a0-2": "entity", + "a0-3": "entity", + "a0-4": "entity", + "a0-5": "entity" + } + }, + "ease-value-in-out": { + "args": ["value", "step-amount"], + "vars": { + "f0-0": "step" + } + }, + "elevator-event": { + "args": ["proc", "arg1", "event-type", "event"], + "vars": { + "v1-0": "evt-type", + "v1-8": "proc-focus", + "v1-20": "next-state-0", + "v1-48": "next-state-1" + } + }, + "(method 47 elevator)": { + "vars": { + "s0-0": "path-vertex-idx", + "sv-32": "path-point", + "s1-0": "elev-params", + "f28-0": "smallest-dist", + "f30-0": "point-idx-tracker", + "f0-12": "dist" + } + }, + "(method 44 elevator)": { + "vars": { + "s5-0": "target-temp", + "a0-2": "target" + } + }, + "(method 46 elevator)": { + "vars": { + "sv-16": "zero", + "a0-1": "target" + } + }, + "(method 11 elevator)": { + "args": ["obj", "entity"], + "vars": { + "s5-1": "num-path-points", + "s3-1": "path-point-idx" + } + }, + "(method 39 elevator)": { + "args": ["obj", "path-point-x", "path-point-y"], + "vars": { + "s3-0": "point-x", + "a1-3": "point-y" } }, "(method 16 drawable-region-prim)": { diff --git a/goal_src/jak2/engine/collide/collide-shape-h.gc b/goal_src/jak2/engine/collide/collide-shape-h.gc index 035f0808a3..c2b93b4b9f 100644 --- a/goal_src/jak2/engine/collide/collide-shape-h.gc +++ b/goal_src/jak2/engine/collide/collide-shape-h.gc @@ -276,7 +276,6 @@ ) -;; WARN: Return type mismatch int vs none. (defmethod prepare collide-rider-pool ((obj collide-rider-pool)) "Gets this pool ready to be used to allow allocations. This should be called once at the start of every frame." (set! (-> obj alloc-count) 0) @@ -446,7 +445,7 @@ (penetrate-using penetrate :offset-assert 168) (penetrated-by penetrate :offset-assert 176) (backup-collide-as collide-spec :offset-assert 184) - (backup-collde-with collide-spec :offset-assert 188) + (backup-collide-with collide-spec :offset-assert 188) (event-priority uint8 :offset-assert 192) (rider-max-momentum float :offset-assert 196) ) @@ -455,7 +454,7 @@ :flag-assert #x37000000c8 (:methods (new (symbol type process-drawable collide-list-enum) _type_ 0) - (collide-shape-method-28 () none 28) + (move-by-vector! (_type_ vector) none 28) (collide-shape-method-29 (_type_ vector) none 29) (collide-shape-method-30 () none 30) (collide-shape-method-31 () none 31) @@ -674,9 +673,3 @@ ) (define-perm *collide-rider-pool* collide-rider-pool (new 'global 'collide-rider-pool)) - -0 - - - - diff --git a/goal_src/jak2/engine/collide/collide-touch-h.gc b/goal_src/jak2/engine/collide/collide-touch-h.gc index 984348f980..5f3468bfff 100644 --- a/goal_src/jak2/engine/collide/collide-touch-h.gc +++ b/goal_src/jak2/engine/collide/collide-touch-h.gc @@ -17,6 +17,7 @@ :flag-assert #x900000068 ) + (deftype touching-prims-entry (structure) ((next touching-prims-entry :offset-assert 0) (prev touching-prims-entry :offset-assert 4) @@ -35,6 +36,7 @@ ) ) + (deftype touching-prims-entry-pool (structure) ((head touching-prims-entry :offset-assert 0) (nodes touching-prims-entry 64 :inline :offset-assert 16) @@ -51,6 +53,7 @@ ) ) + (defmethod init-list! touching-prims-entry-pool ((obj touching-prims-entry-pool)) (let ((v1-0 (the-as touching-prims-entry #f))) (let ((a1-0 (the-as touching-prims-entry (-> obj nodes)))) @@ -71,6 +74,7 @@ (none) ) +;; WARN: Return type mismatch structure vs touching-prims-entry-pool. (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) @@ -100,11 +104,12 @@ (get-next (_type_ touching-shapes-entry) touching-prims-entry 10) (touching-shapes-entry-method-11 () none 11) (touching-shapes-entry-method-12 (_type_ collide-shape uint) touching-prims-entry 12) - (touching-shapes-entry-method-13 () none 13) + (touching-shapes-entry-method-13 (_type_ collide-shape uint uint) basic 13) (touching-shapes-entry-method-14 () none 14) ) ) + (deftype touching-list (structure) ((num-touching-shapes int32 :offset-assert 0) (resolve-u int8 :offset-assert 4) @@ -123,6 +128,8 @@ ) ) + +;; WARN: Return type mismatch structure vs touching-list. (defmethod new touching-list ((allocation symbol) (type-to-make type)) (let ((t9-0 (method-of-type structure new)) (v1-1 type-to-make) @@ -140,6 +147,7 @@ (-> obj head) ) +;; WARN: Return type mismatch collide-shape vs touching-prims-entry. (defmethod get-next touching-shapes-entry ((obj touching-shapes-entry) (arg0 touching-shapes-entry)) (the-as touching-prims-entry (-> arg0 cshape1)) ) @@ -147,10 +155,7 @@ (kmemopen global "collide-touching-lists") (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)) (kmemclose) - - - - diff --git a/goal_src/jak2/engine/common_objs/base-plat.gc b/goal_src/jak2/engine/common_objs/base-plat.gc index 3387f925ad..1f7d9dd634 100644 --- a/goal_src/jak2/engine/common_objs/base-plat.gc +++ b/goal_src/jak2/engine/common_objs/base-plat.gc @@ -5,5 +5,413 @@ ;; name in dgo: base-plat ;; dgos: GAME, COMMON +;; +++eco-door-flags +(defenum eco-door-flags + :bitfield #t + :type int32 + (ecdf00) + (ecdf01) + (auto-close) + (one-way) + ) +;; ---eco-door-flags + + ;; DECOMP BEGINS +(deftype base-plat (process-focusable) + ((root-override collide-shape-moving :offset 128) + (smush smush-control :inline :offset-assert 208) + (basetrans vector :inline :offset-assert 240) + (bounce-time time-frame :offset-assert 256) + (bouncing symbol :offset-assert 264) + (bounce-scale meters :offset-assert 268) + ) + :heap-base #x90 + :method-count-assert 34 + :size-assert #x110 + :flag-assert #x2200900110 + (:methods + (execute-effects (_type_) none 27) + (stop-bouncing! (_type_) none 28) + (start-bouncing! (_type_) none :behavior base-plat 29) + (get-art-group (_type_) art-group 30) + (base-plat-method-31 (_type_) none 31) + (base-plat-method-32 (_type_) none 32) + (base-plat-method-33 (_type_) none 33) + ) + ) + + +(defmethod base-plat-method-33 base-plat ((obj base-plat)) + 0 + (none) + ) + +(defmethod stop-bouncing! base-plat ((obj base-plat)) + "Sets `bouncing` to false and resets related settings to their defaults" + (set! (-> obj basetrans quad) (-> obj root-override trans quad)) + (set! (-> obj bouncing) #f) + (set! (-> obj bounce-scale) 819.2) + 0 + (none) + ) + +(defmethod start-bouncing! base-plat ((obj base-plat)) + "Sets `bouncing` to [[#t]] and sets up the clock to periodically bounce + and translate the platform via the `smush` + @see [[smush-control]]" + (activate! (-> obj smush) -1.0 60 150 1.0 1.0 (-> self clock)) + (set! (-> obj bounce-time) (-> self clock frame-counter)) + (set! (-> obj bouncing) #t) + (sound-play "plat-bounce" :position (-> obj root-override trans)) + (logclear! (-> obj mask) (process-mask sleep)) + (logclear! (-> obj mask) (process-mask sleep-code)) + 0 + (none) + ) + +;; WARN: Return type mismatch symbol vs none. +;; WARN: new jak 2 until loop case, check carefully +(defbehavior plat-code base-plat () + "After calling [[transform-post]] for 2 consecutive frames, put the process to sleep if it's not bouncing + otherwise, continue bouncing...forever! + @see [[transform-post]]" + (transform-post) + (suspend) + (transform-post) + (suspend) + (until #f + (when (not (-> self bouncing)) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0 + ) + (while (-> self bouncing) + (suspend) + ) + ) + #f + (none) + ) + +(defbehavior plat-trans base-plat () + "If the platform is `bouncing`, move the platform accordingly with the [[smush-control]] + - If the amplitude of the `smush` has hit `0.0` then stop bouncing + + If we aren't bouncing however, TODO - CSHAPE" + (rider-trans) + (cond + ((-> self bouncing) + (let ((trans (new 'stack-no-clear 'vector))) + (set! (-> trans quad) (-> self basetrans quad)) + (+! (-> trans y) (* (-> self bounce-scale) (update! (-> self smush)))) + (collide-shape-method-29 (-> self root-override) trans) + ) + (if (not (!= (-> self smush amp) 0.0)) + (set! (-> self bouncing) #f) + ) + ) + (else + (collide-shape-method-29 (-> self root-override) (-> self basetrans)) + ) + ) + (none) + ) + +(defbehavior plat-post base-plat () + (execute-effects self) + (rider-post) + (none) + ) + +(defmethod base-plat-method-32 base-plat ((obj base-plat)) + 0 + (none) + ) + +(defmethod execute-effects base-plat ((obj base-plat)) + "Executes various ancillary tasks with the platform, such as spawning particles or playing the associated sound" + (if (nonzero? (-> obj part)) + (sparticle-launch-control-method-11 (-> obj part) (-> obj root-override trans)) + ) + (when (nonzero? (-> obj sound)) + (set! (-> obj sound trans quad) (-> obj root-override trans quad)) + (update! (-> obj sound)) + ) + (none) + ) + +;; WARN: Return type mismatch none vs object. +(defbehavior plat-event base-plat ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + "Handles platform related events. Presently all this does is: + - if `event-type` is [['bonk]], then call [[base-plat:29]]" + (let ((evt-type event-type)) + (the-as object (if (= evt-type 'bonk) + (start-bouncing! self) + ) + ) + ) + ) + +(deftype eco-door (process-drawable) + "@unused - Likely a left-over from Jak 1" + ((root-override collide-shape :offset 128) + (speed float :offset-assert 200) + (open-distance float :offset-assert 204) + (close-distance float :offset-assert 208) + (out-dir vector :inline :offset-assert 224) + (open-sound sound-name :offset-assert 240) + (close-sound sound-name :offset-assert 256) + (state-actor entity-actor :offset-assert 272) + (flags eco-door-flags :offset-assert 276) + (locked symbol :offset-assert 280) + (auto-close symbol :offset-assert 284) + (one-way symbol :offset-assert 288) + ) + :heap-base #xb0 + :method-count-assert 27 + :size-assert #x124 + :flag-assert #x1b00b00124 + (:methods + (door-closed () _type_ :state 20) + (door-opening () _type_ :state 21) + (door-open () _type_ :state 22) + (door-closing () _type_ :state 23) + (lock-according-to-task! (_type_) none 24) + (eco-door-method-25 (_type_) none 25) + (stub (_type_) none 26) + ) + ) + + +;; WARN: Return type mismatch symbol vs object. +(defbehavior eco-door-event-handler eco-door ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + "If the `event-type` is `'trigger`, flip the `locked` flag on the door + and play the respective sound + + @unused - likely a leftover from Jak 1" + (let ((evt-type event-type)) + (the-as object (when (= evt-type 'trigger) + (set! (-> self locked) (not (-> self locked))) + (cond + ((-> self locked) + (if (and (-> self next-state) (= (-> self next-state name) 'door-closed)) + (sound-play "door-lock") + ) + ) + (else + (sound-play "door-unlock") + ) + ) + #t + ) + ) + ) + ) + +eco-door-event-handler + +(defstate door-closed (eco-door) + :virtual #t + :event eco-door-event-handler + :code (behavior () + (ja :num-func num-func-identity :frame-num 0.0) + (suspend) + (collide-shape-method-46 (-> self root-override)) + (ja-post) + (until #f + (when (and *target* (and (>= (-> self open-distance) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + (zero? (logand (focus-status teleporting) (-> *target* focus-status))) + ) + ) + (lock-according-to-task! self) + (if (and (not (-> self locked)) + (or (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status subtask-complete))) + (send-event *target* 'query 'powerup (pickup-type eco-blue)) + (and (-> self one-way) (< (vector4-dot (-> self out-dir) (target-pos 0)) -8192.0)) + ) + ) + (go-virtual door-opening) + ) + ) + (suspend) + ) + #f + (none) + ) + ) + +(defstate door-opening (eco-door) + :virtual #t + :event eco-door-event-handler + :code (behavior () + (if (and (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status subtask-complete))) + ) + (send-event *target* 'query 'powerup (pickup-type eco-blue)) + ) + (sound-play "blue-eco-on" :position (-> self root-override trans)) + ) + (sound-play-by-name (-> self open-sound) (new-sound-id) 1024 0 0 (sound-group sfx) #t) + (let ((prim (-> self root-override root-prim))) + (set! (-> prim prim-core collide-as) (collide-spec)) + (set! (-> prim prim-core collide-with) (collide-spec)) + ) + 0 + (until (ja-done? 0) + (ja :num! (seek! max (-> self speed))) + (suspend) + ) + (go-virtual door-open) + (none) + ) + :post (the-as (function none :behavior eco-door) transform-post) + ) + +(defstate door-open (eco-door) + :virtual #t + :event eco-door-event-handler + :code (behavior () + (set! (-> self state-time) (-> self clock frame-counter)) + (process-entity-status! self (entity-perm-status subtask-complete) #t) + (let ((prim (-> self root-override root-prim))) + (set! (-> prim prim-core collide-as) (collide-spec)) + (set! (-> prim prim-core collide-with) (collide-spec)) + ) + 0 + (ja :num-func num-func-identity :frame-num max) + (logior! (-> self draw status) (draw-control-status no-draw)) + (suspend) + (collide-shape-method-46 (-> self root-override)) + (ja-post) + (until #f + (let ((dist-from-target (vector4-dot (-> self out-dir) (target-pos 0))) + (dist-from-camera (vector4-dot (-> self out-dir) (camera-pos))) + ) + (when (and (-> self auto-close) + (or (not *target*) (or (< (-> self close-distance) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + (logtest? (focus-status teleporting) (-> *target* focus-status)) + ) + ) + ) + (if (and (>= (* dist-from-target dist-from-camera) 0.0) (< 16384.0 (fabs dist-from-camera))) + (go-virtual door-closing) + ) + ) + ) + (suspend) + ) + #f + (none) + ) + ) + +(defstate door-closing (eco-door) + :virtual #t + :event eco-door-event-handler + :code (behavior () + (let ((v1-1 (-> self root-override root-prim))) + (set! (-> v1-1 prim-core collide-as) (-> self root-override backup-collide-as)) + (set! (-> v1-1 prim-core collide-with) (-> self root-override backup-collide-with)) + ) + (logclear! (-> self draw status) (draw-control-status no-draw)) + (let ((params (new 'stack 'overlaps-others-params))) + (set! (-> params options) (overlaps-others-options oo0)) + (set! (-> params tlist) #f) + (while (find-overlapping-shapes (-> self root-override) params) + (suspend) + ) + ) + (sound-play-by-name (-> self close-sound) (new-sound-id) 1024 0 0 (sound-group sfx) #t) + (until (ja-done? 0) + (ja :num! (seek! 0.0 (-> self speed))) + (suspend) + ) + (if (-> self locked) + (sound-play "door-lock") + ) + (go-virtual door-closed) + (none) + ) + :post (the-as (function none :behavior eco-door) transform-post) + ) + +(defmethod lock-according-to-task! eco-door ((obj eco-door)) + "If the associated subtask is completed, lock the door if [[eco-door-flags:0]] is set + otherwise, lock it if [[eco-door-flags:0]] is set" + (when (-> obj state-actor) + (if (logtest? (-> obj state-actor extra perm status) (entity-perm-status subtask-complete)) + (set! (-> obj locked) (logtest? (-> obj flags) (eco-door-flags ecdf01))) + (set! (-> obj locked) (logtest? (-> obj flags) (eco-door-flags ecdf00))) + ) + ) + 0 + (none) + ) + +(defmethod eco-door-method-25 eco-door ((obj eco-door)) + (let ((collision-shape (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((collision-mesh (new 'process 'collide-shape-prim-mesh collision-shape (the-as uint 0) (the-as uint 0)))) + (set! (-> collision-mesh prim-core collide-as) (collide-spec obstacle)) + (set! (-> collision-mesh prim-core collide-with) (collide-spec jak player-list)) + (set! (-> collision-mesh prim-core action) (collide-action solid)) + (set! (-> collision-mesh transform-index) 0) + (set-vector! (-> collision-mesh local-sphere) 0.0 0.0 0.0 16384.0) + (set! (-> collision-shape total-prims) (the-as uint 1)) + (set! (-> collision-shape root-prim) collision-mesh) + ) + (set! (-> collision-shape nav-radius) (* 0.75 (-> collision-shape root-prim local-sphere w))) + (let ((prim (-> collision-shape root-prim))) + (set! (-> collision-shape backup-collide-as) (-> prim prim-core collide-as)) + (set! (-> collision-shape backup-collide-with) (-> prim prim-core collide-with)) + ) + (set! (-> obj root-override) collision-shape) + ) + 0 + (none) + ) + +(defmethod stub eco-door ((obj eco-door)) + "@unused - Stub with no overrides" + 0 + (none) + ) + +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! eco-door ((obj eco-door) (arg0 entity-actor)) + (eco-door-method-25 obj) + (process-drawable-from-entity! obj arg0) + (let ((door-scale (res-lump-float (-> obj entity) 'scale :default 1.0))) + (set-vector! (-> obj root-override scale) door-scale door-scale door-scale 1.0) + ) + (set! (-> obj open-distance) 32768.0) + (set! (-> obj close-distance) 49152.0) + (set! (-> obj speed) 1.0) + (set! (-> obj state-actor) #f) + (let ((state-actor (entity-actor-lookup arg0 'state-actor 0))) + (if state-actor + (set! (-> obj state-actor) state-actor) + ) + ) + (set! (-> obj locked) #f) + (set! (-> obj flags) (res-lump-value arg0 'flags eco-door-flags :time -1000000000.0)) + (lock-according-to-task! obj) + (set! (-> obj auto-close) (logtest? (-> obj flags) (eco-door-flags auto-close))) + (set! (-> obj one-way) (logtest? (-> obj flags) (eco-door-flags one-way))) + (vector-z-quaternion! (-> obj out-dir) (-> obj root-override quat)) + (set! (-> obj out-dir w) (- (vector-dot (-> obj out-dir) (-> obj root-override trans)))) + (collide-shape-method-46 (-> obj root-override)) + (stub obj) + (if (and (not (-> obj auto-close)) + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status subtask-complete)) + ) + (go (method-of-object obj door-open)) + (go (method-of-object obj door-closed)) + ) + (none) + ) diff --git a/goal_src/jak2/engine/common_objs/basebutton.gc b/goal_src/jak2/engine/common_objs/basebutton.gc index f3fea366d4..ac2d9c73ad 100644 --- a/goal_src/jak2/engine/common_objs/basebutton.gc +++ b/goal_src/jak2/engine/common_objs/basebutton.gc @@ -5,5 +5,502 @@ ;; name in dgo: basebutton ;; dgos: GAME, COMMON +;; +++button-status +(defenum button-status + :type uint16 + :bitfield #t + (pressed) + (button-status-1) + (button-status-2) + (button-status-3) + (button-status-4)) +;; ---button-status + + ;; DECOMP BEGINS +(deftype basebutton (process-focusable) + ((button-status button-status :offset-assert 204) + (notify-actor entity :offset-assert 208) + (actor-group (pointer actor-group) :offset-assert 212) + (actor-group-count int32 :offset-assert 216) + (timeout float :offset-assert 220) + (button-id int32 :offset-assert 224) + (event-going-down symbol :offset-assert 228) + (event-down symbol :offset-assert 232) + (event-going-up symbol :offset-assert 236) + (event-up symbol :offset-assert 240) + (anim-speed float :offset-assert 244) + (move-to-pos vector :inline :offset-assert 256) + (move-to-quat quaternion :inline :offset-assert 272) + ) + :heap-base #xa0 + :method-count-assert 39 + :size-assert #x120 + :flag-assert #x2700a00120 + (:methods + (down-idle () _type_ :state 27) + (going-down () _type_ :state 28) + (going-up () _type_ :state 29) + (up-idle () _type_ :state 30) + (reset! (_type_) none 31) + (idle-state-transition (_type_) object 32) + (basebutton-method-33 (_type_) none 33) + (basebutton-method-34 (_type_) none 34) + (prepare-trigger-event! (_type_) none 35) + (send-event! (_type_ symbol) none :behavior basebutton 36) + (move-to! (_type_ vector quaternion) none 37) + (press! (_type_ symbol) entity-perm-status 38) + ) + ) + + +(let ((a0-2 (new 'static 'skeleton-group + :name "skel-generic-button" + :extra #f + :info #f + :art-group-name "mtn-dice-button" + :bounds (new 'static 'vector :w 12288.0) + :version #x7 + ) + ) + ) + (set! (-> a0-2 jgeo) 0) + (set! (-> a0-2 janim) 3) + (set! (-> a0-2 mgeo 0) 1) + (set! (-> a0-2 lod-dist 0) 4095996000.0) + (add-to-loading-level a0-2) + ) + +(defmethod move-to! basebutton ((obj basebutton) (vec vector) (quat quaternion)) + (logclear! (-> obj button-status) (button-status button-status-2)) + (if vec + (set! (-> obj move-to-pos quad) (-> vec quad)) + (set! (-> obj move-to-pos quad) (-> obj root trans quad)) + ) + (if quat + (quaternion-copy! (-> obj move-to-quat) quat) + (quaternion-copy! (-> obj move-to-quat) (-> obj root quat)) + ) + 0 + (none) + ) + +(defmethod idle-state-transition basebutton ((obj basebutton)) + "If `button-status` has [[button-status:0]] set, transition to [[basebutton::27]] otherwise, [[basebutton::30]]" + (if (logtest? (-> obj button-status) (button-status pressed)) + (go (method-of-object obj down-idle)) + (go (method-of-object obj up-idle)) + ) + ) + +(defstate up-idle (basebutton) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) + (the-as object (cond + ((= v1-0 'attack) + (let ((attack (the-as attack-info (-> event param 1)))) + (case (-> attack mode) + (('flop 'spin 'punch 'eco-yellow 'eco-red 'eco-blue 'eco-dark) + (when (or (not (or (= (-> attack mode) 'spin) (= (-> attack mode) 'punch))) + (logtest? (-> self button-status) (button-status button-status-3)) + ) + (send-event! self (-> self event-going-down)) + (go-virtual going-down) + ) + ) + ) + ) + ) + ((= v1-0 'trigger) + (sound-play "silo-button") + (go-virtual going-down) + ) + ((= v1-0 'touch) + (when (logtest? (-> self button-status) (button-status button-status-4)) + (send-event! self (-> self event-going-down)) + (go-virtual going-down) + ) + ) + ((= v1-0 'move-to) + (move-to! self (the-as vector (-> event param 0)) (the-as quaternion (-> event param 1))) + ) + ) + ) + ) + ) + :enter (behavior () + (press! self #f) + (none) + ) + :trans (behavior () + (if (logtest? (-> self button-status) (button-status button-status-2)) + (rider-trans) + ) + (none) + ) + :code (the-as (function none :behavior basebutton) sleep-code) + :post (behavior () + (when (logtest? (-> self button-status) (button-status button-status-2)) + (logclear! (-> self button-status) (button-status button-status-2)) + (set! (-> self root trans quad) (-> self move-to-pos quad)) + (quaternion-copy! (-> self root quat) (-> self move-to-quat)) + (rider-post) + ) + (none) + ) + ) + +(defstate going-down (basebutton) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((evt-type event-type)) + (the-as object (cond + ((= evt-type 'untrigger) + (go-virtual going-up) + ) + ((= evt-type 'move-to) + (move-to! self (the-as vector (-> event param 0)) (the-as quaternion (-> event param 1))) + ) + ) + ) + ) + ) + :enter (behavior () + (press! self #t) + (none) + ) + :trans (the-as (function none :behavior basebutton) rider-trans) + :code (behavior () + (ja-no-eval :num! (seek! max (-> self anim-speed))) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max (-> self anim-speed))) + ) + (send-event! self (-> self event-down)) + (let ((activation-script (res-lump-struct (-> self entity) 'on-activate structure))) + (if activation-script + (eval! + (new 'stack 'script-context (the-as basic (process->ppointer self)) self (the-as vector #f)) + (the-as pair activation-script) + ) + ) + ) + (go-virtual down-idle) + (none) + ) + :post (behavior () + (when (logtest? (-> self button-status) (button-status button-status-2)) + (logclear! (-> self button-status) (button-status button-status-2)) + (set! (-> self root trans quad) (-> self move-to-pos quad)) + (quaternion-copy! (-> self root quat) (-> self move-to-quat)) + ) + (rider-post) + (none) + ) + ) + +(defstate down-idle (basebutton) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((evt-type event-type)) + (the-as object (cond + ((= evt-type 'untrigger) + (go-virtual going-up) + ) + ((= evt-type 'move-to) + (move-to! self (the-as vector (-> event param 0)) (the-as quaternion (-> event param 1))) + ) + ) + ) + ) + ) + :enter (behavior () + (press! self #t) + (set! (-> self state-time) (-> self clock frame-counter)) + (none) + ) + :trans (behavior () + (if (logtest? (-> self button-status) (button-status button-status-2)) + (rider-trans) + ) + (none) + ) + :code (behavior () + (cond + ((= (-> self timeout) 0.0) + (sleep-code) + ) + (else + (until (>= (- (-> self clock frame-counter) (-> self state-time)) (the int (* 300.0 (-> self timeout)))) + (suspend) + ) + (send-event! self (-> self event-going-up)) + (sound-play "silo-button") + (go-virtual going-up) + ) + ) + (none) + ) + :post (behavior () + (when (logtest? (-> self button-status) (button-status button-status-2)) + (logclear! (-> self button-status) (button-status button-status-2)) + (set! (-> self root trans quad) (-> self move-to-pos quad)) + (quaternion-copy! (-> self root quat) (-> self move-to-quat)) + (rider-post) + ) + (none) + ) + ) + +(defstate going-up (basebutton) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) + (the-as object (cond + ((= v1-0 'move-to) + (move-to! self (the-as vector (-> event param 0)) (the-as quaternion (-> event param 1))) + ) + ((= v1-0 'trigger) + (go-virtual going-down) + ) + ) + ) + ) + ) + :enter (behavior () + (press! self #f) + (none) + ) + :trans (the-as (function none :behavior basebutton) rider-trans) + :code (behavior () + (ja-no-eval :num! (seek! 0.0 (-> self anim-speed))) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0 (-> self anim-speed))) + ) + (send-event! self (-> self event-up)) + (go-virtual up-idle) + (none) + ) + :post (behavior () + (when (logtest? (-> self button-status) (button-status button-status-2)) + (logclear! (-> self button-status) (button-status button-status-2)) + (set! (-> self root trans quad) (-> self move-to-pos quad)) + (quaternion-copy! (-> self root quat) (-> self move-to-quat)) + ) + (rider-post) + (none) + ) + ) + +(defmethod press! basebutton ((obj basebutton) (pressed? symbol)) + (if pressed? + (logior! (-> obj button-status) (button-status pressed)) + (logclear! (-> obj button-status) (button-status pressed)) + ) + (when (not (logtest? (-> obj button-status) (button-status button-status-1))) + (if pressed? + (process-entity-status! obj (entity-perm-status subtask-complete) #t) + (process-entity-status! obj (entity-perm-status subtask-complete) #f) + ) + ) + ) + +(defmethod send-event! basebutton ((obj basebutton) (event-type symbol)) + "Prepares an [[event-message-block]] using the provided type to send an event to: + - the `notify-actor` + - every [[entity-actor]] in the `actor-group` array + @see [[entity-actor]]" + (when event-type + (let ((event (new 'stack-no-clear 'event-message-block))) + (set! (-> event from) (process->ppointer self)) + (set! (-> event num-params) 0) + (set! (-> event message) event-type) + (let ((func send-event-function) + (actor (-> obj notify-actor)) + ) + (func + (if actor + (-> actor extra process) + ) + event + ) + (dotimes (actor-group-idx (-> obj actor-group-count)) + (let ((actor-group (-> obj actor-group actor-group-idx))) + (dotimes (actor-idx (-> actor-group length)) + (set! event (new 'stack-no-clear 'event-message-block)) + (set! (-> event from) (process->ppointer self)) + (set! (-> event num-params) 0) + (set! (-> event message) event-type) + (set! func send-event-function) + (set! actor (-> actor-group data actor-idx actor)) + (func + (if actor + (-> actor extra process) + ) + event + ) + ) + ) + ) + ) + ) + ) + 0 + (none) + ) + +(defmethod reset! basebutton ((obj basebutton)) + (set! (-> obj button-status) (button-status)) + (set! (-> obj notify-actor) #f) + (set! (-> obj timeout) 0.0) + (set! (-> obj event-going-down) #f) + (set! (-> obj event-down) #f) + (set! (-> obj event-going-up) #f) + (set! (-> obj event-up) #f) + (set! (-> obj anim-speed) 1.0) + 0 + (none) + ) + +(defmethod prepare-trigger-event! basebutton ((obj basebutton)) + "Sets `event-going-down` to `'trigger`" + (set! (-> obj event-going-down) 'trigger) + 0 + (none) + ) + +(defmethod basebutton-method-33 basebutton ((obj basebutton)) + "TODO - joint stuff" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-generic-button" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (ja-channel-set! 1) + (cond + ((logtest? (-> obj button-status) (button-status pressed)) + (let ((channel-0 (-> obj skel root-channel 0))) + (joint-control-channel-group-eval! + channel-0 + (the-as art-joint-anim (-> obj draw art-group data 3)) + num-func-identity + ) + (set! (-> channel-0 frame-num) + (the float (+ (-> (the-as art-joint-anim (-> obj draw art-group data 3)) frames num-frames) -1)) + ) + ) + ) + (else + (let ((channel-1 (-> obj skel root-channel 0))) + (joint-control-channel-group-eval! + channel-1 + (the-as art-joint-anim (-> obj draw art-group data 3)) + num-func-identity + ) + (set! (-> channel-1 frame-num) 0.0) + ) + ) + ) + (set! (-> obj anim-speed) 2.0) + (transform-post) + (none) + ) + +(defmethod basebutton-method-34 basebutton ((obj basebutton)) + "TODO - collision stuff" + (let ((collision-shape (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((collision-mesh (new 'process 'collide-shape-prim-mesh collision-shape (the-as uint 0) (the-as uint 0)))) + (set! (-> collision-mesh prim-core collide-as) (collide-spec obstacle pusher)) + (set! (-> collision-mesh prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> collision-mesh prim-core action) (collide-action solid rideable)) + (set! (-> collision-mesh transform-index) 3) + (set-vector! (-> collision-mesh local-sphere) 0.0 0.0 0.0 12288.0) + (set! (-> collision-shape total-prims) (the-as uint 1)) + (set! (-> collision-shape root-prim) collision-mesh) + ) + ((method-of-object collision-shape collide-shape-method-54)) + (set! (-> collision-shape nav-radius) (* 0.75 (-> collision-shape root-prim local-sphere w))) + (let ((prim (-> collision-shape root-prim))) + (set! (-> collision-shape backup-collide-as) (-> prim prim-core collide-as)) + (set! (-> collision-shape backup-collide-with) (-> prim prim-core collide-with)) + ) + (set! (-> obj root) collision-shape) + ) + 0 + (none) + ) + +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! basebutton ((obj basebutton) (arg0 entity-actor)) + (local-vars (sv-16 res-tag)) + (reset! obj) + (set! (-> obj button-id) -1) + (let ((v1-4 (res-lump-value (-> obj entity) 'extra-id uint128 :default (the-as uint128 -1) :time -1000000000.0))) + (if (>= (the-as int v1-4) 0) + (set! (-> obj button-id) (the-as int v1-4)) + ) + ) + (basebutton-method-34 obj) + (process-drawable-from-entity! obj arg0) + (if (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status subtask-complete))) + (logior! (-> obj button-status) (button-status pressed)) + (logclear! (-> obj button-status) (button-status pressed)) + ) + (set! (-> obj notify-actor) (entity-actor-lookup arg0 'alt-actor 0)) + (set! sv-16 (new 'static 'res-tag)) + (let ((v1-15 (res-lump-data (-> obj entity) 'actor-groups pointer :tag-ptr (& sv-16)))) + (cond + ((and v1-15 (nonzero? (-> sv-16 elt-count))) + (set! (-> obj actor-group) (the-as (pointer actor-group) v1-15)) + (set! (-> obj actor-group-count) (the-as int (-> sv-16 elt-count))) + ) + (else + (set! (-> obj actor-group) (the-as (pointer actor-group) #f)) + (set! (-> obj actor-group-count) 0) + 0 + ) + ) + ) + (set! (-> obj timeout) (res-lump-float arg0 'timeout)) + (if (not (logtest? (-> obj button-status) (button-status button-status-1))) + (nav-mesh-connect-from-ent (the-as entity-nav-mesh obj)) + ) + (prepare-trigger-event! obj) + (basebutton-method-33 obj) + (idle-state-transition obj) + (none) + ) + +;; WARN: Return type mismatch object vs none. +(defbehavior basebutton-init-by-other basebutton ((process-actor entity-actor) + (vec vector) + (quat quaternion) + (notify-actor entity-actor) + (pressed? symbol) + (timeout float) + ) + (reset! self) + (logior! (-> self button-status) (button-status button-status-1)) + (set! (-> self button-id) -1) + (if pressed? + (logior! (-> self button-status) (button-status pressed)) + ) + (set! (-> self notify-actor) notify-actor) + (set! (-> self timeout) timeout) + (if process-actor + (process-entity-set! self process-actor) + ) + (set! (-> self actor-group) (the-as (pointer actor-group) #f)) + (set! (-> self actor-group-count) 0) + (basebutton-method-34 self) + (set! (-> self root trans quad) (-> vec quad)) + (quaternion-copy! (-> self root quat) quat) + (set-vector! (-> self root scale) 1.0 1.0 1.0 1.0) + (prepare-trigger-event! self) + (basebutton-method-33 self) + (idle-state-transition self) + (none) + ) diff --git a/goal_src/jak2/engine/common_objs/blocking-plane.gc b/goal_src/jak2/engine/common_objs/blocking-plane.gc index ec0670b009..bfe8c08e81 100644 --- a/goal_src/jak2/engine/common_objs/blocking-plane.gc +++ b/goal_src/jak2/engine/common_objs/blocking-plane.gc @@ -7,3 +7,237 @@ ;; DECOMP BEGINS +(deftype blocking-plane (process-drawable) + ((root-override collide-shape :offset 128) + ) + :heap-base #x50 + :method-count-assert 22 + :size-assert #xc8 + :flag-assert #x16005000c8 + (:methods + (idle () _type_ :state 20) + (init! (_type_ (inline-array vector) float) none 21) + ) + ) + + +(let ((a0-2 (new 'static 'skeleton-group + :name "skel-blocking-plane" + :extra #f + :info #f + :art-group-name "blocking-plane" + :bounds (new 'static 'vector :w 410009.6) + :texture-level #x6 + :version #x7 + ) + ) + ) + (set! (-> a0-2 jgeo) 0) + (set! (-> a0-2 janim) 2) + (set! (-> a0-2 mgeo 0) 1) + (set! (-> a0-2 lod-dist 0) 4095996000.0) + (add-to-loading-level a0-2) + ) + +(defstate idle (blocking-plane) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((evt-type event-type)) + (the-as object (cond + ((= evt-type 'on) + (cond + ((nonzero? (-> self root-override)) + (let ((prim (-> self root-override root-prim))) + (set! (-> prim prim-core collide-as) (-> self root-override backup-collide-as)) + (let ((v0-0 (the-as int (-> self root-override backup-collide-with)))) + (set! (-> prim prim-core collide-with) (the-as collide-spec v0-0)) + v0-0 + ) + ) + ) + (else + (let ((proc-child-ptr-0 (-> self child))) + (while proc-child-ptr-0 + (let ((proc-child-0 (ppointer->process proc-child-ptr-0))) + (set! proc-child-ptr-0 (-> proc-child-ptr-0 0 brother)) + (if (type? proc-child-0 blocking-plane) + (send-event proc-child-0 'on) + ) + ) + ) + ) + (the-as int #f) + ) + ) + ) + ((= evt-type 'off) + (cond + ((nonzero? (-> self root-override)) + (let ((v1-13 (-> self root-override root-prim))) + (set! (-> v1-13 prim-core collide-as) (collide-spec)) + (set! (-> v1-13 prim-core collide-with) (collide-spec)) + ) + 0 + ) + (else + (let ((proc-child-ptr-1 (-> self child))) + (while proc-child-ptr-1 + (let ((proc-child-1 (ppointer->process proc-child-ptr-1))) + (set! proc-child-ptr-1 (-> proc-child-ptr-1 0 brother)) + (if (type? proc-child-1 blocking-plane) + (send-event proc-child-1 'off) + ) + ) + ) + ) + (the-as int #f) + ) + ) + ) + ) + ) + ) + ) + :code (the-as (function none :behavior blocking-plane) sleep-code) + ) + +(defmethod init! blocking-plane ((obj blocking-plane) (vec-pair (inline-array vector)) (height float)) + "TODO - but sets up the plane given 2 vectors and a height" + (let ((s3-0 (-> vec-pair 0)) + (s4-0 (-> vec-pair 1)) + ) + 0.0 + (* 0.5 (vector-vector-distance s3-0 s4-0)) + (let ((s2-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) + (let ((v1-3 (new 'process 'collide-shape-prim-mesh s2-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> v1-3 prim-core collide-as) (collide-spec blocking-plane)) + (set! (-> v1-3 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-3 prim-core action) (collide-action solid)) + (set! (-> v1-3 transform-index) 3) + (set! (-> s2-0 total-prims) (the-as uint 1)) + (set! (-> s2-0 root-prim) v1-3) + ) + (set! (-> s2-0 nav-radius) (* 0.75 (-> s2-0 root-prim local-sphere w))) + (let ((v1-6 (-> s2-0 root-prim))) + (set! (-> s2-0 backup-collide-as) (-> v1-6 prim-core collide-as)) + (set! (-> s2-0 backup-collide-with) (-> v1-6 prim-core collide-with)) + ) + (set! (-> obj root-override) s2-0) + ) + (let ((s1-0 (new 'stack-no-clear 'matrix)) + (s2-1 (-> obj root-override)) + ) + (vector+! (-> s2-1 trans) s3-0 s4-0) + (vector-float*! (-> s2-1 trans) (-> s2-1 trans) 0.5) + (+! (-> s2-1 trans y) (* 0.5 height)) + (vector-! (the-as vector (-> s1-0 vector)) s4-0 s3-0) + (let ((f30-1 (vector-normalize-ret-len! (the-as vector (-> s1-0 vector)) 1.0))) + (set! (-> s2-1 scale x) (* 0.00024414062 f30-1)) + (set! (-> s2-1 scale y) (* 0.00024414062 height)) + (set! (-> s2-1 scale z) 0.0) + (set! (-> s1-0 vector 1 quad) (-> (new 'static 'vector :y 1.0 :w 1.0) quad)) + (vector-cross! (-> s1-0 vector 2) (the-as vector (-> s1-0 vector)) (-> s1-0 vector 1)) + (vector-normalize! (-> s1-0 vector 2) 1.0) + (matrix->quaternion (-> s2-1 quat) s1-0) + (let ((v1-20 (-> obj root-override root-prim local-sphere))) + (set! (-> v1-20 x) 0.0) + (set! (-> v1-20 y) (* 0.00024414062 (* 0.5 height))) + (set! (-> v1-20 z) 0.0) + (let ((f0-17 0.5) + (f1-7 (* f30-1 f30-1)) + (f2-2 height) + ) + (set! (-> v1-20 w) (* f0-17 (sqrtf (+ f1-7 (* f2-2 f2-2))))) + ) + ) + ) + ) + ) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-blocking-plane" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (logior! (-> obj draw status) (draw-control-status no-draw-bounds)) + (transform-post) + (none) + ) + +;; WARN: Return type mismatch object vs none. +(defbehavior blocking-plane-init-by-other blocking-plane ((vec-pair (inline-array vector)) (height float)) + "Calls [[blocking-plane::21]] with the given args" + (if (not vec-pair) + (deactivate self) + ) + (init! self vec-pair height) + (go-virtual idle) + (none) + ) + +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! blocking-plane ((obj blocking-plane) (arg0 entity-actor)) + (let ((s5-0 (new 'process 'path-control obj 'path 0.0 (the-as entity #f) #f)) + (f30-0 (res-lump-float (-> obj entity) 'height :default 122880.0)) + ) + (set! (-> obj path) s5-0) + (if (or (not s5-0) (< (-> s5-0 curve num-cverts) 2)) + (go process-drawable-art-error "bad path") + ) + (logior! (-> s5-0 flags) (path-control-flag display draw-line draw-point draw-text)) + (let ((s4-0 (+ (-> s5-0 curve num-cverts) -1)) + (s3-0 (new 'stack-no-clear 'inline-array 'vector 2)) + ) + (dotimes (v1-12 2) + (set! (-> s3-0 v1-12 quad) (the-as uint128 0)) + ) + (dotimes (s2-0 s4-0) + (get-point-in-path! s5-0 (-> s3-0 0) (the float s2-0) 'interp) + (get-point-in-path! s5-0 (-> s3-0 1) (the float (+ s2-0 1)) 'interp) + (process-spawn blocking-plane s3-0 f30-0 :to obj) + ) + ) + ) + (go (method-of-object obj idle)) + (none) + ) + +(defbehavior blocking-plane-spawn process ((arg0 curve-control) (arg1 (inline-array vector)) (arg2 float)) + (cond + ((and arg1 (or (not arg0) (logtest? (-> arg0 flags) (path-control-flag not-found)))) + (process-spawn blocking-plane arg1 arg2 :to self) + ) + (else + (let ((s4-1 (the int (get-num-segments arg0))) + (s3-0 0) + (s2-0 (new 'stack-no-clear 'inline-array 'vector 2)) + ) + (dotimes (v1-10 2) + (set! (-> s2-0 v1-10 quad) (the-as uint128 0)) + ) + (while (< s3-0 s4-1) + (get-point-in-path! arg0 (-> s2-0 0) (the float s3-0) 'interp) + (get-point-in-path! arg0 (-> s2-0 1) (the float (+ s3-0 1)) 'interp) + (process-spawn blocking-plane s2-0 arg2 :to self) + (+! s3-0 2) + ) + ) + ) + ) + 0 + (none) + ) + +(defbehavior blocking-plane-destroy blocking-plane () + (let ((child-proc-ptr (-> self child))) + (while child-proc-ptr + (let ((child-proc (ppointer->process child-proc-ptr))) + (set! child-proc-ptr (-> child-proc-ptr 0 brother)) + (if (type? child-proc blocking-plane) + (deactivate child-proc) + ) + ) + ) + ) + 0 + (none) + ) diff --git a/goal_src/jak2/engine/common_objs/conveyor.gc b/goal_src/jak2/engine/common_objs/conveyor.gc index 9391fdee39..3674ed8998 100644 --- a/goal_src/jak2/engine/common_objs/conveyor.gc +++ b/goal_src/jak2/engine/common_objs/conveyor.gc @@ -7,3 +7,492 @@ ;; DECOMP BEGINS +(deftype conveyor-section (structure) + ((start vector :inline :offset-assert 0) + (trailing plane :inline :offset-assert 16) + (pull-dir vector :inline :offset-assert 32) + (radial-dir vector :inline :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + + +(deftype conveyor-section-array (inline-array-class) + ((data conveyor-section :inline :dynamic :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + + +(set! (-> conveyor-section-array heap-base) (the-as uint 64)) + +(deftype conveyor (process-drawable) + ((speed float :offset-assert 200) + (belt-radius float :offset-assert 204) + (pull-y-threshold float :offset-assert 208) + (speed-mult-array (array float) :offset-assert 212) + (speed-mult-array-len int8 :offset-assert 216) + (sections conveyor-section-array :offset-assert 220) + (leading plane :inline :offset-assert 224) + (collide-bounds sphere :inline :offset-assert 240) + ) + :heap-base #x80 + :method-count-assert 28 + :size-assert #x100 + :flag-assert #x1c00800100 + (:methods + (idle () _type_ :state 20) + (conveyor-method-21 (_type_) float 21) + (get-art-group (_type_) art-group 22) + (reset-root! (_type_) none 23) + (init! (_type_) none 24) + (set-and-get-ambient-sound! (_type_) ambient-sound 25) + (conveyor-method-26 (_type_ process-focusable) symbol :behavior conveyor 26) + (conveyor-method-27 (_type_) symbol 27) + ) + ) + + +;; WARN: Return type mismatch process-drawable vs conveyor. +(defmethod relocate conveyor ((obj conveyor) (new-addr int)) + (&+! (-> obj sections) new-addr) + (the-as + conveyor + ((the-as (function process-drawable int process-drawable) (find-parent-method conveyor 7)) obj new-addr) + ) + ) + +;; WARN: Return type mismatch symbol vs art-group. +(defmethod get-art-group conveyor ((obj conveyor)) + "@returns The respective [[art-group]] for the [[conveyor]]" + (go process-drawable-art-error "invalid type") + (the-as art-group #f) + ) + +(defmethod reset-root! conveyor ((obj conveyor)) + "Re-initializes the `root` [[trsqv]]" + (set! (-> obj root) (new 'process 'trsqv)) + 0 + (none) + ) + +(defmethod init! conveyor ((obj conveyor)) + "Initializes defaults for things like the `speed` and `belt-radius`" + (local-vars (tag res-tag)) + (set! (-> obj speed) 24576.0) + (set! (-> obj belt-radius) 11878.4) + (set! (-> obj pull-y-threshold) 10240.0) + (set! (-> obj speed-mult-array) #f) + (set! (-> obj speed-mult-array-len) 0) + (let ((entity (-> obj entity))) + (set! tag (new 'static 'res-tag)) + (let ((scale-factor (res-lump-data entity 'scale-factor pointer :tag-ptr (& tag)))) + (when scale-factor + (set! (-> obj speed-mult-array) (the-as (array float) scale-factor)) + (set! (-> obj speed-mult-array-len) (the-as int (-> tag elt-count))) + ) + ) + ) + 0 + (none) + ) + +;; WARN: Return type mismatch object vs ambient-sound. +(defmethod set-and-get-ambient-sound! conveyor ((obj conveyor)) + "So long as [[actor-option::16]] is not set, fetch the [[ambient-sound]] for the [[conveyor]] + and return it as well. Otherwise, set it to `0`" + (let ((actor-options (res-lump-value (-> obj entity) 'options actor-option :time -1000000000.0))) + (the-as + ambient-sound + (cond + ((not (logtest? (actor-option no-amb-sound) actor-options)) + (let ((sound + (the-as object (new 'process 'ambient-sound (static-sound-spec "conveyor" :fo-max 80) (-> obj root trans))) + ) + ) + (set! (-> obj sound) (the-as ambient-sound sound)) + sound + ) + ) + (else + (set! (-> obj sound) (the-as ambient-sound 0)) + 0 + ) + ) + ) + ) + ) + +(defmethod conveyor-method-26 conveyor ((obj conveyor) (proc-focus process-focusable)) + "TODO - conveyor section related, perhaps related to moving the process along the belt?" + (let ((vec (new 'stack-no-clear 'vector))) + (set! (-> vec quad) (-> (get-trans proc-focus 0) quad)) + (set! (-> vec w) 1.0) + (when (>= (vector4-dot vec (the-as vector (-> obj leading))) 0.0) + (let* ((sections (-> obj sections)) + (section-count (-> sections length)) + ) + (dotimes (section-idx section-count) + (let ((section (-> sections data section-idx))) + (when (< (vector4-dot vec (the-as vector (-> section trailing))) 0.0) + (let ((vec-temp (new 'stack-no-clear 'vector))) + (vector-! vec-temp vec (-> section start)) + (when (>= (-> obj belt-radius) (fabs (vector-dot vec-temp (-> section radial-dir)))) + (let* ((f0-7 (vector-dot vec-temp (-> section pull-dir))) + (f1-6 (- (-> vec-temp y) (* (-> section pull-dir y) f0-7))) + ) + (when (>= (-> obj pull-y-threshold) (fabs f1-6)) + (let ((a2-8 (new 'stack-no-clear 'vector))) + (let ((f0-10 (-> obj speed))) + (if (< section-idx (-> obj speed-mult-array-len)) + (set! f0-10 + (* f0-10 (-> (the-as (pointer float) (+ (the-as uint (-> obj speed-mult-array)) (* section-idx 4))))) + ) + ) + (vector-float*! a2-8 (-> section pull-dir) (* f0-10 (-> self clock seconds-per-frame))) + ) + (send-event proc-focus 'push-trans a2-8 3000) + ) + ) + ) + ) + ) + (return #f) + ) + ) + ) + ) + #f + ) + ) + ) + +(defmethod conveyor-method-27 conveyor ((obj conveyor)) + "TODO - collision related, has some dead code as well (previous iteration?)" + (local-vars (a0-10 float) (a2-5 float) (a2-12 float)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + ) + (init-vf0-vector) + (set! *actor-list-length* 0) + (if #t + (set! *actor-list-length* (spatial-hash-method-36 *actor-hash* (-> obj collide-bounds) *actor-list* 256)) + ) + (when #t + (let ((a0-2 (-> *collide-player-list* alive-list next0))) + *collide-player-list* + (let ((v1-11 (-> a0-2 next0))) + (while (!= a0-2 (-> *collide-player-list* alive-list-end)) + (let* ((a0-3 (-> (the-as connection a0-2) param1)) + (a1-1 (-> (the-as collide-shape a0-3) root-prim)) + ) + (when (logtest? (-> a1-1 prim-core collide-as) (collide-spec jak bot enemy hit-by-others-list player-list)) + (let ((a1-2 (-> a1-1 prim-core))) + (let ((a2-4 a1-2) + (a3-1 (-> obj collide-bounds)) + ) + (.lvf vf2 (&-> a2-4 world-sphere quad)) + (.lvf vf3 (&-> a3-1 quad)) + ) + (.sub.vf vf1 vf3 vf2) + (.mul.vf vf1 vf1 vf1) + (.add.y.vf vf1 vf1 vf1 :mask #b1) + (.add.z.vf vf1 vf1 vf1 :mask #b1) + (.mov a2-5 vf1) + (let ((f0-0 a2-5) + (f1-1 (+ (-> a1-2 world-sphere w) (-> obj collide-bounds r))) + ) + (b! (>= f0-0 (* f1-1 f1-1)) cfg-8 :delay #f) + ) + ) + (when (< *actor-list-length* 256) + (set! (-> *actor-list* *actor-list-length*) (the-as collide-shape a0-3)) + (set! *actor-list-length* (+ *actor-list-length* 1)) + ) + ) + ) + (label cfg-8) + (set! a0-2 v1-11) + *collide-player-list* + (set! v1-11 (-> v1-11 next0)) + ) + ) + ) + ) + (when #f + (let ((a0-5 (-> *collide-hit-by-player-list* alive-list next0))) + *collide-hit-by-player-list* + (let ((v1-18 (-> a0-5 next0))) + (while (!= a0-5 (-> *collide-hit-by-player-list* alive-list-end)) + (let* ((a0-6 (-> (the-as connection a0-5) param1)) + (a1-13 (-> (the-as collide-shape a0-6) root-prim)) + ) + (when (logtest? (-> a1-13 prim-core collide-as) (collide-spec jak bot enemy hit-by-others-list player-list)) + (let ((a1-14 (-> a1-13 prim-core))) + (let ((a2-11 a1-14) + (a3-2 (-> obj collide-bounds)) + ) + (.lvf vf2 (&-> a2-11 world-sphere quad)) + (.lvf vf3 (&-> a3-2 quad)) + ) + (.sub.vf vf1 vf3 vf2) + (.mul.vf vf1 vf1 vf1) + (.add.y.vf vf1 vf1 vf1 :mask #b1) + (.add.z.vf vf1 vf1 vf1 :mask #b1) + (.mov a2-12 vf1) + (let ((f0-1 a2-12) + (f1-5 (+ (-> a1-14 world-sphere w) (-> obj collide-bounds r))) + ) + (b! (>= f0-1 (* f1-5 f1-5)) cfg-17 :delay #f) + ) + ) + (when (< *actor-list-length* 256) + (set! (-> *actor-list* *actor-list-length*) (the-as collide-shape a0-6)) + (set! *actor-list-length* (+ *actor-list-length* 1)) + ) + ) + ) + (label cfg-17) + (set! a0-5 v1-18) + *collide-hit-by-player-list* + (set! v1-18 (-> v1-18 next0)) + ) + ) + ) + ) + (dotimes (s5-0 *actor-list-length*) + (let* ((v1-23 (-> *actor-list* s5-0)) + (a0-9 (-> v1-23 root-prim)) + ) + (when (logtest? (-> a0-9 prim-core collide-as) (collide-spec jak bot enemy hit-by-others-list player-list)) + (.lvf vf1 (&-> obj collide-bounds quad)) + (.lvf vf2 (&-> a0-9 prim-core world-sphere quad)) + (.sub.vf vf3 vf1 vf2) + (.add.w.vf vf4 vf1 vf2 :mask #b1000) + (.mul.vf vf3 vf3 vf3 :mask #b111) + (.mul.w.vf vf4 vf4 vf4 :mask #b1000) + (.mul.x.vf acc vf0 vf3 :mask #b1000) + (.add.mul.y.vf acc vf0 vf3 acc :mask #b1000) + (.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000) + (.sub.w.vf vf3 vf3 vf4 :mask #b1000) + (let ((f0-2 0.0)) + (.add.w.vf vf3 vf0 vf3 :mask #b1) + (.mov a0-10 vf3) + (let ((s4-0 (-> v1-23 process))) + (b! (< f0-2 a0-10) cfg-27) + (let ((a1-29 (if (type? s4-0 process-focusable) + (the-as process-focusable s4-0) + ) + ) + ) + (if a1-29 + (conveyor-method-26 obj a1-29) + ) + ) + ) + ) + (label cfg-27) + 0 + ) + ) + ) + #f + ) + ) + +(defmethod conveyor-method-21 conveyor ((obj conveyor)) + "TODO - quite dense, has to do with the conveyor sections and the path they are associated with" + (local-vars (sv-32 conveyor-section) (sv-48 conveyor-section)) + (let* ((s5-0 (-> obj path)) + (s4-0 (-> s5-0 curve num-cverts)) + (s3-0 (new 'stack-no-clear 'vector)) + ) + (let ((s2-0 (new 'process 'conveyor-section-array (+ s4-0 -1)))) + (set! (-> obj sections) s2-0) + (set! (-> obj collide-bounds quad) (the-as uint128 0)) + (get-point-in-path! s5-0 s3-0 0.0 'exact) + (vector+! (the-as vector (-> obj collide-bounds)) (the-as vector (-> obj collide-bounds)) s3-0) + (let ((s1-0 (+ s4-0 -1))) + (set! sv-32 (the-as conveyor-section #f)) + (dotimes (s0-0 s1-0) + (set! sv-48 (-> s2-0 data s0-0)) + (set! (-> sv-48 start quad) (-> s3-0 quad)) + (get-point-in-path! s5-0 s3-0 (the float (+ s0-0 1)) 'exact) + (vector+! (the-as vector (-> obj collide-bounds)) (the-as vector (-> obj collide-bounds)) s3-0) + (vector-! (-> sv-48 pull-dir) s3-0 (-> sv-48 start)) + (vector-normalize! (-> sv-48 pull-dir) 1.0) + (set! (-> sv-48 trailing quad) (-> sv-48 pull-dir quad)) + (set! (-> sv-48 trailing y) 0.0) + (vector-normalize! (-> sv-48 trailing) 1.0) + (set-vector! (-> sv-48 radial-dir) (- (-> sv-48 trailing z)) 0.0 (-> sv-48 trailing x) 1.0) + (set! (-> sv-48 trailing w) (- (vector-dot s3-0 (the-as vector (-> sv-48 trailing))))) + (when (the-as vector sv-32) + (vector+! (&+ (the-as vector sv-32) 16) (&+ (the-as vector sv-32) 16) (the-as vector (-> sv-48 trailing))) + (vector-normalize! (&+ (the-as vector sv-32) 16) 1.0) + (set! (-> sv-32 trailing w) (- (vector-dot (-> sv-48 start) (&+ (the-as vector sv-32) 16)))) + ) + (set! sv-32 sv-48) + sv-32 + ) + ) + ) + (let ((s2-1 (-> obj sections data))) + (set! (-> obj leading quad) (-> s2-1 0 pull-dir quad)) + (set! (-> obj leading y) 0.0) + (vector-normalize! (-> obj leading) 1.0) + (set! (-> obj leading w) (- (vector-dot (the-as vector (-> s2-1 0)) (the-as vector (-> obj leading))))) + ) + (let ((f0-19 (/ 1.0 (the float s4-0))) + (f30-0 0.0) + ) + (vector-float*! (the-as vector (-> obj collide-bounds)) (the-as vector (-> obj collide-bounds)) f0-19) + (dotimes (s2-2 s4-0) + (get-point-in-path! s5-0 s3-0 (the float s2-2) 'exact) + (let ((f0-22 (vector-vector-distance-squared s3-0 (-> obj collide-bounds)))) + (if (< f30-0 f0-22) + (set! f30-0 f0-22) + ) + ) + ) + (set! (-> obj collide-bounds r) (+ (sqrtf f30-0) (-> obj belt-radius))) + ) + ) + ) + +(defstate idle (conveyor) + :virtual #t + :code (the-as (function none :behavior conveyor) sleep-code) + :post (behavior () + (conveyor-method-27 self) + (if (nonzero? (-> self sound)) + (update! (-> self sound)) + ) + (none) + ) + ) + +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! conveyor ((obj conveyor) (arg0 entity-actor)) + (reset-root! obj) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj (the-as skeleton-group (get-art-group obj)) (the-as pair 0)) + (set! (-> obj path) (new 'process 'path-control obj 'path 0.0 (the-as entity #f) #f)) + (logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text)) + (if (< (-> obj path curve num-cverts) 2) + (go process-drawable-art-error "bad path") + ) + (init! obj) + (set-and-get-ambient-sound! obj) + (conveyor-method-21 obj) + (ja-post) + (go (method-of-object obj idle)) + (none) + ) + +(deftype strip-conveyor (conveyor) + () + :heap-base #x80 + :method-count-assert 28 + :size-assert #x100 + :flag-assert #x1c00800100 + ) + + +(let ((a0-19 (new 'static 'skeleton-group + :name "skel-strip-conveyor" + :extra #f + :info #f + :art-group-name "strip-conveyor" + :bounds (new 'static 'vector :w 147456.0) + :version #x7 + ) + ) + ) + (set! (-> a0-19 jgeo) 0) + (set! (-> a0-19 janim) 2) + (set! (-> a0-19 mgeo 0) 1) + (set! (-> a0-19 lod-dist 0) 4095996000.0) + (add-to-loading-level a0-19) + ) + +(defmethod get-art-group strip-conveyor ((obj strip-conveyor)) + "@returns The respective [[art-group]] for the [[conveyor]]" + (art-group-get-by-name *level* "skel-strip-conveyor" (the-as (pointer uint32) #f)) + ) + +(deftype lgconveyor (conveyor) + () + :heap-base #x80 + :method-count-assert 28 + :size-assert #x100 + :flag-assert #x1c00800100 + ) + + +(let ((a0-23 (new 'static 'skeleton-group + :name "skel-lgconveyor" + :extra #f + :info #f + :art-group-name "lgconveyor" + :bounds (new 'static 'vector :y 12288.0 :w 61440.0) + :longest-edge (meters 24.7389) + :version #x7 + :origin-joint-index 3 + ) + ) + ) + (set! (-> a0-23 jgeo) 0) + (set! (-> a0-23 janim) 3) + (set! (-> a0-23 mgeo 0) 1) + (set! (-> a0-23 lod-dist 0) 4095996000.0) + (add-to-loading-level a0-23) + ) + +(defmethod get-art-group lgconveyor ((obj lgconveyor)) + "@returns The respective [[art-group]] for the [[conveyor]]" + (art-group-get-by-name *level* "skel-lgconveyor" (the-as (pointer uint32) #f)) + ) + +;; WARN: Return type mismatch float vs none. +(defmethod init! lgconveyor ((obj lgconveyor)) + "Initializes defaults for things like the `speed` and `belt-radius`" + (set! (-> obj speed) 30720.0) + (set! (-> obj belt-radius) 11878.4) + (set! (-> obj pull-y-threshold) 10240.0) + (none) + ) + +(defstate idle (lgconveyor) + :virtual #t + :code (behavior () + (until #f + (ja-no-eval :group! (-> self draw art-group data 3) + :num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 3)) frames num-frames) -1))) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + #f + (none) + ) + :post (behavior () + (let ((t9-0 (-> (method-of-type conveyor idle) post))) + (if t9-0 + ((the-as (function none) t9-0)) + ) + ) + (ja-post) + (none) + ) + ) diff --git a/goal_src/jak2/engine/common_objs/elevator.gc b/goal_src/jak2/engine/common_objs/elevator.gc index f393096fd5..b7da9c4d47 100644 --- a/goal_src/jak2/engine/common_objs/elevator.gc +++ b/goal_src/jak2/engine/common_objs/elevator.gc @@ -5,5 +5,885 @@ ;; name in dgo: elevator ;; dgos: GAME, COMMON +;; +++elevator-flags +(defenum elevator-flags + :type uint64 + :bitfield #t + (elevator-flags-0) + (elevator-flags-1) + (elevator-flags-2) + (elevator-flags-3) + (elevator-flags-4) + (prevent-jump) + (elevator-flags-6) + (elevator-flags-7) + ) +;; ---elevator-flags + + +;; +++elevator-status +(defenum elevator-status + :type uint64 + :bitfield #t + (elevator-status-0) + (elevator-status-1) + (moving) + ) +;; ---elevator-status + + ;; DECOMP BEGINS +(deftype elevator-params (structure) + ((xz-threshold float :offset-assert 0) + (y-threshold float :offset-assert 4) + (start-pos float :offset-assert 8) + (move-rate float :offset-assert 12) + (flags elevator-flags :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) + + +(deftype path-step (structure) + ((next-pos float :offset-assert 0) + (dist float :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + + +(deftype path-step-inline-array (inline-array-class) + ((data path-step :inline :dynamic :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + + +(set! (-> path-step-inline-array heap-base) (the-as uint 16)) + +(deftype elevator (base-plat) + ((params elevator-params :inline :offset-assert 272) + (path-seq path-step-inline-array :offset-assert 296) + (path-dest float :offset-assert 300) + (bottom-top float 2 :offset-assert 304) + (move-pos float 2 :offset-assert 312) + (move-dist float :offset-assert 320) + (path-pos float :offset-assert 324) + (path-eased-pos float :offset-assert 328) + (ride-timer uint64 :offset-assert 336) + (sticky-player-last-ride-time time-frame :offset-assert 344) + (elevator-status elevator-status :offset-assert 352) + (on-activate basic :offset-assert 360) + (on-deactivate basic :offset-assert 364) + ) + :heap-base #xf0 + :method-count-assert 49 + :size-assert #x170 + :flag-assert #x3100f00170 + (:methods + (dormant () _type_ :state 34) + (waiting () _type_ :state 35) + (running () _type_ :state 36) + (arrived () _type_ :state 37) + (elevator-method-38 (_type_) none 38) + (calc-dist-between-points! (_type_ int int) none 39) + (elevator-method-40 (_type_) object 40) + (init-defaults! (_type_) none 41) + (clear-ambient-sound! (_type_) none 42) + (elevator-method-43 (_type_ vector float float) symbol 43) + (elevator-method-44 (_type_) symbol 44) + (elevator-method-45 (_type_) symbol 45) + (move-to-next-point! (_type_) none 46) + (find-closest-point-in-path! (_type_ vector path-step symbol symbol) symbol 47) + (elevator-method-48 (_type_) none 48) + ) + ) + + +(defmethod elevator-method-43 elevator ((obj elevator) (arg0 vector) (arg1 float) (arg2 float)) + #f + ) + +(defmethod elevator-method-48 elevator ((obj elevator)) + "TODO - collision related" + (let ((target *target*)) + (when target + (let ((s4-0 (-> target control unknown-sphere-array00 0)) + (s5-0 (new 'stack-no-clear 'collide-query)) + ) + (set! (-> s5-0 start-pos quad) (-> s4-0 prim-core world-sphere quad)) + (set! (-> s5-0 start-pos y) (+ 8192.0 (-> s5-0 start-pos y))) + (set! (-> s5-0 start-pos w) 1.0) + (vector-reset! (-> s5-0 move-dist)) + (set! (-> s5-0 move-dist y) -90112.0) + (let ((collide-query s5-0)) + (set! (-> collide-query radius) (-> s4-0 local-sphere w)) + (set! (-> collide-query collide-with) (collide-spec hit-by-others-list pusher)) + (set! (-> collide-query ignore-process0) target) + (set! (-> collide-query ignore-process1) #f) + (set! (-> collide-query ignore-pat) (-> target control pat-ignore-mask)) + (set! (-> collide-query action-mask) (collide-action solid)) + ) + (let ((f0-5 (fill-and-probe-using-line-sphere *collide-cache* s5-0))) + (when (< 0.0 f0-5) + (vector-float*! (-> s5-0 move-dist) (-> s5-0 move-dist) f0-5) + (vector+! (-> s5-0 move-dist) (-> s5-0 move-dist) (-> s5-0 start-pos)) + (vector-! (-> s5-0 move-dist) (-> s5-0 move-dist) (the-as vector (-> s4-0 prim-core))) + (move-by-vector! (-> target control) (-> s5-0 move-dist)) + ) + ) + ) + ) + ) + (none) + ) + +(defmethod init-defaults! elevator ((obj elevator)) + "Initializes default settings related to the [[elevator]]: + - `elevator-xz-threshold` + - `elevator-y-threshold` + - `elevator-start-pos` + - `elevator-move-rate` + - `elevator-flags`" + (let ((entity (-> obj entity))) + (set! (-> obj params xz-threshold) ((method-of-object entity get-property-value-float) + entity + 'elevator-xz-threshold + 'interp + -1000000000.0 + 81920.0 + (the-as (pointer res-tag) #f) + *res-static-buf* + ) + ) + (set! entity (-> obj entity)) + (set! (-> obj params y-threshold) ((method-of-object entity get-property-value-float) + entity + 'elevator-y-threshold + 'interp + -1000000000.0 + 20480.0 + (the-as (pointer res-tag) #f) + *res-static-buf* + ) + ) + (set! entity (-> obj entity)) + (set! (-> obj params start-pos) ((method-of-object entity get-property-value-float) + entity + 'elevator-start-pos + 'interp + -1000000000.0 + 0.0 + (the-as (pointer res-tag) #f) + *res-static-buf* + ) + ) + (set! entity (-> obj entity)) + (set! (-> obj params move-rate) ((method-of-object entity get-property-value-float) + entity + 'elevator-move-rate + 'interp + -1000000000.0 + 25600.0 + (the-as (pointer res-tag) #f) + *res-static-buf* + ) + ) + (set! entity (-> obj entity)) + (set! (-> obj params flags) (the-as elevator-flags ((method-of-object entity get-property-value) + entity + 'elevator-flags + 'interp + -1000000000.0 + (the-as uint128 1) + (the-as (pointer res-tag) #f) + *res-static-buf* + ) + ) + ) + ) + 0 + (none) + ) + +(defun ease-value-in-out ((value float) (step-amount float)) + "TODO - the math in this function is full of duplication and isn't totally clear + but if the name is to be believed, it's to slow a values grow at the beginning and end of it's range + which is obviously useful for an elevator." + (let* ((step step-amount) + (f4-0 (- 1.0 step-amount)) + (f3-0 (/ step (- 1.0 f4-0))) + (f2-1 (* step step)) + (f1-6 (+ (* 2.0 step (- f4-0 step)) f2-1)) + (f1-7 (+ (* (- 1.0 f4-0) (- 1.0 f4-0) f3-0) f1-6)) + ) + (/ (cond + ((< value step) + (* value value) + ) + ((< value f4-0) + (+ (* 2.0 step (- value step)) f2-1) + ) + (else + (let ((f0-7 (- 1.0 value))) + (- f1-7 (* f0-7 f0-7 f3-0)) + ) + ) + ) + f1-7 + ) + ) + ) + +;; WARN: Return type mismatch none vs object. +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 18] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 119] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 209] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 222] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 236] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 246] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 257] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 264] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 276] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 301] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 326] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 334] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 337] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 174] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 40] +;; WARN: disable def twice: 11. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. +(defbehavior elevator-event elevator ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((evt-type event-type)) + (the-as + object + (cond + ((= evt-type 'status?) + (and (= (the float (/ (the-as int (-> event param 0)) 8)) (-> self move-pos 0)) + (= (the float (/ (the-as int (-> event param 1)) 8)) (-> self move-pos 1)) + ) + ) + ((= evt-type 'ridden) + (let ((proc-focus (handle->process (-> (the-as focus (-> event param 0)) handle)))) + (if (= (-> proc-focus type) target) + (set! (-> self sticky-player-last-ride-time) (-> self clock frame-counter)) + ) + ) + #t + ) + ((= evt-type 'use-camera) + (if (-> event param 0) + (set-setting! 'entity-name (-> event param 0) 0 0) + (remove-setting! 'entity-name) + ) + ) + ((= evt-type 'move-to) + (when (and (-> self next-state) (let ((next-state-0 (-> self next-state name))) + (or (= next-state-0 'waiting) (= next-state-0 'arrived)) + ) + ) + (set! (-> self move-pos 0) (-> self move-pos 1)) + (cond + ((not (logtest? (-> event param 0) 7)) + (let ((gp-0 (the-as number (-> event param 0)))) + (set! (-> self move-pos 1) (if (type? (the-as uint gp-0) float) + (the-as float gp-0) + ) + ) + ) + ) + (else + (case (-> event param 0) + (('quote 'bottom) + (set! (-> self move-pos 1) (-> self bottom-top 0)) + ) + (('quote 'top) + (set! (-> self move-pos 1) (-> self bottom-top 1)) + ) + ) + ) + ) + (go-virtual running) + ) + ) + ((= evt-type 'jump-to) + (cond + ((not (logtest? (-> event param 0) 7)) + (let ((gp-1 (the-as number (-> event param 0)))) + (set! (-> self move-pos 1) (if (type? (the-as uint gp-1) float) + (the-as float gp-1) + ) + ) + ) + ) + (else + (case (-> event param 0) + (('quote 'bottom) + (set! (-> self move-pos 1) (-> self bottom-top 0)) + ) + (('quote 'top) + (set! (-> self move-pos 1) (-> self bottom-top 1)) + ) + ) + ) + ) + (set! (-> self move-pos 0) (-> self move-pos 1)) + (get-point-in-path! (-> self path) (-> self basetrans) (-> self move-pos 0) 'interp) + (go-virtual waiting) + ) + ((= evt-type 'trigger) + (when (and (-> self next-state) (let ((next-state-1 (-> self next-state name))) + (or (= next-state-1 'waiting) (= next-state-1 'arrived)) + ) + ) + (set! (-> self move-pos 0) (-> self move-pos 1)) + (cond + ((= (-> self move-pos 0) (-> self bottom-top 0)) + (set! (-> self move-pos 1) (-> self bottom-top 1)) + ) + ((= (-> self move-pos 0) (-> self bottom-top 1)) + (set! (-> self move-pos 1) (-> self bottom-top 0)) + ) + ) + (go-virtual running) + ) + ) + ((= evt-type 'query) + (case (-> event param 0) + (('waiting?) + (and (-> self next-state) (= (-> self next-state name) 'waiting)) + ) + (('arrived?) + (and (-> self next-state) (let ((v1-61 (-> self next-state name))) + (or (= v1-61 'arrived) (= v1-61 'waiting)) + ) + ) + ) + (('running?) + (and (-> self next-state) (= (-> self next-state name) 'running)) + ) + (('path-pos?) + (+ (-> self move-pos 0) (* (-> self path-pos) (- (-> self move-pos 1) (-> self move-pos 0)))) + ) + (('player-standing-on?) + (= (-> self sticky-player-last-ride-time) (-> self clock frame-counter)) + ) + (('point-inside-shaft?) + (elevator-method-43 self (the-as vector (-> event param 1)) (-> self bottom-top 1) (-> self bottom-top 0)) + ) + (('going-down?) + (< (-> (get-point-in-path! (-> self path) (new 'stack-no-clear 'vector) (-> self move-pos 1) 'interp) y) + (-> (get-point-in-path! (-> self path) (new 'stack-no-clear 'vector) (-> self move-pos 0) 'interp) y) + ) + ) + (('going-up?) + (< (-> (get-point-in-path! (-> self path) (new 'stack-no-clear 'vector) (-> self move-pos 0) 'interp) y) + (-> (get-point-in-path! (-> self path) (new 'stack-no-clear 'vector) (-> self move-pos 1) 'interp) y) + ) + ) + ) + ) + ((= evt-type 'go-dormant) + (go-virtual dormant) + ) + (else + (plat-event proc arg1 event-type event) + ) + ) + ) + ) + ) + +(defmethod find-closest-point-in-path! elevator ((obj elevator) (arg0 vector) (arg1 path-step) (arg2 symbol) (arg3 symbol)) + "Finds and sets the provided [[path-step]]'s `next-pos` field to the vertex index in the path which is closest to + the provided [[vector]] + + @param vec The point at which distance calculations are based off + @param! next-step If a point is found, `next-pos` will be set to the correct point + @param arg2 TODO + @param arg3 TODO + @returns [[#t]] if a point in the path was found" + (local-vars (path-point vector)) + (let ((elev-params (-> obj params)) + (smallest-dist 0.0) + (point-idx-tracker -1.0) + ) + (dotimes (path-vertex-idx (-> obj path curve num-cverts)) + (set! path-point + (get-point-in-path! (-> obj path) (new 'stack-no-clear 'vector) (the float path-vertex-idx) 'interp) + ) + (when (and (or (not arg2) (< (vector-vector-xz-distance path-point arg0) (-> elev-params xz-threshold))) + (or (not arg3) + (< (fabs (- (-> path-point y) (-> arg0 y))) (-> elev-params y-threshold)) + (and (= path-vertex-idx (the int (-> obj bottom-top 0))) (< (-> arg0 y) (-> path-point y))) + (and (= path-vertex-idx (the int (-> obj bottom-top 1))) (< (-> path-point y) (-> arg0 y))) + ) + ) + (let* ((t9-2 vector-vector-distance) + (a1-3 arg0) + (dist (t9-2 path-point a1-3)) + ) + (when (or (= point-idx-tracker -1.0) (< dist smallest-dist)) + (set! smallest-dist dist) + (set! point-idx-tracker (the float path-vertex-idx)) + ) + ) + ) + ) + (when (!= point-idx-tracker -1.0) + (set! (-> arg1 next-pos) point-idx-tracker) + #t + ) + ) + ) + +;; WARN: Return type mismatch object vs symbol. +(defmethod elevator-method-44 elevator ((obj elevator)) + (let* ((target-temp *target*) + (target (if (type? target-temp process-focusable) + target-temp + ) + ) + ) + (the-as + symbol + (and target (elevator-method-43 obj (get-trans target 0) (-> obj move-pos 0) (-> obj move-pos 1))) + ) + ) + ) + +(defmethod elevator-method-45 elevator ((obj elevator)) + "@returns Stub, or always returns [[#t]]" + #t + ) + +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +(defmethod move-to-next-point! elevator ((obj elevator)) + "If the [[*target*]] is in a valid state and there is a point to transition to in the elevator's path + do so. + @see [[elevator::47]]" + (local-vars (zero float)) + (let ((target *target*)) + (when (and target + (zero? (logand (focus-status dead inactive in-air grabbed edge-grab pole pilot-riding pilot teleporting) + (-> target focus-status) + ) + ) + ) + (set! zero (the-as float 0.0)) + (when (and (find-closest-point-in-path! obj (get-trans target 0) (new 'stack-no-clear 'path-step) #t #t) + (!= (-> obj move-pos 1) zero) + ) + (set! (-> obj move-pos 0) (-> obj move-pos 1)) + (set! (-> obj move-pos 1) zero) + (logior! (-> obj elevator-status) (elevator-status moving)) + (go (method-of-object obj running)) + ) + ) + ) + 0 + (none) + ) + +(defbehavior move-post elevator () + (when (nonzero? (-> self sound)) + (let ((f0-3 (sqrtf (sin-rad (* 3.1415925 (-> self path-pos)))))) + (update-vol! (-> self sound) f0-3) + ) + (update-trans! (-> self sound) (-> self root-override trans)) + (update! (-> self sound)) + ) + (plat-post) + (none) + ) + +(defstate dormant (elevator) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('trigger) + (go-virtual waiting) + ) + (('bonk) + #f + ) + (else + (plat-event proc arg1 event-type event) + ) + ) + ) + :trans (the-as (function none :behavior elevator) plat-trans) + :code (the-as (function none :behavior elevator) sleep-code) + :post (the-as (function none :behavior elevator) plat-post) + ) + +(defstate waiting (elevator) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('ridden) + (if (elevator-method-45 self) + (logior! (-> self elevator-status) (elevator-status elevator-status-0)) + ) + (elevator-event proc arg1 event-type event) + ) + (else + (elevator-event proc arg1 event-type event) + ) + ) + ) + :enter (behavior () + (set! (-> self ride-timer) (the-as uint (-> self clock frame-counter))) + (logclear! (-> self elevator-status) (elevator-status elevator-status-0 moving)) + (logior! (-> self mask) (process-mask actor-pause)) + (if (nonzero? (-> self sound)) + (update-vol! (-> self sound) 0.0) + ) + (none) + ) + :trans (behavior () + (plat-trans) + (when (not (logtest? (-> self elevator-status) (elevator-status elevator-status-0))) + (set! (-> self ride-timer) (the-as uint (-> self clock frame-counter))) + (-> self params) + (if (and (logtest? (-> self params flags) (elevator-flags elevator-flags-0)) + (zero? (logand (-> self params flags) (elevator-flags elevator-flags-3))) + ) + (move-to-next-point! self) + ) + ) + (when (and (not (logtest? (-> self params flags) (elevator-flags elevator-flags-3))) + (>= (- (-> self clock frame-counter) (the-as int (-> self ride-timer))) (seconds 1)) + ) + (set! (-> self move-pos 0) (-> self move-pos 1)) + (set! (-> self move-pos 1) (-> self path-seq data (the int (-> self move-pos 1)) next-pos)) + (go-virtual running) + ) + (none) + ) + :code (the-as (function none :behavior elevator) sleep-code) + :post (behavior () + (logclear! (-> self elevator-status) (elevator-status elevator-status-0)) + (debug-draw (-> self path)) + (plat-post) + (none) + ) + ) + +(defstate running (elevator) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('running?) + #t + ) + (('player-ridden?) + (logtest? (-> self elevator-status) (elevator-status elevator-status-0)) + ) + (else + (elevator-event proc arg1 event-type event) + ) + ) + ) + :enter (behavior () + (if (not (logtest? (-> self params flags) (elevator-flags elevator-flags-7))) + (process-entity-status! self (entity-perm-status no-kill) #t) + ) + (logclear! (-> self elevator-status) (elevator-status elevator-status-1)) + (when (logtest? (-> self params flags) (elevator-flags elevator-flags-2)) + (logclear! (-> self params flags) (elevator-flags elevator-flags-2)) + (logior! (-> self params flags) (elevator-flags elevator-flags-0)) + ) + (set! (-> self move-dist) 0.0) + (let ((v1-13 (the int (-> self move-pos 0))) + (a0-3 (the int (-> self move-pos 1))) + (a1-1 0) + ) + (while (let ((a2-3 (abs (- a0-3 v1-13)))) + (< a1-1 a2-3) + ) + (+! (-> self move-dist) (-> self path-seq data (+ (min v1-13 a0-3) a1-1) dist)) + (+! a1-1 1) + ) + ) + (logclear! (-> self mask) (process-mask actor-pause)) + (set-setting! 'board #f 0 0) + (let ((gp-0 (-> self on-activate))) + (if gp-0 + (eval! + (new + 'stack + 'script-context + (the-as basic (* (the int (-> self move-pos 0)) 8)) + self + (-> self root-override trans) + ) + (the-as pair gp-0) + ) + ) + ) + (set! (-> self path-pos) 0.0) + (if (nonzero? (-> self sound)) + (update-vol! (-> self sound) 0.0) + ) + (when (logtest? (-> self params flags) (elevator-flags prevent-jump)) + (set-setting! 'jump #f 0 0) + (apply-settings *setting-control*) + ) + (none) + ) + :exit (behavior () + (if (not (logtest? (-> self params flags) (elevator-flags elevator-flags-7))) + (process-entity-status! self (entity-perm-status no-kill) #f) + ) + (remove-setting! 'board) + (if (logtest? (-> self params flags) (elevator-flags prevent-jump)) + (remove-setting! 'jump) + ) + (none) + ) + :trans (behavior () + (if (and (not (logtest? (-> self elevator-status) (elevator-status elevator-status-1))) + (= (-> self path-pos) 1.0) + ) + (go-virtual arrived) + ) + (if (elevator-method-44 self) + (set! (-> self path-dest) 0.0) + (set! (-> self path-dest) 1.0) + ) + (if (logtest? (-> self params flags) (elevator-flags prevent-jump)) + (elevator-method-48 self) + ) + (plat-trans) + (none) + ) + :code (behavior () + (logior! (-> self elevator-status) (elevator-status elevator-status-1)) + (until #f + (suspend) + (if (= (-> self path-pos) 1.0) + (logclear! (-> self elevator-status) (elevator-status elevator-status-1)) + ) + ) + #f + (none) + ) + :post (behavior () + (when (logtest? (-> self elevator-status) (elevator-status elevator-status-1)) + (seek! + (-> self path-pos) + (-> self path-dest) + (* (/ (-> self params move-rate) (-> self move-dist)) (-> self clock seconds-per-frame)) + ) + (let* ((f30-0 (-> self move-pos 0)) + (f28-0 (-> self move-pos 1)) + (f0-9 (+ f30-0 (* (ease-value-in-out (-> self path-pos) 0.08) (- f28-0 f30-0)))) + ) + (get-point-in-path! (-> self path) (-> self basetrans) f0-9 'interp) + ) + ) + (move-post) + (none) + ) + ) + +(defstate arrived (elevator) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('ridden) + (set! (-> self ride-timer) (the-as uint (-> self clock frame-counter))) + (elevator-event proc arg1 event-type event) + ) + (else + (elevator-event proc arg1 event-type event) + ) + ) + ) + :enter (behavior () + (set! (-> self ride-timer) (the-as uint (-> self clock frame-counter))) + (if (not (-> *setting-control* user-current jump)) + (remove-setting! 'jump) + ) + (let ((gp-0 (-> self on-deactivate))) + (if gp-0 + (eval! + (new + 'stack + 'script-context + (the-as basic (* (the int (-> self move-pos 1)) 8)) + self + (-> self root-override trans) + ) + (the-as pair gp-0) + ) + ) + ) + (none) + ) + :trans (behavior () + (if (and (< (the-as int (- (-> self ride-timer) (the-as uint (-> self sticky-player-last-ride-time)))) 600) + (begin *target* *target*) + (logtest? (-> *target* focus-status) (focus-status in-air)) + ) + (set! (-> self ride-timer) (the-as uint (-> self clock frame-counter))) + ) + (when (or (logtest? (-> self elevator-status) (elevator-status moving)) + (>= (- (-> self clock frame-counter) (the-as int (-> self ride-timer))) (seconds 0.5)) + ) + (cond + ((and (logtest? (-> self params flags) (elevator-flags elevator-flags-1)) + (!= (-> self move-pos 1) (-> self params start-pos)) + ) + (set! (-> self move-pos 0) (-> self move-pos 1)) + (set! (-> self move-pos 1) (-> self params start-pos)) + (go-virtual running) + ) + (else + (go-virtual waiting) + ) + ) + ) + (plat-trans) + (none) + ) + :code (the-as (function none :behavior elevator) sleep-code) + :post (the-as (function none :behavior elevator) plat-post) + ) + +(defmethod calc-dist-between-points! elevator ((obj elevator) (path-point-x int) (path-point-y int)) + "Calculates the distance between two points in the elevator's path. + + @param path-point-x The index of the first point in the distance calculation, and where `next-pos` and `dist` are stored in the `path-seq` array + @param path-point-y The second point in the distance calculation" + (set! (-> obj path-seq data path-point-x next-pos) (the float path-point-y)) + (let ((point-x (get-point-in-path! (-> obj path) (new 'stack-no-clear 'vector) (the float path-point-x) 'interp)) + (point-y (get-point-in-path! (-> obj path) (new 'stack-no-clear 'vector) (the float path-point-y) 'interp)) + ) + (set! (-> obj path-seq data path-point-x dist) (vector-vector-distance point-x point-y)) + ) + 0 + (none) + ) + +(defmethod clear-ambient-sound! elevator ((obj elevator)) + "Might be a virtual function, but clears the object's [[ambient-sound]]" + (set! (-> obj sound) (the-as ambient-sound 0)) + 0 + (none) + ) + +(defmethod base-plat-method-33 elevator ((obj elevator)) + 0 + (none) + ) + +;; WARN: Return type mismatch base-plat vs elevator. +(defmethod relocate elevator ((obj elevator) (arg0 int)) + (if (nonzero? (-> obj path-seq)) + (&+! (-> obj path-seq) arg0) + ) + (the-as elevator ((the-as (function base-plat int base-plat) (find-parent-method elevator 7)) obj arg0)) + ) + +(defmethod elevator-method-40 elevator ((obj elevator)) + "TODO - need to figure out some flags to be confident about this" + (if (logtest? (-> obj params flags) (elevator-flags elevator-flags-6)) + (go (method-of-object obj arrived)) + (go (method-of-object obj waiting)) + ) + ) + +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! elevator ((obj elevator) (entity entity-actor)) + (local-vars (sv-32 float) (sv-36 path-control) (sv-40 target)) + (base-plat-method-31 obj) + (process-drawable-from-entity! obj entity) + (initialize-skeleton obj (the-as skeleton-group (get-art-group obj)) (the-as pair 0)) + (stop-bouncing! obj) + (set! (-> obj elevator-status) (elevator-status)) + (collide-shape-method-46 (-> obj root-override)) + (base-plat-method-32 obj) + (init-defaults! obj) + (set! (-> obj on-activate) (res-lump-struct (-> obj entity) 'on-activate basic)) + (set! (-> obj on-deactivate) (res-lump-struct (-> obj entity) 'on-deactivate basic)) + (set! (-> obj path) (new 'process 'path-control obj 'path 0.0 entity #f)) + (if (logtest? (-> obj path flags) (path-control-flag not-found)) + (go process-drawable-art-error "error in path") + ) + (logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text)) + (let ((num-path-points (-> obj path curve num-cverts)) + (s4-1 0) + (f30-0 0.0) + (f28-0 0.0) + ) + (set! (-> obj path-seq) (new 'process 'path-step-inline-array num-path-points)) + (dotimes (path-point-idx num-path-points) + (calc-dist-between-points! obj path-point-idx (mod (+ path-point-idx 1) num-path-points)) + (let ((v1-31 (get-point-in-path! (-> obj path) (new 'stack-no-clear 'vector) (the float path-point-idx) 'interp))) + (when (or (not (logtest? s4-1 1)) (< (-> v1-31 y) f28-0)) + (set! (-> obj bottom-top 0) (the float path-point-idx)) + (set! f28-0 (-> v1-31 y)) + (set! s4-1 (logior s4-1 1)) + ) + (when (or (not (logtest? s4-1 2)) (< f30-0 (-> v1-31 y))) + (set! (-> obj bottom-top 1) (the float path-point-idx)) + (set! f30-0 (-> v1-31 y)) + (set! s4-1 (logior s4-1 2)) + ) + ) + ) + ) + (set! sv-32 (the-as float 0.0)) + (set! sv-36 (-> obj path)) + (let ((s5-2 *target*)) + (set! sv-40 (if (type? s5-2 process-focusable) + s5-2 + ) + ) + ) + (if (not (and sv-40 + (logtest? (-> obj params flags) (elevator-flags elevator-flags-4)) + (find-closest-point-in-path! obj (get-trans sv-40 0) (the-as path-step (& sv-32)) #f #t) + ) + ) + (set! sv-32 (-> obj params start-pos)) + ) + (set! (-> obj move-pos 0) sv-32) + (set! (-> obj move-pos 1) sv-32) + (get-point-in-path! sv-36 (-> obj basetrans) sv-32 'interp) + (set! (-> obj root-override pause-adjust-distance) + (+ 122880.0 (-> obj params xz-threshold) (total-distance (-> obj path))) + ) + (clear-ambient-sound! obj) + (base-plat-method-33 obj) + (elevator-method-40 obj) + (none) + ) diff --git a/goal_src/jak2/engine/common_objs/plat.gc b/goal_src/jak2/engine/common_objs/plat.gc index 1f07c5b465..98c7ca4c77 100644 --- a/goal_src/jak2/engine/common_objs/plat.gc +++ b/goal_src/jak2/engine/common_objs/plat.gc @@ -7,3 +7,358 @@ ;; DECOMP BEGINS +(deftype plat (base-plat) + ((path-pos float :offset-assert 272) + (sound-id sound-id :offset-assert 276) + (sync sync-eased :inline :offset-assert 280) + ) + :heap-base #xd0 + :method-count-assert 37 + :size-assert #x144 + :flag-assert #x2500d00144 + (:methods + (plat-idle () _type_ :state 34) + (plat-path-active () _type_ :state 35) + (plat-path-sync (_type_) object 36) + ) + ) + + +(let ((a0-2 (new 'static 'skeleton-group + :name "skel-plat" + :extra #f + :info #f + :art-group-name "plat" + :bounds (new 'static 'vector :y -2048.0 :w 12288.0) + :max-lod 2 + :version #x7 + ) + ) + ) + (set! (-> a0-2 jgeo) 0) + (set! (-> a0-2 janim) 4) + (set! (-> a0-2 mgeo 0) 1) + (set! (-> a0-2 lod-dist 0) 81920.0) + (set! (-> a0-2 mgeo 1) 2) + (set! (-> a0-2 lod-dist 1) 163840.0) + (set! (-> a0-2 mgeo 2) 3) + (set! (-> a0-2 lod-dist 2) 4095996000.0) + (add-to-loading-level a0-2) + ) + +(defmethod get-art-group plat ((obj plat)) + "@returns The associated [[art-group]]" + (art-group-get-by-name *level* "skel-plat" (the-as (pointer uint32) #f)) + ) + +(defmethod base-plat-method-31 plat ((obj plat)) + "TODO - collision stuff" + (let ((collision-shape (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((collision-mesh (new 'process 'collide-shape-prim-mesh collision-shape (the-as uint 0) (the-as uint 0)))) + (set! (-> collision-mesh prim-core collide-as) (collide-spec pusher)) + (set! (-> collision-mesh prim-core collide-with) (collide-spec jak player-list)) + (set! (-> collision-mesh prim-core action) (collide-action solid rideable)) + (set! (-> collision-mesh transform-index) 0) + (set-vector! (-> collision-mesh local-sphere) 0.0 0.0 0.0 13107.2) + (set! (-> collision-shape total-prims) (the-as uint 1)) + (set! (-> collision-shape root-prim) collision-mesh) + ) + ((method-of-object collision-shape collide-shape-method-54)) + (set! (-> collision-shape nav-radius) (* 0.75 (-> collision-shape root-prim local-sphere w))) + (let ((prim (-> collision-shape root-prim))) + (set! (-> collision-shape backup-collide-as) (-> prim prim-core collide-as)) + (set! (-> collision-shape backup-collide-with) (-> prim prim-core collide-with)) + ) + (set! (-> obj root-override) (the-as collide-shape-moving collision-shape)) + ) + 0 + (none) + ) + +(defmethod base-plat-method-33 plat ((obj plat)) + 0 + (none) + ) + +(defmethod base-plat-method-32 plat ((obj plat)) + 0 + (none) + ) + +(defmethod plat-path-sync plat ((obj plat)) + "If the `sync` period is greater than `0` then transition the state to [[plat::35]] + otherwise, [[plat::34]] + + @see [[sync-eased]]" + (cond + ((logtest? (-> obj path flags) (path-control-flag not-found)) + (go (method-of-object obj plat-idle)) + ) + ((> (-> obj sync period) 0) + (go (method-of-object obj plat-path-active)) + ) + (else + (go (method-of-object obj plat-idle)) + ) + ) + ) + +(defstate plat-idle (plat) + :virtual #t + :event (the-as (function process int symbol event-message-block object :behavior plat) plat-event) + :trans (behavior () + (execute-effects self) + (none) + ) + :code (behavior () + (plat-trans) + (rider-post) + (suspend) + (until #f + (when (not (-> self bouncing)) + (plat-trans) + (rider-post) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + ) + (while (-> self bouncing) + (plat-trans) + (rider-post) + (suspend) + ) + ) + #f + (none) + ) + ) + +(defstate plat-path-active (plat) + :virtual #t + :event (the-as (function process int symbol event-message-block object :behavior plat) plat-event) + :exit (behavior () + (sound-stop (-> self sound-id)) + (none) + ) + :trans (behavior () + (set! (-> self path-pos) (get-norm! (-> self sync) 0)) + (get-point-at-percent-along-path! (-> self path) (-> self basetrans) (-> self path-pos) 'interp) + (if (< (vector-vector-distance (-> self root-override trans) (ear-trans 0)) 81920.0) + (sound-play "eco-plat-hover" :id (-> self sound-id) :position (-> self root-override trans)) + ) + (plat-trans) + (none) + ) + :code (behavior () + (until #f + (ja-no-eval :group! (ja-group) + :num! (seek! (the float (+ (-> (ja-group) frames num-frames) -1))) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + #f + (none) + ) + :post (the-as (function none :behavior plat) plat-post) + ) + +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! plat ((obj plat) (entity entity-actor)) + (set! (-> obj mask) (logior (process-mask platform) (-> obj mask))) + (base-plat-method-31 obj) + (process-drawable-from-entity! obj entity) + (initialize-skeleton obj (the-as skeleton-group (get-art-group obj)) (the-as pair 0)) + (collide-shape-method-46 (-> obj root-override)) + (stop-bouncing! obj) + (base-plat-method-32 obj) + (set! (-> obj fact) + (new 'process 'fact-info obj (pickup-type eco-pill-random) (-> *FACT-bank* default-eco-pill-green-inc)) + ) + (let ((params (new 'stack-no-clear 'sync-info-params))) + (let ((v1-15 0)) + (if (not (logtest? (-> obj fact options) (actor-option loop))) + (set! v1-15 (logior v1-15 1)) + ) + (set! (-> params sync-type) (the-as basic 'sync-eased)) + (set! (-> params sync-flags) (the-as sync-flags v1-15)) + ) + (set! (-> params period) (the-as uint 1200)) + (set! (-> params entity) entity) + (set! (-> params percent) 0.0) + (set! (-> params ease-in) 0.15) + (set! (-> params ease-out) 0.15) + (set! (-> params pause-in) 0.0) + (set! (-> params pause-out) 0.0) + (initialize! (-> obj sync) params) + ) + (set! (-> obj path) (new 'process 'curve-control obj 'path -1000000000.0)) + (logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text)) + (set! (-> obj sound-id) (new-sound-id)) + (cond + ((logtest? (-> obj path flags) (path-control-flag not-found)) + (set! (-> obj path-pos) 0.0) + (base-plat-method-33 obj) + (plat-path-sync obj) + ) + ((> (-> obj sync period) 0) + (set! (-> obj path-pos) (get-norm! (-> obj sync) 0)) + (get-point-at-percent-along-path! (-> obj path) (-> obj root-override trans) (-> obj path-pos) 'interp) + (base-plat-method-33 obj) + (plat-path-sync obj) + ) + (else + (set! (-> obj path-pos) 0.0) + (get-point-at-percent-along-path! (-> obj path) (-> obj root-override trans) (-> obj path-pos) 'interp) + (base-plat-method-33 obj) + (plat-path-sync obj) + ) + ) + (none) + ) + +(deftype drop-plat (base-plat) + ((art-name string :offset-assert 272) + (anim spool-anim :offset-assert 276) + (break-anim-name string :offset-assert 280) + (safe-time time-frame :offset-assert 288) + (hit-point vector :inline :offset-assert 304) + ) + :heap-base #xc0 + :method-count-assert 36 + :size-assert #x140 + :flag-assert #x2400c00140 + (:methods + (idle () _type_ :state 34) + (fall (symbol) _type_ :state 35) + ) + ) + + +;; WARN: Return type mismatch base-plat vs drop-plat. +(defmethod relocate drop-plat ((obj drop-plat) (arg0 int)) + (if (nonzero? (-> obj break-anim-name)) + (&+! (-> obj break-anim-name) arg0) + ) + (let ((v1-5 (-> obj anim buffer))) + (if (and (>= (the-as int v1-5) (-> *kernel-context* relocating-min)) + (< (the-as int v1-5) (-> *kernel-context* relocating-max)) + ) + (&+! (-> obj anim buffer) arg0) + ) + ) + (the-as drop-plat ((method-of-type base-plat relocate) obj arg0)) + ) + +(defstate idle (drop-plat) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('touch 'attack 'bonk) + (let* ((proc-temp proc) + (proc-focus (if (type? proc-temp process-focusable) + (the-as process-focusable proc-temp) + ) + ) + ) + (cond + ((and proc-focus (logtest? (-> proc-focus focus-status) (focus-status edge-grab))) + (set! (-> self safe-time) (+ (-> self clock frame-counter) (seconds 0.2))) + (return (the-as object #f)) + ) + ((< (- (-> self clock frame-counter) (-> self safe-time)) (seconds 0.05)) + (return (the-as object #f)) + ) + ) + (set! (-> self hit-point quad) (-> self root-override trans quad)) + (set! proc-focus (if (type? proc process-focusable) + (the-as process-focusable proc) + ) + ) + (set! (-> self hit-point quad) (-> (get-trans proc-focus 0) quad)) + ) + (if (zero? (-> self bounce-time)) + (start-bouncing! self) + ) + #f + ) + ) + ) + :trans (the-as (function none :behavior drop-plat) plat-trans) + :code (behavior () + (gui-control-method-9 + *gui-control* + self + (gui-channel art-load) + (gui-action queue) + (-> self anim name) + -99.0 + 0 + ) + (until #f + (when (not (-> self bouncing)) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + ) + (while (-> self bouncing) + (suspend) + ) + (go-virtual fall #f) + ) + #f + (none) + ) + :post (the-as (function none :behavior drop-plat) plat-post) + ) + +(defstate fall (drop-plat) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('edge-grabbed) + (if (>= (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.5)) + (send-event proc 'end-mode) + ) + ) + (('die) + (go-virtual fall #t) + ) + ) + ) + :enter (behavior ((arg0 symbol)) + (set! (-> self state-time) (-> self clock frame-counter)) + (none) + ) + :exit (behavior () + (ja-abort-spooled-anim (-> self anim) (the-as art-joint-anim #f) -1) + (none) + ) + :trans (the-as (function none :behavior drop-plat) rider-trans) + :code (behavior ((arg0 symbol)) + (process-entity-status! self (entity-perm-status subtask-complete) #t) + (let ((v1-1 (-> self root-override root-prim))) + (set! (-> v1-1 prim-core collide-as) (collide-spec)) + (set! (-> v1-1 prim-core collide-with) (collide-spec)) + ) + 0 + (if (not arg0) + (ja-play-spooled-anim + (-> self anim) + (ja-group) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func) + ) + ) + (ja-channel-set! 0) + (suspend) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0 + (none) + ) + :post (the-as (function none :behavior drop-plat) rider-post) + ) diff --git a/goal_src/jak2/engine/debug/sampler.gc b/goal_src/jak2/engine/debug/sampler.gc index 46f8f5fa3b..c6a063a793 100644 --- a/goal_src/jak2/engine/debug/sampler.gc +++ b/goal_src/jak2/engine/debug/sampler.gc @@ -5,5 +5,49 @@ ;; name in dgo: sampler ;; dgos: ENGINE, GAME +;; og:ignore-form:install-handler 9 timer0-handler + ;; DECOMP BEGINS +;; this file is debug only +(declare-file (debug)) +(when *debug-segment* +(define *sampler-mem* "A pointer to where the sampled data should be stored" (the-as pointer #f)) + +(define *sampler-compare* + "The value used to set the EE register's `Timer 0 Compare Value`. Always `1`" + (the-as uint 1) + ) + +(define *sampler-count* "Incremented everytime a metric is sampled + @see [[timer0-handler]]" 0) + +(defun-debug sampler-start () + "Reset the [[timer-bank]] EE registers. + - If [[*sampler-mem*]] is undefined, allocate 16.7MB in the debug segment + - and when [[*sampler-mem*]] is defined, initialize the [[timer-bank]] fully. Reset [[*sampler-count*]] to 0 as well" + (set! (-> (the-as timer-bank #x10000000) mode) (new 'static 'timer-mode)) + (set! (-> (the-as timer-bank #x10000000) count) (the-as uint 0)) + (set! (-> (the-as timer-bank #x10000000) comp) *sampler-compare*) + (if (not *sampler-mem*) + (set! *sampler-mem* (malloc 'debug #x1000000)) + ) + (when (nonzero? *sampler-mem*) + (mem-set32! *sampler-mem* #x400000 0) + (set! (-> (the-as timer-bank #x10000000) mode) + (new 'static 'timer-mode :clks (timer-clock-selection busclk/256) :zret #x1 :cue #x1 :cmpe #x1 :equf #x1) + ) + (set! *sampler-count* 0) + 0 + ) + (none) + ) + +(defun-debug sampler-stop () + "Sets the [[timer-bank]] mode EE register to 0" + (set! (-> (the-as timer-bank #x10000000) mode) (new 'static 'timer-mode)) + 0 + (none) + ) + +) diff --git a/goal_src/jak2/engine/engine/connect.gc b/goal_src/jak2/engine/engine/connect.gc index c27d5f51c8..d0783a1643 100644 --- a/goal_src/jak2/engine/engine/connect.gc +++ b/goal_src/jak2/engine/engine/connect.gc @@ -60,7 +60,7 @@ (deftype connection (connectable) ((param0 basic :offset-assert 16) - (param1 int32 :offset-assert 20) + (param1 basic :offset-assert 20) (param2 int32 :offset-assert 24) (param3 int32 :offset-assert 28) (quad uint128 2 :offset 0) @@ -394,7 +394,7 @@ (let ((v1-0 (the-as connection (-> obj dead-list next0)))) (when (not (or (not arg0) (= v1-0 (-> obj dead-list-end)))) (set! (-> v1-0 param0) (the-as basic arg1)) - (set! (-> v1-0 param1) (the-as int arg2)) + (set! (-> v1-0 param1) (the-as basic arg2)) (set! (-> v1-0 param2) (the-as int arg3)) (set! (-> v1-0 param3) (the-as int arg4)) (set! (-> obj dead-list next0) (-> v1-0 next0)) diff --git a/goal_src/jak2/engine/entity/entity-h.gc b/goal_src/jak2/engine/entity/entity-h.gc index 504dd0abf7..9ceec646c7 100644 --- a/goal_src/jak2/engine/entity/entity-h.gc +++ b/goal_src/jak2/engine/entity/entity-h.gc @@ -29,7 +29,7 @@ (define-extern reset-cameras (function none)) ;; NOTE - for airlock -(define-extern process-entity-status! (function process entity-perm-status symbol int)) +(define-extern process-entity-status! (function process entity-perm-status symbol entity-perm-status)) (define-extern process-drawable-from-entity! (function process-drawable entity-actor none)) (declare-type nav-poly structure) @@ -191,8 +191,8 @@ ) (deftype actor-reference (structure) - ((actor entity :offset-assert 0) - (id uint32 :offset-assert 4) + ((actor entity :offset-assert 0) + (id uint32 :offset-assert 4) ) :pack-me :method-count-assert 9 diff --git a/goal_src/jak2/engine/entity/entity.gc b/goal_src/jak2/engine/entity/entity.gc index f152825862..9fc0c69dde 100644 --- a/goal_src/jak2/engine/entity/entity.gc +++ b/goal_src/jak2/engine/entity/entity.gc @@ -435,7 +435,7 @@ ) (let ((s5-1 format) (s4-0 "~C~C~C") - (a2-0 (if (and arg0 (zero? (logand (-> *kernel-context* prevent-from-run) (-> arg0 mask))) (run-logic? arg0)) + (a2-0 (if (and arg0 (not (logtest? (-> *kernel-context* prevent-from-run) (-> arg0 mask))) (run-logic? arg0)) 114 32 ) @@ -1989,7 +1989,7 @@ ) ) ) - (when (zero? (logand (-> obj status) (entity-perm-status bit-5))) + (when (not (logtest? (-> obj status) (entity-perm-status bit-5))) (set! (-> obj user-uint64) (the-as uint 0)) 0 ) @@ -2048,7 +2048,7 @@ ) ) (let ((s5-1 (lambda ((arg0 process)) - (if (zero? (logand (-> arg0 mask) (process-mask no-kill))) + (if (not (logtest? (-> arg0 mask) (process-mask no-kill))) (deactivate arg0) ) (none) @@ -2100,7 +2100,7 @@ ) (defmethod run-logic? process-drawable ((obj process-drawable)) - (or (zero? (logand (-> obj mask) (process-mask actor-pause))) + (or (not (logtest? (-> obj mask) (process-mask actor-pause))) (or (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root pause-adjust-distance)) (vector-vector-distance (-> obj root trans) (math-camera-pos)) ) @@ -2111,7 +2111,7 @@ ) (defmethod birth? entity-links ((obj entity-links) (arg0 vector)) - (and (zero? (logand (-> obj perm status) (entity-perm-status bit-0 dead))) + (and (not (logtest? (-> obj perm status) (entity-perm-status bit-0 dead))) (< (vector-vector-distance (-> obj trans) arg0) (-> *ACTOR-bank* birth-dist)) ) ) @@ -2196,7 +2196,7 @@ ) (else (if (and (-> v1-54 process) - (zero? (logand (-> v1-54 perm status) (entity-perm-status no-kill))) + (not (logtest? (-> v1-54 perm status) (entity-perm-status no-kill))) (zero? (logand (-> v1-54 process mask) (process-mask no-kill))) ) (kill! (-> v1-54 entity)) @@ -2214,7 +2214,7 @@ (dotimes (s2-1 s3-2) (let ((v1-67 (-> s4-3 data s2-1))) (cond - ((zero? (logand (-> v1-67 kill-mask) sv-32)) + ((not (logtest? (-> v1-67 kill-mask) sv-32)) (when (not (or (-> v1-67 process) (logtest? (-> v1-67 perm status) (entity-perm-status bit-0 dead)))) (birth! (-> v1-67 entity)) (set! sv-24 (+ sv-24 1)) @@ -2225,7 +2225,7 @@ ) (else (if (and (-> v1-67 process) - (zero? (logand (-> v1-67 perm status) (entity-perm-status no-kill))) + (not (logtest? (-> v1-67 perm status) (entity-perm-status no-kill))) (zero? (logand (-> v1-67 process mask) (process-mask no-kill))) ) (kill! (-> v1-67 entity)) @@ -2244,7 +2244,7 @@ (let ((s1-0 (-> s4-4 data s2-2))) (cond ((and (< (vector-vector-distance (-> s1-0 trans) sv-16) (-> *ACTOR-bank* birth-dist)) - (zero? (logand (-> s1-0 perm status) (entity-perm-status bit-9 bit-10))) + (not (logtest? (-> s1-0 perm status) (entity-perm-status bit-9 bit-10))) (zero? (logand (-> s1-0 kill-mask) sv-32)) ) (when (not (or (-> s1-0 process) (logtest? (-> s1-0 perm status) (entity-perm-status bit-0 dead)))) @@ -2257,7 +2257,7 @@ ) (else (if (and (-> s1-0 process) - (zero? (logand (-> s1-0 perm status) (entity-perm-status no-kill))) + (not (logtest? (-> s1-0 perm status) (entity-perm-status no-kill))) (zero? (logand (-> s1-0 process mask) (process-mask no-kill))) ) (kill! (-> s1-0 entity)) @@ -2278,8 +2278,8 @@ (set! sv-48 (-> s3-4 data s1-1)) (cond ((and (is-object-visible? s4-1 (-> sv-48 vis-id)) - (zero? (logand (-> sv-48 perm status) (entity-perm-status bit-9 bit-10))) - (zero? (logand (-> sv-48 kill-mask) sv-32)) + (not (logtest? (-> sv-48 perm status) (entity-perm-status bit-9 bit-10))) + (not (logtest? (-> sv-48 kill-mask) sv-32)) (or (-> s4-1 vis-info 0) (< (vector-vector-distance (-> sv-48 trans) sv-16) (-> sv-48 vis-dist))) ) (when (not (or (-> sv-48 process) (logtest? (-> sv-48 perm status) (entity-perm-status bit-0 dead)) s0-0)) @@ -2302,7 +2302,7 @@ ) (else (when (and (-> sv-48 process) - (zero? (logand (-> sv-48 perm status) (entity-perm-status no-kill))) + (not (logtest? (-> sv-48 perm status) (entity-perm-status no-kill))) (zero? (logand (-> sv-48 process mask) (process-mask no-kill))) ) (kill! (-> sv-48 entity)) @@ -2369,21 +2369,23 @@ (none) ) +;; WARN: Return type mismatch int vs entity-perm-status. (defun process-entity-status! ((arg0 process) (arg1 entity-perm-status) (arg2 symbol)) - (cond - ((and (-> arg0 entity) arg0 (= arg0 (-> arg0 entity extra process))) - (let ((v1-6 (-> arg0 entity extra))) - (if arg2 - (logior! (-> v1-6 perm status) arg1) - (logclear! (-> v1-6 perm status) arg1) - ) - (the-as int (-> v1-6 perm status)) - ) - ) - (else - 0 - ) - ) + (the-as entity-perm-status (cond + ((and (-> arg0 entity) arg0 (= arg0 (-> arg0 entity extra process))) + (let ((v1-6 (-> arg0 entity extra))) + (if arg2 + (logior! (-> v1-6 perm status) arg1) + (logclear! (-> v1-6 perm status) arg1) + ) + (the-as int (-> v1-6 perm status)) + ) + ) + (else + 0 + ) + ) + ) ) ;; WARN: Return type mismatch entity-actor vs entity. diff --git a/goal_src/jak2/engine/entity/relocate.gc b/goal_src/jak2/engine/entity/relocate.gc index 8d3e97014f..8f08c4c075 100644 --- a/goal_src/jak2/engine/entity/relocate.gc +++ b/goal_src/jak2/engine/entity/relocate.gc @@ -32,8 +32,10 @@ ) ) (let ((a0-19 (-> (the-as connection v1-7) param1))) - (if (and (>= a0-19 (-> *kernel-context* relocating-min)) (< a0-19 (-> *kernel-context* relocating-max))) - (+! (-> (the-as connection v1-7) param1) arg0) + (if (and (>= (the-as int a0-19) (-> *kernel-context* relocating-min)) + (< (the-as int a0-19) (-> *kernel-context* relocating-max)) + ) + (&+! (-> (the-as connection v1-7) param1) arg0) ) ) (let ((a0-24 (-> (the-as connection v1-7) param2))) @@ -98,6 +100,7 @@ obj ) +;; WARN: Return type mismatch process vs process-drawable. (defmethod relocate process-drawable ((obj process-drawable) (arg0 int)) (let ((v1-0 *kernel-context*)) (set! (-> v1-0 relocating-process) obj) @@ -163,6 +166,7 @@ obj ) +;; WARN: Return type mismatch collide-shape vs collide-shape-moving. (defmethod relocate collide-shape-moving ((obj collide-shape-moving) (arg0 int)) (if (-> obj dynam) (&+! (-> obj dynam) arg0) @@ -322,6 +326,7 @@ obj ) +;; WARN: Return type mismatch process vs camera-master. (defmethod relocate camera-master ((obj camera-master) (arg0 int)) (if (nonzero? (-> obj water-drip)) (&+! (-> obj water-drip) arg0) @@ -329,6 +334,7 @@ (the-as camera-master ((method-of-type process relocate) obj arg0)) ) +;; WARN: Return type mismatch process vs time-of-day-proc. (defmethod relocate time-of-day-proc ((obj time-of-day-proc) (arg0 int)) (if (nonzero? (-> obj sun)) (&+! (-> obj sun) arg0) @@ -342,6 +348,7 @@ (the-as time-of-day-proc ((method-of-type process relocate) obj arg0)) ) +;; WARN: Return type mismatch process vs part-tracker. (defmethod relocate part-tracker ((obj part-tracker) (arg0 int)) (if (nonzero? (-> obj root)) (&+! (-> obj root) arg0) @@ -352,6 +359,7 @@ (the-as part-tracker ((method-of-type process relocate) obj arg0)) ) +;; WARN: Return type mismatch process vs part-spawner. (defmethod relocate part-spawner ((obj part-spawner) (arg0 int)) (if (nonzero? (-> obj root)) (&+! (-> obj root) arg0) @@ -365,6 +373,7 @@ (the-as part-spawner ((method-of-type process relocate) obj arg0)) ) +;; WARN: Return type mismatch process vs lightning-tracker. (defmethod relocate lightning-tracker ((obj lightning-tracker) (arg0 int)) (if (nonzero? (-> obj root)) (&+! (-> obj root) arg0) @@ -375,6 +384,7 @@ (the-as lightning-tracker ((method-of-type process relocate) obj arg0)) ) +;; WARN: Return type mismatch process-drawable vs manipy. (defmethod relocate manipy ((obj manipy) (arg0 int)) (if (nonzero? (-> obj joint 0)) (&+! (-> obj joint 0) arg0) diff --git a/goal_src/jak2/engine/gfx/lightning-h.gc b/goal_src/jak2/engine/gfx/lightning-h.gc index d30df310f8..cf5a66fbee 100644 --- a/goal_src/jak2/engine/gfx/lightning-h.gc +++ b/goal_src/jak2/engine/gfx/lightning-h.gc @@ -5,6 +5,9 @@ ;; name in dgo: lightning-h ;; dgos: ENGINE, GAME +(define-extern unlink-lightning-spec-by-heap (function kheap none)) + +;; +++lightning-spec-flags (defenum lightning-spec-flags :type uint16 :bitfield #t @@ -14,17 +17,22 @@ (lsf3 3) (size-from-adjust-dist 4) ) +;; ---lightning-spec-flags + +;; +++lightning-mode (defenum lightning-mode :type uint8 + (lm-1 -1) (lm0 0) (lm1 1) (lm2 2) (lm3 3) ) +;; ---lightning-mode -(define-extern unlink-lightning-spec-by-heap (function kheap none)) - +(declare-type lightning-spec basic) +(define-extern *lightning-spec-id-table* (array lightning-spec)) ;; DECOMP BEGINS @@ -56,8 +64,6 @@ :flag-assert #x900000050 ) -(define-extern *lightning-spec-id-table* (array lightning-spec)) - (defun lookup-lightning-spec-by-name ((arg0 string)) (let* ((s5-0 *lightning-spec-id-table*) (s4-0 (-> s5-0 length)) @@ -90,6 +96,7 @@ :flag-assert #x900000094 ) + (deftype lightning-control (basic) ((spec lightning-spec :offset-assert 4) (process process :offset-assert 8) @@ -102,12 +109,13 @@ (new (symbol type lightning-spec process float) _type_ 0) (change-mode (_type_ lightning-mode) lightning-mode 9) (get-mode (_type_) lightning-mode 10) - (set-point (_type_ int vector) none 11) + (set-point! (_type_ int vector) none 11) (set-first-meet-point (_type_ vector) none 12) (set-last-meet-point (_type_ vector) none 13) ) ) + (defmethod change-mode lightning-control ((obj lightning-control) (arg0 lightning-mode)) (let ((v1-1 (!= arg0 (-> obj state mode)))) (case arg0 @@ -130,7 +138,7 @@ (-> obj state mode) ) -(defmethod set-point lightning-control ((obj lightning-control) (arg0 int) (arg1 vector)) +(defmethod set-point! lightning-control ((obj lightning-control) (arg0 int) (arg1 vector)) (let ((v1-0 (-> obj state))) (when (and (-> v1-0 path) (>= arg0 0) (< arg0 (-> v1-0 path length))) (set! (-> v1-0 path data arg0 quad) (-> arg1 quad)) @@ -152,11 +160,13 @@ (none) ) +;; WARN: Return type mismatch (inline-array vector) vs none. (defmethod set-first-meet-point lightning-control ((obj lightning-control) (arg0 vector)) (set! (-> obj state meet data 0 quad) (-> arg0 quad)) (none) ) +;; WARN: Return type mismatch vector vs none. (defmethod set-last-meet-point lightning-control ((obj lightning-control) (arg0 vector)) (set! (-> obj state meet data (+ (-> obj state points-to-draw) -1) quad) (-> arg0 quad)) (none) @@ -178,6 +188,7 @@ obj ) +;; WARN: Return type mismatch object vs lightning-control. (defmethod new lightning-control ((allocation symbol) (type-to-make type) (arg0 lightning-spec) (arg1 process) (arg2 float)) (with-pp (let ((obj (object-new allocation type-to-make (the-as int (-> type-to-make size))))) diff --git a/goal_src/jak2/engine/nav/nav-mesh-h.gc b/goal_src/jak2/engine/nav/nav-mesh-h.gc index e1a98e448e..c3d6ceec1e 100644 --- a/goal_src/jak2/engine/nav/nav-mesh-h.gc +++ b/goal_src/jak2/engine/nav/nav-mesh-h.gc @@ -14,6 +14,9 @@ (declare-type grid-hash basic) (declare-type sphere-hash grid-hash) +;; NOTE - for basebutton +(define-extern nav-mesh-connect-from-ent (function entity-nav-mesh none)) + ;; DECOMP BEGINS (deftype nav-mesh-work-debug (structure) diff --git a/goal_src/jak2/engine/physics/trajectory.gc b/goal_src/jak2/engine/physics/trajectory.gc index 1fda361bc4..1a4cb82c58 100644 --- a/goal_src/jak2/engine/physics/trajectory.gc +++ b/goal_src/jak2/engine/physics/trajectory.gc @@ -23,7 +23,6 @@ (/ (- (-> obj initial-velocity y)) (-> obj gravity)) ) -;; WARN: Return type mismatch int vs none. (defmethod setup-from-to-duration! trajectory ((obj trajectory) (arg0 vector) (arg1 vector) (arg2 float) (arg3 float)) (set! (-> obj initial-position quad) (-> arg0 quad)) (set! (-> obj gravity) arg3) @@ -37,7 +36,6 @@ (none) ) -;; WARN: Return type mismatch int vs none. (defmethod setup-from-to-xz-vel! trajectory ((obj trajectory) (arg0 vector) (arg1 vector) (arg2 float) (arg3 float)) (let ((f0-1 (/ (vector-vector-xz-distance arg1 arg0) arg2))) (setup-from-to-duration! obj arg0 arg1 f0-1 arg3) @@ -46,7 +44,6 @@ (none) ) -;; WARN: Return type mismatch int vs none. (defmethod setup-from-to-y-vel! trajectory ((obj trajectory) (arg0 vector) (arg1 vector) (arg2 float) (arg3 float)) (let* ((f0-0 arg2) (f1-3 (- (* f0-0 f0-0) (* 2.0 (- (-> arg0 y) (-> arg1 y)) arg3))) @@ -63,7 +60,6 @@ (none) ) -;; WARN: Return type mismatch int vs none. (defmethod setup-from-to-height! trajectory ((obj trajectory) (arg0 vector) (arg1 vector) (arg2 float) (arg3 float)) (let* ((f0-1 (+ arg2 (fmax (-> arg0 y) (-> arg1 y)))) (f1-4 (* 2.0 (- (-> arg0 y) f0-1) arg3)) @@ -78,7 +74,6 @@ (none) ) -;; WARN: Return type mismatch int vs none. ;; WARN: Function (method 16 trajectory) has a return type of none, but the expression builder found a return statement. (defmethod setup-from-to-duration-and-height! trajectory ((obj trajectory) (arg0 vector) (arg1 vector) (arg2 float) (arg3 float)) (let ((f0-1 (- (-> arg1 y) (-> arg0 y)))) @@ -112,7 +107,6 @@ (none) ) -;; WARN: Return type mismatch int vs none. (defmethod debug-draw trajectory ((obj trajectory)) (let ((s5-0 (new 'stack-no-clear 'vector)) (s4-0 (new 'stack-no-clear 'vector)) @@ -124,7 +118,15 @@ (let ((f0-1 (* (-> obj time) (/ (+ 1.0 (the float s2-0)) (the float s3-0))))) (compute-trans-at-time obj f0-1 s4-0) ) - (add-debug-line #t (bucket-id debug-no-zbuf1) s5-0 s4-0 (new 'static 'rgba :r #xff :a #x80) #f (the-as rgba -1)) + (add-debug-line + #t + (bucket-id debug-no-zbuf1) + s5-0 + s4-0 + (new 'static 'rgba :r #xff :a #x80) + #f + (the-as rgba -1) + ) ) ) 0 @@ -142,7 +144,6 @@ obj ) -;; WARN: Return type mismatch int vs none. (defmethod update-from-cspace impact-control ((obj impact-control)) (when (>= (-> obj joint) 0) (set! (-> obj trans 1 quad) (-> obj trans 0 quad)) @@ -254,20 +255,21 @@ ) ) (sphere<-vector+r! s1-0 arg1 arg2) - (let ((t9-4 (method-of-object *actor-hash* spatial-hash-method-36))) - (-> s2-1 data) - (-> s2-1 allocated-length) - (set! (-> s2-1 length) (the-as int (t9-4))) - ) + (set! (-> s2-1 length) (spatial-hash-method-36 + *actor-hash* + s1-0 + (the-as (pointer collide-shape) (-> s2-1 data)) + (-> s2-1 allocated-length) + ) + ) (let ((gp-2 (find-nearest-focusable (the-as (array collide-shape) s2-1) arg1 arg2 - (the-as search-info-flag (if (= arg4 65536.0) - 515 - 595 - ) - ) + (if (= arg4 65536.0) + (search-info-flag crate enemy combo) + (search-info-flag crate enemy prefer-angle cull-angle combo) + ) (search-info-flag) arg3 (the-as vector #f) @@ -390,7 +392,6 @@ ) ) -;; WARN: Return type mismatch int vs none. (defmethod cubic-curve-method-9 cubic-curve ((obj cubic-curve) (arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector)) (rlet ((acc :class vf) (vf0 :class vf) @@ -464,7 +465,6 @@ arg0 ) -;; WARN: Return type mismatch int vs none. (defmethod debug-draw-curve cubic-curve ((obj cubic-curve)) (let ((s5-0 (new 'stack-no-clear 'trajectory)) (s4-0 10) @@ -491,7 +491,3 @@ 0 (none) ) - - - - diff --git a/goal_src/jak2/engine/process-drawable/process-drawable-h.gc b/goal_src/jak2/engine/process-drawable/process-drawable-h.gc index b34e3d9ce8..636c7bce15 100644 --- a/goal_src/jak2/engine/process-drawable/process-drawable-h.gc +++ b/goal_src/jak2/engine/process-drawable/process-drawable-h.gc @@ -20,6 +20,11 @@ (define-extern ja-min? (function int symbol :behavior process-drawable)) (define-extern ja-max? (function int symbol :behavior process-drawable)) +;; NOTE - for basebutton +(define-extern rider-trans (function none :behavior process-drawable)) +;; NOTE - for base-plat +(define-extern rider-post (function none :behavior process-drawable)) + ;; DECOMP BEGINS (defun cspace-by-name-no-fail ((arg0 process-drawable) (arg1 string)) diff --git a/goal_src/jak2/engine/process-drawable/simple-focus.gc b/goal_src/jak2/engine/process-drawable/simple-focus.gc index 0af3042720..3bc35286a5 100644 --- a/goal_src/jak2/engine/process-drawable/simple-focus.gc +++ b/goal_src/jak2/engine/process-drawable/simple-focus.gc @@ -7,3 +7,58 @@ ;; DECOMP BEGINS +(deftype simple-focus (process-focusable) + ((first-time? symbol :offset-assert 204) + ) + :heap-base #x50 + :method-count-assert 28 + :size-assert #xd0 + :flag-assert #x1c005000d0 + (:methods + (idle () _type_ :state 27) + ) + ) + + +(defmethod get-trans simple-focus ((obj simple-focus) (arg0 int)) + "@returns the `trans` [[vector]] from the process's `root` (typically either a [[trsqv]] or a [[collide-shape]]" + (-> obj root trans) + ) + +(defmethod run-logic? simple-focus ((obj simple-focus)) + (when (-> obj first-time?) + (set! (-> obj first-time?) #f) + #t + ) + ) + +(defstate idle (simple-focus) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) + (the-as object (when (= v1-0 'move-trans) + (let ((v0-0 (-> self root trans))) + (set! (-> v0-0 quad) (-> (the-as vector (-> event param 0)) quad)) + v0-0 + ) + ) + ) + ) + ) + :code (the-as (function none :behavior simple-focus) sleep-code) + ) + +;; WARN: Return type mismatch object vs none. +(defbehavior simple-focus-init-by-other simple-focus () + "Initializes the new [[simple-focus]]. `first-time?` will be set to [[#t]]" + (let ((root (new 'process 'trsqv))) + (set! (-> self root) root) + (vector-identity! (-> root scale)) + (quaternion-identity! (-> root quat)) + ) + (logclear! (-> self mask) (process-mask enemy)) + (set! (-> self first-time?) #t) + (set! (-> self event-hook) (-> (method-of-object self idle) event)) + (go-virtual idle) + (none) + ) diff --git a/goal_src/jak2/engine/process-drawable/simple-nav-sphere.gc b/goal_src/jak2/engine/process-drawable/simple-nav-sphere.gc index 7b58df92de..9bb4311b78 100644 --- a/goal_src/jak2/engine/process-drawable/simple-nav-sphere.gc +++ b/goal_src/jak2/engine/process-drawable/simple-nav-sphere.gc @@ -7,3 +7,142 @@ ;; DECOMP BEGINS +(deftype simple-nav-sphere (process-drawable) + ((root-override collide-shape :offset 128) + (first-time? symbol :offset-assert 200) + (track-joint int32 :offset-assert 204) + ) + :heap-base #x50 + :method-count-assert 22 + :size-assert #xd0 + :flag-assert #x16005000d0 + (:methods + (idle () _type_ :state 20) + (active () _type_ :state 21) + ) + ) + + +;; WARN: Return type mismatch object vs none. +(defbehavior simple-nav-sphere-event-handler simple-nav-sphere ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('die-fast) + (go empty-state) + ) + (('move-trans) + (collide-shape-method-29 (-> self root-override) (the-as vector (-> event param 0))) + #t + ) + (('set-radius) + (let ((radius (the-as float (-> event param 0))) + (collide-shape (-> self root-override)) + ) + (set! (-> collide-shape nav-radius) radius) + (set! (-> collide-shape root-prim local-sphere w) radius) + (collide-shape-method-46 collide-shape) + ) + #t + ) + ) + (none) + ) + +(defmethod run-logic? simple-nav-sphere ((obj simple-nav-sphere)) + (cond + (*display-nav-marks* + #t + ) + ((>= (-> obj track-joint) 0) + #t + ) + ((-> obj first-time?) + (set! (-> obj first-time?) #f) + #t + ) + ) + ) + +(defstate idle (simple-nav-sphere) + :virtual #t + :event (the-as + (function process int symbol event-message-block object :behavior simple-nav-sphere) + simple-nav-sphere-event-handler + ) + :trans (behavior () + (if *display-nav-marks* + (add-debug-sphere + #t + (bucket-id debug2) + (-> self root-override trans) + (-> self root-override nav-radius) + (new 'static 'rgba :r #x80 :g #x40 :a #x80) + ) + ) + (none) + ) + :code (the-as (function none :behavior simple-nav-sphere) sleep-code) + ) + +(defstate active (simple-nav-sphere) + :virtual #t + :event (the-as + (function process int symbol event-message-block object :behavior simple-nav-sphere) + simple-nav-sphere-event-handler + ) + :trans (behavior () + (let ((v1-0 (ppointer->process (-> self parent))) + (gp-0 (new 'stack-no-clear 'vector)) + ) + (vector<-cspace! gp-0 (-> (the-as process-drawable v1-0) node-list data (-> self track-joint))) + (collide-shape-method-29 (-> self root-override) gp-0) + ) + (none) + ) + :code (the-as (function none :behavior simple-nav-sphere) sleep-code) + ) + +;; WARN: Return type mismatch object vs none. +(defbehavior simple-nav-sphere-init-by-other simple-nav-sphere ((arg0 float) (arg1 vector) (arg2 nav-mesh) (arg3 int)) + (set! (-> self track-joint) arg3) + (set! (-> self first-time?) #t) + (let ((s5-0 (new 'process 'collide-shape self (collide-list-enum usually-hit-by-player)))) + (let ((v1-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> v1-3 prim-core collide-as) (collide-spec obstacle)) + (set-vector! (-> v1-3 local-sphere) 0.0 0.0 0.0 4096.0) + (set! (-> s5-0 total-prims) (the-as uint 1)) + (set! (-> s5-0 root-prim) v1-3) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (let ((v1-6 (-> s5-0 root-prim))) + (set! (-> s5-0 backup-collide-as) (-> v1-6 prim-core collide-as)) + (set! (-> s5-0 backup-collide-with) (-> v1-6 prim-core collide-with)) + ) + (set! (-> s5-0 nav-radius) arg0) + (set! (-> s5-0 root-prim local-sphere w) arg0) + (if arg1 + (set! (-> s5-0 trans quad) (-> arg1 quad)) + ) + (vector-identity! (-> s5-0 scale)) + (quaternion-identity! (-> s5-0 quat)) + (let ((v1-11 (-> s5-0 root-prim))) + (set! (-> v1-11 prim-core collide-as) (collide-spec)) + (set! (-> v1-11 prim-core collide-with) (collide-spec)) + ) + 0 + (collide-shape-method-46 s5-0) + (set! (-> self root-override) s5-0) + ) + (logclear! (-> self mask) (process-mask actor-pause enemy)) + (set! (-> self event-hook) + (the-as (function process int symbol event-message-block object) simple-nav-sphere-event-handler) + ) + (if arg2 + (nav-mesh-method-29 arg2 self #f) + (nav-mesh-connect-from-ent (the-as entity-nav-mesh self)) + ) + (if (>= (-> self track-joint) 0) + (go-virtual active) + (go-virtual idle) + ) + (none) + ) diff --git a/goal_src/jak2/engine/spatial-hash/actor-hash-h.gc b/goal_src/jak2/engine/spatial-hash/actor-hash-h.gc index fa646d827e..a1a5462728 100644 --- a/goal_src/jak2/engine/spatial-hash/actor-hash-h.gc +++ b/goal_src/jak2/engine/spatial-hash/actor-hash-h.gc @@ -11,6 +11,6 @@ ;; DECOMP BEGINS -(define *actor-list* (malloc 'global 1024)) -(define *actor-list-length* 0) +(define *actor-list* (the-as (pointer collide-shape) (malloc 'global 1024))) +(define *actor-list-length* 0) diff --git a/goal_src/jak2/engine/spatial-hash/spatial-hash-h.gc b/goal_src/jak2/engine/spatial-hash/spatial-hash-h.gc index 4b58a6165c..94e70623c7 100644 --- a/goal_src/jak2/engine/spatial-hash/spatial-hash-h.gc +++ b/goal_src/jak2/engine/spatial-hash/spatial-hash-h.gc @@ -126,17 +126,10 @@ (:methods (spatial-hash-method-34 () none 34) (spatial-hash-method-35 () none 35) - (spatial-hash-method-36 () none 36) + (spatial-hash-method-36 (_type_ sphere (pointer collide-shape) int) int 36) (spatial-hash-method-37 () none 37) (spatial-hash-method-38 () none 38) (spatial-hash-method-39 () none 39) (spatial-hash-method-40 () none 40) ) ) - - -0 - - - - diff --git a/goal_src/jak2/engine/target/board/target-board.gc b/goal_src/jak2/engine/target/board/target-board.gc index e235c915a5..18d100a25b 100644 --- a/goal_src/jak2/engine/target/board/target-board.gc +++ b/goal_src/jak2/engine/target/board/target-board.gc @@ -52,7 +52,8 @@ (define-extern target-board-clone-anim (state handle target)) (define-extern target-board-hit (state vector target)) -;; definition for symbol *board-walk-mods*, type surface +;; decomp begins + (define *board-walk-mods* (new 'static 'surface :name 'run @@ -144,7 +145,6 @@ ) ) -;; definition for symbol *board-duck-mods*, type surface (define *board-duck-mods* (new 'static 'surface :name 'duck :turnv 21845.334 @@ -180,7 +180,6 @@ (set! (-> *board-duck-mods* mult-hook) (-> *board-walk-mods* mult-hook)) -;; definition for symbol *board-air-mods*, type surface (define *board-air-mods* (new 'static 'surface :name 'air :turnv 49152.0 @@ -215,7 +214,6 @@ ) ) -;; definition for symbol *board-jump-mods*, type surface (define *board-jump-mods* (new 'static 'surface :name 'jump :turnv 49152.0 @@ -244,7 +242,6 @@ ) ) -;; definition for symbol *board-ride-jump-mods*, type surface (define *board-ride-jump-mods* (new 'static 'surface :name 'jump @@ -288,12 +285,10 @@ ) ) -;; definition for symbol *board-duck-jump-mods*, type surface (define *board-duck-jump-mods* *board-jump-mods*) (define *board-spin-mods* (copy *board-jump-mods* 'global)) -;; failed to figure out what this is: (let ((v1-10 *board-spin-mods*)) (set! (-> v1-10 name) 'spin) (set! (-> v1-10 flags) (surface-flag no-turn-around check-edge air)) @@ -328,7 +323,6 @@ (set! *board-flip-mods* v1-14) ) -;; definition for symbol *board-wall-kick-mods*, type surface (define *board-wall-kick-mods* (new 'static 'surface :name 'jump @@ -367,7 +361,6 @@ ) ) -;; definition for symbol *board-halfpipe-mods*, type surface (define *board-halfpipe-mods* (new 'static 'surface :name 'jump :turnv 131072.0 @@ -395,7 +388,6 @@ ) ) -;; definition for symbol *board-turn-to-mods*, type surface (define *board-turn-to-mods* (new 'static 'surface :name 'run :turnv 524288.0 @@ -429,7 +421,6 @@ (set! (-> *board-turn-to-mods* mult-hook) (-> *board-walk-mods* mult-hook)) -;; definition for symbol *board-ride-mods*, type surface (define *board-ride-mods* (new 'static 'surface :name 'run :turnv 218453.33 @@ -471,7 +462,6 @@ ) ) -;; definition for symbol *collide-edge-board-halfpipe-spec*, type collide-edge-spec (define *collide-edge-board-halfpipe-spec* (new 'static 'collide-edge-spec :split-dists (new 'static 'array float 2 1024.0 1433.6) :outward-offset (new 'static 'vector :x 708.608 :y 13312.0 :w 1.0) @@ -542,7 +532,6 @@ (none) ) -;; definition for function target-board-init (defbehavior target-board-init target () (target-gun-end-mode #f) (target-exit) @@ -635,8 +624,6 @@ (none) ) -;; definition for function target-board-exit -;; INFO: Used lq/sq (defbehavior target-board-exit target () (when (not (and (-> self next-state) (let ((v1-3 (-> self next-state name))) @@ -705,8 +692,6 @@ (none) ) -;; definition for function target-board-falling-anim-trans -;; WARN: Return type mismatch int vs none. (defbehavior target-board-falling-anim-trans target () (let ((v1-2 (ja-group))) (cond @@ -725,13 +710,10 @@ (none) ) -;; definition for function board-on-ground? (defbehavior board-on-ground? target () (logtest? (-> self control status) (cshape-moving-flags on-surface)) ) -;; definition for function target-board-smack-surface? -;; INFO: Used lq/sq (defbehavior target-board-smack-surface? target () (when (and (logtest? (-> self control status) (cshape-moving-flags t-wall)) (< (+ (-> self clock frame-counter) (seconds -0.05)) (-> self control unknown-time-frame07)) @@ -748,9 +730,6 @@ ) ) -;; definition for function board-add-thrust -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior board-add-thrust target () (let ((gp-0 (-> self control unknown-vector00))) (let* ((v1-1 gp-0) @@ -883,7 +862,6 @@ (none) ) -;; definition for function segment-array-vector->index (defun segment-array-vector->index ((arg0 (inline-array vector)) (arg1 int) (arg2 float) (arg3 float)) (let ((gp-0 -1) (f30-0 0.0) @@ -901,7 +879,6 @@ ) ) -;; definition for function segment-array-index->vector (defun segment-array-index->vector ((arg0 (inline-array vector)) (arg1 int) (arg2 float) (arg3 vector)) (let ((v0-0 (the int arg2))) (let* ((f0-2 arg2) @@ -921,8 +898,6 @@ ) ) -;; definition for function target-board-exit-check -;; WARN: Return type mismatch int vs none. (defbehavior target-board-exit-check target () (if (and (or (and (cpad-pressed? (-> self control unknown-cpad-info00 number) r2) (or (!= *cheat-mode* 'debug) @@ -947,8 +922,6 @@ (none) ) -;; definition for function target-board-effect -;; WARN: Return type mismatch int vs none. (defbehavior target-board-effect target () (let ((gp-0 0)) (cond @@ -966,7 +939,7 @@ ) (set! gp-0 1) ) - ((zero? (logand (-> self control status) (cshape-moving-flags on-surface))) + ((not (logtest? (-> self control status) (cshape-moving-flags on-surface))) (set! gp-0 2) ) ) @@ -1111,9 +1084,6 @@ (none) ) -;; definition for function target-board-physics -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior target-board-physics target ((arg0 vector)) (let ((f30-0 0.5)) (if (>= (- (-> self clock frame-counter) (-> self board unknown-time-frame02)) (seconds 0.3)) @@ -1224,9 +1194,6 @@ (none) ) -;; definition for function target-board-collision -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior target-board-collision target () (let ((gp-0 (new 'stack-no-clear 'vector))) (set! (-> gp-0 quad) (-> self control transv quad)) @@ -1283,7 +1250,7 @@ (set! (-> a2-6 ignore-process1) #f) (set! (-> a2-6 ignore-pat) (-> v1-30 pat-ignore-mask)) (set! (-> a2-6 action-mask) (collide-action solid)) - (collide-shape-method-32 v1-30 (-> v1-30 transv) a2-6 (meters 1.0)) + (collide-shape-method-32 v1-30 (-> v1-30 transv) a2-6 (meters 1)) ) (when (logtest? (-> self control root-prim prim-core action) (collide-action check-edge)) (set! (-> *collide-edge-board-spec* flags) (logand -3 (-> *collide-edge-board-spec* flags))) @@ -1314,7 +1281,7 @@ (when (and (logtest? (-> self control status) (cshape-moving-flags t-wall)) (and (< 16384.0 f30-0) (not (and (-> self next-state) (= (-> self next-state name) 'target-board-smack))) - (zero? (logand (focus-status halfpipe) (-> self focus-status))) + (not (logtest? (focus-status halfpipe) (-> self focus-status))) (!= (-> self control ground-pat mode) 3) (>= (- (-> self clock frame-counter) (-> self board halfpipe-time)) (seconds 0.1)) ) @@ -1421,9 +1388,6 @@ (none) ) -;; definition for function target-board-joint-points -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior target-board-joint-points target () (when (-> self board board) (let ((a1-0 (-> self node-list data 25 bone transform))) @@ -1438,9 +1402,6 @@ (none) ) -;; definition for function target-board-pre-move -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior target-board-pre-move target () (cond ((and (and (logtest? (-> self control unknown-surface00 flags) (surface-flag air)) @@ -1516,10 +1477,7 @@ (logior! (-> self control root-prim prim-core action) (collide-action check-edge)) (logclear! (-> self control root-prim prim-core action) (collide-action check-edge)) ) - (if (zero? (logand (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) - (pad-buttons circle square) - ) - ) + (if (not (cpad-hold? (-> self control unknown-cpad-info00 number) circle square)) (set! (-> self board ride-lock) #f) ) (cond @@ -1627,7 +1585,7 @@ (set! (-> self board unknown-time-frame00) (-> self clock frame-counter)) ) ) - (when (and (zero? (logand (-> self control status) (cshape-moving-flags on-surface))) + (when (and (not (logtest? (-> self control status) (cshape-moving-flags on-surface))) (< 0.0 f28-0) (or (and (or (< (target-height-above-ground) 4096.0) (< (- (-> self clock frame-counter) (-> self board unknown-time-frame00)) (seconds 0.1)) @@ -1670,9 +1628,6 @@ (none) ) -;; definition for function target-board-real-post -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior target-board-real-post target () (let ((f30-0 (-> self clock clock-ratio))) (let ((gp-1 (max 1 (the int (-> self clock time-adjust-ratio))))) @@ -1711,14 +1666,14 @@ ) (if (and (= (-> self control unknown-float12) 0.0) (>= (-> self clock frame-counter) (-> self control unknown-time-frame00)) - (zero? (logand (-> self control unknown-surface01 flags) (surface-flag turn-to-vel))) + (not (logtest? (-> self control unknown-surface01 flags) (surface-flag turn-to-vel))) (>= (- (-> self clock frame-counter) (-> self board unknown-time-frame00)) (seconds 0.1)) ) (rot->dir-targ! (-> self control)) ) (when (and (< (- (-> self clock frame-counter) (-> self control unknown-time-frame06)) (seconds 0.1)) (>= (-> self clock frame-counter) (-> self control unknown-time-frame00)) - (zero? (logand (-> self control unknown-surface01 flags) (surface-flag turn-to-vel))) + (not (logtest? (-> self control unknown-surface01 flags) (surface-flag turn-to-vel))) (>= (- (-> self clock frame-counter) (-> self board unknown-time-frame00)) (seconds 0.1)) ) (let* ((s3-0 @@ -1929,8 +1884,6 @@ (none) ) -;; definition for function probe-test -;; INFO: Used lq/sq (defun probe-test ((arg0 control-info) (arg1 vector) (arg2 pat-surface)) (dotimes (s3-0 3) (let ((s2-0 (new 'stack-no-clear 'collide-query))) @@ -2102,7 +2055,7 @@ ) (if (probe-test (-> self control) s3-5 (new 'static 'pat-surface :noentity #x1 :noboard #x1 :probe #x1)) (set! (-> self control status) (logior (cshape-moving-flags csmf16) (-> self control status))) - ((method-of-object (-> self control) collide-shape-method-28)) + (move-by-vector! (-> self control) s3-5) ) ) ) @@ -2309,9 +2262,10 @@ (set! (-> self control transv quad) (-> s5-0 quad)) ) ) - (when (zero? (logand s4-3 64)) - (vector-float*! (new 'stack-no-clear 'vector) (-> self control dynam gravity-normal) 819.2) - ((method-of-object (-> self control) collide-shape-method-28)) + (when (not (logtest? s4-3 64)) + (let ((a1-83 (vector-float*! (new 'stack-no-clear 'vector) (-> self control dynam gravity-normal) 819.2))) + (move-by-vector! (-> self control) a1-83) + ) ) (send-event self 'end-mode (zero? (logand s4-3 75))) ) @@ -2332,8 +2286,6 @@ ) ) -;; definition for function board-ride-add-thrust -;; WARN: Return type mismatch int vs none. (defbehavior board-ride-add-thrust target ((arg0 vector) (arg1 float)) (let* ((f30-0 (-> self board ride-speed)) (f0-4 @@ -2381,9 +2333,6 @@ (none) ) -;; definition for function target-board-ride-post -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior target-board-ride-post target () (let ((f30-0 (-> self clock clock-ratio))) (let ((gp-1 (max 1 (the int (-> self clock time-adjust-ratio))))) @@ -2615,22 +2564,17 @@ (none) ) -;; definition for function target-board-post (defbehavior target-board-post target () (target-board-real-post) (none) ) -;; definition for function target-board-center-anim -;; WARN: Return type mismatch int vs none. (defbehavior target-board-center-anim target () (set! (-> self board turn-anim-frame) 0.0) 0 (none) ) -;; definition for function target-board-turn-anim -;; WARN: Return type mismatch int vs none. (defbehavior target-board-turn-anim target ((arg0 int)) (let ((f30-0 (-> self clock clock-ratio))) (let ((s5-1 (max 1 (the int (-> self clock time-adjust-ratio))))) @@ -2742,8 +2686,6 @@ (none) ) -;; definition for method 9 of type board-info -;; WARN: Return type mismatch int vs none. (defmethod add-to-trick-list board-info ((obj board-info) (arg0 board-tricks) (arg1 float)) "Add specified trick and point amount to trick list." (send-event (handle->process (-> obj process 0 notify)) 'notify 'trick-point arg0) @@ -2862,8 +2804,6 @@ (none) ) -;; definition for method 10 of type board-info -;; WARN: Return type mismatch int vs none. (defmethod flush-trick-list board-info ((obj board-info)) "Flush trick list and give out points." (let ((f30-0 0.0)) diff --git a/goal_src/jak2/engine/target/logic-target.gc b/goal_src/jak2/engine/target/logic-target.gc index f95989eb31..ddf3487421 100644 --- a/goal_src/jak2/engine/target/logic-target.gc +++ b/goal_src/jak2/engine/target/logic-target.gc @@ -673,7 +673,7 @@ (< 0.7 (-> self control unknown-float27)) (and (< (-> self control unknown-float05) 8192.0) (logtest? (-> self control status) (cshape-moving-flags t-wall)) - (zero? (logand (-> self control status) (cshape-moving-flags t-act))) + (not (logtest? (-> self control status) (cshape-moving-flags t-act))) (or (= (-> self control unknown-pat-surface00 event) (pat-event hide)) (let ((a0-2 (level-get-target-inside *level*))) (and a0-2 (logtest? (-> a0-2 info level-flags) 1)) @@ -984,7 +984,7 @@ ) (vector-matrix*! s2-0 s3-1 (-> self control unknown-matrix01)) (let ((f28-0 (vector-vector-xz-distance s3-1 s4-0))) - (when (and (zero? (logand (-> self control status) (cshape-moving-flags t-surface))) + (when (and (not (logtest? (-> self control status) (cshape-moving-flags t-surface))) (let ((v1-51 gp-0)) (< (sqrtf (+ (* (-> v1-51 x) (-> v1-51 x)) (* (-> v1-51 z) (-> v1-51 z)))) (sqrtf (+ (* (-> s3-1 x) (-> s3-1 x)) (* (-> s3-1 z) (-> s3-1 z)))) @@ -1000,7 +1000,7 @@ ) ) ) - (if (and (zero? (logand (-> self control status) (cshape-moving-flags t-wall))) + (if (and (not (logtest? (-> self control status) (cshape-moving-flags t-wall))) (logtest? (-> self control old-status) (cshape-moving-flags t-wall)) (logtest? (-> self control unknown-surface00 flags) (surface-flag air)) (< 0.0 (-> gp-0 y)) @@ -1019,7 +1019,7 @@ (if (< (- (-> self clock frame-counter) (-> self control unknown-time-frame09)) (seconds 0.2)) (set! f30-0 (+ 204800.0 f30-0)) ) - (if (and (zero? (logand (-> self control status) (cshape-moving-flags t-wall))) + (if (and (not (logtest? (-> self control status) (cshape-moving-flags t-wall))) (and (logtest? (-> self control old-status) (cshape-moving-flags t-wall)) (logtest? (-> self control unknown-surface00 flags) (surface-flag air)) (< 0.0 (-> gp-0 y)) @@ -1163,10 +1163,10 @@ ((logtest? (surface-flag turn-to-alt) (-> self control unknown-surface01 flags)) (-> self control unknown-vector03) ) - ((and (or (zero? (logand (logior (-> self control status) (-> self control old-status)) + ((and (or (not (logtest? (logior (-> self control status) (-> self control old-status)) (cshape-moving-flags on-surface t-surface) ) - ) + ) (< (- (-> self clock frame-counter) (-> self control unknown-time-frame07)) (seconds 0.5)) (not (and (-> self next-state) (let ((v1-15 (-> self next-state name))) (or (= v1-15 'target-walk) (= v1-15 'target-gun-walk)) @@ -1616,7 +1616,7 @@ (set! (-> self control unknown-time-frame06) (-> self clock frame-counter)) (set! (-> self control unknown-vector21 quad) (-> self control trans quad)) (if (and (>= (-> self control coverage) 1.0) - (zero? (logand (-> self control status) (cshape-moving-flags t-act on-water))) + (not (logtest? (-> self control status) (cshape-moving-flags t-act on-water))) (logtest? (-> self control status) (cshape-moving-flags on-ground)) ) (set! (-> self control unknown-vector23 quad) (-> self control trans quad)) @@ -1644,12 +1644,12 @@ ) (when (and (cpad-pressed? (-> self control unknown-cpad-info00 number) r3) (zero? (-> self control unknown-word07)) - (zero? (logand (-> *kernel-context* prevent-from-run) (process-mask movie))) + (not (logtest? (-> *kernel-context* prevent-from-run) (process-mask movie))) (not *pause-lock*) ) (if (and (= (-> self cam-user-mode) 'normal) (logtest? (-> self control unknown-surface00 flags) (surface-flag look-around)) - (zero? (logand (focus-status edge-grab pole flut tube board pilot dark) (-> self focus-status))) + (not (logtest? (focus-status edge-grab pole flut tube board pilot dark) (-> self focus-status))) (-> *setting-control* user-current allow-look-around) (>= (- (-> self clock frame-counter) (the-as int (-> self no-look-around-wait))) (seconds 0.05)) (not (and (= (-> self control ground-pat material) (pat-material ice)) @@ -1710,7 +1710,7 @@ (cpad-hold? (-> self control unknown-cpad-info00 number) r2) (cpad-hold? (-> self control unknown-cpad-info00 number) l2) (not *pause-lock*) - (zero? (logand (focus-status grabbed in-head pilot) (-> self focus-status))) + (not (logtest? (focus-status grabbed in-head pilot) (-> self focus-status))) (not (and (-> self next-state) (let ((v1-167 (-> self next-state name))) (or (= v1-167 'target-darkjak-get-on) (= v1-167 'target-float)) ) @@ -1794,8 +1794,8 @@ (and (or (not (and (= *cheat-mode* 'debug) (cpad-hold? (-> self control unknown-cpad-info00 number) r2))) *pause-lock* ) - (zero? (logand (focus-status flut pilot mech indax) (-> self focus-status))) - (zero? (logand (-> self state-flags) (state-flags sf7))) + (not (logtest? (focus-status flut pilot mech indax) (-> self focus-status))) + (not (logtest? (-> self state-flags) (state-flags sf7))) #t ) ) @@ -2161,8 +2161,9 @@ ) (else (vector-normalize! s4-1 1228.8) - (vector+! (new 'stack-no-clear 'vector) s4-1 (-> self control unknown-vector05)) - ((method-of-object (-> self control) collide-shape-method-28)) + (let ((a1-20 (vector+! (new 'stack-no-clear 'vector) s4-1 (-> self control unknown-vector05)))) + (move-by-vector! (-> self control) a1-20) + ) (vector-float*! (-> self control rider-last-move) s4-1 (-> self clock frames-per-second)) (set! (-> self control rider-time) (-> self clock frame-counter)) (if (and (>= (- (-> self clock frame-counter) (-> self control unknown-time-frame16)) (seconds 0.5)) @@ -2250,10 +2251,10 @@ ) (let ((a1-15 (vector-! (new-stack-vector0) (-> gp-0 center-hold) (-> gp-0 center-hold-old)))) (vector-float*! (-> self control rider-last-move) a1-15 (-> self clock frames-per-second)) + (set! (-> self control rider-time) (-> self clock frame-counter)) + (move-by-vector! (-> self control) a1-15) ) ) - (set! (-> self control rider-time) (-> self clock frame-counter)) - ((method-of-object (-> self control) collide-shape-method-28)) (set! (-> self control unknown-float33) 0.0) (joint-control-method-10 (-> self skel)) (draw-control-method-14 (-> self draw) (-> self node-list) (-> self skel)) @@ -2300,7 +2301,7 @@ (bucket-id debug-no-zbuf1) (-> (the-as swingpole s2-0) root trans) (-> (the-as swingpole s2-0) dir) - (meters 3.0) + (meters 3) (the-as rgba (-> (new 'static 'array uint64 1 #x80ff00ff) 0)) ) (add-debug-sphere @@ -2330,10 +2331,7 @@ (let ((a0-26 (vector-! (new-stack-vector0) s5-0 (-> self control unknown-vector30)))) (cond ((and (< 2457.6 (vector-length a0-26)) (not (-> self control unknown-symbol02))) - (let ((s4-2 (method-of-object (-> self control) collide-shape-method-28))) - (vector-normalize! a0-26 2457.6) - (s4-2) - ) + (move-by-vector! (-> self control) (vector-normalize! a0-26 2457.6)) ) (else (set! (-> self control unknown-symbol02) (the-as float #t)) @@ -2368,7 +2366,7 @@ ) (cond ((and (and (-> self next-state) (= (-> self next-state name) 'target-clone-anim)) - (and (zero? (logand (-> self draw status) (draw-control-status no-draw))) + (and (not (logtest? (-> self draw status) (draw-control-status no-draw))) (begin (vector<-cspace! s5-0 (-> self node-list data 3)) (set! (-> s5-0 y) (+ -5896.192 (-> s5-0 y))) @@ -3249,7 +3247,7 @@ (set! (-> s0-0 nav-radius) (* 0.75 (-> s0-0 root-prim local-sphere w))) (let ((v1-66 (-> s0-0 root-prim))) (set! (-> s0-0 backup-collide-as) (-> v1-66 prim-core collide-as)) - (set! (-> s0-0 backup-collde-with) (-> v1-66 prim-core collide-with)) + (set! (-> s0-0 backup-collide-with) (-> v1-66 prim-core collide-with)) ) (set! (-> s0-0 event-priority) (the-as uint 9)) (set! (-> obj control) s0-0) @@ -3350,7 +3348,7 @@ (target-collide-set! 'normal 0.0) (let ((v1-163 (-> obj control root-prim))) (set! (-> obj control backup-collide-as) (-> v1-163 prim-core collide-as)) - (set! (-> obj control backup-collde-with) (-> v1-163 prim-core collide-with)) + (set! (-> obj control backup-collide-with) (-> v1-163 prim-core collide-with)) ) (set! (-> obj sound) (new 'process 'ambient-sound "none" (-> obj control trans))) (set! (-> obj control unknown-sound-id04) (new-sound-id)) diff --git a/goal_src/jak2/engine/util/sync-info-h.gc b/goal_src/jak2/engine/util/sync-info-h.gc index 66ff356920..fd547c5184 100644 --- a/goal_src/jak2/engine/util/sync-info-h.gc +++ b/goal_src/jak2/engine/util/sync-info-h.gc @@ -12,6 +12,7 @@ ) ;; DECOMP BEGINS + (deftype sync-info-params (structure) ((sync-type basic :offset-assert 0) (sync-flags sync-flags :offset-assert 8) @@ -28,6 +29,7 @@ :flag-assert #x90000002c ) + (deftype sync-info (structure) ((sync-flags sync-flags :offset-assert 0) (offset float :offset-assert 8) @@ -47,6 +49,7 @@ ) ) + (deftype sync-linear (sync-info) () :method-count-assert 16 @@ -54,6 +57,7 @@ :flag-assert #x1000000010 ) + (deftype sync-eased (sync-info) ((tlo float :offset-assert 16) (thi float :offset-assert 20) @@ -63,11 +67,13 @@ (pause-in float :offset-assert 36) (pause-out float :offset-assert 40) ) + :pack-me :method-count-assert 16 :size-assert #x2c :flag-assert #x100000002c ) + (deftype sync-paused (sync-info) ((pause-in float :offset-assert 16) (pause-out float :offset-assert 20) @@ -77,6 +83,7 @@ :flag-assert #x1000000018 ) + (deftype delayed-rand-float (structure) ((min-time int32 :offset-assert 0) (max-time int32 :offset-assert 4) @@ -96,6 +103,7 @@ ) ) + (deftype oscillating-float (structure) ((value float :offset-assert 0) (target float :offset-assert 4) @@ -113,6 +121,7 @@ ) ) + (deftype bouncing-float (structure) ((osc oscillating-float :inline :offset-assert 0) (max-value float :offset-assert 24) @@ -131,6 +140,7 @@ ) ) + (deftype delayed-rand-vector (structure) ((min-time int32 :offset-assert 0) (max-time int32 :offset-assert 4) @@ -151,6 +161,7 @@ ) ) + (deftype oscillating-vector (structure) ((value vector :inline :offset-assert 0) (target vector :inline :offset-assert 16) diff --git a/goal_src/jak2/levels/common/airlock.gc b/goal_src/jak2/levels/common/airlock.gc index c430bfdd98..037e70d201 100644 --- a/goal_src/jak2/levels/common/airlock.gc +++ b/goal_src/jak2/levels/common/airlock.gc @@ -392,31 +392,31 @@ (defstate close (com-airlock) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'close) (set! (-> self latch-closed-time) (+ (-> self clock frame-counter) (if (>= arg1 1) - (the-as int (-> arg3 param 0)) + (the-as int (-> event param 0)) 3000 ) ) ) - (if (and (>= arg1 2) (and (= (-> arg3 param 1) #t) (not (want-cross-airlock? self)))) + (if (and (>= arg1 2) (and (= (-> event param 1) #t) (not (want-cross-airlock? self)))) (ja :group! (get-art-by-name (-> self draw art-group) "idle" art-joint-anim) :num! min) ) (and (-> self next-state) (= (-> self next-state name) 'open)) ) ((= v1-0 'open) (set! (-> self latch-open-time) (+ (-> self clock frame-counter) (if (>= arg1 1) - (the-as int (-> arg3 param 0)) + (the-as int (-> event param 0)) 3000 ) ) ) - (if (and (>= arg1 2) (and (= (-> arg3 param 1) #t) (want-cross-airlock? self) (destination-loaded? self #f))) + (if (and (>= arg1 2) (and (= (-> event param 1) #t) (want-cross-airlock? self) (destination-loaded? self #f))) (ja :group! (get-art-by-name (-> self draw art-group) "idle" art-joint-anim) :num! (identity (the float (+ (-> (get-art-by-name (-> self draw art-group) "idle" art-joint-anim) frames num-frames) -1)) @@ -441,7 +441,7 @@ ) ((= v1-0 'sound) (if (>= (check-crossing-distance self (target-pos 0) #f) 0.0) - (play-city-voice-sound self (the-as symbol (-> arg3 param 0))) + (play-city-voice-sound self (the-as symbol (-> event param 0))) ) ) ((= v1-0 'distance) @@ -880,7 +880,7 @@ (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (let ((v1-13 (-> s5-0 root-prim))) (set! (-> s5-0 backup-collide-as) (-> v1-13 prim-core collide-as)) - (set! (-> s5-0 backup-collde-with) (-> v1-13 prim-core collide-with)) + (set! (-> s5-0 backup-collide-with) (-> v1-13 prim-core collide-with)) ) (set! (-> obj root-override) s5-0) ) @@ -944,7 +944,7 @@ (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (let ((v1-13 (-> s5-0 root-prim))) (set! (-> s5-0 backup-collide-as) (-> v1-13 prim-core collide-as)) - (set! (-> s5-0 backup-collde-with) (-> v1-13 prim-core collide-with)) + (set! (-> s5-0 backup-collide-with) (-> v1-13 prim-core collide-with)) ) (set! (-> obj root-override) s5-0) ) @@ -1033,7 +1033,7 @@ (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (let ((v1-13 (-> s5-0 root-prim))) (set! (-> s5-0 backup-collide-as) (-> v1-13 prim-core collide-as)) - (set! (-> s5-0 backup-collde-with) (-> v1-13 prim-core collide-with)) + (set! (-> s5-0 backup-collide-with) (-> v1-13 prim-core collide-with)) ) (set! (-> obj root-override) s5-0) ) @@ -1106,7 +1106,7 @@ (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (let ((v1-13 (-> s5-0 root-prim))) (set! (-> s5-0 backup-collide-as) (-> v1-13 prim-core collide-as)) - (set! (-> s5-0 backup-collde-with) (-> v1-13 prim-core collide-with)) + (set! (-> s5-0 backup-collide-with) (-> v1-13 prim-core collide-with)) ) (set! (-> obj root-override) s5-0) ) @@ -1168,7 +1168,7 @@ (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (let ((v1-5 (-> s5-0 root-prim))) (set! (-> s5-0 backup-collide-as) (-> v1-5 prim-core collide-as)) - (set! (-> s5-0 backup-collde-with) (-> v1-5 prim-core collide-with)) + (set! (-> s5-0 backup-collide-with) (-> v1-5 prim-core collide-with)) ) (set! (-> obj root-override) s5-0) ) @@ -1251,7 +1251,7 @@ (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (let ((v1-13 (-> s5-0 root-prim))) (set! (-> s5-0 backup-collide-as) (-> v1-13 prim-core collide-as)) - (set! (-> s5-0 backup-collde-with) (-> v1-13 prim-core collide-with)) + (set! (-> s5-0 backup-collide-with) (-> v1-13 prim-core collide-with)) ) (set! (-> obj root-override) s5-0) ) @@ -1325,7 +1325,7 @@ (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (let ((v1-13 (-> s5-0 root-prim))) (set! (-> s5-0 backup-collide-as) (-> v1-13 prim-core collide-as)) - (set! (-> s5-0 backup-collde-with) (-> v1-13 prim-core collide-with)) + (set! (-> s5-0 backup-collide-with) (-> v1-13 prim-core collide-with)) ) (set! (-> obj root-override) s5-0) ) @@ -1399,7 +1399,7 @@ (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (let ((v1-13 (-> s5-0 root-prim))) (set! (-> s5-0 backup-collide-as) (-> v1-13 prim-core collide-as)) - (set! (-> s5-0 backup-collde-with) (-> v1-13 prim-core collide-with)) + (set! (-> s5-0 backup-collide-with) (-> v1-13 prim-core collide-with)) ) (set! (-> obj root-override) s5-0) ) @@ -1473,7 +1473,7 @@ (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (let ((v1-13 (-> s5-0 root-prim))) (set! (-> s5-0 backup-collide-as) (-> v1-13 prim-core collide-as)) - (set! (-> s5-0 backup-collde-with) (-> v1-13 prim-core collide-with)) + (set! (-> s5-0 backup-collide-with) (-> v1-13 prim-core collide-with)) ) (set! (-> obj root-override) s5-0) ) diff --git a/goal_src/jak2/levels/common/elec-gate.gc b/goal_src/jak2/levels/common/elec-gate.gc index a9173ff16b..5c233dede1 100644 --- a/goal_src/jak2/levels/common/elec-gate.gc +++ b/goal_src/jak2/levels/common/elec-gate.gc @@ -7,3 +7,1037 @@ ;; DECOMP BEGINS +(deftype elec-gate-params (structure) + ((bolt-spec lightning-spec :offset-assert 0) + (ring-spec lightning-spec :offset-assert 4) + (ring-radius-min float :offset-assert 8) + (ring-radius-max float :offset-assert 12) + (speed-mult float :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) + + +(deftype elec-gate-bolt (structure) + ((ring lightning-control 2 :offset-assert 0) + (bolt lightning-control :offset-assert 8) + (ring-radius float :offset-assert 12) + (pos float :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) + + +(deftype elec-wall (structure) + ((pos vector :inline :offset-assert 0) + (dir vector :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + + +(deftype elec-gate (process-drawable) + ((params elec-gate-params :offset-assert 200) + (path-l path-control :offset 152) + (path-r path-control :offset-assert 204) + (l-bolt elec-gate-bolt 5 :inline :offset-assert 208) + (part-on sparticle-launch-control :offset 168) + (part-off sparticle-launch-control :offset-assert 368) + (part-spawner-left part-spawner :offset-assert 372) + (part-spawner-right part-spawner :offset-assert 376) + (on-start basic :offset-assert 380) + (on-stop basic :offset-assert 384) + (dividing-wall elec-wall :inline :offset-assert 400) + (plane elec-wall 2 :inline :offset-assert 432) + (wall-y float :offset-assert 496) + (wall-xz float :offset-assert 500) + (lightning-quality float :offset-assert 504) + (quality-enabled? symbol :offset-assert 508) + ) + :heap-base #x180 + :method-count-assert 30 + :size-assert #x200 + :flag-assert #x1e01800200 + (:methods + (idle () _type_ :state 20) + (active () _type_ :state 21) + (shutdown () _type_ :state 22) + (get-params (_type_) elec-gate-params 23) + (elec-gate-method-24 (_type_) none 24) + (set-palette! (_type_) none 25) + (set-state! (_type_) none 26) + (spawn-particles (_type_ sparticle-launch-control) none 27) + (set-elec-scale-if-close! (_type_ float) none 28) + (set-elec-scale! (_type_ float) none 29) + ) + ) + + +(define *default-elec-gate-params* (new 'static 'elec-gate-params + :bolt-spec (new 'static 'lightning-spec + :name #f + :flags (lightning-spec-flags lsf2) + :start-color #x80ffffff + :end-color #x80000000 + :fade-to-color #x58f00bf + :fade-start-factor 0.2 + :fade-time 120.0 + :texture #xc08300 + :reduction 0.42 + :num-points 16 + :box-size 8601.6 + :merge-factor 0.5 + :merge-count 2 + :radius 4096.0 + :duration -1.0 + :sound #f + ) + :ring-spec (new 'static 'lightning-spec + :name #f + :flags (lightning-spec-flags lsf2) + :rand-func #x3 + :start-color #x80ffffff + :end-color #x80ffffff + :fade-to-color #x58f00bf + :fade-start-factor 0.2 + :fade-time 120.0 + :texture #xc08300 + :reduction 0.42 + :num-points 12 + :box-size 3072.0 + :merge-factor 0.5 + :radius 2048.0 + :duration -1.0 + :sound #f + ) + :ring-radius-min 1638.4 + :ring-radius-max 2867.2 + :speed-mult 1.0 + ) + ) + +(defbehavior elec-gate-post elec-gate () + (local-vars (curr-bolt elec-gate-bolt) (curr-point int)) + (let ((num-points (-> self params ring-spec num-points))) + (dotimes (bolt-idx 5) + (set! curr-bolt (-> self l-bolt bolt-idx)) + (let ((s4-0 + (get-point-at-percent-along-path! (-> self path) (new 'stack-no-clear 'vector) (-> curr-bolt pos) 'interp) + ) + (s3-0 + (get-point-at-percent-along-path! (-> self path-r) (new 'stack-no-clear 'vector) (-> curr-bolt pos) 'interp) + ) + ) + (let ((a0-2 (-> curr-bolt bolt)) + (v1-10 s4-0) + ) + (set! (-> a0-2 state meet data 0 quad) (-> v1-10 quad)) + ) + (let ((a0-5 (-> curr-bolt bolt)) + (v1-13 s3-0) + ) + (set! (-> a0-5 state meet data (+ (-> a0-5 state points-to-draw) -1) quad) (-> v1-13 quad)) + ) + (let ((s2-0 (-> curr-bolt ring 0)) + (s1-0 (-> curr-bolt ring 1)) + (s0-0 (new 'stack-no-clear 'vector)) + ) + (set! (-> s0-0 x) 0.0) + (set! (-> s0-0 y) 0.0) + (set! (-> s0-0 z) (-> curr-bolt ring-radius)) + (set! (-> s0-0 w) 0.0) + (let ((f30-0 (* 65536.0 (/ 1.0 (the float (+ num-points -1)))))) + (set! curr-point 0) + (while (< curr-point num-points) + (set-point! s2-0 curr-point (vector+! (new 'stack-no-clear 'vector) s4-0 s0-0)) + (set-point! s1-0 curr-point (vector+! (new 'stack-no-clear 'vector) s3-0 s0-0)) + (vector-rotate-y! s0-0 s0-0 f30-0) + (set! curr-point (+ curr-point 1)) + ) + ) + ) + ) + ) + ) + (debug-draw (-> self path)) + (debug-draw (-> self path-r)) + (none) + ) + +(defstate idle (elec-gate) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('trigger) + (go-virtual active) + ) + ) + ) + :enter (behavior () + (process-entity-status! self (entity-perm-status subtask-complete) #t) + (dotimes (bolt-idx 5) + (let* ((bolt (-> self l-bolt bolt-idx bolt)) + (mode (lightning-mode lm0)) + (mode-diff? (!= mode (-> bolt state mode))) + ) + (case mode + (((lightning-mode lm3)) + (if mode-diff? + (set! (-> bolt state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> bolt state start-color) (-> bolt spec start-color)) + (set! (-> bolt state end-color) (-> bolt spec end-color)) + ) + ) + (set! (-> bolt state mode) mode) + (let ((first-ring (-> self l-bolt bolt-idx ring 0))) + (set! mode (lightning-mode lm0)) + (set! mode-diff? (!= mode (-> first-ring state mode))) + (case mode + (((lightning-mode lm3)) + (if mode-diff? + (set! (-> first-ring state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> first-ring state start-color) (-> first-ring spec start-color)) + (set! (-> first-ring state end-color) (-> first-ring spec end-color)) + ) + ) + (set! (-> first-ring state mode) mode) + ) + (let ((second-ring (-> self l-bolt bolt-idx ring 1))) + (set! mode (lightning-mode lm0)) + (set! mode-diff? (!= mode (-> second-ring state mode))) + (case mode + (((lightning-mode lm3)) + (if mode-diff? + (set! (-> second-ring state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> second-ring state start-color) (-> second-ring spec start-color)) + (set! (-> second-ring state end-color) (-> second-ring spec end-color)) + ) + ) + (set! (-> second-ring state mode) mode) + ) + ) + ) + (none) + ) + :code (the-as (function none :behavior elec-gate) sleep-code) + :post (behavior () + (set-elec-scale-if-close! self 0.0) + (if (nonzero? (-> self part-off)) + (spawn-particles self (-> self part-off)) + ) + (none) + ) + ) + +(defstate active (elec-gate) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('shutdown) + (go-virtual shutdown) + ) + ) + ) + :enter (behavior () + (process-entity-status! self (entity-perm-status subtask-complete) #f) + (if (-> self on-start) + (eval! + (new 'stack 'script-context (the-as basic (process->ppointer self)) self (-> self root trans)) + (the-as pair (-> self on-start)) + ) + ) + (dotimes (bolt-idx 5) + (let* ((curr-bolt (-> self l-bolt bolt-idx bolt)) + (mode (lightning-mode lm1)) + (mode-diff? (!= mode (-> curr-bolt state mode))) + ) + (case mode + (((lightning-mode lm3)) + (if mode-diff? + (set! (-> curr-bolt state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> curr-bolt state start-color) (-> curr-bolt spec start-color)) + (set! (-> curr-bolt state end-color) (-> curr-bolt spec end-color)) + ) + ) + (set! (-> curr-bolt state mode) mode) + (let ((first-ring (-> self l-bolt bolt-idx ring 0))) + (set! mode (lightning-mode lm1)) + (set! mode-diff? (!= mode (-> first-ring state mode))) + (case mode + (((lightning-mode lm3)) + (if mode-diff? + (set! (-> first-ring state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> first-ring state start-color) (-> first-ring spec start-color)) + (set! (-> first-ring state end-color) (-> first-ring spec end-color)) + ) + ) + (set! (-> first-ring state mode) mode) + ) + (let ((second-ring (-> self l-bolt bolt-idx ring 1))) + (set! mode (lightning-mode lm1)) + (set! mode-diff? (!= mode (-> second-ring state mode))) + (case mode + (((lightning-mode lm3)) + (if mode-diff? + (set! (-> second-ring state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> second-ring state start-color) (-> second-ring spec start-color)) + (set! (-> second-ring state end-color) (-> second-ring spec end-color)) + ) + ) + (set! (-> second-ring state mode) mode) + ) + ) + ) + (let ((vec-pair (new 'stack-no-clear 'inline-array 'vector 2))) + (dotimes (vec-idx 2) + (set! (-> vec-pair vec-idx quad) (the-as uint128 0)) + ) + (let ((s5-0 (new 'stack-no-clear 'vector))) + 0.0 + (get-point-in-path! (-> self path) (-> vec-pair 0) 0.0 'interp) + (get-point-in-path! (-> self path-r) (-> vec-pair 1) 0.0 'interp) + (vector-! s5-0 (-> vec-pair 1) (-> vec-pair 0)) + (vector-normalize! s5-0 8192.0) + (vector+! (-> vec-pair 1) (-> vec-pair 1) s5-0) + (vector-negate! s5-0 s5-0) + (vector+! (-> vec-pair 0) (-> vec-pair 0) s5-0) + (vector-normalize-copy! s5-0 *up-vector* -8192.0) + (vector+! (-> vec-pair 0) (-> vec-pair 0) s5-0) + (vector+! (-> vec-pair 1) (-> vec-pair 1) s5-0) + ) + (let ((f0-6 + (+ (- 81920.0 (-> (get-point-in-path! (-> self path) (new 'stack-no-clear 'vector) 0.0 'interp) y)) + (-> (get-point-in-path! (-> self path) (new 'stack-no-clear 'vector) (get-num-segments (-> self path)) 'interp) + y + ) + ) + ) + ) + (blocking-plane-spawn (the-as curve-control #f) vec-pair f0-6) + ) + ) + (none) + ) + :trans (behavior () + (local-vars + (sv-176 (function lightning-spec time-frame symbol process-drawable vector vector none)) + (sv-192 lightning-spec) + (sv-208 int) + (sv-224 symbol) + (sv-240 symbol) + (sv-256 lightning-spec) + (sv-272 int) + (sv-288 symbol) + (sv-304 symbol) + ) + (let* ((target *target*) + (proc-focus (if (type? target process-focusable) + target + ) + ) + ) + (when proc-focus + (let ((focus-trans (get-trans proc-focus 0))) + (let* ((a0-3 (vector-! (new 'stack-no-clear 'vector) focus-trans (the-as vector (-> self dividing-wall)))) + (s4-0 (-> self plane (if (< 0.0 (vector-dot a0-3 (-> self dividing-wall dir))) + 0 + 1 + ) + ) + ) + (s3-1 (vector-! (new 'stack-no-clear 'vector) focus-trans (-> s4-0 pos))) + ) + (when (and (< (vector-dot (vector-normalize-copy! (new 'stack-no-clear 'vector) s3-1 1.0) (-> s4-0 dir)) 0.0) + (let ((v1-13 s3-1)) + (< (sqrtf (+ (* (-> v1-13 x) (-> v1-13 x)) (* (-> v1-13 z) (-> v1-13 z)))) (-> self wall-xz)) + ) + (< (fabs (-> s3-1 y)) (-> self wall-y)) + ) + (let ((evt (new 'stack-no-clear 'event-message-block))) + (set! (-> evt from) (process->ppointer self)) + (set! (-> evt num-params) 2) + (set! (-> evt message) 'attack) + (set! (-> evt param 0) (the-as uint #f)) + (let ((attack (new 'static 'attack-info :mask (attack-info-mask vector shove-back shove-up control id)))) + (let* ((game-info *game-info*) + (attack-id (+ (-> game-info attack-id) 1)) + ) + (set! (-> game-info attack-id) attack-id) + (set! (-> attack id) attack-id) + ) + (set! (-> attack vector quad) (-> s4-0 dir quad)) + (set! (-> attack shove-back) 24576.0) + (set! (-> attack shove-up) 12288.0) + (set! (-> attack control) (if (logtest? (focus-status board) (-> proc-focus focus-status)) + 1.0 + 0.0 + ) + ) + (set! (-> evt param 1) (the-as uint attack)) + ) + (send-event-function proc-focus evt) + ) + (let* ((s4-1 (-> self l-bolt)) + (s3-2 (get-point-at-percent-along-path! (-> self path) (new 'stack-no-clear 'vector) (-> s4-1 0 pos) 'interp)) + (s4-2 + (get-point-at-percent-along-path! (-> self path-r) (new 'stack-no-clear 'vector) (-> s4-1 0 pos) 'interp) + ) + ) + (let ((s2-0 (get-process *default-dead-pool* lightning-tracker #x4000))) + (when s2-0 + (let ((t9-7 (method-of-type lightning-tracker activate))) + (t9-7 + (the-as lightning-tracker s2-0) + *entity-pool* + (symbol->string (-> lightning-tracker symbol)) + (the-as pointer #x70004000) + ) + ) + (let ((s1-0 run-function-in-process) + (s0-0 s2-0) + ) + (set! sv-176 lightning-tracker-init) + (set! sv-192 (-> self params bolt-spec)) + (set! sv-208 15) + (set! sv-224 (the-as symbol #f)) + (set! sv-240 (the-as symbol #f)) + (let ((t3-0 (get-trans proc-focus 3))) + ((the-as (function object object object object object object object object none) s1-0) + s0-0 + sv-176 + sv-192 + sv-208 + sv-224 + sv-240 + s3-2 + t3-0 + ) + ) + ) + (-> s2-0 ppointer) + ) + ) + (let ((s3-3 (get-process *default-dead-pool* lightning-tracker #x4000))) + (when s3-3 + (let ((t9-11 (method-of-type lightning-tracker activate))) + (t9-11 + (the-as lightning-tracker s3-3) + *entity-pool* + (symbol->string (-> lightning-tracker symbol)) + (the-as pointer #x70004000) + ) + ) + (let ((s2-1 run-function-in-process) + (s1-1 s3-3) + (s0-1 lightning-tracker-init) + ) + (set! sv-256 (-> self params bolt-spec)) + (set! sv-272 15) + (set! sv-288 (the-as symbol #f)) + (set! sv-304 (the-as symbol #f)) + (let ((t3-1 (get-trans proc-focus 3))) + ((the-as (function object object object object object object object object none) s2-1) + s1-1 + s0-1 + sv-256 + sv-272 + sv-288 + sv-304 + s4-2 + t3-1 + ) + ) + ) + (-> s3-3 ppointer) + ) + ) + ) + ) + ) + (set! (-> self lightning-quality) + (lerp-scale 0.0 1.0 (vector-vector-distance focus-trans (-> self root trans)) 491520.0 163840.0) + ) + ) + ) + ) + (let ((gp-2 (+ (the int (* 5.0 (-> self lightning-quality))) 1))) + (dotimes (bolt-idx 5) + (let ((s3-5 (-> self l-bolt bolt-idx)) + (s2-2 (-> self params)) + (s4-4 (if (and (-> self quality-enabled?) (zero? (mod bolt-idx gp-2))) + (lightning-mode lm0) + (lightning-mode lm-1) + ) + ) + ) + (seek! (-> s3-5 pos) 1.5 (* (-> s2-2 speed-mult) (+ 0.2 (-> s3-5 pos)) (-> self clock seconds-per-frame))) + (cond + ((>= (-> s3-5 pos) 1.5) + (let ((v1-59 (-> self l-bolt bolt-idx bolt)) + (a0-31 (logand s4-4 (lightning-mode lm1))) + ) + (let ((a1-19 (!= a0-31 (-> v1-59 state mode)))) + (case a0-31 + (((lightning-mode lm3)) + (if a1-19 + (set! (-> v1-59 state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> v1-59 state start-color) (-> v1-59 spec start-color)) + (set! (-> v1-59 state end-color) (-> v1-59 spec end-color)) + ) + ) + ) + (set! (-> v1-59 state mode) a0-31) + ) + (let ((v1-62 (-> self l-bolt bolt-idx ring 0)) + (a0-32 (logand s4-4 (lightning-mode lm1))) + ) + (let ((a1-29 (!= a0-32 (-> v1-62 state mode)))) + (case a0-32 + (((lightning-mode lm3)) + (if a1-29 + (set! (-> v1-62 state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> v1-62 state start-color) (-> v1-62 spec start-color)) + (set! (-> v1-62 state end-color) (-> v1-62 spec end-color)) + ) + ) + ) + (set! (-> v1-62 state mode) a0-32) + ) + (let ((v1-65 (-> self l-bolt bolt-idx ring 1)) + (a0-33 (logand s4-4 (lightning-mode lm1))) + ) + (let ((a1-39 (!= a0-33 (-> v1-65 state mode)))) + (case a0-33 + (((lightning-mode lm3)) + (if a1-39 + (set! (-> v1-65 state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> v1-65 state start-color) (-> v1-65 spec start-color)) + (set! (-> v1-65 state end-color) (-> v1-65 spec end-color)) + ) + ) + ) + (set! (-> v1-65 state mode) a0-33) + ) + (set! (-> s3-5 ring-radius) (rand-vu-float-range (-> s2-2 ring-radius-min) (-> s2-2 ring-radius-max))) + (set! (-> s3-5 pos) 0.0) + ) + ((>= (-> s3-5 pos) 1.0) + (let ((v1-69 (-> self l-bolt bolt-idx bolt)) + (a0-37 (logand (lightning-mode lm0) s4-4)) + ) + (let ((a1-50 (!= a0-37 (-> v1-69 state mode)))) + (case a0-37 + (((lightning-mode lm3)) + (if a1-50 + (set! (-> v1-69 state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> v1-69 state start-color) (-> v1-69 spec start-color)) + (set! (-> v1-69 state end-color) (-> v1-69 spec end-color)) + ) + ) + ) + (set! (-> v1-69 state mode) a0-37) + ) + (let ((v1-72 (-> self l-bolt bolt-idx ring 0)) + (a0-38 (logand (lightning-mode lm0) s4-4)) + ) + (let ((a1-60 (!= a0-38 (-> v1-72 state mode)))) + (case a0-38 + (((lightning-mode lm3)) + (if a1-60 + (set! (-> v1-72 state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> v1-72 state start-color) (-> v1-72 spec start-color)) + (set! (-> v1-72 state end-color) (-> v1-72 spec end-color)) + ) + ) + ) + (set! (-> v1-72 state mode) a0-38) + ) + (let ((v1-75 (-> self l-bolt bolt-idx ring 1)) + (a0-39 (logand (lightning-mode lm0) s4-4)) + ) + (let ((a1-70 (!= a0-39 (-> v1-75 state mode)))) + (case a0-39 + (((lightning-mode lm3)) + (if a1-70 + (set! (-> v1-75 state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> v1-75 state start-color) (-> v1-75 spec start-color)) + (set! (-> v1-75 state end-color) (-> v1-75 spec end-color)) + ) + ) + ) + (set! (-> v1-75 state mode) a0-39) + ) + ) + ) + ) + ) + ) + (none) + ) + :code (the-as (function none :behavior elec-gate) sleep-code) + :post (behavior () + (set-elec-scale-if-close! self 1.0) + (if (nonzero? (-> self part)) + (spawn-particles self (-> self part)) + ) + (update! (-> self sound)) + (elec-gate-post) + (none) + ) + ) + +(defstate shutdown (elec-gate) + :virtual #t + :enter (behavior () + (process-entity-status! self (entity-perm-status subtask-complete) #t) + (stop! (-> self sound)) + (sound-play "elec-gate-off") + (blocking-plane-destroy) + (if (-> self on-stop) + (eval! + (new 'stack 'script-context (the-as basic (process->ppointer self)) self (-> self root trans)) + (the-as pair (-> self on-stop)) + ) + ) + (none) + ) + :trans (behavior () + (let ((go-idle? #t)) + (dotimes (bolt-idx 5) + (let ((left-bolt-0 (-> self l-bolt bolt-idx))) + (seek! (-> left-bolt-0 pos) 0.0 (* (- 1.14 (-> left-bolt-0 pos)) (-> self clock seconds-per-frame))) + (set! go-idle? + (cond + ((or (< 1.0 (-> left-bolt-0 pos)) (>= 0.0 (-> left-bolt-0 pos))) + (let* ((left-bolt-1 (-> self l-bolt bolt-idx bolt)) + (mode (lightning-mode lm3)) + (mode-diff? (!= mode (-> left-bolt-1 state mode))) + ) + (case mode + (((lightning-mode lm3)) + (if mode-diff? + (set! (-> left-bolt-1 state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> left-bolt-1 state start-color) (-> left-bolt-1 spec start-color)) + (set! (-> left-bolt-1 state end-color) (-> left-bolt-1 spec end-color)) + ) + ) + (set! (-> left-bolt-1 state mode) mode) + (let ((left-bolt-first-ring (-> self l-bolt bolt-idx ring 0))) + (set! mode (lightning-mode lm3)) + (set! mode-diff? (!= mode (-> left-bolt-first-ring state mode))) + (case mode + (((lightning-mode lm3)) + (if mode-diff? + (set! (-> left-bolt-first-ring state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> left-bolt-first-ring state start-color) (-> left-bolt-first-ring spec start-color)) + (set! (-> left-bolt-first-ring state end-color) (-> left-bolt-first-ring spec end-color)) + ) + ) + (set! (-> left-bolt-first-ring state mode) mode) + ) + (let ((left-bolt-second-ring (-> self l-bolt bolt-idx ring 1))) + (set! mode (lightning-mode lm3)) + (set! mode-diff? (!= mode (-> left-bolt-second-ring state mode))) + (case mode + (((lightning-mode lm3)) + (if mode-diff? + (set! (-> left-bolt-second-ring state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> left-bolt-second-ring state start-color) (-> left-bolt-second-ring spec start-color)) + (set! (-> left-bolt-second-ring state end-color) (-> left-bolt-second-ring spec end-color)) + ) + ) + (set! (-> left-bolt-second-ring state mode) mode) + ) + ) + go-idle? + ) + (else + #f + ) + ) + ) + ) + ) + (if go-idle? + (go-virtual idle) + ) + ) + (none) + ) + :code (the-as (function none :behavior elec-gate) sleep-code) + :post (behavior () + (set-elec-scale-if-close! self 0.0) + (if (nonzero? (-> self part-off)) + (spawn-particles self (-> self part-off)) + ) + (elec-gate-post) + (none) + ) + ) + +(defmethod set-elec-scale-if-close! elec-gate ((obj elec-gate) (arg0 float)) + "If [[target]]'s position is within `80` [[meters]], set the scale to the value provided + @see [[elec-gate::29]]" + (if (< (vector-vector-distance (-> obj root trans) (target-pos 0)) 327680.0) + (set-elec-scale! obj arg0) + ) + 0 + (none) + ) + +(defmethod spawn-particles elec-gate ((obj elec-gate) (sparticle-lc sparticle-launch-control)) + "TODO - Calls [[sparticle-launch-control::11]] on `part-spawner-left` and `part-spawner-right` if they are defined" + (if (-> obj part-spawner-left) + (sparticle-launch-control-method-11 sparticle-lc (the-as vector (&-> (-> obj part-spawner-left child) 8))) + ) + (if (-> obj part-spawner-right) + (sparticle-launch-control-method-11 sparticle-lc (the-as vector (&-> (-> obj part-spawner-right child) 8))) + ) + 0 + (none) + ) + +;; WARN: Return type mismatch process-drawable vs elec-gate. +(defmethod relocate elec-gate ((obj elec-gate) (new-addr int)) + (dotimes (bolt-idx 5) + (let ((left-bolt (-> obj l-bolt bolt-idx))) + (if (nonzero? (-> left-bolt bolt)) + (&+! (-> left-bolt bolt) new-addr) + ) + (if (nonzero? (-> left-bolt ring 0)) + (&+! (-> left-bolt ring 0) new-addr) + ) + (if (nonzero? (-> left-bolt ring 1)) + (&+! (-> left-bolt ring 1) new-addr) + ) + ) + ) + (if (nonzero? (-> obj path-r)) + (&+! (-> obj path-r) new-addr) + ) + (when (nonzero? (-> obj part-off)) + (if (nonzero? (-> obj part-off)) + (&+! (-> obj part-off) new-addr) + ) + ) + (the-as elec-gate ((method-of-type process-drawable relocate) obj new-addr)) + ) + +(defmethod deactivate elec-gate ((obj elec-gate)) + (set-elec-scale-if-close! obj 0.0) + ((the-as (function process-drawable none) (find-parent-method elec-gate 10)) obj) + (none) + ) + +(defmethod get-params elec-gate ((obj elec-gate)) + "@returns [[*default-elec-gate-params*]] by default" + *default-elec-gate-params* + ) + +(defmethod elec-gate-method-24 elec-gate ((obj elec-gate)) + "virtual" + 0 + (none) + ) + +(defmethod set-palette! elec-gate ((obj elec-gate)) + "Sets the [[elec-gate]]'s `palette-id` appropriately" + 0 + (none) + ) + +(defmethod set-state! elec-gate ((obj elec-gate)) + "If either [[actor-option::17]] is set on the [[elec-gate]] or the related subtask is completed + make the gate `idle`. + + Otherwise, the gate will be `active`." + (if (or (logtest? (actor-option user17) (-> obj fact options)) + (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status subtask-complete))) + ) + (go (method-of-object obj idle)) + (go (method-of-object obj active)) + ) + 0 + (none) + ) + +(defmethod init-from-entity! elec-gate ((obj elec-gate) (arg0 entity-actor)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (set! (-> obj entity) arg0) + (set! (-> obj fact) + (new 'process 'fact-info obj (pickup-type eco-pill-random) (-> *FACT-bank* default-eco-pill-green-inc)) + ) + (set! (-> obj params) (get-params obj)) + (logclear! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj path) (new 'process 'path-control obj 'pathl 0.0 (the-as entity #f) #f)) + (logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text)) + (set! (-> obj path-r) (new 'process 'path-control obj 'pathr 0.0 (the-as entity #f) #f)) + (logior! (-> obj path-r flags) (path-control-flag display draw-line draw-point draw-text)) + (set! (-> obj part-spawner-left) (the-as part-spawner (entity-actor-lookup arg0 'alt-actor 0))) + (set! (-> obj part-spawner-right) (the-as part-spawner (entity-actor-lookup arg0 'alt-actor 1))) + (let ((params (-> obj params))) + (dotimes (bolt-idx 5) + (let ((left-bolt (-> obj l-bolt bolt-idx))) + (set! (-> left-bolt bolt) (new 'process 'lightning-control (-> params bolt-spec) obj 0.0)) + (set! (-> left-bolt ring 0) (new 'process 'lightning-control (-> params ring-spec) obj 0.0)) + (set! (-> left-bolt ring 1) (new 'process 'lightning-control (-> params ring-spec) obj 0.0)) + (set! (-> left-bolt ring-radius) + (rand-vu-float-range (-> params ring-radius-min) (-> params ring-radius-max)) + ) + (set! (-> left-bolt pos) (* 0.2 (the float bolt-idx))) + ) + ) + ) + (let* ((s4-1 (get-point-in-path! (-> obj path) (new 'stack-no-clear 'vector) 0.0 'interp)) + (v1-26 (get-point-in-path! (-> obj path-r) (new 'stack-no-clear 'vector) 0.0 'interp)) + (a1-15 (vector-! (new 'stack-no-clear 'vector) v1-26 s4-1)) + (s5-3 (vector+float*! (new 'stack-no-clear 'vector) s4-1 a1-15 0.5)) + (v1-28 (vector-normalize-copy! (new 'stack-no-clear 'vector) a1-15 1.0)) + ) + (vector-cross! v1-28 v1-28 *up-vector*) + (set! (-> obj dividing-wall pos quad) (-> s5-3 quad)) + (set! (-> obj dividing-wall dir quad) (-> v1-28 quad)) + (vector+float*! (the-as vector (-> obj plane)) s5-3 v1-28 12288.0) + (set! (-> (the-as vector (&-> obj stack 320)) quad) (-> v1-28 quad)) + (vector-float*! v1-28 v1-28 -1.0) + (vector+float*! (the-as vector (&-> obj stack 336)) s5-3 v1-28 12288.0) + (set! (-> (the-as vector (&-> obj stack 352)) quad) (-> v1-28 quad)) + ) + (set! (-> obj wall-xz) + (vector-vector-distance + (get-point-in-path! (-> obj path) (new 'stack-no-clear 'vector) 0.0 'interp) + (get-point-in-path! (-> obj path-r) (new 'stack-no-clear 'vector) 0.0 'interp) + ) + ) + (set! (-> obj wall-xz) (* 0.5 (-> obj wall-xz))) + (set! (-> obj wall-xz) (+ 4096.0 (-> obj wall-xz))) + (set! (-> obj wall-y) + (fabs + (- (-> (get-point-in-path! (-> obj path) (new 'stack-no-clear 'vector) (get-num-segments (-> obj path)) 'interp) + y + ) + (-> (get-point-in-path! (-> obj path) (new 'stack-no-clear 'vector) 0.0 'interp) y) + ) + ) + ) + (set! (-> obj wall-y) (+ 4096.0 (-> obj wall-y))) + (set! (-> obj quality-enabled?) #t) + (set! (-> obj lightning-quality) 1.0) + (set! (-> obj sound) + (new 'process 'ambient-sound (static-sound-spec "electric-gate" :fo-max 70) (-> obj root trans)) + ) + (set! (-> obj on-start) (res-lump-struct (-> obj entity) 'on-start basic)) + (set! (-> obj on-stop) (res-lump-struct (-> obj entity) 'on-stop basic)) + (elec-gate-method-24 obj) + (set-palette! obj) + (set-state! obj) + (none) + ) + +(deftype fort-elec-gate (elec-gate) + ((palette-id int32 :offset-assert 512) + ) + :heap-base #x190 + :method-count-assert 30 + :size-assert #x204 + :flag-assert #x1e01900204 + ) + + +(defmethod set-elec-scale! fort-elec-gate ((obj fort-elec-gate) (scale float)) + "Calls associated mood functions to set the scale with the value provided + @see mood-funcs + @see mood-funcs2" + (set-fordumpa-electricity-scale! scale) + (set-forresca-electricity-scale! scale (-> obj palette-id)) + (set-forrescb-electricity-scale! scale (-> obj palette-id)) + 0 + (none) + ) + +(defmethod set-palette! fort-elec-gate ((obj fort-elec-gate)) + "Sets the [[elec-gate]]'s `palette-id` appropriately" + (set! (-> obj palette-id) (res-lump-value (-> obj entity) 'extra-id int :time -1000000000.0)) + 0 + (none) + ) + +(deftype drill-elec-gate (elec-gate) + ((palette-id int32 :offset-assert 512) + ) + :heap-base #x190 + :method-count-assert 30 + :size-assert #x204 + :flag-assert #x1e01900204 + ) + + +(defmethod set-elec-scale! drill-elec-gate ((obj drill-elec-gate) (arg0 float)) + "Calls associated mood functions to set the scale with the value provided + @see mood-funcs + @see mood-funcs2" + (set-drill-electricity-scale! arg0 (-> obj palette-id)) + 0 + (none) + ) + +(defmethod set-palette! drill-elec-gate ((obj drill-elec-gate)) + "Sets the [[elec-gate]]'s `palette-id` appropriately" + (set! (-> obj palette-id) (res-lump-value (-> obj entity) 'extra-id int :time -1000000000.0)) + 0 + (none) + ) + +(deftype caspad-elec-gate (elec-gate) + () + :heap-base #x180 + :method-count-assert 30 + :size-assert #x200 + :flag-assert #x1e01800200 + ) + + +(deftype castle-elec-gate (elec-gate) + () + :heap-base #x180 + :method-count-assert 30 + :size-assert #x200 + :flag-assert #x1e01800200 + ) + + +(defmethod set-elec-scale! castle-elec-gate ((obj castle-elec-gate) (arg0 float)) + "Calls associated mood functions to set the scale with the value provided + @see mood-funcs + @see mood-funcs2" + (set-castle-electricity-scale! arg0) + 0 + (none) + ) + +(define *caspad-elec-gate-params* (new 'static 'elec-gate-params + :bolt-spec (new 'static 'lightning-spec + :name #f + :flags (lightning-spec-flags lsf2) + :start-color #x80ffffff + :end-color #x80000000 + :fade-to-color #x58f00bf + :fade-start-factor 0.2 + :fade-time 120.0 + :texture #xc08300 + :reduction 0.42 + :num-points 16 + :box-size 16793.6 + :merge-factor 0.5 + :merge-count 2 + :radius 18841.6 + :duration -1.0 + :sound #f + ) + :ring-spec (new 'static 'lightning-spec + :name #f + :flags (lightning-spec-flags lsf2) + :rand-func #x3 + :start-color #x80ffffff + :end-color #x80ffffff + :fade-to-color #x58f00bf + :fade-start-factor 0.2 + :fade-time 120.0 + :texture #xc08300 + :reduction 0.42 + :num-points 12 + :box-size 17408.0 + :merge-factor 0.5 + :merge-count 2 + :radius 17612.8 + :duration -1.0 + :sound #f + ) + :ring-radius-min 40960.0 + :ring-radius-max 53248.0 + :speed-mult 0.3 + ) + ) + +(defmethod get-params caspad-elec-gate ((obj caspad-elec-gate)) + "@returns [[*default-elec-gate-params*]] by default" + *caspad-elec-gate-params* + ) + +(deftype palroof-elec-gate (elec-gate) + ((palette-id int32 :offset-assert 512) + ) + :heap-base #x190 + :method-count-assert 30 + :size-assert #x204 + :flag-assert #x1e01900204 + ) + + +(defmethod set-elec-scale! palroof-elec-gate ((obj palroof-elec-gate) (arg0 float)) + "Calls associated mood functions to set the scale with the value provided + @see mood-funcs + @see mood-funcs2" + (set-palroof-electricity-scale! arg0 (-> obj palette-id)) + 0 + (none) + ) + +(defmethod set-palette! palroof-elec-gate ((obj palroof-elec-gate)) + "Sets the [[elec-gate]]'s `palette-id` appropriately" + (set! (-> obj palette-id) (res-lump-value (-> obj entity) 'extra-id int :time -1000000000.0)) + 0 + (none) + ) diff --git a/goal_src/jak2/levels/common/enemy/bouncer.gc b/goal_src/jak2/levels/common/enemy/bouncer.gc index a16fa61c52..4468d7ee4d 100644 --- a/goal_src/jak2/levels/common/enemy/bouncer.gc +++ b/goal_src/jak2/levels/common/enemy/bouncer.gc @@ -7,3 +7,251 @@ ;; DECOMP BEGINS +(deftype bouncer (process-drawable) + ((spring-height meters :offset-assert 200) + (smush float :offset-assert 204) + (mods basic :offset-assert 208) + ) + :heap-base #x60 + :method-count-assert 25 + :size-assert #xd4 + :flag-assert #x19006000d4 + (:methods + (idle () _type_ :state 20) + (fire () _type_ :state 21) + (smush () _type_ :state 22) + (init-skeleton! (_type_) none 23) + (bouncer-method-24 (_type_) none 24) + ) + ) + + +(method-set! bouncer 12 (method-of-type process run-logic?)) + +(let ((a0-3 (new 'static 'skeleton-group + :name "skel-bouncer" + :extra #f + :info #f + :art-group-name "bounceytarp" + :bounds (new 'static 'vector :w 16384.0) + :version #x7 + ) + ) + ) + (set! (-> a0-3 jgeo) 0) + (set! (-> a0-3 janim) 2) + (set! (-> a0-3 mgeo 0) 1) + (set! (-> a0-3 lod-dist 0) 4095996000.0) + (add-to-loading-level a0-3) + ) + +(defstate idle (bouncer) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((evt-type event-type)) + (the-as + object + (cond + ((= evt-type 'bonk) + (when ((method-of-type touching-shapes-entry touching-shapes-entry-method-12) + (the-as touching-shapes-entry (-> event param 0)) + (the-as collide-shape (-> self root)) + (the-as uint 1) + ) + (when (send-event proc 'jump (-> self spring-height) (-> self spring-height) (-> self mods)) + (sound-play "trampoline") + (go-virtual fire) + ) + ) + ) + ((= evt-type 'touch) + (let ((gp-2 (-> event param 0))) + (cond + (((method-of-type touching-shapes-entry touching-shapes-entry-method-13) + (the-as touching-shapes-entry gp-2) + (the-as collide-shape (-> self root)) + (the-as uint 1) + (the-as uint 0) + ) + (when ((method-of-type touching-shapes-entry touching-shapes-entry-method-12) + (the-as touching-shapes-entry gp-2) + (the-as collide-shape (-> self root)) + (the-as uint 1) + ) + (if (not (and (-> self next-state) (let ((v1-21 (-> self next-state name))) + (or (= v1-21 'smush) (= v1-21 'fire)) + ) + ) + ) + (go-virtual smush) + ) + ) + ) + (((method-of-type touching-shapes-entry touching-shapes-entry-method-12) + (the-as touching-shapes-entry gp-2) + (the-as collide-shape (-> self root)) + (the-as uint 4) + ) + (persist-with-delay + *setting-control* + (the-as symbol (process->ppointer self)) + (seconds 0.05) + 'double-jump + #f + 0.0 + 0 + ) + ) + ) + ) + ) + ((= evt-type 'attack) + (let ((v1-28 (the-as object (-> event param 1))) + (a0-17 (-> event param 0)) + (a2-7 0) + ) + (cond + ((= (-> (the-as attack-info v1-28) mode) 'flop) + (set! a2-7 1) + ) + ((= (-> (the-as attack-info v1-28) mode) 'board) + (set! a2-7 9) + ) + ) + (when (and (nonzero? a2-7) + (and ((method-of-type touching-shapes-entry touching-shapes-entry-method-12) + (the-as touching-shapes-entry a0-17) + (the-as collide-shape (-> self root)) + (the-as uint a2-7) + ) + (send-event proc 'jump (-> self spring-height) (-> self spring-height) (-> self mods)) + ) + ) + (sound-play "trampoline") + (go-virtual fire) + #f + ) + ) + ) + ) + ) + ) + ) + :code (behavior () + (ja :group! (get-art-by-name (-> self draw art-group) "idle" art-joint-anim) :num! min) + (transform-post) + (until #f + (logior! (-> self mask) (process-mask sleep)) + (suspend) + ) + #f + (none) + ) + ) + +(defstate smush (bouncer) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('touch) + (set! (-> self state-time) (-> self clock frame-counter)) + #f + ) + (else + ((-> (method-of-object self idle) event) proc arg1 event-type event) + ) + ) + ) + :code (behavior () + (set! (-> self state-time) (-> self clock frame-counter)) + (set! (-> self smush) 0.0) + (until #f + (if (>= (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.2)) + (ja :num! (seek! 0.0 0.1)) + (ja :num! (seek! + (lerp-scale + (ja-aframe 6.0 0) + (ja-aframe 2.0 0) + (vector-vector-xz-distance (target-pos 0) (-> self root trans)) + 0.0 + 4096.0 + ) + 0.2 + ) + ) + ) + (suspend) + (if (ja-min? 0) + (go-virtual idle) + ) + ) + #f + (none) + ) + :post (the-as (function none :behavior bouncer) transform-post) + ) + +(defstate fire (bouncer) + :virtual #t + :code (behavior () + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 178 (seconds 0.1)) + (ja-no-eval :group! (get-art-by-name (-> self draw art-group) "idle" art-joint-anim) + :num! (seek! + (the float (+ (-> (get-art-by-name (-> self draw art-group) "idle" art-joint-anim) frames num-frames) -1)) + ) + :frame-num (ja-aframe 6.0 0) + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + (go-virtual idle) + (none) + ) + :post (the-as (function none :behavior bouncer) transform-post) + ) + +(defmethod init-skeleton! bouncer ((obj bouncer)) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-bouncer" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + 0 + (none) + ) + +(defmethod bouncer-method-24 bouncer ((obj bouncer)) + "TODO - collision stuff" + (let ((collision-shape (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((collision-mesh (new 'process 'collide-shape-prim-mesh collision-shape (the-as uint 0) (the-as uint 0)))) + (set! (-> collision-mesh prim-core collide-as) (collide-spec crate)) + (set! (-> collision-mesh prim-core collide-with) (collide-spec jak player-list)) + (set! (-> collision-mesh prim-core action) (collide-action solid)) + (set! (-> collision-mesh transform-index) 0) + (set-vector! (-> collision-mesh local-sphere) 0.0 3072.0 0.0 6963.2) + (set! (-> collision-shape total-prims) (the-as uint 1)) + (set! (-> collision-shape root-prim) collision-mesh) + ) + (set! (-> collision-shape nav-radius) (* 0.75 (-> collision-shape root-prim local-sphere w))) + (let ((prim (-> collision-shape root-prim))) + (set! (-> collision-shape backup-collide-as) (-> prim prim-core collide-as)) + (set! (-> collision-shape backup-collide-with) (-> prim prim-core collide-with)) + ) + (set! (-> obj root) collision-shape) + ) + 0 + (none) + ) + +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! bouncer ((obj bouncer) (arg0 entity-actor)) + (set! (-> obj mods) #f) + (bouncer-method-24 obj) + (process-drawable-from-entity! obj arg0) + (init-skeleton! obj) + (nav-mesh-connect-from-ent (the-as entity-nav-mesh obj)) + (set! (-> obj spring-height) (res-lump-float arg0 'spring-height :default 45056.0)) + (go (method-of-object obj idle)) + (none) + ) diff --git a/goalc/make/MakeSystem.cpp b/goalc/make/MakeSystem.cpp index 0d0b5db421..aa29deaeb8 100644 --- a/goalc/make/MakeSystem.cpp +++ b/goalc/make/MakeSystem.cpp @@ -376,8 +376,7 @@ bool MakeSystem::make(const std::string& target_in, bool force, bool verbose) { lg::print("Error: {}\n", e.what()); } if (!success) { - lg::print("Build failed on {}{}.\n", rule->input.at(0), - rule->input.size() > 1 ? ", ..." : ""); + lg::print("Build failed on {}{}\n", rule->input.at(0), rule->input.size() > 1 ? ", ..." : ""); throw std::runtime_error("Build failed."); return false; } diff --git a/scripts/gsrc/utils.py b/scripts/gsrc/utils.py index 1361ef9252..b7f6c58644 100644 --- a/scripts/gsrc/utils.py +++ b/scripts/gsrc/utils.py @@ -48,5 +48,5 @@ def get_ref_path_from_filename(game_name, file_name, ref_folder): if src_path == "": print("couldn't determine ref path for {}:{}!".format(game_name, file_name)) exit(1) - path = "{}/{}/{}/{}_REF.gc".format(ref_folder, game_name, src_path, file_name) + path = os.path.join(ref_folder, game_name, src_path, "{}_REF.gc".format(file_name)) return path diff --git a/test/decompiler/reference/jak1/engine/ambient/ambient_REF.gc b/test/decompiler/reference/jak1/engine/ambient/ambient_REF.gc index 2198370975..dfd9cc6fc3 100644 --- a/test/decompiler/reference/jak1/engine/ambient/ambient_REF.gc +++ b/test/decompiler/reference/jak1/engine/ambient/ambient_REF.gc @@ -408,8 +408,8 @@ ;; failed to figure out what this is: (defstate level-hint-normal (level-hint) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'exit) (go level-hint-exit) @@ -468,8 +468,8 @@ ;; failed to figure out what this is: (defstate level-hint-sidekick (level-hint) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'exit) (when (nonzero? (-> self sound-id)) diff --git a/test/decompiler/reference/jak1/engine/camera/cam-combiner_REF.gc b/test/decompiler/reference/jak1/engine/camera/cam-combiner_REF.gc index 4e5940d44d..498de6bb8e 100644 --- a/test/decompiler/reference/jak1/engine/camera/cam-combiner_REF.gc +++ b/test/decompiler/reference/jak1/engine/camera/cam-combiner_REF.gc @@ -3,16 +3,16 @@ ;; failed to figure out what this is: (defstate cam-combiner-active (camera-combiner) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'point-of-interest) (cond - ((-> arg3 param 0) + ((-> event param 0) (set! (-> self tracking use-point-of-interest) #t) - (set! (-> self tracking point-of-interest quad) (-> (the-as vector (-> arg3 param 0)) quad)) + (set! (-> self tracking point-of-interest quad) (-> (the-as vector (-> event param 0)) quad)) (set! (-> self tracking point-of-interest-blend target) 1.0) ) (else @@ -23,7 +23,7 @@ ) ((= v1-0 'set-interpolation) (set! (-> self interp-val) 0.0) - (set! (-> self interp-step) (/ 5.0 (the float (-> arg3 param 0)))) + (set! (-> self interp-step) (/ 5.0 (the float (-> event param 0)))) ) ((= v1-0 'teleport) (when (nonzero? (-> self tracking-status)) @@ -48,28 +48,28 @@ (a0-15 0) (a1-3 "ERROR : missing camera-slave parameter to *camera-combiner* start-tracking~%") ) - (let ((v1-7 (-> arg3 param 0))) + (let ((v1-7 (-> event param 0))) (rtype-of v1-7) ) (t9-2 a0-15 a1-3) ) ) ((let ((t9-3 type-type?) - (v1-8 (-> arg3 param 0)) + (v1-8 (-> event param 0)) ) (not (t9-3 (rtype-of v1-8) camera-slave)) ) (let ((t9-4 format) (a0-18 0) (a1-5 "ERROR : invalid type '~A' to *camera-combiner* start-tracking~%") - (v1-10 (-> arg3 param 0)) + (v1-10 (-> event param 0)) ) (t9-4 a0-18 a1-5 (rtype-of v1-10)) ) ) ((zero? (-> self tracking-status)) (set! (-> self tracking-status) (the-as uint 1)) - (let ((gp-1 (the-as object (-> arg3 param 0)))) + (let ((gp-1 (the-as object (-> event param 0)))) (set! (-> self tracking-options) (the-as int (-> (the-as camera-slave gp-1) options))) (set! (-> self tracking no-follow) (-> (the-as camera-slave gp-1) tracking no-follow)) (copy-cam-float-seeker (-> self tracking tilt-adjust) (-> (the-as camera-slave gp-1) tracking tilt-adjust)) @@ -106,21 +106,21 @@ (a0-27 0) (a1-11 "ERROR : missing camera-slave parameter to *camera-combiner* copy-tracking~%") ) - (let ((v1-23 (-> arg3 param 0))) + (let ((v1-23 (-> event param 0))) (rtype-of v1-23) ) (t9-10 a0-27 a1-11) ) ) ((let ((t9-11 type-type?) - (v1-24 (-> arg3 param 0)) + (v1-24 (-> event param 0)) ) (not (t9-11 (rtype-of v1-24) camera-slave)) ) (let ((t9-12 format) (a0-30 0) (a1-13 "ERROR : invalid type '~A' to *camera-combiner* copy-tracking~%") - (v1-25 (-> arg3 param 0)) + (v1-25 (-> event param 0)) ) (t9-12 a0-30 a1-13 (rtype-of v1-25)) ) @@ -130,7 +130,7 @@ ) (else (set! (-> self tracking-status) (the-as uint 1)) - (let ((gp-3 (the-as camera-slave (-> arg3 param 0)))) + (let ((gp-3 (the-as camera-slave (-> event param 0)))) (set! (-> self tracking-options) (the-as int (-> gp-3 options))) (set! (-> self tracking no-follow) (-> gp-3 tracking no-follow)) (copy-cam-float-seeker (-> self tracking tilt-adjust) (-> gp-3 tracking tilt-adjust)) diff --git a/test/decompiler/reference/jak1/engine/camera/cam-states-dbg_REF.gc b/test/decompiler/reference/jak1/engine/camera/cam-states-dbg_REF.gc index df3b2cd1b2..4e3093732e 100644 --- a/test/decompiler/reference/jak1/engine/camera/cam-states-dbg_REF.gc +++ b/test/decompiler/reference/jak1/engine/camera/cam-states-dbg_REF.gc @@ -24,13 +24,13 @@ ;; failed to figure out what this is: (defstate cam-point-watch (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('teleport) #f ) (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -416,13 +416,13 @@ ;; failed to figure out what this is: (defstate cam-free-floating (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('teleport) #f ) (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -522,13 +522,13 @@ ;; failed to figure out what this is: (defstate cam-orbit (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('teleport) #f ) (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) diff --git a/test/decompiler/reference/jak1/engine/camera/cam-states_REF.gc b/test/decompiler/reference/jak1/engine/camera/cam-states_REF.gc index b25e2358e5..cea2b4852d 100644 --- a/test/decompiler/reference/jak1/engine/camera/cam-states_REF.gc +++ b/test/decompiler/reference/jak1/engine/camera/cam-states_REF.gc @@ -3,13 +3,13 @@ ;; failed to figure out what this is: (defstate cam-fixed (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('teleport) #f ) (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -42,13 +42,13 @@ ;; failed to figure out what this is: (defstate cam-fixed-read-entity (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('teleport) #f ) (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -86,13 +86,13 @@ ;; failed to figure out what this is: (defstate cam-pov (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('teleport) #f ) (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -146,13 +146,13 @@ ;; failed to figure out what this is: (defstate cam-pov180 (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('teleport) #f ) (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -289,10 +289,10 @@ ;; failed to figure out what this is: (defstate cam-standoff (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('set-standoff-dist) - (vector-normalize! (-> self pivot-pt) (the-as float (-> arg3 param 0))) + (vector-normalize! (-> self pivot-pt) (the-as float (-> event param 0))) (cam-standoff-calc-trans) ) (('set-standoff-height) @@ -301,12 +301,12 @@ (-> self pivot-pt) (-> self pivot-pt) (-> *camera* local-down) - (the-as float (-> arg3 param 0)) + (the-as float (-> event param 0)) ) (cam-standoff-calc-trans) ) (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -422,13 +422,13 @@ ;; failed to figure out what this is: (defstate cam-eye (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('teleport) #f ) (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -601,13 +601,13 @@ ;; failed to figure out what this is: (defstate cam-billy (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('teleport) #f ) (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -820,13 +820,13 @@ ;; failed to figure out what this is: (defstate cam-decel (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('teleport) #f ) (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -873,13 +873,13 @@ ;; failed to figure out what this is: (defstate cam-endlessfall (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('teleport) #f ) (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -1108,8 +1108,8 @@ ;; failed to figure out what this is: (defstate cam-circular (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('teleport) #f ) @@ -1118,7 +1118,7 @@ (cam-circular-position #f) ) (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -2824,8 +2824,8 @@ ;; failed to figure out what this is: (defstate cam-string (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('teleport) (let ((gp-0 (new-stack-vector0))) (cam-string-find-position-rel! gp-0) @@ -2833,8 +2833,8 @@ ) ) (('joystick) - (set! (-> self phony-joystick-x) (the-as float (-> arg3 param 0))) - (set! (-> self phony-joystick-y) (the-as float (-> arg3 param 1))) + (set! (-> self phony-joystick-x) (the-as float (-> event param 0))) + (set! (-> self phony-joystick-y) (the-as float (-> event param 1))) (let ((v0-1 (the-as object #t))) (set! (-> self have-phony-joystick) (the-as symbol v0-1)) v0-1 @@ -2842,10 +2842,10 @@ ) (('set-dist) (cond - ((-> arg3 param 0) + ((-> event param 0) (set! (-> self string-val-locked) #t) - (set! (-> self string-min-val quad) (-> (the-as vector (-> arg3 param 0)) quad)) - (set! (-> self string-max-val quad) (-> (the-as vector (-> arg3 param 1)) quad)) + (set! (-> self string-min-val quad) (-> (the-as vector (-> event param 0)) quad)) + (set! (-> self string-max-val quad) (-> (the-as vector (-> event param 1)) quad)) (set! (-> self string-max-val x) (fmax (-> self string-max-val x) (-> self string-min-val x))) (set! (-> self string-max-val y) (fmax (-> self string-max-val y) (-> self string-min-val y))) (set! (-> self string-max-val z) (fmax (-> self string-max-val z) (-> self string-min-val z))) @@ -2860,7 +2860,7 @@ (-> self los-state) ) (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) diff --git a/test/decompiler/reference/jak1/engine/camera/pov-camera_REF.gc b/test/decompiler/reference/jak1/engine/camera/pov-camera_REF.gc index c389a109ed..bf5c3dc9d6 100644 --- a/test/decompiler/reference/jak1/engine/camera/pov-camera_REF.gc +++ b/test/decompiler/reference/jak1/engine/camera/pov-camera_REF.gc @@ -82,8 +82,8 @@ ;; failed to figure out what this is: (defstate pov-camera-playing (pov-camera) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('abort) (when (logtest? (-> self flags) (pov-camera-flag notify-of-abort)) (logior! (-> self flags) (pov-camera-flag allow-abort)) diff --git a/test/decompiler/reference/jak1/engine/game/collectables_REF.gc b/test/decompiler/reference/jak1/engine/game/collectables_REF.gc index 0761f30b58..0d6888f9db 100644 --- a/test/decompiler/reference/jak1/engine/game/collectables_REF.gc +++ b/test/decompiler/reference/jak1/engine/game/collectables_REF.gc @@ -487,63 +487,63 @@ ;; failed to figure out what this is: (defstate wait (eco-collectable) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-3 none)) - (when (and (or (= arg2 'touch) (= arg2 'attack)) + (when (and (or (= event-type 'touch) (= event-type '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)) + (send-event proc 'get-pickup (-> self fact pickup-type) (-> self fact pickup-amount)) ) ) (logclear! (-> self mask) (process-mask actor-pause)) - (go-virtual pickup #f (process->handle arg0)) + (go-virtual pickup #f (process->handle proc)) ) (the-as object (cond - ((= arg2 'eco-blue) + ((= event-type 'eco-blue) (when (and (not (logtest? (-> self flags) (collectable-flags fading ignore-blue))) (!= (-> self next-state name) 'pickup) - (begin (check-blue-suck (the-as process-drawable arg0)) #t) + (begin (check-blue-suck (the-as process-drawable proc)) #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)) + (go-virtual notice-blue (process->handle proc)) ) ) - ((= arg2 'trans) - (set! (-> self root-override trans quad) (-> (the-as vector (-> arg3 param 0)) quad)) + ((= event-type 'trans) + (set! (-> self root-override trans quad) (-> (the-as vector (-> event param 0)) quad)) (update-transforms! (-> self root-override)) (ja-post) ) - ((= arg2 'jump) + ((= event-type 'jump) (logclear! (-> self mask) (process-mask actor-pause)) - (set! (-> self jump-pos quad) (-> (the-as vector (-> arg3 param 0)) quad)) + (set! (-> self jump-pos quad) (-> (the-as vector (-> event param 0)) quad)) (go-virtual jump) ) - ((= arg2 'pickup) + ((= event-type 'pickup) (when (!= (-> self next-state name) 'pickup) - (if (and (> arg1 0) (-> arg3 param 0)) - (move-to-point! (-> self root-override) (the-as vector (-> arg3 param 0))) + (if (and (> arg1 0) (-> event param 0)) + (move-to-point! (-> self root-override) (the-as vector (-> event param 0))) ) (logclear! (-> self mask) (process-mask actor-pause)) (go-virtual pickup #f (the-as handle #f)) ) ) - ((= arg2 'die) + ((= event-type 'die) (logclear! (-> self mask) (process-mask actor-pause)) (go-virtual die) ) - ((= arg2 'movie-pos) - (set! v0-3 (the-as none (-> arg3 param 0))) + ((= event-type 'movie-pos) + (set! v0-3 (the-as none (-> event param 0))) (set! (-> self movie-pos-index) (the-as int v0-3)) v0-3 ) - ((= arg2 'actor-pause) + ((= event-type 'actor-pause) (cond - ((-> arg3 param 0) + ((-> event 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)) @@ -556,7 +556,7 @@ ) ) ) - ((= arg2 'fade) + ((= event-type 'fade) (logior! (-> self flags) (collectable-flags fade)) (set! (-> self fadeout-timeout) (seconds 0.1)) (set! v0-3 (the-as none (-> *display* base-frame-counter))) @@ -661,16 +661,16 @@ ;; failed to figure out what this is: (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)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (when (and (or (= event-type 'touch) (= event-type '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)) + (send-event proc 'get-pickup (-> self fact pickup-type) (-> self fact pickup-amount)) ) ) (logclear! (-> self mask) (process-mask actor-pause)) - (go-virtual pickup #f (process->handle arg0)) + (go-virtual pickup #f (process->handle proc)) ) ) :enter (behavior ((arg0 handle)) @@ -732,15 +732,15 @@ ;; failed to figure out what this is: (defstate pickup (eco-collectable) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (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)) + (set! (-> v1-3 quad) (-> (the-as vector (-> event param 0)) quad)) (the-as symbol v1-3) ) ) @@ -748,7 +748,7 @@ ) ((= v1-0 'actor-pause) (the-as symbol (cond - ((-> arg3 param 0) + ((-> event param 0) (logior! (-> self mask) (process-mask actor-pause)) (let ((v0-1 #t)) (set! (-> self actor-pause) v0-1) @@ -944,8 +944,8 @@ ;; failed to figure out what this is: (defstate die (eco) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'fade) (process-entity-status! self (entity-perm-status dead) #t) @@ -1572,9 +1572,9 @@ ;; failed to figure out what this is: (defstate wait (fuel-cell) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-3 none)) - (when (and (or (= arg2 'touch) (= arg2 'attack)) + (when (and (or (= event-type 'touch) (= event-type '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))) @@ -1588,37 +1588,37 @@ (add-setting! 'allow-progress #f 0.0 0) (apply-settings *setting-control*) (logclear! (-> self mask) (process-mask actor-pause)) - (go-virtual pickup #f (process->handle arg0)) + (go-virtual pickup #f (process->handle proc)) ) (the-as object (cond - ((= arg2 'trans) - (set! (-> self root-override trans quad) (-> (the-as vector (-> arg3 param 0)) quad)) + ((= event-type 'trans) + (set! (-> self root-override trans quad) (-> (the-as vector (-> event param 0)) quad)) (set! (-> self base quad) (-> self root-override trans quad)) (update-transforms! (-> self root-override)) ) - ((= arg2 'pickup) + ((= event-type 'pickup) (when (!= (-> self next-state name) 'pickup) - (if (and (> arg1 0) (-> arg3 param 0)) - (move-to-point! (-> self root-override) (the-as vector (-> arg3 param 0))) + (if (and (> arg1 0) (-> event param 0)) + (move-to-point! (-> self root-override) (the-as vector (-> event param 0))) ) (logclear! (-> self mask) (process-mask actor-pause)) (go-virtual pickup #f (process->handle *target*)) ) ) - ((= arg2 'collide-shape) - (if (-> arg3 param 0) + ((= event-type 'collide-shape) + (if (-> event 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))) + ((= event-type 'movie-pos) + (set! v0-3 (the-as none (-> event param 0))) (set! (-> self movie-pos-index) (the-as int v0-3)) v0-3 ) - ((= arg2 'anim) + ((= event-type 'anim) (cond - ((-> arg3 param 0) + ((-> event param 0) (set! v0-3 (the-as none (logclear (-> self flags) (collectable-flags anim)))) (set! (-> self flags) (the-as collectable-flags v0-3)) ) @@ -2202,19 +2202,19 @@ ;; failed to figure out what this is: (defstate fuel-cell-clone-anim (fuel-cell) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('pickup) (when (!= (-> self next-state name) 'pickup) - (if (and (> arg1 0) (-> arg3 param 0)) - (move-to-point! (-> self root-override) (the-as vector (-> arg3 param 0))) + (if (and (> arg1 0) (-> event param 0)) + (move-to-point! (-> self root-override) (the-as vector (-> event 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 root-override trans quad) (-> (the-as vector (-> event param 0)) quad)) (set! (-> self base quad) (-> self root-override trans quad)) (update-transforms! (-> self root-override)) ) @@ -2338,8 +2338,8 @@ ;; failed to figure out what this is: (defstate pickup (buzzer) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'notify) (process-entity-status! self (entity-perm-status dead) #t) ) @@ -3100,22 +3100,22 @@ ;; failed to figure out what this is: (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)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (if (and (or (= event-type 'touch) (= event-type '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)) + (and (= (send-event-function proc a1-1) #t) + (or (logtest? (-> self fact options) (fact-options powerup)) (send-event proc 'powerup)) ) ) ) - (go vent-pickup (process->handle arg0)) + (go vent-pickup (process->handle proc)) ) - (vent-standard-event-handler arg0 arg1 arg2 arg3) + (vent-standard-event-handler proc arg1 event-type event) ) :code (behavior () (loop @@ -3138,8 +3138,8 @@ ;; failed to figure out what this is: (defstate vent-blocked (vent) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('show) (go vent-wait-for-touch) ) diff --git a/test/decompiler/reference/jak1/engine/game/crates_REF.gc b/test/decompiler/reference/jak1/engine/game/crates_REF.gc index 896556ff00..366eccce74 100644 --- a/test/decompiler/reference/jak1/engine/game/crates_REF.gc +++ b/test/decompiler/reference/jak1/engine/game/crates_REF.gc @@ -825,28 +825,28 @@ ;; failed to figure out what this is: (defstate die (crate) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touched) (case (-> self defense) (('darkeco) (cond - ((= (-> arg0 type) target) - (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode 'darkeco)))) + ((= (-> proc type) target) + (send-event proc 'attack (-> event param 0) (static-attack-info ((mode 'darkeco)))) ) (else (let ((a1-5 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-5 from) self) (set! (-> a1-5 num-params) 4) (set! (-> a1-5 message) 'attack) - (set! (-> a1-5 param 0) (-> arg3 param 0)) + (set! (-> a1-5 param 0) (-> event param 0)) (set! (-> a1-5 param 1) (the-as uint 'darkeco)) (let ((v1-12 (+ *global-attack-id* 1))) (set! *global-attack-id* v1-12) (set! (-> a1-5 param 2) (the-as uint v1-12)) ) (set! (-> a1-5 param 3) (the-as uint 0)) - (send-event-function arg0 a1-5) + (send-event-function proc a1-5) ) ) ) @@ -985,10 +985,10 @@ ;; failed to figure out what this is: (defstate special-contents-die (crate) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'notify) - (case (-> arg3 param 0) + (case (-> event param 0) (('pickup) (let ((gp-0 (-> self entity extra perm))) (logior! (-> gp-0 status) (entity-perm-status user-set-from-cstage)) diff --git a/test/decompiler/reference/jak1/engine/game/game-save_REF.gc b/test/decompiler/reference/jak1/engine/game/game-save_REF.gc index 824528d90f..5c14c479a3 100644 --- a/test/decompiler/reference/jak1/engine/game/game-save_REF.gc +++ b/test/decompiler/reference/jak1/engine/game/game-save_REF.gc @@ -1728,8 +1728,8 @@ auto-save-post ;; failed to figure out what this is: (defstate error (auto-save) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'progress-allowed?) #t diff --git a/test/decompiler/reference/jak1/engine/game/generic-obs_REF.gc b/test/decompiler/reference/jak1/engine/game/generic-obs_REF.gc index 64717b1de5..a9967cc84f 100644 --- a/test/decompiler/reference/jak1/engine/game/generic-obs_REF.gc +++ b/test/decompiler/reference/jak1/engine/game/generic-obs_REF.gc @@ -243,15 +243,15 @@ ;; failed to figure out what this is: (defstate manipy-idle (manipy) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-0 none)) - (let ((v1-0 arg2)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'attackable) (cond - ((-> arg3 param 0) + ((-> event param 0) (set! v0-0 (the-as none (logior (process-mask attackable) (-> self mask)))) (set! (-> self mask) (the-as process-mask v0-0)) ) @@ -264,7 +264,7 @@ ) ((= v1-0 'blend-shape) (cond - ((-> arg3 param 0) + ((-> event param 0) (set! v0-0 (the-as none (logior (-> self skel status) (janim-status blerc eye)))) (set! (-> self skel status) (the-as janim-status v0-0)) ) @@ -277,7 +277,7 @@ ) ((= v1-0 'shadow) (cond - ((-> arg3 param 0) + ((-> event param 0) (set! v0-0 (the-as none (-> self shadow-backup))) (set! (-> self draw shadow) (the-as shadow-geo v0-0)) v0-0 @@ -289,37 +289,40 @@ ) ) ((= v1-0 'trans-hook) - (set! v0-0 (the-as none (-> arg3 param 0))) + (set! v0-0 (the-as none (-> event param 0))) (set! (-> self new-trans-hook) (the-as (function none) v0-0)) v0-0 ) ((= v1-0 'post-hook) - (set! v0-0 (the-as none (-> arg3 param 0))) + (set! v0-0 (the-as none (-> event param 0))) (set! (-> self new-post-hook) (the-as (function none) v0-0)) v0-0 ) ((= v1-0 'eval) - ((the-as (function manipy none) (-> arg3 param 0)) self) + ((the-as (function manipy none) (-> event param 0)) self) ) ((= v1-0 'become-hud-object) - (convert-to-hud-object self (the-as hud (-> arg3 param 0))) + (convert-to-hud-object self (the-as hud (-> event param 0))) ) ((= v1-0 'event-hook) - (set! v0-0 (the-as none (-> arg3 param 0))) + (set! v0-0 (the-as none (-> event param 0))) (set! (-> self cur-event-hook) (the-as (function none) v0-0)) v0-0 ) ((= v1-0 'art-joint-anim) (set! (-> self new-joint-anim) - (the-as art-joint-anim (lookup-art (-> self draw art-group) (the-as string (-> arg3 param 0)) art-joint-anim)) + (the-as + art-joint-anim + (lookup-art (-> self draw art-group) (the-as string (-> event param 0)) art-joint-anim) + ) ) - (set! v0-0 (the-as none (-> arg3 param 1))) + (set! v0-0 (the-as none (-> event param 1))) (set! (-> self new-joint-anim-blend) (the-as uint v0-0)) v0-0 ) ((= v1-0 'anim-mode) (when (nonzero? (-> self skel)) - (set! (-> self anim-mode) (the-as symbol (-> arg3 param 0))) + (set! (-> self anim-mode) (the-as symbol (-> event param 0))) (if (= (-> self anim-mode) 'clone-anim) (ja-post) ) @@ -327,16 +330,16 @@ ) ) ((or (= v1-0 'origin-joint-index) (= v1-0 'center-joint)) - (set! (-> self draw origin-joint-index) (-> arg3 param 0)) - (set! v0-0 (the-as none (-> arg3 param 0))) + (set! (-> self draw origin-joint-index) (-> event param 0)) + (set! v0-0 (the-as none (-> event param 0))) (set! (-> self draw shadow-joint-index) (the-as uint v0-0)) v0-0 ) ((= v1-0 'max-vis-dist) - (set! (-> self draw lod-set lod (-> self draw lod-set max-lod) dist) (the-as float (-> arg3 param 0))) + (set! (-> self draw lod-set lod (-> self draw lod-set max-lod) dist) (the-as float (-> event param 0))) ) ((= v1-0 'grab) - (set! (-> self cur-grab-handle) (process->handle (the-as process (-> arg3 param 0)))) + (set! (-> self cur-grab-handle) (process->handle (the-as process (-> event param 0)))) (let ((v1-30 (handle->process (-> self cur-grab-handle)))) (when v1-30 (set! v0-0 (the-as none (-> self old-grab-pos))) @@ -346,33 +349,33 @@ ) ) ((= v1-0 'target) - (set! v0-0 (the-as none (process->handle (the-as process (-> arg3 param 0))))) + (set! v0-0 (the-as none (process->handle (the-as process (-> event param 0))))) (set! (-> self cur-target-handle) (the-as handle v0-0)) v0-0 ) ((= v1-0 'trans) (cond ((type-type? (-> self root type) collide-shape) - (move-to-point! (the-as collide-shape (-> self root)) (the-as vector (-> arg3 param 0))) + (move-to-point! (the-as collide-shape (-> self root)) (the-as vector (-> event param 0))) ) (else (set! v0-0 (the-as none (-> self root trans))) - (set! (-> (the-as vector v0-0) quad) (-> (the-as vector (-> arg3 param 0)) quad)) + (set! (-> (the-as vector v0-0) quad) (-> (the-as vector (-> event param 0)) quad)) v0-0 ) ) ) ((= v1-0 'rot) (let ((s5-0 (new 'stack-no-clear 'matrix))) - (matrix-rotate-y! s5-0 (the-as float (-> arg3 param 0))) + (matrix-rotate-y! s5-0 (the-as float (-> event param 0))) (matrix->quaternion (-> self root quat) s5-0) ) ) ((= v1-0 'rot-quat) - (quaternion-copy! (-> self root quat) (the-as quaternion (-> arg3 param 0))) + (quaternion-copy! (-> self root quat) (the-as quaternion (-> event param 0))) ) ((= v1-0 'clone-copy-trans) - (set! v0-0 (the-as none (-> arg3 param 0))) + (set! v0-0 (the-as none (-> event param 0))) (set! (-> self clone-copy-trans) (the-as symbol v0-0)) v0-0 ) @@ -381,9 +384,9 @@ #f ) ((= v1-0 'draw) - (set! (-> self draw?) (the-as symbol (-> arg3 param 0))) + (set! (-> self draw?) (the-as symbol (-> event param 0))) (cond - ((-> arg3 param 0) + ((-> event param 0) (let ((v1-47 (logtest? (-> self draw status) (draw-status hidden)))) (logclear! (-> self draw status) (draw-status hidden)) (when v1-47 @@ -411,7 +414,7 @@ ) ) ((= v1-0 'query) - (case (-> arg3 param 0) + (case (-> event param 0) (('grab) (handle->process (-> self cur-grab-handle)) ) @@ -427,7 +430,7 @@ ((= v1-0 'set-frame-num) (let ((v1-73 (-> self skel root-channel 0))) (set! (-> v1-73 num-func) num-func-identity) - (set! (-> v1-73 frame-num) (the-as float (-> arg3 param 0))) + (set! (-> v1-73 frame-num) (the-as float (-> event param 0))) ) ) (else @@ -1152,22 +1155,22 @@ ;; failed to figure out what this is: (defstate camera-tracker-process (camera-tracker) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-0 uint)) - (let ((v1-0 arg2)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'message) - (set! v0-0 (-> arg3 param 0)) + (set! v0-0 (-> event param 0)) (set! (-> self message) (the-as basic v0-0)) v0-0 ) ((= v1-0 'mask) - (set! v0-0 (-> arg3 param 0)) + (set! v0-0 (-> event param 0)) (set! (-> self mask-to-clear) (the-as process-mask v0-0)) v0-0 ) ((= v1-0 'border) - (set! v0-0 (-> arg3 param 0)) + (set! v0-0 (-> event param 0)) (set! (-> self border-value) (the-as basic v0-0)) v0-0 ) @@ -1421,8 +1424,8 @@ ;; failed to figure out what this is: (defstate part-spawner-active (part-spawner) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('stop) (process-entity-status! self (entity-perm-status complete) #t) (set! (-> self enable) #f) @@ -1434,7 +1437,7 @@ #t ) (('trans) - (let ((v0-1 (the-as object (-> (the-as vector (-> arg3 param 0)) quad)))) + (let ((v0-1 (the-as object (-> (the-as vector (-> event param 0)) quad)))) (set! (-> self root trans quad) (the-as uint128 v0-1)) v0-1 ) @@ -1827,13 +1830,13 @@ ;; failed to figure out what this is: (defstate cam-launcher-shortfall (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('teleport) #f ) (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -1900,13 +1903,13 @@ ;; failed to figure out what this is: (defstate cam-launcher-longfall (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('teleport) #f ) (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -1996,13 +1999,13 @@ ;; failed to figure out what this is: (defstate launcher-idle (launcher) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('instant-death) (go launcher-deactivated) ) (('trans) - (move-to-point! (-> self root-override) (the-as vector (-> arg3 param 0))) + (move-to-point! (-> self root-override) (the-as vector (-> event param 0))) (update-transforms! (-> self root-override)) ) ) @@ -2043,17 +2046,17 @@ ;; failed to figure out what this is: (defstate launcher-active (launcher) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (when (or (= arg2 'touch) (= arg2 'attack)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (when (or (= event-type 'touch) (= event-type 'attack)) (set! (-> self state-time) (-> *display* base-frame-counter)) - (send-event arg0 'launch (-> self spring-height) (-> self camera) (-> self dest) (-> self seek-time)) + (send-event proc 'launch (-> self spring-height) (-> self camera) (-> self dest) (-> self seek-time)) ) (cond - ((= arg2 'instant-death) + ((= event-type 'instant-death) (go launcher-deactivated) ) - ((= arg2 'trans) - (move-to-point! (-> self root-override) (the-as vector (-> arg3 param 0))) + ((= event-type 'trans) + (move-to-point! (-> self root-override) (the-as vector (-> event param 0))) (update-transforms! (-> self root-override)) ) ) @@ -2229,19 +2232,19 @@ ;; failed to figure out what this is: (defstate touch-tracker-idle (touch-tracker) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-0 none)) - (let ((v1-0 arg2)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'touched) (let ((v1-1 (ppointer->process (-> self parent)))) - (when (!= v1-1 arg0) + (when (!= v1-1 proc) (cond ((= (-> self event) 'attack) (cond - ((= (-> arg0 type) target) + ((= (-> proc type) target) (send-event - arg0 + proc (-> self event) :from (the-as process v1-1) #f @@ -2250,7 +2253,7 @@ ) ((= (-> v1-1 type) target) (send-event - arg0 + proc (-> self event) :from (the-as process v1-1) #f @@ -2271,26 +2274,26 @@ (set! (-> a1-5 param 2) (the-as uint v1-19)) ) (set! (-> a1-5 param 3) (the-as uint 0)) - (send-event-function arg0 a1-5) + (send-event-function proc a1-5) ) ) ) ) ((-> self event) - (send-event arg0 (-> self event) :from (the-as process v1-1)) + (send-event proc (-> self event) :from (the-as process v1-1)) ) (else (let ((t0-5 (new 'stack-no-clear 'event-message-block))) - (set! (-> t0-5 from) arg0) + (set! (-> t0-5 from) proc) (set! (-> t0-5 num-params) arg1) - (set! (-> t0-5 message) arg2) - (set! (-> t0-5 param 0) (-> arg3 param 0)) - (set! (-> t0-5 param 1) (-> arg3 param 1)) - (set! (-> t0-5 param 2) (-> arg3 param 2)) - (set! (-> t0-5 param 3) (-> arg3 param 3)) - (set! (-> t0-5 param 4) (-> arg3 param 4)) - (set! (-> t0-5 param 5) (-> arg3 param 5)) - (set! (-> t0-5 param 6) (-> arg3 param 6)) + (set! (-> t0-5 message) event-type) + (set! (-> t0-5 param 0) (-> event param 0)) + (set! (-> t0-5 param 1) (-> event param 1)) + (set! (-> t0-5 param 2) (-> event param 2)) + (set! (-> t0-5 param 3) (-> event param 3)) + (set! (-> t0-5 param 4) (-> event param 4)) + (set! (-> t0-5 param 5) (-> event param 5)) + (set! (-> t0-5 param 6) (-> event param 6)) (send-event-function v1-1 t0-5) ) ) @@ -2299,26 +2302,26 @@ ) ) ((= v1-0 'target) - (set! v0-0 (the-as none (process->handle (the-as process (-> arg3 param 0))))) + (set! v0-0 (the-as none (process->handle (the-as process (-> event param 0))))) (set! (-> self target) (the-as handle v0-0)) v0-0 ) ((= v1-0 'event) - (set! (-> self event) (the-as symbol (-> arg3 param 0))) - (set! v0-0 (the-as none (-> arg3 param 1))) + (set! (-> self event) (the-as symbol (-> event param 0))) + (set! v0-0 (the-as none (-> event param 1))) (set! (-> self event-mode) (the-as basic v0-0)) v0-0 ) ((= v1-0 'exit) - (set! v0-0 (the-as none (-> arg3 param 0))) + (set! v0-0 (the-as none (-> event param 0))) (set! (-> self run-function) (the-as (function object) v0-0)) v0-0 ) ((= v1-0 'eval) - ((the-as (function touch-tracker none) (-> arg3 param 0)) self) + ((the-as (function touch-tracker none) (-> event param 0)) self) ) ((= v1-0 'function) - (set! v0-0 (the-as none (-> arg3 param 0))) + (set! v0-0 (the-as none (-> event param 0))) (set! (-> self callback) (the-as (function touch-tracker none) v0-0)) v0-0 ) diff --git a/test/decompiler/reference/jak1/engine/game/projectiles_REF.gc b/test/decompiler/reference/jak1/engine/game/projectiles_REF.gc index deb9370b18..9c555c4bb5 100644 --- a/test/decompiler/reference/jak1/engine/game/projectiles_REF.gc +++ b/test/decompiler/reference/jak1/engine/game/projectiles_REF.gc @@ -647,33 +647,33 @@ ;; failed to figure out what this is: (defstate projectile-moving (projectile) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touched) (when (-> self attack-mode) (when (cond - ((= (-> arg0 type) target) - (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode (-> self attack-mode))))) + ((= (-> proc type) target) + (send-event proc 'attack (-> event param 0) (static-attack-info ((mode (-> self attack-mode))))) ) (else (let ((a1-2 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-2 from) self) (set! (-> a1-2 num-params) 4) (set! (-> a1-2 message) 'attack) - (set! (-> a1-2 param 0) (-> arg3 param 0)) + (set! (-> a1-2 param 0) (-> event param 0)) (set! (-> a1-2 param 1) (the-as uint (-> self attack-mode))) (let ((v1-13 (+ *global-attack-id* 1))) (set! *global-attack-id* v1-13) (set! (-> a1-2 param 2) (the-as uint v1-13)) ) (set! (-> a1-2 param 3) (the-as uint 0)) - (send-event-function arg0 a1-2) + (send-event-function proc a1-2) ) ) ) (let ((v1-14 (-> self notify-handle))) (if (handle->process v1-14) - (send-event (-> v1-14 process 0) 'notify 'attack arg0) + (send-event (-> v1-14 process 0) 'notify 'attack proc) ) ) (+! (-> self hits) 1) diff --git a/test/decompiler/reference/jak1/engine/game/task/process-taskable_REF.gc b/test/decompiler/reference/jak1/engine/game/task/process-taskable_REF.gc index 5838ba29e6..4bbe06c477 100644 --- a/test/decompiler/reference/jak1/engine/game/task/process-taskable_REF.gc +++ b/test/decompiler/reference/jak1/engine/game/task/process-taskable_REF.gc @@ -605,11 +605,11 @@ ;; failed to figure out what this is: (defstate play-anim (process-taskable) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('shadow) (cond - ((-> arg3 param 0) + ((-> event param 0) (let ((v0-0 (the-as object (-> self shadow-backup)))) (set! (-> self draw shadow) (the-as shadow-geo v0-0)) v0-0 @@ -624,10 +624,10 @@ (('shadow-min-max) (let ((v1-5 (-> self draw shadow-ctrl))) (let ((a0-4 v1-5)) - (set! (-> a0-4 settings bot-plane w) (- (the-as float (-> arg3 param 0)))) + (set! (-> a0-4 settings bot-plane w) (- (the-as float (-> event param 0)))) ) 0 - (set! (-> v1-5 settings top-plane w) (- (the-as float (-> arg3 param 1)))) + (set! (-> v1-5 settings top-plane w) (- (the-as float (-> event param 1)))) ) 0 ) @@ -793,12 +793,12 @@ ;; failed to figure out what this is: (defstate be-clone (process-taskable) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as shadow-geo (cond ((= v1-0 'shadow) (the-as shadow-geo (cond - ((-> arg3 param 0) + ((-> event param 0) (let ((v0-0 (-> self shadow-backup))) (set! (-> self draw shadow) v0-0) v0-0 @@ -814,10 +814,10 @@ ((= v1-0 'shadow-min-max) (let ((v1-5 (-> self draw shadow-ctrl))) (let ((a0-5 v1-5)) - (set! (-> a0-5 settings bot-plane w) (- (the-as float (-> arg3 param 0)))) + (set! (-> a0-5 settings bot-plane w) (- (the-as float (-> event param 0)))) ) 0 - (set! (-> v1-5 settings top-plane w) (- (the-as float (-> arg3 param 1)))) + (set! (-> v1-5 settings top-plane w) (- (the-as float (-> event param 1)))) ) (the-as shadow-geo 0) ) @@ -870,8 +870,8 @@ ;; failed to figure out what this is: (defstate idle (process-taskable) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond @@ -881,7 +881,7 @@ (if (-> self bounce-away) (the-as symbol - (send-event arg0 'shove #f (static-attack-info ((shove-back (meters 3)) (shove-up (meters 1))))) + (send-event proc 'shove #f (static-attack-info ((shove-back (meters 3)) (shove-up (meters 1))))) ) ) ) @@ -889,8 +889,8 @@ ((= v1-0 'touch) (the-as symbol (send-shove-back (-> self root-override) - arg0 - (the-as touching-shapes-entry (-> arg3 param 0)) + proc + (the-as touching-shapes-entry (-> event param 0)) 0.7 6144.0 16384.0 @@ -898,7 +898,7 @@ ) ) ((= v1-0 'clone) - (the-as symbol (go-virtual be-clone (the-as handle (-> arg3 param 0)))) + (the-as symbol (go-virtual be-clone (the-as handle (-> event param 0)))) ) ((= v1-0 'play-anim) (logclear! (-> self mask) (process-mask actor-pause)) @@ -1177,9 +1177,9 @@ ;; failed to figure out what this is: (defstate othercam-running (othercam) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-0 object)) - (case arg2 + (case event-type (('die) (set! v0-0 #t) (set! (-> self die?) (the-as symbol v0-0)) @@ -1187,13 +1187,13 @@ ) (('joint) (let ((t9-0 type-type?) - (v1-1 (-> arg3 param 0)) + (v1-1 (-> event param 0)) ) (cond ((t9-0 (rtype-of v1-1) string) (let ((v1-8 (lookup-art (-> (the-as process-taskable (-> self hand process 0)) draw jgeo) - (the-as string (-> arg3 param 0)) + (the-as string (-> event param 0)) (the-as type #f) ) ) @@ -1205,8 +1205,8 @@ ) ) ) - ((not (logtest? (-> arg3 param 0) 7)) - (set! v0-0 (-> arg3 param 0)) + ((not (logtest? (-> event param 0) 7)) + (set! v0-0 (-> event param 0)) (set! (-> self cam-joint-index) (the-as int v0-0)) v0-0 ) @@ -1214,7 +1214,7 @@ ) ) (('mask) - (set! v0-0 (-> arg3 param 0)) + (set! v0-0 (-> event param 0)) (set! (-> self mask-to-clear) (the-as process-mask v0-0)) v0-0 ) diff --git a/test/decompiler/reference/jak1/engine/game/voicebox_REF.gc b/test/decompiler/reference/jak1/engine/game/voicebox_REF.gc index 3d7c50b61d..ffd5b4fa03 100644 --- a/test/decompiler/reference/jak1/engine/game/voicebox_REF.gc +++ b/test/decompiler/reference/jak1/engine/game/voicebox_REF.gc @@ -134,8 +134,8 @@ ;; failed to figure out what this is: (defstate enter (voicebox) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('die) (go-virtual exit) ) diff --git a/test/decompiler/reference/jak1/engine/gfx/water/water_REF.gc b/test/decompiler/reference/jak1/engine/gfx/water/water_REF.gc index c8fdb93e82..5a8da87f97 100644 --- a/test/decompiler/reference/jak1/engine/gfx/water/water_REF.gc +++ b/test/decompiler/reference/jak1/engine/gfx/water/water_REF.gc @@ -1361,8 +1361,8 @@ ;; failed to figure out what this is: (defstate water-vol-idle (water-vol) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'update) (TODO-RENAME-26 self) ) diff --git a/test/decompiler/reference/jak1/engine/target/sidekick_REF.gc b/test/decompiler/reference/jak1/engine/target/sidekick_REF.gc index 2c44bbfd1b..82405e2ffa 100644 --- a/test/decompiler/reference/jak1/engine/target/sidekick_REF.gc +++ b/test/decompiler/reference/jak1/engine/target/sidekick_REF.gc @@ -61,11 +61,11 @@ ;; failed to figure out what this is: (defstate sidekick-clone (sidekick) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-0 object)) - (case arg2 + (case event-type (('matrix) - (case (-> arg3 param 0) + (case (-> event param 0) (('play-anim) (set! v0-0 (-> self node-list data)) (set! (-> (the-as (inline-array cspace) v0-0) 0 param0) cspace<-cspace+quaternion!) @@ -98,13 +98,13 @@ v0-0 ) (('shadow) - (set! v0-0 (-> arg3 param 0)) + (set! v0-0 (-> event param 0)) (set! (-> self shadow-in-movie?) (the-as symbol v0-0)) v0-0 ) (('blend-shape) (cond - ((-> arg3 param 0) + ((-> event param 0) (set! v0-0 (logior (-> self skel status) (janim-status blerc))) (set! (-> self skel status) (the-as janim-status v0-0)) ) diff --git a/test/decompiler/reference/jak1/engine/target/target2_REF.gc b/test/decompiler/reference/jak1/engine/target/target2_REF.gc index cd18969c1d..bae30af231 100644 --- a/test/decompiler/reference/jak1/engine/target/target2_REF.gc +++ b/test/decompiler/reference/jak1/engine/target/target2_REF.gc @@ -3,14 +3,14 @@ ;; failed to figure out what this is: (defstate target-load-wait (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('loading) (set! (-> self state-time) (-> *display* base-frame-counter)) #f ) (else - (target-standard-event-handler arg0 arg1 arg2 arg3) + (target-standard-event-handler proc arg1 event-type event) ) ) ) @@ -55,13 +55,13 @@ ;; failed to figure out what this is: (defstate target-stance-ambient (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('movie) (go target-stance) ) (else - (target-standard-event-handler arg0 arg1 arg2 arg3) + (target-standard-event-handler proc arg1 event-type event) ) ) ) @@ -293,8 +293,8 @@ ;; failed to figure out what this is: (defstate hud-waiting (first-person-hud) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('go-away) (go hud-going-out) ) @@ -479,21 +479,21 @@ ;; failed to figure out what this is: (defstate target-look-around (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (cond - ((and (= arg2 'query) (= (-> arg3 param 0) 'mode)) + ((and (= event-type 'query) (= (-> event param 0) 'mode)) (-> self state name) ) - ((let ((v1-4 arg2)) + ((let ((v1-4 event-type)) (= v1-4 'end-mode) ) (go target-stance-look-around) ) ((-> self control unknown-symbol30) - (target-dangerous-event-handler arg0 arg1 arg2 arg3) + (target-dangerous-event-handler proc arg1 event-type event) ) (else - (target-standard-event-handler arg0 arg1 arg2 arg3) + (target-standard-event-handler proc arg1 event-type event) ) ) ) @@ -640,18 +640,18 @@ ;; failed to figure out what this is: (defstate target-billy-game (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (cond - ((and (= arg2 'query) (= (-> arg3 param 0) 'mode)) + ((and (= event-type 'query) (= (-> event param 0) 'mode)) (-> self state name) ) - ((let ((v1-4 arg2)) + ((let ((v1-4 event-type)) (= v1-4 'end-mode) ) (go target-stance) ) (else - (target-standard-event-handler arg0 arg1 arg2 arg3) + (target-standard-event-handler proc arg1 event-type event) ) ) ) @@ -773,38 +773,38 @@ ;; failed to figure out what this is: (defstate target-grab (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (cond - ((and (= arg2 'query) (= (-> arg3 param 0) 'mode)) + ((and (= event-type 'query) (= (-> event param 0) 'mode)) (-> self state name) ) (else - (case arg2 + (case event-type (('end-mode) (go target-stance) ) (('play-anim) - (let ((v0-0 (the-as object (-> arg3 param 0)))) + (let ((v0-0 (the-as object (-> event param 0)))) (set! (-> self control unknown-uint20) (the-as uint v0-0)) v0-0 ) ) (('clone-anim) - (go target-clone-anim (process->handle (the-as process (-> arg3 param 0)))) + (go target-clone-anim (process->handle (the-as process (-> event param 0)))) ) (('change-mode) - (case (-> arg3 param 0) + (case (-> event param 0) (('final-door) (go target-final-door - (the-as basic (process->handle (the-as process (-> arg3 param 1)))) - (process->handle (the-as process (-> arg3 param 2))) + (the-as basic (process->handle (the-as process (-> event param 1)))) + (process->handle (the-as process (-> event param 2))) ) ) ) ) (else - (target-generic-event-handler arg0 arg1 arg2 arg3) + (target-generic-event-handler proc arg1 event-type event) ) ) ) @@ -943,10 +943,10 @@ ;; failed to figure out what this is: (defstate target-pole-cycle (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (if (and (= arg2 'query) (= (-> arg3 param 0) 'mode)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (if (and (= event-type 'query) (= (-> event param 0) 'mode)) (-> self state name) - (target-standard-event-handler arg0 arg1 arg2 arg3) + (target-standard-event-handler proc arg1 event-type event) ) ) :enter (behavior ((arg0 handle)) @@ -1164,13 +1164,13 @@ ;; failed to figure out what this is: (defstate target-edge-grab (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('end-mode) (go target-falling 'target-edge-grab) ) (else - (target-standard-event-handler arg0 arg1 arg2 arg3) + (target-standard-event-handler proc arg1 event-type event) ) ) ) @@ -1284,13 +1284,13 @@ ;; failed to figure out what this is: (defstate target-edge-grab-jump (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('end-mode) (go target-falling 'target-edge-grab) ) (else - (target-standard-event-handler arg0 arg1 arg2 arg3) + (target-standard-event-handler proc arg1 event-type event) ) ) ) @@ -2239,10 +2239,10 @@ ;; failed to figure out what this is: (defstate target-swim-down (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('attack 'attack-invinc) - (let ((v1-2 (the-as attack-info (-> arg3 param 1)))) + (let ((v1-2 (the-as attack-info (-> event param 1)))) (when (or (not (logtest? (-> v1-2 mask) (attack-mask mode))) (= (-> v1-2 mode) 'generic) (= (-> v1-2 mode) 'drown)) (set! (-> v1-2 mode) 'damage) (if (and (= (-> self game mode) 'play) (>= 1.0 (-> self fact-info-target health))) @@ -2254,7 +2254,7 @@ ) ) ) - (target-standard-event-handler arg0 arg1 arg2 arg3) + (target-standard-event-handler proc arg1 event-type event) ) :enter (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) @@ -2636,10 +2636,10 @@ ;; failed to figure out what this is: (defstate target-launch (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (if (and (= arg2 'query) (= (-> arg3 param 0) 'mode)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (if (and (= event-type 'query) (= (-> event param 0) 'mode)) 'target-launch - (target-standard-event-handler arg0 arg1 arg2 arg3) + (target-standard-event-handler proc arg1 event-type event) ) ) :code (behavior ((arg0 float) (arg1 symbol) (arg2 vector) (arg3 int)) @@ -2733,8 +2733,8 @@ ;; failed to figure out what this is: (defstate target-periscope (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('change-mode) #f ) @@ -2745,7 +2745,7 @@ ) ) (else - (target-generic-event-handler arg0 arg1 arg2 arg3) + (target-generic-event-handler proc arg1 event-type event) ) ) ) @@ -2834,11 +2834,11 @@ ;; failed to figure out what this is: (defstate target-clone-anim (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (if (and (= arg2 'trans) (= (-> arg3 param 0) 'restore)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (if (and (= event-type 'trans) (= (-> event param 0) 'restore)) (set! (-> self control unknown-uint20) (the-as uint #f)) ) - ((-> target-grab event) arg0 arg1 arg2 arg3) + ((-> target-grab event) proc arg1 event-type event) ) :enter (behavior ((arg0 handle)) (set! (-> self control unknown-handle10) arg0) diff --git a/test/decompiler/reference/jak1/engine/target/target_REF.gc b/test/decompiler/reference/jak1/engine/target/target_REF.gc index 2bd8fc9cac..5c1b8d2236 100644 --- a/test/decompiler/reference/jak1/engine/target/target_REF.gc +++ b/test/decompiler/reference/jak1/engine/target/target_REF.gc @@ -2022,19 +2022,19 @@ ;; failed to figure out what this is: (defstate target-running-attack (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touched) (cond (((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (-> self control) (the-as uint 224) ) (let ((gp-1 (target-send-attack - arg0 + proc (the-as uint (-> self control unknown-symbol30)) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (-> self control unknown-dword50) (-> self control unknown-dword51) ) @@ -2042,8 +2042,8 @@ ) (when gp-1 (set! (-> self control unknown-uint20) (the-as uint (-> *display* base-frame-counter))) - (let ((v1-9 (if (and (nonzero? arg0) (type-type? (-> arg0 type) process-drawable)) - arg0 + (let ((v1-9 (if (and (nonzero? proc) (type-type? (-> proc type) process-drawable)) + proc ) ) ) @@ -2073,12 +2073,12 @@ ) ) (else - (target-dangerous-event-handler arg0 arg1 arg2 arg3) + (target-dangerous-event-handler proc arg1 event-type event) ) ) ) (else - (target-dangerous-event-handler arg0 arg1 arg2 arg3) + (target-dangerous-event-handler proc arg1 event-type event) ) ) ) @@ -2302,15 +2302,15 @@ ;; failed to figure out what this is: (defstate target-attack-air (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v0-0 (target-bonk-event-handler arg0 arg1 arg2 arg3))) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v0-0 (target-bonk-event-handler proc arg1 event-type event))) (cond (v0-0 (empty) v0-0 ) (else - (target-dangerous-event-handler arg0 arg1 arg2 arg3) + (target-dangerous-event-handler proc arg1 event-type event) ) ) ) @@ -2621,14 +2621,14 @@ ;; failed to figure out what this is: (defstate target-flop (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v0-0 (target-bonk-event-handler arg0 arg1 arg2 arg3))) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v0-0 (target-bonk-event-handler proc arg1 event-type event))) (cond (v0-0 (empty) v0-0 ) - ((let ((v1-0 arg2)) + ((let ((v1-0 event-type)) (= v1-0 'swim) ) (cond @@ -2650,7 +2650,7 @@ ) ) (else - (target-dangerous-event-handler arg0 arg1 arg2 arg3) + (target-dangerous-event-handler proc arg1 event-type event) ) ) ) @@ -2864,13 +2864,13 @@ ;; failed to figure out what this is: (defstate target-flop-hit-ground (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('swim) #f ) (else - (target-standard-event-handler arg0 arg1 arg2 arg3) + (target-standard-event-handler proc arg1 event-type event) ) ) ) @@ -2938,11 +2938,11 @@ ;; failed to figure out what this is: (defstate target-wheel (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (if (= arg2 'touched) - (send-event arg0 'roll) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (if (= event-type 'touched) + (send-event proc 'roll) ) - (target-standard-event-handler arg0 arg1 arg2 arg3) + (target-standard-event-handler proc arg1 event-type event) ) :enter (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) diff --git a/test/decompiler/reference/jak1/engine/ui/hud_REF.gc b/test/decompiler/reference/jak1/engine/ui/hud_REF.gc index f50a78c6a6..5ff46d2150 100644 --- a/test/decompiler/reference/jak1/engine/ui/hud_REF.gc +++ b/test/decompiler/reference/jak1/engine/ui/hud_REF.gc @@ -219,9 +219,9 @@ ;; failed to figure out what this is: (defstate hud-hidden (hud) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-0 object)) - (case arg2 + (case event-type (('show) (if (and (not *progress-process*) (!= (-> self last-hide-time) (-> *display* base-frame-counter))) (go hud-arriving) @@ -296,9 +296,9 @@ ;; failed to figure out what this is: (defstate hud-arriving (hud) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-3 object)) - (case arg2 + (case event-type (('hide-quick) (set! (-> self last-hide-time) (-> *display* base-frame-counter)) (set! (-> self force-on-screen) #f) diff --git a/test/decompiler/reference/jak1/engine/ui/progress/progress_REF.gc b/test/decompiler/reference/jak1/engine/ui/progress/progress_REF.gc index 31740517b5..bb83e52d5a 100644 --- a/test/decompiler/reference/jak1/engine/ui/progress/progress_REF.gc +++ b/test/decompiler/reference/jak1/engine/ui/progress/progress_REF.gc @@ -1088,8 +1088,8 @@ ;; failed to figure out what this is: (defstate progress-waiting (progress) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('go-away) (go progress-gone) ) @@ -1939,16 +1939,16 @@ ;; failed to figure out what this is: (defstate progress-normal (progress) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-0 none)) - (let ((v1-0 arg2)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'go-away) (go progress-going-out) ) ((= v1-0 'notify) (cond - ((= (-> arg3 param 0) 'done) + ((= (-> event param 0) 'done) (case (-> self display-state) (((progress-screen memcard-saving)) (cond @@ -1989,11 +1989,11 @@ ) ) ) - ((= (-> arg3 param 0) 'error) + ((= (-> event param 0) 'error) (let ((t9-4 format) (a0-17 #t) (a1-2 "ERROR NOTIFY: ~S ~D~%") - (v1-13 (-> arg3 param 1)) + (v1-13 (-> event param 1)) ) (t9-4 a0-17 @@ -2060,7 +2060,7 @@ (-> self display-state) ) ) - (case (-> arg3 param 1) + (case (-> event param 1) ((14) (set! v0-0 (the-as none 7)) (set! (-> self next-display-state) (the-as progress-screen v0-0)) @@ -2482,8 +2482,8 @@ ;; failed to figure out what this is: (defstate progress-debug (progress) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('go-away) (go progress-going-out) ) diff --git a/test/decompiler/reference/jak1/levels/beach/beach-obs_REF.gc b/test/decompiler/reference/jak1/levels/beach/beach-obs_REF.gc index 16c09e5575..e2272a93af 100644 --- a/test/decompiler/reference/jak1/levels/beach/beach-obs_REF.gc +++ b/test/decompiler/reference/jak1/levels/beach/beach-obs_REF.gc @@ -242,19 +242,19 @@ ;; failed to figure out what this is: (defstate grottopole-idle (grottopole) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (when (= (-> arg0 type) target) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (when (= (-> proc type) target) + (case event-type (('attack) - (let ((v1-2 (-> arg3 param 2))) + (let ((v1-2 (-> event param 2))) (when (!= v1-2 (-> self incomming-attack-id)) (set! (-> self incomming-attack-id) v1-2) - (case (-> arg3 param 1) + (case (-> event param 1) (('uppercut) (when (and (< (-> *target* control trans y) (+ -40960.0 (-> self root-override trans y))) (< (-> self position) (-> self max-position)) ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (the-as collide-shape-moving (-> self root-override)) (the-as uint 2) ) @@ -269,7 +269,7 @@ (when (and (< (+ -40960.0 (-> self root-override trans y)) (-> *target* control trans y)) (> (-> self position) 0) ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (the-as collide-shape-moving (-> self root-override)) (the-as uint 1) ) @@ -598,8 +598,8 @@ ;; failed to figure out what this is: (defstate ecoventrock-idle (ecoventrock) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('attack) (sound-play "cannon-shot") (increment-success-for-hint (game-text-id sidekick-hint-ecorocks)) @@ -1145,15 +1145,15 @@ ;; failed to figure out what this is: (defstate flutflutegg-idle (flutflutegg) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (when (and (= arg2 'attack) - (or (= (-> arg3 param 1) 'punch) (= (-> arg3 param 1) 'spin) (= (-> arg3 param 1) 'spin-air)) - (!= (-> self incomming-attack-id) (-> arg3 param 2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (when (and (= event-type 'attack) + (or (= (-> event param 1) 'punch) (= (-> event param 1) 'spin) (= (-> event param 1) 'spin-air)) + (!= (-> self incomming-attack-id) (-> event param 2)) ) - (set! (-> self incomming-attack-id) (-> arg3 param 2)) + (set! (-> self incomming-attack-id) (-> event param 2)) (flutflutegg-hit-sounds) (let ((s5-1 - (vector-! (new-stack-vector0) (-> (the-as process-drawable arg0) root trans) (-> self root-override trans)) + (vector-! (new-stack-vector0) (-> (the-as process-drawable proc) root trans) (-> self root-override trans)) ) ) (set! (-> s5-1 y) 0.0) @@ -1239,18 +1239,18 @@ ;; failed to figure out what this is: (defstate flutflutegg-physics (flutflutegg) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (the-as object (when (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.5)) - (= arg2 'attack) - (or (= (-> arg3 param 1) 'punch) (= (-> arg3 param 1) 'spin) (= (-> arg3 param 1) 'spin-air)) - (!= (-> self incomming-attack-id) (-> arg3 param 2)) + (= event-type 'attack) + (or (= (-> event param 1) 'punch) (= (-> event param 1) 'spin) (= (-> event param 1) 'spin-air)) + (!= (-> self incomming-attack-id) (-> event param 2)) ) - (set! (-> self incomming-attack-id) (-> arg3 param 2)) + (set! (-> self incomming-attack-id) (-> event param 2)) (flutflutegg-hit-sounds) (let ((s5-1 - (vector-! (new-stack-vector0) (-> (the-as process-drawable arg0) root trans) (-> self root-override trans)) + (vector-! (new-stack-vector0) (-> (the-as process-drawable proc) root trans) (-> self root-override trans)) ) ) (set! (-> s5-1 y) 0.0) @@ -1508,8 +1508,8 @@ ;; failed to figure out what this is: (defstate harvester-idle (harvester) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('update) (if (and (-> self alt-actor) (logtest? (-> self alt-actor extra perm status) (entity-perm-status complete))) (go harvester-inflate #f) diff --git a/test/decompiler/reference/jak1/levels/beach/beach-rocks_REF.gc b/test/decompiler/reference/jak1/levels/beach/beach-rocks_REF.gc index c15b68b7c3..755000612c 100644 --- a/test/decompiler/reference/jak1/levels/beach/beach-rocks_REF.gc +++ b/test/decompiler/reference/jak1/levels/beach/beach-rocks_REF.gc @@ -295,8 +295,8 @@ ;; failed to figure out what this is: (defstate idle (beach-rock) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) (set! (-> self trigger) #t) (go-virtual falling) diff --git a/test/decompiler/reference/jak1/levels/beach/pelican_REF.gc b/test/decompiler/reference/jak1/levels/beach/pelican_REF.gc index af6616bfa2..463bfab161 100644 --- a/test/decompiler/reference/jak1/levels/beach/pelican_REF.gc +++ b/test/decompiler/reference/jak1/levels/beach/pelican_REF.gc @@ -231,8 +231,8 @@ ;; failed to figure out what this is: (defstate pelican-circle (pelican) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond @@ -246,7 +246,7 @@ (handle->process (-> self fuel-cell)) ) ((= v1-0 'position) - (set! (-> self path-pos) (the-as float (-> arg3 param 0))) + (set! (-> self path-pos) (the-as float (-> event param 0))) (let ((a1-3 (TODO-RENAME-12 (-> self path) (new 'stack-no-clear 'vector) (-> self path-pos)))) (set-heading-vec! (-> self root-override) a1-3) ) @@ -370,8 +370,8 @@ ;; failed to figure out what this is: (defstate pelican-dive (pelican) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'got-cell?) (-> self state-object) @@ -489,13 +489,13 @@ ;; failed to figure out what this is: (defstate pelican-wait-at-nest (pelican) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'attack) - (case (-> arg3 param 1) + (case (-> event param 1) (('explode) (let ((a0-2 (handle->process (-> self fuel-cell)))) (if a0-2 @@ -506,7 +506,7 @@ #f ) (else - (let* ((gp-0 arg0) + (let* ((gp-0 proc) (v1-13 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) gp-0 ) @@ -529,8 +529,8 @@ ((= v1-0 'touch) (send-shove-back (-> self root-override) - arg0 - (the-as touching-shapes-entry (-> arg3 param 0)) + proc + (the-as touching-shapes-entry (-> event param 0)) 0.7 6144.0 16384.0 diff --git a/test/decompiler/reference/jak1/levels/citadel/citadel-obs_REF.gc b/test/decompiler/reference/jak1/levels/citadel/citadel-obs_REF.gc index 0b5cea63fc..4f38bb5e81 100644 --- a/test/decompiler/reference/jak1/levels/citadel/citadel-obs_REF.gc +++ b/test/decompiler/reference/jak1/levels/citadel/citadel-obs_REF.gc @@ -482,10 +482,10 @@ ;; failed to figure out what this is: (defstate citb-disc-idle (citb-disc) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'touch) - (send-event arg0 'no-look-around (seconds 0.25)) + (send-event proc 'no-look-around (seconds 0.25)) #f ) ) @@ -957,12 +957,12 @@ ;; failed to figure out what this is: (defstate citb-robotboss-idle (citb-robotboss) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (sv-96 int) (sv-112 int)) (the-as object (cond - ((= arg2 'shield-off) + ((= event-type 'shield-off) (stop! (-> self sound)) (if (-> self shield-on) (sound-play "robotcage-off") @@ -970,17 +970,17 @@ (set! (-> self shield-on) #f) #f ) - ((= arg2 'shield-on) + ((= event-type 'shield-on) (let ((v0-3 #t)) (set! (-> self shield-on) v0-3) v0-3 ) ) - ((= arg2 'die) + ((= event-type 'die) (cleanup-for-death self) (the-as symbol (deactivate self)) ) - ((or (= arg2 'touch) (= arg2 'attack)) + ((or (= event-type 'touch) (= event-type 'attack)) (let ((s4-0 sound-play-by-name) (s3-0 (make-u128 #x7061 (the-as uint #x7a2d646c65696873))) (s2-0 (new-sound-id)) @@ -994,9 +994,9 @@ ) ) (the-as symbol (send-event - arg0 + proc 'shove - (-> arg3 param 0) + (-> event param 0) (static-attack-info ((shove-up (meters 2)) (shove-back (meters 3)))) ) ) @@ -1157,8 +1157,8 @@ ;; failed to figure out what this is: (defstate citb-coil-idle (citb-coil) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) (go citb-coil-break) ) @@ -1539,8 +1539,8 @@ ;; failed to figure out what this is: (defstate citb-generator-idle (citb-generator) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('attack) (if (-> self mushroom) (increment-success-for-hint (game-text-id citadel-generator)) @@ -1791,8 +1791,8 @@ ;; failed to figure out what this is: (defstate citadelcam-idle (citadelcam) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) (when (and (task-complete? *game-info* (game-task citadel-sage-blue)) (task-complete? *game-info* (game-task citadel-sage-red)) diff --git a/test/decompiler/reference/jak1/levels/citadel/citadel-sages_REF.gc b/test/decompiler/reference/jak1/levels/citadel/citadel-sages_REF.gc index 811e50684e..05f65fb8a2 100644 --- a/test/decompiler/reference/jak1/levels/citadel/citadel-sages_REF.gc +++ b/test/decompiler/reference/jak1/levels/citadel/citadel-sages_REF.gc @@ -105,9 +105,9 @@ ;; failed to figure out what this is: (defstate citb-sagecage-idle (citb-sagecage) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-3 none)) - (let ((v1-0 arg2)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'disable-bars) (stop! (-> self sound)) @@ -474,13 +474,13 @@ ;; failed to figure out what this is: (defstate play-anim (citb-sage) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('disable-bars) (send-event (handle->process (-> self cage)) 'disable-bars) ) (else - ((-> (method-of-type process-taskable play-anim) event) arg0 arg1 arg2 arg3) + ((-> (method-of-type process-taskable play-anim) event) proc arg1 event-type event) ) ) ) @@ -489,13 +489,13 @@ ;; failed to figure out what this is: (defstate idle (citb-sage) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('open) (send-event (handle->process (-> self cage)) 'disable-bars) ) (else - ((-> (method-of-type process-taskable idle) event) arg0 arg1 arg2 arg3) + ((-> (method-of-type process-taskable idle) event) proc arg1 event-type event) ) ) ) @@ -1132,8 +1132,8 @@ ;; failed to figure out what this is: (defstate play-anim (green-sagecage) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('spawn-robot) (let ((gp-0 (entity-by-name "robotboss-3"))) (format 0 "robotboss ent ~A~%" gp-0) @@ -1154,7 +1154,7 @@ ) ) (else - ((-> (method-of-type citb-sage play-anim) event) arg0 arg1 arg2 arg3) + ((-> (method-of-type citb-sage play-anim) event) proc arg1 event-type event) ) ) ) diff --git a/test/decompiler/reference/jak1/levels/citadel/citb-drop-plat_REF.gc b/test/decompiler/reference/jak1/levels/citadel/citb-drop-plat_REF.gc index 7f831904c0..08b21925e5 100644 --- a/test/decompiler/reference/jak1/levels/citadel/citb-drop-plat_REF.gc +++ b/test/decompiler/reference/jak1/levels/citadel/citb-drop-plat_REF.gc @@ -78,8 +78,8 @@ ;; failed to figure out what this is: (defstate drop-plat-idle (drop-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('drop) (logclear! (-> self mask) (process-mask actor-pause)) (go drop-plat-drop) @@ -126,8 +126,8 @@ ;; failed to figure out what this is: (defstate drop-plat-spawn (drop-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('drop) (go drop-plat-die) ) @@ -157,8 +157,8 @@ ;; failed to figure out what this is: (defstate drop-plat-rise (drop-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('drop) (go drop-plat-drop) ) @@ -527,8 +527,8 @@ ;; failed to figure out what this is: (defstate citb-drop-plat-idle (citb-drop-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) (go citb-drop-plat-active) ) @@ -545,13 +545,13 @@ ;; failed to figure out what this is: (defstate citb-drop-plat-active (citb-drop-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'player-stepped) (when (>= (- (-> *display* base-frame-counter) (-> self drop-time)) (seconds 0.2)) (set! (-> self drop-time) (-> *display* base-frame-counter)) - (citb-drop-plat-drop-children (the-as int (-> arg3 param 0))) + (citb-drop-plat-drop-children (the-as int (-> event param 0))) ) ) ((= v1-0 'trigger) diff --git a/test/decompiler/reference/jak1/levels/citadel/citb-plat_REF.gc b/test/decompiler/reference/jak1/levels/citadel/citb-plat_REF.gc index 0e459b2613..32723149ed 100644 --- a/test/decompiler/reference/jak1/levels/citadel/citb-plat_REF.gc +++ b/test/decompiler/reference/jak1/levels/citadel/citb-plat_REF.gc @@ -343,8 +343,8 @@ ;; failed to figure out what this is: (defstate citb-base-plat-idle (citb-stair-plat) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'trigger) (logclear! (-> self mask) (process-mask actor-pause)) (let ((v0-0 #t)) @@ -1053,13 +1053,13 @@ ;; failed to figure out what this is: (defstate citb-firehose-blast (citb-firehose) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch) (send-event - arg0 + proc 'attack - (-> arg3 param 0) + (-> event param 0) (static-attack-info ((mode 'damage) (shove-back (meters 6)) (shove-up (meters 3)))) ) ) @@ -1177,8 +1177,8 @@ ;; failed to figure out what this is: (defstate citb-exit-plat-idle (citb-exit-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) (let ((v1-3 (-> self entity extra perm))) (logior! (-> v1-3 status) (entity-perm-status user-set-from-cstage)) diff --git a/test/decompiler/reference/jak1/levels/common/basebutton_REF.gc b/test/decompiler/reference/jak1/levels/common/basebutton_REF.gc index 5fb6020d23..992b408edc 100644 --- a/test/decompiler/reference/jak1/levels/common/basebutton_REF.gc +++ b/test/decompiler/reference/jak1/levels/common/basebutton_REF.gc @@ -96,10 +96,10 @@ ;; failed to figure out what this is: (defstate basebutton-up-idle (basebutton) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('attack) - (case (-> arg3 param 1) + (case (-> event param 1) (('flop) (TODO-RENAME-29 self (-> self event-going-down) (-> self notify-actor)) (sound-play "silo-button") @@ -112,7 +112,7 @@ (go-virtual basebutton-going-down) ) (('move-to) - (move-to-vec-or-quat! self (the-as vector (-> arg3 param 0)) (the-as quaternion (-> arg3 param 1))) + (move-to-vec-or-quat! self (the-as vector (-> event param 0)) (the-as quaternion (-> event param 1))) ) ) ) @@ -141,14 +141,14 @@ ;; failed to figure out what this is: (defstate basebutton-going-down (basebutton) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('untrigger) (sound-play "silo-button") (go-virtual basebutton-going-up) ) (('move-to) - (move-to-vec-or-quat! self (the-as vector (-> arg3 param 0)) (the-as quaternion (-> arg3 param 1))) + (move-to-vec-or-quat! self (the-as vector (-> event param 0)) (the-as quaternion (-> event param 1))) ) ) ) @@ -181,14 +181,14 @@ ;; failed to figure out what this is: (defstate basebutton-down-idle (basebutton) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('untrigger) (sound-play "silo-button") (go-virtual basebutton-going-up) ) (('move-to) - (move-to-vec-or-quat! self (the-as vector (-> arg3 param 0)) (the-as quaternion (-> arg3 param 1))) + (move-to-vec-or-quat! self (the-as vector (-> event param 0)) (the-as quaternion (-> event param 1))) ) ) ) @@ -233,10 +233,10 @@ ;; failed to figure out what this is: (defstate basebutton-going-up (basebutton) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('move-to) - (move-to-vec-or-quat! self (the-as vector (-> arg3 param 0)) (the-as quaternion (-> arg3 param 1))) + (move-to-vec-or-quat! self (the-as vector (-> event param 0)) (the-as quaternion (-> event param 1))) ) (('trigger) (sound-play "silo-button") @@ -592,8 +592,8 @@ ;; failed to figure out what this is: (defstate target-warp-out (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('death-end) (let ((v0-0 (the-as object (logior (-> self draw status) (draw-status hidden))))) (set! (-> self draw status) (the-as draw-status v0-0)) @@ -601,7 +601,7 @@ ) ) (else - (target-generic-event-handler arg0 arg1 arg2 arg3) + (target-generic-event-handler proc arg1 event-type event) ) ) ) diff --git a/test/decompiler/reference/jak1/levels/common/orb-cache_REF.gc b/test/decompiler/reference/jak1/levels/common/orb-cache_REF.gc index 31a1e481ef..7dbf45a09d 100644 --- a/test/decompiler/reference/jak1/levels/common/orb-cache_REF.gc +++ b/test/decompiler/reference/jak1/levels/common/orb-cache_REF.gc @@ -55,8 +55,8 @@ ;; failed to figure out what this is: (defstate orb-cache-top-idle (orb-cache-top) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('eco-blue) (process-entity-status! self (entity-perm-status complete) #t) (dotimes (gp-0 5) @@ -66,7 +66,7 @@ (go orb-cache-top-activate #f) ) (else - (plat-event arg0 arg1 arg2 arg3) + (plat-event proc arg1 event-type event) ) ) ) diff --git a/test/decompiler/reference/jak1/levels/common/plat-button_REF.gc b/test/decompiler/reference/jak1/levels/common/plat-button_REF.gc index f42459f123..9825fe4110 100644 --- a/test/decompiler/reference/jak1/levels/common/plat-button_REF.gc +++ b/test/decompiler/reference/jak1/levels/common/plat-button_REF.gc @@ -73,12 +73,12 @@ ;; failed to figure out what this is: (defstate plat-button-idle (plat-button) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch) (when (can-activate? self) (if (and ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (-> self root-override) (the-as uint 1) ) @@ -189,8 +189,8 @@ ;; failed to figure out what this is: (defstate plat-button-move-downward (plat-button) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (the-as object (when (or (= arg2 'touch) (= arg2 'attack)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (the-as object (when (or (= event-type 'touch) (= event-type 'attack)) (set! (-> self state-time) (-> *display* base-frame-counter)) #f ) @@ -264,8 +264,8 @@ ;; failed to figure out what this is: (defstate plat-button-move-upward (plat-button) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (the-as object (when (or (= arg2 'touch) (= arg2 'attack)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (the-as object (when (or (= event-type 'touch) (= event-type 'attack)) (set! (-> self state-time) (-> *display* base-frame-counter)) #f ) diff --git a/test/decompiler/reference/jak1/levels/common/plat-eco_REF.gc b/test/decompiler/reference/jak1/levels/common/plat-eco_REF.gc index 7c5b734e71..42f8eadb73 100644 --- a/test/decompiler/reference/jak1/levels/common/plat-eco_REF.gc +++ b/test/decompiler/reference/jak1/levels/common/plat-eco_REF.gc @@ -52,13 +52,13 @@ ;; failed to figure out what this is: (defstate plat-idle (plat-eco) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('wake) (go-virtual plat-path-active (the-as plat #f)) ) (('eco-blue) - (go-virtual notice-blue (process->handle arg0)) + (go-virtual notice-blue (process->handle proc)) ) (('ridden 'edge-grabbed) (when (send-event *target* 'query 'powerup (pickup-type eco-blue)) @@ -100,8 +100,8 @@ ;; failed to figure out what this is: (defstate notice-blue (plat-eco) :virtual override - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('wake) (sound-play "blue-eco-on" :position (the-as symbol (-> self root-override trans))) (go-virtual plat-path-active (the-as plat #f)) diff --git a/test/decompiler/reference/jak1/levels/common/ropebridge_REF.gc b/test/decompiler/reference/jak1/levels/common/ropebridge_REF.gc index 393185cd7c..4775f7e040 100644 --- a/test/decompiler/reference/jak1/levels/common/ropebridge_REF.gc +++ b/test/decompiler/reference/jak1/levels/common/ropebridge_REF.gc @@ -611,20 +611,20 @@ ;; failed to figure out what this is: (defstate ropebridge-idle (ropebridge) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (let ((f0-0 -1.0)) (cond - ((= arg2 'bonk) + ((= event-type 'bonk) (when (>= (- (-> *display* base-frame-counter) (-> self bonk-time-stamp)) (seconds 0.2)) (set! (-> self bonk-time-stamp) (-> *display* base-frame-counter)) - (set! f0-0 (the-as float (-> arg3 param 1))) + (set! f0-0 (the-as float (-> event param 1))) (if (>= f0-0 (-> self tuning rider-bonk-max)) (set! f0-0 (-> self tuning rider-bonk-max)) ) ) ) - ((and (= arg2 'attack) (= (-> arg3 param 1) 'flop)) - (let ((v1-17 (-> arg3 param 2))) + ((and (= event-type 'attack) (= (-> event param 1) 'flop)) + (let ((v1-17 (-> event param 2))) (when (!= v1-17 (-> self player-attack-id)) (set! (-> self player-attack-id) v1-17) (set! (-> self attack-flop-time-stamp) (-> *display* base-frame-counter)) @@ -635,13 +635,13 @@ ) (the-as object - (when (and (>= f0-0 (-> self tuning rider-bonk-min)) (-> arg3 param 0)) + (when (and (>= f0-0 (-> self tuning rider-bonk-min)) (-> event param 0)) (set! (-> self agitated-time-stamp) (-> *display* base-frame-counter)) (let* ((f30-0 (/ (* (- f0-0 (-> self tuning rider-bonk-min)) (-> self tuning rider-bonk-force)) (- (-> self tuning rider-bonk-max) (-> self tuning rider-bonk-min)) ) ) - (gp-0 (the-as object (-> arg3 param 0))) + (gp-0 (the-as object (-> event param 0))) (a0-7 (-> (the-as touching-shapes-entry gp-0) head)) (s4-0 (-> self root-override)) (s5-0 (get-touched-prim a0-7 s4-0 (the-as touching-shapes-entry gp-0))) diff --git a/test/decompiler/reference/jak1/levels/common/water-anim_REF.gc b/test/decompiler/reference/jak1/levels/common/water-anim_REF.gc index 401e74e9c6..c8a16cab7d 100644 --- a/test/decompiler/reference/jak1/levels/common/water-anim_REF.gc +++ b/test/decompiler/reference/jak1/levels/common/water-anim_REF.gc @@ -553,10 +553,10 @@ ;; failed to figure out what this is: (defstate water-vol-idle (water-anim) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'move-to) - (set! (-> self root trans quad) (-> (the-as vector (-> arg3 param 0)) quad)) + (set! (-> self root trans quad) (-> (the-as vector (-> event param 0)) quad)) (set! (-> self water-height) (-> self root trans y)) (if (nonzero? (-> self sound)) (update-trans! (-> self sound) (-> self root trans)) diff --git a/test/decompiler/reference/jak1/levels/darkcave/darkcave-obs_REF.gc b/test/decompiler/reference/jak1/levels/darkcave/darkcave-obs_REF.gc index b8b5b6a0fd..8059a3ca49 100644 --- a/test/decompiler/reference/jak1/levels/darkcave/darkcave-obs_REF.gc +++ b/test/decompiler/reference/jak1/levels/darkcave/darkcave-obs_REF.gc @@ -115,8 +115,8 @@ ;; failed to figure out what this is: (defstate cavecrystal-idle (cavecrystal) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('attack) (go cavecrystal-active) ) @@ -145,10 +145,10 @@ ;; failed to figure out what this is: (defstate cavecrystal-active (cavecrystal) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'attack) - (let ((v1-1 (-> arg3 param 2))) + (let ((v1-1 (-> event param 2))) (cond ((!= v1-1 (-> self player-attack-id)) (set! (-> self player-attack-id) v1-1) diff --git a/test/decompiler/reference/jak1/levels/finalboss/final-door_REF.gc b/test/decompiler/reference/jak1/levels/finalboss/final-door_REF.gc index b309b1f601..7f6f3e735d 100644 --- a/test/decompiler/reference/jak1/levels/finalboss/final-door_REF.gc +++ b/test/decompiler/reference/jak1/levels/finalboss/final-door_REF.gc @@ -88,8 +88,8 @@ ;; failed to figure out what this is: (defstate idle (final-door) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('open) (go-virtual open #f) ) @@ -107,11 +107,11 @@ ;; failed to figure out what this is: (defstate open (final-door) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'brightness) - (let ((f0-0 (the-as float (-> arg3 param 0))) - (f1-0 (the-as float (-> arg3 param 1))) + (let ((f0-0 (the-as float (-> event param 0))) + (f1-0 (the-as float (-> event param 1))) ) (set-vector! (-> self draw color-mult) f0-0 f0-0 f0-0 f0-0) (let ((v0-0 (-> self draw color-emissive))) @@ -382,8 +382,8 @@ ;; failed to figure out what this is: (defstate target-final-door (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - ((-> target-grab event) arg0 arg1 arg2 arg3) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + ((-> target-grab event) proc arg1 event-type event) ) :enter (behavior ((arg0 basic) (arg1 handle)) (send-event *camera* 'change-to-entity-by-name "camera-403") diff --git a/test/decompiler/reference/jak1/levels/finalboss/green-eco-lurker_REF.gc b/test/decompiler/reference/jak1/levels/finalboss/green-eco-lurker_REF.gc index 6705ebefdf..7ee6dddc9a 100644 --- a/test/decompiler/reference/jak1/levels/finalboss/green-eco-lurker_REF.gc +++ b/test/decompiler/reference/jak1/levels/finalboss/green-eco-lurker_REF.gc @@ -828,8 +828,8 @@ ;; failed to figure out what this is: (defstate spawn-minions (green-eco-lurker-gen) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('blob-died) (set! (-> self num-alive) (max 0 (+ (-> self num-alive) -1))) (send-event (ppointer->process (-> self parent)) 'blob-died) diff --git a/test/decompiler/reference/jak1/levels/finalboss/robotboss-misc_REF.gc b/test/decompiler/reference/jak1/levels/finalboss/robotboss-misc_REF.gc index a6466ca346..2ee619a3fc 100644 --- a/test/decompiler/reference/jak1/levels/finalboss/robotboss-misc_REF.gc +++ b/test/decompiler/reference/jak1/levels/finalboss/robotboss-misc_REF.gc @@ -14,11 +14,11 @@ ;; failed to figure out what this is: (defstate cam-robotboss (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('set-pivot) (let ((v0-0 (the-as object (-> self pivot-pt)))) - (set! (-> (the-as vector v0-0) quad) (-> (the-as vector (-> arg3 param 0)) quad)) + (set! (-> (the-as vector v0-0) quad) (-> (the-as vector (-> event param 0)) quad)) v0-0 ) ) @@ -26,7 +26,7 @@ #f ) (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -344,10 +344,10 @@ ;; failed to figure out what this is: (defstate idle (silodoor) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('open) - (set! (-> self part-opened) (the-as float (-> arg3 param 0))) + (set! (-> self part-opened) (the-as float (-> event param 0))) ) (('hide) (go-virtual hidden) diff --git a/test/decompiler/reference/jak1/levels/finalboss/robotboss-weapon_REF.gc b/test/decompiler/reference/jak1/levels/finalboss/robotboss-weapon_REF.gc index aa28d9984f..5e54ecf0e5 100644 --- a/test/decompiler/reference/jak1/levels/finalboss/robotboss-weapon_REF.gc +++ b/test/decompiler/reference/jak1/levels/finalboss/robotboss-weapon_REF.gc @@ -914,11 +914,11 @@ ;; failed to figure out what this is: (defstate yellowshot-idle (yellowshot) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch 'attack) - (when (= (-> arg0 type) target) - (send-event *target* 'attack (-> arg3 param 0) (static-attack-info ((mode 'generic)))) + (when (= (-> proc type) target) + (send-event *target* 'attack (-> event param 0) (static-attack-info ((mode 'generic)))) (send-event (ppointer->process (-> self parent)) 'hit-jak) ) ) diff --git a/test/decompiler/reference/jak1/levels/finalboss/robotboss_REF.gc b/test/decompiler/reference/jak1/levels/finalboss/robotboss_REF.gc index 5995100516..e9b3fe9461 100644 --- a/test/decompiler/reference/jak1/levels/finalboss/robotboss_REF.gc +++ b/test/decompiler/reference/jak1/levels/finalboss/robotboss_REF.gc @@ -439,8 +439,8 @@ ;; failed to figure out what this is: (defstate robotboss-yellow-dark-bomb-wait (robotboss) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'white-eco-picked-up) (close-specific-task! (game-task finalboss-movies) (task-status unknown)) @@ -464,7 +464,7 @@ (deactivate self) ) (else - (robotboss-bomb-handler arg0 arg1 arg2 arg3) + (robotboss-bomb-handler proc arg1 event-type event) ) ) ) @@ -923,8 +923,8 @@ ;; failed to figure out what this is: (defstate robotboss-yellow-wait (robotboss) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('hit-jak) (let ((f0-2 (rand-float-gen))) (cond @@ -952,7 +952,7 @@ ) ) (else - (robotboss-handler arg0 arg1 arg2 arg3) + (robotboss-handler proc arg1 event-type event) ) ) ) @@ -1523,8 +1523,8 @@ ;; failed to figure out what this is: (defstate robotboss-red-wait (robotboss) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('hit-jak) (let ((f0-2 (rand-float-gen))) (cond @@ -1552,7 +1552,7 @@ ) ) (else - (robotboss-handler arg0 arg1 arg2 arg3) + (robotboss-handler proc arg1 event-type event) ) ) ) @@ -1981,8 +1981,8 @@ ;; failed to figure out what this is: (defstate robotboss-green-wait (robotboss) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) (ja-channel-push! 1 (seconds 0.2)) (ja :group! robotboss-green-roar-ja) @@ -2040,7 +2040,7 @@ ) ) (else - (robotboss-handler arg0 arg1 arg2 arg3) + (robotboss-handler proc arg1 event-type event) ) ) ) diff --git a/test/decompiler/reference/jak1/levels/finalboss/sage-finalboss_REF.gc b/test/decompiler/reference/jak1/levels/finalboss/sage-finalboss_REF.gc index ae47f219ac..593a59ba68 100644 --- a/test/decompiler/reference/jak1/levels/finalboss/sage-finalboss_REF.gc +++ b/test/decompiler/reference/jak1/levels/finalboss/sage-finalboss_REF.gc @@ -88,11 +88,11 @@ ;; failed to figure out what this is: (defstate plat-path-active (plat-eco-finalboss) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('target) (process-entity-status! self (entity-perm-status complete) #t) - (set! (-> self force-dest) (the-as float (-> arg3 param 0))) + (set! (-> self force-dest) (the-as float (-> event param 0))) ) (('ridden 'edge-grabbed) (if (>= (- (-> *display* base-frame-counter) (-> self touch-time)) (seconds 2)) @@ -114,7 +114,7 @@ #f ) (else - (plat-event arg0 arg1 arg2 arg3) + (plat-event proc arg1 event-type event) ) ) ) @@ -629,8 +629,8 @@ ;; failed to figure out what this is: (defstate play-anim (sage-finalboss) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('fade) (set! (-> self credit-fade) 1.0) ) @@ -639,12 +639,12 @@ ) (('activate-particle) (let ((v0-0 (the-as object #t))) - (set! (-> self particle (-> arg3 param 0) active) (the-as symbol v0-0)) + (set! (-> self particle (-> event param 0) active) (the-as symbol v0-0)) v0-0 ) ) (('deactivate-particle) - (set! (-> self particle (-> arg3 param 0) active) #f) + (set! (-> self particle (-> event param 0) active) #f) #f ) ) diff --git a/test/decompiler/reference/jak1/levels/firecanyon/firecanyon-obs_REF.gc b/test/decompiler/reference/jak1/levels/firecanyon/firecanyon-obs_REF.gc index a9bd6b6b89..110bfa711c 100644 --- a/test/decompiler/reference/jak1/levels/firecanyon/firecanyon-obs_REF.gc +++ b/test/decompiler/reference/jak1/levels/firecanyon/firecanyon-obs_REF.gc @@ -124,10 +124,10 @@ ;; failed to figure out what this is: (defstate balloon-idle (balloon) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('attack) - (send-event arg0 'heat -10.0) + (send-event proc 'heat -10.0) (go balloon-popping) ) ) @@ -202,8 +202,8 @@ ;; failed to figure out what this is: (defstate spike-up (spike) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'go-spike-up) #t ) @@ -254,8 +254,8 @@ ;; failed to figure out what this is: (defstate spike-down (spike) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'go-spike-up) (go spike-up) #t @@ -647,10 +647,10 @@ ;; failed to figure out what this is: (defstate idle (crate-darkeco-cluster) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('attack 'touch) - (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode 'darkeco)))) + (send-event proc 'attack (-> event param 0) (static-attack-info ((mode 'darkeco)))) (go-virtual die) ) ) diff --git a/test/decompiler/reference/jak1/levels/flut_common/flutflut_REF.gc b/test/decompiler/reference/jak1/levels/flut_common/flutflut_REF.gc index dd07b00530..a97742e079 100644 --- a/test/decompiler/reference/jak1/levels/flut_common/flutflut_REF.gc +++ b/test/decompiler/reference/jak1/levels/flut_common/flutflut_REF.gc @@ -92,13 +92,13 @@ ;; failed to figure out what this is: (defstate wait-for-start (flutflut) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'trans) - (vector+! (the-as vector (-> arg3 param 0)) (-> self root-override trans) (-> self extra-trans)) + (vector+! (the-as vector (-> event param 0)) (-> self root-override trans) (-> self extra-trans)) ) ((= v1-0 'notify) (let ((v0-1 (the-as structure #t))) @@ -261,8 +261,8 @@ ;; failed to figure out what this is: (defstate pickup (flutflut) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('draw) (ja-channel-set! 1) (ja :group! (-> self draw art-group data 3)) @@ -271,7 +271,7 @@ (transform-post) ) (('trans) - (vector+! (the-as vector (-> arg3 param 0)) (-> self root-override trans) (-> self extra-trans)) + (vector+! (the-as vector (-> event param 0)) (-> self root-override trans) (-> self extra-trans)) ) (('touch 'attack) #f @@ -312,14 +312,14 @@ ;; failed to figure out what this is: (defstate wait-for-return (flutflut) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (if (and (or (= arg2 'touch) (= arg2 'attack)) (send-event *target* 'end-mode)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (if (and (or (= event-type 'touch) (= event-type 'attack)) (send-event *target* 'end-mode)) (go-virtual pickup (method-of-object self idle)) ) (the-as object - (if (= arg2 'trans) - (vector+! (the-as vector (-> arg3 param 0)) (-> self root-override trans) (-> self extra-trans)) + (if (= event-type 'trans) + (vector+! (the-as vector (-> event param 0)) (-> self root-override trans) (-> self extra-trans)) ) ) ) diff --git a/test/decompiler/reference/jak1/levels/flut_common/target-flut_REF.gc b/test/decompiler/reference/jak1/levels/flut_common/target-flut_REF.gc index edb91b49e9..e5a1272c94 100644 --- a/test/decompiler/reference/jak1/levels/flut_common/target-flut_REF.gc +++ b/test/decompiler/reference/jak1/levels/flut_common/target-flut_REF.gc @@ -792,10 +792,10 @@ ;; failed to figure out what this is: (defstate target-flut-jump (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (when (and (= arg2 'touched) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (when (and (= event-type 'touched) ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (-> self control) (the-as uint 6) ) @@ -806,22 +806,22 @@ ) ) ) - (send-event arg0 'bonk (-> arg3 param 0) (-> self control ground-impact-vel)) + (send-event proc 'bonk (-> event param 0) (-> self control ground-impact-vel)) (when (target-send-attack - arg0 + proc (the-as uint 'flut-bonk) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (-> self control unknown-dword50) (-> self control unknown-dword51) ) ) ) - (case arg2 + (case event-type (('jump) - (go target-flut-jump (the-as float (-> arg3 param 0)) (the-as float (-> arg3 param 0))) + (go target-flut-jump (the-as float (-> event param 0)) (the-as float (-> event param 0))) ) (else - (target-flut-standard-event-handler arg0 arg1 arg2 arg3) + (target-flut-standard-event-handler proc arg1 event-type event) ) ) ) @@ -1191,19 +1191,19 @@ ;; failed to figure out what this is: (defstate target-flut-running-attack (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touched) (cond (((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (-> self control) (the-as uint 224) ) (let ((gp-1 (target-send-attack - arg0 + proc (the-as uint (-> self control unknown-symbol30)) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (-> self control unknown-dword50) (-> self control unknown-dword51) ) @@ -1211,8 +1211,8 @@ ) (when gp-1 (set! (-> self control unknown-uint20) (the-as uint (-> *display* base-frame-counter))) - (let ((v1-9 (if (and (nonzero? arg0) (type-type? (-> arg0 type) process-drawable)) - arg0 + (let ((v1-9 (if (and (nonzero? proc) (type-type? (-> proc type) process-drawable)) + proc ) ) ) @@ -1243,12 +1243,12 @@ ) ) (else - (target-flut-dangerous-event-handler arg0 arg1 arg2 arg3) + (target-flut-dangerous-event-handler proc arg1 event-type event) ) ) ) (else - (target-flut-dangerous-event-handler arg0 arg1 arg2 arg3) + (target-flut-dangerous-event-handler proc arg1 event-type event) ) ) ) @@ -1460,10 +1460,10 @@ ;; failed to figure out what this is: (defstate target-flut-air-attack (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (if (and (= arg2 'touched) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (if (and (= event-type 'touched) ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (-> self control) (the-as uint 6) ) @@ -1474,14 +1474,14 @@ ) ) ) - (send-event arg0 'bonk (-> arg3 param 0) (-> self control ground-impact-vel)) + (send-event proc 'bonk (-> event param 0) (-> self control ground-impact-vel)) ) - (case arg2 + (case event-type (('jump) - (go target-flut-jump (the-as float (-> arg3 param 0)) (the-as float (-> arg3 param 0))) + (go target-flut-jump (the-as float (-> event param 0)) (the-as float (-> event param 0))) ) (else - (target-flut-dangerous-event-handler arg0 arg1 arg2 arg3) + (target-flut-dangerous-event-handler proc arg1 event-type event) ) ) ) @@ -2161,21 +2161,21 @@ ;; failed to figure out what this is: (defstate target-flut-grab (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (cond - ((and (= arg2 'query) (= (-> arg3 param 0) 'mode)) + ((and (= event-type 'query) (= (-> event param 0) 'mode)) (-> self state name) ) (else - (case arg2 + (case event-type (('end-mode) (go target-flut-stance) ) (('clone-anim) - (go target-flut-clone-anim (process->handle (the-as process (-> arg3 param 0)))) + (go target-flut-clone-anim (process->handle (the-as process (-> event param 0)))) ) (else - (target-generic-event-handler arg0 arg1 arg2 arg3) + (target-generic-event-handler proc arg1 event-type event) ) ) ) @@ -2203,11 +2203,11 @@ ;; failed to figure out what this is: (defstate target-flut-clone-anim (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (if (and (= arg2 'trans) (= (-> arg3 param 0) 'restore)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (if (and (= event-type 'trans) (= (-> event param 0) 'restore)) (set! (-> self control unknown-uint20) (the-as uint #f)) ) - ((-> target-flut-grab event) arg0 arg1 arg2 arg3) + ((-> target-flut-grab event) proc arg1 event-type event) ) :enter (-> target-clone-anim enter) :exit (behavior () diff --git a/test/decompiler/reference/jak1/levels/jungle/bouncer_REF.gc b/test/decompiler/reference/jak1/levels/jungle/bouncer_REF.gc index 92bed6abce..c1d78d83db 100644 --- a/test/decompiler/reference/jak1/levels/jungle/bouncer_REF.gc +++ b/test/decompiler/reference/jak1/levels/jungle/bouncer_REF.gc @@ -40,10 +40,10 @@ ;; failed to figure out what this is: (defstate bouncer-wait (springbox) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('bonk) - (when (send-event arg0 'jump (-> self spring-height) (-> self spring-height) #f) + (when (send-event proc 'jump (-> self spring-height) (-> self spring-height) #f) (sound-play "trampoline") (go bouncer-fire) ) @@ -54,7 +54,7 @@ ) ) (('attack) - (when (and (= (-> arg3 param 1) 'flop) (send-event arg0 'jump (-> self spring-height) (-> self spring-height) #f)) + (when (and (= (-> event param 1) 'flop) (send-event proc 'jump (-> self spring-height) (-> self spring-height) #f)) (go bouncer-fire) #f ) @@ -74,14 +74,14 @@ ;; failed to figure out what this is: (defstate bouncer-smush (springbox) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch) (set! (-> self state-time) (-> *display* base-frame-counter)) #f ) (else - ((-> bouncer-wait event) arg0 arg1 arg2 arg3) + ((-> bouncer-wait event) proc arg1 event-type event) ) ) ) diff --git a/test/decompiler/reference/jak1/levels/jungle/fisher_REF.gc b/test/decompiler/reference/jak1/levels/jungle/fisher_REF.gc index 48a617d27d..15bf462658 100644 --- a/test/decompiler/reference/jak1/levels/jungle/fisher_REF.gc +++ b/test/decompiler/reference/jak1/levels/jungle/fisher_REF.gc @@ -1625,18 +1625,18 @@ ;; failed to figure out what this is: (defstate fisher-playing (fisher) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-2 object)) - (case arg2 + (case event-type (('fisher-fish-die) (sound-play "fish-miss") - (set! v0-2 (+ (-> self missed) (-> arg3 param 0))) + (set! v0-2 (+ (-> self missed) (-> event param 0))) (set! (-> self missed) (the-as int v0-2)) v0-2 ) (('fisher-fish-caught) (send-event *target* 'bounce) - (set! v0-2 (+ (-> self caught) (-> arg3 param 0))) + (set! v0-2 (+ (-> self caught) (-> event param 0))) (set! (-> self caught) (the-as int v0-2)) v0-2 ) @@ -1822,9 +1822,9 @@ ;; failed to figure out what this is: (defstate play-accept (fisher) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-0 rgbaf)) - (let ((v1-0 arg2)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'emissive-on) (set-vector! (-> self draw color-mult) 0.6 0.6 0.6 1.0) @@ -2124,18 +2124,18 @@ ;; failed to figure out what this is: (defstate target-fishing (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (cond - ((= arg2 'bounce) + ((= event-type 'bounce) (set-zero! (-> self control unknown-smush00)) (activate! (-> self control unknown-smush00) 1.0 120 210 0.3 1.0) ) - ((= arg2 'lose) - (set! (-> self control unknown-uint20) (the-as uint arg2)) - arg2 + ((= event-type 'lose) + (set! (-> self control unknown-uint20) (the-as uint event-type)) + event-type ) (else - ((-> target-grab event) arg0 arg1 arg2 arg3) + ((-> target-grab event) proc arg1 event-type event) ) ) ) diff --git a/test/decompiler/reference/jak1/levels/jungle/jungle-mirrors_REF.gc b/test/decompiler/reference/jak1/levels/jungle/jungle-mirrors_REF.gc index 8d7403aa58..059dfbb672 100644 --- a/test/decompiler/reference/jak1/levels/jungle/jungle-mirrors_REF.gc +++ b/test/decompiler/reference/jak1/levels/jungle/jungle-mirrors_REF.gc @@ -1286,8 +1286,8 @@ ;; failed to figure out what this is: (defstate periscope-idle (periscope) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('activate) (logclear! (-> self mask) (process-mask actor-pause)) (go periscope-activate) @@ -1392,8 +1392,8 @@ ;; failed to figure out what this is: (defstate periscope-wait-for-player (periscope) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch) (when (and *target* (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) (zero? (logand (-> *target* control status) (cshape-moving-flags onsurf))) @@ -1401,7 +1401,7 @@ ) ) (when ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (the-as collide-shape-moving (-> self root-override)) (the-as uint 1) ) @@ -1946,8 +1946,8 @@ ;; failed to figure out what this is: (defstate reflector-mirror-idle (reflector-mirror) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('attack) (sound-play "mirror-smash") (go reflector-mirror-broken #f) diff --git a/test/decompiler/reference/jak1/levels/jungle/jungle-obs_REF.gc b/test/decompiler/reference/jak1/levels/jungle/jungle-obs_REF.gc index 31bcd57ddd..049d5484b7 100644 --- a/test/decompiler/reference/jak1/levels/jungle/jungle-obs_REF.gc +++ b/test/decompiler/reference/jak1/levels/jungle/jungle-obs_REF.gc @@ -58,9 +58,9 @@ ;; failed to figure out what this is: (defstate idle (logtrap) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (if (or (= arg2 'touch) (= arg2 'attack)) - (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (if (or (= event-type 'touch) (= event-type 'attack)) + (send-event proc 'attack (-> event param 0) (new 'static 'attack-info)) ) ) :code (behavior () @@ -210,8 +210,8 @@ ;; failed to figure out what this is: (defstate lurkerm-tall-sail-idle (lurkerm-tall-sail) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'stop) (process-entity-status! self (entity-perm-status complete) #t) (set! (-> self speed) 0.0) @@ -316,8 +316,8 @@ ;; failed to figure out what this is: (defstate lurkerm-short-sail-idle (lurkerm-short-sail) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'stop) (process-entity-status! self (entity-perm-status complete) #t) (set! (-> self speed) 0.0) @@ -445,8 +445,8 @@ ;; failed to figure out what this is: (defstate lurkerm-piston-idle (lurkerm-piston) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'stop) (process-entity-status! self (entity-perm-status complete) #t) (set! (-> self speed) 0.0) @@ -572,8 +572,8 @@ ;; failed to figure out what this is: (defstate accordian-idle (accordian) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'stop) (process-entity-status! self (entity-perm-status complete) #t) (set! (-> self speed) 0.0) @@ -750,8 +750,8 @@ ;; failed to figure out what this is: (defstate precurbridge-idle (precurbridge) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('go) (go precurbridge-activate) ) @@ -837,12 +837,12 @@ ;; failed to figure out what this is: (defstate precurbridge-active (precurbridge) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'bonk) - (let* ((gp-0 (the-as object (-> arg3 param 0))) + (let* ((gp-0 (the-as object (-> event param 0))) (a0-2 (-> (the-as touching-shapes-entry gp-0) head)) (s5-0 (-> self root-override)) ) diff --git a/test/decompiler/reference/jak1/levels/jungleb/jungleb-obs_REF.gc b/test/decompiler/reference/jak1/levels/jungleb/jungleb-obs_REF.gc index c3ecbf09c4..22e186ec17 100644 --- a/test/decompiler/reference/jak1/levels/jungleb/jungleb-obs_REF.gc +++ b/test/decompiler/reference/jak1/levels/jungleb/jungleb-obs_REF.gc @@ -198,12 +198,12 @@ ;; failed to figure out what this is: (defstate eggtop-idle (eggtop) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'notify) - (case (-> arg3 param 0) + (case (-> event param 0) (('pickup) - (if (type-type? (-> arg0 type) fuel-cell) + (if (type-type? (-> proc type) fuel-cell) (save-reminder (get-task-control (-> self entity extra perm task)) 1 0) ) ) diff --git a/test/decompiler/reference/jak1/levels/jungleb/plant-boss_REF.gc b/test/decompiler/reference/jak1/levels/jungleb/plant-boss_REF.gc index d6a96d46c8..d48e5a5f99 100644 --- a/test/decompiler/reference/jak1/levels/jungleb/plant-boss_REF.gc +++ b/test/decompiler/reference/jak1/levels/jungleb/plant-boss_REF.gc @@ -289,13 +289,13 @@ ;; failed to figure out what this is: (defstate plant-boss-arm-idle (plant-boss-arm) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('hide 'die) - (go plant-boss-arm-die (the-as symbol (-> arg3 param 0))) + (go plant-boss-arm-die (the-as symbol (-> event param 0))) ) (('hit) - (go plant-boss-arm-hit (the-as basic (-> arg3 param 0))) + (go plant-boss-arm-hit (the-as basic (-> event param 0))) ) ) ) @@ -407,16 +407,16 @@ ;; failed to figure out what this is: (defstate plant-boss-back-arms-idle (plant-boss-arm) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (if (or (= arg2 'touch) (= arg2 'attack)) - (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (if (or (= event-type 'touch) (= event-type 'attack)) + (send-event proc 'attack (-> event param 0) (new 'static 'attack-info)) ) (cond - ((= arg2 'hit) - (go plant-boss-back-arms-hit (the-as symbol (-> arg3 param 0))) + ((= event-type 'hit) + (go plant-boss-back-arms-hit (the-as symbol (-> event param 0))) ) - ((= arg2 'die) - (go plant-boss-back-arms-die (the-as symbol (-> arg3 param 0))) + ((= event-type 'die) + (go plant-boss-back-arms-die (the-as symbol (-> event param 0))) ) ) ) @@ -502,13 +502,13 @@ ;; failed to figure out what this is: (defstate plant-boss-vine-idle (plant-boss-arm) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('hide 'die) - (go plant-boss-vine-die (the-as symbol (-> arg3 param 0))) + (go plant-boss-vine-die (the-as symbol (-> event param 0))) ) (('hit) - (go plant-boss-vine-hit (the-as basic (-> arg3 param 0))) + (go plant-boss-vine-hit (the-as basic (-> event param 0))) ) ) ) @@ -577,10 +577,10 @@ ;; failed to figure out what this is: (defstate plant-boss-root-idle (plant-boss-arm) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('hide 'die) - (go plant-boss-root-die (the-as symbol (-> arg3 param 0))) + (go plant-boss-root-die (the-as symbol (-> event param 0))) ) ) ) @@ -742,13 +742,13 @@ ;; failed to figure out what this is: (defstate plant-boss-leaf-idle (plant-boss-leaf) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) - (go plant-boss-leaf-open (the-as symbol (-> arg3 param 0))) + (go plant-boss-leaf-open (the-as symbol (-> event param 0))) ) (('die) - (go plant-boss-leaf-die (the-as basic (-> arg3 param 0))) + (go plant-boss-leaf-die (the-as basic (-> event param 0))) ) ) ) @@ -782,13 +782,13 @@ ;; failed to figure out what this is: (defstate plant-boss-leaf-open (plant-boss-leaf) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('kill) (go plant-boss-leaf-close) ) (('die) - (go plant-boss-leaf-die (the-as basic (-> arg3 param 0))) + (go plant-boss-leaf-die (the-as basic (-> event param 0))) ) ) ) @@ -840,11 +840,11 @@ ;; failed to figure out what this is: (defstate plant-boss-leaf-open-idle (plant-boss-leaf) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('kill) (set! (-> self state-object) #t) - (let ((v0-0 (the-as object (+ (-> *display* base-frame-counter) (the-as time-frame (-> arg3 param 0)))))) + (let ((v0-0 (the-as object (+ (-> *display* base-frame-counter) (the-as time-frame (-> event param 0)))))) (set! (-> self state-time-frame) (the-as time-frame v0-0)) v0-0 ) @@ -855,7 +855,7 @@ ) ) (('die) - (go plant-boss-leaf-die (the-as basic (-> arg3 param 0))) + (go plant-boss-leaf-die (the-as basic (-> event param 0))) ) ) ) @@ -889,17 +889,17 @@ ;; failed to figure out what this is: (defstate plant-boss-leaf-bounce (plant-boss-leaf) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('kill) (set! (-> self state-object) #t) - (let ((v0-0 (the-as object (+ (-> *display* base-frame-counter) (the-as time-frame (-> arg3 param 0)))))) + (let ((v0-0 (the-as object (+ (-> *display* base-frame-counter) (the-as time-frame (-> event param 0)))))) (set! (-> self state-time-frame) (the-as time-frame v0-0)) v0-0 ) ) (('die) - (go plant-boss-leaf-die (the-as basic (-> arg3 param 0))) + (go plant-boss-leaf-die (the-as basic (-> event param 0))) ) ) ) @@ -932,10 +932,10 @@ ;; failed to figure out what this is: (defstate plant-boss-leaf-close (plant-boss-leaf) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('die) - (go plant-boss-leaf-die (the-as basic (-> arg3 param 0))) + (go plant-boss-leaf-die (the-as basic (-> event param 0))) ) ) ) @@ -1325,25 +1325,25 @@ ;; failed to figure out what this is: (defstate plant-boss-vulnerable (plant-boss) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('attack) (when ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (the-as collide-shape-moving (-> self root-override)) (the-as uint 1) ) (send-event - arg0 + proc 'shove - (-> arg3 param 0) + (-> event param 0) (static-attack-info ((shove-up (meters 2)) (shove-back (meters 6)))) ) - (go plant-boss-hit (the-as symbol (-> arg3 param 1))) + (go plant-boss-hit (the-as symbol (-> event param 1))) ) ) (else - (plant-boss-generic-event-handler arg0 arg1 arg2 arg3) + (plant-boss-generic-event-handler proc arg1 event-type event) ) ) ) @@ -1425,17 +1425,17 @@ ;; failed to figure out what this is: (defstate plant-boss-attack (plant-boss) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch 'attack) (when (and ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (the-as collide-shape-moving (-> self root-override)) (the-as uint 1) ) (not (ja-group? plant-boss-main-vulnerable2idle-ja)) ) - (when (send-event arg0 'attack-or-shove (-> arg3 param 0) (static-attack-info ((mode 'plant-boss)))) + (when (send-event proc 'attack-or-shove (-> event param 0) (static-attack-info ((mode 'plant-boss)))) (let ((v0-1 (the-as object #t))) (set! (-> self ate) (the-as symbol v0-1)) v0-1 @@ -1444,7 +1444,7 @@ ) ) (else - (plant-boss-default-event-handler arg0 arg1 arg2 arg3) + (plant-boss-default-event-handler proc arg1 event-type event) ) ) ) @@ -1778,20 +1778,20 @@ ;; failed to figure out what this is: (defstate plant-boss-dead-idle (plant-boss) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('bonk) (go plant-boss-dead-bounce (lerp-scale (the-as float 0.1) (the-as float 1.0) - (the-as float (-> arg3 param 1)) + (the-as float (-> event param 1)) (the-as float 40960.0) (the-as float 81920.0) ) ) ) (else - (plant-boss-generic-event-handler arg0 arg1 arg2 arg3) + (plant-boss-generic-event-handler proc arg1 event-type event) ) ) ) diff --git a/test/decompiler/reference/jak1/levels/jungleb/plat-flip_REF.gc b/test/decompiler/reference/jak1/levels/jungleb/plat-flip_REF.gc index 6c8cc5c475..1c1db95697 100644 --- a/test/decompiler/reference/jak1/levels/jungleb/plat-flip_REF.gc +++ b/test/decompiler/reference/jak1/levels/jungleb/plat-flip_REF.gc @@ -50,14 +50,14 @@ ;; failed to figure out what this is: (defstate plat-flip-idle (plat-flip) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'bonk) (activate! (-> self smush) -1.0 90 300 1.0 1.0) ) ((= v1-0 'touch) - (send-event arg0 'no-look-around (seconds 1.5)) + (send-event proc 'no-look-around (seconds 1.5)) (the-as smush-control #f) ) ) diff --git a/test/decompiler/reference/jak1/levels/lavatube/lavatube-energy_REF.gc b/test/decompiler/reference/jak1/levels/lavatube/lavatube-energy_REF.gc index bd0d54f359..f73741f004 100644 --- a/test/decompiler/reference/jak1/levels/lavatube/lavatube-energy_REF.gc +++ b/test/decompiler/reference/jak1/levels/lavatube/lavatube-energy_REF.gc @@ -710,8 +710,8 @@ ;; failed to figure out what this is: (defstate energybase-idle (energybase) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('stop) (go energybase-stopping) ) @@ -861,10 +861,10 @@ ;; failed to figure out what this is: (defstate energyball-idle (energyball) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'attack) - (when (and (>= arg1 2) (= (-> arg3 param 1) 'eco-yellow)) + (when (and (>= arg1 2) (= (-> event param 1) 'eco-yellow)) (increment-success-for-hint (game-text-id lavatube-balls)) (sound-play "dcrate-break") (process-spawn @@ -1034,8 +1034,8 @@ ;; failed to figure out what this is: (defstate energyarm-no-ball (energyarm) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('stop) (go energyarm-stop) ) @@ -1118,8 +1118,8 @@ ;; failed to figure out what this is: (defstate energyarm-idle (energyarm) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('stop) (go energyarm-stop) ) @@ -1350,8 +1350,8 @@ ;; failed to figure out what this is: (defstate energyhub-stop (energyhub) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'flash) (set! (-> self palette-val) 1.9921875) ) @@ -1432,8 +1432,8 @@ ;; failed to figure out what this is: (defstate energyhub-idle (energyhub) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'flash) (set! (-> self palette-val) 1.9921875) ) diff --git a/test/decompiler/reference/jak1/levels/lavatube/lavatube-obs_REF.gc b/test/decompiler/reference/jak1/levels/lavatube/lavatube-obs_REF.gc index f1ee8d7401..6e55b7599f 100644 --- a/test/decompiler/reference/jak1/levels/lavatube/lavatube-obs_REF.gc +++ b/test/decompiler/reference/jak1/levels/lavatube/lavatube-obs_REF.gc @@ -622,26 +622,26 @@ ;; failed to figure out what this is: (defstate darkecobarrel-mover-move (darkecobarrel-mover) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch 'attack) (cond - ((= arg0 *target*) - (let ((s5-0 (-> arg3 param 0))) + ((= proc *target*) + (let ((s5-0 (-> event param 0))) (if (and s5-0 ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry s5-0) (-> self root-override) (the-as uint 1) ) - (send-event arg0 'attack-invinc s5-0 (static-attack-info ((mode 'death)))) + (send-event proc 'attack-invinc s5-0 (static-attack-info ((mode 'death)))) ) (go darkecobarrel-mover-die) ) ) ) ((>= arg1 2) - (case (-> arg3 param 1) + (case (-> event param 1) (('eco-yellow) (+! (-> self hits) 1) (cond @@ -649,8 +649,8 @@ (go darkecobarrel-mover-die) ) (else - (let ((v1-17 (if (and (nonzero? arg0) (type-type? (-> arg0 type) process-drawable)) - arg0 + (let ((v1-17 (if (and (nonzero? proc) (type-type? (-> proc type) process-drawable)) + proc ) ) (gp-1 (new 'stack-no-clear 'vector)) @@ -1194,10 +1194,10 @@ ;; failed to figure out what this is: (defstate idle (chainmine) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('attack 'touch) - (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode 'deadly)))) + (send-event proc 'attack (-> event param 0) (static-attack-info ((mode 'deadly)))) (go-virtual die) ) ) @@ -1380,10 +1380,10 @@ ;; failed to figure out what this is: (defstate idle (lavaballoon) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('attack) - (send-event arg0 'heat -10.0) + (send-event proc 'heat -10.0) (go-virtual die) ) ) diff --git a/test/decompiler/reference/jak1/levels/maincave/dark-crystal_REF.gc b/test/decompiler/reference/jak1/levels/maincave/dark-crystal_REF.gc index 9735b0e74d..9bfd424253 100644 --- a/test/decompiler/reference/jak1/levels/maincave/dark-crystal_REF.gc +++ b/test/decompiler/reference/jak1/levels/maincave/dark-crystal_REF.gc @@ -444,10 +444,10 @@ ;; failed to figure out what this is: (defstate dark-crystal-idle (dark-crystal) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch 'attack) - (if (= (-> arg0 type) target) + (if (= (-> proc type) target) (level-hint-spawn (game-text-id cave-dark-crystals-flee) "sksp0334" diff --git a/test/decompiler/reference/jak1/levels/maincave/gnawer_REF.gc b/test/decompiler/reference/jak1/levels/maincave/gnawer_REF.gc index 9f8582be94..a2265ee545 100644 --- a/test/decompiler/reference/jak1/levels/maincave/gnawer_REF.gc +++ b/test/decompiler/reference/jak1/levels/maincave/gnawer_REF.gc @@ -919,14 +919,14 @@ ;; failed to figure out what this is: (defstate gnawer-chewing-on-post (gnawer) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch) - (if (= (-> arg0 type) target) + (if (= (-> proc type) target) (send-event - arg0 + proc 'shove - (-> arg3 param 0) + (-> event param 0) (static-attack-info ((shove-up (meters 1.5)) (shove-back (meters 2.5)))) ) ) @@ -1074,26 +1074,26 @@ ;; failed to figure out what this is: (defstate gnawer-run (gnawer) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-0 object)) - (case arg2 + (case event-type (('touch) - (if (= (-> arg0 type) target) + (if (= (-> proc type) target) (send-event - arg0 + proc 'shove - (-> arg3 param 0) + (-> event param 0) (static-attack-info ((shove-up (meters 1.5)) (shove-back (meters 2.5)))) ) ) ) (('attack) (cond - ((= (-> arg0 type) target) + ((= (-> proc type) target) (send-event - arg0 + proc 'attack - (-> arg3 param 0) + (-> event param 0) (static-attack-info ((shove-up (meters 1.5)) (shove-back (meters 2.5)))) ) ) @@ -1101,7 +1101,7 @@ (if (< (- (-> *display* base-frame-counter) (-> self last-hit-time)) (seconds 0.5)) (return #f) ) - (let* ((a2-1 (the-as object (-> arg3 param 0))) + (let* ((a2-1 (the-as object (-> event param 0))) (v1-19 (-> (get-touched-prim (-> (the-as touching-shapes-entry a2-1) head) (-> self root-override) @@ -1223,11 +1223,11 @@ ;; failed to figure out what this is: (defstate gnawer-dying-give-pickups (gnawer) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'notify) - (if (and (= (-> arg0 type) money) (= (-> arg3 param 0) 'pickup)) - (dummy-30 self (the-as process-drawable arg0)) + (if (and (= (-> proc type) money) (= (-> event param 0) 'pickup)) + (dummy-30 self (the-as process-drawable proc)) ) ) ) @@ -1295,19 +1295,19 @@ ;; failed to figure out what this is: (defstate gnawer-give-fuel-cell (gnawer) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'notify) (cond - ((and (= (-> arg0 type) maincavecam) (= (-> arg3 param 0) 'die)) + ((and (= (-> proc type) maincavecam) (= (-> event param 0) 'die)) (process-entity-status! self (entity-perm-status bit-3) #f) (let ((v0-0 (the-as uint (logior (-> self mask) (process-mask actor-pause))))) (set! (-> self mask) (the-as process-mask v0-0)) v0-0 ) ) - ((and (= (-> arg0 type) money) (= (-> arg3 param 0) 'pickup)) - (dummy-30 self (the-as process-drawable arg0)) + ((and (= (-> proc type) money) (= (-> event param 0) 'pickup)) + (dummy-30 self (the-as process-drawable proc)) ) ) ) @@ -1364,11 +1364,11 @@ ;; failed to figure out what this is: (defstate gnawer-put-items-at-dest (gnawer) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'notify) - (if (and (= (-> arg0 type) money) (= (-> arg3 param 0) 'pickup)) - (dummy-30 self (the-as process-drawable arg0)) + (if (and (= (-> proc type) money) (= (-> event param 0) 'pickup)) + (dummy-30 self (the-as process-drawable proc)) ) ) ) diff --git a/test/decompiler/reference/jak1/levels/maincave/maincave-obs_REF.gc b/test/decompiler/reference/jak1/levels/maincave/maincave-obs_REF.gc index 9d59b38bea..3d2f91cd64 100644 --- a/test/decompiler/reference/jak1/levels/maincave/maincave-obs_REF.gc +++ b/test/decompiler/reference/jak1/levels/maincave/maincave-obs_REF.gc @@ -161,12 +161,12 @@ ;; failed to figure out what this is: (defstate cavecrusher-idle (cavecrusher) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (or (= v1-0 'touch) (= v1-0 'attack)) - (when (= (-> arg0 type) target) + (when (= (-> proc type) target) (if ((method-of-type touching-shapes-entry prims-touching-action?) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (-> *target* control) (collide-action solid) (collide-action) @@ -263,12 +263,12 @@ ;; failed to figure out what this is: (defstate idle (cavetrapdoor) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch) - (when (= (-> arg0 type) target) + (when (= (-> proc type) target) (when (>= (- (-> (target-pos 0) y) (-> self root-override trans y)) 409.6) - (send-event arg0 'no-look-around (seconds 1.5)) + (send-event proc 'no-look-around (seconds 1.5)) (go-virtual trigger) ) ) @@ -495,12 +495,12 @@ ;; failed to figure out what this is: (defstate caveflamepots-active (caveflamepots) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch 'attack) - (when (= (-> arg0 type) target) + (when (= (-> proc type) target) (when ((method-of-type touching-shapes-entry prims-touching-action?) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (-> *target* control) (collide-action solid) (collide-action) @@ -512,15 +512,15 @@ (< 0.75 (-> *target* control poly-normal y)) ) (send-event - arg0 + proc 'attack-or-shove - (-> arg3 param 0) + (-> event param 0) (static-attack-info ((mode 'burn) (vector (-> s4-0 vector)) (shove-up (-> s4-0 shove-up)))) ) (send-event - arg0 + proc 'attack-or-shove - (-> arg3 param 0) + (-> event param 0) (static-attack-info ((mode 'burn) (shove-up (meters 0)) (shove-back (meters 2)) @@ -1065,8 +1065,8 @@ ;; failed to figure out what this is: (defstate caveelevator-cycle-active (caveelevator) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'bonk) (activate! (-> self smush) -1.0 60 150 1.0 1.0) ) @@ -1108,14 +1108,14 @@ ;; failed to figure out what this is: (defstate caveelevator-one-way-idle-start (caveelevator) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('bonk) (activate! (-> self smush) -1.0 60 150 1.0 1.0) (go caveelevator-one-way-travel-to-end) ) (('attack 'touch) - (if (and (= (-> arg0 type) target) + (if (and (= (-> proc type) target) (>= 8192.0 (vector-vector-xz-distance (target-pos 0) (-> self root-override trans))) ) (go caveelevator-one-way-travel-to-end) @@ -1148,8 +1148,8 @@ ;; failed to figure out what this is: (defstate caveelevator-one-way-travel-to-end (caveelevator) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'bonk) (activate! (-> self smush) -1.0 60 150 1.0 1.0) ) @@ -1188,8 +1188,8 @@ ;; failed to figure out what this is: (defstate caveelevator-one-way-idle-end (caveelevator) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'bonk) (activate! (-> self smush) -1.0 60 150 1.0 1.0) ) @@ -1231,8 +1231,8 @@ ;; failed to figure out what this is: (defstate caveelevator-one-way-travel-to-start (caveelevator) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'bonk) (activate! (-> self smush) -1.0 60 150 1.0 1.0) ) diff --git a/test/decompiler/reference/jak1/levels/maincave/mother-spider-egg_REF.gc b/test/decompiler/reference/jak1/levels/maincave/mother-spider-egg_REF.gc index b54c073e80..395eea89e9 100644 --- a/test/decompiler/reference/jak1/levels/maincave/mother-spider-egg_REF.gc +++ b/test/decompiler/reference/jak1/levels/maincave/mother-spider-egg_REF.gc @@ -242,8 +242,8 @@ ;; failed to figure out what this is: (defstate mother-spider-egg-falling (mother-spider-egg) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch 'attack) (go mother-spider-egg-die-while-falling) ) @@ -288,14 +288,14 @@ ;; failed to figure out what this is: (defstate mother-spider-egg-on-ground (mother-spider-egg) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'touch) (send-shove-back (-> self root-override) - arg0 - (the-as touching-shapes-entry (-> arg3 param 0)) + proc + (the-as touching-shapes-entry (-> event param 0)) 0.7 6144.0 16384.0 diff --git a/test/decompiler/reference/jak1/levels/misty/balloonlurker_REF.gc b/test/decompiler/reference/jak1/levels/misty/balloonlurker_REF.gc index ff45efa8ff..1bb6efdb54 100644 --- a/test/decompiler/reference/jak1/levels/misty/balloonlurker_REF.gc +++ b/test/decompiler/reference/jak1/levels/misty/balloonlurker_REF.gc @@ -922,8 +922,8 @@ ;; failed to figure out what this is: (defstate balloonlurker-pilot-idle (balloonlurker-pilot) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('attack) (send-event (ppointer->process (-> self parent-override)) 'die) (go balloonlurker-pilot-die) diff --git a/test/decompiler/reference/jak1/levels/misty/misty-conveyor_REF.gc b/test/decompiler/reference/jak1/levels/misty/misty-conveyor_REF.gc index 4a489abb9a..26b0492c85 100644 --- a/test/decompiler/reference/jak1/levels/misty/misty-conveyor_REF.gc +++ b/test/decompiler/reference/jak1/levels/misty/misty-conveyor_REF.gc @@ -208,8 +208,8 @@ ;; failed to figure out what this is: (defstate keg-on-paddle (keg) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('detach) (go keg-paddle-to-path) ) diff --git a/test/decompiler/reference/jak1/levels/misty/misty-obs_REF.gc b/test/decompiler/reference/jak1/levels/misty/misty-obs_REF.gc index fd5a9d83fb..7b0aa84451 100644 --- a/test/decompiler/reference/jak1/levels/misty/misty-obs_REF.gc +++ b/test/decompiler/reference/jak1/levels/misty/misty-obs_REF.gc @@ -1467,10 +1467,10 @@ ;; failed to figure out what this is: (defstate breakaway-idle (breakaway) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch) - (send-event arg0 'no-look-around (seconds 1.5)) + (send-event proc 'no-look-around (seconds 1.5)) (go breakaway-about-to-fall) ) ) @@ -2067,8 +2067,8 @@ ;; failed to figure out what this is: (defstate boat-fuelcell-idle (boat-fuelcell) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('task-complete) (set! (-> self play-cutscene?) #t) (process-entity-status! self (entity-perm-status complete) #t) diff --git a/test/decompiler/reference/jak1/levels/misty/misty-teetertotter_REF.gc b/test/decompiler/reference/jak1/levels/misty/misty-teetertotter_REF.gc index 95ad9a3870..d9a7869645 100644 --- a/test/decompiler/reference/jak1/levels/misty/misty-teetertotter_REF.gc +++ b/test/decompiler/reference/jak1/levels/misty/misty-teetertotter_REF.gc @@ -49,10 +49,10 @@ ;; failed to figure out what this is: (defstate teetertotter-idle (teetertotter) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('attack) - (case (-> arg3 param 1) + (case (-> event param 1) (('flop) (when (target-on-end-of-teetertotter? self) (set! (-> self in-launch-window) #f) @@ -88,21 +88,21 @@ ;; failed to figure out what this is: (defstate teetertotter-launch (teetertotter) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (the-as object - (when (= arg2 'touch) + (when (= event-type 'touch) (if (and ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (the-as collide-shape-moving (-> self root)) (the-as uint 1) ) (-> self rock-is-dangerous) ) - (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode 'deadly)))) + (send-event proc 'attack (-> event param 0) (static-attack-info ((mode 'deadly)))) ) (when (and ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (the-as collide-shape-moving (-> self root)) (the-as uint 2) ) @@ -111,7 +111,7 @@ (-> self in-launch-window) ) (when (send-event - arg0 + proc 'shove #f (static-attack-info ((shove-back (meters 0)) (shove-up (meters 13)) (angle 'jump) (control 1.0))) diff --git a/test/decompiler/reference/jak1/levels/misty/misty-warehouse_REF.gc b/test/decompiler/reference/jak1/levels/misty/misty-warehouse_REF.gc index bccae768b3..457ea466ab 100644 --- a/test/decompiler/reference/jak1/levels/misty/misty-warehouse_REF.gc +++ b/test/decompiler/reference/jak1/levels/misty/misty-warehouse_REF.gc @@ -38,8 +38,8 @@ ;; failed to figure out what this is: (defstate silostep-idle (silostep) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) (go silostep-camera) ) diff --git a/test/decompiler/reference/jak1/levels/misty/mistycannon_REF.gc b/test/decompiler/reference/jak1/levels/misty/mistycannon_REF.gc index f299d517ab..8dde56e3da 100644 --- a/test/decompiler/reference/jak1/levels/misty/mistycannon_REF.gc +++ b/test/decompiler/reference/jak1/levels/misty/mistycannon_REF.gc @@ -719,8 +719,8 @@ ;; failed to figure out what this is: (defstate mistycannon-missile-idle (mistycannon-missile) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('attack) (go mistycannon-missile-explode) ) @@ -894,10 +894,10 @@ ;; failed to figure out what this is: (defstate mistycannon-missile-explode (mistycannon-missile) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touched) - (let* ((s4-0 arg0) + (let* ((s4-0 proc) (v1-2 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process-drawable)) s4-0 ) @@ -925,22 +925,22 @@ 0.0 ) (cond - ((= (-> arg0 type) target) - (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode 'explode)))) + ((= (-> proc type) target) + (send-event proc 'attack (-> event param 0) (static-attack-info ((mode 'explode)))) ) (else (let ((a1-4 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-4 from) self) (set! (-> a1-4 num-params) 4) (set! (-> a1-4 message) 'attack) - (set! (-> a1-4 param 0) (-> arg3 param 0)) + (set! (-> a1-4 param 0) (-> event param 0)) (set! (-> a1-4 param 1) (the-as uint 'explode)) (let ((v1-18 (+ *global-attack-id* 1))) (set! *global-attack-id* v1-18) (set! (-> a1-4 param 2) (the-as uint v1-18)) ) (set! (-> a1-4 param 3) (the-as uint 0)) - (send-event-function arg0 a1-4) + (send-event-function proc a1-4) ) ) ) @@ -1605,11 +1605,11 @@ ;; failed to figure out what this is: (defstate mistycannon-waiting-for-player (mistycannon) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch) (when ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (-> self root-override) (the-as uint 1) ) @@ -1712,8 +1712,8 @@ ;; failed to figure out what this is: (defstate mistycannon-player-control (mistycannon) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('change-mode) (send-event *camera* 'change-state cam-mistycannon 0) ) @@ -1812,11 +1812,11 @@ ;; failed to figure out what this is: (defstate mistycannon-waiting-for-player-to-fuck-off (mistycannon) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'touch) (when ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (-> self root-override) (the-as uint 1) ) diff --git a/test/decompiler/reference/jak1/levels/misty/quicksandlurker_REF.gc b/test/decompiler/reference/jak1/levels/misty/quicksandlurker_REF.gc index b735f5ad3f..ff544708e6 100644 --- a/test/decompiler/reference/jak1/levels/misty/quicksandlurker_REF.gc +++ b/test/decompiler/reference/jak1/levels/misty/quicksandlurker_REF.gc @@ -319,26 +319,26 @@ ;; failed to figure out what this is: (defstate quicksandlurker-missile-idle (quicksandlurker-missile) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touched) (when (cond - ((= (-> arg0 type) target) - (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode 'explode)))) + ((= (-> proc type) target) + (send-event proc 'attack (-> event param 0) (static-attack-info ((mode 'explode)))) ) (else (let ((a1-4 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-4 from) self) (set! (-> a1-4 num-params) 4) (set! (-> a1-4 message) 'attack) - (set! (-> a1-4 param 0) (-> arg3 param 0)) + (set! (-> a1-4 param 0) (-> event param 0)) (set! (-> a1-4 param 1) (the-as uint 'explode)) (let ((v1-12 (+ *global-attack-id* 1))) (set! *global-attack-id* v1-12) (set! (-> a1-4 param 2) (the-as uint v1-12)) ) (set! (-> a1-4 param 3) (the-as uint 0)) - (send-event-function arg0 a1-4) + (send-event-function proc a1-4) ) ) ) diff --git a/test/decompiler/reference/jak1/levels/misty/sidekick-human_REF.gc b/test/decompiler/reference/jak1/levels/misty/sidekick-human_REF.gc index 02997a808f..54b6076315 100644 --- a/test/decompiler/reference/jak1/levels/misty/sidekick-human_REF.gc +++ b/test/decompiler/reference/jak1/levels/misty/sidekick-human_REF.gc @@ -1500,8 +1500,8 @@ ;; failed to figure out what this is: (defstate play-anim (sequenceB) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('offset-army) (dotimes (gp-0 9) (let ((v1-3 (-> *lurker-army* gp-0))) diff --git a/test/decompiler/reference/jak1/levels/ogre/flying-lurker_REF.gc b/test/decompiler/reference/jak1/levels/ogre/flying-lurker_REF.gc index be2509c17c..a2597e5cd6 100644 --- a/test/decompiler/reference/jak1/levels/ogre/flying-lurker_REF.gc +++ b/test/decompiler/reference/jak1/levels/ogre/flying-lurker_REF.gc @@ -172,8 +172,8 @@ ;; failed to figure out what this is: (defstate plunger-lurker-flee (plunger-lurker) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'attack) (let ((v0-0 #t)) (set! (-> self got-hit) v0-0) @@ -231,8 +231,8 @@ ;; failed to figure out what this is: (defstate plunger-lurker-idle (plunger-lurker) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('plunge) (logclear! (-> self mask) (process-mask actor-pause)) (go plunger-lurker-plunge) @@ -641,8 +641,8 @@ ;; failed to figure out what this is: (defstate flying-lurker-fly (flying-lurker) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'clone-and-kill-links) (let ((a1-1 (new 'stack-no-clear 'event-message-block))) @@ -660,20 +660,20 @@ ) ) ) - (go flying-lurker-clone (the-as handle (-> arg3 param 0)) "") + (go flying-lurker-clone (the-as handle (-> event param 0)) "") ) ((= v1-0 'die) (let ((v1-7 (new 'stack-no-clear 'event-message-block))) - (set! (-> v1-7 from) arg0) + (set! (-> v1-7 from) proc) (set! (-> v1-7 num-params) arg1) - (set! (-> v1-7 message) arg2) - (set! (-> v1-7 param 0) (-> arg3 param 0)) - (set! (-> v1-7 param 1) (-> arg3 param 1)) - (set! (-> v1-7 param 2) (-> arg3 param 2)) - (set! (-> v1-7 param 3) (-> arg3 param 3)) - (set! (-> v1-7 param 4) (-> arg3 param 4)) - (set! (-> v1-7 param 5) (-> arg3 param 5)) - (set! (-> v1-7 param 6) (-> arg3 param 6)) + (set! (-> v1-7 message) event-type) + (set! (-> v1-7 param 0) (-> event param 0)) + (set! (-> v1-7 param 1) (-> event param 1)) + (set! (-> v1-7 param 2) (-> event param 2)) + (set! (-> v1-7 param 3) (-> event param 3)) + (set! (-> v1-7 param 4) (-> event param 4)) + (set! (-> v1-7 param 5) (-> event param 5)) + (set! (-> v1-7 param 6) (-> event param 6)) (let ((t9-2 send-event-function) (a1-3 (-> self link next)) ) @@ -690,16 +690,16 @@ ) ((= v1-0 'sleep) (let ((v1-12 (new 'stack-no-clear 'event-message-block))) - (set! (-> v1-12 from) arg0) + (set! (-> v1-12 from) proc) (set! (-> v1-12 num-params) arg1) - (set! (-> v1-12 message) arg2) - (set! (-> v1-12 param 0) (-> arg3 param 0)) - (set! (-> v1-12 param 1) (-> arg3 param 1)) - (set! (-> v1-12 param 2) (-> arg3 param 2)) - (set! (-> v1-12 param 3) (-> arg3 param 3)) - (set! (-> v1-12 param 4) (-> arg3 param 4)) - (set! (-> v1-12 param 5) (-> arg3 param 5)) - (set! (-> v1-12 param 6) (-> arg3 param 6)) + (set! (-> v1-12 message) event-type) + (set! (-> v1-12 param 0) (-> event param 0)) + (set! (-> v1-12 param 1) (-> event param 1)) + (set! (-> v1-12 param 2) (-> event param 2)) + (set! (-> v1-12 param 3) (-> event param 3)) + (set! (-> v1-12 param 4) (-> event param 4)) + (set! (-> v1-12 param 5) (-> event param 5)) + (set! (-> v1-12 param 6) (-> event param 6)) (let ((t9-5 send-event-function) (a1-5 (-> self link next)) ) @@ -715,16 +715,16 @@ ) ((= v1-0 'reset) (let ((v1-15 (new 'stack-no-clear 'event-message-block))) - (set! (-> v1-15 from) arg0) + (set! (-> v1-15 from) proc) (set! (-> v1-15 num-params) arg1) - (set! (-> v1-15 message) arg2) - (set! (-> v1-15 param 0) (-> arg3 param 0)) - (set! (-> v1-15 param 1) (-> arg3 param 1)) - (set! (-> v1-15 param 2) (-> arg3 param 2)) - (set! (-> v1-15 param 3) (-> arg3 param 3)) - (set! (-> v1-15 param 4) (-> arg3 param 4)) - (set! (-> v1-15 param 5) (-> arg3 param 5)) - (set! (-> v1-15 param 6) (-> arg3 param 6)) + (set! (-> v1-15 message) event-type) + (set! (-> v1-15 param 0) (-> event param 0)) + (set! (-> v1-15 param 1) (-> event param 1)) + (set! (-> v1-15 param 2) (-> event param 2)) + (set! (-> v1-15 param 3) (-> event param 3)) + (set! (-> v1-15 param 4) (-> event param 4)) + (set! (-> v1-15 param 5) (-> event param 5)) + (set! (-> v1-15 param 6) (-> event param 6)) (let ((t9-7 send-event-function) (a1-7 (-> self link next)) ) @@ -1039,21 +1039,21 @@ ;; failed to figure out what this is: (defstate flying-lurker-clone (flying-lurker) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'die) (let ((v1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> v1-1 from) arg0) + (set! (-> v1-1 from) proc) (set! (-> v1-1 num-params) arg1) - (set! (-> v1-1 message) arg2) - (set! (-> v1-1 param 0) (-> arg3 param 0)) - (set! (-> v1-1 param 1) (-> arg3 param 1)) - (set! (-> v1-1 param 2) (-> arg3 param 2)) - (set! (-> v1-1 param 3) (-> arg3 param 3)) - (set! (-> v1-1 param 4) (-> arg3 param 4)) - (set! (-> v1-1 param 5) (-> arg3 param 5)) - (set! (-> v1-1 param 6) (-> arg3 param 6)) + (set! (-> v1-1 message) event-type) + (set! (-> v1-1 param 0) (-> event param 0)) + (set! (-> v1-1 param 1) (-> event param 1)) + (set! (-> v1-1 param 2) (-> event param 2)) + (set! (-> v1-1 param 3) (-> event param 3)) + (set! (-> v1-1 param 4) (-> event param 4)) + (set! (-> v1-1 param 5) (-> event param 5)) + (set! (-> v1-1 param 6) (-> event param 6)) (let ((t9-0 send-event-function) (a1-1 (-> self link next)) ) @@ -1070,16 +1070,16 @@ ) ((= v1-0 'sleep) (let ((v1-6 (new 'stack-no-clear 'event-message-block))) - (set! (-> v1-6 from) arg0) + (set! (-> v1-6 from) proc) (set! (-> v1-6 num-params) arg1) - (set! (-> v1-6 message) arg2) - (set! (-> v1-6 param 0) (-> arg3 param 0)) - (set! (-> v1-6 param 1) (-> arg3 param 1)) - (set! (-> v1-6 param 2) (-> arg3 param 2)) - (set! (-> v1-6 param 3) (-> arg3 param 3)) - (set! (-> v1-6 param 4) (-> arg3 param 4)) - (set! (-> v1-6 param 5) (-> arg3 param 5)) - (set! (-> v1-6 param 6) (-> arg3 param 6)) + (set! (-> v1-6 message) event-type) + (set! (-> v1-6 param 0) (-> event param 0)) + (set! (-> v1-6 param 1) (-> event param 1)) + (set! (-> v1-6 param 2) (-> event param 2)) + (set! (-> v1-6 param 3) (-> event param 3)) + (set! (-> v1-6 param 4) (-> event param 4)) + (set! (-> v1-6 param 5) (-> event param 5)) + (set! (-> v1-6 param 6) (-> event param 6)) (let ((t9-3 send-event-function) (a1-3 (-> self link next)) ) @@ -1095,16 +1095,16 @@ ) ((= v1-0 'reset) (let ((v1-9 (new 'stack-no-clear 'event-message-block))) - (set! (-> v1-9 from) arg0) + (set! (-> v1-9 from) proc) (set! (-> v1-9 num-params) arg1) - (set! (-> v1-9 message) arg2) - (set! (-> v1-9 param 0) (-> arg3 param 0)) - (set! (-> v1-9 param 1) (-> arg3 param 1)) - (set! (-> v1-9 param 2) (-> arg3 param 2)) - (set! (-> v1-9 param 3) (-> arg3 param 3)) - (set! (-> v1-9 param 4) (-> arg3 param 4)) - (set! (-> v1-9 param 5) (-> arg3 param 5)) - (set! (-> v1-9 param 6) (-> arg3 param 6)) + (set! (-> v1-9 message) event-type) + (set! (-> v1-9 param 0) (-> event param 0)) + (set! (-> v1-9 param 1) (-> event param 1)) + (set! (-> v1-9 param 2) (-> event param 2)) + (set! (-> v1-9 param 3) (-> event param 3)) + (set! (-> v1-9 param 4) (-> event param 4)) + (set! (-> v1-9 param 5) (-> event param 5)) + (set! (-> v1-9 param 6) (-> event param 6)) (let ((t9-5 send-event-function) (a1-5 (-> self link next)) ) @@ -1119,7 +1119,7 @@ (deactivate self) ) (else - (flying-lurker-handler arg0 arg1 arg2 arg3) + (flying-lurker-handler proc arg1 event-type event) ) ) ) @@ -1137,23 +1137,23 @@ ;; failed to figure out what this is: (defstate flying-lurker-idle (flying-lurker) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('saw-player) (set! (-> self take-off) #t) (when (-> self link prev) (entity-birth-no-kill (-> self link prev)) (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) arg0) + (set! (-> a1-1 from) proc) (set! (-> a1-1 num-params) arg1) - (set! (-> a1-1 message) arg2) - (set! (-> a1-1 param 0) (-> arg3 param 0)) - (set! (-> a1-1 param 1) (-> arg3 param 1)) - (set! (-> a1-1 param 2) (-> arg3 param 2)) - (set! (-> a1-1 param 3) (-> arg3 param 3)) - (set! (-> a1-1 param 4) (-> arg3 param 4)) - (set! (-> a1-1 param 5) (-> arg3 param 5)) - (set! (-> a1-1 param 6) (-> arg3 param 6)) + (set! (-> a1-1 message) event-type) + (set! (-> a1-1 param 0) (-> event param 0)) + (set! (-> a1-1 param 1) (-> event param 1)) + (set! (-> a1-1 param 2) (-> event param 2)) + (set! (-> a1-1 param 3) (-> event param 3)) + (set! (-> a1-1 param 4) (-> event param 4)) + (set! (-> a1-1 param 5) (-> event param 5)) + (set! (-> a1-1 param 6) (-> event param 6)) (let ((t9-1 send-event-function) (v1-13 (-> self link prev)) ) @@ -1174,8 +1174,8 @@ (set! (-> a1-2 from) self) (set! (-> a1-2 num-params) 2) (set! (-> a1-2 message) 'clone) - (set! (-> a1-2 param 0) (-> arg3 param 0)) - (set! (-> a1-2 param 1) (+ (-> arg3 param 1) -1)) + (set! (-> a1-2 param 0) (-> event param 0)) + (set! (-> a1-2 param 1) (+ (-> event param 1) -1)) (let ((t9-3 send-event-function) (v1-25 (-> self link next)) ) @@ -1188,17 +1188,17 @@ ) ) ) - (case (-> arg3 param 1) + (case (-> event param 1) ((2) - (go flying-lurker-clone (the-as handle (-> arg3 param 0)) "flying-lurker-b-") + (go flying-lurker-clone (the-as handle (-> event param 0)) "flying-lurker-b-") ) ((1) - (go flying-lurker-clone (the-as handle (-> arg3 param 0)) "flying-lurker-c-") + (go flying-lurker-clone (the-as handle (-> event param 0)) "flying-lurker-c-") ) ) ) (else - (flying-lurker-handler arg0 arg1 arg2 arg3) + (flying-lurker-handler proc arg1 event-type event) ) ) ) diff --git a/test/decompiler/reference/jak1/levels/ogre/ogre-obs_REF.gc b/test/decompiler/reference/jak1/levels/ogre/ogre-obs_REF.gc index ed54ae5dc8..6aa3bc939a 100644 --- a/test/decompiler/reference/jak1/levels/ogre/ogre-obs_REF.gc +++ b/test/decompiler/reference/jak1/levels/ogre/ogre-obs_REF.gc @@ -378,8 +378,8 @@ ;; failed to figure out what this is: (defstate idle (tntbarrel) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('die-big) (go-virtual die #t) ) @@ -387,7 +387,7 @@ (go-virtual die #f) ) (('attack 'touch) - (send-event arg0 'attack-invinc (-> arg3 param 0) (static-attack-info ((mode 'death)))) + (send-event proc 'attack-invinc (-> event param 0) (static-attack-info ((mode 'death)))) (go-virtual die #f) ) ) @@ -508,11 +508,11 @@ ;; failed to figure out what this is: (defstate rigid-body-platform-idle (ogre-plat) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'trigger) (set! (-> self triggered) (the-as entity-actor #t)) - (set! (-> self delay) (the-as time-frame (-> arg3 param 0))) + (set! (-> self delay) (the-as time-frame (-> event param 0))) (let ((v0-0 (-> *display* base-frame-counter))) (set! (-> self state-time) v0-0) v0-0 @@ -1087,8 +1087,8 @@ ;; failed to figure out what this is: (defstate ogre-bridge-activated (ogre-bridge) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('break) (+! (-> self dead-joint-count) 4) (go ogre-bridge-break) @@ -1115,12 +1115,12 @@ ;; failed to figure out what this is: (defstate ogre-bridge-break (ogre-bridge) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'effect) - (when (= (-> arg3 param 0) 'splash) + (when (= (-> event param 0) 'splash) (let ((gp-0 (new 'stack-no-clear 'vector))) - (let ((a1-1 (-> arg3 param 2))) + (let ((a1-1 (-> event param 2))) (set! (-> gp-0 quad) (-> self node-list data a1-1 bone transform vector 3 quad)) ) (set! (-> gp-0 y) 118784.0) @@ -1439,8 +1439,8 @@ ;; failed to figure out what this is: (defstate water-vol-idle (ogre-lava) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('submerge1) (set! (-> self anim) 3) (go-virtual water-vol-idle) @@ -1462,7 +1462,7 @@ (go-virtual water-vol-idle) ) (else - ((-> (method-of-type water-anim water-vol-idle) event) arg0 arg1 arg2 arg3) + ((-> (method-of-type water-anim water-vol-idle) event) proc arg1 event-type event) ) ) ) @@ -1675,10 +1675,10 @@ ;; failed to figure out what this is: (defstate shortcut-boulder-idle (shortcut-boulder) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('attack) - (if (and (>= arg1 2) (= (-> arg3 param 1) 'eco-yellow)) + (if (and (>= arg1 2) (= (-> event param 1) 'eco-yellow)) (go shortcut-boulder-break) ) ) diff --git a/test/decompiler/reference/jak1/levels/ogre/ogreboss_REF.gc b/test/decompiler/reference/jak1/levels/ogre/ogreboss_REF.gc index 766f6fc39b..51cde1fc6b 100644 --- a/test/decompiler/reference/jak1/levels/ogre/ogreboss_REF.gc +++ b/test/decompiler/reference/jak1/levels/ogre/ogreboss_REF.gc @@ -212,37 +212,37 @@ ;; failed to figure out what this is: (defstate ogreboss-missile-impact (ogreboss-missile) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touched) (cond (#f (cond - ((= (-> arg0 type) target) - (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode 'explode)))) + ((= (-> proc type) target) + (send-event proc 'attack (-> event param 0) (static-attack-info ((mode 'explode)))) ) (else (let ((a1-2 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-2 from) self) (set! (-> a1-2 num-params) 4) (set! (-> a1-2 message) 'attack) - (set! (-> a1-2 param 0) (-> arg3 param 0)) + (set! (-> a1-2 param 0) (-> event param 0)) (set! (-> a1-2 param 1) (the-as uint 'explode)) (let ((v1-12 (+ *global-attack-id* 1))) (set! *global-attack-id* v1-12) (set! (-> a1-2 param 2) (the-as uint v1-12)) ) (set! (-> a1-2 param 3) (the-as uint 0)) - (send-event-function arg0 a1-2) + (send-event-function proc a1-2) ) ) ) - (if (= (-> arg0 type) target) + (if (= (-> proc type) target) (send-event (ppointer->process (-> self parent-override)) 'victory) ) ) (else - (let* ((s4-0 arg0) + (let* ((s4-0 proc) (t1-0 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) target)) s4-0 ) @@ -280,7 +280,7 @@ (the-as rgba (new 'static 'rgba :g #xff :a #x80)) ) (when (>= f30-0 0.0) - (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode 'damage)))) + (send-event proc 'attack (-> event param 0) (static-attack-info ((mode 'damage)))) (send-event (ppointer->process (-> self parent-override)) 'victory) ) ) @@ -289,7 +289,7 @@ (else (let ((v1-37 (new 'stack-no-clear 'vector))) (set-vector! v1-37 0.0 -12288000.0 0.0 1.0) - (send-event arg0 'impulse v1-37) + (send-event proc 'impulse v1-37) ) ) ) @@ -524,8 +524,8 @@ ;; failed to figure out what this is: (defstate ogreboss-super-boulder-idle (ogreboss-super-boulder) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('speedup) (set! (-> self speed) (* 1.3 (-> self speed))) ) @@ -1558,8 +1558,8 @@ ;; failed to figure out what this is: (defstate ogreboss-stage1 (ogreboss) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('next-stage) (set! (-> self bridge-assembled) #t) (go ogreboss-stage2) diff --git a/test/decompiler/reference/jak1/levels/racer_common/racer-states_REF.gc b/test/decompiler/reference/jak1/levels/racer_common/racer-states_REF.gc index d61c6b763d..c5cf4bf0f5 100644 --- a/test/decompiler/reference/jak1/levels/racer_common/racer-states_REF.gc +++ b/test/decompiler/reference/jak1/levels/racer_common/racer-states_REF.gc @@ -3,38 +3,38 @@ ;; failed to figure out what this is: (defstate target-racing-start (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (cond - ((and (= arg2 'query) (= (-> arg3 param 0) 'mode)) + ((and (= event-type 'query) (= (-> event param 0) 'mode)) 'racer ) - ((and (= arg2 'get-pickup) (= (-> arg3 param 0) 3)) + ((and (= event-type 'get-pickup) (= (-> event param 0) 3)) (if (>= (- (-> *display* base-frame-counter) (-> self racer boost-time)) (seconds 1)) - (send-event self 'boost (fmax 1.0 (fmin 2.0 (the-as float (-> arg3 param 1))))) + (send-event self 'boost (fmax 1.0 (fmin 2.0 (the-as float (-> event param 1))))) ) ) (else - (case arg2 + (case event-type (('end-mode) - (go target-racing-get-off (process->handle arg0)) + (go target-racing-get-off (process->handle proc)) ) (('touched) - (send-event arg0 'attack (-> arg3 param 0) 'racer 0 0) - (when (and (type-type? (-> arg0 type) babak) (< 40960.0 (-> self control unknown-float01))) + (send-event proc 'attack (-> event param 0) 'racer 0 0) + (when (and (type-type? (-> proc type) babak) (< 40960.0 (-> self control unknown-float01))) (let ((f0-5 (lerp-scale 16384.0 32768.0 (-> self control unknown-float01) 40960.0 (-> self racer transv-max)))) (go target-racing-jump f0-5 f0-5 #f) ) ) ) (('attack 'attack-or-shove 'attack-invinc) - (let ((v1-27 (the-as attack-info (-> arg3 param 1)))) + (let ((v1-27 (the-as attack-info (-> event param 1)))) (if (not (and (logtest? (-> v1-27 mask) (attack-mask mode)) (or (= (-> v1-27 mode) 'burn) (= (-> v1-27 mode) 'burnup))) ) (target-attacked - arg2 - (the-as attack-info (-> arg3 param 1)) - arg0 - (the-as touching-shapes-entry (-> arg3 param 0)) + event-type + (the-as attack-info (-> event param 1)) + proc + (the-as touching-shapes-entry (-> event param 0)) (the-as (state symbol attack-info target) target-racing-hit) ) ) @@ -42,7 +42,7 @@ ) (('heat) (set! (-> self racer heat) - (fmax 0.0 (fmin (+ (-> self racer heat) (the-as float (-> arg3 param 0))) (-> *RACER-bank* heat-max))) + (fmax 0.0 (fmin (+ (-> self racer heat) (the-as float (-> event param 0))) (-> *RACER-bank* heat-max))) ) ) (('boost) @@ -52,7 +52,7 @@ (set! (-> self racer boost-level) (seek (-> self racer boost-level) (-> *RACER-bank* boost-level-max) - (* (-> *RACER-bank* boost-level-inc) (the-as float (-> arg3 param 0))) + (* (-> *RACER-bank* boost-level-inc) (the-as float (-> event param 0))) ) ) ) @@ -60,20 +60,20 @@ (go target-racing-smack (-> self control unknown-float01) #t) ) (('jump) - (go target-racing-jump (the-as float (-> arg3 param 0)) (the-as float (-> arg3 param 1)) #f) + (go target-racing-jump (the-as float (-> event param 0)) (the-as float (-> event param 1)) #f) ) (('change-mode) - (case (-> arg3 param 0) + (case (-> event param 0) (('grab) (go target-racing-grab) ) ) ) (('clone-anim) - (go target-racing-clone-anim (process->handle (the-as process (-> arg3 param 0)))) + (go target-racing-clone-anim (process->handle (the-as process (-> event param 0)))) ) (else - (target-generic-event-handler arg0 arg1 arg2 arg3) + (target-generic-event-handler proc arg1 event-type event) ) ) ) @@ -1428,21 +1428,21 @@ ;; failed to figure out what this is: (defstate target-racing-grab (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (cond - ((and (= arg2 'query) (= (-> arg3 param 0) 'mode)) + ((and (= event-type 'query) (= (-> event param 0) 'mode)) (-> self state name) ) (else - (case arg2 + (case event-type (('end-mode) (go target-racing) ) (('clone-anim) - (go target-racing-clone-anim (process->handle (the-as process (-> arg3 param 0)))) + (go target-racing-clone-anim (process->handle (the-as process (-> event param 0)))) ) (else - (target-generic-event-handler arg0 arg1 arg2 arg3) + (target-generic-event-handler proc arg1 event-type event) ) ) ) @@ -1482,11 +1482,11 @@ ;; failed to figure out what this is: (defstate target-racing-clone-anim (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (if (and (= arg2 'trans) (= (-> arg3 param 0) 'restore)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (if (and (= event-type 'trans) (= (-> event param 0) 'restore)) (set! (-> self control unknown-uint20) (the-as uint #f)) ) - ((-> target-racing-grab event) arg0 arg1 arg2 arg3) + ((-> target-racing-grab event) proc arg1 event-type event) ) :enter (-> target-clone-anim enter) :exit (behavior () diff --git a/test/decompiler/reference/jak1/levels/racer_common/racer_REF.gc b/test/decompiler/reference/jak1/levels/racer_common/racer_REF.gc index 4c046dfab6..ac721a10a4 100644 --- a/test/decompiler/reference/jak1/levels/racer_common/racer_REF.gc +++ b/test/decompiler/reference/jak1/levels/racer_common/racer_REF.gc @@ -99,14 +99,14 @@ ;; failed to figure out what this is: (defstate wait-for-start (racer) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-1 structure)) - (let ((v1-0 arg2)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'trans) - (vector+! (the-as vector (-> arg3 param 0)) (-> self root-override trans) (-> self extra-trans)) + (vector+! (the-as vector (-> event param 0)) (-> self root-override trans) (-> self extra-trans)) ) ((= v1-0 'notify) (set! v0-1 #t) @@ -115,7 +115,7 @@ ) ((= v1-0 'shadow) (cond - ((-> arg3 param 0) + ((-> event param 0) (set! v0-1 (-> self shadow-backup)) (set! (-> self draw shadow) (the-as shadow-geo v0-1)) v0-1 @@ -287,8 +287,8 @@ ;; failed to figure out what this is: (defstate pickup (racer) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('draw) (ja-channel-set! 1) (ja :group! (-> self draw art-group data 3)) @@ -297,14 +297,14 @@ (transform-post) ) (('trans) - (vector+! (the-as vector (-> arg3 param 0)) (-> self root-override trans) (-> self extra-trans)) + (vector+! (the-as vector (-> event param 0)) (-> self root-override trans) (-> self extra-trans)) ) (('touch 'attack) #f ) (('shadow) (cond - ((-> arg3 param 0) + ((-> event param 0) (let ((v0-1 (the-as object (-> self shadow-backup)))) (set! (-> self draw shadow) (the-as shadow-geo v0-1)) v0-1 @@ -360,19 +360,21 @@ ;; failed to figure out what this is: (defstate wait-for-return (racer) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (if (and (or (= arg2 'touch) (= arg2 'attack)) (and (!= (-> self condition) 4) (send-event *target* 'end-mode))) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (if (and (or (= event-type 'touch) (= event-type 'attack)) + (and (!= (-> self condition) 4) (send-event *target* 'end-mode)) + ) (go-virtual pickup (the-as (state collectable) (method-of-object self idle))) ) (the-as object (cond - ((= arg2 'trans) - (vector+! (the-as vector (-> arg3 param 0)) (-> self root-override trans) (-> self extra-trans)) + ((= event-type 'trans) + (vector+! (the-as vector (-> event param 0)) (-> self root-override trans) (-> self extra-trans)) ) - ((= arg2 'shadow) + ((= event-type 'shadow) (cond - ((-> arg3 param 0) + ((-> event param 0) (let ((v0-3 (the-as structure (-> self shadow-backup)))) (set! (-> self draw shadow) (the-as shadow-geo v0-3)) v0-3 diff --git a/test/decompiler/reference/jak1/levels/robocave/cave-trap_REF.gc b/test/decompiler/reference/jak1/levels/robocave/cave-trap_REF.gc index 8d5c2ae8aa..0eb293c986 100644 --- a/test/decompiler/reference/jak1/levels/robocave/cave-trap_REF.gc +++ b/test/decompiler/reference/jak1/levels/robocave/cave-trap_REF.gc @@ -61,9 +61,9 @@ ;; failed to figure out what this is: (defstate spider-vent-idle (spider-vent) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-0 object)) - (case arg2 + (case event-type (('can-spawn?) (return (>= (- (-> *display* base-frame-counter) (-> self last-spawn-time)) (seconds 1))) v0-0 diff --git a/test/decompiler/reference/jak1/levels/robocave/spider-egg_REF.gc b/test/decompiler/reference/jak1/levels/robocave/spider-egg_REF.gc index 5d6289ad0a..52fab27f4f 100644 --- a/test/decompiler/reference/jak1/levels/robocave/spider-egg_REF.gc +++ b/test/decompiler/reference/jak1/levels/robocave/spider-egg_REF.gc @@ -50,15 +50,15 @@ ;; failed to figure out what this is: (defstate spider-egg-idle (spider-egg) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-0 none)) - (let ((v1-0 arg2)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'touch) (send-shove-back (-> self root-override) - arg0 - (the-as touching-shapes-entry (-> arg3 param 0)) + proc + (the-as touching-shapes-entry (-> event param 0)) 0.7 6144.0 16384.0 @@ -126,9 +126,9 @@ ;; failed to figure out what this is: (defstate spider-egg-hatch (spider-egg) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-0 symbol)) - (case arg2 + (case event-type (('can-spawn?) (return (the-as object #f)) v0-0 @@ -168,9 +168,9 @@ ;; failed to figure out what this is: (defstate spider-egg-die (spider-egg) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-0 symbol)) - (case arg2 + (case event-type (('can-spawn?) (return (the-as object #f)) v0-0 diff --git a/test/decompiler/reference/jak1/levels/rolling/rolling-lightning-mole_REF.gc b/test/decompiler/reference/jak1/levels/rolling/rolling-lightning-mole_REF.gc index d0fa139359..c1346e5edf 100644 --- a/test/decompiler/reference/jak1/levels/rolling/rolling-lightning-mole_REF.gc +++ b/test/decompiler/reference/jak1/levels/rolling/rolling-lightning-mole_REF.gc @@ -1299,8 +1299,8 @@ ;; failed to figure out what this is: (defstate peeper-wait (peeper) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'hide) (let ((v0-0 (-> *display* base-frame-counter))) (set! (-> self state-time) v0-0) @@ -1355,8 +1355,8 @@ ;; failed to figure out what this is: (defstate peeper-down (peeper) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('hide) (go peeper-wait) ) @@ -1404,8 +1404,8 @@ ;; failed to figure out what this is: (defstate peeper-up (peeper) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('hide) (go peeper-hide) ) diff --git a/test/decompiler/reference/jak1/levels/rolling/rolling-obs_REF.gc b/test/decompiler/reference/jak1/levels/rolling/rolling-obs_REF.gc index a871ecb83b..5aa2303f2a 100644 --- a/test/decompiler/reference/jak1/levels/rolling/rolling-obs_REF.gc +++ b/test/decompiler/reference/jak1/levels/rolling/rolling-obs_REF.gc @@ -945,8 +945,8 @@ ;; failed to figure out what this is: (defstate rolling-start-break (rolling-start) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('unbreak) (go rolling-start-whole) ) @@ -981,8 +981,8 @@ ;; failed to figure out what this is: (defstate rolling-start-whole (rolling-start) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('break) (sound-play "cool-rolling-st") (go rolling-start-break #f) @@ -1448,8 +1448,8 @@ ;; failed to figure out what this is: (defstate gorge-start-racing (gorge-start) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('finished) (go gorge-start-race-finished) ) diff --git a/test/decompiler/reference/jak1/levels/rolling/rolling-race-ring_REF.gc b/test/decompiler/reference/jak1/levels/rolling/rolling-race-ring_REF.gc index 251b738800..9fee54e139 100644 --- a/test/decompiler/reference/jak1/levels/rolling/rolling-race-ring_REF.gc +++ b/test/decompiler/reference/jak1/levels/rolling/rolling-race-ring_REF.gc @@ -609,13 +609,13 @@ ;; failed to figure out what this is: (defstate race-ring-active (race-ring) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-0 symbol)) - (let ((v1-0 arg2)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'notify) - (when (and (= (-> arg3 param 0) 'die) (= arg0 (-> self part-track process 0))) + (when (and (= (-> event param 0) 'die) (= proc (-> self part-track process 0))) (cond ((= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) (set! (-> self part-track) (ppointer->handle (process-spawn @@ -980,8 +980,8 @@ ;; failed to figure out what this is: (defstate race-ring-idle (race-ring) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('activate) (logclear! (-> self mask) (process-mask actor-pause)) (go race-ring-active) diff --git a/test/decompiler/reference/jak1/levels/snow/snow-ball_REF.gc b/test/decompiler/reference/jak1/levels/snow/snow-ball_REF.gc index 6f0adc0d4e..4fea94510c 100644 --- a/test/decompiler/reference/jak1/levels/snow/snow-ball_REF.gc +++ b/test/decompiler/reference/jak1/levels/snow/snow-ball_REF.gc @@ -438,10 +438,10 @@ ;; failed to figure out what this is: (defstate snow-ball-roller-idle (snow-ball-roller) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (or (= v1-0 'touch) (= v1-0 'attack)) - (when (= (-> arg0 type) target) + (when (= (-> proc type) target) (do-push-aways! (-> self root-override)) (when (>= (- (-> *display* base-frame-counter) (-> self hit-player-time)) (seconds 0.5)) (set! (-> self hit-player-time) (-> *display* base-frame-counter)) diff --git a/test/decompiler/reference/jak1/levels/snow/snow-bumper_REF.gc b/test/decompiler/reference/jak1/levels/snow/snow-bumper_REF.gc index 948a67ea4a..8a118102ad 100644 --- a/test/decompiler/reference/jak1/levels/snow/snow-bumper_REF.gc +++ b/test/decompiler/reference/jak1/levels/snow/snow-bumper_REF.gc @@ -176,11 +176,11 @@ ;; failed to figure out what this is: (defstate snow-bumper-active-close-idle (snow-bumper) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch 'attack 'bonk) - (when (= (-> arg0 type) target) - (let ((gp-0 (-> arg3 param 0))) + (when (= (-> proc type) target) + (let ((gp-0 (-> event param 0))) (when (and (>= 6144.0 (vector-vector-xz-distance (-> self root trans) (target-pos 0))) ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry gp-0) diff --git a/test/decompiler/reference/jak1/levels/snow/snow-flutflut-obs_REF.gc b/test/decompiler/reference/jak1/levels/snow/snow-flutflut-obs_REF.gc index 62e35214fd..b4198d4255 100644 --- a/test/decompiler/reference/jak1/levels/snow/snow-flutflut-obs_REF.gc +++ b/test/decompiler/reference/jak1/levels/snow/snow-flutflut-obs_REF.gc @@ -269,11 +269,11 @@ ;; failed to figure out what this is: (defstate snow-button-up-idle (snow-button) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-2 object)) - (case arg2 + (case event-type (('touch 'attack 'bonk) - (when (and (= (-> arg0 type) target) + (when (and (= (-> proc type) target) (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14)) (>= 10649.6 (vector-vector-xz-distance (-> self root-override trans) (target-pos 0))) ) @@ -301,9 +301,9 @@ ;; failed to figure out what this is: (defstate snow-button-activate (snow-button) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-0 object)) - (case arg2 + (case event-type (('untrigger) (go snow-button-deactivate) ) @@ -362,9 +362,9 @@ ;; failed to figure out what this is: (defstate snow-button-deactivate (snow-button) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-0 symbol)) - (case arg2 + (case event-type (('query) (return (the-as object #f)) v0-0 @@ -532,8 +532,8 @@ ;; failed to figure out what this is: (defstate plat-startup (flutflut-plat) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) (when (or (!= (-> self plat-type) 1) (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) @@ -580,8 +580,8 @@ ;; failed to figure out what this is: (defstate flutflut-plat-hidden-idle (flutflut-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) (logclear! (-> self mask) (process-mask actor-pause)) (go flutflut-plat-appear) @@ -608,8 +608,8 @@ ;; failed to figure out what this is: (defstate flutflut-plat-appear (flutflut-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (or (= v1-0 'bonk) (= v1-0 'bounce)) (dummy-22 self) ) @@ -685,8 +685,8 @@ ;; failed to figure out what this is: (defstate plat-idle (flutflut-plat) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((or (= v1-0 'bonk) (= v1-0 'bounce)) (dummy-22 self) @@ -732,8 +732,8 @@ ;; failed to figure out what this is: (defstate plat-path-active (flutflut-plat) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((or (= v1-0 'bonk) (= v1-0 'bounce)) (dummy-22 self) @@ -771,8 +771,8 @@ ;; failed to figure out what this is: (defstate flutflut-plat-hide (flutflut-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'bonk) (dummy-22 self) ) @@ -830,8 +830,8 @@ ;; failed to figure out what this is: (defstate elevator-idle-at-cave (flutflut-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond @@ -868,8 +868,8 @@ ;; failed to figure out what this is: (defstate elevator-travel-to-fort (flutflut-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (or (= v1-0 'bonk) (= v1-0 'bounce)) (dummy-22 self) ) @@ -893,8 +893,8 @@ ;; failed to figure out what this is: (defstate elevator-idle-at-fort (flutflut-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (or (= v1-0 'bonk) (= v1-0 'bounce)) (dummy-22 self) ) @@ -927,8 +927,8 @@ ;; failed to figure out what this is: (defstate elevator-travel-to-cave (flutflut-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (or (= v1-0 'bonk) (= v1-0 'bounce)) (dummy-22 self) ) diff --git a/test/decompiler/reference/jak1/levels/snow/snow-obs_REF.gc b/test/decompiler/reference/jak1/levels/snow/snow-obs_REF.gc index 97585a1229..8a254f5e1a 100644 --- a/test/decompiler/reference/jak1/levels/snow/snow-obs_REF.gc +++ b/test/decompiler/reference/jak1/levels/snow/snow-obs_REF.gc @@ -318,12 +318,12 @@ ;; failed to figure out what this is: (defstate snow-eggtop-idle-up (snow-eggtop) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'notify) - (case (-> arg3 param 0) + (case (-> event param 0) (('pickup) - (if (type-type? (-> arg0 type) fuel-cell) + (if (type-type? (-> proc type) fuel-cell) (save-reminder (get-task-control (-> self entity extra perm task)) 1 4) ) ) @@ -354,18 +354,18 @@ ;; failed to figure out what this is: (defstate snow-eggtop-activate (snow-eggtop) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('notify) - (when (= (-> arg0 type) snowcam) + (when (= (-> proc type) snowcam) (cond - ((= (-> arg3 param 0) 'die) + ((= (-> event param 0) 'die) (if *target* (set! (-> *target* control trans y) (+ 1024.0 (-> *target* control trans y))) ) (go snow-eggtop-idle-down) ) - ((= (-> arg3 param 0) 'cut) + ((= (-> event param 0) 'cut) (stop! (-> self sound)) (set! (-> self play-sound?) #f) #f @@ -572,10 +572,10 @@ ;; failed to figure out what this is: (defstate snowpusher-idle (snowpusher) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'touch) - (send-event arg0 'no-look-around (seconds 1.5)) + (send-event proc 'no-look-around (seconds 1.5)) #f ) ) @@ -709,8 +709,8 @@ ;; failed to figure out what this is: (defstate snow-spatula-idle (snow-spatula) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'bonk) (dummy-22 self) (sound-play "snow-spat-short" :vol 75 :pitch 0.75) @@ -1008,8 +1008,8 @@ ;; failed to figure out what this is: (defstate snow-fort-gate-idle-closed (snow-fort-gate) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('notice) (go snow-fort-gate-activate) ) @@ -1307,8 +1307,8 @@ ;; failed to figure out what this is: (defstate snow-gears-idle (snow-gears) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('notice) (logclear! (-> self mask) (process-mask actor-pause)) (process-entity-status! self (entity-perm-status bit-3) #t) @@ -1678,8 +1678,8 @@ ;; failed to figure out what this is: (defstate snow-log-wait-for-master (snow-log) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) (go snow-log-activate) ) @@ -1722,8 +1722,8 @@ ;; failed to figure out what this is: (defstate snow-log-hidden (snow-log) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) (logclear! (-> self mask) (process-mask actor-pause)) (process-entity-status! self (entity-perm-status bit-3) #t) diff --git a/test/decompiler/reference/jak1/levels/snow/snow-ram-boss_REF.gc b/test/decompiler/reference/jak1/levels/snow/snow-ram-boss_REF.gc index 3e5c82ae32..e70768aee4 100644 --- a/test/decompiler/reference/jak1/levels/snow/snow-ram-boss_REF.gc +++ b/test/decompiler/reference/jak1/levels/snow/snow-ram-boss_REF.gc @@ -693,8 +693,8 @@ ;; failed to figure out what this is: (defstate ram-boss-proj-growing (ram-boss-proj) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('launch) (let ((v1-1 (-> self parent-override))) (set! (-> v1-1 0 proj-stoked) #f) @@ -1353,13 +1353,13 @@ ;; failed to figure out what this is: (defstate ram-boss-idle (ram-boss) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('jump) - (go ram-boss-jump-down arg0) + (go ram-boss-jump-down proc) ) (('touch 'attack) - (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg3 param 0)) 'generic) + (nav-enemy-send-attack proc (the-as touching-shapes-entry (-> event param 0)) 'generic) ) ) ) @@ -1400,10 +1400,10 @@ ;; failed to figure out what this is: (defstate ram-boss-jump-down (ram-boss) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch 'attack) - (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg3 param 0)) 'generic) + (nav-enemy-send-attack proc (the-as touching-shapes-entry (-> event param 0)) 'generic) ) ) ) diff --git a/test/decompiler/reference/jak1/levels/snow/snow-ram_REF.gc b/test/decompiler/reference/jak1/levels/snow/snow-ram_REF.gc index 3dc728b922..6821332ee9 100644 --- a/test/decompiler/reference/jak1/levels/snow/snow-ram_REF.gc +++ b/test/decompiler/reference/jak1/levels/snow/snow-ram_REF.gc @@ -185,18 +185,18 @@ ;; failed to figure out what this is: (defstate ram-idle (ram) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch 'attack) (if ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (-> self root-override) (the-as uint 1) ) (send-event - arg0 + proc 'attack - (-> arg3 param 0) + (-> event param 0) (static-attack-info ((shove-up (meters 0.5)) (shove-back (meters 2)))) ) ) @@ -261,10 +261,10 @@ ;; failed to figure out what this is: (defstate ram-fun-idle (ram) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('notify) - (when (= (-> arg0 type) ram-boss) + (when (= (-> proc type) ram-boss) (if (dummy-22 self) (go ram-give-fuel-cell) ) @@ -294,10 +294,10 @@ ;; failed to figure out what this is: (defstate ram-give-fuel-cell (ram) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('notify) - (if (and (= (-> arg0 type) snowcam) (= (-> arg3 param 0) 'die)) + (if (and (= (-> proc type) snowcam) (= (-> event param 0) 'die)) (go ram-fun-idle) ) ) diff --git a/test/decompiler/reference/jak1/levels/snow/target-snowball_REF.gc b/test/decompiler/reference/jak1/levels/snow/target-snowball_REF.gc index 9bc6ac0a99..a6faaf1e03 100644 --- a/test/decompiler/reference/jak1/levels/snow/target-snowball_REF.gc +++ b/test/decompiler/reference/jak1/levels/snow/target-snowball_REF.gc @@ -59,12 +59,12 @@ ;; failed to figure out what this is: (defstate target-snowball-start (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (cond - ((and (= arg2 'query) (= (-> arg3 param 0) 'mode)) + ((and (= event-type 'query) (= (-> event param 0) 'mode)) 'snowball ) - ((let ((v1-3 arg2)) + ((let ((v1-3 event-type)) (= v1-3 'end-mode) ) (go @@ -75,7 +75,7 @@ ) ) (else - (target-generic-event-handler arg0 arg1 arg2 arg3) + (target-generic-event-handler proc arg1 event-type event) ) ) ) diff --git a/test/decompiler/reference/jak1/levels/sunken/double-lurker_REF.gc b/test/decompiler/reference/jak1/levels/sunken/double-lurker_REF.gc index 5da7c7a52a..77d4ba089a 100644 --- a/test/decompiler/reference/jak1/levels/sunken/double-lurker_REF.gc +++ b/test/decompiler/reference/jak1/levels/sunken/double-lurker_REF.gc @@ -259,18 +259,18 @@ ;; failed to figure out what this is: (defstate double-lurker-top-on-shoulders (double-lurker-top) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) (let ((v1-1 (-> self fall-dest)) - (a0-4 (-> (the-as vector (-> arg3 param 0)) quad)) + (a0-4 (-> (the-as vector (-> event param 0)) quad)) ) (set! (-> v1-1 quad) a0-4) - (go double-lurker-top-knocked-down a0-4 (the-as vector arg1) (the-as vector arg2)) + (go double-lurker-top-knocked-down a0-4 (the-as vector arg1) (the-as vector event-type)) ) ) (('instant-death) - (let ((v1-3 (the-as object (-> arg3 param 0)))) + (let ((v1-3 (the-as object (-> event param 0)))) (quaternion-axis-angle! (-> self collide-info quat) 0.0 @@ -315,13 +315,13 @@ ;; failed to figure out what this is: (defstate double-lurker-top-knocked-down (double-lurker-top) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch) (send-event - arg0 + proc 'shove - (-> arg3 param 0) + (-> event param 0) (static-attack-info ((shove-up (meters 3)) (shove-back (meters 2)))) ) ) diff --git a/test/decompiler/reference/jak1/levels/sunken/helix-water_REF.gc b/test/decompiler/reference/jak1/levels/sunken/helix-water_REF.gc index a3ecf8176c..9de33811aa 100644 --- a/test/decompiler/reference/jak1/levels/sunken/helix-water_REF.gc +++ b/test/decompiler/reference/jak1/levels/sunken/helix-water_REF.gc @@ -131,8 +131,8 @@ ;; failed to figure out what this is: (defstate water-vol-idle (helix-dark-eco) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) (let ((a0-1 (-> self sound))) (set! (-> a0-1 spec pitch-mod) 2057) @@ -140,7 +140,7 @@ ) ) (else - ((-> (method-of-type water-anim water-vol-idle) event) arg0 arg1 arg2 arg3) + ((-> (method-of-type water-anim water-vol-idle) event) proc arg1 event-type event) ) ) ) @@ -178,8 +178,8 @@ ;; failed to figure out what this is: (defstate helix-slide-door-idle-open (helix-slide-door) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) (go helix-slide-door-close) ) @@ -286,8 +286,8 @@ ;; failed to figure out what this is: (defstate helix-button-idle-up (helix-button) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch) (when *target* (when (logtest? (-> *target* control status) (cshape-moving-flags onsurf)) @@ -659,8 +659,8 @@ ;; failed to figure out what this is: (defstate helix-water-idle (helix-water) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'trigger) (go helix-water-activated) @@ -689,10 +689,10 @@ ;; failed to figure out what this is: (defstate helix-water-activated (helix-water) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('notify) - (when (= (-> arg0 type) launcherdoor) + (when (= (-> proc type) launcherdoor) (remove-setting! 'music) (go helix-water-idle) ) diff --git a/test/decompiler/reference/jak1/levels/sunken/orbit-plat_REF.gc b/test/decompiler/reference/jak1/levels/sunken/orbit-plat_REF.gc index 72b43cddca..9f918415e0 100644 --- a/test/decompiler/reference/jak1/levels/sunken/orbit-plat_REF.gc +++ b/test/decompiler/reference/jak1/levels/sunken/orbit-plat_REF.gc @@ -304,8 +304,8 @@ ;; failed to figure out what this is: (defstate orbit-plat-idle (orbit-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'bonk) (dummy-22 self) @@ -420,8 +420,8 @@ ;; failed to figure out what this is: (defstate orbit-plat-still (orbit-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'bonk) (dummy-22 self) @@ -544,8 +544,8 @@ ;; failed to figure out what this is: (defstate orbit-plat-rotating (orbit-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'bonk) (dummy-22 self) @@ -758,8 +758,8 @@ ;; failed to figure out what this is: (defstate orbit-plat-reset (orbit-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'bonk) (dummy-22 self) diff --git a/test/decompiler/reference/jak1/levels/sunken/puffer_REF.gc b/test/decompiler/reference/jak1/levels/sunken/puffer_REF.gc index 15fe858845..ca174da5e2 100644 --- a/test/decompiler/reference/jak1/levels/sunken/puffer_REF.gc +++ b/test/decompiler/reference/jak1/levels/sunken/puffer_REF.gc @@ -710,8 +710,8 @@ ;; failed to figure out what this is: (defstate puffer-die (puffer) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as uint (cond diff --git a/test/decompiler/reference/jak1/levels/sunken/qbert-plat_REF.gc b/test/decompiler/reference/jak1/levels/sunken/qbert-plat_REF.gc index e08e605f14..a4c1841e5c 100644 --- a/test/decompiler/reference/jak1/levels/sunken/qbert-plat_REF.gc +++ b/test/decompiler/reference/jak1/levels/sunken/qbert-plat_REF.gc @@ -141,8 +141,8 @@ ;; failed to figure out what this is: (defstate qbert-plat-on-mimic (qbert-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('die) (go qbert-plat-on-die) ) @@ -432,13 +432,13 @@ ;; failed to figure out what this is: (defstate qbert-plat-master-idle (qbert-plat-master) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) (start-hint-timer (game-text-id sunken-qbert-plat-hint)) (close-specific-task! (game-task sunken-platforms) (task-status need-hint)) (when (not (-> self puzzle-beaten?)) - (let ((v1-2 (-> arg3 param 0))) + (let ((v1-2 (-> event param 0))) (when (!= v1-2 (-> self last-plat-triggered)) (set! (-> self last-plat-triggered) (the-as int v1-2)) (let ((s5-1 (= (-> self plat-states-needed-to-open-door) (-> self plat-states)))) @@ -454,7 +454,7 @@ ) ) ) - (send-event arg0 'notify) + (send-event proc 'notify) (let ((a0-13 (= (-> self plat-states-needed-to-open-door) (-> self plat-states)))) (if (!= s5-1 a0-13) (go qbert-plat-master-do-door a0-13) diff --git a/test/decompiler/reference/jak1/levels/sunken/shover_REF.gc b/test/decompiler/reference/jak1/levels/sunken/shover_REF.gc index 5606d3f689..9b01e19fbc 100644 --- a/test/decompiler/reference/jak1/levels/sunken/shover_REF.gc +++ b/test/decompiler/reference/jak1/levels/sunken/shover_REF.gc @@ -34,12 +34,12 @@ ;; failed to figure out what this is: (defstate shover-idle (shover) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch 'attack) - (when (= (-> arg0 type) target) + (when (= (-> proc type) target) (when ((method-of-type touching-shapes-entry prims-touching-action?) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (-> *target* control) (collide-action solid) (collide-action) @@ -52,15 +52,15 @@ (< 0.75 (-> *target* control poly-normal y)) ) (send-event - arg0 + proc 'attack-or-shove - (-> arg3 param 0) + (-> event param 0) (static-attack-info ((mode 'burn) (vector (-> s4-0 vector)) (shove-up (-> s4-0 shove-up)))) ) (send-event - arg0 + proc 'attack-or-shove - (-> arg3 param 0) + (-> event param 0) (static-attack-info ((mode 'burn) (shove-up (meters 0)) (shove-back (meters 2)) diff --git a/test/decompiler/reference/jak1/levels/sunken/square-platform_REF.gc b/test/decompiler/reference/jak1/levels/sunken/square-platform_REF.gc index 8728d4f7e6..13d165257f 100644 --- a/test/decompiler/reference/jak1/levels/sunken/square-platform_REF.gc +++ b/test/decompiler/reference/jak1/levels/sunken/square-platform_REF.gc @@ -309,11 +309,11 @@ ;; failed to figure out what this is: (defstate square-platform-lowered (square-platform) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) - (if (and (= (-> arg0 type) square-platform-master) - (= (-> (the-as square-platform-master arg0) plat-id) (-> self plat-id)) + (if (and (= (-> proc type) square-platform-master) + (= (-> (the-as square-platform-master proc) plat-id) (-> self plat-id)) ) (go square-platform-rising) ) @@ -332,8 +332,8 @@ ;; failed to figure out what this is: (defstate square-platform-rising (square-platform) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((or (= v1-0 'bonk) (= v1-0 'bounce)) (dummy-22 self) @@ -376,8 +376,8 @@ ;; failed to figure out what this is: (defstate square-platform-raised (square-platform) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((or (= v1-0 'bonk) (= v1-0 'bounce)) (dummy-22 self) @@ -403,8 +403,8 @@ ;; failed to figure out what this is: (defstate square-platform-lowering (square-platform) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((or (= v1-0 'bonk) (= v1-0 'bounce)) (dummy-22 self) @@ -413,7 +413,7 @@ (go square-platform-rising) ) ((= v1-0 'touch) - (send-event arg0 'no-look-around (seconds 1.5)) + (send-event proc 'no-look-around (seconds 1.5)) #f ) ) @@ -558,11 +558,11 @@ ;; failed to figure out what this is: (defstate square-platform-master-idle (square-platform-master) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) - (when (= (-> arg0 type) square-platform-button) - (set! (-> self button-id) (-> (the-as square-platform-button arg0) button-id)) + (when (= (-> proc type) square-platform-button) + (set! (-> self button-id) (-> (the-as square-platform-button proc) button-id)) (logclear! (-> self mask) (process-mask actor-pause)) (process-entity-status! self (entity-perm-status bit-3) #t) (go square-platform-master-activate) diff --git a/test/decompiler/reference/jak1/levels/sunken/sun-exit-chamber_REF.gc b/test/decompiler/reference/jak1/levels/sunken/sun-exit-chamber_REF.gc index 99ef1d268a..d495d959ff 100644 --- a/test/decompiler/reference/jak1/levels/sunken/sun-exit-chamber_REF.gc +++ b/test/decompiler/reference/jak1/levels/sunken/sun-exit-chamber_REF.gc @@ -721,14 +721,14 @@ ;; failed to figure out what this is: (defstate exit-chamber-charger-puzzle (exit-chamber) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-0 object)) - (case arg2 + (case event-type (('notify) - (case (-> arg3 param 0) + (case (-> event param 0) ((1) (when (zero? (get-reminder (get-task-control (game-task sunken-room)) 0)) - (let* ((a1-2 (-> arg3 param 1)) + (let* ((a1-2 (-> event param 1)) (v1-5 (logior (-> self chargers-active) (ash 1 a1-2))) ) (set! (-> self chargers-active) v1-5) @@ -743,7 +743,7 @@ ) ((2) (when (zero? (get-reminder (get-task-control (game-task sunken-room)) 0)) - (let ((a1-6 (-> arg3 param 1))) + (let ((a1-6 (-> event param 1))) (set! v0-0 (logclear (-> self chargers-active) (ash 1 a1-6))) ) (set! (-> self chargers-active) (the-as uint v0-0)) @@ -796,16 +796,16 @@ ;; failed to figure out what this is: (defstate exit-chamber-idle-in-sunken (exit-chamber) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-1 object)) - (case arg2 + (case event-type (('trigger) (go exit-chamber-rise) (return #t) v0-1 ) (('notify) - (when (and (= (-> arg0 type) fuel-cell) (= (-> arg3 param 0) 'pickup)) + (when (and (= (-> proc type) fuel-cell) (= (-> event param 0) 'pickup)) (let ((a0-5 (handle->process (-> self fcell-handle)))) (when a0-5 (let ((v1-10 (new 'stack-no-clear 'vector))) @@ -983,13 +983,13 @@ ;; failed to figure out what this is: (defstate exit-chamber-idle-in-village (exit-chamber) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) (go exit-chamber-lower) ) (('notify) - (when (and (= (-> arg0 type) fuel-cell) (= (-> arg3 param 0) 'pickup)) + (when (and (= (-> proc type) fuel-cell) (= (-> event param 0) 'pickup)) (let ((a0-5 (handle->process (-> self fcell-handle)))) (when a0-5 (let ((v1-8 (new 'stack-no-clear 'vector))) diff --git a/test/decompiler/reference/jak1/levels/sunken/sun-iris-door_REF.gc b/test/decompiler/reference/jak1/levels/sunken/sun-iris-door_REF.gc index c0343a7921..126f6fac32 100644 --- a/test/decompiler/reference/jak1/levels/sunken/sun-iris-door_REF.gc +++ b/test/decompiler/reference/jak1/levels/sunken/sun-iris-door_REF.gc @@ -95,15 +95,15 @@ ;; failed to figure out what this is: (defstate sun-iris-door-closed (sun-iris-door) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) (go sun-iris-door-opening) ) (('move-to) (set! (-> self move-to?) #t) - (set! (-> self move-to-pos quad) (-> (the-as vector (-> arg3 param 0)) quad)) - (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> arg3 param 1))) + (set! (-> self move-to-pos quad) (-> (the-as vector (-> event param 0)) quad)) + (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> event param 1))) ) ) ) @@ -135,15 +135,15 @@ ;; failed to figure out what this is: (defstate sun-iris-door-opening (sun-iris-door) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('untrigger) (go sun-iris-door-closing) ) (('move-to) (set! (-> self move-to?) #t) - (set! (-> self move-to-pos quad) (-> (the-as vector (-> arg3 param 0)) quad)) - (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> arg3 param 1))) + (set! (-> self move-to-pos quad) (-> (the-as vector (-> event param 0)) quad)) + (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> event param 1))) ) ) ) @@ -229,8 +229,8 @@ ;; failed to figure out what this is: (defstate sun-iris-door-open (sun-iris-door) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) (let ((v0-0 (the-as object (-> *display* base-frame-counter)))) (set! (-> self state-time) (the-as time-frame v0-0)) @@ -242,8 +242,8 @@ ) (('move-to) (set! (-> self move-to?) #t) - (set! (-> self move-to-pos quad) (-> (the-as vector (-> arg3 param 0)) quad)) - (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> arg3 param 1))) + (set! (-> self move-to-pos quad) (-> (the-as vector (-> event param 0)) quad)) + (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> event param 1))) ) ) ) @@ -291,15 +291,15 @@ ;; failed to figure out what this is: (defstate sun-iris-door-closing (sun-iris-door) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) (go sun-iris-door-opening) ) (('move-to) (set! (-> self move-to?) #t) - (set! (-> self move-to-pos quad) (-> (the-as vector (-> arg3 param 0)) quad)) - (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> arg3 param 1))) + (set! (-> self move-to-pos quad) (-> (the-as vector (-> event param 0)) quad)) + (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> event param 1))) ) ) ) diff --git a/test/decompiler/reference/jak1/levels/sunken/sunken-pipegame_REF.gc b/test/decompiler/reference/jak1/levels/sunken/sunken-pipegame_REF.gc index 1e57939859..1227c7fe92 100644 --- a/test/decompiler/reference/jak1/levels/sunken/sunken-pipegame_REF.gc +++ b/test/decompiler/reference/jak1/levels/sunken/sunken-pipegame_REF.gc @@ -581,11 +581,11 @@ ;; failed to figure out what this is: (defstate sunken-pipegame-idle (sunken-pipegame) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) - (when (= (-> arg0 type) sunken-pipegame-button) - (set! (-> self challenge) (-> (the-as sunken-pipegame-button arg0) button-id)) + (when (= (-> proc type) sunken-pipegame-button) + (set! (-> self challenge) (-> (the-as sunken-pipegame-button proc) button-id)) (go sunken-pipegame-begin-play) ) ) @@ -601,10 +601,10 @@ ;; failed to figure out what this is: (defstate sunken-pipegame-begin-play (sunken-pipegame) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('notify) - (case (-> arg0 type) + (case (-> proc type) ((fuel-cell buzzer) (go sunken-pipegame-beat-challenge) ) diff --git a/test/decompiler/reference/jak1/levels/sunken/sunken-water_REF.gc b/test/decompiler/reference/jak1/levels/sunken/sunken-water_REF.gc index 06c5582814..13509409d5 100644 --- a/test/decompiler/reference/jak1/levels/sunken/sunken-water_REF.gc +++ b/test/decompiler/reference/jak1/levels/sunken/sunken-water_REF.gc @@ -112,15 +112,15 @@ ;; failed to figure out what this is: (defstate water-vol-idle (sunken-water) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('notify) - (if (= (-> arg3 param 0) 'attack) + (if (= (-> event param 0) 'attack) (sound-play "get-shocked") ) ) (else - ((-> (method-of-type water-anim water-vol-idle) event) arg0 arg1 arg2 arg3) + ((-> (method-of-type water-anim water-vol-idle) event) proc arg1 event-type event) ) ) ) diff --git a/test/decompiler/reference/jak1/levels/sunken/target-tube_REF.gc b/test/decompiler/reference/jak1/levels/sunken/target-tube_REF.gc index 0190853497..fd05cb864e 100644 --- a/test/decompiler/reference/jak1/levels/sunken/target-tube_REF.gc +++ b/test/decompiler/reference/jak1/levels/sunken/target-tube_REF.gc @@ -456,13 +456,13 @@ ;; failed to figure out what this is: (defstate target-tube-start (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (cond - ((and (= arg2 'query) (= (-> arg3 param 0) 'mode)) + ((and (= event-type 'query) (= (-> event param 0) 'mode)) 'tube ) (else - (case arg2 + (case event-type (('end-mode) (go target-jump @@ -472,20 +472,20 @@ ) ) (('touched) - (send-event arg0 'attack (-> arg3 param 0) 'tube 0 0) + (send-event proc 'attack (-> event param 0) 'tube 0 0) #f ) (('attack 'attack-or-shove 'attack-invinc) (target-attacked 'attack-or-shove - (the-as attack-info (-> arg3 param 1)) - arg0 - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as attack-info (-> event param 1)) + proc + (the-as touching-shapes-entry (-> event param 0)) target-tube-hit ) ) (else - (target-generic-event-handler arg0 arg1 arg2 arg3) + (target-generic-event-handler proc arg1 event-type event) ) ) ) @@ -1007,13 +1007,13 @@ ;; failed to figure out what this is: (defstate slide-control-ride (slide-control) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('end-mode) (go-virtual slide-control-watch) ) (('update) - (let* ((s4-0 arg0) + (let* ((s4-0 proc) (gp-0 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process-drawable)) s4-0 ) @@ -1022,10 +1022,10 @@ (if gp-0 (find-target-point (-> (the-as process-drawable gp-0) root trans)) ) - (set! (-> (the-as vector (-> arg3 param 0)) quad) (-> self trans quad)) - (set! (-> (the-as vector (-> arg3 param 1)) quad) (-> self rot quad)) - (set! (-> (the-as vector (-> arg3 param 2)) quad) (-> self side quad)) - (eval-path-curve-div! (-> self path) (the-as vector (-> arg3 param 3)) (+ 0.2 (-> self pos)) 'interp) + (set! (-> (the-as vector (-> event param 0)) quad) (-> self trans quad)) + (set! (-> (the-as vector (-> event param 1)) quad) (-> self rot quad)) + (set! (-> (the-as vector (-> event param 2)) quad) (-> self side quad)) + (eval-path-curve-div! (-> self path) (the-as vector (-> event param 3)) (+ 0.2 (-> self pos)) 'interp) (if (>= (-> self pos) (+ -0.2 (the float (+ (-> self path curve num-cverts) -1)))) (send-event gp-0 'end-mode) ) diff --git a/test/decompiler/reference/jak1/levels/sunken/wall-plat_REF.gc b/test/decompiler/reference/jak1/levels/sunken/wall-plat_REF.gc index 5418e37ebe..b1bca9e0a1 100644 --- a/test/decompiler/reference/jak1/levels/sunken/wall-plat_REF.gc +++ b/test/decompiler/reference/jak1/levels/sunken/wall-plat_REF.gc @@ -46,8 +46,8 @@ ;; failed to figure out what this is: (defstate wall-plat-retracted (wall-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('trigger) (go wall-plat-extending) ) @@ -68,10 +68,10 @@ ;; failed to figure out what this is: (defstate wall-plat-extending (wall-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'touch) - (send-event arg0 'no-look-around (seconds 1.5)) + (send-event proc 'no-look-around (seconds 1.5)) #f ) ) @@ -103,8 +103,8 @@ ;; failed to figure out what this is: (defstate wall-plat-extended (wall-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('untrigger) (go wall-plat-retracting) ) @@ -124,10 +124,10 @@ ;; failed to figure out what this is: (defstate wall-plat-retracting (wall-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'touch) - (send-event arg0 'no-look-around (seconds 1.5)) + (send-event proc 'no-look-around (seconds 1.5)) #f ) ) @@ -158,10 +158,10 @@ ;; failed to figure out what this is: (defstate wall-plat-sync-idle (wall-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'touch) - (send-event arg0 'no-look-around (seconds 1.5)) + (send-event proc 'no-look-around (seconds 1.5)) #f ) ) diff --git a/test/decompiler/reference/jak1/levels/sunken/wedge-plats_REF.gc b/test/decompiler/reference/jak1/levels/sunken/wedge-plats_REF.gc index f6b180f2c0..a308da4316 100644 --- a/test/decompiler/reference/jak1/levels/sunken/wedge-plats_REF.gc +++ b/test/decompiler/reference/jak1/levels/sunken/wedge-plats_REF.gc @@ -140,8 +140,8 @@ ;; failed to figure out what this is: (defstate wedge-plat-idle (wedge-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'bonk) (dummy-22 self) ) @@ -164,14 +164,14 @@ ;; failed to figure out what this is: (defstate wedge-plat-tip (wedge-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'bonk) (dummy-22 self) ) ((= v1-0 'touch) - (send-event arg0 'no-look-around (seconds 1.5)) + (send-event proc 'no-look-around (seconds 1.5)) #f ) ) @@ -320,8 +320,8 @@ ;; failed to figure out what this is: (defstate wedge-plat-outer-idle (wedge-plat-outer) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'bonk) (dummy-22 self) ) @@ -344,14 +344,14 @@ ;; failed to figure out what this is: (defstate wedge-plat-outer-tip (wedge-plat-outer) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'bonk) (dummy-22 self) ) ((= v1-0 'touch) - (send-event arg0 'no-look-around (seconds 1.5)) + (send-event proc 'no-look-around (seconds 1.5)) ) ) ) diff --git a/test/decompiler/reference/jak1/levels/swamp/billy_REF.gc b/test/decompiler/reference/jak1/levels/swamp/billy_REF.gc index e8f39a515a..478330eeb7 100644 --- a/test/decompiler/reference/jak1/levels/swamp/billy_REF.gc +++ b/test/decompiler/reference/jak1/levels/swamp/billy_REF.gc @@ -118,8 +118,8 @@ ;; failed to figure out what this is: (defstate billy-snack-idle (billy-snack) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('eat) (go billy-snack-eat) ) @@ -537,10 +537,10 @@ ;; failed to figure out what this is: (defstate billy-done (billy) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'billy-rat-needs-destination) - (let* ((gp-0 arg0) + (let* ((gp-0 proc) (v1-2 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) billy-rat)) gp-0 ) @@ -829,8 +829,8 @@ ;; failed to figure out what this is: (defstate billy-playing (billy) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('billy-rat-die) (+! (-> self num-rats) -1) (let* ((f0-2 (rand-float-gen)) @@ -862,7 +862,7 @@ ) ) (('billy-rat-needs-destination) - (let* ((s5-0 arg0) + (let* ((s5-0 proc) (gp-0 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) billy-rat)) (the-as billy-rat s5-0) ) diff --git a/test/decompiler/reference/jak1/levels/swamp/kermit_REF.gc b/test/decompiler/reference/jak1/levels/swamp/kermit_REF.gc index 6aef844ea7..8f2377ac83 100644 --- a/test/decompiler/reference/jak1/levels/swamp/kermit_REF.gc +++ b/test/decompiler/reference/jak1/levels/swamp/kermit_REF.gc @@ -571,10 +571,10 @@ ;; failed to figure out what this is: (defstate kermit-pulse-idle (kermit-pulse) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch 'attack) - (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) + (send-event proc 'attack (-> event param 0) (new 'static 'attack-info)) (go kermit-pulse-impact) ) ) diff --git a/test/decompiler/reference/jak1/levels/swamp/swamp-obs_REF.gc b/test/decompiler/reference/jak1/levels/swamp/swamp-obs_REF.gc index c14f721e7d..de1da7506d 100644 --- a/test/decompiler/reference/jak1/levels/swamp/swamp-obs_REF.gc +++ b/test/decompiler/reference/jak1/levels/swamp/swamp-obs_REF.gc @@ -289,8 +289,8 @@ ;; failed to figure out what this is: (defstate swamp-spike-gate-up (swampgate) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'trigger) (let ((v0-0 #t)) (set! (-> self open-gate) v0-0) @@ -461,8 +461,8 @@ ;; failed to figure out what this is: (defstate balance-plat-idle (balance-plat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'grow) (let ((v0-0 #t)) (set! (-> self got-grow) v0-0) @@ -688,10 +688,10 @@ ;; failed to figure out what this is: (defstate swamp-rock-idle (swamp-rock) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('attack) - (if (and (>= arg1 2) (= (-> arg3 param 1) 'eco-yellow)) + (if (and (>= arg1 2) (= (-> event param 1) 'eco-yellow)) (go swamp-rock-break) ) ) diff --git a/test/decompiler/reference/jak1/levels/swamp/swamp-rat-nest_REF.gc b/test/decompiler/reference/jak1/levels/swamp/swamp-rat-nest_REF.gc index d6711ad4ba..3df39f4bc1 100644 --- a/test/decompiler/reference/jak1/levels/swamp/swamp-rat-nest_REF.gc +++ b/test/decompiler/reference/jak1/levels/swamp/swamp-rat-nest_REF.gc @@ -1002,8 +1002,8 @@ swamp-rat-nest-default-event-handler ;; failed to figure out what this is: (defstate swamp-rat-nest-idle (swamp-rat-nest) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('hit) (go swamp-rat-nest-active) ) diff --git a/test/decompiler/reference/jak1/levels/title/title-obs_REF.gc b/test/decompiler/reference/jak1/levels/title/title-obs_REF.gc index 9dfa51a6b2..2624f431c9 100644 --- a/test/decompiler/reference/jak1/levels/title/title-obs_REF.gc +++ b/test/decompiler/reference/jak1/levels/title/title-obs_REF.gc @@ -150,13 +150,13 @@ ;; failed to figure out what this is: (defstate idle (logo-slave) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-0 uint)) - (let ((v1-0 arg2)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'blend-shape) (cond - ((-> arg3 param 0) + ((-> event param 0) (set! v0-0 (the-as uint (logior (-> self skel status) (janim-status blerc eye)))) (set! (-> self skel status) (the-as janim-status v0-0)) ) @@ -168,7 +168,7 @@ v0-0 ) ((= v1-0 'origin-joint-index) - (set! v0-0 (-> arg3 param 0)) + (set! v0-0 (-> event param 0)) (set! (-> self draw origin-joint-index) v0-0) v0-0 ) @@ -224,8 +224,8 @@ ;; failed to figure out what this is: (defstate startup (logo) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'update) (remove-setting! 'process-mask) ) @@ -493,8 +493,8 @@ ;; failed to figure out what this is: (defstate ndi (logo) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'blackout) (set-setting! 'bg-a 'abs 1.0 0) ) @@ -812,8 +812,8 @@ ;; failed to figure out what this is: (defstate target-title-play (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'wait) (go target-title-wait) @@ -822,7 +822,7 @@ (deactivate (-> self manipy 0)) ) (else - (target-generic-event-handler arg0 arg1 arg2 arg3) + (target-generic-event-handler proc arg1 event-type event) ) ) ) @@ -841,8 +841,8 @@ ;; failed to figure out what this is: (defstate target-title-wait (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'play) (go target-title-play) @@ -851,7 +851,7 @@ (deactivate (-> self manipy 0)) ) (else - (target-generic-event-handler arg0 arg1 arg2 arg3) + (target-generic-event-handler proc arg1 event-type event) ) ) ) diff --git a/test/decompiler/reference/jak1/levels/training/training-obs_REF.gc b/test/decompiler/reference/jak1/levels/training/training-obs_REF.gc index f23afaa864..daaed30370 100644 --- a/test/decompiler/reference/jak1/levels/training/training-obs_REF.gc +++ b/test/decompiler/reference/jak1/levels/training/training-obs_REF.gc @@ -710,13 +710,13 @@ ;; failed to figure out what this is: (defstate idle (scarecrow-a) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'attack) - (let* ((s3-0 (-> arg3 param 2)) + (let* ((s3-0 (-> event param 2)) (s4-0 (get-task-control (game-task training-gimmie))) (v1-2 (get-reminder s4-0 0)) ) @@ -725,11 +725,11 @@ (cond ((= (-> self type) scarecrow-b) ) - ((and (= (-> arg3 param 1) 'spin) (zero? v1-2)) + ((and (= (-> event param 1) 'spin) (zero? v1-2)) (save-reminder s4-0 1 0) 1 ) - ((and (= (-> arg3 param 1) 'punch) (= v1-2 1)) + ((and (= (-> event param 1) 'punch) (= v1-2 1)) (save-reminder s4-0 2 0) 2 ) @@ -738,7 +738,7 @@ ((= v1-2 1) ) ) - (let* ((s4-1 arg0) + (let* ((s4-1 proc) (v1-14 (if (and (nonzero? s4-1) (type-type? (-> s4-1 type) process-drawable)) s4-1 ) @@ -758,7 +758,7 @@ ) ) (a0-24 ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (the-as collide-shape-moving (-> self root-override)) (the-as uint -1) ) @@ -774,14 +774,14 @@ (the-as symbol (and ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (the-as collide-shape-moving (-> self root-override)) (the-as uint 2) ) (or (= (-> self type) scarecrow-a) - (and (= (-> arg0 type) target) - (logtest? (-> (the-as target arg0) control unknown-surface00 flags) (surface-flags jump)) - (zero? (logand (-> (the-as target arg0) control status) (cshape-moving-flags onsurf))) + (and (= (-> proc type) target) + (logtest? (-> (the-as target proc) control unknown-surface00 flags) (surface-flags jump)) + (zero? (logand (-> (the-as target proc) control status) (cshape-moving-flags onsurf))) ) ) ) @@ -794,8 +794,8 @@ ((= v1-0 'touch) (send-shove-back (-> self root-override) - arg0 - (the-as touching-shapes-entry (-> arg3 param 0)) + proc + (the-as touching-shapes-entry (-> event param 0)) 0.7 6144.0 16384.0 diff --git a/test/decompiler/reference/jak1/levels/village1/fishermans-boat_REF.gc b/test/decompiler/reference/jak1/levels/village1/fishermans-boat_REF.gc index 120490ce73..d23f4daba1 100644 --- a/test/decompiler/reference/jak1/levels/village1/fishermans-boat_REF.gc +++ b/test/decompiler/reference/jak1/levels/village1/fishermans-boat_REF.gc @@ -1659,8 +1659,8 @@ ;; failed to figure out what this is: (defstate fishermans-boat-ride-to-village1 (fishermans-boat) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond diff --git a/test/decompiler/reference/jak1/levels/village1/sequence-a-village1_REF.gc b/test/decompiler/reference/jak1/levels/village1/sequence-a-village1_REF.gc index 350b22b1d5..922033e99f 100644 --- a/test/decompiler/reference/jak1/levels/village1/sequence-a-village1_REF.gc +++ b/test/decompiler/reference/jak1/levels/village1/sequence-a-village1_REF.gc @@ -276,8 +276,8 @@ ;; failed to figure out what this is: (defstate play-anim (sequenceA-village1) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('sidekick-human) (format 0 "got sidekick-human~%") (when (= (level-status *level* 'misty) 'active) diff --git a/test/decompiler/reference/jak1/levels/village2/swamp-blimp_REF.gc b/test/decompiler/reference/jak1/levels/village2/swamp-blimp_REF.gc index c8c40adc96..b3b7daef91 100644 --- a/test/decompiler/reference/jak1/levels/village2/swamp-blimp_REF.gc +++ b/test/decompiler/reference/jak1/levels/village2/swamp-blimp_REF.gc @@ -991,17 +991,17 @@ ;; failed to figure out what this is: (defstate swamp-tetherrock-idle (swamp-tetherrock) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('attack) - (when (and (>= arg1 2) (= (-> arg3 param 1) 'eco-yellow)) + (when (and (>= arg1 2) (= (-> event param 1) 'eco-yellow)) (+! (-> self hits) 1) (cond ((>= (-> self hits) 1) (go swamp-tetherrock-break) ) (else - (let* ((s5-0 arg0) + (let* ((s5-0 proc) (gp-0 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) s5-0 ) @@ -1181,8 +1181,8 @@ ;; failed to figure out what this is: (defstate precursor-arm-idle (precursor-arm) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('arm-sink-evt) (go precursor-arm-sink) ) @@ -1758,8 +1758,8 @@ ;; failed to figure out what this is: (defstate swamp-blimp-idle (swamp-blimp) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'tetherrock-break-evt) (increment-success-for-hint (game-text-id swamp-tetherrock-eco-yellow-hint)) (swamp-blimp-setup) diff --git a/test/decompiler/reference/jak1/levels/village2/village2-obs_REF.gc b/test/decompiler/reference/jak1/levels/village2/village2-obs_REF.gc index 91959f174c..531fb3037b 100644 --- a/test/decompiler/reference/jak1/levels/village2/village2-obs_REF.gc +++ b/test/decompiler/reference/jak1/levels/village2/village2-obs_REF.gc @@ -168,15 +168,15 @@ ;; failed to figure out what this is: (defstate rigid-body-platform-float (pontoon) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'die) (cleanup-for-death self) (deactivate self) ) (else - (rigid-body-platform-event-handler arg0 arg1 arg2 arg3) + (rigid-body-platform-event-handler proc arg1 event-type event) ) ) ) @@ -187,8 +187,8 @@ ;; failed to figure out what this is: (defstate rigid-body-platform-idle (pontoon) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'die) (cleanup-for-death self) (deactivate self) @@ -566,8 +566,8 @@ ;; failed to figure out what this is: (defstate allpontoons-be-clone (allpontoons) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'end-mode) (cleanup-for-death self) (deactivate self) @@ -605,10 +605,10 @@ ;; failed to figure out what this is: (defstate allpontoons-idle (allpontoons) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('clone) - (go allpontoons-be-clone (the-as handle (-> arg3 param 0))) + (go allpontoons-be-clone (the-as handle (-> event param 0))) ) ) ) @@ -786,8 +786,8 @@ ;; failed to figure out what this is: (defstate fireboulder-be-clone (fireboulder) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('stop-cloning) (go fireboulder-hover) ) @@ -814,10 +814,10 @@ ;; failed to figure out what this is: (defstate fireboulder-idle (fireboulder) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('clone) - (go fireboulder-be-clone (the-as handle (-> arg3 param 0))) + (go fireboulder-be-clone (the-as handle (-> event param 0))) ) ) ) diff --git a/test/decompiler/reference/jak1/levels/village3/minecart_REF.gc b/test/decompiler/reference/jak1/levels/village3/minecart_REF.gc index d221c00246..fef1a18011 100644 --- a/test/decompiler/reference/jak1/levels/village3/minecart_REF.gc +++ b/test/decompiler/reference/jak1/levels/village3/minecart_REF.gc @@ -42,13 +42,13 @@ ;; failed to figure out what this is: (defstate idle (minecartsteel) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (or (= v1-0 'touch) (= v1-0 'attack)) - (when (= (-> arg0 type) target) + (when (= (-> proc type) target) (let ((a2-1 (new 'stack 'collide-overlap-result))) (if (not (on-platform (-> self root-override) (-> *target* control) a2-1)) - (send-event arg0 'no-look-around (seconds 1.5)) + (send-event proc 'no-look-around (seconds 1.5)) ) ) ) diff --git a/test/decompiler/reference/jak1/levels/village3/village3-obs_REF.gc b/test/decompiler/reference/jak1/levels/village3/village3-obs_REF.gc index b94e35cbcc..f30578a0b3 100644 --- a/test/decompiler/reference/jak1/levels/village3/village3-obs_REF.gc +++ b/test/decompiler/reference/jak1/levels/village3/village3-obs_REF.gc @@ -446,10 +446,10 @@ ;; failed to figure out what this is: (defstate idle (pistons) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('update) - (go-virtual active (process->handle arg0) #f) + (go-virtual active (process->handle proc) #f) ) ) ) @@ -512,8 +512,8 @@ ;; failed to figure out what this is: (defstate idle (gondolacables) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (when (= v1-0 'update) (process-entity-status! self (entity-perm-status complete) #t) (let ((v0-0 1)) diff --git a/test/decompiler/reference/jak1/levels/village_common/villagep-obs_REF.gc b/test/decompiler/reference/jak1/levels/village_common/villagep-obs_REF.gc index 04cba7533a..17cfa0cabf 100644 --- a/test/decompiler/reference/jak1/levels/village_common/villagep-obs_REF.gc +++ b/test/decompiler/reference/jak1/levels/village_common/villagep-obs_REF.gc @@ -122,8 +122,8 @@ ;; failed to figure out what this is: (defstate idle (warp-gate) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('hide) (go-virtual hidden) ) @@ -680,8 +680,8 @@ ;; failed to figure out what this is: (defstate basebutton-up-idle (warp-gate-switch) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touch 'attack) (when (pressable? self) (TODO-RENAME-29 self (-> self event-going-down) (-> self notify-actor)) @@ -689,10 +689,10 @@ ) ) (('hide) - (send-event (handle->process (-> self warp)) arg2) + (send-event (handle->process (-> self warp)) event-type) ) (else - ((-> (method-of-type basebutton basebutton-up-idle) event) arg0 arg1 arg2 arg3) + ((-> (method-of-type basebutton basebutton-up-idle) event) proc arg1 event-type event) ) ) ) @@ -800,13 +800,13 @@ ;; failed to figure out what this is: (defstate basebutton-down-idle (warp-gate-switch) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('hide) - (send-event (handle->process (-> self warp)) arg2) + (send-event (handle->process (-> self warp)) event-type) ) (else - ((-> (method-of-type basebutton basebutton-down-idle) event) arg0 arg1 arg2 arg3) + ((-> (method-of-type basebutton basebutton-down-idle) event) proc arg1 event-type event) ) ) ) diff --git a/test/decompiler/reference/jak2/engine/camera/cam-combiner_REF.gc b/test/decompiler/reference/jak2/engine/camera/cam-combiner_REF.gc index d0b736cede..0baf0590ae 100644 --- a/test/decompiler/reference/jak2/engine/camera/cam-combiner_REF.gc +++ b/test/decompiler/reference/jak2/engine/camera/cam-combiner_REF.gc @@ -123,9 +123,9 @@ ;; failed to figure out what this is: (defstate cam-combiner-active (camera-combiner) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-0 none)) - (let ((v1-0 arg2)) + (let ((v1-0 event-type)) (the-as object (cond @@ -135,7 +135,7 @@ v0-0 ) ((= v1-0 'set-interpolation) - (let ((f0-1 (the float (-> arg3 param 0)))) + (let ((f0-1 (the float (-> event param 0)))) (cond ((>= 0.0 f0-1) (set! (-> self interp-val) 1.0) @@ -171,24 +171,24 @@ (a0-14 0) (a1-4 "ERROR : missing camera-slave parameter to *camera-combiner* start-tracking~%") ) - (let ((v1-8 (-> arg3 param 0))) + (let ((v1-8 (-> event param 0))) (rtype-of v1-8) ) (t9-3 a0-14 a1-4) ) ) - ((not (type? (-> arg3 param 0) camera-slave)) + ((not (type? (-> event param 0) camera-slave)) (let ((t9-5 format) (a0-16 0) (a1-6 "ERROR : invalid type '~A' to *camera-combiner* start-tracking~%") - (v1-11 (-> arg3 param 0)) + (v1-11 (-> event param 0)) ) (t9-5 a0-16 a1-6 (rtype-of v1-11)) ) ) ((zero? (-> self tracking-status)) (set! (-> self tracking-status) (the-as uint 1)) - (let ((gp-1 (the-as camera-slave (-> arg3 param 0)))) + (let ((gp-1 (the-as camera-slave (-> event param 0)))) (set! (-> self tracking-options) (the-as int (-> gp-1 options))) (set! (-> self tracking no-follow) (-> gp-1 tracking no-follow)) (copy-to (-> self tracking tilt-adjust) (-> gp-1 tracking tilt-adjust)) @@ -209,17 +209,17 @@ (a0-23 0) (a1-12 "ERROR : missing camera-slave parameter to *camera-combiner* copy-tracking~%") ) - (let ((v1-23 (-> arg3 param 0))) + (let ((v1-23 (-> event param 0))) (rtype-of v1-23) ) (t9-11 a0-23 a1-12) ) ) - ((not (type? (-> arg3 param 0) camera-slave)) + ((not (type? (-> event param 0) camera-slave)) (let ((t9-13 format) (a0-25 0) (a1-14 "ERROR : invalid type '~A' to *camera-combiner* copy-tracking~%") - (v1-25 (-> arg3 param 0)) + (v1-25 (-> event param 0)) ) (t9-13 a0-25 a1-14 (rtype-of v1-25)) ) @@ -229,7 +229,7 @@ ) (else (set! (-> self tracking-status) (the-as uint 1)) - (let ((gp-3 (the-as camera-slave (-> arg3 param 0)))) + (let ((gp-3 (the-as camera-slave (-> event param 0)))) (set! (-> self tracking-options) (the-as int (-> gp-3 options))) (set! (-> self tracking no-follow) (-> gp-3 tracking no-follow)) (copy-to (-> self tracking tilt-adjust) (-> gp-3 tracking tilt-adjust)) diff --git a/test/decompiler/reference/jak2/engine/camera/cam-states-dbg_REF.gc b/test/decompiler/reference/jak2/engine/camera/cam-states-dbg_REF.gc index a362b505b9..ccd15149c1 100644 --- a/test/decompiler/reference/jak2/engine/camera/cam-states-dbg_REF.gc +++ b/test/decompiler/reference/jak2/engine/camera/cam-states-dbg_REF.gc @@ -29,11 +29,11 @@ ;; failed to figure out what this is: (defstate cam-point-watch (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'teleport) #f - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -478,11 +478,11 @@ ;; failed to figure out what this is: (defstate cam-free-floating (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'teleport) #f - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) diff --git a/test/decompiler/reference/jak2/engine/camera/cam-states_REF.gc b/test/decompiler/reference/jak2/engine/camera/cam-states_REF.gc index 315c013deb..94c181ec9e 100644 --- a/test/decompiler/reference/jak2/engine/camera/cam-states_REF.gc +++ b/test/decompiler/reference/jak2/engine/camera/cam-states_REF.gc @@ -3,11 +3,11 @@ ;; failed to figure out what this is: (defstate cam-really-fixed (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'teleport) #f - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -32,11 +32,11 @@ ;; failed to figure out what this is: (defstate cam-fixed (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'teleport) #f - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -71,11 +71,11 @@ ;; failed to figure out what this is: (defstate cam-fixed-read-entity (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'teleport) #f - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -110,11 +110,11 @@ ;; failed to figure out what this is: (defstate cam-pov (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'teleport) #f - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -176,11 +176,11 @@ ;; failed to figure out what this is: (defstate cam-pov180 (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'teleport) #f - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -357,11 +357,11 @@ ;; failed to figure out what this is: (defstate cam-standoff (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'set-standoff-dist) - (vector-normalize! (-> self pivot-pt) (the-as float (-> arg3 param 0))) + (vector-normalize! (-> self pivot-pt) (the-as float (-> event param 0))) (cam-standoff-calc-trans) ) ((= v1-0 'set-standoff-height) @@ -370,12 +370,12 @@ (-> self pivot-pt) (-> self pivot-pt) (-> *camera* local-down) - (the-as float (-> arg3 param 0)) + (the-as float (-> event param 0)) ) (cam-standoff-calc-trans) ) (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -498,11 +498,11 @@ ;; failed to figure out what this is: (defstate cam-eye (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'teleport) #f - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -761,11 +761,11 @@ ;; failed to figure out what this is: (defstate cam-decel (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'teleport) #f - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -816,11 +816,11 @@ ;; failed to figure out what this is: (defstate cam-endlessfall (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (if (= v1-0 'teleport) #f - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) @@ -4886,9 +4886,9 @@ ;; failed to figure out what this is: (defstate cam-string (camera-slave) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-0 none)) - (let ((v1-0 arg2)) + (let ((v1-0 event-type)) (the-as object (cond @@ -4896,7 +4896,7 @@ (set! (-> self butt-timer) (the-as uint (+ (-> self clock frame-counter) (seconds 0.25)))) (set! (-> self butt-seek) (the-as basic #t)) (set! v0-0 (the-as none (-> self butt-vector))) - (set! (-> (the-as vector v0-0) quad) (-> (the-as vector (-> arg3 param 0)) quad)) + (set! (-> (the-as vector v0-0) quad) (-> (the-as vector (-> event param 0)) quad)) v0-0 ) ((= v1-0 'teleport) @@ -4906,18 +4906,18 @@ ) ) ((= v1-0 'joystick) - (set! (-> self phony-joystick-x) (the-as float (-> arg3 param 0))) - (set! (-> self phony-joystick-y) (the-as float (-> arg3 param 1))) + (set! (-> self phony-joystick-x) (the-as float (-> event param 0))) + (set! (-> self phony-joystick-y) (the-as float (-> event param 1))) (set! v0-0 (the-as none #t)) (set! (-> self have-phony-joystick) (the-as basic v0-0)) v0-0 ) ((= v1-0 'tween-dist) (cond - ((-> arg3 param 0) + ((-> event param 0) (set! (-> self string-val-locked) (the-as basic #t)) - (let ((s5-0 (the-as object (-> arg3 param 0))) - (gp-1 (the-as object (-> arg3 param 1))) + (let ((s5-0 (the-as object (-> event param 0))) + (gp-1 (the-as object (-> event param 1))) ) (if (!= (-> (the-as vector s5-0) y) 4095996000.0) (seek! @@ -4960,10 +4960,10 @@ ) ((= v1-0 'set-dist) (cond - ((-> arg3 param 0) + ((-> event param 0) (set! (-> self string-val-locked) (the-as basic #t)) - (set! (-> self string-min-val quad) (-> (the-as vector (-> arg3 param 0)) quad)) - (set! (-> self string-max-val quad) (-> (the-as vector (-> arg3 param 1)) quad)) + (set! (-> self string-min-val quad) (-> (the-as vector (-> event param 0)) quad)) + (set! (-> self string-max-val quad) (-> (the-as vector (-> event param 1)) quad)) (set! (-> self string-max-val x) (fmax (-> self string-max-val x) (-> self string-min-val x))) (set! (-> self string-max-val y) (fmax (-> self string-max-val y) (-> self string-min-val y))) (set! (-> self string-max-val z) (fmax (-> self string-max-val z) (-> self string-min-val z))) @@ -4976,11 +4976,11 @@ ) ((= v1-0 'relative-position) (cond - ((-> arg3 param 0) + ((-> event param 0) (set! (-> self string-val-locked) (the-as basic #t)) (set! (-> self string-relative) (the-as basic #t)) (set! v0-0 (the-as none (-> self relative-position))) - (set! (-> (the-as vector v0-0) quad) (-> (the-as vector (-> arg3 param 0)) quad)) + (set! (-> (the-as vector v0-0) quad) (-> (the-as vector (-> event param 0)) quad)) v0-0 ) (else @@ -4991,13 +4991,13 @@ ) ) ((= v1-0 'set-max-angle-offset) - (set! (-> self max-angle-offset) (the-as float (-> arg3 param 0))) + (set! (-> self max-angle-offset) (the-as float (-> event param 0))) ) ((= v1-0 'blocked-side?) (-> self los-state) ) (else - (cam-standard-event-handler arg0 arg1 arg2 arg3) + (cam-standard-event-handler proc arg1 event-type event) ) ) ) diff --git a/test/decompiler/reference/jak2/engine/collide/collide-shape-h_REF.gc b/test/decompiler/reference/jak2/engine/collide/collide-shape-h_REF.gc index 4a2b4a778e..3d6b6f831e 100644 --- a/test/decompiler/reference/jak2/engine/collide/collide-shape-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/collide/collide-shape-h_REF.gc @@ -1297,7 +1297,7 @@ (penetrate-using penetrate :offset-assert 168) (penetrated-by penetrate :offset-assert 176) (backup-collide-as collide-spec :offset-assert 184) - (backup-collde-with collide-spec :offset-assert 188) + (backup-collide-with collide-spec :offset-assert 188) (event-priority uint8 :offset-assert 192) (rider-max-momentum float :offset-assert 196) ) @@ -1306,7 +1306,7 @@ :flag-assert #x37000000c8 (:methods (new (symbol type process-drawable collide-list-enum) _type_ 0) - (collide-shape-method-28 () none 28) + (move-by-vector! (_type_ vector) none 28) (collide-shape-method-29 (_type_ vector) none 29) (collide-shape-method-30 () none 30) (collide-shape-method-31 () none 31) @@ -1573,7 +1573,7 @@ ) (format #t ")~%") (format #t "~1Tbackup-collide-as: ~D~%" (-> obj backup-collide-as)) - (format #t "~1Tbackup-collide-with: ~D~%" (-> obj backup-collde-with)) + (format #t "~1Tbackup-collide-with: ~D~%" (-> obj backup-collide-with)) (format #t "~1Tevent-priority: ~D~%" (-> obj event-priority)) (format #t "~1Trider-max-momentum: ~f~%" (-> obj rider-max-momentum)) (label cfg-136) @@ -1867,7 +1867,7 @@ ) (format #t ")~%") (format #t "~1Tbackup-collide-as: ~D~%" (-> obj backup-collide-as)) - (format #t "~1Tbackup-collide-with: ~D~%" (-> obj backup-collde-with)) + (format #t "~1Tbackup-collide-with: ~D~%" (-> obj backup-collide-with)) (format #t "~1Tevent-priority: ~D~%" (-> obj event-priority)) (format #t "~1Trider-max-momentum: ~f~%" (-> obj rider-max-momentum)) (format #t "~1Trider-time: ~D~%" (-> obj rider-time)) diff --git a/test/decompiler/reference/jak2/engine/collide/collide-touch-h_REF.gc b/test/decompiler/reference/jak2/engine/collide/collide-touch-h_REF.gc index 4d7dbbac27..9e75bb8eeb 100644 --- a/test/decompiler/reference/jak2/engine/collide/collide-touch-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/collide/collide-touch-h_REF.gc @@ -146,7 +146,7 @@ (get-next (_type_ touching-shapes-entry) touching-prims-entry 10) (touching-shapes-entry-method-11 () none 11) (touching-shapes-entry-method-12 (_type_ collide-shape uint) touching-prims-entry 12) - (touching-shapes-entry-method-13 () none 13) + (touching-shapes-entry-method-13 (_type_ collide-shape uint uint) basic 13) (touching-shapes-entry-method-14 () none 14) ) ) diff --git a/test/decompiler/reference/jak2/engine/common_objs/base-plat_REF.gc b/test/decompiler/reference/jak2/engine/common_objs/base-plat_REF.gc new file mode 100644 index 0000000000..a1fcaca7e9 --- /dev/null +++ b/test/decompiler/reference/jak2/engine/common_objs/base-plat_REF.gc @@ -0,0 +1,472 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type base-plat +(deftype base-plat (process-focusable) + ((root-override collide-shape-moving :offset 128) + (smush smush-control :inline :offset-assert 208) + (basetrans vector :inline :offset-assert 240) + (bounce-time time-frame :offset-assert 256) + (bouncing symbol :offset-assert 264) + (bounce-scale meters :offset-assert 268) + ) + :heap-base #x90 + :method-count-assert 34 + :size-assert #x110 + :flag-assert #x2200900110 + (:methods + (execute-effects (_type_) none 27) + (stop-bouncing! (_type_) none 28) + (start-bouncing! (_type_) none :behavior base-plat 29) + (get-art-group (_type_) art-group 30) + (base-plat-method-31 (_type_) none 31) + (base-plat-method-32 (_type_) none 32) + (base-plat-method-33 (_type_) none 33) + ) + ) + +;; definition for method 3 of type base-plat +(defmethod inspect base-plat ((obj base-plat)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-focusable inspect))) + (t9-0 obj) + ) + (format #t "~2Tsmush: #~%" (-> obj smush)) + (format #t "~2Tbasetrans: #~%" (-> obj basetrans)) + (format #t "~2Tbounce-time: ~D~%" (-> obj bounce-time)) + (format #t "~2Tbouncing: ~A~%" (-> obj bouncing)) + (format #t "~2Tbounce-scale: (meters ~m)~%" (-> obj bounce-scale)) + (label cfg-4) + obj + ) + +;; definition for method 33 of type base-plat +;; WARN: Return type mismatch int vs none. +(defmethod base-plat-method-33 base-plat ((obj base-plat)) + 0 + (none) + ) + +;; definition for method 28 of type base-plat +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs none. +(defmethod stop-bouncing! base-plat ((obj base-plat)) + "Sets `bouncing` to false and resets related settings to their defaults" + (set! (-> obj basetrans quad) (-> obj root-override trans quad)) + (set! (-> obj bouncing) #f) + (set! (-> obj bounce-scale) 819.2) + 0 + (none) + ) + +;; definition for method 29 of type base-plat +;; WARN: Return type mismatch int vs none. +(defmethod start-bouncing! base-plat ((obj base-plat)) + "Sets `bouncing` to [[#t]] and sets up the clock to periodically bounce + and translate the platform via the `smush` + @see [[smush-control]]" + (activate! (-> obj smush) -1.0 60 150 1.0 1.0 (-> self clock)) + (set! (-> obj bounce-time) (-> self clock frame-counter)) + (set! (-> obj bouncing) #t) + (sound-play "plat-bounce" :position (-> obj root-override trans)) + (logclear! (-> obj mask) (process-mask sleep)) + (logclear! (-> obj mask) (process-mask sleep-code)) + 0 + (none) + ) + +;; definition for function plat-code +;; WARN: Return type mismatch symbol vs none. +;; WARN: new jak 2 until loop case, check carefully +(defbehavior plat-code base-plat () + "After calling [[transform-post]] for 2 consecutive frames, put the process to sleep if it's not bouncing + otherwise, continue bouncing...forever! + @see [[transform-post]]" + (transform-post) + (suspend) + (transform-post) + (suspend) + (until #f + (when (not (-> self bouncing)) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0 + ) + (while (-> self bouncing) + (suspend) + ) + ) + #f + (none) + ) + +;; definition for function plat-trans +;; INFO: Used lq/sq +(defbehavior plat-trans base-plat () + "If the platform is `bouncing`, move the platform accordingly with the [[smush-control]] + - If the amplitude of the `smush` has hit `0.0` then stop bouncing + + If we aren't bouncing however, TODO - CSHAPE" + (rider-trans) + (cond + ((-> self bouncing) + (let ((trans (new 'stack-no-clear 'vector))) + (set! (-> trans quad) (-> self basetrans quad)) + (+! (-> trans y) (* (-> self bounce-scale) (update! (-> self smush)))) + (collide-shape-method-29 (-> self root-override) trans) + ) + (if (not (!= (-> self smush amp) 0.0)) + (set! (-> self bouncing) #f) + ) + ) + (else + (collide-shape-method-29 (-> self root-override) (-> self basetrans)) + ) + ) + (none) + ) + +;; definition for function plat-post +(defbehavior plat-post base-plat () + (execute-effects self) + (rider-post) + (none) + ) + +;; definition for method 32 of type base-plat +;; WARN: Return type mismatch int vs none. +(defmethod base-plat-method-32 base-plat ((obj base-plat)) + 0 + (none) + ) + +;; definition for method 27 of type base-plat +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs none. +(defmethod execute-effects base-plat ((obj base-plat)) + "Executes various ancillary tasks with the platform, such as spawning particles or playing the associated sound" + (if (nonzero? (-> obj part)) + (sparticle-launch-control-method-11 (-> obj part) (-> obj root-override trans)) + ) + (when (nonzero? (-> obj sound)) + (set! (-> obj sound trans quad) (-> obj root-override trans quad)) + (update! (-> obj sound)) + ) + (none) + ) + +;; definition for function plat-event +;; WARN: Return type mismatch none vs object. +(defbehavior plat-event base-plat ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + "Handles platform related events. Presently all this does is: + - if `event-type` is [['bonk]], then call [[base-plat:29]]" + (let ((evt-type event-type)) + (the-as object (if (= evt-type 'bonk) + (start-bouncing! self) + ) + ) + ) + ) + +;; definition of type eco-door +(deftype eco-door (process-drawable) + "@unused - Likely a left-over from Jak 1" + ((root-override collide-shape :offset 128) + (speed float :offset-assert 200) + (open-distance float :offset-assert 204) + (close-distance float :offset-assert 208) + (out-dir vector :inline :offset-assert 224) + (open-sound sound-name :offset-assert 240) + (close-sound sound-name :offset-assert 256) + (state-actor entity-actor :offset-assert 272) + (flags eco-door-flags :offset-assert 276) + (locked symbol :offset-assert 280) + (auto-close symbol :offset-assert 284) + (one-way symbol :offset-assert 288) + ) + :heap-base #xb0 + :method-count-assert 27 + :size-assert #x124 + :flag-assert #x1b00b00124 + (:methods + (door-closed () _type_ :state 20) + (door-opening () _type_ :state 21) + (door-open () _type_ :state 22) + (door-closing () _type_ :state 23) + (lock-according-to-task! (_type_) none 24) + (eco-door-method-25 (_type_) none 25) + (stub (_type_) none 26) + ) + ) + +;; definition for method 3 of type eco-door +;; INFO: Used lq/sq +(defmethod inspect eco-door ((obj eco-door)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~2Tspeed: ~f~%" (-> obj speed)) + (format #t "~2Topen-distance: ~f~%" (-> obj open-distance)) + (format #t "~2Tclose-distance: ~f~%" (-> obj close-distance)) + (format #t "~2Tout-dir: #~%" (-> obj out-dir)) + (format #t "~2Topen-sound: ~D~%" (-> obj open-sound)) + (format #t "~2Tclose-sound: ~D~%" (-> obj close-sound)) + (format #t "~2Tstate-actor: ~A~%" (-> obj state-actor)) + (format #t "~2Tflags: ~D~%" (-> obj flags)) + (format #t "~2Tlocked: ~A~%" (-> obj locked)) + (format #t "~2Tauto-close: ~A~%" (-> obj auto-close)) + (format #t "~2Tone-way: ~A~%" (-> obj one-way)) + (label cfg-4) + obj + ) + +;; definition for function eco-door-event-handler +;; WARN: Return type mismatch symbol vs object. +(defbehavior eco-door-event-handler eco-door ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + "If the `event-type` is `'trigger`, flip the `locked` flag on the door + and play the respective sound + + @unused - likely a leftover from Jak 1" + (let ((evt-type event-type)) + (the-as object (when (= evt-type 'trigger) + (set! (-> self locked) (not (-> self locked))) + (cond + ((-> self locked) + (if (and (-> self next-state) (= (-> self next-state name) 'door-closed)) + (sound-play "door-lock") + ) + ) + (else + (sound-play "door-unlock") + ) + ) + #t + ) + ) + ) + ) + +;; failed to figure out what this is: +eco-door-event-handler + +;; failed to figure out what this is: +(defstate door-closed (eco-door) + :virtual #t + :event eco-door-event-handler + :code (behavior () + (ja :num-func num-func-identity :frame-num 0.0) + (suspend) + (collide-shape-method-46 (-> self root-override)) + (ja-post) + (until #f + (when (and *target* (and (>= (-> self open-distance) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + (zero? (logand (focus-status teleporting) (-> *target* focus-status))) + ) + ) + (lock-according-to-task! self) + (if (and (not (-> self locked)) + (or (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status subtask-complete))) + (send-event *target* 'query 'powerup (pickup-type eco-blue)) + (and (-> self one-way) (< (vector4-dot (-> self out-dir) (target-pos 0)) -8192.0)) + ) + ) + (go-virtual door-opening) + ) + ) + (suspend) + ) + #f + (none) + ) + ) + +;; failed to figure out what this is: +(defstate door-opening (eco-door) + :virtual #t + :event eco-door-event-handler + :code (behavior () + (if (and (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status subtask-complete))) + ) + (send-event *target* 'query 'powerup (pickup-type eco-blue)) + ) + (sound-play "blue-eco-on" :position (-> self root-override trans)) + ) + (sound-play-by-name (-> self open-sound) (new-sound-id) 1024 0 0 (sound-group sfx) #t) + (let ((prim (-> self root-override root-prim))) + (set! (-> prim prim-core collide-as) (collide-spec)) + (set! (-> prim prim-core collide-with) (collide-spec)) + ) + 0 + (until (ja-done? 0) + (ja :num! (seek! max (-> self speed))) + (suspend) + ) + (go-virtual door-open) + (none) + ) + :post (the-as (function none :behavior eco-door) transform-post) + ) + +;; failed to figure out what this is: +(defstate door-open (eco-door) + :virtual #t + :event eco-door-event-handler + :code (behavior () + (set! (-> self state-time) (-> self clock frame-counter)) + (process-entity-status! self (entity-perm-status subtask-complete) #t) + (let ((prim (-> self root-override root-prim))) + (set! (-> prim prim-core collide-as) (collide-spec)) + (set! (-> prim prim-core collide-with) (collide-spec)) + ) + 0 + (ja :num-func num-func-identity :frame-num max) + (logior! (-> self draw status) (draw-control-status no-draw)) + (suspend) + (collide-shape-method-46 (-> self root-override)) + (ja-post) + (until #f + (let ((dist-from-target (vector4-dot (-> self out-dir) (target-pos 0))) + (dist-from-camera (vector4-dot (-> self out-dir) (camera-pos))) + ) + (when (and (-> self auto-close) + (or (not *target*) (or (< (-> self close-distance) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + (logtest? (focus-status teleporting) (-> *target* focus-status)) + ) + ) + ) + (if (and (>= (* dist-from-target dist-from-camera) 0.0) (< 16384.0 (fabs dist-from-camera))) + (go-virtual door-closing) + ) + ) + ) + (suspend) + ) + #f + (none) + ) + ) + +;; failed to figure out what this is: +(defstate door-closing (eco-door) + :virtual #t + :event eco-door-event-handler + :code (behavior () + (let ((v1-1 (-> self root-override root-prim))) + (set! (-> v1-1 prim-core collide-as) (-> self root-override backup-collide-as)) + (set! (-> v1-1 prim-core collide-with) (-> self root-override backup-collide-with)) + ) + (logclear! (-> self draw status) (draw-control-status no-draw)) + (let ((params (new 'stack 'overlaps-others-params))) + (set! (-> params options) (overlaps-others-options oo0)) + (set! (-> params tlist) #f) + (while (find-overlapping-shapes (-> self root-override) params) + (suspend) + ) + ) + (sound-play-by-name (-> self close-sound) (new-sound-id) 1024 0 0 (sound-group sfx) #t) + (until (ja-done? 0) + (ja :num! (seek! 0.0 (-> self speed))) + (suspend) + ) + (if (-> self locked) + (sound-play "door-lock") + ) + (go-virtual door-closed) + (none) + ) + :post (the-as (function none :behavior eco-door) transform-post) + ) + +;; definition for method 24 of type eco-door +;; WARN: Return type mismatch int vs none. +(defmethod lock-according-to-task! eco-door ((obj eco-door)) + "If the associated subtask is completed, lock the door if [[eco-door-flags:0]] is set + otherwise, lock it if [[eco-door-flags:0]] is set" + (when (-> obj state-actor) + (if (logtest? (-> obj state-actor extra perm status) (entity-perm-status subtask-complete)) + (set! (-> obj locked) (logtest? (-> obj flags) (eco-door-flags ecdf01))) + (set! (-> obj locked) (logtest? (-> obj flags) (eco-door-flags ecdf00))) + ) + ) + 0 + (none) + ) + +;; definition for method 25 of type eco-door +;; WARN: Return type mismatch int vs none. +(defmethod eco-door-method-25 eco-door ((obj eco-door)) + (let ((collision-shape (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((collision-mesh (new 'process 'collide-shape-prim-mesh collision-shape (the-as uint 0) (the-as uint 0)))) + (set! (-> collision-mesh prim-core collide-as) (collide-spec obstacle)) + (set! (-> collision-mesh prim-core collide-with) (collide-spec jak player-list)) + (set! (-> collision-mesh prim-core action) (collide-action solid)) + (set! (-> collision-mesh transform-index) 0) + (set-vector! (-> collision-mesh local-sphere) 0.0 0.0 0.0 16384.0) + (set! (-> collision-shape total-prims) (the-as uint 1)) + (set! (-> collision-shape root-prim) collision-mesh) + ) + (set! (-> collision-shape nav-radius) (* 0.75 (-> collision-shape root-prim local-sphere w))) + (let ((prim (-> collision-shape root-prim))) + (set! (-> collision-shape backup-collide-as) (-> prim prim-core collide-as)) + (set! (-> collision-shape backup-collide-with) (-> prim prim-core collide-with)) + ) + (set! (-> obj root-override) collision-shape) + ) + 0 + (none) + ) + +;; definition for method 26 of type eco-door +;; WARN: Return type mismatch int vs none. +(defmethod stub eco-door ((obj eco-door)) + "@unused - Stub with no overrides" + 0 + (none) + ) + +;; definition for method 11 of type eco-door +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! eco-door ((obj eco-door) (arg0 entity-actor)) + (eco-door-method-25 obj) + (process-drawable-from-entity! obj arg0) + (let ((door-scale (res-lump-float (-> obj entity) 'scale :default 1.0))) + (set-vector! (-> obj root-override scale) door-scale door-scale door-scale 1.0) + ) + (set! (-> obj open-distance) 32768.0) + (set! (-> obj close-distance) 49152.0) + (set! (-> obj speed) 1.0) + (set! (-> obj state-actor) #f) + (let ((state-actor (entity-actor-lookup arg0 'state-actor 0))) + (if state-actor + (set! (-> obj state-actor) state-actor) + ) + ) + (set! (-> obj locked) #f) + (set! (-> obj flags) (res-lump-value arg0 'flags eco-door-flags :time -1000000000.0)) + (lock-according-to-task! obj) + (set! (-> obj auto-close) (logtest? (-> obj flags) (eco-door-flags auto-close))) + (set! (-> obj one-way) (logtest? (-> obj flags) (eco-door-flags one-way))) + (vector-z-quaternion! (-> obj out-dir) (-> obj root-override quat)) + (set! (-> obj out-dir w) (- (vector-dot (-> obj out-dir) (-> obj root-override trans)))) + (collide-shape-method-46 (-> obj root-override)) + (stub obj) + (if (and (not (-> obj auto-close)) + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status subtask-complete)) + ) + (go (method-of-object obj door-open)) + (go (method-of-object obj door-closed)) + ) + (none) + ) diff --git a/test/decompiler/reference/jak2/engine/common_objs/basebutton_REF.gc b/test/decompiler/reference/jak2/engine/common_objs/basebutton_REF.gc new file mode 100644 index 0000000000..7b45b65e09 --- /dev/null +++ b/test/decompiler/reference/jak2/engine/common_objs/basebutton_REF.gc @@ -0,0 +1,541 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type basebutton +(deftype basebutton (process-focusable) + ((button-status button-status :offset-assert 204) + (notify-actor entity :offset-assert 208) + (actor-group (pointer actor-group) :offset-assert 212) + (actor-group-count int32 :offset-assert 216) + (timeout float :offset-assert 220) + (button-id int32 :offset-assert 224) + (event-going-down symbol :offset-assert 228) + (event-down symbol :offset-assert 232) + (event-going-up symbol :offset-assert 236) + (event-up symbol :offset-assert 240) + (anim-speed float :offset-assert 244) + (move-to-pos vector :inline :offset-assert 256) + (move-to-quat quaternion :inline :offset-assert 272) + ) + :heap-base #xa0 + :method-count-assert 39 + :size-assert #x120 + :flag-assert #x2700a00120 + (:methods + (down-idle () _type_ :state 27) + (going-down () _type_ :state 28) + (going-up () _type_ :state 29) + (up-idle () _type_ :state 30) + (reset! (_type_) none 31) + (idle-state-transition (_type_) object 32) + (basebutton-method-33 (_type_) none 33) + (basebutton-method-34 (_type_) none 34) + (prepare-trigger-event! (_type_) none 35) + (send-event! (_type_ symbol) none :behavior basebutton 36) + (move-to! (_type_ vector quaternion) none 37) + (press! (_type_ symbol) entity-perm-status 38) + ) + ) + +;; definition for method 3 of type basebutton +(defmethod inspect basebutton ((obj basebutton)) + (when (not obj) + (set! obj obj) + (goto cfg-7) + ) + (let ((t9-0 (method-of-type process-focusable inspect))) + (t9-0 obj) + ) + (format #t "~2Tbutton-status: ~D~%" (-> obj button-status)) + (format #t "~2Tnotify-actor: ~A~%" (-> obj notify-actor)) + (format #t "~2Tactor-group: #x~X~%" (-> obj actor-group)) + (dotimes (s5-0 (-> obj actor-group-count)) + (format #t "~T [~D]~2Tactor-group: ~`actor-group`P~%" s5-0 (-> obj actor-group s5-0)) + ) + (format #t "~2Tactor-group-count: ~D~%" (-> obj actor-group-count)) + (format #t "~2Ttimeout: ~f~%" (-> obj timeout)) + (format #t "~2Tbutton-id: ~D~%" (-> obj button-id)) + (format #t "~2Tevent-going-down: ~A~%" (-> obj event-going-down)) + (format #t "~2Tevent-down: ~A~%" (-> obj event-down)) + (format #t "~2Tevent-going-up: ~A~%" (-> obj event-going-up)) + (format #t "~2Tevent-up: ~A~%" (-> obj event-up)) + (format #t "~2Tanim-speed: ~f~%" (-> obj anim-speed)) + (format #t "~2Tmove-to-pos: #~%" (-> obj move-to-pos)) + (format #t "~2Tmove-to-quat: #~%" (-> obj move-to-quat)) + (label cfg-7) + obj + ) + +;; failed to figure out what this is: +(let ((a0-2 (new 'static 'skeleton-group + :name "skel-generic-button" + :extra #f + :info #f + :art-group-name "mtn-dice-button" + :bounds (new 'static 'vector :w 12288.0) + :version #x7 + ) + ) + ) + (set! (-> a0-2 jgeo) 0) + (set! (-> a0-2 janim) 3) + (set! (-> a0-2 mgeo 0) 1) + (set! (-> a0-2 lod-dist 0) 4095996000.0) + (add-to-loading-level a0-2) + ) + +;; definition for method 37 of type basebutton +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs none. +(defmethod move-to! basebutton ((obj basebutton) (vec vector) (quat quaternion)) + (logclear! (-> obj button-status) (button-status button-status-2)) + (if vec + (set! (-> obj move-to-pos quad) (-> vec quad)) + (set! (-> obj move-to-pos quad) (-> obj root trans quad)) + ) + (if quat + (quaternion-copy! (-> obj move-to-quat) quat) + (quaternion-copy! (-> obj move-to-quat) (-> obj root quat)) + ) + 0 + (none) + ) + +;; definition for method 32 of type basebutton +(defmethod idle-state-transition basebutton ((obj basebutton)) + "If `button-status` has [[button-status:0]] set, transition to [[basebutton::27]] otherwise, [[basebutton::30]]" + (if (logtest? (-> obj button-status) (button-status pressed)) + (go (method-of-object obj down-idle)) + (go (method-of-object obj up-idle)) + ) + ) + +;; failed to figure out what this is: +(defstate up-idle (basebutton) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) + (the-as object (cond + ((= v1-0 'attack) + (let ((attack (the-as attack-info (-> event param 1)))) + (case (-> attack mode) + (('flop 'spin 'punch 'eco-yellow 'eco-red 'eco-blue 'eco-dark) + (when (or (not (or (= (-> attack mode) 'spin) (= (-> attack mode) 'punch))) + (logtest? (-> self button-status) (button-status button-status-3)) + ) + (send-event! self (-> self event-going-down)) + (go-virtual going-down) + ) + ) + ) + ) + ) + ((= v1-0 'trigger) + (sound-play "silo-button") + (go-virtual going-down) + ) + ((= v1-0 'touch) + (when (logtest? (-> self button-status) (button-status button-status-4)) + (send-event! self (-> self event-going-down)) + (go-virtual going-down) + ) + ) + ((= v1-0 'move-to) + (move-to! self (the-as vector (-> event param 0)) (the-as quaternion (-> event param 1))) + ) + ) + ) + ) + ) + :enter (behavior () + (press! self #f) + (none) + ) + :trans (behavior () + (if (logtest? (-> self button-status) (button-status button-status-2)) + (rider-trans) + ) + (none) + ) + :code (the-as (function none :behavior basebutton) sleep-code) + :post (behavior () + (when (logtest? (-> self button-status) (button-status button-status-2)) + (logclear! (-> self button-status) (button-status button-status-2)) + (set! (-> self root trans quad) (-> self move-to-pos quad)) + (quaternion-copy! (-> self root quat) (-> self move-to-quat)) + (rider-post) + ) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate going-down (basebutton) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((evt-type event-type)) + (the-as object (cond + ((= evt-type 'untrigger) + (go-virtual going-up) + ) + ((= evt-type 'move-to) + (move-to! self (the-as vector (-> event param 0)) (the-as quaternion (-> event param 1))) + ) + ) + ) + ) + ) + :enter (behavior () + (press! self #t) + (none) + ) + :trans (the-as (function none :behavior basebutton) rider-trans) + :code (behavior () + (ja-no-eval :num! (seek! max (-> self anim-speed))) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max (-> self anim-speed))) + ) + (send-event! self (-> self event-down)) + (let ((activation-script (res-lump-struct (-> self entity) 'on-activate structure))) + (if activation-script + (eval! + (new 'stack 'script-context (the-as basic (process->ppointer self)) self (the-as vector #f)) + (the-as pair activation-script) + ) + ) + ) + (go-virtual down-idle) + (none) + ) + :post (behavior () + (when (logtest? (-> self button-status) (button-status button-status-2)) + (logclear! (-> self button-status) (button-status button-status-2)) + (set! (-> self root trans quad) (-> self move-to-pos quad)) + (quaternion-copy! (-> self root quat) (-> self move-to-quat)) + ) + (rider-post) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate down-idle (basebutton) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((evt-type event-type)) + (the-as object (cond + ((= evt-type 'untrigger) + (go-virtual going-up) + ) + ((= evt-type 'move-to) + (move-to! self (the-as vector (-> event param 0)) (the-as quaternion (-> event param 1))) + ) + ) + ) + ) + ) + :enter (behavior () + (press! self #t) + (set! (-> self state-time) (-> self clock frame-counter)) + (none) + ) + :trans (behavior () + (if (logtest? (-> self button-status) (button-status button-status-2)) + (rider-trans) + ) + (none) + ) + :code (behavior () + (cond + ((= (-> self timeout) 0.0) + (sleep-code) + ) + (else + (until (>= (- (-> self clock frame-counter) (-> self state-time)) (the int (* 300.0 (-> self timeout)))) + (suspend) + ) + (send-event! self (-> self event-going-up)) + (sound-play "silo-button") + (go-virtual going-up) + ) + ) + (none) + ) + :post (behavior () + (when (logtest? (-> self button-status) (button-status button-status-2)) + (logclear! (-> self button-status) (button-status button-status-2)) + (set! (-> self root trans quad) (-> self move-to-pos quad)) + (quaternion-copy! (-> self root quat) (-> self move-to-quat)) + (rider-post) + ) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate going-up (basebutton) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) + (the-as object (cond + ((= v1-0 'move-to) + (move-to! self (the-as vector (-> event param 0)) (the-as quaternion (-> event param 1))) + ) + ((= v1-0 'trigger) + (go-virtual going-down) + ) + ) + ) + ) + ) + :enter (behavior () + (press! self #f) + (none) + ) + :trans (the-as (function none :behavior basebutton) rider-trans) + :code (behavior () + (ja-no-eval :num! (seek! 0.0 (-> self anim-speed))) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0 (-> self anim-speed))) + ) + (send-event! self (-> self event-up)) + (go-virtual up-idle) + (none) + ) + :post (behavior () + (when (logtest? (-> self button-status) (button-status button-status-2)) + (logclear! (-> self button-status) (button-status button-status-2)) + (set! (-> self root trans quad) (-> self move-to-pos quad)) + (quaternion-copy! (-> self root quat) (-> self move-to-quat)) + ) + (rider-post) + (none) + ) + ) + +;; definition for method 38 of type basebutton +(defmethod press! basebutton ((obj basebutton) (pressed? symbol)) + (if pressed? + (logior! (-> obj button-status) (button-status pressed)) + (logclear! (-> obj button-status) (button-status pressed)) + ) + (when (not (logtest? (-> obj button-status) (button-status button-status-1))) + (if pressed? + (process-entity-status! obj (entity-perm-status subtask-complete) #t) + (process-entity-status! obj (entity-perm-status subtask-complete) #f) + ) + ) + ) + +;; definition for method 36 of type basebutton +;; WARN: Return type mismatch int vs none. +(defmethod send-event! basebutton ((obj basebutton) (event-type symbol)) + "Prepares an [[event-message-block]] using the provided type to send an event to: + - the `notify-actor` + - every [[entity-actor]] in the `actor-group` array + @see [[entity-actor]]" + (when event-type + (let ((event (new 'stack-no-clear 'event-message-block))) + (set! (-> event from) (process->ppointer self)) + (set! (-> event num-params) 0) + (set! (-> event message) event-type) + (let ((func send-event-function) + (actor (-> obj notify-actor)) + ) + (func + (if actor + (-> actor extra process) + ) + event + ) + (dotimes (actor-group-idx (-> obj actor-group-count)) + (let ((actor-group (-> obj actor-group actor-group-idx))) + (dotimes (actor-idx (-> actor-group length)) + (set! event (new 'stack-no-clear 'event-message-block)) + (set! (-> event from) (process->ppointer self)) + (set! (-> event num-params) 0) + (set! (-> event message) event-type) + (set! func send-event-function) + (set! actor (-> actor-group data actor-idx actor)) + (func + (if actor + (-> actor extra process) + ) + event + ) + ) + ) + ) + ) + ) + ) + 0 + (none) + ) + +;; definition for method 31 of type basebutton +;; WARN: Return type mismatch int vs none. +(defmethod reset! basebutton ((obj basebutton)) + (set! (-> obj button-status) (button-status)) + (set! (-> obj notify-actor) #f) + (set! (-> obj timeout) 0.0) + (set! (-> obj event-going-down) #f) + (set! (-> obj event-down) #f) + (set! (-> obj event-going-up) #f) + (set! (-> obj event-up) #f) + (set! (-> obj anim-speed) 1.0) + 0 + (none) + ) + +;; definition for method 35 of type basebutton +;; WARN: Return type mismatch int vs none. +(defmethod prepare-trigger-event! basebutton ((obj basebutton)) + "Sets `event-going-down` to `'trigger`" + (set! (-> obj event-going-down) 'trigger) + 0 + (none) + ) + +;; definition for method 33 of type basebutton +;; WARN: Return type mismatch int vs none. +(defmethod basebutton-method-33 basebutton ((obj basebutton)) + "TODO - joint stuff" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-generic-button" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (ja-channel-set! 1) + (cond + ((logtest? (-> obj button-status) (button-status pressed)) + (let ((channel-0 (-> obj skel root-channel 0))) + (joint-control-channel-group-eval! + channel-0 + (the-as art-joint-anim (-> obj draw art-group data 3)) + num-func-identity + ) + (set! (-> channel-0 frame-num) + (the float (+ (-> (the-as art-joint-anim (-> obj draw art-group data 3)) frames num-frames) -1)) + ) + ) + ) + (else + (let ((channel-1 (-> obj skel root-channel 0))) + (joint-control-channel-group-eval! + channel-1 + (the-as art-joint-anim (-> obj draw art-group data 3)) + num-func-identity + ) + (set! (-> channel-1 frame-num) 0.0) + ) + ) + ) + (set! (-> obj anim-speed) 2.0) + (transform-post) + (none) + ) + +;; definition for method 34 of type basebutton +;; WARN: Return type mismatch int vs none. +(defmethod basebutton-method-34 basebutton ((obj basebutton)) + "TODO - collision stuff" + (let ((collision-shape (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((collision-mesh (new 'process 'collide-shape-prim-mesh collision-shape (the-as uint 0) (the-as uint 0)))) + (set! (-> collision-mesh prim-core collide-as) (collide-spec obstacle pusher)) + (set! (-> collision-mesh prim-core collide-with) (collide-spec jak bot player-list)) + (set! (-> collision-mesh prim-core action) (collide-action solid rideable)) + (set! (-> collision-mesh transform-index) 3) + (set-vector! (-> collision-mesh local-sphere) 0.0 0.0 0.0 12288.0) + (set! (-> collision-shape total-prims) (the-as uint 1)) + (set! (-> collision-shape root-prim) collision-mesh) + ) + ((method-of-object collision-shape collide-shape-method-54)) + (set! (-> collision-shape nav-radius) (* 0.75 (-> collision-shape root-prim local-sphere w))) + (let ((prim (-> collision-shape root-prim))) + (set! (-> collision-shape backup-collide-as) (-> prim prim-core collide-as)) + (set! (-> collision-shape backup-collide-with) (-> prim prim-core collide-with)) + ) + (set! (-> obj root) collision-shape) + ) + 0 + (none) + ) + +;; definition for method 11 of type basebutton +;; INFO: Used lq/sq +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! basebutton ((obj basebutton) (arg0 entity-actor)) + (local-vars (sv-16 res-tag)) + (reset! obj) + (set! (-> obj button-id) -1) + (let ((v1-4 (res-lump-value (-> obj entity) 'extra-id uint128 :default (the-as uint128 -1) :time -1000000000.0))) + (if (>= (the-as int v1-4) 0) + (set! (-> obj button-id) (the-as int v1-4)) + ) + ) + (basebutton-method-34 obj) + (process-drawable-from-entity! obj arg0) + (if (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status subtask-complete))) + (logior! (-> obj button-status) (button-status pressed)) + (logclear! (-> obj button-status) (button-status pressed)) + ) + (set! (-> obj notify-actor) (entity-actor-lookup arg0 'alt-actor 0)) + (set! sv-16 (new 'static 'res-tag)) + (let ((v1-15 (res-lump-data (-> obj entity) 'actor-groups pointer :tag-ptr (& sv-16)))) + (cond + ((and v1-15 (nonzero? (-> sv-16 elt-count))) + (set! (-> obj actor-group) (the-as (pointer actor-group) v1-15)) + (set! (-> obj actor-group-count) (the-as int (-> sv-16 elt-count))) + ) + (else + (set! (-> obj actor-group) (the-as (pointer actor-group) #f)) + (set! (-> obj actor-group-count) 0) + 0 + ) + ) + ) + (set! (-> obj timeout) (res-lump-float arg0 'timeout)) + (if (not (logtest? (-> obj button-status) (button-status button-status-1))) + (nav-mesh-connect-from-ent (the-as entity-nav-mesh obj)) + ) + (prepare-trigger-event! obj) + (basebutton-method-33 obj) + (idle-state-transition obj) + (none) + ) + +;; definition for function basebutton-init-by-other +;; INFO: Used lq/sq +;; WARN: Return type mismatch object vs none. +(defbehavior basebutton-init-by-other basebutton ((process-actor entity-actor) + (vec vector) + (quat quaternion) + (notify-actor entity-actor) + (pressed? symbol) + (timeout float) + ) + (reset! self) + (logior! (-> self button-status) (button-status button-status-1)) + (set! (-> self button-id) -1) + (if pressed? + (logior! (-> self button-status) (button-status pressed)) + ) + (set! (-> self notify-actor) notify-actor) + (set! (-> self timeout) timeout) + (if process-actor + (process-entity-set! self process-actor) + ) + (set! (-> self actor-group) (the-as (pointer actor-group) #f)) + (set! (-> self actor-group-count) 0) + (basebutton-method-34 self) + (set! (-> self root trans quad) (-> vec quad)) + (quaternion-copy! (-> self root quat) quat) + (set-vector! (-> self root scale) 1.0 1.0 1.0 1.0) + (prepare-trigger-event! self) + (basebutton-method-33 self) + (idle-state-transition self) + (none) + ) diff --git a/test/decompiler/reference/jak2/engine/common_objs/blocking-plane_REF.gc b/test/decompiler/reference/jak2/engine/common_objs/blocking-plane_REF.gc new file mode 100644 index 0000000000..4ede4de5f9 --- /dev/null +++ b/test/decompiler/reference/jak2/engine/common_objs/blocking-plane_REF.gc @@ -0,0 +1,263 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type blocking-plane +(deftype blocking-plane (process-drawable) + ((root-override collide-shape :offset 128) + ) + :heap-base #x50 + :method-count-assert 22 + :size-assert #xc8 + :flag-assert #x16005000c8 + (:methods + (idle () _type_ :state 20) + (init! (_type_ (inline-array vector) float) none 21) + ) + ) + +;; definition for method 3 of type blocking-plane +(defmethod inspect blocking-plane ((obj blocking-plane)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(let ((a0-2 (new 'static 'skeleton-group + :name "skel-blocking-plane" + :extra #f + :info #f + :art-group-name "blocking-plane" + :bounds (new 'static 'vector :w 410009.6) + :texture-level #x6 + :version #x7 + ) + ) + ) + (set! (-> a0-2 jgeo) 0) + (set! (-> a0-2 janim) 2) + (set! (-> a0-2 mgeo 0) 1) + (set! (-> a0-2 lod-dist 0) 4095996000.0) + (add-to-loading-level a0-2) + ) + +;; failed to figure out what this is: +(defstate idle (blocking-plane) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((evt-type event-type)) + (the-as object (cond + ((= evt-type 'on) + (cond + ((nonzero? (-> self root-override)) + (let ((prim (-> self root-override root-prim))) + (set! (-> prim prim-core collide-as) (-> self root-override backup-collide-as)) + (let ((v0-0 (the-as int (-> self root-override backup-collide-with)))) + (set! (-> prim prim-core collide-with) (the-as collide-spec v0-0)) + v0-0 + ) + ) + ) + (else + (let ((proc-child-ptr-0 (-> self child))) + (while proc-child-ptr-0 + (let ((proc-child-0 (ppointer->process proc-child-ptr-0))) + (set! proc-child-ptr-0 (-> proc-child-ptr-0 0 brother)) + (if (type? proc-child-0 blocking-plane) + (send-event proc-child-0 'on) + ) + ) + ) + ) + (the-as int #f) + ) + ) + ) + ((= evt-type 'off) + (cond + ((nonzero? (-> self root-override)) + (let ((v1-13 (-> self root-override root-prim))) + (set! (-> v1-13 prim-core collide-as) (collide-spec)) + (set! (-> v1-13 prim-core collide-with) (collide-spec)) + ) + 0 + ) + (else + (let ((proc-child-ptr-1 (-> self child))) + (while proc-child-ptr-1 + (let ((proc-child-1 (ppointer->process proc-child-ptr-1))) + (set! proc-child-ptr-1 (-> proc-child-ptr-1 0 brother)) + (if (type? proc-child-1 blocking-plane) + (send-event proc-child-1 'off) + ) + ) + ) + ) + (the-as int #f) + ) + ) + ) + ) + ) + ) + ) + :code (the-as (function none :behavior blocking-plane) sleep-code) + ) + +;; definition for method 21 of type blocking-plane +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs none. +(defmethod init! blocking-plane ((obj blocking-plane) (vec-pair (inline-array vector)) (height float)) + "TODO - but sets up the plane given 2 vectors and a height" + (let ((s3-0 (-> vec-pair 0)) + (s4-0 (-> vec-pair 1)) + ) + 0.0 + (* 0.5 (vector-vector-distance s3-0 s4-0)) + (let ((s2-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) + (let ((v1-3 (new 'process 'collide-shape-prim-mesh s2-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> v1-3 prim-core collide-as) (collide-spec blocking-plane)) + (set! (-> v1-3 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> v1-3 prim-core action) (collide-action solid)) + (set! (-> v1-3 transform-index) 3) + (set! (-> s2-0 total-prims) (the-as uint 1)) + (set! (-> s2-0 root-prim) v1-3) + ) + (set! (-> s2-0 nav-radius) (* 0.75 (-> s2-0 root-prim local-sphere w))) + (let ((v1-6 (-> s2-0 root-prim))) + (set! (-> s2-0 backup-collide-as) (-> v1-6 prim-core collide-as)) + (set! (-> s2-0 backup-collide-with) (-> v1-6 prim-core collide-with)) + ) + (set! (-> obj root-override) s2-0) + ) + (let ((s1-0 (new 'stack-no-clear 'matrix)) + (s2-1 (-> obj root-override)) + ) + (vector+! (-> s2-1 trans) s3-0 s4-0) + (vector-float*! (-> s2-1 trans) (-> s2-1 trans) 0.5) + (+! (-> s2-1 trans y) (* 0.5 height)) + (vector-! (the-as vector (-> s1-0 vector)) s4-0 s3-0) + (let ((f30-1 (vector-normalize-ret-len! (the-as vector (-> s1-0 vector)) 1.0))) + (set! (-> s2-1 scale x) (* 0.00024414062 f30-1)) + (set! (-> s2-1 scale y) (* 0.00024414062 height)) + (set! (-> s2-1 scale z) 0.0) + (set! (-> s1-0 vector 1 quad) (-> (new 'static 'vector :y 1.0 :w 1.0) quad)) + (vector-cross! (-> s1-0 vector 2) (the-as vector (-> s1-0 vector)) (-> s1-0 vector 1)) + (vector-normalize! (-> s1-0 vector 2) 1.0) + (matrix->quaternion (-> s2-1 quat) s1-0) + (let ((v1-20 (-> obj root-override root-prim local-sphere))) + (set! (-> v1-20 x) 0.0) + (set! (-> v1-20 y) (* 0.00024414062 (* 0.5 height))) + (set! (-> v1-20 z) 0.0) + (let ((f0-17 0.5) + (f1-7 (* f30-1 f30-1)) + (f2-2 height) + ) + (set! (-> v1-20 w) (* f0-17 (sqrtf (+ f1-7 (* f2-2 f2-2))))) + ) + ) + ) + ) + ) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-blocking-plane" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (logior! (-> obj draw status) (draw-control-status no-draw-bounds)) + (transform-post) + (none) + ) + +;; definition for function blocking-plane-init-by-other +;; WARN: Return type mismatch object vs none. +(defbehavior blocking-plane-init-by-other blocking-plane ((vec-pair (inline-array vector)) (height float)) + "Calls [[blocking-plane::21]] with the given args" + (if (not vec-pair) + (deactivate self) + ) + (init! self vec-pair height) + (go-virtual idle) + (none) + ) + +;; definition for method 11 of type blocking-plane +;; INFO: Used lq/sq +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! blocking-plane ((obj blocking-plane) (arg0 entity-actor)) + (let ((s5-0 (new 'process 'path-control obj 'path 0.0 (the-as entity #f) #f)) + (f30-0 (res-lump-float (-> obj entity) 'height :default 122880.0)) + ) + (set! (-> obj path) s5-0) + (if (or (not s5-0) (< (-> s5-0 curve num-cverts) 2)) + (go process-drawable-art-error "bad path") + ) + (logior! (-> s5-0 flags) (path-control-flag display draw-line draw-point draw-text)) + (let ((s4-0 (+ (-> s5-0 curve num-cverts) -1)) + (s3-0 (new 'stack-no-clear 'inline-array 'vector 2)) + ) + (dotimes (v1-12 2) + (set! (-> s3-0 v1-12 quad) (the-as uint128 0)) + ) + (dotimes (s2-0 s4-0) + (get-point-in-path! s5-0 (-> s3-0 0) (the float s2-0) 'interp) + (get-point-in-path! s5-0 (-> s3-0 1) (the float (+ s2-0 1)) 'interp) + (process-spawn blocking-plane s3-0 f30-0 :to obj) + ) + ) + ) + (go (method-of-object obj idle)) + (none) + ) + +;; definition for function blocking-plane-spawn +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs none. +(defbehavior blocking-plane-spawn process ((arg0 curve-control) (arg1 (inline-array vector)) (arg2 float)) + (cond + ((and arg1 (or (not arg0) (logtest? (-> arg0 flags) (path-control-flag not-found)))) + (process-spawn blocking-plane arg1 arg2 :to self) + ) + (else + (let ((s4-1 (the int (get-num-segments arg0))) + (s3-0 0) + (s2-0 (new 'stack-no-clear 'inline-array 'vector 2)) + ) + (dotimes (v1-10 2) + (set! (-> s2-0 v1-10 quad) (the-as uint128 0)) + ) + (while (< s3-0 s4-1) + (get-point-in-path! arg0 (-> s2-0 0) (the float s3-0) 'interp) + (get-point-in-path! arg0 (-> s2-0 1) (the float (+ s3-0 1)) 'interp) + (process-spawn blocking-plane s2-0 arg2 :to self) + (+! s3-0 2) + ) + ) + ) + ) + 0 + (none) + ) + +;; definition for function blocking-plane-destroy +;; WARN: Return type mismatch int vs none. +(defbehavior blocking-plane-destroy blocking-plane () + (let ((child-proc-ptr (-> self child))) + (while child-proc-ptr + (let ((child-proc (ppointer->process child-proc-ptr))) + (set! child-proc-ptr (-> child-proc-ptr 0 brother)) + (if (type? child-proc blocking-plane) + (deactivate child-proc) + ) + ) + ) + ) + 0 + (none) + ) diff --git a/test/decompiler/reference/jak2/engine/common_objs/conveyor_REF.gc b/test/decompiler/reference/jak2/engine/common_objs/conveyor_REF.gc new file mode 100644 index 0000000000..4facad4c4f --- /dev/null +++ b/test/decompiler/reference/jak2/engine/common_objs/conveyor_REF.gc @@ -0,0 +1,590 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type conveyor-section +(deftype conveyor-section (structure) + ((start vector :inline :offset-assert 0) + (trailing plane :inline :offset-assert 16) + (pull-dir vector :inline :offset-assert 32) + (radial-dir vector :inline :offset-assert 48) + ) + :method-count-assert 9 + :size-assert #x40 + :flag-assert #x900000040 + ) + +;; definition for method 3 of type conveyor-section +(defmethod inspect conveyor-section ((obj conveyor-section)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj 'conveyor-section) + (format #t "~1Tstart: #~%" (-> obj start)) + (format #t "~1Ttrailing: #~%" (-> obj trailing)) + (format #t "~1Tpull-dir: #~%" (-> obj pull-dir)) + (format #t "~1Tradial-dir: #~%" (-> obj radial-dir)) + (label cfg-4) + obj + ) + +;; definition of type conveyor-section-array +(deftype conveyor-section-array (inline-array-class) + ((data conveyor-section :inline :dynamic :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +;; definition for method 3 of type conveyor-section-array +(defmethod inspect conveyor-section-array ((obj conveyor-section-array)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj (-> obj type)) + (format #t "~1Tlength: ~D~%" (-> obj length)) + (format #t "~1Tallocated-length: ~D~%" (-> obj allocated-length)) + (format #t "~1Tdata[0] @ #x~X~%" (-> obj data)) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(set! (-> conveyor-section-array heap-base) (the-as uint 64)) + +;; definition of type conveyor +(deftype conveyor (process-drawable) + ((speed float :offset-assert 200) + (belt-radius float :offset-assert 204) + (pull-y-threshold float :offset-assert 208) + (speed-mult-array (array float) :offset-assert 212) + (speed-mult-array-len int8 :offset-assert 216) + (sections conveyor-section-array :offset-assert 220) + (leading plane :inline :offset-assert 224) + (collide-bounds sphere :inline :offset-assert 240) + ) + :heap-base #x80 + :method-count-assert 28 + :size-assert #x100 + :flag-assert #x1c00800100 + (:methods + (idle () _type_ :state 20) + (conveyor-method-21 (_type_) float 21) + (get-art-group (_type_) art-group 22) + (reset-root! (_type_) none 23) + (init! (_type_) none 24) + (set-and-get-ambient-sound! (_type_) ambient-sound 25) + (conveyor-method-26 (_type_ process-focusable) symbol :behavior conveyor 26) + (conveyor-method-27 (_type_) symbol 27) + ) + ) + +;; definition for method 3 of type conveyor +(defmethod inspect conveyor ((obj conveyor)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~2Tspeed: ~f~%" (-> obj speed)) + (format #t "~2Tbelt-radius: ~f~%" (-> obj belt-radius)) + (format #t "~2Tpull-y-threshold: ~f~%" (-> obj pull-y-threshold)) + (format #t "~2Tspeed-mult-array: #x~X~%" (-> obj speed-mult-array)) + (format #t "~2Tspeed-mult-array-len: ~D~%" (-> obj speed-mult-array-len)) + (format #t "~2Tsections: ~A~%" (-> obj sections)) + (format #t "~2Tleading: #~%" (-> obj leading)) + (format #t "~2Tcollide-bounds: #~%" (-> obj collide-bounds)) + (label cfg-4) + obj + ) + +;; definition for method 7 of type conveyor +;; WARN: Return type mismatch process-drawable vs conveyor. +(defmethod relocate conveyor ((obj conveyor) (new-addr int)) + (&+! (-> obj sections) new-addr) + (the-as + conveyor + ((the-as (function process-drawable int process-drawable) (find-parent-method conveyor 7)) obj new-addr) + ) + ) + +;; definition for method 22 of type conveyor +;; WARN: Return type mismatch symbol vs art-group. +(defmethod get-art-group conveyor ((obj conveyor)) + "@returns The respective [[art-group]] for the [[conveyor]]" + (go process-drawable-art-error "invalid type") + (the-as art-group #f) + ) + +;; definition for method 23 of type conveyor +;; WARN: Return type mismatch int vs none. +(defmethod reset-root! conveyor ((obj conveyor)) + "Re-initializes the `root` [[trsqv]]" + (set! (-> obj root) (new 'process 'trsqv)) + 0 + (none) + ) + +;; definition for method 24 of type conveyor +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs none. +(defmethod init! conveyor ((obj conveyor)) + "Initializes defaults for things like the `speed` and `belt-radius`" + (local-vars (tag res-tag)) + (set! (-> obj speed) 24576.0) + (set! (-> obj belt-radius) 11878.4) + (set! (-> obj pull-y-threshold) 10240.0) + (set! (-> obj speed-mult-array) #f) + (set! (-> obj speed-mult-array-len) 0) + (let ((entity (-> obj entity))) + (set! tag (new 'static 'res-tag)) + (let ((scale-factor (res-lump-data entity 'scale-factor pointer :tag-ptr (& tag)))) + (when scale-factor + (set! (-> obj speed-mult-array) (the-as (array float) scale-factor)) + (set! (-> obj speed-mult-array-len) (the-as int (-> tag elt-count))) + ) + ) + ) + 0 + (none) + ) + +;; definition for method 25 of type conveyor +;; WARN: Return type mismatch object vs ambient-sound. +(defmethod set-and-get-ambient-sound! conveyor ((obj conveyor)) + "So long as [[actor-option::16]] is not set, fetch the [[ambient-sound]] for the [[conveyor]] + and return it as well. Otherwise, set it to `0`" + (let ((actor-options (res-lump-value (-> obj entity) 'options actor-option :time -1000000000.0))) + (the-as + ambient-sound + (cond + ((not (logtest? (actor-option no-amb-sound) actor-options)) + (let ((sound + (the-as object (new 'process 'ambient-sound (static-sound-spec "conveyor" :fo-max 80) (-> obj root trans))) + ) + ) + (set! (-> obj sound) (the-as ambient-sound sound)) + sound + ) + ) + (else + (set! (-> obj sound) (the-as ambient-sound 0)) + 0 + ) + ) + ) + ) + ) + +;; definition for method 26 of type conveyor +;; INFO: Used lq/sq +(defmethod conveyor-method-26 conveyor ((obj conveyor) (proc-focus process-focusable)) + "TODO - conveyor section related, perhaps related to moving the process along the belt?" + (let ((vec (new 'stack-no-clear 'vector))) + (set! (-> vec quad) (-> (get-trans proc-focus 0) quad)) + (set! (-> vec w) 1.0) + (when (>= (vector4-dot vec (the-as vector (-> obj leading))) 0.0) + (let* ((sections (-> obj sections)) + (section-count (-> sections length)) + ) + (dotimes (section-idx section-count) + (let ((section (-> sections data section-idx))) + (when (< (vector4-dot vec (the-as vector (-> section trailing))) 0.0) + (let ((vec-temp (new 'stack-no-clear 'vector))) + (vector-! vec-temp vec (-> section start)) + (when (>= (-> obj belt-radius) (fabs (vector-dot vec-temp (-> section radial-dir)))) + (let* ((f0-7 (vector-dot vec-temp (-> section pull-dir))) + (f1-6 (- (-> vec-temp y) (* (-> section pull-dir y) f0-7))) + ) + (when (>= (-> obj pull-y-threshold) (fabs f1-6)) + (let ((a2-8 (new 'stack-no-clear 'vector))) + (let ((f0-10 (-> obj speed))) + (if (< section-idx (-> obj speed-mult-array-len)) + (set! f0-10 + (* f0-10 (-> (the-as (pointer float) (+ (the-as uint (-> obj speed-mult-array)) (* section-idx 4))))) + ) + ) + (vector-float*! a2-8 (-> section pull-dir) (* f0-10 (-> self clock seconds-per-frame))) + ) + (send-event proc-focus 'push-trans a2-8 3000) + ) + ) + ) + ) + ) + (return #f) + ) + ) + ) + ) + #f + ) + ) + ) + +;; definition for method 27 of type conveyor +(defmethod conveyor-method-27 conveyor ((obj conveyor)) + "TODO - collision related, has some dead code as well (previous iteration?)" + (local-vars (a0-10 float) (a2-5 float) (a2-12 float)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + ) + (init-vf0-vector) + (set! *actor-list-length* 0) + (if #t + (set! *actor-list-length* (spatial-hash-method-36 *actor-hash* (-> obj collide-bounds) *actor-list* 256)) + ) + (when #t + (let ((a0-2 (-> *collide-player-list* alive-list next0))) + *collide-player-list* + (let ((v1-11 (-> a0-2 next0))) + (while (!= a0-2 (-> *collide-player-list* alive-list-end)) + (let* ((a0-3 (-> (the-as connection a0-2) param1)) + (a1-1 (-> (the-as collide-shape a0-3) root-prim)) + ) + (when (logtest? (-> a1-1 prim-core collide-as) (collide-spec jak bot enemy hit-by-others-list player-list)) + (let ((a1-2 (-> a1-1 prim-core))) + (let ((a2-4 a1-2) + (a3-1 (-> obj collide-bounds)) + ) + (.lvf vf2 (&-> a2-4 world-sphere quad)) + (.lvf vf3 (&-> a3-1 quad)) + ) + (.sub.vf vf1 vf3 vf2) + (.mul.vf vf1 vf1 vf1) + (.add.y.vf vf1 vf1 vf1 :mask #b1) + (.add.z.vf vf1 vf1 vf1 :mask #b1) + (.mov a2-5 vf1) + (let ((f0-0 a2-5) + (f1-1 (+ (-> a1-2 world-sphere w) (-> obj collide-bounds r))) + ) + (b! (>= f0-0 (* f1-1 f1-1)) cfg-8 :delay #f) + ) + ) + (when (< *actor-list-length* 256) + (set! (-> *actor-list* *actor-list-length*) (the-as collide-shape a0-3)) + (set! *actor-list-length* (+ *actor-list-length* 1)) + ) + ) + ) + (label cfg-8) + (set! a0-2 v1-11) + *collide-player-list* + (set! v1-11 (-> v1-11 next0)) + ) + ) + ) + ) + (when #f + (let ((a0-5 (-> *collide-hit-by-player-list* alive-list next0))) + *collide-hit-by-player-list* + (let ((v1-18 (-> a0-5 next0))) + (while (!= a0-5 (-> *collide-hit-by-player-list* alive-list-end)) + (let* ((a0-6 (-> (the-as connection a0-5) param1)) + (a1-13 (-> (the-as collide-shape a0-6) root-prim)) + ) + (when (logtest? (-> a1-13 prim-core collide-as) (collide-spec jak bot enemy hit-by-others-list player-list)) + (let ((a1-14 (-> a1-13 prim-core))) + (let ((a2-11 a1-14) + (a3-2 (-> obj collide-bounds)) + ) + (.lvf vf2 (&-> a2-11 world-sphere quad)) + (.lvf vf3 (&-> a3-2 quad)) + ) + (.sub.vf vf1 vf3 vf2) + (.mul.vf vf1 vf1 vf1) + (.add.y.vf vf1 vf1 vf1 :mask #b1) + (.add.z.vf vf1 vf1 vf1 :mask #b1) + (.mov a2-12 vf1) + (let ((f0-1 a2-12) + (f1-5 (+ (-> a1-14 world-sphere w) (-> obj collide-bounds r))) + ) + (b! (>= f0-1 (* f1-5 f1-5)) cfg-17 :delay #f) + ) + ) + (when (< *actor-list-length* 256) + (set! (-> *actor-list* *actor-list-length*) (the-as collide-shape a0-6)) + (set! *actor-list-length* (+ *actor-list-length* 1)) + ) + ) + ) + (label cfg-17) + (set! a0-5 v1-18) + *collide-hit-by-player-list* + (set! v1-18 (-> v1-18 next0)) + ) + ) + ) + ) + (dotimes (s5-0 *actor-list-length*) + (let* ((v1-23 (-> *actor-list* s5-0)) + (a0-9 (-> v1-23 root-prim)) + ) + (when (logtest? (-> a0-9 prim-core collide-as) (collide-spec jak bot enemy hit-by-others-list player-list)) + (.lvf vf1 (&-> obj collide-bounds quad)) + (.lvf vf2 (&-> a0-9 prim-core world-sphere quad)) + (.sub.vf vf3 vf1 vf2) + (.add.w.vf vf4 vf1 vf2 :mask #b1000) + (.mul.vf vf3 vf3 vf3 :mask #b111) + (.mul.w.vf vf4 vf4 vf4 :mask #b1000) + (.mul.x.vf acc vf0 vf3 :mask #b1000) + (.add.mul.y.vf acc vf0 vf3 acc :mask #b1000) + (.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000) + (.sub.w.vf vf3 vf3 vf4 :mask #b1000) + (let ((f0-2 0.0)) + (.add.w.vf vf3 vf0 vf3 :mask #b1) + (.mov a0-10 vf3) + (let ((s4-0 (-> v1-23 process))) + (b! (< f0-2 a0-10) cfg-27) + (let ((a1-29 (if (type? s4-0 process-focusable) + (the-as process-focusable s4-0) + ) + ) + ) + (if a1-29 + (conveyor-method-26 obj a1-29) + ) + ) + ) + ) + (label cfg-27) + 0 + ) + ) + ) + #f + ) + ) + +;; definition for method 21 of type conveyor +;; INFO: Used lq/sq +(defmethod conveyor-method-21 conveyor ((obj conveyor)) + "TODO - quite dense, has to do with the conveyor sections and the path they are associated with" + (local-vars (sv-32 conveyor-section) (sv-48 conveyor-section)) + (let* ((s5-0 (-> obj path)) + (s4-0 (-> s5-0 curve num-cverts)) + (s3-0 (new 'stack-no-clear 'vector)) + ) + (let ((s2-0 (new 'process 'conveyor-section-array (+ s4-0 -1)))) + (set! (-> obj sections) s2-0) + (set! (-> obj collide-bounds quad) (the-as uint128 0)) + (get-point-in-path! s5-0 s3-0 0.0 'exact) + (vector+! (the-as vector (-> obj collide-bounds)) (the-as vector (-> obj collide-bounds)) s3-0) + (let ((s1-0 (+ s4-0 -1))) + (set! sv-32 (the-as conveyor-section #f)) + (dotimes (s0-0 s1-0) + (set! sv-48 (-> s2-0 data s0-0)) + (set! (-> sv-48 start quad) (-> s3-0 quad)) + (get-point-in-path! s5-0 s3-0 (the float (+ s0-0 1)) 'exact) + (vector+! (the-as vector (-> obj collide-bounds)) (the-as vector (-> obj collide-bounds)) s3-0) + (vector-! (-> sv-48 pull-dir) s3-0 (-> sv-48 start)) + (vector-normalize! (-> sv-48 pull-dir) 1.0) + (set! (-> sv-48 trailing quad) (-> sv-48 pull-dir quad)) + (set! (-> sv-48 trailing y) 0.0) + (vector-normalize! (-> sv-48 trailing) 1.0) + (set-vector! (-> sv-48 radial-dir) (- (-> sv-48 trailing z)) 0.0 (-> sv-48 trailing x) 1.0) + (set! (-> sv-48 trailing w) (- (vector-dot s3-0 (the-as vector (-> sv-48 trailing))))) + (when (the-as vector sv-32) + (vector+! (&+ (the-as vector sv-32) 16) (&+ (the-as vector sv-32) 16) (the-as vector (-> sv-48 trailing))) + (vector-normalize! (&+ (the-as vector sv-32) 16) 1.0) + (set! (-> sv-32 trailing w) (- (vector-dot (-> sv-48 start) (&+ (the-as vector sv-32) 16)))) + ) + (set! sv-32 sv-48) + sv-32 + ) + ) + ) + (let ((s2-1 (-> obj sections data))) + (set! (-> obj leading quad) (-> s2-1 0 pull-dir quad)) + (set! (-> obj leading y) 0.0) + (vector-normalize! (-> obj leading) 1.0) + (set! (-> obj leading w) (- (vector-dot (the-as vector (-> s2-1 0)) (the-as vector (-> obj leading))))) + ) + (let ((f0-19 (/ 1.0 (the float s4-0))) + (f30-0 0.0) + ) + (vector-float*! (the-as vector (-> obj collide-bounds)) (the-as vector (-> obj collide-bounds)) f0-19) + (dotimes (s2-2 s4-0) + (get-point-in-path! s5-0 s3-0 (the float s2-2) 'exact) + (let ((f0-22 (vector-vector-distance-squared s3-0 (-> obj collide-bounds)))) + (if (< f30-0 f0-22) + (set! f30-0 f0-22) + ) + ) + ) + (set! (-> obj collide-bounds r) (+ (sqrtf f30-0) (-> obj belt-radius))) + ) + ) + ) + +;; failed to figure out what this is: +(defstate idle (conveyor) + :virtual #t + :code (the-as (function none :behavior conveyor) sleep-code) + :post (behavior () + (conveyor-method-27 self) + (if (nonzero? (-> self sound)) + (update! (-> self sound)) + ) + (none) + ) + ) + +;; definition for method 11 of type conveyor +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! conveyor ((obj conveyor) (arg0 entity-actor)) + (reset-root! obj) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj (the-as skeleton-group (get-art-group obj)) (the-as pair 0)) + (set! (-> obj path) (new 'process 'path-control obj 'path 0.0 (the-as entity #f) #f)) + (logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text)) + (if (< (-> obj path curve num-cverts) 2) + (go process-drawable-art-error "bad path") + ) + (init! obj) + (set-and-get-ambient-sound! obj) + (conveyor-method-21 obj) + (ja-post) + (go (method-of-object obj idle)) + (none) + ) + +;; definition of type strip-conveyor +(deftype strip-conveyor (conveyor) + () + :heap-base #x80 + :method-count-assert 28 + :size-assert #x100 + :flag-assert #x1c00800100 + ) + +;; definition for method 3 of type strip-conveyor +(defmethod inspect strip-conveyor ((obj strip-conveyor)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type conveyor inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(let ((a0-19 (new 'static 'skeleton-group + :name "skel-strip-conveyor" + :extra #f + :info #f + :art-group-name "strip-conveyor" + :bounds (new 'static 'vector :w 147456.0) + :version #x7 + ) + ) + ) + (set! (-> a0-19 jgeo) 0) + (set! (-> a0-19 janim) 2) + (set! (-> a0-19 mgeo 0) 1) + (set! (-> a0-19 lod-dist 0) 4095996000.0) + (add-to-loading-level a0-19) + ) + +;; definition for method 22 of type strip-conveyor +(defmethod get-art-group strip-conveyor ((obj strip-conveyor)) + "@returns The respective [[art-group]] for the [[conveyor]]" + (art-group-get-by-name *level* "skel-strip-conveyor" (the-as (pointer uint32) #f)) + ) + +;; definition of type lgconveyor +(deftype lgconveyor (conveyor) + () + :heap-base #x80 + :method-count-assert 28 + :size-assert #x100 + :flag-assert #x1c00800100 + ) + +;; definition for method 3 of type lgconveyor +(defmethod inspect lgconveyor ((obj lgconveyor)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type conveyor inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(let ((a0-23 (new 'static 'skeleton-group + :name "skel-lgconveyor" + :extra #f + :info #f + :art-group-name "lgconveyor" + :bounds (new 'static 'vector :y 12288.0 :w 61440.0) + :longest-edge (meters 24.7389) + :version #x7 + :origin-joint-index 3 + ) + ) + ) + (set! (-> a0-23 jgeo) 0) + (set! (-> a0-23 janim) 3) + (set! (-> a0-23 mgeo 0) 1) + (set! (-> a0-23 lod-dist 0) 4095996000.0) + (add-to-loading-level a0-23) + ) + +;; definition for method 22 of type lgconveyor +(defmethod get-art-group lgconveyor ((obj lgconveyor)) + "@returns The respective [[art-group]] for the [[conveyor]]" + (art-group-get-by-name *level* "skel-lgconveyor" (the-as (pointer uint32) #f)) + ) + +;; definition for method 24 of type lgconveyor +;; WARN: Return type mismatch float vs none. +(defmethod init! lgconveyor ((obj lgconveyor)) + "Initializes defaults for things like the `speed` and `belt-radius`" + (set! (-> obj speed) 30720.0) + (set! (-> obj belt-radius) 11878.4) + (set! (-> obj pull-y-threshold) 10240.0) + (none) + ) + +;; failed to figure out what this is: +(defstate idle (lgconveyor) + :virtual #t + :code (behavior () + (until #f + (ja-no-eval :group! (-> self draw art-group data 3) + :num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 3)) frames num-frames) -1))) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + #f + (none) + ) + :post (behavior () + (let ((t9-0 (-> (method-of-type conveyor idle) post))) + (if t9-0 + ((the-as (function none) t9-0)) + ) + ) + (ja-post) + (none) + ) + ) diff --git a/test/decompiler/reference/jak2/engine/common_objs/elevator_REF.gc b/test/decompiler/reference/jak2/engine/common_objs/elevator_REF.gc new file mode 100644 index 0000000000..c7c605c43c --- /dev/null +++ b/test/decompiler/reference/jak2/engine/common_objs/elevator_REF.gc @@ -0,0 +1,953 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type elevator-params +(deftype elevator-params (structure) + ((xz-threshold float :offset-assert 0) + (y-threshold float :offset-assert 4) + (start-pos float :offset-assert 8) + (move-rate float :offset-assert 12) + (flags elevator-flags :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) + +;; definition for method 3 of type elevator-params +(defmethod inspect elevator-params ((obj elevator-params)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj 'elevator-params) + (format #t "~1Txz-threshold: ~f~%" (-> obj xz-threshold)) + (format #t "~1Ty-threshold: ~f~%" (-> obj y-threshold)) + (format #t "~1Tstart-pos: ~f~%" (-> obj start-pos)) + (format #t "~1Tmove-rate: ~f~%" (-> obj move-rate)) + (format #t "~1Tflags: ~D~%" (-> obj flags)) + (label cfg-4) + obj + ) + +;; definition of type path-step +(deftype path-step (structure) + ((next-pos float :offset-assert 0) + (dist float :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +;; definition for method 3 of type path-step +(defmethod inspect path-step ((obj path-step)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj 'path-step) + (format #t "~1Tnext-pos: ~f~%" (-> obj next-pos)) + (format #t "~1Tdist: ~f~%" (-> obj dist)) + (label cfg-4) + obj + ) + +;; definition of type path-step-inline-array +(deftype path-step-inline-array (inline-array-class) + ((data path-step :inline :dynamic :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +;; definition for method 3 of type path-step-inline-array +(defmethod inspect path-step-inline-array ((obj path-step-inline-array)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj (-> obj type)) + (format #t "~1Tlength: ~D~%" (-> obj length)) + (format #t "~1Tallocated-length: ~D~%" (-> obj allocated-length)) + (format #t "~1Tdata[0] @ #x~X~%" (-> obj data)) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(set! (-> path-step-inline-array heap-base) (the-as uint 16)) + +;; definition of type elevator +(deftype elevator (base-plat) + ((params elevator-params :inline :offset-assert 272) + (path-seq path-step-inline-array :offset-assert 296) + (path-dest float :offset-assert 300) + (bottom-top float 2 :offset-assert 304) + (move-pos float 2 :offset-assert 312) + (move-dist float :offset-assert 320) + (path-pos float :offset-assert 324) + (path-eased-pos float :offset-assert 328) + (ride-timer uint64 :offset-assert 336) + (sticky-player-last-ride-time time-frame :offset-assert 344) + (elevator-status elevator-status :offset-assert 352) + (on-activate basic :offset-assert 360) + (on-deactivate basic :offset-assert 364) + ) + :heap-base #xf0 + :method-count-assert 49 + :size-assert #x170 + :flag-assert #x3100f00170 + (:methods + (dormant () _type_ :state 34) + (waiting () _type_ :state 35) + (running () _type_ :state 36) + (arrived () _type_ :state 37) + (elevator-method-38 (_type_) none 38) + (calc-dist-between-points! (_type_ int int) none 39) + (elevator-method-40 (_type_) object 40) + (init-defaults! (_type_) none 41) + (clear-ambient-sound! (_type_) none 42) + (elevator-method-43 (_type_ vector float float) symbol 43) + (elevator-method-44 (_type_) symbol 44) + (elevator-method-45 (_type_) symbol 45) + (move-to-next-point! (_type_) none 46) + (find-closest-point-in-path! (_type_ vector path-step symbol symbol) symbol 47) + (elevator-method-48 (_type_) none 48) + ) + ) + +;; definition for method 3 of type elevator +(defmethod inspect elevator ((obj elevator)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type base-plat inspect))) + (t9-0 obj) + ) + (format #t "~2Tparams: #~%" (-> obj params)) + (format #t "~2Tpath-seq: ~A~%" (-> obj path-seq)) + (format #t "~2Tpath-dest: ~f~%" (-> obj path-dest)) + (format #t "~2Tbottom-top[2] @ #x~X~%" (-> obj bottom-top)) + (format #t "~2Tmove-pos[2] @ #x~X~%" (-> obj move-pos)) + (format #t "~2Tmove-dist: ~f~%" (-> obj move-dist)) + (format #t "~2Tpath-pos: ~f~%" (-> obj path-pos)) + (format #t "~2Tpath-eased-pos: ~f~%" (-> obj path-eased-pos)) + (format #t "~2Tride-timer: ~D~%" (-> obj ride-timer)) + (format #t "~2Tsticky-player-last-ride-time: ~D~%" (-> obj sticky-player-last-ride-time)) + (format #t "~2Televator-status: ~D~%" (-> obj elevator-status)) + (format #t "~2Ton-activate: ~A~%" (-> obj on-activate)) + (format #t "~2Ton-deactivate: ~A~%" (-> obj on-deactivate)) + (label cfg-4) + obj + ) + +;; definition for method 43 of type elevator +(defmethod elevator-method-43 elevator ((obj elevator) (arg0 vector) (arg1 float) (arg2 float)) + #f + ) + +;; definition for method 48 of type elevator +;; INFO: Used lq/sq +(defmethod elevator-method-48 elevator ((obj elevator)) + "TODO - collision related" + (let ((target *target*)) + (when target + (let ((s4-0 (-> target control unknown-sphere-array00 0)) + (s5-0 (new 'stack-no-clear 'collide-query)) + ) + (set! (-> s5-0 start-pos quad) (-> s4-0 prim-core world-sphere quad)) + (set! (-> s5-0 start-pos y) (+ 8192.0 (-> s5-0 start-pos y))) + (set! (-> s5-0 start-pos w) 1.0) + (vector-reset! (-> s5-0 move-dist)) + (set! (-> s5-0 move-dist y) -90112.0) + (let ((collide-query s5-0)) + (set! (-> collide-query radius) (-> s4-0 local-sphere w)) + (set! (-> collide-query collide-with) (collide-spec hit-by-others-list pusher)) + (set! (-> collide-query ignore-process0) target) + (set! (-> collide-query ignore-process1) #f) + (set! (-> collide-query ignore-pat) (-> target control pat-ignore-mask)) + (set! (-> collide-query action-mask) (collide-action solid)) + ) + (let ((f0-5 (fill-and-probe-using-line-sphere *collide-cache* s5-0))) + (when (< 0.0 f0-5) + (vector-float*! (-> s5-0 move-dist) (-> s5-0 move-dist) f0-5) + (vector+! (-> s5-0 move-dist) (-> s5-0 move-dist) (-> s5-0 start-pos)) + (vector-! (-> s5-0 move-dist) (-> s5-0 move-dist) (the-as vector (-> s4-0 prim-core))) + (move-by-vector! (-> target control) (-> s5-0 move-dist)) + ) + ) + ) + ) + ) + (none) + ) + +;; definition for method 41 of type elevator +;; WARN: Return type mismatch int vs none. +(defmethod init-defaults! elevator ((obj elevator)) + "Initializes default settings related to the [[elevator]]: + - `elevator-xz-threshold` + - `elevator-y-threshold` + - `elevator-start-pos` + - `elevator-move-rate` + - `elevator-flags`" + (let ((entity (-> obj entity))) + (set! (-> obj params xz-threshold) ((method-of-object entity get-property-value-float) + entity + 'elevator-xz-threshold + 'interp + -1000000000.0 + 81920.0 + (the-as (pointer res-tag) #f) + *res-static-buf* + ) + ) + (set! entity (-> obj entity)) + (set! (-> obj params y-threshold) ((method-of-object entity get-property-value-float) + entity + 'elevator-y-threshold + 'interp + -1000000000.0 + 20480.0 + (the-as (pointer res-tag) #f) + *res-static-buf* + ) + ) + (set! entity (-> obj entity)) + (set! (-> obj params start-pos) ((method-of-object entity get-property-value-float) + entity + 'elevator-start-pos + 'interp + -1000000000.0 + 0.0 + (the-as (pointer res-tag) #f) + *res-static-buf* + ) + ) + (set! entity (-> obj entity)) + (set! (-> obj params move-rate) ((method-of-object entity get-property-value-float) + entity + 'elevator-move-rate + 'interp + -1000000000.0 + 25600.0 + (the-as (pointer res-tag) #f) + *res-static-buf* + ) + ) + (set! entity (-> obj entity)) + (set! (-> obj params flags) (the-as elevator-flags ((method-of-object entity get-property-value) + entity + 'elevator-flags + 'interp + -1000000000.0 + (the-as uint128 1) + (the-as (pointer res-tag) #f) + *res-static-buf* + ) + ) + ) + ) + 0 + (none) + ) + +;; definition for function ease-value-in-out +(defun ease-value-in-out ((value float) (step-amount float)) + "TODO - the math in this function is full of duplication and isn't totally clear + but if the name is to be believed, it's to slow a values grow at the beginning and end of it's range + which is obviously useful for an elevator." + (let* ((step step-amount) + (f4-0 (- 1.0 step-amount)) + (f3-0 (/ step (- 1.0 f4-0))) + (f2-1 (* step step)) + (f1-6 (+ (* 2.0 step (- f4-0 step)) f2-1)) + (f1-7 (+ (* (- 1.0 f4-0) (- 1.0 f4-0) f3-0) f1-6)) + ) + (/ (cond + ((< value step) + (* value value) + ) + ((< value f4-0) + (+ (* 2.0 step (- value step)) f2-1) + ) + (else + (let ((f0-7 (- 1.0 value))) + (- f1-7 (* f0-7 f0-7 f3-0)) + ) + ) + ) + f1-7 + ) + ) + ) + +;; definition for function elevator-event +;; WARN: Return type mismatch none vs object. +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 18] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 119] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 209] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 222] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 236] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 246] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 257] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 264] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 276] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 301] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 326] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 334] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 337] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 174] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 40] +;; WARN: disable def twice: 11. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. +(defbehavior elevator-event elevator ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((evt-type event-type)) + (the-as + object + (cond + ((= evt-type 'status?) + (and (= (the float (/ (the-as int (-> event param 0)) 8)) (-> self move-pos 0)) + (= (the float (/ (the-as int (-> event param 1)) 8)) (-> self move-pos 1)) + ) + ) + ((= evt-type 'ridden) + (let ((proc-focus (handle->process (-> (the-as focus (-> event param 0)) handle)))) + (if (= (-> proc-focus type) target) + (set! (-> self sticky-player-last-ride-time) (-> self clock frame-counter)) + ) + ) + #t + ) + ((= evt-type 'use-camera) + (if (-> event param 0) + (set-setting! 'entity-name (-> event param 0) 0 0) + (remove-setting! 'entity-name) + ) + ) + ((= evt-type 'move-to) + (when (and (-> self next-state) (let ((next-state-0 (-> self next-state name))) + (or (= next-state-0 'waiting) (= next-state-0 'arrived)) + ) + ) + (set! (-> self move-pos 0) (-> self move-pos 1)) + (cond + ((not (logtest? (-> event param 0) 7)) + (let ((gp-0 (the-as number (-> event param 0)))) + (set! (-> self move-pos 1) (if (type? (the-as uint gp-0) float) + (the-as float gp-0) + ) + ) + ) + ) + (else + (case (-> event param 0) + (('quote 'bottom) + (set! (-> self move-pos 1) (-> self bottom-top 0)) + ) + (('quote 'top) + (set! (-> self move-pos 1) (-> self bottom-top 1)) + ) + ) + ) + ) + (go-virtual running) + ) + ) + ((= evt-type 'jump-to) + (cond + ((not (logtest? (-> event param 0) 7)) + (let ((gp-1 (the-as number (-> event param 0)))) + (set! (-> self move-pos 1) (if (type? (the-as uint gp-1) float) + (the-as float gp-1) + ) + ) + ) + ) + (else + (case (-> event param 0) + (('quote 'bottom) + (set! (-> self move-pos 1) (-> self bottom-top 0)) + ) + (('quote 'top) + (set! (-> self move-pos 1) (-> self bottom-top 1)) + ) + ) + ) + ) + (set! (-> self move-pos 0) (-> self move-pos 1)) + (get-point-in-path! (-> self path) (-> self basetrans) (-> self move-pos 0) 'interp) + (go-virtual waiting) + ) + ((= evt-type 'trigger) + (when (and (-> self next-state) (let ((next-state-1 (-> self next-state name))) + (or (= next-state-1 'waiting) (= next-state-1 'arrived)) + ) + ) + (set! (-> self move-pos 0) (-> self move-pos 1)) + (cond + ((= (-> self move-pos 0) (-> self bottom-top 0)) + (set! (-> self move-pos 1) (-> self bottom-top 1)) + ) + ((= (-> self move-pos 0) (-> self bottom-top 1)) + (set! (-> self move-pos 1) (-> self bottom-top 0)) + ) + ) + (go-virtual running) + ) + ) + ((= evt-type 'query) + (case (-> event param 0) + (('waiting?) + (and (-> self next-state) (= (-> self next-state name) 'waiting)) + ) + (('arrived?) + (and (-> self next-state) (let ((v1-61 (-> self next-state name))) + (or (= v1-61 'arrived) (= v1-61 'waiting)) + ) + ) + ) + (('running?) + (and (-> self next-state) (= (-> self next-state name) 'running)) + ) + (('path-pos?) + (+ (-> self move-pos 0) (* (-> self path-pos) (- (-> self move-pos 1) (-> self move-pos 0)))) + ) + (('player-standing-on?) + (= (-> self sticky-player-last-ride-time) (-> self clock frame-counter)) + ) + (('point-inside-shaft?) + (elevator-method-43 self (the-as vector (-> event param 1)) (-> self bottom-top 1) (-> self bottom-top 0)) + ) + (('going-down?) + (< (-> (get-point-in-path! (-> self path) (new 'stack-no-clear 'vector) (-> self move-pos 1) 'interp) y) + (-> (get-point-in-path! (-> self path) (new 'stack-no-clear 'vector) (-> self move-pos 0) 'interp) y) + ) + ) + (('going-up?) + (< (-> (get-point-in-path! (-> self path) (new 'stack-no-clear 'vector) (-> self move-pos 0) 'interp) y) + (-> (get-point-in-path! (-> self path) (new 'stack-no-clear 'vector) (-> self move-pos 1) 'interp) y) + ) + ) + ) + ) + ((= evt-type 'go-dormant) + (go-virtual dormant) + ) + (else + (plat-event proc arg1 event-type event) + ) + ) + ) + ) + ) + +;; definition for method 47 of type elevator +;; INFO: Used lq/sq +(defmethod find-closest-point-in-path! elevator ((obj elevator) (arg0 vector) (arg1 path-step) (arg2 symbol) (arg3 symbol)) + "Finds and sets the provided [[path-step]]'s `next-pos` field to the vertex index in the path which is closest to + the provided [[vector]] + + @param vec The point at which distance calculations are based off + @param! next-step If a point is found, `next-pos` will be set to the correct point + @param arg2 TODO + @param arg3 TODO + @returns [[#t]] if a point in the path was found" + (local-vars (path-point vector)) + (let ((elev-params (-> obj params)) + (smallest-dist 0.0) + (point-idx-tracker -1.0) + ) + (dotimes (path-vertex-idx (-> obj path curve num-cverts)) + (set! path-point + (get-point-in-path! (-> obj path) (new 'stack-no-clear 'vector) (the float path-vertex-idx) 'interp) + ) + (when (and (or (not arg2) (< (vector-vector-xz-distance path-point arg0) (-> elev-params xz-threshold))) + (or (not arg3) + (< (fabs (- (-> path-point y) (-> arg0 y))) (-> elev-params y-threshold)) + (and (= path-vertex-idx (the int (-> obj bottom-top 0))) (< (-> arg0 y) (-> path-point y))) + (and (= path-vertex-idx (the int (-> obj bottom-top 1))) (< (-> path-point y) (-> arg0 y))) + ) + ) + (let* ((t9-2 vector-vector-distance) + (a1-3 arg0) + (dist (t9-2 path-point a1-3)) + ) + (when (or (= point-idx-tracker -1.0) (< dist smallest-dist)) + (set! smallest-dist dist) + (set! point-idx-tracker (the float path-vertex-idx)) + ) + ) + ) + ) + (when (!= point-idx-tracker -1.0) + (set! (-> arg1 next-pos) point-idx-tracker) + #t + ) + ) + ) + +;; definition for method 44 of type elevator +;; WARN: Return type mismatch object vs symbol. +(defmethod elevator-method-44 elevator ((obj elevator)) + (let* ((target-temp *target*) + (target (if (type? target-temp process-focusable) + target-temp + ) + ) + ) + (the-as + symbol + (and target (elevator-method-43 obj (get-trans target 0) (-> obj move-pos 0) (-> obj move-pos 1))) + ) + ) + ) + +;; definition for method 45 of type elevator +(defmethod elevator-method-45 elevator ((obj elevator)) + "@returns Stub, or always returns [[#t]]" + #t + ) + +;; definition for method 46 of type elevator +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Return type mismatch int vs none. +(defmethod move-to-next-point! elevator ((obj elevator)) + "If the [[*target*]] is in a valid state and there is a point to transition to in the elevator's path + do so. + @see [[elevator::47]]" + (local-vars (zero float)) + (let ((target *target*)) + (when (and target + (zero? (logand (focus-status dead inactive in-air grabbed edge-grab pole pilot-riding pilot teleporting) + (-> target focus-status) + ) + ) + ) + (set! zero (the-as float 0.0)) + (when (and (find-closest-point-in-path! obj (get-trans target 0) (new 'stack-no-clear 'path-step) #t #t) + (!= (-> obj move-pos 1) zero) + ) + (set! (-> obj move-pos 0) (-> obj move-pos 1)) + (set! (-> obj move-pos 1) zero) + (logior! (-> obj elevator-status) (elevator-status moving)) + (go (method-of-object obj running)) + ) + ) + ) + 0 + (none) + ) + +;; definition for function move-post +(defbehavior move-post elevator () + (when (nonzero? (-> self sound)) + (let ((f0-3 (sqrtf (sin-rad (* 3.1415925 (-> self path-pos)))))) + (update-vol! (-> self sound) f0-3) + ) + (update-trans! (-> self sound) (-> self root-override trans)) + (update! (-> self sound)) + ) + (plat-post) + (none) + ) + +;; failed to figure out what this is: +(defstate dormant (elevator) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('trigger) + (go-virtual waiting) + ) + (('bonk) + #f + ) + (else + (plat-event proc arg1 event-type event) + ) + ) + ) + :trans (the-as (function none :behavior elevator) plat-trans) + :code (the-as (function none :behavior elevator) sleep-code) + :post (the-as (function none :behavior elevator) plat-post) + ) + +;; failed to figure out what this is: +(defstate waiting (elevator) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('ridden) + (if (elevator-method-45 self) + (logior! (-> self elevator-status) (elevator-status elevator-status-0)) + ) + (elevator-event proc arg1 event-type event) + ) + (else + (elevator-event proc arg1 event-type event) + ) + ) + ) + :enter (behavior () + (set! (-> self ride-timer) (the-as uint (-> self clock frame-counter))) + (logclear! (-> self elevator-status) (elevator-status elevator-status-0 moving)) + (logior! (-> self mask) (process-mask actor-pause)) + (if (nonzero? (-> self sound)) + (update-vol! (-> self sound) 0.0) + ) + (none) + ) + :trans (behavior () + (plat-trans) + (when (not (logtest? (-> self elevator-status) (elevator-status elevator-status-0))) + (set! (-> self ride-timer) (the-as uint (-> self clock frame-counter))) + (-> self params) + (if (and (logtest? (-> self params flags) (elevator-flags elevator-flags-0)) + (zero? (logand (-> self params flags) (elevator-flags elevator-flags-3))) + ) + (move-to-next-point! self) + ) + ) + (when (and (not (logtest? (-> self params flags) (elevator-flags elevator-flags-3))) + (>= (- (-> self clock frame-counter) (the-as int (-> self ride-timer))) (seconds 1)) + ) + (set! (-> self move-pos 0) (-> self move-pos 1)) + (set! (-> self move-pos 1) (-> self path-seq data (the int (-> self move-pos 1)) next-pos)) + (go-virtual running) + ) + (none) + ) + :code (the-as (function none :behavior elevator) sleep-code) + :post (behavior () + (logclear! (-> self elevator-status) (elevator-status elevator-status-0)) + (debug-draw (-> self path)) + (plat-post) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate running (elevator) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('running?) + #t + ) + (('player-ridden?) + (logtest? (-> self elevator-status) (elevator-status elevator-status-0)) + ) + (else + (elevator-event proc arg1 event-type event) + ) + ) + ) + :enter (behavior () + (if (not (logtest? (-> self params flags) (elevator-flags elevator-flags-7))) + (process-entity-status! self (entity-perm-status no-kill) #t) + ) + (logclear! (-> self elevator-status) (elevator-status elevator-status-1)) + (when (logtest? (-> self params flags) (elevator-flags elevator-flags-2)) + (logclear! (-> self params flags) (elevator-flags elevator-flags-2)) + (logior! (-> self params flags) (elevator-flags elevator-flags-0)) + ) + (set! (-> self move-dist) 0.0) + (let ((v1-13 (the int (-> self move-pos 0))) + (a0-3 (the int (-> self move-pos 1))) + (a1-1 0) + ) + (while (let ((a2-3 (abs (- a0-3 v1-13)))) + (< a1-1 a2-3) + ) + (+! (-> self move-dist) (-> self path-seq data (+ (min v1-13 a0-3) a1-1) dist)) + (+! a1-1 1) + ) + ) + (logclear! (-> self mask) (process-mask actor-pause)) + (set-setting! 'board #f 0 0) + (let ((gp-0 (-> self on-activate))) + (if gp-0 + (eval! + (new + 'stack + 'script-context + (the-as basic (* (the int (-> self move-pos 0)) 8)) + self + (-> self root-override trans) + ) + (the-as pair gp-0) + ) + ) + ) + (set! (-> self path-pos) 0.0) + (if (nonzero? (-> self sound)) + (update-vol! (-> self sound) 0.0) + ) + (when (logtest? (-> self params flags) (elevator-flags prevent-jump)) + (set-setting! 'jump #f 0 0) + (apply-settings *setting-control*) + ) + (none) + ) + :exit (behavior () + (if (not (logtest? (-> self params flags) (elevator-flags elevator-flags-7))) + (process-entity-status! self (entity-perm-status no-kill) #f) + ) + (remove-setting! 'board) + (if (logtest? (-> self params flags) (elevator-flags prevent-jump)) + (remove-setting! 'jump) + ) + (none) + ) + :trans (behavior () + (if (and (not (logtest? (-> self elevator-status) (elevator-status elevator-status-1))) + (= (-> self path-pos) 1.0) + ) + (go-virtual arrived) + ) + (if (elevator-method-44 self) + (set! (-> self path-dest) 0.0) + (set! (-> self path-dest) 1.0) + ) + (if (logtest? (-> self params flags) (elevator-flags prevent-jump)) + (elevator-method-48 self) + ) + (plat-trans) + (none) + ) + :code (behavior () + (logior! (-> self elevator-status) (elevator-status elevator-status-1)) + (until #f + (suspend) + (if (= (-> self path-pos) 1.0) + (logclear! (-> self elevator-status) (elevator-status elevator-status-1)) + ) + ) + #f + (none) + ) + :post (behavior () + (when (logtest? (-> self elevator-status) (elevator-status elevator-status-1)) + (seek! + (-> self path-pos) + (-> self path-dest) + (* (/ (-> self params move-rate) (-> self move-dist)) (-> self clock seconds-per-frame)) + ) + (let* ((f30-0 (-> self move-pos 0)) + (f28-0 (-> self move-pos 1)) + (f0-9 (+ f30-0 (* (ease-value-in-out (-> self path-pos) 0.08) (- f28-0 f30-0)))) + ) + (get-point-in-path! (-> self path) (-> self basetrans) f0-9 'interp) + ) + ) + (move-post) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate arrived (elevator) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('ridden) + (set! (-> self ride-timer) (the-as uint (-> self clock frame-counter))) + (elevator-event proc arg1 event-type event) + ) + (else + (elevator-event proc arg1 event-type event) + ) + ) + ) + :enter (behavior () + (set! (-> self ride-timer) (the-as uint (-> self clock frame-counter))) + (if (not (-> *setting-control* user-current jump)) + (remove-setting! 'jump) + ) + (let ((gp-0 (-> self on-deactivate))) + (if gp-0 + (eval! + (new + 'stack + 'script-context + (the-as basic (* (the int (-> self move-pos 1)) 8)) + self + (-> self root-override trans) + ) + (the-as pair gp-0) + ) + ) + ) + (none) + ) + :trans (behavior () + (if (and (< (the-as int (- (-> self ride-timer) (the-as uint (-> self sticky-player-last-ride-time)))) 600) + (begin *target* *target*) + (logtest? (-> *target* focus-status) (focus-status in-air)) + ) + (set! (-> self ride-timer) (the-as uint (-> self clock frame-counter))) + ) + (when (or (logtest? (-> self elevator-status) (elevator-status moving)) + (>= (- (-> self clock frame-counter) (the-as int (-> self ride-timer))) (seconds 0.5)) + ) + (cond + ((and (logtest? (-> self params flags) (elevator-flags elevator-flags-1)) + (!= (-> self move-pos 1) (-> self params start-pos)) + ) + (set! (-> self move-pos 0) (-> self move-pos 1)) + (set! (-> self move-pos 1) (-> self params start-pos)) + (go-virtual running) + ) + (else + (go-virtual waiting) + ) + ) + ) + (plat-trans) + (none) + ) + :code (the-as (function none :behavior elevator) sleep-code) + :post (the-as (function none :behavior elevator) plat-post) + ) + +;; definition for method 39 of type elevator +;; WARN: Return type mismatch int vs none. +(defmethod calc-dist-between-points! elevator ((obj elevator) (path-point-x int) (path-point-y int)) + "Calculates the distance between two points in the elevator's path. + + @param path-point-x The index of the first point in the distance calculation, and where `next-pos` and `dist` are stored in the `path-seq` array + @param path-point-y The second point in the distance calculation" + (set! (-> obj path-seq data path-point-x next-pos) (the float path-point-y)) + (let ((point-x (get-point-in-path! (-> obj path) (new 'stack-no-clear 'vector) (the float path-point-x) 'interp)) + (point-y (get-point-in-path! (-> obj path) (new 'stack-no-clear 'vector) (the float path-point-y) 'interp)) + ) + (set! (-> obj path-seq data path-point-x dist) (vector-vector-distance point-x point-y)) + ) + 0 + (none) + ) + +;; definition for method 42 of type elevator +;; WARN: Return type mismatch int vs none. +(defmethod clear-ambient-sound! elevator ((obj elevator)) + "Might be a virtual function, but clears the object's [[ambient-sound]]" + (set! (-> obj sound) (the-as ambient-sound 0)) + 0 + (none) + ) + +;; definition for method 33 of type elevator +;; WARN: Return type mismatch int vs none. +(defmethod base-plat-method-33 elevator ((obj elevator)) + 0 + (none) + ) + +;; definition for method 7 of type elevator +;; WARN: Return type mismatch base-plat vs elevator. +(defmethod relocate elevator ((obj elevator) (arg0 int)) + (if (nonzero? (-> obj path-seq)) + (&+! (-> obj path-seq) arg0) + ) + (the-as elevator ((the-as (function base-plat int base-plat) (find-parent-method elevator 7)) obj arg0)) + ) + +;; definition for method 40 of type elevator +(defmethod elevator-method-40 elevator ((obj elevator)) + "TODO - need to figure out some flags to be confident about this" + (if (logtest? (-> obj params flags) (elevator-flags elevator-flags-6)) + (go (method-of-object obj arrived)) + (go (method-of-object obj waiting)) + ) + ) + +;; definition for method 11 of type elevator +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Stack slot offset 32 signed mismatch +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! elevator ((obj elevator) (entity entity-actor)) + (local-vars (sv-32 float) (sv-36 path-control) (sv-40 target)) + (base-plat-method-31 obj) + (process-drawable-from-entity! obj entity) + (initialize-skeleton obj (the-as skeleton-group (get-art-group obj)) (the-as pair 0)) + (stop-bouncing! obj) + (set! (-> obj elevator-status) (elevator-status)) + (collide-shape-method-46 (-> obj root-override)) + (base-plat-method-32 obj) + (init-defaults! obj) + (set! (-> obj on-activate) (res-lump-struct (-> obj entity) 'on-activate basic)) + (set! (-> obj on-deactivate) (res-lump-struct (-> obj entity) 'on-deactivate basic)) + (set! (-> obj path) (new 'process 'path-control obj 'path 0.0 entity #f)) + (if (logtest? (-> obj path flags) (path-control-flag not-found)) + (go process-drawable-art-error "error in path") + ) + (logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text)) + (let ((num-path-points (-> obj path curve num-cverts)) + (s4-1 0) + (f30-0 0.0) + (f28-0 0.0) + ) + (set! (-> obj path-seq) (new 'process 'path-step-inline-array num-path-points)) + (dotimes (path-point-idx num-path-points) + (calc-dist-between-points! obj path-point-idx (mod (+ path-point-idx 1) num-path-points)) + (let ((v1-31 (get-point-in-path! (-> obj path) (new 'stack-no-clear 'vector) (the float path-point-idx) 'interp))) + (when (or (not (logtest? s4-1 1)) (< (-> v1-31 y) f28-0)) + (set! (-> obj bottom-top 0) (the float path-point-idx)) + (set! f28-0 (-> v1-31 y)) + (set! s4-1 (logior s4-1 1)) + ) + (when (or (not (logtest? s4-1 2)) (< f30-0 (-> v1-31 y))) + (set! (-> obj bottom-top 1) (the float path-point-idx)) + (set! f30-0 (-> v1-31 y)) + (set! s4-1 (logior s4-1 2)) + ) + ) + ) + ) + (set! sv-32 (the-as float 0.0)) + (set! sv-36 (-> obj path)) + (let ((s5-2 *target*)) + (set! sv-40 (if (type? s5-2 process-focusable) + s5-2 + ) + ) + ) + (if (not (and sv-40 + (logtest? (-> obj params flags) (elevator-flags elevator-flags-4)) + (find-closest-point-in-path! obj (get-trans sv-40 0) (the-as path-step (& sv-32)) #f #t) + ) + ) + (set! sv-32 (-> obj params start-pos)) + ) + (set! (-> obj move-pos 0) sv-32) + (set! (-> obj move-pos 1) sv-32) + (get-point-in-path! sv-36 (-> obj basetrans) sv-32 'interp) + (set! (-> obj root-override pause-adjust-distance) + (+ 122880.0 (-> obj params xz-threshold) (total-distance (-> obj path))) + ) + (clear-ambient-sound! obj) + (base-plat-method-33 obj) + (elevator-method-40 obj) + (none) + ) diff --git a/test/decompiler/reference/jak2/engine/common_objs/plat_REF.gc b/test/decompiler/reference/jak2/engine/common_objs/plat_REF.gc new file mode 100644 index 0000000000..7d8584cfd4 --- /dev/null +++ b/test/decompiler/reference/jak2/engine/common_objs/plat_REF.gc @@ -0,0 +1,407 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type plat +(deftype plat (base-plat) + ((path-pos float :offset-assert 272) + (sound-id sound-id :offset-assert 276) + (sync sync-eased :inline :offset-assert 280) + ) + :heap-base #xd0 + :method-count-assert 37 + :size-assert #x144 + :flag-assert #x2500d00144 + (:methods + (plat-idle () _type_ :state 34) + (plat-path-active () _type_ :state 35) + (plat-path-sync (_type_) object 36) + ) + ) + +;; definition for method 3 of type plat +(defmethod inspect plat ((obj plat)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type base-plat inspect))) + (t9-0 obj) + ) + (format #t "~2Tpath-pos: ~f~%" (-> obj path-pos)) + (format #t "~2Tsound-id: ~D~%" (-> obj sound-id)) + (format #t "~2Tsync: #~%" (-> obj sync)) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(let ((a0-2 (new 'static 'skeleton-group + :name "skel-plat" + :extra #f + :info #f + :art-group-name "plat" + :bounds (new 'static 'vector :y -2048.0 :w 12288.0) + :max-lod 2 + :version #x7 + ) + ) + ) + (set! (-> a0-2 jgeo) 0) + (set! (-> a0-2 janim) 4) + (set! (-> a0-2 mgeo 0) 1) + (set! (-> a0-2 lod-dist 0) 81920.0) + (set! (-> a0-2 mgeo 1) 2) + (set! (-> a0-2 lod-dist 1) 163840.0) + (set! (-> a0-2 mgeo 2) 3) + (set! (-> a0-2 lod-dist 2) 4095996000.0) + (add-to-loading-level a0-2) + ) + +;; definition for method 30 of type plat +(defmethod get-art-group plat ((obj plat)) + "@returns The associated [[art-group]]" + (art-group-get-by-name *level* "skel-plat" (the-as (pointer uint32) #f)) + ) + +;; definition for method 31 of type plat +;; WARN: Return type mismatch int vs none. +(defmethod base-plat-method-31 plat ((obj plat)) + "TODO - collision stuff" + (let ((collision-shape (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((collision-mesh (new 'process 'collide-shape-prim-mesh collision-shape (the-as uint 0) (the-as uint 0)))) + (set! (-> collision-mesh prim-core collide-as) (collide-spec pusher)) + (set! (-> collision-mesh prim-core collide-with) (collide-spec jak player-list)) + (set! (-> collision-mesh prim-core action) (collide-action solid rideable)) + (set! (-> collision-mesh transform-index) 0) + (set-vector! (-> collision-mesh local-sphere) 0.0 0.0 0.0 13107.2) + (set! (-> collision-shape total-prims) (the-as uint 1)) + (set! (-> collision-shape root-prim) collision-mesh) + ) + ((method-of-object collision-shape collide-shape-method-54)) + (set! (-> collision-shape nav-radius) (* 0.75 (-> collision-shape root-prim local-sphere w))) + (let ((prim (-> collision-shape root-prim))) + (set! (-> collision-shape backup-collide-as) (-> prim prim-core collide-as)) + (set! (-> collision-shape backup-collide-with) (-> prim prim-core collide-with)) + ) + (set! (-> obj root-override) (the-as collide-shape-moving collision-shape)) + ) + 0 + (none) + ) + +;; definition for method 33 of type plat +;; WARN: Return type mismatch int vs none. +(defmethod base-plat-method-33 plat ((obj plat)) + 0 + (none) + ) + +;; definition for method 32 of type plat +;; WARN: Return type mismatch int vs none. +(defmethod base-plat-method-32 plat ((obj plat)) + 0 + (none) + ) + +;; definition for method 36 of type plat +(defmethod plat-path-sync plat ((obj plat)) + "If the `sync` period is greater than `0` then transition the state to [[plat::35]] + otherwise, [[plat::34]] + + @see [[sync-eased]]" + (cond + ((logtest? (-> obj path flags) (path-control-flag not-found)) + (go (method-of-object obj plat-idle)) + ) + ((> (-> obj sync period) 0) + (go (method-of-object obj plat-path-active)) + ) + (else + (go (method-of-object obj plat-idle)) + ) + ) + ) + +;; failed to figure out what this is: +(defstate plat-idle (plat) + :virtual #t + :event (the-as (function process int symbol event-message-block object :behavior plat) plat-event) + :trans (behavior () + (execute-effects self) + (none) + ) + :code (behavior () + (plat-trans) + (rider-post) + (suspend) + (until #f + (when (not (-> self bouncing)) + (plat-trans) + (rider-post) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + ) + (while (-> self bouncing) + (plat-trans) + (rider-post) + (suspend) + ) + ) + #f + (none) + ) + ) + +;; failed to figure out what this is: +(defstate plat-path-active (plat) + :virtual #t + :event (the-as (function process int symbol event-message-block object :behavior plat) plat-event) + :exit (behavior () + (sound-stop (-> self sound-id)) + (none) + ) + :trans (behavior () + (set! (-> self path-pos) (get-norm! (-> self sync) 0)) + (get-point-at-percent-along-path! (-> self path) (-> self basetrans) (-> self path-pos) 'interp) + (if (< (vector-vector-distance (-> self root-override trans) (ear-trans 0)) 81920.0) + (sound-play "eco-plat-hover" :id (-> self sound-id) :position (-> self root-override trans)) + ) + (plat-trans) + (none) + ) + :code (behavior () + (until #f + (ja-no-eval :group! (ja-group) + :num! (seek! (the float (+ (-> (ja-group) frames num-frames) -1))) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + #f + (none) + ) + :post (the-as (function none :behavior plat) plat-post) + ) + +;; definition for method 11 of type plat +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! plat ((obj plat) (entity entity-actor)) + (set! (-> obj mask) (logior (process-mask platform) (-> obj mask))) + (base-plat-method-31 obj) + (process-drawable-from-entity! obj entity) + (initialize-skeleton obj (the-as skeleton-group (get-art-group obj)) (the-as pair 0)) + (collide-shape-method-46 (-> obj root-override)) + (stop-bouncing! obj) + (base-plat-method-32 obj) + (set! (-> obj fact) + (new 'process 'fact-info obj (pickup-type eco-pill-random) (-> *FACT-bank* default-eco-pill-green-inc)) + ) + (let ((params (new 'stack-no-clear 'sync-info-params))) + (let ((v1-15 0)) + (if (not (logtest? (-> obj fact options) (actor-option loop))) + (set! v1-15 (logior v1-15 1)) + ) + (set! (-> params sync-type) (the-as basic 'sync-eased)) + (set! (-> params sync-flags) (the-as sync-flags v1-15)) + ) + (set! (-> params period) (the-as uint 1200)) + (set! (-> params entity) entity) + (set! (-> params percent) 0.0) + (set! (-> params ease-in) 0.15) + (set! (-> params ease-out) 0.15) + (set! (-> params pause-in) 0.0) + (set! (-> params pause-out) 0.0) + (initialize! (-> obj sync) params) + ) + (set! (-> obj path) (new 'process 'curve-control obj 'path -1000000000.0)) + (logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text)) + (set! (-> obj sound-id) (new-sound-id)) + (cond + ((logtest? (-> obj path flags) (path-control-flag not-found)) + (set! (-> obj path-pos) 0.0) + (base-plat-method-33 obj) + (plat-path-sync obj) + ) + ((> (-> obj sync period) 0) + (set! (-> obj path-pos) (get-norm! (-> obj sync) 0)) + (get-point-at-percent-along-path! (-> obj path) (-> obj root-override trans) (-> obj path-pos) 'interp) + (base-plat-method-33 obj) + (plat-path-sync obj) + ) + (else + (set! (-> obj path-pos) 0.0) + (get-point-at-percent-along-path! (-> obj path) (-> obj root-override trans) (-> obj path-pos) 'interp) + (base-plat-method-33 obj) + (plat-path-sync obj) + ) + ) + (none) + ) + +;; definition of type drop-plat +(deftype drop-plat (base-plat) + ((art-name string :offset-assert 272) + (anim spool-anim :offset-assert 276) + (break-anim-name string :offset-assert 280) + (safe-time time-frame :offset-assert 288) + (hit-point vector :inline :offset-assert 304) + ) + :heap-base #xc0 + :method-count-assert 36 + :size-assert #x140 + :flag-assert #x2400c00140 + (:methods + (idle () _type_ :state 34) + (fall (symbol) _type_ :state 35) + ) + ) + +;; definition for method 3 of type drop-plat +(defmethod inspect drop-plat ((obj drop-plat)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type base-plat inspect))) + (t9-0 obj) + ) + (format #t "~2Tart-name: ~A~%" (-> obj art-name)) + (format #t "~2Tanim: ~A~%" (-> obj anim)) + (format #t "~2Tbreak-anim-name: ~A~%" (-> obj break-anim-name)) + (format #t "~2Tsafe-time: ~D~%" (-> obj safe-time)) + (format #t "~2Thit-point: ~`vector`P~%" (-> obj hit-point)) + (label cfg-4) + obj + ) + +;; definition for method 7 of type drop-plat +;; WARN: Return type mismatch base-plat vs drop-plat. +(defmethod relocate drop-plat ((obj drop-plat) (arg0 int)) + (if (nonzero? (-> obj break-anim-name)) + (&+! (-> obj break-anim-name) arg0) + ) + (let ((v1-5 (-> obj anim buffer))) + (if (and (>= (the-as int v1-5) (-> *kernel-context* relocating-min)) + (< (the-as int v1-5) (-> *kernel-context* relocating-max)) + ) + (&+! (-> obj anim buffer) arg0) + ) + ) + (the-as drop-plat ((method-of-type base-plat relocate) obj arg0)) + ) + +;; failed to figure out what this is: +(defstate idle (drop-plat) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('touch 'attack 'bonk) + (let* ((proc-temp proc) + (proc-focus (if (type? proc-temp process-focusable) + (the-as process-focusable proc-temp) + ) + ) + ) + (cond + ((and proc-focus (logtest? (-> proc-focus focus-status) (focus-status edge-grab))) + (set! (-> self safe-time) (+ (-> self clock frame-counter) (seconds 0.2))) + (return (the-as object #f)) + ) + ((< (- (-> self clock frame-counter) (-> self safe-time)) (seconds 0.05)) + (return (the-as object #f)) + ) + ) + (set! (-> self hit-point quad) (-> self root-override trans quad)) + (set! proc-focus (if (type? proc process-focusable) + (the-as process-focusable proc) + ) + ) + (set! (-> self hit-point quad) (-> (get-trans proc-focus 0) quad)) + ) + (if (zero? (-> self bounce-time)) + (start-bouncing! self) + ) + #f + ) + ) + ) + :trans (the-as (function none :behavior drop-plat) plat-trans) + :code (behavior () + (gui-control-method-9 + *gui-control* + self + (gui-channel art-load) + (gui-action queue) + (-> self anim name) + -99.0 + 0 + ) + (until #f + (when (not (-> self bouncing)) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + ) + (while (-> self bouncing) + (suspend) + ) + (go-virtual fall #f) + ) + #f + (none) + ) + :post (the-as (function none :behavior drop-plat) plat-post) + ) + +;; failed to figure out what this is: +(defstate fall (drop-plat) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('edge-grabbed) + (if (>= (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.5)) + (send-event proc 'end-mode) + ) + ) + (('die) + (go-virtual fall #t) + ) + ) + ) + :enter (behavior ((arg0 symbol)) + (set! (-> self state-time) (-> self clock frame-counter)) + (none) + ) + :exit (behavior () + (ja-abort-spooled-anim (-> self anim) (the-as art-joint-anim #f) -1) + (none) + ) + :trans (the-as (function none :behavior drop-plat) rider-trans) + :code (behavior ((arg0 symbol)) + (process-entity-status! self (entity-perm-status subtask-complete) #t) + (let ((v1-1 (-> self root-override root-prim))) + (set! (-> v1-1 prim-core collide-as) (collide-spec)) + (set! (-> v1-1 prim-core collide-with) (collide-spec)) + ) + 0 + (if (not arg0) + (ja-play-spooled-anim + (-> self anim) + (ja-group) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func) + ) + ) + (ja-channel-set! 0) + (suspend) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0 + (none) + ) + :post (the-as (function none :behavior drop-plat) rider-post) + ) diff --git a/test/decompiler/reference/jak2/engine/debug/editable-player_REF.gc b/test/decompiler/reference/jak2/engine/debug/editable-player_REF.gc index 9c22228633..795b00eb5a 100644 --- a/test/decompiler/reference/jak2/engine/debug/editable-player_REF.gc +++ b/test/decompiler/reference/jak2/engine/debug/editable-player_REF.gc @@ -1634,14 +1634,14 @@ ;; failed to figure out what this is: (defstate idle (editable-player) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v0-0 none)) - (let ((v1-0 arg2)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'execute) - (let ((a2-1 (-> arg3 param 0))) + (let ((a2-1 (-> event param 0))) (case a2-1 ((28 27 35 29 31 32) (editable-array-method-13 @@ -1677,26 +1677,26 @@ (deactivate self) ) ((= v1-0 'menu) - (set! v0-0 (the-as none (+ (-> self clock frame-counter) (the-as time-frame (-> arg3 param 0))))) + (set! v0-0 (the-as none (+ (-> self clock frame-counter) (the-as time-frame (-> event param 0))))) (set! (-> self close-menu-time) (the-as time-frame v0-0)) v0-0 ) ((or (= v1-0 'on-enter) (= v1-0 'on-exit) (= v1-0 'on-inside)) (let ((s4-0 (-> self current region))) (when s4-0 - (let ((gp-1 (-> arg3 param 0))) + (let ((gp-1 (-> event param 0))) (set! (-> *syntax-context* got-error?) #f) (eval! *syntax-context* (the-as pair gp-1)) (when (not (-> *syntax-context* got-error?)) (set! (-> s4-0 changed) #t) (cond - ((= arg2 'on-enter) + ((= event-type 'on-enter) (set! (-> s4-0 on-enter) (the-as string gp-1)) ) - ((= arg2 'on-inside) + ((= event-type 'on-inside) (set! (-> s4-0 on-inside) (the-as string gp-1)) ) - ((= arg2 'on-exit) + ((= event-type 'on-exit) (set! (-> s4-0 on-exit) (the-as string gp-1)) ) ) @@ -1709,7 +1709,7 @@ ) ) ((= v1-0 'select) - (let ((gp-2 (-> arg3 param 0))) + (let ((gp-2 (-> event param 0))) (editable-array-method-9 (-> self current) (editable-command select-none) (the-as editable-array #f)) (let* ((s5-1 (-> self current length)) (s4-1 0) @@ -1747,7 +1747,7 @@ ) ) (when v1-60 - (set! (-> v1-60 name) (the-as string (-> arg3 param 0))) + (set! (-> v1-60 name) (the-as string (-> event param 0))) (logior! (-> v1-60 flags) (editable-flag changed)) (let ((v1-61 (-> v1-60 region))) (if v1-61 @@ -1764,7 +1764,7 @@ #f ) ((= v1-0 'level) - (let ((gp-3 (lookup-level-info (the-as symbol (-> arg3 param 0))))) + (let ((gp-3 (lookup-level-info (the-as symbol (-> event param 0))))) (when (-> gp-3 dbname) (let* ((s5-3 (-> self current length)) (s4-3 0) @@ -1795,10 +1795,10 @@ (-> self current level) ) ((= v1-0 'direction) - (let* ((f30-0 (the-as float (-> arg3 param 0))) - (f28-0 (the-as float (-> arg3 param 1))) - (f26-0 (the-as float (-> arg3 param 2))) - (f24-0 (if (and (zero? (-> arg3 param 0)) (zero? (-> arg3 param 1)) (zero? (-> arg3 param 2))) + (let* ((f30-0 (the-as float (-> event param 0))) + (f28-0 (the-as float (-> event param 1))) + (f26-0 (the-as float (-> event param 2))) + (f24-0 (if (and (zero? (-> event param 0)) (zero? (-> event param 1)) (zero? (-> event param 2))) 0.0 1.0 ) @@ -1833,10 +1833,10 @@ #f ) ((= v1-0 'color) - (let* ((f30-1 (the-as float (-> arg3 param 0))) - (f28-1 (the-as float (-> arg3 param 1))) - (f26-1 (the-as float (-> arg3 param 2))) - (f24-1 (the-as float (-> arg3 param 3))) + (let* ((f30-1 (the-as float (-> event param 0))) + (f28-1 (the-as float (-> event param 1))) + (f26-1 (the-as float (-> event param 2))) + (f24-1 (the-as float (-> event param 3))) (gp-5 (-> self current length)) (s5-5 0) (s4-5 (-> self current data s5-5)) @@ -1866,8 +1866,8 @@ #f ) ((= v1-0 'param) - (let ((s5-6 (-> arg3 param 0)) - (f30-2 (the-as float (-> arg3 param 1))) + (let ((s5-6 (-> event param 0)) + (f30-2 (the-as float (-> event param 1))) ) (when (and (>= (the-as int s5-6) 0) (>= 2 (the-as int s5-6))) (let* ((gp-6 (-> self current length)) diff --git a/test/decompiler/reference/jak2/engine/debug/sampler_REF.gc b/test/decompiler/reference/jak2/engine/debug/sampler_REF.gc new file mode 100644 index 0000000000..ad5fa79290 --- /dev/null +++ b/test/decompiler/reference/jak2/engine/debug/sampler_REF.gc @@ -0,0 +1,61 @@ +;;-*-Lisp-*- +(in-package goal) + +;; this file is debug only +(declare-file (debug)) +(when *debug-segment* +;; definition for symbol *sampler-mem*, type pointer +(define *sampler-mem* "A pointer to where the sampled data should be stored" (the-as pointer #f)) + +;; definition for symbol *sampler-compare*, type uint +(define *sampler-compare* + "The value used to set the EE register's `Timer 0 Compare Value`. Always `1`" + (the-as uint 1) + ) + +;; definition for symbol *sampler-count*, type int +(define *sampler-count* "Incremented everytime a metric is sampled + @see [[timer0-handler]]" 0) + +;; definition (debug) for function timer0-handler +;; ERROR: function was not converted to expressions. Cannot decompile. + +;; failed to figure out what this is: +(set! (-> (the-as timer-bank #x10000000) mode) (new 'static 'timer-mode)) + +;; failed to figure out what this is: +(install-handler 9 timer0-handler) + +;; definition (debug) for function sampler-start +;; WARN: Return type mismatch int vs none. +(defun-debug sampler-start () + "Reset the [[timer-bank]] EE registers. + - If [[*sampler-mem*]] is undefined, allocate 16.7MB in the debug segment + - and when [[*sampler-mem*]] is defined, initialize the [[timer-bank]] fully. Reset [[*sampler-count*]] to 0 as well" + (set! (-> (the-as timer-bank #x10000000) mode) (new 'static 'timer-mode)) + (set! (-> (the-as timer-bank #x10000000) count) (the-as uint 0)) + (set! (-> (the-as timer-bank #x10000000) comp) *sampler-compare*) + (if (not *sampler-mem*) + (set! *sampler-mem* (malloc 'debug #x1000000)) + ) + (when (nonzero? *sampler-mem*) + (mem-set32! *sampler-mem* #x400000 0) + (set! (-> (the-as timer-bank #x10000000) mode) + (new 'static 'timer-mode :clks (timer-clock-selection busclk/256) :zret #x1 :cue #x1 :cmpe #x1 :equf #x1) + ) + (set! *sampler-count* 0) + 0 + ) + (none) + ) + +;; definition (debug) for function sampler-stop +;; WARN: Return type mismatch int vs none. +(defun-debug sampler-stop () + "Sets the [[timer-bank]] mode EE register to 0" + (set! (-> (the-as timer-bank #x10000000) mode) (new 'static 'timer-mode)) + 0 + (none) + ) + +) diff --git a/test/decompiler/reference/jak2/engine/entity/entity_REF.gc b/test/decompiler/reference/jak2/engine/entity/entity_REF.gc index 6e7eaf5b8d..3fbac882c0 100644 --- a/test/decompiler/reference/jak2/engine/entity/entity_REF.gc +++ b/test/decompiler/reference/jak2/engine/entity/entity_REF.gc @@ -2566,21 +2566,23 @@ ) ;; definition for function process-entity-status! +;; WARN: Return type mismatch int vs entity-perm-status. (defun process-entity-status! ((arg0 process) (arg1 entity-perm-status) (arg2 symbol)) - (cond - ((and (-> arg0 entity) arg0 (= arg0 (-> arg0 entity extra process))) - (let ((v1-6 (-> arg0 entity extra))) - (if arg2 - (logior! (-> v1-6 perm status) arg1) - (logclear! (-> v1-6 perm status) arg1) - ) - (the-as int (-> v1-6 perm status)) - ) - ) - (else - 0 - ) - ) + (the-as entity-perm-status (cond + ((and (-> arg0 entity) arg0 (= arg0 (-> arg0 entity extra process))) + (let ((v1-6 (-> arg0 entity extra))) + (if arg2 + (logior! (-> v1-6 perm status) arg1) + (logclear! (-> v1-6 perm status) arg1) + ) + (the-as int (-> v1-6 perm status)) + ) + ) + (else + 0 + ) + ) + ) ) ;; definition for function find-nearest-entity diff --git a/test/decompiler/reference/jak2/engine/entity/relocate_REF.gc b/test/decompiler/reference/jak2/engine/entity/relocate_REF.gc index 4bfd5f3d6d..8397133d40 100644 --- a/test/decompiler/reference/jak2/engine/entity/relocate_REF.gc +++ b/test/decompiler/reference/jak2/engine/entity/relocate_REF.gc @@ -27,8 +27,10 @@ ) ) (let ((a0-19 (-> (the-as connection v1-7) param1))) - (if (and (>= a0-19 (-> *kernel-context* relocating-min)) (< a0-19 (-> *kernel-context* relocating-max))) - (+! (-> (the-as connection v1-7) param1) arg0) + (if (and (>= (the-as int a0-19) (-> *kernel-context* relocating-min)) + (< (the-as int a0-19) (-> *kernel-context* relocating-max)) + ) + (&+! (-> (the-as connection v1-7) param1) arg0) ) ) (let ((a0-24 (-> (the-as connection v1-7) param2))) diff --git a/test/decompiler/reference/jak2/engine/game/task/task-control_REF.gc b/test/decompiler/reference/jak2/engine/game/task/task-control_REF.gc index b61e6b4f10..96f94f9877 100644 --- a/test/decompiler/reference/jak2/engine/game/task/task-control_REF.gc +++ b/test/decompiler/reference/jak2/engine/game/task/task-control_REF.gc @@ -1529,8 +1529,8 @@ ;; failed to figure out what this is: (defstate idle (fail-mission) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('reset) (cond ((logtest? (-> self flags) (fail-mission-flags famflags-1)) @@ -1545,7 +1545,7 @@ ) ) (('query) - (case (-> arg3 param 0) + (case (-> event param 0) (('reset) (logtest? (-> self flags) (fail-mission-flags famflags-1)) ) @@ -1705,14 +1705,14 @@ ;; failed to figure out what this is: (defstate resetting (fail-mission) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'reset) #t ) ((= v1-0 'query) - (case (-> arg3 param 0) + (case (-> event param 0) (('reset) #t ) diff --git a/test/decompiler/reference/jak2/engine/gfx/lightning-h_REF.gc b/test/decompiler/reference/jak2/engine/gfx/lightning-h_REF.gc index 52d44f00d5..4fa37dc63b 100644 --- a/test/decompiler/reference/jak2/engine/gfx/lightning-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/lightning-h_REF.gc @@ -130,7 +130,7 @@ (new (symbol type lightning-spec process float) _type_ 0) (change-mode (_type_ lightning-mode) lightning-mode 9) (get-mode (_type_) lightning-mode 10) - (set-point (_type_ int vector) none 11) + (set-point! (_type_ int vector) none 11) (set-first-meet-point (_type_ vector) none 12) (set-last-meet-point (_type_ vector) none 13) ) @@ -177,7 +177,7 @@ ;; definition for method 11 of type lightning-control ;; INFO: Used lq/sq ;; WARN: Return type mismatch int vs none. -(defmethod set-point lightning-control ((obj lightning-control) (arg0 int) (arg1 vector)) +(defmethod set-point! lightning-control ((obj lightning-control) (arg0 int) (arg1 vector)) (let ((v1-0 (-> obj state))) (when (and (-> v1-0 path) (>= arg0 0) (< arg0 (-> v1-0 path length))) (set! (-> v1-0 path data arg0 quad) (-> arg1 quad)) diff --git a/test/decompiler/reference/jak2/engine/gfx/sprite/particles/sparticle-launcher_REF.gc b/test/decompiler/reference/jak2/engine/gfx/sprite/particles/sparticle-launcher_REF.gc index d905c4d299..31b1463ed6 100644 --- a/test/decompiler/reference/jak2/engine/gfx/sprite/particles/sparticle-launcher_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/sprite/particles/sparticle-launcher_REF.gc @@ -1426,7 +1426,7 @@ (v1-28 level-group) (v1-29 int) (a0-1 connectable) - (a0-2 int) + (a0-2 basic) (a0-3 none) (a0-4 none) (a0-5 none) diff --git a/test/decompiler/reference/jak2/engine/physics/trajectory_REF.gc b/test/decompiler/reference/jak2/engine/physics/trajectory_REF.gc index ba0a6fab8c..46b8cc90df 100644 --- a/test/decompiler/reference/jak2/engine/physics/trajectory_REF.gc +++ b/test/decompiler/reference/jak2/engine/physics/trajectory_REF.gc @@ -280,11 +280,13 @@ ) ) (sphere<-vector+r! s1-0 arg1 arg2) - (let ((t9-4 (method-of-object *actor-hash* spatial-hash-method-36))) - (-> s2-1 data) - (-> s2-1 allocated-length) - (set! (-> s2-1 length) (the-as int (t9-4))) - ) + (set! (-> s2-1 length) (spatial-hash-method-36 + *actor-hash* + s1-0 + (the-as (pointer collide-shape) (-> s2-1 data)) + (-> s2-1 allocated-length) + ) + ) (let ((gp-2 (find-nearest-focusable (the-as (array collide-shape) s2-1) arg1 diff --git a/test/decompiler/reference/jak2/engine/process-drawable/process-focusable_REF.gc b/test/decompiler/reference/jak2/engine/process-drawable/process-focusable_REF.gc index ee7316bbb8..aeb074c328 100644 --- a/test/decompiler/reference/jak2/engine/process-drawable/process-focusable_REF.gc +++ b/test/decompiler/reference/jak2/engine/process-drawable/process-focusable_REF.gc @@ -37,6 +37,7 @@ ;; definition for method 20 of type process-focusable ;; WARN: Return type mismatch structure vs vector. (defmethod get-trans process-focusable ((obj process-focusable) (arg0 int)) + "@returns the `trans` [[vector]] from the process's `root` (typically either a [[trsqv]] or a [[collide-shape]]" (let ((gp-0 (-> obj root))) (the-as vector (cond ((zero? arg0) diff --git a/test/decompiler/reference/jak2/engine/process-drawable/simple-focus_REF.gc b/test/decompiler/reference/jak2/engine/process-drawable/simple-focus_REF.gc new file mode 100644 index 0000000000..b3e6491a87 --- /dev/null +++ b/test/decompiler/reference/jak2/engine/process-drawable/simple-focus_REF.gc @@ -0,0 +1,76 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type simple-focus +(deftype simple-focus (process-focusable) + ((first-time? symbol :offset-assert 204) + ) + :heap-base #x50 + :method-count-assert 28 + :size-assert #xd0 + :flag-assert #x1c005000d0 + (:methods + (idle () _type_ :state 27) + ) + ) + +;; definition for method 3 of type simple-focus +(defmethod inspect simple-focus ((obj simple-focus)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-focusable inspect))) + (t9-0 obj) + ) + (format #t "~2Tfirst-time?: ~A~%" (-> obj first-time?)) + (label cfg-4) + obj + ) + +;; definition for method 20 of type simple-focus +(defmethod get-trans simple-focus ((obj simple-focus) (arg0 int)) + "@returns the `trans` [[vector]] from the process's `root` (typically either a [[trsqv]] or a [[collide-shape]]" + (-> obj root trans) + ) + +;; definition for method 12 of type simple-focus +(defmethod run-logic? simple-focus ((obj simple-focus)) + (when (-> obj first-time?) + (set! (-> obj first-time?) #f) + #t + ) + ) + +;; failed to figure out what this is: +(defstate idle (simple-focus) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) + (the-as object (when (= v1-0 'move-trans) + (let ((v0-0 (-> self root trans))) + (set! (-> v0-0 quad) (-> (the-as vector (-> event param 0)) quad)) + v0-0 + ) + ) + ) + ) + ) + :code (the-as (function none :behavior simple-focus) sleep-code) + ) + +;; definition for function simple-focus-init-by-other +;; WARN: Return type mismatch object vs none. +(defbehavior simple-focus-init-by-other simple-focus () + "Initializes the new [[simple-focus]]. `first-time?` will be set to [[#t]]" + (let ((root (new 'process 'trsqv))) + (set! (-> self root) root) + (vector-identity! (-> root scale)) + (quaternion-identity! (-> root quat)) + ) + (logclear! (-> self mask) (process-mask enemy)) + (set! (-> self first-time?) #t) + (set! (-> self event-hook) (-> (method-of-object self idle) event)) + (go-virtual idle) + (none) + ) diff --git a/test/decompiler/reference/jak2/engine/process-drawable/simple-nav-sphere_REF.gc b/test/decompiler/reference/jak2/engine/process-drawable/simple-nav-sphere_REF.gc new file mode 100644 index 0000000000..c2f184bd95 --- /dev/null +++ b/test/decompiler/reference/jak2/engine/process-drawable/simple-nav-sphere_REF.gc @@ -0,0 +1,163 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type simple-nav-sphere +(deftype simple-nav-sphere (process-drawable) + ((root-override collide-shape :offset 128) + (first-time? symbol :offset-assert 200) + (track-joint int32 :offset-assert 204) + ) + :heap-base #x50 + :method-count-assert 22 + :size-assert #xd0 + :flag-assert #x16005000d0 + (:methods + (idle () _type_ :state 20) + (active () _type_ :state 21) + ) + ) + +;; definition for method 3 of type simple-nav-sphere +(defmethod inspect simple-nav-sphere ((obj simple-nav-sphere)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~2Tfirst-time?: ~A~%" (-> obj first-time?)) + (format #t "~2Ttrack-joint: ~D~%" (-> obj track-joint)) + (label cfg-4) + obj + ) + +;; definition for function simple-nav-sphere-event-handler +;; WARN: Return type mismatch object vs none. +(defbehavior simple-nav-sphere-event-handler simple-nav-sphere ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('die-fast) + (go empty-state) + ) + (('move-trans) + (collide-shape-method-29 (-> self root-override) (the-as vector (-> event param 0))) + #t + ) + (('set-radius) + (let ((radius (the-as float (-> event param 0))) + (collide-shape (-> self root-override)) + ) + (set! (-> collide-shape nav-radius) radius) + (set! (-> collide-shape root-prim local-sphere w) radius) + (collide-shape-method-46 collide-shape) + ) + #t + ) + ) + (none) + ) + +;; definition for method 12 of type simple-nav-sphere +(defmethod run-logic? simple-nav-sphere ((obj simple-nav-sphere)) + (cond + (*display-nav-marks* + #t + ) + ((>= (-> obj track-joint) 0) + #t + ) + ((-> obj first-time?) + (set! (-> obj first-time?) #f) + #t + ) + ) + ) + +;; failed to figure out what this is: +(defstate idle (simple-nav-sphere) + :virtual #t + :event (the-as + (function process int symbol event-message-block object :behavior simple-nav-sphere) + simple-nav-sphere-event-handler + ) + :trans (behavior () + (if *display-nav-marks* + (add-debug-sphere + #t + (bucket-id debug2) + (-> self root-override trans) + (-> self root-override nav-radius) + (new 'static 'rgba :r #x80 :g #x40 :a #x80) + ) + ) + (none) + ) + :code (the-as (function none :behavior simple-nav-sphere) sleep-code) + ) + +;; failed to figure out what this is: +(defstate active (simple-nav-sphere) + :virtual #t + :event (the-as + (function process int symbol event-message-block object :behavior simple-nav-sphere) + simple-nav-sphere-event-handler + ) + :trans (behavior () + (let ((v1-0 (ppointer->process (-> self parent))) + (gp-0 (new 'stack-no-clear 'vector)) + ) + (vector<-cspace! gp-0 (-> (the-as process-drawable v1-0) node-list data (-> self track-joint))) + (collide-shape-method-29 (-> self root-override) gp-0) + ) + (none) + ) + :code (the-as (function none :behavior simple-nav-sphere) sleep-code) + ) + +;; definition for function simple-nav-sphere-init-by-other +;; INFO: Used lq/sq +;; WARN: Return type mismatch object vs none. +(defbehavior simple-nav-sphere-init-by-other simple-nav-sphere ((arg0 float) (arg1 vector) (arg2 nav-mesh) (arg3 int)) + (set! (-> self track-joint) arg3) + (set! (-> self first-time?) #t) + (let ((s5-0 (new 'process 'collide-shape self (collide-list-enum usually-hit-by-player)))) + (let ((v1-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> v1-3 prim-core collide-as) (collide-spec obstacle)) + (set-vector! (-> v1-3 local-sphere) 0.0 0.0 0.0 4096.0) + (set! (-> s5-0 total-prims) (the-as uint 1)) + (set! (-> s5-0 root-prim) v1-3) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (let ((v1-6 (-> s5-0 root-prim))) + (set! (-> s5-0 backup-collide-as) (-> v1-6 prim-core collide-as)) + (set! (-> s5-0 backup-collide-with) (-> v1-6 prim-core collide-with)) + ) + (set! (-> s5-0 nav-radius) arg0) + (set! (-> s5-0 root-prim local-sphere w) arg0) + (if arg1 + (set! (-> s5-0 trans quad) (-> arg1 quad)) + ) + (vector-identity! (-> s5-0 scale)) + (quaternion-identity! (-> s5-0 quat)) + (let ((v1-11 (-> s5-0 root-prim))) + (set! (-> v1-11 prim-core collide-as) (collide-spec)) + (set! (-> v1-11 prim-core collide-with) (collide-spec)) + ) + 0 + (collide-shape-method-46 s5-0) + (set! (-> self root-override) s5-0) + ) + (logclear! (-> self mask) (process-mask actor-pause enemy)) + (set! (-> self event-hook) + (the-as (function process int symbol event-message-block object) simple-nav-sphere-event-handler) + ) + (if arg2 + (nav-mesh-method-29 arg2 self #f) + (nav-mesh-connect-from-ent (the-as entity-nav-mesh self)) + ) + (if (>= (-> self track-joint) 0) + (go-virtual active) + (go-virtual idle) + ) + (none) + ) diff --git a/test/decompiler/reference/jak2/engine/spatial_hash/actor-hash-h_REF.gc b/test/decompiler/reference/jak2/engine/spatial-hash/actor-hash-h_REF.gc similarity index 52% rename from test/decompiler/reference/jak2/engine/spatial_hash/actor-hash-h_REF.gc rename to test/decompiler/reference/jak2/engine/spatial-hash/actor-hash-h_REF.gc index aa4fb59d6b..5fbd2d4d50 100644 --- a/test/decompiler/reference/jak2/engine/spatial_hash/actor-hash-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/spatial-hash/actor-hash-h_REF.gc @@ -1,15 +1,11 @@ ;;-*-Lisp-*- (in-package goal) -;; definition for symbol *actor-list*, type pointer -(define *actor-list* (malloc 'global 1024)) +;; definition for symbol *actor-list*, type (pointer collide-shape) +(define *actor-list* (the-as (pointer collide-shape) (malloc 'global 1024))) ;; definition for symbol *actor-list-length*, type int (define *actor-list-length* 0) ;; failed to figure out what this is: 0 - - - - diff --git a/test/decompiler/reference/jak2/engine/spatial_hash/collide-hash-h_REF.gc b/test/decompiler/reference/jak2/engine/spatial-hash/collide-hash-h_REF.gc similarity index 100% rename from test/decompiler/reference/jak2/engine/spatial_hash/collide-hash-h_REF.gc rename to test/decompiler/reference/jak2/engine/spatial-hash/collide-hash-h_REF.gc diff --git a/test/decompiler/reference/jak2/engine/spatial_hash/spatial-hash-h_REF.gc b/test/decompiler/reference/jak2/engine/spatial-hash/spatial-hash-h_REF.gc similarity index 99% rename from test/decompiler/reference/jak2/engine/spatial_hash/spatial-hash-h_REF.gc rename to test/decompiler/reference/jak2/engine/spatial-hash/spatial-hash-h_REF.gc index 3bdae68477..6ad801527b 100644 --- a/test/decompiler/reference/jak2/engine/spatial_hash/spatial-hash-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/spatial-hash/spatial-hash-h_REF.gc @@ -225,7 +225,7 @@ (:methods (spatial-hash-method-34 () none 34) (spatial-hash-method-35 () none 35) - (spatial-hash-method-36 () none 36) + (spatial-hash-method-36 (_type_ sphere (pointer collide-shape) int) int 36) (spatial-hash-method-37 () none 37) (spatial-hash-method-38 () none 38) (spatial-hash-method-39 () none 39) diff --git a/test/decompiler/reference/jak2/engine/target/board/board-states_REF.gc b/test/decompiler/reference/jak2/engine/target/board/board-states_REF.gc index 78b4ee44b3..b2651ede1a 100644 --- a/test/decompiler/reference/jak2/engine/target/board/board-states_REF.gc +++ b/test/decompiler/reference/jak2/engine/target/board/board-states_REF.gc @@ -547,8 +547,8 @@ ;; failed to figure out what this is: (defstate target-board-stance (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('lip) (when (and (= (-> self control ground-pat mode) (pat-mode halfpipe)) (< (-> self control poly-angle) 0.5) @@ -565,7 +565,7 @@ ) (set! (-> self board halfpipe-lip-time) (-> self clock frame-counter)) (set! (-> self board halfpipe-side-time) (-> self clock frame-counter)) - (set! (-> self board halfpipe-lip-event) (the-as symbol (-> arg3 param 0))) + (set! (-> self board halfpipe-lip-event) (the-as symbol (-> event param 0))) (let ((v0-2 (the-as object (logior (-> self control root-prim prim-core action) (collide-action no-normal-reset)))) ) (set! (-> self control root-prim prim-core action) (the-as collide-action v0-2)) @@ -576,13 +576,13 @@ (('jump) (go target-board-jump - (the-as meters (-> arg3 param 0)) - (the-as meters (-> arg3 param 1)) - (the-as symbol (-> arg3 param 2)) + (the-as meters (-> event param 0)) + (the-as meters (-> event param 1)) + (the-as symbol (-> event param 2)) ) ) (else - (target-board-handler arg0 arg1 arg2 arg3) + (target-board-handler proc arg1 event-type event) ) ) ) @@ -914,11 +914,11 @@ ;; failed to figure out what this is: (defstate target-board-jump (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (if (and (= arg2 'edge-grab) (< (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.1))) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (if (and (= event-type 'edge-grab) (< (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.1))) (return #f) ) - (target-board-handler arg0 arg1 arg2 arg3) + (target-board-handler proc arg1 event-type event) ) :enter (behavior ((arg0 meters) (arg1 meters) (arg2 symbol)) (local-vars @@ -1132,8 +1132,8 @@ ;; failed to figure out what this is: (defstate target-board-halfpipe (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('edge-grab) (format #t @@ -1178,14 +1178,14 @@ ) ) (('grenade) - (if (< (the-as float (-> arg3 param 0)) + (if (< (the-as float (-> event param 0)) (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) ) - (go target-board-grenade (process->handle arg0)) + (go target-board-grenade (process->handle proc)) ) ) (else - (target-board-handler arg0 arg1 arg2 arg3) + (target-board-handler proc arg1 event-type event) ) ) ) @@ -2232,13 +2232,13 @@ ;; failed to figure out what this is: (defstate target-board-ride-edge (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('edge-grab 'push-transv 'push-trans) #f ) (('end-mode) - (when (-> arg3 param 0) + (when (-> event param 0) (let ((v1-6 (/ (- (-> self clock frame-counter) (-> self board ride-start-time)) 300))) (if (> v1-6 0) (add-to-trick-list (-> self board) (board-tricks board-rail) (* 100.0 (the float v1-6))) @@ -2248,7 +2248,7 @@ (go target-board-turn-to (-> self control transv) (seconds 0.2)) ) (else - (target-board-handler arg0 arg1 arg2 arg3) + (target-board-handler proc arg1 event-type event) ) ) ) @@ -2506,13 +2506,13 @@ ;; failed to figure out what this is: (defstate target-board-grenade (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('target) (handle->process (-> self control unknown-handle02)) ) (else - (target-board-handler arg0 arg1 arg2 arg3) + (target-board-handler proc arg1 event-type event) ) ) ) @@ -2617,19 +2617,19 @@ ;; failed to figure out what this is: (defstate target-board-get-on (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('attack 'attack-or-shove 'attack-invinc) (target-attacked - arg2 - (the-as attack-info (-> arg3 param 1)) - arg0 - (the-as process (-> arg3 param 0)) + event-type + (the-as attack-info (-> event param 1)) + proc + (the-as process (-> event param 0)) target-hit ) ) (else - (target-generic-event-handler arg0 arg1 arg2 arg3) + (target-generic-event-handler proc arg1 event-type event) ) ) ) @@ -2775,13 +2775,13 @@ ;; failed to figure out what this is: (defstate target-board-pegasus (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('end-mode) (go target-jump 16384.0 16384.0 (the-as surface #f)) ) (else - (target-generic-event-handler arg0 arg1 arg2 arg3) + (target-generic-event-handler proc arg1 event-type event) ) ) ) @@ -3078,21 +3078,21 @@ ;; failed to figure out what this is: (defstate target-board-grab (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (cond - ((and (= arg2 'query) (= (-> arg3 param 0) 'mode)) + ((and (= event-type 'query) (= (-> event param 0) 'mode)) (-> self state name) ) (else - (case arg2 + (case event-type (('end-mode) (go target-board-stance) ) (('clone-anim) - (go target-board-clone-anim (process->handle (the-as process (-> arg3 param 0)))) + (go target-board-clone-anim (process->handle (the-as process (-> event param 0)))) ) (('change-mode) - (case (-> arg3 param 0) + (case (-> event param 0) (('normal) enter-state 'stance @@ -3101,7 +3101,7 @@ ) ) (else - (target-generic-event-handler arg0 arg1 arg2 arg3) + (target-generic-event-handler proc arg1 event-type event) ) ) ) @@ -3143,11 +3143,11 @@ ;; failed to figure out what this is: (defstate target-board-clone-anim (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (if (and (= arg2 'trans) (= (-> arg3 param 0) 'restore)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (if (and (= event-type 'trans) (= (-> event param 0) 'restore)) (set! (-> self control unknown-word04) (the-as uint #f)) ) - ((-> target-board-grab event) arg0 arg1 arg2 arg3) + ((-> target-board-grab event) proc arg1 event-type event) ) :enter (-> target-clone-anim enter) :exit (behavior () diff --git a/test/decompiler/reference/jak2/engine/target/board/board-util_REF.gc b/test/decompiler/reference/jak2/engine/target/board/board-util_REF.gc index 8b1b026f32..b04b08001a 100644 --- a/test/decompiler/reference/jak2/engine/target/board/board-util_REF.gc +++ b/test/decompiler/reference/jak2/engine/target/board/board-util_REF.gc @@ -89,8 +89,8 @@ ;; failed to figure out what this is: (defstate idle (board) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('open) (go-virtual use) ) @@ -140,8 +140,8 @@ ;; failed to figure out what this is: (defstate use (board) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('close) (go-virtual idle #f) ) diff --git a/test/decompiler/reference/jak2/engine/target/board/target-board_REF.gc b/test/decompiler/reference/jak2/engine/target/board/target-board_REF.gc index e010d318d5..53aeca4cc3 100644 --- a/test/decompiler/reference/jak2/engine/target/board/target-board_REF.gc +++ b/test/decompiler/reference/jak2/engine/target/board/target-board_REF.gc @@ -2058,7 +2058,7 @@ ) (if (probe-test (-> self control) s3-5 (new 'static 'pat-surface :noentity #x1 :noboard #x1 :probe #x1)) (set! (-> self control status) (logior (cshape-moving-flags csmf16) (-> self control status))) - ((method-of-object (-> self control) collide-shape-method-28)) + (move-by-vector! (-> self control) s3-5) ) ) ) @@ -2266,8 +2266,9 @@ ) ) (when (not (logtest? s4-3 64)) - (vector-float*! (new 'stack-no-clear 'vector) (-> self control dynam gravity-normal) 819.2) - ((method-of-object (-> self control) collide-shape-method-28)) + (let ((a1-83 (vector-float*! (new 'stack-no-clear 'vector) (-> self control dynam gravity-normal) 819.2))) + (move-by-vector! (-> self control) a1-83) + ) ) (send-event self 'end-mode (zero? (logand s4-3 75))) ) diff --git a/test/decompiler/reference/jak2/engine/target/logic-target_REF.gc b/test/decompiler/reference/jak2/engine/target/logic-target_REF.gc index 86b690c49c..a78d14c9bb 100644 --- a/test/decompiler/reference/jak2/engine/target/logic-target_REF.gc +++ b/test/decompiler/reference/jak2/engine/target/logic-target_REF.gc @@ -2192,8 +2192,9 @@ ) (else (vector-normalize! s4-1 1228.8) - (vector+! (new 'stack-no-clear 'vector) s4-1 (-> self control unknown-vector05)) - ((method-of-object (-> self control) collide-shape-method-28)) + (let ((a1-20 (vector+! (new 'stack-no-clear 'vector) s4-1 (-> self control unknown-vector05)))) + (move-by-vector! (-> self control) a1-20) + ) (vector-float*! (-> self control rider-last-move) s4-1 (-> self clock frames-per-second)) (set! (-> self control rider-time) (-> self clock frame-counter)) (if (and (>= (- (-> self clock frame-counter) (-> self control unknown-time-frame16)) (seconds 0.5)) @@ -2283,10 +2284,10 @@ ) (let ((a1-15 (vector-! (new-stack-vector0) (-> gp-0 center-hold) (-> gp-0 center-hold-old)))) (vector-float*! (-> self control rider-last-move) a1-15 (-> self clock frames-per-second)) + (set! (-> self control rider-time) (-> self clock frame-counter)) + (move-by-vector! (-> self control) a1-15) ) ) - (set! (-> self control rider-time) (-> self clock frame-counter)) - ((method-of-object (-> self control) collide-shape-method-28)) (set! (-> self control unknown-float33) 0.0) (joint-control-method-10 (-> self skel)) (draw-control-method-14 (-> self draw) (-> self node-list) (-> self skel)) @@ -2365,10 +2366,7 @@ (let ((a0-26 (vector-! (new-stack-vector0) s5-0 (-> self control unknown-vector30)))) (cond ((and (< 2457.6 (vector-length a0-26)) (not (-> self control unknown-symbol02))) - (let ((s4-2 (method-of-object (-> self control) collide-shape-method-28))) - (vector-normalize! a0-26 2457.6) - (s4-2) - ) + (move-by-vector! (-> self control) (vector-normalize! a0-26 2457.6)) ) (else (set! (-> self control unknown-symbol02) (the-as float #t)) @@ -3308,7 +3306,7 @@ (set! (-> s0-0 nav-radius) (* 0.75 (-> s0-0 root-prim local-sphere w))) (let ((v1-66 (-> s0-0 root-prim))) (set! (-> s0-0 backup-collide-as) (-> v1-66 prim-core collide-as)) - (set! (-> s0-0 backup-collde-with) (-> v1-66 prim-core collide-with)) + (set! (-> s0-0 backup-collide-with) (-> v1-66 prim-core collide-with)) ) (set! (-> s0-0 event-priority) (the-as uint 9)) (set! (-> obj control) s0-0) @@ -3409,7 +3407,7 @@ (target-collide-set! 'normal 0.0) (let ((v1-163 (-> obj control root-prim))) (set! (-> obj control backup-collide-as) (-> v1-163 prim-core collide-as)) - (set! (-> obj control backup-collde-with) (-> v1-163 prim-core collide-with)) + (set! (-> obj control backup-collide-with) (-> v1-163 prim-core collide-with)) ) (set! (-> obj sound) (new 'process 'ambient-sound "none" (-> obj control trans))) (set! (-> obj control unknown-sound-id04) (new-sound-id)) diff --git a/test/decompiler/reference/jak2/engine/target/target_REF.gc b/test/decompiler/reference/jak2/engine/target/target_REF.gc index 7dc08720e7..187578556d 100644 --- a/test/decompiler/reference/jak2/engine/target/target_REF.gc +++ b/test/decompiler/reference/jak2/engine/target/target_REF.gc @@ -436,13 +436,13 @@ ;; failed to figure out what this is: (defstate target-slide-down-to-ground (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('slide) #f ) (else - (target-standard-event-handler arg0 arg1 arg2 arg3) + (target-standard-event-handler proc arg1 event-type event) ) ) ) @@ -2109,23 +2109,23 @@ ;; failed to figure out what this is: (defstate target-attack (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touched) (cond (((method-of-type touching-shapes-entry touching-shapes-entry-method-12) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (-> self control) (the-as uint 1920) ) (let ((t9-1 target-send-attack) (a1-2 (-> self control unknown-symbol04)) - (a2-2 (-> arg3 param 0)) + (a2-2 (-> event param 0)) (a3-1 (-> self control unknown-symbol05)) (t0-0 (-> self control unknown-dword05)) ) (-> self control penetrate-using) - (when (t9-1 arg0 (the-as uint a1-2) a2-2 (the-as int a3-1) (the-as int t0-0)) + (when (t9-1 proc (the-as uint a1-2) a2-2 (the-as int a3-1) (the-as int t0-0)) (set! (-> self gun combo-window-start) (-> self clock frame-counter)) (let ((v0-2 (the-as object (-> self state name)))) (set! (-> self gun combo-window-state) (the-as symbol v0-2)) @@ -2135,12 +2135,12 @@ ) ) (else - (target-dangerous-event-handler arg0 arg1 arg2 arg3) + (target-dangerous-event-handler proc arg1 event-type event) ) ) ) (('gun-combo) - (when (-> arg3 param 0) + (when (-> event param 0) (forward-up-nopitch->quaternion (-> self control dir-targ) (vector-! (new 'stack-no-clear 'vector) (-> self gun track-trans) (-> self control trans)) @@ -2155,7 +2155,7 @@ #f ) (else - (target-dangerous-event-handler arg0 arg1 arg2 arg3) + (target-dangerous-event-handler proc arg1 event-type event) ) ) ) @@ -2397,19 +2397,19 @@ ;; failed to figure out what this is: (defstate target-running-attack (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('touched) (cond (((method-of-type touching-shapes-entry touching-shapes-entry-method-12) - (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as touching-shapes-entry (-> event param 0)) (-> self control) (the-as uint 1920) ) (let ((t9-1 target-send-attack) - (a0-3 arg0) + (a0-3 proc) (a1-2 (-> self control unknown-symbol04)) - (a2-2 (-> arg3 param 0)) + (a2-2 (-> event param 0)) (a3-1 (-> self control unknown-symbol05)) (t0-0 (-> self control unknown-dword05)) ) @@ -2419,8 +2419,8 @@ (set! (-> self control unknown-time-frame17) (-> self clock frame-counter)) (set! (-> self gun combo-window-start) (-> self clock frame-counter)) (set! (-> self gun combo-window-state) (-> self state name)) - (let ((v1-13 (if (type? arg0 process-focusable) - arg0 + (let ((v1-13 (if (type? proc process-focusable) + proc ) ) ) @@ -2459,12 +2459,12 @@ ) ) (else - (target-dangerous-event-handler arg0 arg1 arg2 arg3) + (target-dangerous-event-handler proc arg1 event-type event) ) ) ) (('gun-combo) - (if (-> arg3 param 0) + (if (-> event param 0) (go target-stance) ) #t @@ -2473,7 +2473,7 @@ #f ) (else - (target-dangerous-event-handler arg0 arg1 arg2 arg3) + (target-dangerous-event-handler proc arg1 event-type event) ) ) ) @@ -2943,15 +2943,15 @@ ;; failed to figure out what this is: (defstate target-attack-air (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v0-0 (target-bonk-event-handler arg0 arg1 arg2 arg3))) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v0-0 (target-bonk-event-handler proc arg1 event-type event))) (cond (v0-0 (empty) v0-0 ) (else - (target-dangerous-event-handler arg0 arg1 arg2 arg3) + (target-dangerous-event-handler proc arg1 event-type event) ) ) ) @@ -3266,10 +3266,10 @@ ;; failed to figure out what this is: (defstate target-attack-uppercut-jump (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('gun-combo) - (when (-> arg3 param 0) + (when (-> event param 0) (forward-up-nopitch->quaternion (-> self control dir-targ) (vector-! (new 'stack-no-clear 'vector) (-> self gun track-trans) (-> self control trans)) @@ -3301,7 +3301,7 @@ #t ) (else - (target-dangerous-event-handler arg0 arg1 arg2 arg3) + (target-dangerous-event-handler proc arg1 event-type event) ) ) ) @@ -3459,15 +3459,15 @@ ;; failed to figure out what this is: (defstate target-flop (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v1-0 symbol)) - (let ((v0-0 (target-bonk-event-handler arg0 arg1 arg2 arg3))) + (let ((v0-0 (target-bonk-event-handler proc arg1 event-type event))) (cond (v0-0 (empty) v0-0 ) - ((begin (set! v1-0 arg2) (= v1-0 'slide)) + ((begin (set! v1-0 event-type) (= v1-0 'slide)) #f ) ((= v1-0 'swim) @@ -3483,7 +3483,7 @@ ) ) (else - (target-dangerous-event-handler arg0 arg1 arg2 arg3) + (target-dangerous-event-handler proc arg1 event-type event) ) ) ) @@ -3764,20 +3764,20 @@ ;; failed to figure out what this is: (defstate target-flop-hit-ground (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (cond ((and (-> self next-state) (= (-> self next-state name) 'target-flop-hit-ground)) - (case arg2 + (case event-type (('swim 'slide) #f ) (else - (target-standard-event-handler arg0 arg1 arg2 arg3) + (target-standard-event-handler proc arg1 event-type event) ) ) ) (else - (target-jump-event-handler arg0 arg1 arg2 arg3) + (target-jump-event-handler proc arg1 event-type event) ) ) ) @@ -3867,13 +3867,13 @@ ;; failed to figure out what this is: (defstate target-roll (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (if (= arg2 'touched) - (send-event arg0 'roll) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (if (= event-type 'touched) + (send-event proc 'roll) ) - (case arg2 + (case event-type (('gun-combo) - (when (-> arg3 param 0) + (when (-> event param 0) (forward-up-nopitch->quaternion (-> self control dir-targ) (vector-! (new 'stack-no-clear 'vector) (-> self gun track-trans) (-> self control trans)) @@ -3887,7 +3887,7 @@ #t ) (else - (target-standard-event-handler arg0 arg1 arg2 arg3) + (target-standard-event-handler proc arg1 event-type event) ) ) ) @@ -4044,10 +4044,10 @@ ;; failed to figure out what this is: (defstate target-roll-flip (target) - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type (('gun-combo) - (when (-> arg3 param 0) + (when (-> event param 0) (forward-up-nopitch->quaternion (-> self control dir-targ) (vector-! (new 'stack-no-clear 'vector) (-> self gun track-trans) (-> self control trans)) @@ -4059,7 +4059,7 @@ #t ) (else - (target-jump-event-handler arg0 arg1 arg2 arg3) + (target-jump-event-handler proc arg1 event-type event) ) ) ) diff --git a/test/decompiler/reference/jak2/engine/util/sync-info-h_REF.gc b/test/decompiler/reference/jak2/engine/util/sync-info-h_REF.gc index 0ba2e69027..d9e91b3603 100644 --- a/test/decompiler/reference/jak2/engine/util/sync-info-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/util/sync-info-h_REF.gc @@ -104,6 +104,7 @@ (pause-in float :offset-assert 36) (pause-out float :offset-assert 40) ) + :pack-me :method-count-assert 16 :size-assert #x2c :flag-assert #x100000002c diff --git a/test/decompiler/reference/jak2/levels/common/airlock_REF.gc b/test/decompiler/reference/jak2/levels/common/airlock_REF.gc index 67c83e8c66..8a729322a0 100644 --- a/test/decompiler/reference/jak2/levels/common/airlock_REF.gc +++ b/test/decompiler/reference/jak2/levels/common/airlock_REF.gc @@ -448,31 +448,31 @@ ;; failed to figure out what this is: (defstate close (com-airlock) :virtual #t - :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((v1-0 event-type)) (the-as object (cond ((= v1-0 'close) (set! (-> self latch-closed-time) (+ (-> self clock frame-counter) (if (>= arg1 1) - (the-as int (-> arg3 param 0)) + (the-as int (-> event param 0)) 3000 ) ) ) - (if (and (>= arg1 2) (and (= (-> arg3 param 1) #t) (not (want-cross-airlock? self)))) + (if (and (>= arg1 2) (and (= (-> event param 1) #t) (not (want-cross-airlock? self)))) (ja :group! (get-art-by-name (-> self draw art-group) "idle" art-joint-anim) :num! min) ) (and (-> self next-state) (= (-> self next-state name) 'open)) ) ((= v1-0 'open) (set! (-> self latch-open-time) (+ (-> self clock frame-counter) (if (>= arg1 1) - (the-as int (-> arg3 param 0)) + (the-as int (-> event param 0)) 3000 ) ) ) - (if (and (>= arg1 2) (and (= (-> arg3 param 1) #t) (want-cross-airlock? self) (destination-loaded? self #f))) + (if (and (>= arg1 2) (and (= (-> event param 1) #t) (want-cross-airlock? self) (destination-loaded? self #f))) (ja :group! (get-art-by-name (-> self draw art-group) "idle" art-joint-anim) :num! (identity (the float (+ (-> (get-art-by-name (-> self draw art-group) "idle" art-joint-anim) frames num-frames) -1)) @@ -497,7 +497,7 @@ ) ((= v1-0 'sound) (if (>= (check-crossing-distance self (target-pos 0) #f) 0.0) - (play-city-voice-sound self (the-as symbol (-> arg3 param 0))) + (play-city-voice-sound self (the-as symbol (-> event param 0))) ) ) ((= v1-0 'distance) @@ -951,7 +951,7 @@ (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (let ((v1-13 (-> s5-0 root-prim))) (set! (-> s5-0 backup-collide-as) (-> v1-13 prim-core collide-as)) - (set! (-> s5-0 backup-collde-with) (-> v1-13 prim-core collide-with)) + (set! (-> s5-0 backup-collide-with) (-> v1-13 prim-core collide-with)) ) (set! (-> obj root-override) s5-0) ) @@ -1029,7 +1029,7 @@ (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (let ((v1-13 (-> s5-0 root-prim))) (set! (-> s5-0 backup-collide-as) (-> v1-13 prim-core collide-as)) - (set! (-> s5-0 backup-collde-with) (-> v1-13 prim-core collide-with)) + (set! (-> s5-0 backup-collide-with) (-> v1-13 prim-core collide-with)) ) (set! (-> obj root-override) s5-0) ) @@ -1133,7 +1133,7 @@ (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (let ((v1-13 (-> s5-0 root-prim))) (set! (-> s5-0 backup-collide-as) (-> v1-13 prim-core collide-as)) - (set! (-> s5-0 backup-collde-with) (-> v1-13 prim-core collide-with)) + (set! (-> s5-0 backup-collide-with) (-> v1-13 prim-core collide-with)) ) (set! (-> obj root-override) s5-0) ) @@ -1221,7 +1221,7 @@ (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (let ((v1-13 (-> s5-0 root-prim))) (set! (-> s5-0 backup-collide-as) (-> v1-13 prim-core collide-as)) - (set! (-> s5-0 backup-collde-with) (-> v1-13 prim-core collide-with)) + (set! (-> s5-0 backup-collide-with) (-> v1-13 prim-core collide-with)) ) (set! (-> obj root-override) s5-0) ) @@ -1298,7 +1298,7 @@ (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (let ((v1-5 (-> s5-0 root-prim))) (set! (-> s5-0 backup-collide-as) (-> v1-5 prim-core collide-as)) - (set! (-> s5-0 backup-collde-with) (-> v1-5 prim-core collide-with)) + (set! (-> s5-0 backup-collide-with) (-> v1-5 prim-core collide-with)) ) (set! (-> obj root-override) s5-0) ) @@ -1409,7 +1409,7 @@ (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (let ((v1-13 (-> s5-0 root-prim))) (set! (-> s5-0 backup-collide-as) (-> v1-13 prim-core collide-as)) - (set! (-> s5-0 backup-collde-with) (-> v1-13 prim-core collide-with)) + (set! (-> s5-0 backup-collide-with) (-> v1-13 prim-core collide-with)) ) (set! (-> obj root-override) s5-0) ) @@ -1498,7 +1498,7 @@ (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (let ((v1-13 (-> s5-0 root-prim))) (set! (-> s5-0 backup-collide-as) (-> v1-13 prim-core collide-as)) - (set! (-> s5-0 backup-collde-with) (-> v1-13 prim-core collide-with)) + (set! (-> s5-0 backup-collide-with) (-> v1-13 prim-core collide-with)) ) (set! (-> obj root-override) s5-0) ) @@ -1587,7 +1587,7 @@ (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (let ((v1-13 (-> s5-0 root-prim))) (set! (-> s5-0 backup-collide-as) (-> v1-13 prim-core collide-as)) - (set! (-> s5-0 backup-collde-with) (-> v1-13 prim-core collide-with)) + (set! (-> s5-0 backup-collide-with) (-> v1-13 prim-core collide-with)) ) (set! (-> obj root-override) s5-0) ) @@ -1676,7 +1676,7 @@ (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (let ((v1-13 (-> s5-0 root-prim))) (set! (-> s5-0 backup-collide-as) (-> v1-13 prim-core collide-as)) - (set! (-> s5-0 backup-collde-with) (-> v1-13 prim-core collide-with)) + (set! (-> s5-0 backup-collide-with) (-> v1-13 prim-core collide-with)) ) (set! (-> obj root-override) s5-0) ) diff --git a/test/decompiler/reference/jak2/levels/common/elec-gate_REF.gc b/test/decompiler/reference/jak2/levels/common/elec-gate_REF.gc new file mode 100644 index 0000000000..f030fd69d1 --- /dev/null +++ b/test/decompiler/reference/jak2/levels/common/elec-gate_REF.gc @@ -0,0 +1,1215 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type elec-gate-params +(deftype elec-gate-params (structure) + ((bolt-spec lightning-spec :offset-assert 0) + (ring-spec lightning-spec :offset-assert 4) + (ring-radius-min float :offset-assert 8) + (ring-radius-max float :offset-assert 12) + (speed-mult float :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) + +;; definition for method 3 of type elec-gate-params +(defmethod inspect elec-gate-params ((obj elec-gate-params)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj 'elec-gate-params) + (format #t "~1Tbolt-spec: ~A~%" (-> obj bolt-spec)) + (format #t "~1Tring-spec: ~A~%" (-> obj ring-spec)) + (format #t "~1Tring-radius-min: ~f~%" (-> obj ring-radius-min)) + (format #t "~1Tring-radius-max: ~f~%" (-> obj ring-radius-max)) + (format #t "~1Tspeed-mult: ~f~%" (-> obj speed-mult)) + (label cfg-4) + obj + ) + +;; definition of type elec-gate-bolt +(deftype elec-gate-bolt (structure) + ((ring lightning-control 2 :offset-assert 0) + (bolt lightning-control :offset-assert 8) + (ring-radius float :offset-assert 12) + (pos float :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x14 + :flag-assert #x900000014 + ) + +;; definition for method 3 of type elec-gate-bolt +(defmethod inspect elec-gate-bolt ((obj elec-gate-bolt)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj 'elec-gate-bolt) + (format #t "~1Tring[2] @ #x~X~%" (-> obj ring)) + (format #t "~1Tbolt: ~A~%" (-> obj bolt)) + (format #t "~1Tring-radius: ~f~%" (-> obj ring-radius)) + (format #t "~1Tpos: ~f~%" (-> obj pos)) + (label cfg-4) + obj + ) + +;; definition of type elec-wall +(deftype elec-wall (structure) + ((pos vector :inline :offset-assert 0) + (dir vector :inline :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x20 + :flag-assert #x900000020 + ) + +;; definition for method 3 of type elec-wall +(defmethod inspect elec-wall ((obj elec-wall)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj 'elec-wall) + (format #t "~1Tpos: #~%" (-> obj pos)) + (format #t "~1Tdir: #~%" (-> obj dir)) + (label cfg-4) + obj + ) + +;; definition of type elec-gate +(deftype elec-gate (process-drawable) + ((params elec-gate-params :offset-assert 200) + (path-l path-control :offset 152) + (path-r path-control :offset-assert 204) + (l-bolt elec-gate-bolt 5 :inline :offset-assert 208) + (part-on sparticle-launch-control :offset 168) + (part-off sparticle-launch-control :offset-assert 368) + (part-spawner-left part-spawner :offset-assert 372) + (part-spawner-right part-spawner :offset-assert 376) + (on-start basic :offset-assert 380) + (on-stop basic :offset-assert 384) + (dividing-wall elec-wall :inline :offset-assert 400) + (plane elec-wall 2 :inline :offset-assert 432) + (wall-y float :offset-assert 496) + (wall-xz float :offset-assert 500) + (lightning-quality float :offset-assert 504) + (quality-enabled? symbol :offset-assert 508) + ) + :heap-base #x180 + :method-count-assert 30 + :size-assert #x200 + :flag-assert #x1e01800200 + (:methods + (idle () _type_ :state 20) + (active () _type_ :state 21) + (shutdown () _type_ :state 22) + (get-params (_type_) elec-gate-params 23) + (elec-gate-method-24 (_type_) none 24) + (set-palette! (_type_) none 25) + (set-state! (_type_) none 26) + (spawn-particles (_type_ sparticle-launch-control) none 27) + (set-elec-scale-if-close! (_type_ float) none 28) + (set-elec-scale! (_type_ float) none 29) + ) + ) + +;; definition for method 3 of type elec-gate +(defmethod inspect elec-gate ((obj elec-gate)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~2Tparams: #~%" (-> obj params)) + (format #t "~2Tpath-l: ~A~%" (-> obj path)) + (format #t "~2Tpath-r: ~A~%" (-> obj path-r)) + (format #t "~2Tl-bolt[5] @ #x~X~%" (-> obj l-bolt)) + (format #t "~2Tpart-on: ~A~%" (-> obj part)) + (format #t "~2Tpart-off: ~A~%" (-> obj part-off)) + (format #t "~2Tpart-spawner-left: ~A~%" (-> obj part-spawner-left)) + (format #t "~2Tpart-spawner-right: ~A~%" (-> obj part-spawner-right)) + (format #t "~2Ton-start: ~A~%" (-> obj on-start)) + (format #t "~2Ton-stop: ~A~%" (-> obj on-stop)) + (format #t "~2Tdividing-wall: #~%" (-> obj dividing-wall)) + (format #t "~2Tplane[2] @ #x~X~%" (-> obj plane)) + (format #t "~2Twall-y: ~f~%" (-> obj wall-y)) + (format #t "~2Twall-xz: ~f~%" (-> obj wall-xz)) + (format #t "~2Tlightning-quality: ~f~%" (-> obj lightning-quality)) + (format #t "~2Tquality-enabled?: ~A~%" (-> obj quality-enabled?)) + (label cfg-4) + obj + ) + +;; definition for symbol *default-elec-gate-params*, type elec-gate-params +(define *default-elec-gate-params* (new 'static 'elec-gate-params + :bolt-spec (new 'static 'lightning-spec + :name #f + :flags (lightning-spec-flags lsf2) + :start-color #x80ffffff + :end-color #x80000000 + :fade-to-color #x58f00bf + :fade-start-factor 0.2 + :fade-time 120.0 + :texture #xc08300 + :reduction 0.42 + :num-points 16 + :box-size 8601.6 + :merge-factor 0.5 + :merge-count 2 + :radius 4096.0 + :duration -1.0 + :sound #f + ) + :ring-spec (new 'static 'lightning-spec + :name #f + :flags (lightning-spec-flags lsf2) + :rand-func #x3 + :start-color #x80ffffff + :end-color #x80ffffff + :fade-to-color #x58f00bf + :fade-start-factor 0.2 + :fade-time 120.0 + :texture #xc08300 + :reduction 0.42 + :num-points 12 + :box-size 3072.0 + :merge-factor 0.5 + :radius 2048.0 + :duration -1.0 + :sound #f + ) + :ring-radius-min 1638.4 + :ring-radius-max 2867.2 + :speed-mult 1.0 + ) + ) + +;; definition for function elec-gate-post +;; INFO: Used lq/sq +(defbehavior elec-gate-post elec-gate () + (local-vars (curr-bolt elec-gate-bolt) (curr-point int)) + (let ((num-points (-> self params ring-spec num-points))) + (dotimes (bolt-idx 5) + (set! curr-bolt (-> self l-bolt bolt-idx)) + (let ((s4-0 + (get-point-at-percent-along-path! (-> self path) (new 'stack-no-clear 'vector) (-> curr-bolt pos) 'interp) + ) + (s3-0 + (get-point-at-percent-along-path! (-> self path-r) (new 'stack-no-clear 'vector) (-> curr-bolt pos) 'interp) + ) + ) + (let ((a0-2 (-> curr-bolt bolt)) + (v1-10 s4-0) + ) + (set! (-> a0-2 state meet data 0 quad) (-> v1-10 quad)) + ) + (let ((a0-5 (-> curr-bolt bolt)) + (v1-13 s3-0) + ) + (set! (-> a0-5 state meet data (+ (-> a0-5 state points-to-draw) -1) quad) (-> v1-13 quad)) + ) + (let ((s2-0 (-> curr-bolt ring 0)) + (s1-0 (-> curr-bolt ring 1)) + (s0-0 (new 'stack-no-clear 'vector)) + ) + (set! (-> s0-0 x) 0.0) + (set! (-> s0-0 y) 0.0) + (set! (-> s0-0 z) (-> curr-bolt ring-radius)) + (set! (-> s0-0 w) 0.0) + (let ((f30-0 (* 65536.0 (/ 1.0 (the float (+ num-points -1)))))) + (set! curr-point 0) + (while (< curr-point num-points) + (set-point! s2-0 curr-point (vector+! (new 'stack-no-clear 'vector) s4-0 s0-0)) + (set-point! s1-0 curr-point (vector+! (new 'stack-no-clear 'vector) s3-0 s0-0)) + (vector-rotate-y! s0-0 s0-0 f30-0) + (set! curr-point (+ curr-point 1)) + ) + ) + ) + ) + ) + ) + (debug-draw (-> self path)) + (debug-draw (-> self path-r)) + (none) + ) + +;; failed to figure out what this is: +(defstate idle (elec-gate) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('trigger) + (go-virtual active) + ) + ) + ) + :enter (behavior () + (process-entity-status! self (entity-perm-status subtask-complete) #t) + (dotimes (bolt-idx 5) + (let* ((bolt (-> self l-bolt bolt-idx bolt)) + (mode (lightning-mode lm0)) + (mode-diff? (!= mode (-> bolt state mode))) + ) + (case mode + (((lightning-mode lm3)) + (if mode-diff? + (set! (-> bolt state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> bolt state start-color) (-> bolt spec start-color)) + (set! (-> bolt state end-color) (-> bolt spec end-color)) + ) + ) + (set! (-> bolt state mode) mode) + (let ((first-ring (-> self l-bolt bolt-idx ring 0))) + (set! mode (lightning-mode lm0)) + (set! mode-diff? (!= mode (-> first-ring state mode))) + (case mode + (((lightning-mode lm3)) + (if mode-diff? + (set! (-> first-ring state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> first-ring state start-color) (-> first-ring spec start-color)) + (set! (-> first-ring state end-color) (-> first-ring spec end-color)) + ) + ) + (set! (-> first-ring state mode) mode) + ) + (let ((second-ring (-> self l-bolt bolt-idx ring 1))) + (set! mode (lightning-mode lm0)) + (set! mode-diff? (!= mode (-> second-ring state mode))) + (case mode + (((lightning-mode lm3)) + (if mode-diff? + (set! (-> second-ring state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> second-ring state start-color) (-> second-ring spec start-color)) + (set! (-> second-ring state end-color) (-> second-ring spec end-color)) + ) + ) + (set! (-> second-ring state mode) mode) + ) + ) + ) + (none) + ) + :code (the-as (function none :behavior elec-gate) sleep-code) + :post (behavior () + (set-elec-scale-if-close! self 0.0) + (if (nonzero? (-> self part-off)) + (spawn-particles self (-> self part-off)) + ) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate active (elec-gate) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('shutdown) + (go-virtual shutdown) + ) + ) + ) + :enter (behavior () + (process-entity-status! self (entity-perm-status subtask-complete) #f) + (if (-> self on-start) + (eval! + (new 'stack 'script-context (the-as basic (process->ppointer self)) self (-> self root trans)) + (the-as pair (-> self on-start)) + ) + ) + (dotimes (bolt-idx 5) + (let* ((curr-bolt (-> self l-bolt bolt-idx bolt)) + (mode (lightning-mode lm1)) + (mode-diff? (!= mode (-> curr-bolt state mode))) + ) + (case mode + (((lightning-mode lm3)) + (if mode-diff? + (set! (-> curr-bolt state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> curr-bolt state start-color) (-> curr-bolt spec start-color)) + (set! (-> curr-bolt state end-color) (-> curr-bolt spec end-color)) + ) + ) + (set! (-> curr-bolt state mode) mode) + (let ((first-ring (-> self l-bolt bolt-idx ring 0))) + (set! mode (lightning-mode lm1)) + (set! mode-diff? (!= mode (-> first-ring state mode))) + (case mode + (((lightning-mode lm3)) + (if mode-diff? + (set! (-> first-ring state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> first-ring state start-color) (-> first-ring spec start-color)) + (set! (-> first-ring state end-color) (-> first-ring spec end-color)) + ) + ) + (set! (-> first-ring state mode) mode) + ) + (let ((second-ring (-> self l-bolt bolt-idx ring 1))) + (set! mode (lightning-mode lm1)) + (set! mode-diff? (!= mode (-> second-ring state mode))) + (case mode + (((lightning-mode lm3)) + (if mode-diff? + (set! (-> second-ring state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> second-ring state start-color) (-> second-ring spec start-color)) + (set! (-> second-ring state end-color) (-> second-ring spec end-color)) + ) + ) + (set! (-> second-ring state mode) mode) + ) + ) + ) + (let ((vec-pair (new 'stack-no-clear 'inline-array 'vector 2))) + (dotimes (vec-idx 2) + (set! (-> vec-pair vec-idx quad) (the-as uint128 0)) + ) + (let ((s5-0 (new 'stack-no-clear 'vector))) + 0.0 + (get-point-in-path! (-> self path) (-> vec-pair 0) 0.0 'interp) + (get-point-in-path! (-> self path-r) (-> vec-pair 1) 0.0 'interp) + (vector-! s5-0 (-> vec-pair 1) (-> vec-pair 0)) + (vector-normalize! s5-0 8192.0) + (vector+! (-> vec-pair 1) (-> vec-pair 1) s5-0) + (vector-negate! s5-0 s5-0) + (vector+! (-> vec-pair 0) (-> vec-pair 0) s5-0) + (vector-normalize-copy! s5-0 *up-vector* -8192.0) + (vector+! (-> vec-pair 0) (-> vec-pair 0) s5-0) + (vector+! (-> vec-pair 1) (-> vec-pair 1) s5-0) + ) + (let ((f0-6 + (+ (- 81920.0 (-> (get-point-in-path! (-> self path) (new 'stack-no-clear 'vector) 0.0 'interp) y)) + (-> (get-point-in-path! (-> self path) (new 'stack-no-clear 'vector) (get-num-segments (-> self path)) 'interp) + y + ) + ) + ) + ) + (blocking-plane-spawn (the-as curve-control #f) vec-pair f0-6) + ) + ) + (none) + ) + :trans (behavior () + (local-vars + (sv-176 (function lightning-spec time-frame symbol process-drawable vector vector none)) + (sv-192 lightning-spec) + (sv-208 int) + (sv-224 symbol) + (sv-240 symbol) + (sv-256 lightning-spec) + (sv-272 int) + (sv-288 symbol) + (sv-304 symbol) + ) + (let* ((target *target*) + (proc-focus (if (type? target process-focusable) + target + ) + ) + ) + (when proc-focus + (let ((focus-trans (get-trans proc-focus 0))) + (let* ((a0-3 (vector-! (new 'stack-no-clear 'vector) focus-trans (the-as vector (-> self dividing-wall)))) + (s4-0 (-> self plane (if (< 0.0 (vector-dot a0-3 (-> self dividing-wall dir))) + 0 + 1 + ) + ) + ) + (s3-1 (vector-! (new 'stack-no-clear 'vector) focus-trans (-> s4-0 pos))) + ) + (when (and (< (vector-dot (vector-normalize-copy! (new 'stack-no-clear 'vector) s3-1 1.0) (-> s4-0 dir)) 0.0) + (let ((v1-13 s3-1)) + (< (sqrtf (+ (* (-> v1-13 x) (-> v1-13 x)) (* (-> v1-13 z) (-> v1-13 z)))) (-> self wall-xz)) + ) + (< (fabs (-> s3-1 y)) (-> self wall-y)) + ) + (let ((evt (new 'stack-no-clear 'event-message-block))) + (set! (-> evt from) (process->ppointer self)) + (set! (-> evt num-params) 2) + (set! (-> evt message) 'attack) + (set! (-> evt param 0) (the-as uint #f)) + (let ((attack (new 'static 'attack-info :mask (attack-info-mask vector shove-back shove-up control id)))) + (let* ((game-info *game-info*) + (attack-id (+ (-> game-info attack-id) 1)) + ) + (set! (-> game-info attack-id) attack-id) + (set! (-> attack id) attack-id) + ) + (set! (-> attack vector quad) (-> s4-0 dir quad)) + (set! (-> attack shove-back) 24576.0) + (set! (-> attack shove-up) 12288.0) + (set! (-> attack control) (if (logtest? (focus-status board) (-> proc-focus focus-status)) + 1.0 + 0.0 + ) + ) + (set! (-> evt param 1) (the-as uint attack)) + ) + (send-event-function proc-focus evt) + ) + (let* ((s4-1 (-> self l-bolt)) + (s3-2 (get-point-at-percent-along-path! (-> self path) (new 'stack-no-clear 'vector) (-> s4-1 0 pos) 'interp)) + (s4-2 + (get-point-at-percent-along-path! (-> self path-r) (new 'stack-no-clear 'vector) (-> s4-1 0 pos) 'interp) + ) + ) + (let ((s2-0 (get-process *default-dead-pool* lightning-tracker #x4000))) + (when s2-0 + (let ((t9-7 (method-of-type lightning-tracker activate))) + (t9-7 + (the-as lightning-tracker s2-0) + *entity-pool* + (symbol->string (-> lightning-tracker symbol)) + (the-as pointer #x70004000) + ) + ) + (let ((s1-0 run-function-in-process) + (s0-0 s2-0) + ) + (set! sv-176 lightning-tracker-init) + (set! sv-192 (-> self params bolt-spec)) + (set! sv-208 15) + (set! sv-224 (the-as symbol #f)) + (set! sv-240 (the-as symbol #f)) + (let ((t3-0 (get-trans proc-focus 3))) + ((the-as (function object object object object object object object object none) s1-0) + s0-0 + sv-176 + sv-192 + sv-208 + sv-224 + sv-240 + s3-2 + t3-0 + ) + ) + ) + (-> s2-0 ppointer) + ) + ) + (let ((s3-3 (get-process *default-dead-pool* lightning-tracker #x4000))) + (when s3-3 + (let ((t9-11 (method-of-type lightning-tracker activate))) + (t9-11 + (the-as lightning-tracker s3-3) + *entity-pool* + (symbol->string (-> lightning-tracker symbol)) + (the-as pointer #x70004000) + ) + ) + (let ((s2-1 run-function-in-process) + (s1-1 s3-3) + (s0-1 lightning-tracker-init) + ) + (set! sv-256 (-> self params bolt-spec)) + (set! sv-272 15) + (set! sv-288 (the-as symbol #f)) + (set! sv-304 (the-as symbol #f)) + (let ((t3-1 (get-trans proc-focus 3))) + ((the-as (function object object object object object object object object none) s2-1) + s1-1 + s0-1 + sv-256 + sv-272 + sv-288 + sv-304 + s4-2 + t3-1 + ) + ) + ) + (-> s3-3 ppointer) + ) + ) + ) + ) + ) + (set! (-> self lightning-quality) + (lerp-scale 0.0 1.0 (vector-vector-distance focus-trans (-> self root trans)) 491520.0 163840.0) + ) + ) + ) + ) + (let ((gp-2 (+ (the int (* 5.0 (-> self lightning-quality))) 1))) + (dotimes (bolt-idx 5) + (let ((s3-5 (-> self l-bolt bolt-idx)) + (s2-2 (-> self params)) + (s4-4 (if (and (-> self quality-enabled?) (zero? (mod bolt-idx gp-2))) + (lightning-mode lm0) + (lightning-mode lm-1) + ) + ) + ) + (seek! (-> s3-5 pos) 1.5 (* (-> s2-2 speed-mult) (+ 0.2 (-> s3-5 pos)) (-> self clock seconds-per-frame))) + (cond + ((>= (-> s3-5 pos) 1.5) + (let ((v1-59 (-> self l-bolt bolt-idx bolt)) + (a0-31 (logand s4-4 (lightning-mode lm1))) + ) + (let ((a1-19 (!= a0-31 (-> v1-59 state mode)))) + (case a0-31 + (((lightning-mode lm3)) + (if a1-19 + (set! (-> v1-59 state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> v1-59 state start-color) (-> v1-59 spec start-color)) + (set! (-> v1-59 state end-color) (-> v1-59 spec end-color)) + ) + ) + ) + (set! (-> v1-59 state mode) a0-31) + ) + (let ((v1-62 (-> self l-bolt bolt-idx ring 0)) + (a0-32 (logand s4-4 (lightning-mode lm1))) + ) + (let ((a1-29 (!= a0-32 (-> v1-62 state mode)))) + (case a0-32 + (((lightning-mode lm3)) + (if a1-29 + (set! (-> v1-62 state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> v1-62 state start-color) (-> v1-62 spec start-color)) + (set! (-> v1-62 state end-color) (-> v1-62 spec end-color)) + ) + ) + ) + (set! (-> v1-62 state mode) a0-32) + ) + (let ((v1-65 (-> self l-bolt bolt-idx ring 1)) + (a0-33 (logand s4-4 (lightning-mode lm1))) + ) + (let ((a1-39 (!= a0-33 (-> v1-65 state mode)))) + (case a0-33 + (((lightning-mode lm3)) + (if a1-39 + (set! (-> v1-65 state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> v1-65 state start-color) (-> v1-65 spec start-color)) + (set! (-> v1-65 state end-color) (-> v1-65 spec end-color)) + ) + ) + ) + (set! (-> v1-65 state mode) a0-33) + ) + (set! (-> s3-5 ring-radius) (rand-vu-float-range (-> s2-2 ring-radius-min) (-> s2-2 ring-radius-max))) + (set! (-> s3-5 pos) 0.0) + ) + ((>= (-> s3-5 pos) 1.0) + (let ((v1-69 (-> self l-bolt bolt-idx bolt)) + (a0-37 (logand (lightning-mode lm0) s4-4)) + ) + (let ((a1-50 (!= a0-37 (-> v1-69 state mode)))) + (case a0-37 + (((lightning-mode lm3)) + (if a1-50 + (set! (-> v1-69 state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> v1-69 state start-color) (-> v1-69 spec start-color)) + (set! (-> v1-69 state end-color) (-> v1-69 spec end-color)) + ) + ) + ) + (set! (-> v1-69 state mode) a0-37) + ) + (let ((v1-72 (-> self l-bolt bolt-idx ring 0)) + (a0-38 (logand (lightning-mode lm0) s4-4)) + ) + (let ((a1-60 (!= a0-38 (-> v1-72 state mode)))) + (case a0-38 + (((lightning-mode lm3)) + (if a1-60 + (set! (-> v1-72 state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> v1-72 state start-color) (-> v1-72 spec start-color)) + (set! (-> v1-72 state end-color) (-> v1-72 spec end-color)) + ) + ) + ) + (set! (-> v1-72 state mode) a0-38) + ) + (let ((v1-75 (-> self l-bolt bolt-idx ring 1)) + (a0-39 (logand (lightning-mode lm0) s4-4)) + ) + (let ((a1-70 (!= a0-39 (-> v1-75 state mode)))) + (case a0-39 + (((lightning-mode lm3)) + (if a1-70 + (set! (-> v1-75 state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> v1-75 state start-color) (-> v1-75 spec start-color)) + (set! (-> v1-75 state end-color) (-> v1-75 spec end-color)) + ) + ) + ) + (set! (-> v1-75 state mode) a0-39) + ) + ) + ) + ) + ) + ) + (none) + ) + :code (the-as (function none :behavior elec-gate) sleep-code) + :post (behavior () + (set-elec-scale-if-close! self 1.0) + (if (nonzero? (-> self part)) + (spawn-particles self (-> self part)) + ) + (update! (-> self sound)) + (elec-gate-post) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate shutdown (elec-gate) + :virtual #t + :enter (behavior () + (process-entity-status! self (entity-perm-status subtask-complete) #t) + (stop! (-> self sound)) + (sound-play "elec-gate-off") + (blocking-plane-destroy) + (if (-> self on-stop) + (eval! + (new 'stack 'script-context (the-as basic (process->ppointer self)) self (-> self root trans)) + (the-as pair (-> self on-stop)) + ) + ) + (none) + ) + :trans (behavior () + (let ((go-idle? #t)) + (dotimes (bolt-idx 5) + (let ((left-bolt-0 (-> self l-bolt bolt-idx))) + (seek! (-> left-bolt-0 pos) 0.0 (* (- 1.14 (-> left-bolt-0 pos)) (-> self clock seconds-per-frame))) + (set! go-idle? + (cond + ((or (< 1.0 (-> left-bolt-0 pos)) (>= 0.0 (-> left-bolt-0 pos))) + (let* ((left-bolt-1 (-> self l-bolt bolt-idx bolt)) + (mode (lightning-mode lm3)) + (mode-diff? (!= mode (-> left-bolt-1 state mode))) + ) + (case mode + (((lightning-mode lm3)) + (if mode-diff? + (set! (-> left-bolt-1 state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> left-bolt-1 state start-color) (-> left-bolt-1 spec start-color)) + (set! (-> left-bolt-1 state end-color) (-> left-bolt-1 spec end-color)) + ) + ) + (set! (-> left-bolt-1 state mode) mode) + (let ((left-bolt-first-ring (-> self l-bolt bolt-idx ring 0))) + (set! mode (lightning-mode lm3)) + (set! mode-diff? (!= mode (-> left-bolt-first-ring state mode))) + (case mode + (((lightning-mode lm3)) + (if mode-diff? + (set! (-> left-bolt-first-ring state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> left-bolt-first-ring state start-color) (-> left-bolt-first-ring spec start-color)) + (set! (-> left-bolt-first-ring state end-color) (-> left-bolt-first-ring spec end-color)) + ) + ) + (set! (-> left-bolt-first-ring state mode) mode) + ) + (let ((left-bolt-second-ring (-> self l-bolt bolt-idx ring 1))) + (set! mode (lightning-mode lm3)) + (set! mode-diff? (!= mode (-> left-bolt-second-ring state mode))) + (case mode + (((lightning-mode lm3)) + (if mode-diff? + (set! (-> left-bolt-second-ring state counter) 0.0) + ) + ) + (((lightning-mode lm1)) + (set! (-> left-bolt-second-ring state start-color) (-> left-bolt-second-ring spec start-color)) + (set! (-> left-bolt-second-ring state end-color) (-> left-bolt-second-ring spec end-color)) + ) + ) + (set! (-> left-bolt-second-ring state mode) mode) + ) + ) + go-idle? + ) + (else + #f + ) + ) + ) + ) + ) + (if go-idle? + (go-virtual idle) + ) + ) + (none) + ) + :code (the-as (function none :behavior elec-gate) sleep-code) + :post (behavior () + (set-elec-scale-if-close! self 0.0) + (if (nonzero? (-> self part-off)) + (spawn-particles self (-> self part-off)) + ) + (elec-gate-post) + (none) + ) + ) + +;; definition for method 28 of type elec-gate +;; WARN: Return type mismatch int vs none. +(defmethod set-elec-scale-if-close! elec-gate ((obj elec-gate) (arg0 float)) + "If [[target]]'s position is within `80` [[meters]], set the scale to the value provided + @see [[elec-gate::29]]" + (if (< (vector-vector-distance (-> obj root trans) (target-pos 0)) 327680.0) + (set-elec-scale! obj arg0) + ) + 0 + (none) + ) + +;; definition for method 27 of type elec-gate +;; WARN: Return type mismatch int vs none. +(defmethod spawn-particles elec-gate ((obj elec-gate) (sparticle-lc sparticle-launch-control)) + "TODO - Calls [[sparticle-launch-control::11]] on `part-spawner-left` and `part-spawner-right` if they are defined" + (if (-> obj part-spawner-left) + (sparticle-launch-control-method-11 sparticle-lc (the-as vector (&-> (-> obj part-spawner-left child) 8))) + ) + (if (-> obj part-spawner-right) + (sparticle-launch-control-method-11 sparticle-lc (the-as vector (&-> (-> obj part-spawner-right child) 8))) + ) + 0 + (none) + ) + +;; definition for method 7 of type elec-gate +;; WARN: Return type mismatch process-drawable vs elec-gate. +(defmethod relocate elec-gate ((obj elec-gate) (new-addr int)) + (dotimes (bolt-idx 5) + (let ((left-bolt (-> obj l-bolt bolt-idx))) + (if (nonzero? (-> left-bolt bolt)) + (&+! (-> left-bolt bolt) new-addr) + ) + (if (nonzero? (-> left-bolt ring 0)) + (&+! (-> left-bolt ring 0) new-addr) + ) + (if (nonzero? (-> left-bolt ring 1)) + (&+! (-> left-bolt ring 1) new-addr) + ) + ) + ) + (if (nonzero? (-> obj path-r)) + (&+! (-> obj path-r) new-addr) + ) + (when (nonzero? (-> obj part-off)) + (if (nonzero? (-> obj part-off)) + (&+! (-> obj part-off) new-addr) + ) + ) + (the-as elec-gate ((method-of-type process-drawable relocate) obj new-addr)) + ) + +;; definition for method 10 of type elec-gate +(defmethod deactivate elec-gate ((obj elec-gate)) + (set-elec-scale-if-close! obj 0.0) + ((the-as (function process-drawable none) (find-parent-method elec-gate 10)) obj) + (none) + ) + +;; definition for method 23 of type elec-gate +(defmethod get-params elec-gate ((obj elec-gate)) + "@returns [[*default-elec-gate-params*]] by default" + *default-elec-gate-params* + ) + +;; definition for method 24 of type elec-gate +;; WARN: Return type mismatch int vs none. +(defmethod elec-gate-method-24 elec-gate ((obj elec-gate)) + "virtual" + 0 + (none) + ) + +;; definition for method 25 of type elec-gate +;; WARN: Return type mismatch int vs none. +(defmethod set-palette! elec-gate ((obj elec-gate)) + "Sets the [[elec-gate]]'s `palette-id` appropriately" + 0 + (none) + ) + +;; definition for method 26 of type elec-gate +;; WARN: Return type mismatch int vs none. +(defmethod set-state! elec-gate ((obj elec-gate)) + "If either [[actor-option::17]] is set on the [[elec-gate]] or the related subtask is completed + make the gate `idle`. + + Otherwise, the gate will be `active`." + (if (or (logtest? (actor-option user17) (-> obj fact options)) + (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status subtask-complete))) + ) + (go (method-of-object obj idle)) + (go (method-of-object obj active)) + ) + 0 + (none) + ) + +;; definition for method 11 of type elec-gate +;; INFO: Used lq/sq +(defmethod init-from-entity! elec-gate ((obj elec-gate) (arg0 entity-actor)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (set! (-> obj entity) arg0) + (set! (-> obj fact) + (new 'process 'fact-info obj (pickup-type eco-pill-random) (-> *FACT-bank* default-eco-pill-green-inc)) + ) + (set! (-> obj params) (get-params obj)) + (logclear! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj path) (new 'process 'path-control obj 'pathl 0.0 (the-as entity #f) #f)) + (logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text)) + (set! (-> obj path-r) (new 'process 'path-control obj 'pathr 0.0 (the-as entity #f) #f)) + (logior! (-> obj path-r flags) (path-control-flag display draw-line draw-point draw-text)) + (set! (-> obj part-spawner-left) (the-as part-spawner (entity-actor-lookup arg0 'alt-actor 0))) + (set! (-> obj part-spawner-right) (the-as part-spawner (entity-actor-lookup arg0 'alt-actor 1))) + (let ((params (-> obj params))) + (dotimes (bolt-idx 5) + (let ((left-bolt (-> obj l-bolt bolt-idx))) + (set! (-> left-bolt bolt) (new 'process 'lightning-control (-> params bolt-spec) obj 0.0)) + (set! (-> left-bolt ring 0) (new 'process 'lightning-control (-> params ring-spec) obj 0.0)) + (set! (-> left-bolt ring 1) (new 'process 'lightning-control (-> params ring-spec) obj 0.0)) + (set! (-> left-bolt ring-radius) + (rand-vu-float-range (-> params ring-radius-min) (-> params ring-radius-max)) + ) + (set! (-> left-bolt pos) (* 0.2 (the float bolt-idx))) + ) + ) + ) + (let* ((s4-1 (get-point-in-path! (-> obj path) (new 'stack-no-clear 'vector) 0.0 'interp)) + (v1-26 (get-point-in-path! (-> obj path-r) (new 'stack-no-clear 'vector) 0.0 'interp)) + (a1-15 (vector-! (new 'stack-no-clear 'vector) v1-26 s4-1)) + (s5-3 (vector+float*! (new 'stack-no-clear 'vector) s4-1 a1-15 0.5)) + (v1-28 (vector-normalize-copy! (new 'stack-no-clear 'vector) a1-15 1.0)) + ) + (vector-cross! v1-28 v1-28 *up-vector*) + (set! (-> obj dividing-wall pos quad) (-> s5-3 quad)) + (set! (-> obj dividing-wall dir quad) (-> v1-28 quad)) + (vector+float*! (the-as vector (-> obj plane)) s5-3 v1-28 12288.0) + (set! (-> (the-as vector (&-> obj stack 320)) quad) (-> v1-28 quad)) + (vector-float*! v1-28 v1-28 -1.0) + (vector+float*! (the-as vector (&-> obj stack 336)) s5-3 v1-28 12288.0) + (set! (-> (the-as vector (&-> obj stack 352)) quad) (-> v1-28 quad)) + ) + (set! (-> obj wall-xz) + (vector-vector-distance + (get-point-in-path! (-> obj path) (new 'stack-no-clear 'vector) 0.0 'interp) + (get-point-in-path! (-> obj path-r) (new 'stack-no-clear 'vector) 0.0 'interp) + ) + ) + (set! (-> obj wall-xz) (* 0.5 (-> obj wall-xz))) + (set! (-> obj wall-xz) (+ 4096.0 (-> obj wall-xz))) + (set! (-> obj wall-y) + (fabs + (- (-> (get-point-in-path! (-> obj path) (new 'stack-no-clear 'vector) (get-num-segments (-> obj path)) 'interp) + y + ) + (-> (get-point-in-path! (-> obj path) (new 'stack-no-clear 'vector) 0.0 'interp) y) + ) + ) + ) + (set! (-> obj wall-y) (+ 4096.0 (-> obj wall-y))) + (set! (-> obj quality-enabled?) #t) + (set! (-> obj lightning-quality) 1.0) + (set! (-> obj sound) + (new 'process 'ambient-sound (static-sound-spec "electric-gate" :fo-max 70) (-> obj root trans)) + ) + (set! (-> obj on-start) (res-lump-struct (-> obj entity) 'on-start basic)) + (set! (-> obj on-stop) (res-lump-struct (-> obj entity) 'on-stop basic)) + (elec-gate-method-24 obj) + (set-palette! obj) + (set-state! obj) + (none) + ) + +;; definition of type fort-elec-gate +(deftype fort-elec-gate (elec-gate) + ((palette-id int32 :offset-assert 512) + ) + :heap-base #x190 + :method-count-assert 30 + :size-assert #x204 + :flag-assert #x1e01900204 + ) + +;; definition for method 3 of type fort-elec-gate +(defmethod inspect fort-elec-gate ((obj fort-elec-gate)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type elec-gate inspect))) + (t9-0 obj) + ) + (format #t "~2Tpalette-id: ~D~%" (-> obj palette-id)) + (label cfg-4) + obj + ) + +;; definition for method 29 of type fort-elec-gate +;; WARN: Return type mismatch int vs none. +(defmethod set-elec-scale! fort-elec-gate ((obj fort-elec-gate) (scale float)) + "Calls associated mood functions to set the scale with the value provided + @see mood-funcs + @see mood-funcs2" + (set-fordumpa-electricity-scale! scale) + (set-forresca-electricity-scale! scale (-> obj palette-id)) + (set-forrescb-electricity-scale! scale (-> obj palette-id)) + 0 + (none) + ) + +;; definition for method 25 of type fort-elec-gate +;; WARN: Return type mismatch int vs none. +(defmethod set-palette! fort-elec-gate ((obj fort-elec-gate)) + "Sets the [[elec-gate]]'s `palette-id` appropriately" + (set! (-> obj palette-id) (res-lump-value (-> obj entity) 'extra-id int :time -1000000000.0)) + 0 + (none) + ) + +;; definition of type drill-elec-gate +(deftype drill-elec-gate (elec-gate) + ((palette-id int32 :offset-assert 512) + ) + :heap-base #x190 + :method-count-assert 30 + :size-assert #x204 + :flag-assert #x1e01900204 + ) + +;; definition for method 3 of type drill-elec-gate +(defmethod inspect drill-elec-gate ((obj drill-elec-gate)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type elec-gate inspect))) + (t9-0 obj) + ) + (format #t "~2Tpalette-id: ~D~%" (-> obj palette-id)) + (label cfg-4) + obj + ) + +;; definition for method 29 of type drill-elec-gate +;; WARN: Return type mismatch int vs none. +(defmethod set-elec-scale! drill-elec-gate ((obj drill-elec-gate) (arg0 float)) + "Calls associated mood functions to set the scale with the value provided + @see mood-funcs + @see mood-funcs2" + (set-drill-electricity-scale! arg0 (-> obj palette-id)) + 0 + (none) + ) + +;; definition for method 25 of type drill-elec-gate +;; WARN: Return type mismatch int vs none. +(defmethod set-palette! drill-elec-gate ((obj drill-elec-gate)) + "Sets the [[elec-gate]]'s `palette-id` appropriately" + (set! (-> obj palette-id) (res-lump-value (-> obj entity) 'extra-id int :time -1000000000.0)) + 0 + (none) + ) + +;; definition of type caspad-elec-gate +(deftype caspad-elec-gate (elec-gate) + () + :heap-base #x180 + :method-count-assert 30 + :size-assert #x200 + :flag-assert #x1e01800200 + ) + +;; definition for method 3 of type caspad-elec-gate +(defmethod inspect caspad-elec-gate ((obj caspad-elec-gate)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type elec-gate inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +;; definition of type castle-elec-gate +(deftype castle-elec-gate (elec-gate) + () + :heap-base #x180 + :method-count-assert 30 + :size-assert #x200 + :flag-assert #x1e01800200 + ) + +;; definition for method 3 of type castle-elec-gate +(defmethod inspect castle-elec-gate ((obj castle-elec-gate)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type elec-gate inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +;; definition for method 29 of type castle-elec-gate +;; WARN: Return type mismatch int vs none. +(defmethod set-elec-scale! castle-elec-gate ((obj castle-elec-gate) (arg0 float)) + "Calls associated mood functions to set the scale with the value provided + @see mood-funcs + @see mood-funcs2" + (set-castle-electricity-scale! arg0) + 0 + (none) + ) + +;; definition for symbol *caspad-elec-gate-params*, type elec-gate-params +(define *caspad-elec-gate-params* (new 'static 'elec-gate-params + :bolt-spec (new 'static 'lightning-spec + :name #f + :flags (lightning-spec-flags lsf2) + :start-color #x80ffffff + :end-color #x80000000 + :fade-to-color #x58f00bf + :fade-start-factor 0.2 + :fade-time 120.0 + :texture #xc08300 + :reduction 0.42 + :num-points 16 + :box-size 16793.6 + :merge-factor 0.5 + :merge-count 2 + :radius 18841.6 + :duration -1.0 + :sound #f + ) + :ring-spec (new 'static 'lightning-spec + :name #f + :flags (lightning-spec-flags lsf2) + :rand-func #x3 + :start-color #x80ffffff + :end-color #x80ffffff + :fade-to-color #x58f00bf + :fade-start-factor 0.2 + :fade-time 120.0 + :texture #xc08300 + :reduction 0.42 + :num-points 12 + :box-size 17408.0 + :merge-factor 0.5 + :merge-count 2 + :radius 17612.8 + :duration -1.0 + :sound #f + ) + :ring-radius-min 40960.0 + :ring-radius-max 53248.0 + :speed-mult 0.3 + ) + ) + +;; definition for method 23 of type caspad-elec-gate +(defmethod get-params caspad-elec-gate ((obj caspad-elec-gate)) + "@returns [[*default-elec-gate-params*]] by default" + *caspad-elec-gate-params* + ) + +;; definition of type palroof-elec-gate +(deftype palroof-elec-gate (elec-gate) + ((palette-id int32 :offset-assert 512) + ) + :heap-base #x190 + :method-count-assert 30 + :size-assert #x204 + :flag-assert #x1e01900204 + ) + +;; definition for method 3 of type palroof-elec-gate +(defmethod inspect palroof-elec-gate ((obj palroof-elec-gate)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type elec-gate inspect))) + (t9-0 obj) + ) + (format #t "~2Tpalette-id: ~D~%" (-> obj palette-id)) + (label cfg-4) + obj + ) + +;; definition for method 29 of type palroof-elec-gate +;; WARN: Return type mismatch int vs none. +(defmethod set-elec-scale! palroof-elec-gate ((obj palroof-elec-gate) (arg0 float)) + "Calls associated mood functions to set the scale with the value provided + @see mood-funcs + @see mood-funcs2" + (set-palroof-electricity-scale! arg0 (-> obj palette-id)) + 0 + (none) + ) + +;; definition for method 25 of type palroof-elec-gate +;; WARN: Return type mismatch int vs none. +(defmethod set-palette! palroof-elec-gate ((obj palroof-elec-gate)) + "Sets the [[elec-gate]]'s `palette-id` appropriately" + (set! (-> obj palette-id) (res-lump-value (-> obj entity) 'extra-id int :time -1000000000.0)) + 0 + (none) + ) diff --git a/test/decompiler/reference/jak2/levels/common/enemy/bouncer_REF.gc b/test/decompiler/reference/jak2/levels/common/enemy/bouncer_REF.gc new file mode 100644 index 0000000000..8621433393 --- /dev/null +++ b/test/decompiler/reference/jak2/levels/common/enemy/bouncer_REF.gc @@ -0,0 +1,277 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type bouncer +(deftype bouncer (process-drawable) + ((spring-height meters :offset-assert 200) + (smush float :offset-assert 204) + (mods basic :offset-assert 208) + ) + :heap-base #x60 + :method-count-assert 25 + :size-assert #xd4 + :flag-assert #x19006000d4 + (:methods + (idle () _type_ :state 20) + (fire () _type_ :state 21) + (smush () _type_ :state 22) + (init-skeleton! (_type_) none 23) + (bouncer-method-24 (_type_) none 24) + ) + ) + +;; definition for method 3 of type bouncer +(defmethod inspect bouncer ((obj bouncer)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~2Tspring-height: (meters ~m)~%" (-> obj spring-height)) + (format #t "~2Tsmush: ~f~%" (-> obj smush)) + (format #t "~2Tmods: ~A~%" (-> obj mods)) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(method-set! bouncer 12 (method-of-type process run-logic?)) + +;; failed to figure out what this is: +(let ((a0-3 (new 'static 'skeleton-group + :name "skel-bouncer" + :extra #f + :info #f + :art-group-name "bounceytarp" + :bounds (new 'static 'vector :w 16384.0) + :version #x7 + ) + ) + ) + (set! (-> a0-3 jgeo) 0) + (set! (-> a0-3 janim) 2) + (set! (-> a0-3 mgeo 0) 1) + (set! (-> a0-3 lod-dist 0) 4095996000.0) + (add-to-loading-level a0-3) + ) + +;; failed to figure out what this is: +(defstate idle (bouncer) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (let ((evt-type event-type)) + (the-as + object + (cond + ((= evt-type 'bonk) + (when ((method-of-type touching-shapes-entry touching-shapes-entry-method-12) + (the-as touching-shapes-entry (-> event param 0)) + (the-as collide-shape (-> self root)) + (the-as uint 1) + ) + (when (send-event proc 'jump (-> self spring-height) (-> self spring-height) (-> self mods)) + (sound-play "trampoline") + (go-virtual fire) + ) + ) + ) + ((= evt-type 'touch) + (let ((gp-2 (-> event param 0))) + (cond + (((method-of-type touching-shapes-entry touching-shapes-entry-method-13) + (the-as touching-shapes-entry gp-2) + (the-as collide-shape (-> self root)) + (the-as uint 1) + (the-as uint 0) + ) + (when ((method-of-type touching-shapes-entry touching-shapes-entry-method-12) + (the-as touching-shapes-entry gp-2) + (the-as collide-shape (-> self root)) + (the-as uint 1) + ) + (if (not (and (-> self next-state) (let ((v1-21 (-> self next-state name))) + (or (= v1-21 'smush) (= v1-21 'fire)) + ) + ) + ) + (go-virtual smush) + ) + ) + ) + (((method-of-type touching-shapes-entry touching-shapes-entry-method-12) + (the-as touching-shapes-entry gp-2) + (the-as collide-shape (-> self root)) + (the-as uint 4) + ) + (persist-with-delay + *setting-control* + (the-as symbol (process->ppointer self)) + (seconds 0.05) + 'double-jump + #f + 0.0 + 0 + ) + ) + ) + ) + ) + ((= evt-type 'attack) + (let ((v1-28 (the-as object (-> event param 1))) + (a0-17 (-> event param 0)) + (a2-7 0) + ) + (cond + ((= (-> (the-as attack-info v1-28) mode) 'flop) + (set! a2-7 1) + ) + ((= (-> (the-as attack-info v1-28) mode) 'board) + (set! a2-7 9) + ) + ) + (when (and (nonzero? a2-7) + (and ((method-of-type touching-shapes-entry touching-shapes-entry-method-12) + (the-as touching-shapes-entry a0-17) + (the-as collide-shape (-> self root)) + (the-as uint a2-7) + ) + (send-event proc 'jump (-> self spring-height) (-> self spring-height) (-> self mods)) + ) + ) + (sound-play "trampoline") + (go-virtual fire) + #f + ) + ) + ) + ) + ) + ) + ) + :code (behavior () + (ja :group! (get-art-by-name (-> self draw art-group) "idle" art-joint-anim) :num! min) + (transform-post) + (until #f + (logior! (-> self mask) (process-mask sleep)) + (suspend) + ) + #f + (none) + ) + ) + +;; failed to figure out what this is: +(defstate smush (bouncer) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('touch) + (set! (-> self state-time) (-> self clock frame-counter)) + #f + ) + (else + ((-> (method-of-object self idle) event) proc arg1 event-type event) + ) + ) + ) + :code (behavior () + (set! (-> self state-time) (-> self clock frame-counter)) + (set! (-> self smush) 0.0) + (until #f + (if (>= (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.2)) + (ja :num! (seek! 0.0 0.1)) + (ja :num! (seek! + (lerp-scale + (ja-aframe 6.0 0) + (ja-aframe 2.0 0) + (vector-vector-xz-distance (target-pos 0) (-> self root trans)) + 0.0 + 4096.0 + ) + 0.2 + ) + ) + ) + (suspend) + (if (ja-min? 0) + (go-virtual idle) + ) + ) + #f + (none) + ) + :post (the-as (function none :behavior bouncer) transform-post) + ) + +;; failed to figure out what this is: +(defstate fire (bouncer) + :virtual #t + :code (behavior () + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 178 (seconds 0.1)) + (ja-no-eval :group! (get-art-by-name (-> self draw art-group) "idle" art-joint-anim) + :num! (seek! + (the float (+ (-> (get-art-by-name (-> self draw art-group) "idle" art-joint-anim) frames num-frames) -1)) + ) + :frame-num (ja-aframe 6.0 0) + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + (go-virtual idle) + (none) + ) + :post (the-as (function none :behavior bouncer) transform-post) + ) + +;; definition for method 23 of type bouncer +;; WARN: Return type mismatch int vs none. +(defmethod init-skeleton! bouncer ((obj bouncer)) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-bouncer" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + 0 + (none) + ) + +;; definition for method 24 of type bouncer +;; WARN: Return type mismatch int vs none. +(defmethod bouncer-method-24 bouncer ((obj bouncer)) + "TODO - collision stuff" + (let ((collision-shape (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((collision-mesh (new 'process 'collide-shape-prim-mesh collision-shape (the-as uint 0) (the-as uint 0)))) + (set! (-> collision-mesh prim-core collide-as) (collide-spec crate)) + (set! (-> collision-mesh prim-core collide-with) (collide-spec jak player-list)) + (set! (-> collision-mesh prim-core action) (collide-action solid)) + (set! (-> collision-mesh transform-index) 0) + (set-vector! (-> collision-mesh local-sphere) 0.0 3072.0 0.0 6963.2) + (set! (-> collision-shape total-prims) (the-as uint 1)) + (set! (-> collision-shape root-prim) collision-mesh) + ) + (set! (-> collision-shape nav-radius) (* 0.75 (-> collision-shape root-prim local-sphere w))) + (let ((prim (-> collision-shape root-prim))) + (set! (-> collision-shape backup-collide-as) (-> prim prim-core collide-as)) + (set! (-> collision-shape backup-collide-with) (-> prim prim-core collide-with)) + ) + (set! (-> obj root) collision-shape) + ) + 0 + (none) + ) + +;; definition for method 11 of type bouncer +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! bouncer ((obj bouncer) (arg0 entity-actor)) + (set! (-> obj mods) #f) + (bouncer-method-24 obj) + (process-drawable-from-entity! obj arg0) + (init-skeleton! obj) + (nav-mesh-connect-from-ent (the-as entity-nav-mesh obj)) + (set! (-> obj spring-height) (res-lump-float arg0 'spring-height :default 45056.0)) + (go (method-of-object obj idle)) + (none) + ) diff --git a/test/offline/config/jak2/config.jsonc b/test/offline/config/jak2/config.jsonc index 0a6246cfea..c7d3a562f4 100644 --- a/test/offline/config/jak2/config.jsonc +++ b/test/offline/config/jak2/config.jsonc @@ -77,6 +77,8 @@ "joint-mod-look-at-handler", // bad stack-no-clear decomp "ja-play-spooled-anim", + // sampler - asm function, has to be manually re-written + "timer0-handler", // default menu // - weird array accessing pattern, we never fixed it in jak 1